Gravity PDF - Version 6.4.0-RC1

Version Description

  • Security (Hardening): Move from early escaping to late escaping variables on output (where appropriate)
  • Security (Hardening): Add additional validation checks to the Core Font installer
  • Security (Hardening): Escape text returned from WordPress l10n functions
  • Security (Hardening): Escape any and all strings from the Gravity Forms form object, in any context (including PDFs)
  • Security (Hardening): The ?html=1 and ?data=1 developer helper parameters now only work in non-production environments, or when Gravity PDF Debug Mode is explicitly enabled
  • Security (Hardening): Prevent directory traversal when loading the various Gravity PDF UI components
  • Developers: Added \GFPDF\Statics\Kses::output( $html ) and \GFPDF\Statics\Kses::parse( $html ) methods for use with sanitizing HTML in PDFs (as an alternative to wp_kses_post()).
  • Performance: Register JavaScript in the footer on Gravity PDF admin pages
  • Bug: Fix issue passing PDF URL to Gravity Forms Mailchimp add-on
Download this release

Release Info

Developer Blue Liquid Designs
Plugin Icon 128x128 Gravity PDF
Version 6.4.0-RC1
Comparing to
See all releases

Code changes from version 6.3.1 to 6.4.0-RC1

Files changed (103) hide show
  1. README.txt +18 -3
  2. api.php +27 -9
  3. dist/assets/js/admin.min.js +1 -1
  4. dist/assets/js/app.bundle.min.js +1 -1
  5. dist/assets/js/gfpdf-entries.min.js +1 -1
  6. pdf.php +7 -7
  7. src/Controller/Controller_Custom_Fonts.php +3 -3
  8. src/Controller/Controller_Form_Settings.php +8 -5
  9. src/Controller/Controller_Mergetags.php +1 -0
  10. src/Controller/Controller_PDF.php +3 -2
  11. src/Controller/Controller_Save_Core_Fonts.php +41 -6
  12. src/Controller/Controller_Settings.php +5 -1
  13. src/Controller/Controller_Uninstaller.php +1 -1
  14. src/Helper/Fields/Field_Checkbox.php +3 -2
  15. src/Helper/Fields/Field_Consent.php +3 -2
  16. src/Helper/Fields/Field_Email.php +1 -1
  17. src/Helper/Fields/Field_Fileupload.php +1 -1
  18. src/Helper/Fields/Field_Form.php +13 -2
  19. src/Helper/Fields/Field_Html.php +2 -1
  20. src/Helper/Fields/Field_List.php +11 -4
  21. src/Helper/Fields/Field_Multiselect.php +3 -3
  22. src/Helper/Fields/Field_Post_Content.php +2 -1
  23. src/Helper/Fields/Field_Post_Image.php +5 -5
  24. src/Helper/Fields/Field_Product.php +5 -4
  25. src/Helper/Fields/Field_Products.php +35 -28
  26. src/Helper/Fields/Field_Radio.php +3 -2
  27. src/Helper/Fields/Field_Repeater.php +27 -5
  28. src/Helper/Fields/Field_Section.php +13 -5
  29. src/Helper/Fields/Field_Shipping.php +2 -2
  30. src/Helper/Fields/Field_Signature.php +2 -2
  31. src/Helper/Fields/Field_Slim.php +2 -2
  32. src/Helper/Fields/Field_Slim_Post.php +2 -2
  33. src/Helper/Fields/Field_Textarea.php +2 -1
  34. src/Helper/Fields/Field_Tos.php +2 -1
  35. src/Helper/Fields/Field_V3_List.php +1 -1
  36. src/Helper/Fields/Field_V3_Products.php +7 -2
  37. src/Helper/Fields/Field_V3_Section.php +9 -2
  38. src/Helper/Fields/Field_Website.php +1 -1
  39. src/Helper/Helper_Abstract_Addon.php +4 -4
  40. src/Helper/Helper_Abstract_Fields.php +52 -4
  41. src/Helper/Helper_Abstract_Options.php +538 -253
  42. src/Helper/Helper_Abstract_Pdf_Shortcode.php +7 -2
  43. src/Helper/Helper_Abstract_View.php +14 -13
  44. src/Helper/Helper_Data.php +4 -15
  45. src/Helper/Helper_Field_Container.php +3 -1
  46. src/Helper/Helper_Field_Container_Gf25.php +2 -1
  47. src/Helper/Helper_Logger.php +2 -2
  48. src/Helper/Helper_Misc.php +23 -25
  49. src/Helper/Helper_Notices.php +2 -4
  50. src/Helper/Helper_PDF.php +34 -17
  51. src/Helper/Helper_PDF_List_Table.php +28 -32
  52. src/Helper/Helper_Pdf_Queue.php +2 -2
  53. src/Helper/Helper_Sha256_Url_Signer.php +2 -1
  54. src/Helper/Helper_Templates.php +2 -1
  55. src/Model/Model_Form_Settings.php +28 -15
  56. src/Model/Model_Install.php +2 -2
  57. src/Model/Model_Mergetags.php +18 -1
  58. src/Model/Model_PDF.php +3 -4
  59. src/Model/Model_Settings.php +10 -9
  60. src/Model/Model_Shortcodes.php +1 -1
  61. src/Model/Model_System_Report.php +1 -1
  62. src/Model/Model_Templates.php +7 -6
  63. src/Statics/Kses.php +169 -0
  64. src/View/View_Form_Settings.php +15 -7
  65. src/View/View_GravityForm_Settings_Markup.php +30 -14
  66. src/View/View_PDF.php +58 -59
  67. src/View/View_Settings.php +47 -26
  68. src/View/html/Actions/action_buttons.php +3 -3
  69. src/View/html/FormSettings/add_edit.php +19 -9
  70. src/View/html/FormSettings/list.php +2 -2
  71. src/View/html/GravityForms/fieldset.php +63 -25
  72. src/View/html/GravityForms/settings_field.php +3 -3
  73. src/View/html/PDF/core_template_styles.php +23 -20
  74. src/View/html/PDF/entry_detailed_pdf.php +4 -4
  75. src/View/html/PDF/entry_list_pdf_multiple.php +6 -6
  76. src/View/html/PDF/entry_list_pdf_single.php +4 -2
  77. src/View/html/PDF/entry_no_valid_pdf.php +1 -1
  78. src/View/html/PDF/form_title.php +1 -1
  79. src/View/html/PDF/page_title.php +2 -2
  80. src/View/html/Settings/extensions.php +0 -1
  81. src/View/html/Settings/general.php +15 -4
  82. src/View/html/Settings/help.php +1 -1
  83. src/View/html/Settings/licence.php +14 -4
  84. src/View/html/Settings/tabs.php +6 -6
  85. src/View/html/Settings/tools.php +14 -3
  86. src/View/html/Shortcodes/gravitypdf.php +6 -7
  87. src/View/html/Uninstaller/uninstall_button.php +8 -8
  88. src/assets/languages/gravity-forms-pdf-extended.pot +239 -235
  89. src/autoload.php +4 -4
  90. src/bootstrap.php +7 -7
  91. src/deprecated.php +32 -32
  92. src/templates/blank-slate.php +1 -1
  93. src/templates/focus-gravity.php +13 -13
  94. src/templates/rubix.php +5 -5
  95. src/templates/zadani.php +3 -3
  96. vendor/composer/autoload_classmap.php +1 -0
  97. vendor/composer/autoload_static.php +1 -0
  98. vendor/composer/installed.json +7 -7
  99. vendor/composer/installed.php +9 -9
  100. vendor_prefixed/monolog/src/Monolog/ErrorHandler.php +10 -5
  101. vendor_prefixed/monolog/src/Monolog/Handler/RotatingFileHandler.php +1 -1
  102. vendor_prefixed/monolog/src/Monolog/Logger.php +24 -8
  103. vendor_prefixed/monolog/src/Monolog/Test/TestCase.php +2 -0
README.txt CHANGED
@@ -72,15 +72,19 @@ Keep up to date with Gravity PDF by [subscribing to the newsletter](https://grav
72
 
73
  If you enjoy using the software [we'd love it if you could give us a review!](https://wordpress.org/support/view/plugin-reviews/gravity-forms-pdf-extended)
74
 
75
- _Note: When Gravity Forms isn't installed and you activate Gravity PDF we display a notice that includes an affiliate link to their website._
76
-
77
  == Installation ==
78
 
79
  Gravity PDF can be run on most modern shared web hosting without any issues. It requires **PHP 7.3+** and at least 128MB of WP Memory. You'll also need to be running WordPress 5.3+ and have [Gravity Forms 2.5+](https://rocketgenius.pxf.io/c/1211356/445235/7938) (affiliate link).
80
 
81
  [You'll find detailed installation instructions at docs.gravitypdf.com](https://docs.gravitypdf.com/v6/users/five-minute-install).
82
 
83
- _If you aren't able to meet the v6 minimum requirements [you can download v5 which we still support](https://wordpress.org/plugins/gravity-forms-pdf-extended/advanced/#download-previous-link)._
 
 
 
 
 
 
84
 
85
  == Screenshots ==
86
 
@@ -103,6 +107,17 @@ _If you aren't able to meet the v6 minimum requirements [you can download v5 whi
103
 
104
  == Changelog ==
105
 
 
 
 
 
 
 
 
 
 
 
 
106
  = 6.3.1 =
107
  * Security: Prevent potential XSS attack by escaping URL returned from add_query_args() on the PDF List or PDF Form Settings pages
108
  * Developer: Apply `gfpdf_current_form_object` filter added in 6.3.0 to the form object in Helper_Abstract_Fields.php using the $type `helper_abstract_fields`.
72
 
73
  If you enjoy using the software [we'd love it if you could give us a review!](https://wordpress.org/support/view/plugin-reviews/gravity-forms-pdf-extended)
74
 
 
 
75
  == Installation ==
76
 
77
  Gravity PDF can be run on most modern shared web hosting without any issues. It requires **PHP 7.3+** and at least 128MB of WP Memory. You'll also need to be running WordPress 5.3+ and have [Gravity Forms 2.5+](https://rocketgenius.pxf.io/c/1211356/445235/7938) (affiliate link).
78
 
79
  [You'll find detailed installation instructions at docs.gravitypdf.com](https://docs.gravitypdf.com/v6/users/five-minute-install).
80
 
81
+ If you aren't able to meet the v6 minimum requirements [you can download v5 which we still provide support for](https://wordpress.org/plugins/gravity-forms-pdf-extended/advanced/#download-previous-link).
82
+
83
+ **Disclaimers**
84
+
85
+ * When you activate Gravity PDF on your website and Gravity Forms isn't installed a notice will be displayed in the admin area that includes an affiliate link to the Gravity Forms website.
86
+ * After activating the plugin you will be prompted to [run the Core Font Installation tool](https://docs.gravitypdf.com/v6/users/core-pdf-fonts) so Gravity PDF can function correctly. This tool will download the fonts [from a public _GitHub_ repository (maintained by Gravity PDF)](https://github.com/gravityPDF/mpdf-core-fonts). For further information about _GitHub_ you can refer to their [Terms of Service](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) and/or [Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement#the-short-version).
87
+ * [A Help page is provided in the plugin's settings](https://docs.gravitypdf.com/v6/users/global-settings#help-tab) with an instant search feature [of the Gravity PDF documentation](https://docs.gravitypdf.com/v6/users/five-minute-install/), and the search is powered by _Algolia_. For further information about _Algolia_ you can refer to their [Terms of Service](https://www.algolia.com/policies/terms/) and/or [Privacy Statement](https://www.algolia.com/policies/privacy/).
88
 
89
  == Screenshots ==
90
 
107
 
108
  == Changelog ==
109
 
110
+ = 6.4.0-RC1 =
111
+ * Security (Hardening): Move from early escaping to late escaping variables on output (where appropriate)
112
+ * Security (Hardening): Add additional validation checks to the Core Font installer
113
+ * Security (Hardening): Escape text returned from WordPress l10n functions
114
+ * Security (Hardening): Escape any and all strings from the Gravity Forms form object, in any context (including PDFs)
115
+ * Security (Hardening): The ?html=1 and ?data=1 developer helper parameters now only work in non-production environments, or when Gravity PDF Debug Mode is explicitly enabled
116
+ * Security (Hardening): Prevent directory traversal when loading the various Gravity PDF UI components
117
+ * Developers: Added \GFPDF\Statics\Kses::output( $html ) and \GFPDF\Statics\Kses::parse( $html ) methods for use with sanitizing HTML in PDFs (as an alternative to wp_kses_post()).
118
+ * Performance: Register JavaScript in the footer on Gravity PDF admin pages
119
+ * Bug: Fix issue passing PDF URL to Gravity Forms Mailchimp add-on
120
+
121
  = 6.3.1 =
122
  * Security: Prevent potential XSS attack by escaping URL returned from add_query_args() on the PDF List or PDF Form Settings pages
123
  * Developer: Apply `gfpdf_current_form_object` filter added in 6.3.0 to the form object in Helper_Abstract_Fields.php using the $type `helper_abstract_fields`.
api.php CHANGED
@@ -510,12 +510,18 @@ final class GPDFAPI {
510
  if ( ! $products->is_empty() ) {
511
 
512
  if ( $return ) {
513
- return $products->html();
 
 
 
514
  }
515
 
516
- echo $products->html();
 
517
  }
518
 
 
 
519
  return null;
520
  }
521
 
@@ -546,18 +552,22 @@ final class GPDFAPI {
546
  /* Find our field ID, if any */
547
  foreach ( $form['fields'] as $field ) {
548
 
549
- /* phpcs:disable */
550
- if ( $field->id == $field_id && $field->inputType == 'likert' ) {
551
- /* phpcs:enable */
552
 
553
  /* Output our likert */
554
  $likert = new GFPDF\Helper\Fields\Field_Likert( $field, $entry, $gfpdf->gform, $gfpdf->misc );
555
 
556
  if ( $return ) {
557
- return $likert->html();
 
 
 
558
  }
559
 
560
- echo $likert->html();
 
 
 
561
  break;
562
  }
563
  }
@@ -607,7 +617,12 @@ final class GPDFAPI {
607
  public static function add_pdf_font( $font ) {
608
 
609
  $installed_fonts = static::get_pdf_fonts();
610
- if ( array_search( $font['font_name'] ?? '', $installed_fonts[ esc_html__( 'User-Defined Fonts', 'gravity-forms-pdf-extended' ) ] ?? [], true ) !== false ) {
 
 
 
 
 
611
  return true;
612
  }
613
 
@@ -623,6 +638,7 @@ final class GPDFAPI {
623
 
624
  foreach ( $controller->get_font_keys() as $id ) {
625
  if ( isset( $font[ $id ] ) && is_file( $font[ $id ] ) ) {
 
626
  $_FILES[ $id ] = [
627
  'file' => file_get_contents( $font[ $id ] ),
628
  'name' => basename( $font[ $id ] ),
@@ -684,7 +700,9 @@ final class GPDFAPI {
684
  * @since 4.4
685
  */
686
  public static function get_form_data( $entry_id ) {
687
- $gform = self::get_form_class();
 
 
688
  $pdf_model = self::get_mvc_class( 'Model_PDF' );
689
  $entry = $gform->get_entry( $entry_id );
690
 
510
  if ( ! $products->is_empty() ) {
511
 
512
  if ( $return ) {
513
+ $html = $products->html();
514
+ unset( $products );
515
+
516
+ return $html;
517
  }
518
 
519
+ $products->enable_output();
520
+ $products->html();
521
  }
522
 
523
+ unset( $products );
524
+
525
  return null;
526
  }
527
 
552
  /* Find our field ID, if any */
553
  foreach ( $form['fields'] as $field ) {
554
 
555
+ if ( (int) $field->id === (int) $field_id && $field->inputType === 'likert' ) {
 
 
556
 
557
  /* Output our likert */
558
  $likert = new GFPDF\Helper\Fields\Field_Likert( $field, $entry, $gfpdf->gform, $gfpdf->misc );
559
 
560
  if ( $return ) {
561
+ $html = $likert->html();
562
+ unset( $likert );
563
+
564
+ return $html;
565
  }
566
 
567
+ $likert->enable_output();
568
+ $likert->html();
569
+ unset( $likert );
570
+
571
  break;
572
  }
573
  }
617
  public static function add_pdf_font( $font ) {
618
 
619
  $installed_fonts = static::get_pdf_fonts();
620
+
621
+ $font_name = $font['font_name'] ?? '';
622
+ $user_defined_font_list = $installed_fonts[ esc_html__( 'User-Defined Fonts', 'gravity-forms-pdf-extended' ) ] ?? [];
623
+
624
+ /* Font with same name already exists */
625
+ if ( in_array( $font_name, $user_defined_font_list, true ) ) {
626
  return true;
627
  }
628
 
638
 
639
  foreach ( $controller->get_font_keys() as $id ) {
640
  if ( isset( $font[ $id ] ) && is_file( $font[ $id ] ) ) {
641
+ /* phpcs:disable WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents */
642
  $_FILES[ $id ] = [
643
  'file' => file_get_contents( $font[ $id ] ),
644
  'name' => basename( $font[ $id ] ),
700
  * @since 4.4
701
  */
702
  public static function get_form_data( $entry_id ) {
703
+ $gform = self::get_form_class();
704
+
705
+ /** @var \GFPDF\Model\Model_PDF $pdf_model */
706
  $pdf_model = self::get_mvc_class( 'Model_PDF' );
707
  $entry = $gform->get_entry( $entry_id );
708
 
dist/assets/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){var n={};function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var i in t)e.d(r,i,function(n){return t[n]}.bind(null,i));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="/home/runner/work/gravity-pdf/gravity-pdf/tmp/package/6.3.1/dist/",e(e.s=211)}([,,function(t,n){t.exports=jQuery},,function(t,n,e){(function(n){var e=function(t){return t&&t.Math==Math&&t};t.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof n&&n)||Function("return this")()}).call(this,e(84))},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,e){var r=e(4),i=e(61),o=e(9),a=e(63),c=e(64),f=e(101),s=i("wks"),u=r.Symbol,l=f?u:u&&u.withoutSetter||a;t.exports=function(t){return o(s,t)||(c&&o(u,t)?s[t]=u[t]:s[t]=l("Symbol."+t)),s[t]}},function(t,n,e){var r=e(4),i=e(45).f,o=e(14),a=e(26),c=e(50),f=e(102),s=e(85);t.exports=function(t,n){var e,u,l,p,d,g=t.target,v=t.global,h=t.stat;if(e=v?r:h?r[g]||c(g,{}):(r[g]||{}).prototype)for(u in n){if(p=n[u],l=t.noTargetGet?(d=i(e,u))&&d.value:e[u],!s(v?u:g+(h?".":"#")+u,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;f(p,l)}(t.sham||l&&l.sham)&&o(p,"sham",!0),a(e,u,p,t)}}},function(t,n,e){var r=e(11);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n,e){var r=e(5);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,e){var r=e(10),i=e(76),o=e(8),a=e(51),c=Object.defineProperty;n.f=r?c:function(t,n,e){if(o(t),n=a(n,!0),o(e),i)try{return c(t,n,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported");return"value"in e&&(t[n]=e.value),t}},,function(t,n,e){var r=e(10),i=e(12),o=e(34);t.exports=r?function(t,n,e){return i.f(t,n,o(1,e))}:function(t,n,e){return t[n]=e,t}},,,,,function(t,n,e){"use strict";var r=e(7),i=e(48).find,o=e(86),a=e(33),c=!0,f=a("find");"find"in[]&&Array(1).find((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!f},{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o("find")},function(t,n,e){var r=e(59),i=e(22);t.exports=function(t){return r(i(t))}},function(t,n,e){var r=e(35),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,e){var r=e(22);t.exports=function(t){return Object(r(t))}},function(t,n){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},function(t,n,e){"use strict";var r=e(117).charAt,i=e(47),o=e(132),a=i.set,c=i.getterFor("String Iterator");o(String,"String",(function(t){a(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,n=c(this),e=n.string,i=n.index;return i>=e.length?{value:void 0,done:!0}:(t=r(e,i),n.index+=t.length,{value:t,done:!1})}))},function(t,n,e){var r=e(4),i=e(14),o=e(9),a=e(50),c=e(65),f=e(47),s=f.get,u=f.enforce,l=String(String).split("String");(t.exports=function(t,n,e,c){var f=!!c&&!!c.unsafe,s=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof e&&("string"!=typeof n||o(e,"name")||i(e,"name",n),u(e).source=l.join("string"==typeof n?n:"")),t!==r?(f?!p&&t[n]&&(s=!0):delete t[n],s?t[n]=e:i(t,n,e)):s?t[n]=e:a(n,e)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||c(this)}))},function(t,n,e){var r=e(104),i=e(4),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?o(r[t])||o(i[t]):r[t]&&r[t][n]||i[t]&&i[t][n]}},,function(t,n,e){"use strict";var r=e(26),i=e(8),o=e(5),a=e(97),c=RegExp.prototype,f=c.toString,s=o((function(){return"/a/b"!=f.call({source:"a",flags:"b"})})),u="toString"!=f.name;(s||u)&&r(RegExp.prototype,"toString",(function(){var t=i(this),n=String(t.source),e=t.flags;return"/"+n+"/"+String(void 0===e&&t instanceof RegExp&&!("flags"in c)?a.call(t):e)}),{unsafe:!0})},,,,function(t,n,e){var r=e(10),i=e(5),o=e(9),a=Object.defineProperty,c={},f=function(t){throw t};t.exports=function(t,n){if(o(c,t))return c[t];n||(n={});var e=[][t],s=!!o(n,"ACCESSORS")&&n.ACCESSORS,u=o(n,0)?n[0]:f,l=o(n,1)?n[1]:void 0;return c[t]=!!e&&!i((function(){if(s&&!r)return!0;var t={length:-1};s?a(t,1,{enumerable:!0,get:f}):t[1]=1,e.call(t,u,l)}))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n){var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},,,,,,function(t,n,e){"use strict";var r=e(7),i=e(73);r({target:"RegExp",proto:!0,forced:/./.exec!==i},{exec:i})},function(t,n,e){"use strict";var r=e(7),i=e(48).map,o=e(90),a=e(33),c=o("map"),f=a("map");r({target:"Array",proto:!0,forced:!c||!f},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,n){t.exports={}},function(t,n,e){var r=e(10),i=e(77),o=e(34),a=e(20),c=e(51),f=e(9),s=e(76),u=Object.getOwnPropertyDescriptor;n.f=r?u:function(t,n){if(t=a(t),n=c(n,!0),s)try{return u(t,n)}catch(t){}if(f(t,n))return o(!i.f.call(t,n),t[n])}},,function(t,n,e){var r,i,o,a=e(114),c=e(4),f=e(11),s=e(14),u=e(9),l=e(52),p=e(44),d=c.WeakMap;if(a){var g=new d,v=g.get,h=g.has,m=g.set;r=function(t,n){return m.call(g,t,n),n},i=function(t){return v.call(g,t)||{}},o=function(t){return h.call(g,t)}}else{var y=l("state");p[y]=!0,r=function(t,n){return s(t,y,n),n},i=function(t){return u(t,y)?t[y]:{}},o=function(t){return u(t,y)}}t.exports={set:r,get:i,has:o,enforce:function(t){return o(t)?i(t):r(t,{})},getterFor:function(t){return function(n){var e;if(!f(n)||(e=i(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return e}}}},function(t,n,e){var r=e(66),i=e(59),o=e(23),a=e(21),c=e(107),f=[].push,s=function(t){var n=1==t,e=2==t,s=3==t,u=4==t,l=6==t,p=5==t||l;return function(d,g,v,h){for(var m,y,_=o(d),x=i(_),b=r(g,v,3),w=a(x.length),S=0,E=h||c,O=n?E(d,w):e?E(d,0):void 0;w>S;S++)if((p||S in x)&&(y=b(m=x[S],S,_),t))if(n)O[S]=y;else if(y)switch(t){case 3:return!0;case 5:return m;case 6:return S;case 2:f.call(O,m)}else if(u)return!1;return l?-1:s||u?u:O}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(t,n){t.exports=!1},function(t,n,e){var r=e(4),i=e(14);t.exports=function(t,n){try{i(r,t,n)}catch(e){r[t]=n}return n}},function(t,n,e){var r=e(11);t.exports=function(t,n){if(!r(t))return t;var e,i;if(n&&"function"==typeof(e=t.toString)&&!r(i=e.call(t)))return i;if("function"==typeof(e=t.valueOf)&&!r(i=e.call(t)))return i;if(!n&&"function"==typeof(e=t.toString)&&!r(i=e.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,n,e){var r=e(61),i=e(63),o=r("keys");t.exports=function(t){return o[t]||(o[t]=i(t))}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},,function(t,n,e){var r=e(7),i=e(144);r({target:"Array",stat:!0,forced:!e(130)((function(t){Array.from(t)}))},{from:i})},function(t,n){t.exports={}},,function(t,n,e){"use strict";var r=e(7),i=e(48).filter,o=e(90),a=e(33),c=o("filter"),f=a("filter");r({target:"Array",proto:!0,forced:!c||!f},{filter:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,n,e){var r=e(5),i=e(24),o="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?o.call(t,""):Object(t)}:Object},,function(t,n,e){var r=e(49),i=e(75);(t.exports=function(t,n){return i[t]||(i[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,n,e){var r=e(4),i=e(11),o=r.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},function(t,n){var e=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++e+r).toString(36)}},function(t,n,e){var r=e(5);t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(t,n,e){var r=e(75),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return i.call(t)}),t.exports=r.inspectSource},function(t,n,e){var r=e(43);t.exports=function(t,n,e){if(r(t),void 0===n)return t;switch(e){case 0:return function(){return t.call(n)};case 1:return function(e){return t.call(n,e)};case 2:return function(e,r){return t.call(n,e,r)};case 3:return function(e,r,i){return t.call(n,e,r,i)}}return function(){return t.apply(n,arguments)}}},function(t,n,e){var r=e(78),i=e(53);t.exports=Object.keys||function(t){return r(t,i)}},function(t,n,e){var r,i=e(8),o=e(118),a=e(53),c=e(44),f=e(106),s=e(62),u=e(52),l=u("IE_PROTO"),p=function(){},d=function(t){return"<script>"+t+"<\/script>"},g=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,n;g=r?function(t){t.write(d("")),t.close();var n=t.parentWindow.Object;return t=null,n}(r):((n=s("iframe")).style.display="none",f.appendChild(n),n.src=String("javascript:"),(t=n.contentWindow.document).open(),t.write(d("document.F=Object")),t.close(),t.F);for(var e=a.length;e--;)delete g.prototype[a[e]];return g()};c[l]=!0,t.exports=Object.create||function(t,n){var e;return null!==t?(p.prototype=i(t),e=new p,p.prototype=null,e[l]=t):e=g(),void 0===n?e:o(e,n)}},,,function(t,n,e){var r=e(10),i=e(12).f,o=Function.prototype,a=o.toString,c=/^\s*function ([^ (]*)/;r&&!("name"in o)&&i(o,"name",{configurable:!0,get:function(){try{return a.call(this).match(c)[1]}catch(t){return""}}})},function(t,n,e){var r=e(78),i=e(53).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,n,e){"use strict";var r,i,o=e(97),a=e(124),c=RegExp.prototype.exec,f=String.prototype.replace,s=c,u=(r=/a/,i=/b*/g,c.call(r,"a"),c.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),l=a.UNSUPPORTED_Y||a.BROKEN_CARET,p=void 0!==/()??/.exec("")[1];(u||p||l)&&(s=function(t){var n,e,r,i,a=this,s=l&&a.sticky,d=o.call(a),g=a.source,v=0,h=t;return s&&(-1===(d=d.replace("y","")).indexOf("g")&&(d+="g"),h=String(t).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==t[a.lastIndex-1])&&(g="(?: "+g+")",h=" "+h,v++),e=new RegExp("^(?:"+g+")",d)),p&&(e=new RegExp("^"+g+"$(?!\\s)",d)),u&&(n=a.lastIndex),r=c.call(s?e:a,h),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:u&&r&&(a.lastIndex=a.global?r.index+r[0].length:n),p&&r&&r.length>1&&f.call(r[0],e,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)})),r}),t.exports=s},function(t,n,e){var r=e(24);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,n,e){var r=e(4),i=e(50),o=r["__core-js_shared__"]||i("__core-js_shared__",{});t.exports=o},function(t,n,e){var r=e(10),i=e(5),o=e(62);t.exports=!r&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},function(t,n,e){"use strict";var r={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,o=i&&!r.call({1:2},1);n.f=o?function(t){var n=i(this,t);return!!n&&n.enumerable}:r},function(t,n,e){var r=e(9),i=e(20),o=e(96).indexOf,a=e(44);t.exports=function(t,n){var e,c=i(t),f=0,s=[];for(e in c)!r(a,e)&&r(c,e)&&s.push(e);for(;n.length>f;)r(c,e=n[f++])&&(~o(s,e)||s.push(e));return s}},,,,,,function(t,n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},function(t,n,e){var r=e(5),i=/#|\.prototype\./,o=function(t,n){var e=c[a(t)];return e==s||e!=f&&("function"==typeof n?r(n):!!n)},a=o.normalize=function(t){return String(t).replace(i,".").toLowerCase()},c=o.data={},f=o.NATIVE="N",s=o.POLYFILL="P";t.exports=o},function(t,n,e){var r=e(6),i=e(68),o=e(12),a=r("unscopables"),c=Array.prototype;null==c[a]&&o.f(c,a,{configurable:!0,value:i(null)}),t.exports=function(t){c[a][t]=!0}},,function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,e){var r=e(12).f,i=e(9),o=e(6)("toStringTag");t.exports=function(t,n,e){t&&!i(t=e?t:t.prototype,o)&&r(t,o,{configurable:!0,value:n})}},function(t,n,e){var r=e(5),i=e(6),o=e(115),a=i("species");t.exports=function(t){return o>=51||!r((function(){var n=[];return(n.constructor={})[a]=function(){return{foo:1}},1!==n[t](Boolean).foo}))}},,,function(t,n,e){"use strict";var r=e(98),i=e(8),o=e(23),a=e(21),c=e(35),f=e(22),s=e(112),u=e(99),l=Math.max,p=Math.min,d=Math.floor,g=/\$([$&'`]|\d\d?|<[^>]*>)/g,v=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(t,n,e,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,y=h?"$":"$0";return[function(e,r){var i=f(this),o=null==e?void 0:e[t];return void 0!==o?o.call(e,i,r):n.call(String(i),e,r)},function(t,r){if(!h&&m||"string"==typeof r&&-1===r.indexOf(y)){var o=e(n,t,this,r);if(o.done)return o.value}var f=i(t),d=String(this),g="function"==typeof r;g||(r=String(r));var v=f.global;if(v){var x=f.unicode;f.lastIndex=0}for(var b=[];;){var w=u(f,d);if(null===w)break;if(b.push(w),!v)break;""===String(w[0])&&(f.lastIndex=s(d,a(f.lastIndex),x))}for(var S,E="",O=0,A=0;A<b.length;A++){w=b[A];for(var j=String(w[0]),P=l(p(c(w.index),d.length),0),k=[],C=1;C<w.length;C++)k.push(void 0===(S=w[C])?S:String(S));var T=w.groups;if(g){var R=[j].concat(k,P,d);void 0!==T&&R.push(T);var I=String(r.apply(void 0,R))}else I=_(j,d,P,k,T,r);P>=O&&(E+=d.slice(O,P)+I,O=P+j.length)}return E+d.slice(O)}];function _(t,e,r,i,a,c){var f=r+t.length,s=i.length,u=v;return void 0!==a&&(a=o(a),u=g),n.call(c,u,(function(n,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(f);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return n;if(u>s){var l=d(u/10);return 0===l?n:l<=s?void 0===i[l-1]?o.charAt(1):i[l-1]+o.charAt(1):n}c=i[u-1]}return void 0===c?"":c}))}}))},,,function(t,n,e){var r=e(20),i=e(21),o=e(105),a=function(t){return function(n,e,a){var c,f=r(n),s=i(f.length),u=o(a,s);if(t&&e!=e){for(;s>u;)if((c=f[u++])!=c)return!0}else for(;s>u;u++)if((t||u in f)&&f[u]===e)return t||u||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,n,e){"use strict";var r=e(8);t.exports=function(){var t=r(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.dotAll&&(n+="s"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},function(t,n,e){"use strict";e(41);var r=e(26),i=e(5),o=e(6),a=e(73),c=e(14),f=o("species"),s=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),u="$0"==="a".replace(/./,"$0"),l=o("replace"),p=!!/./[l]&&""===/./[l]("a","$0"),d=!i((function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var e="ab".split(t);return 2!==e.length||"a"!==e[0]||"b"!==e[1]}));t.exports=function(t,n,e,l){var g=o(t),v=!i((function(){var n={};return n[g]=function(){return 7},7!=""[t](n)})),h=v&&!i((function(){var n=!1,e=/a/;return"split"===t&&((e={}).constructor={},e.constructor[f]=function(){return e},e.flags="",e[g]=/./[g]),e.exec=function(){return n=!0,null},e[g](""),!n}));if(!v||!h||"replace"===t&&(!s||!u||p)||"split"===t&&!d){var m=/./[g],y=e(g,""[t],(function(t,n,e,r,i){return n.exec===a?v&&!i?{done:!0,value:m.call(n,e,r)}:{done:!0,value:t.call(e,n,r)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),_=y[0],x=y[1];r(String.prototype,t,_),r(RegExp.prototype,g,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)})}l&&c(RegExp.prototype[g],"sham",!0)}},function(t,n,e){var r=e(24),i=e(73);t.exports=function(t,n){var e=t.exec;if("function"==typeof e){var o=e.call(t,n);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(t,n)}},,function(t,n,e){var r=e(64);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,n,e){var r=e(9),i=e(103),o=e(45),a=e(12);t.exports=function(t,n){for(var e=i(n),c=a.f,f=o.f,s=0;s<e.length;s++){var u=e[s];r(t,u)||c(t,u,f(n,u))}}},function(t,n,e){var r=e(27),i=e(72),o=e(88),a=e(8);t.exports=r("Reflect","ownKeys")||function(t){var n=i.f(a(t)),e=o.f;return e?n.concat(e(t)):n}},function(t,n,e){var r=e(4);t.exports=r},function(t,n,e){var r=e(35),i=Math.max,o=Math.min;t.exports=function(t,n){var e=r(t);return e<0?i(e+n,0):o(e,n)}},function(t,n,e){var r=e(27);t.exports=r("document","documentElement")},function(t,n,e){var r=e(11),i=e(74),o=e(6)("species");t.exports=function(t,n){var e;return i(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!i(e.prototype)?r(e)&&null===(e=e[o])&&(e=void 0):e=void 0),new(void 0===e?Array:e)(0===n?0:n)}},function(t,n,e){"use strict";var r=e(51),i=e(12),o=e(34);t.exports=function(t,n,e){var a=r(n);a in t?i.f(t,a,o(0,e)):t[a]=e}},function(t,n,e){var r=e(9),i=e(23),o=e(52),a=e(133),c=o("IE_PROTO"),f=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=i(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?f:null}},,,function(t,n,e){"use strict";var r=e(117).charAt;t.exports=function(t,n,e){return n+(e?r(t,n).length:1)}},function(t,n,e){var r={};r[e(6)("toStringTag")]="z",t.exports="[object z]"===String(r)},function(t,n,e){var r=e(4),i=e(65),o=r.WeakMap;t.exports="function"==typeof o&&/native code/.test(i(o))},function(t,n,e){var r,i,o=e(4),a=e(131),c=o.process,f=c&&c.versions,s=f&&f.v8;s?i=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(i=r[1]),t.exports=i&&+i},,function(t,n,e){var r=e(35),i=e(22),o=function(t){return function(n,e){var o,a,c=String(i(n)),f=r(e),s=c.length;return f<0||f>=s?t?"":void 0:(o=c.charCodeAt(f))<55296||o>56319||f+1===s||(a=c.charCodeAt(f+1))<56320||a>57343?t?c.charAt(f):o:t?c.slice(f,f+2):a-56320+(o-55296<<10)+65536}};t.exports={codeAt:o(!1),charAt:o(!0)}},function(t,n,e){var r=e(10),i=e(12),o=e(8),a=e(67);t.exports=r?Object.defineProperties:function(t,n){o(t);for(var e,r=a(n),c=r.length,f=0;c>f;)i.f(t,e=r[f++],n[e]);return t}},function(t,n,e){"use strict";var r,i,o,a=e(109),c=e(14),f=e(9),s=e(6),u=e(49),l=s("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0),null==r&&(r={}),u||f(r,l)||c(r,l,(function(){return this})),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},,function(t,n,e){"use strict";e.d(n,"a",(function(){return r})),e.d(n,"b",(function(){return i}));e(55),e(42),e(25);function r(t,n){var e=Array.from(t);e.pop(),e.map((function(t,e){"none"!==t.style.display&&(t.querySelector(".gform-settings-panel__collapsible-toggle-checkbox").addEventListener("click",(function(){i(t,n,e)})),i(t,n,e,"firstLoad"))}))}function i(t,n,e,r){var i="submit-container-"+e;if(!t.classList.contains("gform-settings-panel--collapsed")){var o=n.querySelector("#submit").cloneNode(!0);o.setAttribute("id","submit_"+e);var a=document.createElement("div");return a.setAttribute("class",i),a.innerHTML=o.outerHTML,t.parentNode.insertBefore(a,t.nextSibling)}r||document.querySelector(".".concat(i)).remove()}},,function(t,n,e){var r=e(11),i=e(24),o=e(6)("match");t.exports=function(t){var n;return r(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},function(t,n,e){"use strict";var r=e(5);function i(t,n){return RegExp(t,n)}n.UNSUPPORTED_Y=r((function(){var t=i("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),n.BROKEN_CARET=r((function(){var t=i("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},function(t,n,e){var r=e(8),i=e(146);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,n=!1,e={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),n=e instanceof Array}catch(t){}return function(e,o){return r(e),i(o),n?t.call(e,o):e.__proto__=o,e}}():void 0)},function(t,n,e){var r=e(113),i=e(24),o=e(6)("toStringTag"),a="Arguments"==i(function(){return arguments}());t.exports=r?i:function(t){var n,e,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(e=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),o))?e:a?i(n):"Object"==(r=i(n))&&"function"==typeof n.callee?"Arguments":r}},function(t,n,e){var r=e(6),i=e(56),o=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||a[o]===t)}},function(t,n,e){var r=e(126),i=e(56),o=e(6)("iterator");t.exports=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},function(t,n,e){var r=e(8);t.exports=function(t,n,e,i){try{return i?n(r(e)[0],e[1]):n(e)}catch(n){var o=t.return;throw void 0!==o&&r(o.call(t)),n}}},function(t,n,e){var r=e(6)("iterator"),i=!1;try{var o=0,a={next:function(){return{done:!!o++}},return:function(){i=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,n){if(!n&&!i)return!1;var e=!1;try{var o={};o[r]=function(){return{next:function(){return{done:e=!0}}}},t(o)}catch(t){}return e}},function(t,n,e){var r=e(27);t.exports=r("navigator","userAgent")||""},function(t,n,e){"use strict";var r=e(7),i=e(145),o=e(109),a=e(125),c=e(89),f=e(14),s=e(26),u=e(6),l=e(49),p=e(56),d=e(119),g=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,h=u("iterator"),m=function(){return this};t.exports=function(t,n,e,u,d,y,_){i(e,n,u);var x,b,w,S=function(t){if(t===d&&P)return P;if(!v&&t in A)return A[t];switch(t){case"keys":case"values":case"entries":return function(){return new e(this,t)}}return function(){return new e(this)}},E=n+" Iterator",O=!1,A=t.prototype,j=A[h]||A["@@iterator"]||d&&A[d],P=!v&&j||S(d),k="Array"==n&&A.entries||j;if(k&&(x=o(k.call(new t)),g!==Object.prototype&&x.next&&(l||o(x)===g||(a?a(x,g):"function"!=typeof x[h]&&f(x,h,m)),c(x,E,!0,!0),l&&(p[E]=m))),"values"==d&&j&&"values"!==j.name&&(O=!0,P=function(){return j.call(this)}),l&&!_||A[h]===P||f(A,h,P),p[n]=P,d)if(b={values:S("values"),keys:y?P:S("keys"),entries:S("entries")},_)for(w in b)(v||O||!(w in A))&&s(A,w,b[w]);else r({target:n,proto:!0,forced:v||O},b);return b}},function(t,n,e){var r=e(5);t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},,,,,,,,function(t,n,e){"use strict";var r=e(27),i=e(12),o=e(6),a=e(10),c=o("species");t.exports=function(t){var n=r(t),e=i.f;a&&n&&!n[c]&&e(n,c,{configurable:!0,get:function(){return this}})}},function(t,n,e){var r=e(8),i=e(43),o=e(6)("species");t.exports=function(t,n){var e,a=r(t).constructor;return void 0===a||null==(e=r(a)[o])?n:i(e)}},,function(t,n,e){"use strict";var r=e(66),i=e(23),o=e(129),a=e(127),c=e(21),f=e(108),s=e(128);t.exports=function(t){var n,e,u,l,p,d,g=i(t),v="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,y=void 0!==m,_=s(g),x=0;if(y&&(m=r(m,h>2?arguments[2]:void 0,2)),null==_||v==Array&&a(_))for(e=new v(n=c(g.length));n>x;x++)d=y?m(g[x],x):g[x],f(e,x,d);else for(p=(l=_.call(g)).next,e=new v;!(u=p.call(l)).done;x++)d=y?o(l,m,[u.value,x],!0):u.value,f(e,x,d);return e.length=x,e}},function(t,n,e){"use strict";var r=e(119).IteratorPrototype,i=e(68),o=e(34),a=e(89),c=e(56),f=function(){return this};t.exports=function(t,n,e){var s=n+" Iterator";return t.prototype=i(r,{next:o(1,e)}),a(t,s,!1,!0),c[s]=f,t}},function(t,n,e){var r=e(11);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},,,,,,,,,,,,,,,,,,,function(t,n,e){"use strict";e(7)({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return URL.prototype.toString.call(this)}})},,,,,,function(t,n,e){var r=e(10),i=e(4),o=e(85),a=e(172),c=e(12).f,f=e(72).f,s=e(123),u=e(97),l=e(124),p=e(26),d=e(5),g=e(47).set,v=e(141),h=e(6)("match"),m=i.RegExp,y=m.prototype,_=/a/g,x=/a/g,b=new m(_)!==_,w=l.UNSUPPORTED_Y;if(r&&o("RegExp",!b||w||d((function(){return x[h]=!1,m(_)!=_||m(x)==x||"/a/i"!=m(_,"i")})))){for(var S=function(t,n){var e,r=this instanceof S,i=s(t),o=void 0===n;if(!r&&i&&t.constructor===S&&o)return t;b?i&&!o&&(t=t.source):t instanceof S&&(o&&(n=u.call(t)),t=t.source),w&&(e=!!n&&n.indexOf("y")>-1)&&(n=n.replace(/y/g,""));var c=a(b?new m(t,n):m(t,n),r?this:y,S);return w&&e&&g(c,{sticky:e}),c},E=function(t){t in S||c(S,t,{configurable:!0,get:function(){return m[t]},set:function(n){m[t]=n}})},O=f(m),A=0;O.length>A;)E(O[A++]);y.constructor=S,S.prototype=y,p(i,"RegExp",S)}v("RegExp")},function(t,n,e){var r=e(11),i=e(125);t.exports=function(t,n,e){var o,a;return i&&"function"==typeof(o=n.constructor)&&o!==e&&r(a=o.prototype)&&a!==e.prototype&&i(t,a),t}},function(t,n,e){"use strict";var r=e(98),i=e(123),o=e(8),a=e(22),c=e(142),f=e(112),s=e(21),u=e(99),l=e(73),p=e(5),d=[].push,g=Math.min,v=!p((function(){return!RegExp(4294967295,"y")}));r("split",2,(function(t,n,e){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var r=String(a(this)),o=void 0===e?4294967295:e>>>0;if(0===o)return[];if(void 0===t)return[r];if(!i(t))return n.call(r,t,o);for(var c,f,s,u=[],p=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),g=0,v=new RegExp(t.source,p+"g");(c=l.call(v,r))&&!((f=v.lastIndex)>g&&(u.push(r.slice(g,c.index)),c.length>1&&c.index<r.length&&d.apply(u,c.slice(1)),s=c[0].length,g=f,u.length>=o));)v.lastIndex===c.index&&v.lastIndex++;return g===r.length?!s&&v.test("")||u.push(""):u.push(r.slice(g)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,e){var i=a(this),o=null==n?void 0:n[t];return void 0!==o?o.call(n,i,e):r.call(String(i),n,e)},function(t,i){var a=e(r,t,this,i,r!==n);if(a.done)return a.value;var l=o(t),p=String(this),d=c(l,RegExp),h=l.unicode,m=(l.ignoreCase?"i":"")+(l.multiline?"m":"")+(l.unicode?"u":"")+(v?"y":"g"),y=new d(v?l:"^(?:"+l.source+")",m),_=void 0===i?4294967295:i>>>0;if(0===_)return[];if(0===p.length)return null===u(y,p)?[p]:[];for(var x=0,b=0,w=[];b<p.length;){y.lastIndex=v?b:0;var S,E=u(y,v?p:p.slice(b));if(null===E||(S=g(s(y.lastIndex+(v?0:b)),p.length))===x)b=f(p,b,h);else{if(w.push(p.slice(x,b)),w.length===_)return w;for(var O=1;O<=E.length-1;O++)if(w.push(E[O]),w.length===_)return w;b=x=S}}return w.push(p.slice(x)),w}]}),!v)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,n,e){"use strict";e.r(n);var r=e(2),i=e.n(r);e(165);e(19);function o(t,n){return i.a.ajax({type:"post",dataType:"json",url:GFPDF.ajaxUrl,data:t,success:n,error:n})}function a(t){return i()("<img alt="+GFPDF.spinnerAlt+" src="+GFPDF.spinnerUrl+" class="+t+" />")}function c(t){var n=i()("#gfpdf-settings-field-wrapper-font, #gfpdf-settings-field-wrapper-font_size, #gfpdf-settings-field-wrapper-font_colour");"legacy"===t?n.hide():n.show()}var f=e(121);function s(){i()("#gfpdf_settings\\[template\\]").off("change").on("change",(function(){var t=a("gfpdf-spinner-template");i()(this).next().after(t),o({action:"gfpdf_get_template_fields",nonce:GFPDF.ajaxNonce,template:i()(this).val(),type:i()(this).attr("id"),id:i()("#gform_id").val(),gform_pdf_id:i()("#gform_pdf_id").val()},(function(n){var e,r,o=i()(".submit-container-2")[0];t.remove(),i()('input[name="gfpdf_settings[advanced_template]"][value="No"]').prop("checked",!0).trigger("change"),n.fields?(i.a.each(n.editors,(function(t,n){var e=tinyMCE.get(n);if(null!==e)try{tinyMCE.remove(e)}catch(t){}})),o||Object(f.b)(i()("#gfpdf-fieldset-gfpdf_form_settings_template")[0],i()("#gfpdf_pdf_form")[0],"2"),i()("#gfpdf-fieldset-gfpdf_form_settings_template").show().find(".gform-settings-panel__content").html(n.fields),e=n.editors,null!=(r=n.editor_init)&&(r.body_class="id post-type-post post-status-publish post-format-standard",r.formats={alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table,dl.wp-caption",classes:"alignleft"}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img,table,dl.wp-caption",classes:"aligncenter"}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table,dl.wp-caption",classes:"alignright"}],strikethrough:{inline:"del"}},r.content_style='body#tinymce { max-width: 100%; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;}'),i.a.each(e,(function(t,n){r.selector="#"+n,tinyMCE.init(r),tinyMCE.execCommand("mceAddEditor",!1,n),"function"==typeof QTags&&(QTags({id:n}),QTags._buttonsInit(),"function"==typeof switchEditors.switchto&&switchEditors.switchto(jQuery("#wp-"+n+"-wrap").find(".wp-switch-editor.switch-"+("html"===getUserSetting("editor")?"html":"tmce"))[0]))})),l.runElements(),window.gfMergeTags&&"undefined"!=typeof form&&i()("#gfpdf-fieldset-gfpdf_form_settings_template .merge-tag-support").length>=0&&(i()("#gfpdf-fieldset-gfpdf_form_settings_template .merge-tag-support").each((function(){new gfMergeTagsObj(form,i()(this))})),i()("#gfpdf-fieldset-gfpdf_form_settings_template .gform-settings-field").each((function(){i()(this).find(".merge-tag-support, .merge-tag-support + span").wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag"></div>'),i()(this).find(".all-merge-tags.textarea").parent().wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag gfpdf-merge-tag-container"></div>')}))),gform_initialize_tooltips()):(o&&o.remove(),i()("#gfpdf-fieldset-gfpdf_form_settings_template").hide().find(".gform-settings-panel__content").html("")),n.template_type&&c(n.template_type),i()(document).trigger("gfpdf_template_loaded",[n])}))}))}function u(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var l=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"runElements",value:function(){var t;"undefined"!=typeof gf_vars&&(gf_vars.thisFormButton=GFPDF.conditionalText,gf_vars.show=GFPDF.enable,gf_vars.hide=GFPDF.disable),window.formfield="",i()("body").off("click",".gfpdf_settings_upload_button").on("click",".gfpdf_settings_upload_button",(function(n){n.preventDefault();var e=i()(this);window.formfield=i()(this).prev(),t||(t=wp.media.frames.file_frame=wp.media({title:e.data("uploader-title"),button:{text:e.data("uploader-button-text")},multiple:!1})).on("select",(function(){t.state().get("selection").each((function(t){t=t.toJSON(),window.formfield.val(t.url).trigger("change")}))})),t.open()})),i()(".gfpdf-color-picker").each((function(){i()(this).wpColorPicker({width:300}),i()(this).parents(".wp-picker-container").find(".wp-color-result").addClass("ed_button")})),i()(".gfpdf_paper_size").each((function(){var t=i()(this).nextAll(".gfpdf_paper_size_other").first();i()(this).find("select").off("change").on("change",(function(){"CUSTOM"===i()(this).val()?t.fadeIn():t.fadeOut()})).trigger("change")})),i()("form").off("change",".gfpdf-input-toggle").on("change",".gfpdf-input-toggle",(function(){var t=i()(this).parent().next();i()(this).prop("checked")?t.slideDown("slow"):(t.slideUp("slow"),t.find(".wp-editor-area").each((function(){var t=tinyMCE.get(i()(this).attr("id"));null!==t&&t.setContent("")})),t.find("textarea").each((function(){i()(this).val("")})))})),s(),i()(".gfpdf-deactivate-license").on("click",(function(){var t=i()(this).parent(),n=a("gfpdf-spinner");i()(this).append(n);var e=i()(this).data("addon-name");return o({action:"gfpdf_deactivate_license",addon_name:e,license:i()(this).data("license"),nonce:i()(this).data("nonce")},(function(r){n.remove(),r.success?(i()("#gfpdf_settings\\[license_"+e+"\\]").val(""),i()("#gfpdf_settings\\[license_"+e+"_message\\]").val(""),i()("#gfpdf_settings\\[license_"+e+"_status\\]").val(""),t.find("button").remove(),t.find("#message").removeClass("error").addClass("success").html(r.success)):t.find("#message").removeClass("success").addClass("error").html(r.error)})),!1}))}}])&&u(n.prototype,e),r&&u(n,r),t}());e(171),e(41),e(29),e(93);function p(t){t.attr("novalidate","novalidate"),t.find('input[type="submit"]').on("click",(function(){t.addClass("formSubmitted")})),t.find(':input[required=""], :input[required]').each((function(){var t=i()(this).parent();t.find(".gform-settings-panel__title a").length?t.find(".gform-settings-panel__title a").before('<span class="gfield_required">(required)</span>'):t.find(".gform-settings-panel__title").append('<span class="gfield_required">(required)</span>')}))}function d(t,n,e){n=void 0!==n?n:4500,e=void 0!==e&&e;var r=i()('<div id="message">').html("<p>"+t+"</p>");!0===e?r.addClass("error"):r.addClass("updated"),i()(".wrap > h2").after(r),setTimeout((function(){r.slideUp()}),n)}function g(){function t(t){t.append(a("gfpdf-spinner gfpdf-spinner-small")).closest(".row-actions").attr("style","position:static; visibility: visible;"),o({action:"gfpdf_list_delete",nonce:t.data("nonce"),fid:t.data("fid"),pid:t.data("id")},(function(n){n.msg&&(t.closest(".row-actions").attr("style","").find(".gfpdf-spinner").remove(),d(n.msg),t.parents("tr").css("background","#ffb8b8").fadeOut(400,(function(){this.remove(),function(){var t=i()("#gfpdf_list_form tbody");if(0===t.find("tr").length){var n=i()("<tr>").addClass("no-items"),e=i()("<td>").attr("colspan","5").addClass("colspanchange"),r=i()("<a>").attr("href",i()("#gfpdf_list_form a.button:first").attr("href")).append(GFPDF.letsGoCreateOne+".");e.append(GFPDF.thisFormHasNoPdfs).append(" ").append(r),n.append(e),t.append(n)}}()})))}))}i()("#gfpdf_list_form").on("click","a.submitdelete",(function(){String(i()(this).data("id")).length>0&&window.confirm(GFPDF.pdfDeleteWarning)&&t(i()(this));return!1}))}e(71),e(173);function v(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var h=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"setupAJAXListListener",value:function(){g(),i()("#gfpdf_list_form").on("click","a.submitduplicate",(function(t){t.preventDefault();var n=String(i()(this).data("id")),e=this;i()(this).after(a("gfpdf-spinner gfpdf-spinner-small")).parent().parent().attr("style","position:static; visibility: visible;"),n.length>0&&o({action:"gfpdf_list_duplicate",nonce:i()(this).data("nonce"),fid:i()(this).data("fid"),pid:i()(this).data("id")},(function(t){if(t.msg){i()(e).parent().parent().attr("style","").find(".gfpdf-spinner").remove(),d(t.msg);var r=i()(e).parents("tr"),o=r.clone();o.find(".column-name > a, .edit a").each((function(){var n=i()(this).attr("href");n=function(t,n,e){var r="",i=t.split("?"),o=i[0],a=i[1],c="";if(a){i=a.split("&");for(var f=0;f<i.length;f++)i[f].split("=")[0]!==n&&(r+=c+i[f],c="&")}return o+"?"+r+c+n+"="+e}(n,"pid",t.pid),i()(this).attr("href",n)})),o.find(".column-name > a").html(t.name);var a=o.find(".duplicate a"),c=o.find(".delete a"),f=o.find(".check-column button"),s=o.find(".column-shortcode");a.data("id",t.pid),a.data("nonce",t.dup_nonce),c.data("id",t.pid),c.data("nonce",t.del_nonce),f.data("id",t.pid),f.data("nonce",t.state_nonce),f[0].setAttribute("data-status","inactive");var u=s.find("button").attr("data-clipboard-text");u=u.replace(n,t.pid),s.find("button").attr("data-clipboard-text",u),s.find("input").attr("id",t.pid).attr("value",u),f.removeClass("gform-status--active").addClass("gform-status--inactive").find(".gform-status-indicator-status").html(t.status),o.hide().insertAfter(r).fadeIn()}}))})),i()("#gfpdf_list_form").on("click",".check-column button",(function(){var t=String(i()(this).data("id")),n=i()(this),e=n.find("span.gform-status-indicator-status");t.length>0&&(n.addClass("gform_status--pending").removeClass("gform-status--active gform-status--inactive"),o({action:"gfpdf_change_state",nonce:i()(this).data("nonce"),fid:i()(this).data("fid"),pid:i()(this).data("id")},(function(t){e.html(t.state),"active"===n.data("status")?(n[0].setAttribute("data-status","inactive"),n.data("status","inactive").removeClass("gform_status--pending").addClass("gform-status--inactive")):(n[0].setAttribute("data-status","active"),n.data("status","active").removeClass("gform_status--pending").addClass("gform-status--active"))})))}))}}])&&v(n.prototype,e),r&&v(n,r),t}());e(58);function m(){var t,n,e,r,o,a,f,s;p(i()("#gfpdf_pdf_form")),t=i()("#gfpdf-fieldset-gfpdf_form_settings_advanced"),n=t.find('input[name="gfpdf_settings[security]"]'),e=t.find('input[name="gfpdf_settings[format]"]'),r=t.find("#gfpdf-settings-field-wrapper-security"),o=t.find("#gfpdf-settings-field-wrapper-password,#gfpdf-settings-field-wrapper-privileges,#gfpdf-settings-field-wrapper-master_password:not(.gfpdf-hidden)"),n.on("change",(function(){var t=e.filter(":checked").val();"No"===i()(this).val()||"Standard"!==t?o.hide():i()(this).is(":checked")?o.show():o.hide(),"Standard"!==t?r.hide():r.show()})).trigger("change"),e.on("change",(function(){i()(this).is(":checked")&&n.trigger("change")})).trigger("change"),gform.addFilter("gform_conditional_object",(function(t,n){return"gfpdf"===n?window.gfpdf_current_pdf:t})),i()("#gfpdf_conditional_logic").on("change",(function(){void 0===window.gfpdf_current_pdf.conditionalLogic&&i()(this).prop("checked")?window.gfpdf_current_pdf.conditionalLogic=new ConditionalLogic:i()(this).prop("checked")||(window.gfpdf_current_pdf.conditionalLogic=null),ToggleConditionalLogic(!1,"gfpdf")})).trigger("change"),a=i()("#gfpdf-fieldset-gfpdf_form_settings_advanced").find('input[name="gfpdf_settings[public_access]"]'),f=i()("#gfpdf-settings-field-wrapper-restrict_owner"),a.on("change",(function(){i()(this).is(":checked")?f.hide():f.show()})).trigger("change"),c(i()("#gfpdf_settings\\[template\\]").data("template_group")),s=i()("#gfpdf-fieldset-gfpdf_form_settings_appearance"),i()('input[name="gfpdf_settings[advanced_template]"]').on("change",(function(){"Yes"===i()(this).val()?s.hide():s.show()})),i()('input[name="gfpdf_settings[advanced_template]"]:checked').trigger("change"),i()(".gform-settings-field").each((function(){i()(this).find(".merge-tag-support, .merge-tag-support + span").wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag"></div>'),i()(this).find(".all-merge-tags.textarea").parent().wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag gfpdf-merge-tag-container"></div>')}));var u=i()("#gfpdf-fieldset-gfpdf_form_settings_template");0===u.find(".gform-settings-panel__content").children().length&&u.hide(),i()(".gform-settings__wrapper > .alert").detach().prependTo("#tab_PDF"),i()("#gfpdf_pdf_form").on("submit",(function(){try{tinyMCE.triggerSave()}catch(t){}})),i()("#gfpdf_pdf_form").on("submit",(function(){i()("#gfpdf_settings\\[conditionalLogic\\]").val(i.a.toJSON(window.gfpdf_current_pdf.conditionalLogic))}))}function y(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var _=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"isSettings",value:function(){return i()("#pdfextended-settings").length}},{key:"isFormSettings",value:function(){return i()(".gforms_edit_form").length}},{key:"isFormSettingsList",value:function(){return i()("#gfpdf_list_form").length}},{key:"isFormSettingsEdit",value:function(){return i()("#gfpdf_pdf_form").length}}])&&y(n.prototype,e),r&&y(n,r),t}());function x(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var b=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"init",value:function(){l.runElements(),_.isSettings()&&this.processSettings(),_.isFormSettings()&&this.processFormSettings()}},{key:"getCurrentSettingsPage",value:function(){return _.isSettings()?i()(".gform-settings-tabs__navigation a.active:first").data("id"):""}},{key:"processSettings",value:function(){switch(i()("#gform_tabs a").each((function(){var t=i()(this).attr("href"),n=new RegExp("&tab=[^&;]*","g");i()(this).attr("href",t.replace(n,""))})),this.getCurrentSettingsPage()){case"general":!function(){p(i()("#pdfextended-settings > form"));var t=i()("#pdf-general-security");t.find('input[name="gfpdf_settings[default_restrict_owner]"]').on("change",(function(){i()(this).is(":checked")&&("Yes"===i()(this).val()?t.find("tr:nth-child(3)").hide():t.find("tr:nth-child(3)").show())})).trigger("change")}()}}},{key:"processFormSettings",value:function(){_.isFormSettingsList()&&h.setupAJAXListListener(),_.isFormSettingsEdit()&&m()}}])&&x(n.prototype,e),r&&x(n,r),t}());i()((function(){b.init()}))}]);
1
+ !function(t){var n={};function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var i in t)e.d(r,i,function(n){return t[n]}.bind(null,i));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="/home/runner/work/gravity-pdf/gravity-pdf/tmp/package/6.4.0-RC1/dist/",e(e.s=211)}([,,function(t,n){t.exports=jQuery},,function(t,n,e){(function(n){var e=function(t){return t&&t.Math==Math&&t};t.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof n&&n)||Function("return this")()}).call(this,e(84))},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,e){var r=e(4),i=e(61),o=e(9),a=e(63),c=e(64),f=e(101),s=i("wks"),u=r.Symbol,l=f?u:u&&u.withoutSetter||a;t.exports=function(t){return o(s,t)||(c&&o(u,t)?s[t]=u[t]:s[t]=l("Symbol."+t)),s[t]}},function(t,n,e){var r=e(4),i=e(45).f,o=e(14),a=e(26),c=e(50),f=e(102),s=e(85);t.exports=function(t,n){var e,u,l,p,d,g=t.target,v=t.global,h=t.stat;if(e=v?r:h?r[g]||c(g,{}):(r[g]||{}).prototype)for(u in n){if(p=n[u],l=t.noTargetGet?(d=i(e,u))&&d.value:e[u],!s(v?u:g+(h?".":"#")+u,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;f(p,l)}(t.sham||l&&l.sham)&&o(p,"sham",!0),a(e,u,p,t)}}},function(t,n,e){var r=e(11);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n,e){var r=e(5);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,e){var r=e(10),i=e(76),o=e(8),a=e(51),c=Object.defineProperty;n.f=r?c:function(t,n,e){if(o(t),n=a(n,!0),o(e),i)try{return c(t,n,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported");return"value"in e&&(t[n]=e.value),t}},,function(t,n,e){var r=e(10),i=e(12),o=e(34);t.exports=r?function(t,n,e){return i.f(t,n,o(1,e))}:function(t,n,e){return t[n]=e,t}},,,,,function(t,n,e){"use strict";var r=e(7),i=e(48).find,o=e(86),a=e(33),c=!0,f=a("find");"find"in[]&&Array(1).find((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!f},{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o("find")},function(t,n,e){var r=e(59),i=e(22);t.exports=function(t){return r(i(t))}},function(t,n,e){var r=e(35),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,e){var r=e(22);t.exports=function(t){return Object(r(t))}},function(t,n){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},function(t,n,e){"use strict";var r=e(117).charAt,i=e(47),o=e(132),a=i.set,c=i.getterFor("String Iterator");o(String,"String",(function(t){a(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,n=c(this),e=n.string,i=n.index;return i>=e.length?{value:void 0,done:!0}:(t=r(e,i),n.index+=t.length,{value:t,done:!1})}))},function(t,n,e){var r=e(4),i=e(14),o=e(9),a=e(50),c=e(65),f=e(47),s=f.get,u=f.enforce,l=String(String).split("String");(t.exports=function(t,n,e,c){var f=!!c&&!!c.unsafe,s=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof e&&("string"!=typeof n||o(e,"name")||i(e,"name",n),u(e).source=l.join("string"==typeof n?n:"")),t!==r?(f?!p&&t[n]&&(s=!0):delete t[n],s?t[n]=e:i(t,n,e)):s?t[n]=e:a(n,e)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||c(this)}))},function(t,n,e){var r=e(104),i=e(4),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?o(r[t])||o(i[t]):r[t]&&r[t][n]||i[t]&&i[t][n]}},,function(t,n,e){"use strict";var r=e(26),i=e(8),o=e(5),a=e(97),c=RegExp.prototype,f=c.toString,s=o((function(){return"/a/b"!=f.call({source:"a",flags:"b"})})),u="toString"!=f.name;(s||u)&&r(RegExp.prototype,"toString",(function(){var t=i(this),n=String(t.source),e=t.flags;return"/"+n+"/"+String(void 0===e&&t instanceof RegExp&&!("flags"in c)?a.call(t):e)}),{unsafe:!0})},,,,function(t,n,e){var r=e(10),i=e(5),o=e(9),a=Object.defineProperty,c={},f=function(t){throw t};t.exports=function(t,n){if(o(c,t))return c[t];n||(n={});var e=[][t],s=!!o(n,"ACCESSORS")&&n.ACCESSORS,u=o(n,0)?n[0]:f,l=o(n,1)?n[1]:void 0;return c[t]=!!e&&!i((function(){if(s&&!r)return!0;var t={length:-1};s?a(t,1,{enumerable:!0,get:f}):t[1]=1,e.call(t,u,l)}))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n){var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},,,,,,function(t,n,e){"use strict";var r=e(7),i=e(73);r({target:"RegExp",proto:!0,forced:/./.exec!==i},{exec:i})},function(t,n,e){"use strict";var r=e(7),i=e(48).map,o=e(90),a=e(33),c=o("map"),f=a("map");r({target:"Array",proto:!0,forced:!c||!f},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,n){t.exports={}},function(t,n,e){var r=e(10),i=e(77),o=e(34),a=e(20),c=e(51),f=e(9),s=e(76),u=Object.getOwnPropertyDescriptor;n.f=r?u:function(t,n){if(t=a(t),n=c(n,!0),s)try{return u(t,n)}catch(t){}if(f(t,n))return o(!i.f.call(t,n),t[n])}},,function(t,n,e){var r,i,o,a=e(114),c=e(4),f=e(11),s=e(14),u=e(9),l=e(52),p=e(44),d=c.WeakMap;if(a){var g=new d,v=g.get,h=g.has,m=g.set;r=function(t,n){return m.call(g,t,n),n},i=function(t){return v.call(g,t)||{}},o=function(t){return h.call(g,t)}}else{var y=l("state");p[y]=!0,r=function(t,n){return s(t,y,n),n},i=function(t){return u(t,y)?t[y]:{}},o=function(t){return u(t,y)}}t.exports={set:r,get:i,has:o,enforce:function(t){return o(t)?i(t):r(t,{})},getterFor:function(t){return function(n){var e;if(!f(n)||(e=i(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return e}}}},function(t,n,e){var r=e(66),i=e(59),o=e(23),a=e(21),c=e(107),f=[].push,s=function(t){var n=1==t,e=2==t,s=3==t,u=4==t,l=6==t,p=5==t||l;return function(d,g,v,h){for(var m,y,_=o(d),x=i(_),b=r(g,v,3),w=a(x.length),S=0,E=h||c,O=n?E(d,w):e?E(d,0):void 0;w>S;S++)if((p||S in x)&&(y=b(m=x[S],S,_),t))if(n)O[S]=y;else if(y)switch(t){case 3:return!0;case 5:return m;case 6:return S;case 2:f.call(O,m)}else if(u)return!1;return l?-1:s||u?u:O}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(t,n){t.exports=!1},function(t,n,e){var r=e(4),i=e(14);t.exports=function(t,n){try{i(r,t,n)}catch(e){r[t]=n}return n}},function(t,n,e){var r=e(11);t.exports=function(t,n){if(!r(t))return t;var e,i;if(n&&"function"==typeof(e=t.toString)&&!r(i=e.call(t)))return i;if("function"==typeof(e=t.valueOf)&&!r(i=e.call(t)))return i;if(!n&&"function"==typeof(e=t.toString)&&!r(i=e.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,n,e){var r=e(61),i=e(63),o=r("keys");t.exports=function(t){return o[t]||(o[t]=i(t))}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},,function(t,n,e){var r=e(7),i=e(144);r({target:"Array",stat:!0,forced:!e(130)((function(t){Array.from(t)}))},{from:i})},function(t,n){t.exports={}},,function(t,n,e){"use strict";var r=e(7),i=e(48).filter,o=e(90),a=e(33),c=o("filter"),f=a("filter");r({target:"Array",proto:!0,forced:!c||!f},{filter:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,n,e){var r=e(5),i=e(24),o="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?o.call(t,""):Object(t)}:Object},,function(t,n,e){var r=e(49),i=e(75);(t.exports=function(t,n){return i[t]||(i[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,n,e){var r=e(4),i=e(11),o=r.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},function(t,n){var e=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++e+r).toString(36)}},function(t,n,e){var r=e(5);t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(t,n,e){var r=e(75),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return i.call(t)}),t.exports=r.inspectSource},function(t,n,e){var r=e(43);t.exports=function(t,n,e){if(r(t),void 0===n)return t;switch(e){case 0:return function(){return t.call(n)};case 1:return function(e){return t.call(n,e)};case 2:return function(e,r){return t.call(n,e,r)};case 3:return function(e,r,i){return t.call(n,e,r,i)}}return function(){return t.apply(n,arguments)}}},function(t,n,e){var r=e(78),i=e(53);t.exports=Object.keys||function(t){return r(t,i)}},function(t,n,e){var r,i=e(8),o=e(118),a=e(53),c=e(44),f=e(106),s=e(62),u=e(52),l=u("IE_PROTO"),p=function(){},d=function(t){return"<script>"+t+"<\/script>"},g=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,n;g=r?function(t){t.write(d("")),t.close();var n=t.parentWindow.Object;return t=null,n}(r):((n=s("iframe")).style.display="none",f.appendChild(n),n.src=String("javascript:"),(t=n.contentWindow.document).open(),t.write(d("document.F=Object")),t.close(),t.F);for(var e=a.length;e--;)delete g.prototype[a[e]];return g()};c[l]=!0,t.exports=Object.create||function(t,n){var e;return null!==t?(p.prototype=i(t),e=new p,p.prototype=null,e[l]=t):e=g(),void 0===n?e:o(e,n)}},,,function(t,n,e){var r=e(10),i=e(12).f,o=Function.prototype,a=o.toString,c=/^\s*function ([^ (]*)/;r&&!("name"in o)&&i(o,"name",{configurable:!0,get:function(){try{return a.call(this).match(c)[1]}catch(t){return""}}})},function(t,n,e){var r=e(78),i=e(53).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,n,e){"use strict";var r,i,o=e(97),a=e(124),c=RegExp.prototype.exec,f=String.prototype.replace,s=c,u=(r=/a/,i=/b*/g,c.call(r,"a"),c.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),l=a.UNSUPPORTED_Y||a.BROKEN_CARET,p=void 0!==/()??/.exec("")[1];(u||p||l)&&(s=function(t){var n,e,r,i,a=this,s=l&&a.sticky,d=o.call(a),g=a.source,v=0,h=t;return s&&(-1===(d=d.replace("y","")).indexOf("g")&&(d+="g"),h=String(t).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==t[a.lastIndex-1])&&(g="(?: "+g+")",h=" "+h,v++),e=new RegExp("^(?:"+g+")",d)),p&&(e=new RegExp("^"+g+"$(?!\\s)",d)),u&&(n=a.lastIndex),r=c.call(s?e:a,h),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:u&&r&&(a.lastIndex=a.global?r.index+r[0].length:n),p&&r&&r.length>1&&f.call(r[0],e,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)})),r}),t.exports=s},function(t,n,e){var r=e(24);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,n,e){var r=e(4),i=e(50),o=r["__core-js_shared__"]||i("__core-js_shared__",{});t.exports=o},function(t,n,e){var r=e(10),i=e(5),o=e(62);t.exports=!r&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},function(t,n,e){"use strict";var r={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,o=i&&!r.call({1:2},1);n.f=o?function(t){var n=i(this,t);return!!n&&n.enumerable}:r},function(t,n,e){var r=e(9),i=e(20),o=e(96).indexOf,a=e(44);t.exports=function(t,n){var e,c=i(t),f=0,s=[];for(e in c)!r(a,e)&&r(c,e)&&s.push(e);for(;n.length>f;)r(c,e=n[f++])&&(~o(s,e)||s.push(e));return s}},,,,,,function(t,n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},function(t,n,e){var r=e(5),i=/#|\.prototype\./,o=function(t,n){var e=c[a(t)];return e==s||e!=f&&("function"==typeof n?r(n):!!n)},a=o.normalize=function(t){return String(t).replace(i,".").toLowerCase()},c=o.data={},f=o.NATIVE="N",s=o.POLYFILL="P";t.exports=o},function(t,n,e){var r=e(6),i=e(68),o=e(12),a=r("unscopables"),c=Array.prototype;null==c[a]&&o.f(c,a,{configurable:!0,value:i(null)}),t.exports=function(t){c[a][t]=!0}},,function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,e){var r=e(12).f,i=e(9),o=e(6)("toStringTag");t.exports=function(t,n,e){t&&!i(t=e?t:t.prototype,o)&&r(t,o,{configurable:!0,value:n})}},function(t,n,e){var r=e(5),i=e(6),o=e(115),a=i("species");t.exports=function(t){return o>=51||!r((function(){var n=[];return(n.constructor={})[a]=function(){return{foo:1}},1!==n[t](Boolean).foo}))}},,,function(t,n,e){"use strict";var r=e(98),i=e(8),o=e(23),a=e(21),c=e(35),f=e(22),s=e(112),u=e(99),l=Math.max,p=Math.min,d=Math.floor,g=/\$([$&'`]|\d\d?|<[^>]*>)/g,v=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(t,n,e,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,y=h?"$":"$0";return[function(e,r){var i=f(this),o=null==e?void 0:e[t];return void 0!==o?o.call(e,i,r):n.call(String(i),e,r)},function(t,r){if(!h&&m||"string"==typeof r&&-1===r.indexOf(y)){var o=e(n,t,this,r);if(o.done)return o.value}var f=i(t),d=String(this),g="function"==typeof r;g||(r=String(r));var v=f.global;if(v){var x=f.unicode;f.lastIndex=0}for(var b=[];;){var w=u(f,d);if(null===w)break;if(b.push(w),!v)break;""===String(w[0])&&(f.lastIndex=s(d,a(f.lastIndex),x))}for(var S,E="",O=0,A=0;A<b.length;A++){w=b[A];for(var j=String(w[0]),P=l(p(c(w.index),d.length),0),k=[],C=1;C<w.length;C++)k.push(void 0===(S=w[C])?S:String(S));var T=w.groups;if(g){var R=[j].concat(k,P,d);void 0!==T&&R.push(T);var I=String(r.apply(void 0,R))}else I=_(j,d,P,k,T,r);P>=O&&(E+=d.slice(O,P)+I,O=P+j.length)}return E+d.slice(O)}];function _(t,e,r,i,a,c){var f=r+t.length,s=i.length,u=v;return void 0!==a&&(a=o(a),u=g),n.call(c,u,(function(n,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(f);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return n;if(u>s){var l=d(u/10);return 0===l?n:l<=s?void 0===i[l-1]?o.charAt(1):i[l-1]+o.charAt(1):n}c=i[u-1]}return void 0===c?"":c}))}}))},,,function(t,n,e){var r=e(20),i=e(21),o=e(105),a=function(t){return function(n,e,a){var c,f=r(n),s=i(f.length),u=o(a,s);if(t&&e!=e){for(;s>u;)if((c=f[u++])!=c)return!0}else for(;s>u;u++)if((t||u in f)&&f[u]===e)return t||u||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,n,e){"use strict";var r=e(8);t.exports=function(){var t=r(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.dotAll&&(n+="s"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},function(t,n,e){"use strict";e(41);var r=e(26),i=e(5),o=e(6),a=e(73),c=e(14),f=o("species"),s=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),u="$0"==="a".replace(/./,"$0"),l=o("replace"),p=!!/./[l]&&""===/./[l]("a","$0"),d=!i((function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var e="ab".split(t);return 2!==e.length||"a"!==e[0]||"b"!==e[1]}));t.exports=function(t,n,e,l){var g=o(t),v=!i((function(){var n={};return n[g]=function(){return 7},7!=""[t](n)})),h=v&&!i((function(){var n=!1,e=/a/;return"split"===t&&((e={}).constructor={},e.constructor[f]=function(){return e},e.flags="",e[g]=/./[g]),e.exec=function(){return n=!0,null},e[g](""),!n}));if(!v||!h||"replace"===t&&(!s||!u||p)||"split"===t&&!d){var m=/./[g],y=e(g,""[t],(function(t,n,e,r,i){return n.exec===a?v&&!i?{done:!0,value:m.call(n,e,r)}:{done:!0,value:t.call(e,n,r)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),_=y[0],x=y[1];r(String.prototype,t,_),r(RegExp.prototype,g,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)})}l&&c(RegExp.prototype[g],"sham",!0)}},function(t,n,e){var r=e(24),i=e(73);t.exports=function(t,n){var e=t.exec;if("function"==typeof e){var o=e.call(t,n);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(t,n)}},,function(t,n,e){var r=e(64);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,n,e){var r=e(9),i=e(103),o=e(45),a=e(12);t.exports=function(t,n){for(var e=i(n),c=a.f,f=o.f,s=0;s<e.length;s++){var u=e[s];r(t,u)||c(t,u,f(n,u))}}},function(t,n,e){var r=e(27),i=e(72),o=e(88),a=e(8);t.exports=r("Reflect","ownKeys")||function(t){var n=i.f(a(t)),e=o.f;return e?n.concat(e(t)):n}},function(t,n,e){var r=e(4);t.exports=r},function(t,n,e){var r=e(35),i=Math.max,o=Math.min;t.exports=function(t,n){var e=r(t);return e<0?i(e+n,0):o(e,n)}},function(t,n,e){var r=e(27);t.exports=r("document","documentElement")},function(t,n,e){var r=e(11),i=e(74),o=e(6)("species");t.exports=function(t,n){var e;return i(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!i(e.prototype)?r(e)&&null===(e=e[o])&&(e=void 0):e=void 0),new(void 0===e?Array:e)(0===n?0:n)}},function(t,n,e){"use strict";var r=e(51),i=e(12),o=e(34);t.exports=function(t,n,e){var a=r(n);a in t?i.f(t,a,o(0,e)):t[a]=e}},function(t,n,e){var r=e(9),i=e(23),o=e(52),a=e(133),c=o("IE_PROTO"),f=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=i(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?f:null}},,,function(t,n,e){"use strict";var r=e(117).charAt;t.exports=function(t,n,e){return n+(e?r(t,n).length:1)}},function(t,n,e){var r={};r[e(6)("toStringTag")]="z",t.exports="[object z]"===String(r)},function(t,n,e){var r=e(4),i=e(65),o=r.WeakMap;t.exports="function"==typeof o&&/native code/.test(i(o))},function(t,n,e){var r,i,o=e(4),a=e(131),c=o.process,f=c&&c.versions,s=f&&f.v8;s?i=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(i=r[1]),t.exports=i&&+i},,function(t,n,e){var r=e(35),i=e(22),o=function(t){return function(n,e){var o,a,c=String(i(n)),f=r(e),s=c.length;return f<0||f>=s?t?"":void 0:(o=c.charCodeAt(f))<55296||o>56319||f+1===s||(a=c.charCodeAt(f+1))<56320||a>57343?t?c.charAt(f):o:t?c.slice(f,f+2):a-56320+(o-55296<<10)+65536}};t.exports={codeAt:o(!1),charAt:o(!0)}},function(t,n,e){var r=e(10),i=e(12),o=e(8),a=e(67);t.exports=r?Object.defineProperties:function(t,n){o(t);for(var e,r=a(n),c=r.length,f=0;c>f;)i.f(t,e=r[f++],n[e]);return t}},function(t,n,e){"use strict";var r,i,o,a=e(109),c=e(14),f=e(9),s=e(6),u=e(49),l=s("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0),null==r&&(r={}),u||f(r,l)||c(r,l,(function(){return this})),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},,function(t,n,e){"use strict";e.d(n,"a",(function(){return r})),e.d(n,"b",(function(){return i}));e(55),e(42),e(25);function r(t,n){var e=Array.from(t);e.pop(),e.map((function(t,e){"none"!==t.style.display&&(t.querySelector(".gform-settings-panel__collapsible-toggle-checkbox").addEventListener("click",(function(){i(t,n,e)})),i(t,n,e,"firstLoad"))}))}function i(t,n,e,r){var i="submit-container-"+e;if(!t.classList.contains("gform-settings-panel--collapsed")){var o=n.querySelector("#submit").cloneNode(!0);o.setAttribute("id","submit_"+e);var a=document.createElement("div");return a.setAttribute("class",i),a.innerHTML=o.outerHTML,t.parentNode.insertBefore(a,t.nextSibling)}r||document.querySelector(".".concat(i)).remove()}},,function(t,n,e){var r=e(11),i=e(24),o=e(6)("match");t.exports=function(t){var n;return r(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},function(t,n,e){"use strict";var r=e(5);function i(t,n){return RegExp(t,n)}n.UNSUPPORTED_Y=r((function(){var t=i("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),n.BROKEN_CARET=r((function(){var t=i("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},function(t,n,e){var r=e(8),i=e(146);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,n=!1,e={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),n=e instanceof Array}catch(t){}return function(e,o){return r(e),i(o),n?t.call(e,o):e.__proto__=o,e}}():void 0)},function(t,n,e){var r=e(113),i=e(24),o=e(6)("toStringTag"),a="Arguments"==i(function(){return arguments}());t.exports=r?i:function(t){var n,e,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(e=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),o))?e:a?i(n):"Object"==(r=i(n))&&"function"==typeof n.callee?"Arguments":r}},function(t,n,e){var r=e(6),i=e(56),o=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||a[o]===t)}},function(t,n,e){var r=e(126),i=e(56),o=e(6)("iterator");t.exports=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},function(t,n,e){var r=e(8);t.exports=function(t,n,e,i){try{return i?n(r(e)[0],e[1]):n(e)}catch(n){var o=t.return;throw void 0!==o&&r(o.call(t)),n}}},function(t,n,e){var r=e(6)("iterator"),i=!1;try{var o=0,a={next:function(){return{done:!!o++}},return:function(){i=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,n){if(!n&&!i)return!1;var e=!1;try{var o={};o[r]=function(){return{next:function(){return{done:e=!0}}}},t(o)}catch(t){}return e}},function(t,n,e){var r=e(27);t.exports=r("navigator","userAgent")||""},function(t,n,e){"use strict";var r=e(7),i=e(145),o=e(109),a=e(125),c=e(89),f=e(14),s=e(26),u=e(6),l=e(49),p=e(56),d=e(119),g=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,h=u("iterator"),m=function(){return this};t.exports=function(t,n,e,u,d,y,_){i(e,n,u);var x,b,w,S=function(t){if(t===d&&P)return P;if(!v&&t in A)return A[t];switch(t){case"keys":case"values":case"entries":return function(){return new e(this,t)}}return function(){return new e(this)}},E=n+" Iterator",O=!1,A=t.prototype,j=A[h]||A["@@iterator"]||d&&A[d],P=!v&&j||S(d),k="Array"==n&&A.entries||j;if(k&&(x=o(k.call(new t)),g!==Object.prototype&&x.next&&(l||o(x)===g||(a?a(x,g):"function"!=typeof x[h]&&f(x,h,m)),c(x,E,!0,!0),l&&(p[E]=m))),"values"==d&&j&&"values"!==j.name&&(O=!0,P=function(){return j.call(this)}),l&&!_||A[h]===P||f(A,h,P),p[n]=P,d)if(b={values:S("values"),keys:y?P:S("keys"),entries:S("entries")},_)for(w in b)(v||O||!(w in A))&&s(A,w,b[w]);else r({target:n,proto:!0,forced:v||O},b);return b}},function(t,n,e){var r=e(5);t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},,,,,,,,function(t,n,e){"use strict";var r=e(27),i=e(12),o=e(6),a=e(10),c=o("species");t.exports=function(t){var n=r(t),e=i.f;a&&n&&!n[c]&&e(n,c,{configurable:!0,get:function(){return this}})}},function(t,n,e){var r=e(8),i=e(43),o=e(6)("species");t.exports=function(t,n){var e,a=r(t).constructor;return void 0===a||null==(e=r(a)[o])?n:i(e)}},,function(t,n,e){"use strict";var r=e(66),i=e(23),o=e(129),a=e(127),c=e(21),f=e(108),s=e(128);t.exports=function(t){var n,e,u,l,p,d,g=i(t),v="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,y=void 0!==m,_=s(g),x=0;if(y&&(m=r(m,h>2?arguments[2]:void 0,2)),null==_||v==Array&&a(_))for(e=new v(n=c(g.length));n>x;x++)d=y?m(g[x],x):g[x],f(e,x,d);else for(p=(l=_.call(g)).next,e=new v;!(u=p.call(l)).done;x++)d=y?o(l,m,[u.value,x],!0):u.value,f(e,x,d);return e.length=x,e}},function(t,n,e){"use strict";var r=e(119).IteratorPrototype,i=e(68),o=e(34),a=e(89),c=e(56),f=function(){return this};t.exports=function(t,n,e){var s=n+" Iterator";return t.prototype=i(r,{next:o(1,e)}),a(t,s,!1,!0),c[s]=f,t}},function(t,n,e){var r=e(11);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},,,,,,,,,,,,,,,,,,,function(t,n,e){"use strict";e(7)({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return URL.prototype.toString.call(this)}})},,,,,,function(t,n,e){var r=e(10),i=e(4),o=e(85),a=e(172),c=e(12).f,f=e(72).f,s=e(123),u=e(97),l=e(124),p=e(26),d=e(5),g=e(47).set,v=e(141),h=e(6)("match"),m=i.RegExp,y=m.prototype,_=/a/g,x=/a/g,b=new m(_)!==_,w=l.UNSUPPORTED_Y;if(r&&o("RegExp",!b||w||d((function(){return x[h]=!1,m(_)!=_||m(x)==x||"/a/i"!=m(_,"i")})))){for(var S=function(t,n){var e,r=this instanceof S,i=s(t),o=void 0===n;if(!r&&i&&t.constructor===S&&o)return t;b?i&&!o&&(t=t.source):t instanceof S&&(o&&(n=u.call(t)),t=t.source),w&&(e=!!n&&n.indexOf("y")>-1)&&(n=n.replace(/y/g,""));var c=a(b?new m(t,n):m(t,n),r?this:y,S);return w&&e&&g(c,{sticky:e}),c},E=function(t){t in S||c(S,t,{configurable:!0,get:function(){return m[t]},set:function(n){m[t]=n}})},O=f(m),A=0;O.length>A;)E(O[A++]);y.constructor=S,S.prototype=y,p(i,"RegExp",S)}v("RegExp")},function(t,n,e){var r=e(11),i=e(125);t.exports=function(t,n,e){var o,a;return i&&"function"==typeof(o=n.constructor)&&o!==e&&r(a=o.prototype)&&a!==e.prototype&&i(t,a),t}},function(t,n,e){"use strict";var r=e(98),i=e(123),o=e(8),a=e(22),c=e(142),f=e(112),s=e(21),u=e(99),l=e(73),p=e(5),d=[].push,g=Math.min,v=!p((function(){return!RegExp(4294967295,"y")}));r("split",2,(function(t,n,e){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var r=String(a(this)),o=void 0===e?4294967295:e>>>0;if(0===o)return[];if(void 0===t)return[r];if(!i(t))return n.call(r,t,o);for(var c,f,s,u=[],p=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),g=0,v=new RegExp(t.source,p+"g");(c=l.call(v,r))&&!((f=v.lastIndex)>g&&(u.push(r.slice(g,c.index)),c.length>1&&c.index<r.length&&d.apply(u,c.slice(1)),s=c[0].length,g=f,u.length>=o));)v.lastIndex===c.index&&v.lastIndex++;return g===r.length?!s&&v.test("")||u.push(""):u.push(r.slice(g)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,e){var i=a(this),o=null==n?void 0:n[t];return void 0!==o?o.call(n,i,e):r.call(String(i),n,e)},function(t,i){var a=e(r,t,this,i,r!==n);if(a.done)return a.value;var l=o(t),p=String(this),d=c(l,RegExp),h=l.unicode,m=(l.ignoreCase?"i":"")+(l.multiline?"m":"")+(l.unicode?"u":"")+(v?"y":"g"),y=new d(v?l:"^(?:"+l.source+")",m),_=void 0===i?4294967295:i>>>0;if(0===_)return[];if(0===p.length)return null===u(y,p)?[p]:[];for(var x=0,b=0,w=[];b<p.length;){y.lastIndex=v?b:0;var S,E=u(y,v?p:p.slice(b));if(null===E||(S=g(s(y.lastIndex+(v?0:b)),p.length))===x)b=f(p,b,h);else{if(w.push(p.slice(x,b)),w.length===_)return w;for(var O=1;O<=E.length-1;O++)if(w.push(E[O]),w.length===_)return w;b=x=S}}return w.push(p.slice(x)),w}]}),!v)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,n,e){"use strict";e.r(n);var r=e(2),i=e.n(r);e(165);e(19);function o(t,n){return i.a.ajax({type:"post",dataType:"json",url:GFPDF.ajaxUrl,data:t,success:n,error:n})}function a(t){return i()("<img alt="+GFPDF.spinnerAlt+" src="+GFPDF.spinnerUrl+" class="+t+" />")}function c(t){var n=i()("#gfpdf-settings-field-wrapper-font, #gfpdf-settings-field-wrapper-font_size, #gfpdf-settings-field-wrapper-font_colour");"legacy"===t?n.hide():n.show()}var f=e(121);function s(){i()("#gfpdf_settings\\[template\\]").off("change").on("change",(function(){var t=a("gfpdf-spinner-template");i()(this).next().after(t),o({action:"gfpdf_get_template_fields",nonce:GFPDF.ajaxNonce,template:i()(this).val(),type:i()(this).attr("id"),id:i()("#gform_id").val(),gform_pdf_id:i()("#gform_pdf_id").val()},(function(n){var e,r,o=i()(".submit-container-2")[0];t.remove(),i()('input[name="gfpdf_settings[advanced_template]"][value="No"]').prop("checked",!0).trigger("change"),n.fields?(i.a.each(n.editors,(function(t,n){var e=tinyMCE.get(n);if(null!==e)try{tinyMCE.remove(e)}catch(t){}})),o||Object(f.b)(i()("#gfpdf-fieldset-gfpdf_form_settings_template")[0],i()("#gfpdf_pdf_form")[0],"2"),i()("#gfpdf-fieldset-gfpdf_form_settings_template").show().find(".gform-settings-panel__content").html(n.fields),e=n.editors,null!=(r=n.editor_init)&&(r.body_class="id post-type-post post-status-publish post-format-standard",r.formats={alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table,dl.wp-caption",classes:"alignleft"}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img,table,dl.wp-caption",classes:"aligncenter"}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table,dl.wp-caption",classes:"alignright"}],strikethrough:{inline:"del"}},r.content_style='body#tinymce { max-width: 100%; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;}'),i.a.each(e,(function(t,n){r.selector="#"+n,tinyMCE.init(r),tinyMCE.execCommand("mceAddEditor",!1,n),"function"==typeof QTags&&(QTags({id:n}),QTags._buttonsInit(),"function"==typeof switchEditors.switchto&&switchEditors.switchto(jQuery("#wp-"+n+"-wrap").find(".wp-switch-editor.switch-"+("html"===getUserSetting("editor")?"html":"tmce"))[0]))})),l.runElements(),window.gfMergeTags&&"undefined"!=typeof form&&i()("#gfpdf-fieldset-gfpdf_form_settings_template .merge-tag-support").length>=0&&(i()("#gfpdf-fieldset-gfpdf_form_settings_template .merge-tag-support").each((function(){new gfMergeTagsObj(form,i()(this))})),i()("#gfpdf-fieldset-gfpdf_form_settings_template .gform-settings-field").each((function(){i()(this).find(".merge-tag-support, .merge-tag-support + span").wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag"></div>'),i()(this).find(".all-merge-tags.textarea").parent().wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag gfpdf-merge-tag-container"></div>')}))),gform_initialize_tooltips()):(o&&o.remove(),i()("#gfpdf-fieldset-gfpdf_form_settings_template").hide().find(".gform-settings-panel__content").html("")),n.template_type&&c(n.template_type),i()(document).trigger("gfpdf_template_loaded",[n])}))}))}function u(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var l=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"runElements",value:function(){var t;"undefined"!=typeof gf_vars&&(gf_vars.thisFormButton=GFPDF.conditionalText,gf_vars.show=GFPDF.enable,gf_vars.hide=GFPDF.disable),window.formfield="",i()("body").off("click",".gfpdf_settings_upload_button").on("click",".gfpdf_settings_upload_button",(function(n){n.preventDefault();var e=i()(this);window.formfield=i()(this).prev(),t||(t=wp.media.frames.file_frame=wp.media({title:e.data("uploader-title"),button:{text:e.data("uploader-button-text")},multiple:!1})).on("select",(function(){t.state().get("selection").each((function(t){t=t.toJSON(),window.formfield.val(t.url).trigger("change")}))})),t.open()})),i()(".gfpdf-color-picker").each((function(){i()(this).wpColorPicker({width:300}),i()(this).parents(".wp-picker-container").find(".wp-color-result").addClass("ed_button")})),i()(".gfpdf_paper_size").each((function(){var t=i()(this).nextAll(".gfpdf_paper_size_other").first();i()(this).find("select").off("change").on("change",(function(){"CUSTOM"===i()(this).val()?t.fadeIn():t.fadeOut()})).trigger("change")})),i()("form").off("change",".gfpdf-input-toggle").on("change",".gfpdf-input-toggle",(function(){var t=i()(this).parent().next();i()(this).prop("checked")?t.slideDown("slow"):(t.slideUp("slow"),t.find(".wp-editor-area").each((function(){var t=tinyMCE.get(i()(this).attr("id"));null!==t&&t.setContent("")})),t.find("textarea").each((function(){i()(this).val("")})))})),s(),i()(".gfpdf-deactivate-license").on("click",(function(){var t=i()(this).parent(),n=a("gfpdf-spinner");i()(this).append(n);var e=i()(this).data("addon-name");return o({action:"gfpdf_deactivate_license",addon_name:e,license:i()(this).data("license"),nonce:i()(this).data("nonce")},(function(r){n.remove(),r.success?(i()("#gfpdf_settings\\[license_"+e+"\\]").val(""),i()("#gfpdf_settings\\[license_"+e+"_message\\]").val(""),i()("#gfpdf_settings\\[license_"+e+"_status\\]").val(""),t.find("button").remove(),t.find("#message").removeClass("error").addClass("success").html(r.success)):t.find("#message").removeClass("success").addClass("error").html(r.error)})),!1}))}}])&&u(n.prototype,e),r&&u(n,r),t}());e(171),e(41),e(29),e(93);function p(t){t.attr("novalidate","novalidate"),t.find('input[type="submit"]').on("click",(function(){t.addClass("formSubmitted")})),t.find(':input[required=""], :input[required]').each((function(){var t=i()(this).parent();t.find(".gform-settings-panel__title a").length?t.find(".gform-settings-panel__title a").before('<span class="gfield_required">(required)</span>'):t.find(".gform-settings-panel__title").append('<span class="gfield_required">(required)</span>')}))}function d(t,n,e){n=void 0!==n?n:4500,e=void 0!==e&&e;var r=i()('<div id="message">').html("<p>"+t+"</p>");!0===e?r.addClass("error"):r.addClass("updated"),i()(".wrap > h2").after(r),setTimeout((function(){r.slideUp()}),n)}function g(){function t(t){t.append(a("gfpdf-spinner gfpdf-spinner-small")).closest(".row-actions").attr("style","position:static; visibility: visible;"),o({action:"gfpdf_list_delete",nonce:t.data("nonce"),fid:t.data("fid"),pid:t.data("id")},(function(n){n.msg&&(t.closest(".row-actions").attr("style","").find(".gfpdf-spinner").remove(),d(n.msg),t.parents("tr").css("background","#ffb8b8").fadeOut(400,(function(){this.remove(),function(){var t=i()("#gfpdf_list_form tbody");if(0===t.find("tr").length){var n=i()("<tr>").addClass("no-items"),e=i()("<td>").attr("colspan","5").addClass("colspanchange"),r=i()("<a>").attr("href",i()("#gfpdf_list_form a.button:first").attr("href")).append(GFPDF.letsGoCreateOne+".");e.append(GFPDF.thisFormHasNoPdfs).append(" ").append(r),n.append(e),t.append(n)}}()})))}))}i()("#gfpdf_list_form").on("click","a.submitdelete",(function(){String(i()(this).data("id")).length>0&&window.confirm(GFPDF.pdfDeleteWarning)&&t(i()(this));return!1}))}e(71),e(173);function v(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var h=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"setupAJAXListListener",value:function(){g(),i()("#gfpdf_list_form").on("click","a.submitduplicate",(function(t){t.preventDefault();var n=String(i()(this).data("id")),e=this;i()(this).after(a("gfpdf-spinner gfpdf-spinner-small")).parent().parent().attr("style","position:static; visibility: visible;"),n.length>0&&o({action:"gfpdf_list_duplicate",nonce:i()(this).data("nonce"),fid:i()(this).data("fid"),pid:i()(this).data("id")},(function(t){if(t.msg){i()(e).parent().parent().attr("style","").find(".gfpdf-spinner").remove(),d(t.msg);var r=i()(e).parents("tr"),o=r.clone();o.find(".column-name > a, .edit a").each((function(){var n=i()(this).attr("href");n=function(t,n,e){var r="",i=t.split("?"),o=i[0],a=i[1],c="";if(a){i=a.split("&");for(var f=0;f<i.length;f++)i[f].split("=")[0]!==n&&(r+=c+i[f],c="&")}return o+"?"+r+c+n+"="+e}(n,"pid",t.pid),i()(this).attr("href",n)})),o.find(".column-name > a").html(t.name);var a=o.find(".duplicate a"),c=o.find(".delete a"),f=o.find(".check-column button"),s=o.find(".column-shortcode");a.data("id",t.pid),a.data("nonce",t.dup_nonce),c.data("id",t.pid),c.data("nonce",t.del_nonce),f.data("id",t.pid),f.data("nonce",t.state_nonce),f[0].setAttribute("data-status","inactive");var u=s.find("button").attr("data-clipboard-text");u=u.replace(n,t.pid),s.find("button").attr("data-clipboard-text",u),s.find("input").attr("id",t.pid).attr("value",u),f.removeClass("gform-status--active").addClass("gform-status--inactive").find(".gform-status-indicator-status").html(t.status),o.hide().insertAfter(r).fadeIn()}}))})),i()("#gfpdf_list_form").on("click",".check-column button",(function(){var t=String(i()(this).data("id")),n=i()(this),e=n.find("span.gform-status-indicator-status");t.length>0&&(n.addClass("gform_status--pending").removeClass("gform-status--active gform-status--inactive"),o({action:"gfpdf_change_state",nonce:i()(this).data("nonce"),fid:i()(this).data("fid"),pid:i()(this).data("id")},(function(t){e.html(t.state),"active"===n.data("status")?(n[0].setAttribute("data-status","inactive"),n.data("status","inactive").removeClass("gform_status--pending").addClass("gform-status--inactive")):(n[0].setAttribute("data-status","active"),n.data("status","active").removeClass("gform_status--pending").addClass("gform-status--active"))})))}))}}])&&v(n.prototype,e),r&&v(n,r),t}());e(58);function m(){var t,n,e,r,o,a,f,s;p(i()("#gfpdf_pdf_form")),t=i()("#gfpdf-fieldset-gfpdf_form_settings_advanced"),n=t.find('input[name="gfpdf_settings[security]"]'),e=t.find('input[name="gfpdf_settings[format]"]'),r=t.find("#gfpdf-settings-field-wrapper-security"),o=t.find("#gfpdf-settings-field-wrapper-password,#gfpdf-settings-field-wrapper-privileges,#gfpdf-settings-field-wrapper-master_password:not(.gfpdf-hidden)"),n.on("change",(function(){var t=e.filter(":checked").val();"No"===i()(this).val()||"Standard"!==t?o.hide():i()(this).is(":checked")?o.show():o.hide(),"Standard"!==t?r.hide():r.show()})).trigger("change"),e.on("change",(function(){i()(this).is(":checked")&&n.trigger("change")})).trigger("change"),gform.addFilter("gform_conditional_object",(function(t,n){return"gfpdf"===n?window.gfpdf_current_pdf:t})),i()("#gfpdf_conditional_logic").on("change",(function(){void 0===window.gfpdf_current_pdf.conditionalLogic&&i()(this).prop("checked")?window.gfpdf_current_pdf.conditionalLogic=new ConditionalLogic:i()(this).prop("checked")||(window.gfpdf_current_pdf.conditionalLogic=null),ToggleConditionalLogic(!1,"gfpdf")})).trigger("change"),a=i()("#gfpdf-fieldset-gfpdf_form_settings_advanced").find('input[name="gfpdf_settings[public_access]"]'),f=i()("#gfpdf-settings-field-wrapper-restrict_owner"),a.on("change",(function(){i()(this).is(":checked")?f.hide():f.show()})).trigger("change"),c(i()("#gfpdf_settings\\[template\\]").data("template_group")),s=i()("#gfpdf-fieldset-gfpdf_form_settings_appearance"),i()('input[name="gfpdf_settings[advanced_template]"]').on("change",(function(){"Yes"===i()(this).val()?s.hide():s.show()})),i()('input[name="gfpdf_settings[advanced_template]"]:checked').trigger("change"),i()(".gform-settings-field").each((function(){i()(this).find(".merge-tag-support, .merge-tag-support + span").wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag"></div>'),i()(this).find(".all-merge-tags.textarea").parent().wrapAll('<div class="gform-settings-input__container gform-settings-input__container--with-merge-tag gfpdf-merge-tag-container"></div>')}));var u=i()("#gfpdf-fieldset-gfpdf_form_settings_template");0===u.find(".gform-settings-panel__content").children().length&&u.hide(),i()(".gform-settings__wrapper > .alert").detach().prependTo("#tab_PDF"),i()("#gfpdf_pdf_form").on("submit",(function(){try{tinyMCE.triggerSave()}catch(t){}})),i()("#gfpdf_pdf_form").on("submit",(function(){i()("#gfpdf_settings\\[conditionalLogic\\]").val(i.a.toJSON(window.gfpdf_current_pdf.conditionalLogic))}))}function y(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var _=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"isSettings",value:function(){return i()("#pdfextended-settings").length}},{key:"isFormSettings",value:function(){return i()(".gforms_edit_form").length}},{key:"isFormSettingsList",value:function(){return i()("#gfpdf_list_form").length}},{key:"isFormSettingsEdit",value:function(){return i()("#gfpdf_pdf_form").length}}])&&y(n.prototype,e),r&&y(n,r),t}());function x(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var b=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,e,r;return n=t,(e=[{key:"init",value:function(){l.runElements(),_.isSettings()&&this.processSettings(),_.isFormSettings()&&this.processFormSettings()}},{key:"getCurrentSettingsPage",value:function(){return _.isSettings()?i()(".gform-settings-tabs__navigation a.active:first").data("id"):""}},{key:"processSettings",value:function(){switch(i()("#gform_tabs a").each((function(){var t=i()(this).attr("href"),n=new RegExp("&tab=[^&;]*","g");i()(this).attr("href",t.replace(n,""))})),this.getCurrentSettingsPage()){case"general":!function(){p(i()("#pdfextended-settings > form"));var t=i()("#pdf-general-security");t.find('input[name="gfpdf_settings[default_restrict_owner]"]').on("change",(function(){i()(this).is(":checked")&&("Yes"===i()(this).val()?t.find("tr:nth-child(3)").hide():t.find("tr:nth-child(3)").show())})).trigger("change")}()}}},{key:"processFormSettings",value:function(){_.isFormSettingsList()&&h.setupAJAXListListener(),_.isFormSettingsEdit()&&m()}}])&&x(n.prototype,e),r&&x(n,r),t}());i()((function(){b.init()}))}]);
dist/assets/js/app.bundle.min.js CHANGED
@@ -1,4 +1,4 @@
1
- !function(e){function t(t){for(var n,o,i=t[0],a=t[1],u=0,c=[];u<i.length;u++)o=i[u],Object.prototype.hasOwnProperty.call(r,o)&&r[o]&&c.push(r[o][0]),r[o]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(l&&l(t);c.length;)c.shift()()}var n={},r={2:0};function o(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.e=function(e){var t=[],n=r[e];if(0!==n)if(n)t.push(n[2]);else{var i=new Promise((function(t,o){n=r[e]=[t,o]}));t.push(n[2]=i);var a,u=document.createElement("script");u.charset="utf-8",u.timeout=120,o.nc&&u.setAttribute("nonce",o.nc),u.src=function(e){return o.p+"assets/js/chunk-"+({}[e]||e)+"."+{0:"e033d172e282e0a2b9cc",4:"3958577e9ba487662fcf",5:"4048e584cf68fa13efd8",6:"ef3565a14028638eb70f",7:"514921733ef2f6274a79",8:"c48910b68a8cb06a33ba",9:"4ab0fcd8be55c0868e3a",10:"d768793400e94cf88b98"}[e]+".js"}(e);var l=new Error;a=function(t){u.onerror=u.onload=null,clearTimeout(c);var n=r[e];if(0!==n){if(n){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",l.name="ChunkLoadError",l.type=o,l.request=i,n[1](l)}r[e]=void 0}};var c=setTimeout((function(){a({type:"timeout",target:u})}),12e4);u.onerror=u.onload=a,document.head.appendChild(u)}return Promise.all(t)},o.m=e,o.c=n,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="/home/runner/work/gravity-pdf/gravity-pdf/tmp/package/6.3.1/dist/",o.oe=function(e){throw console.error(e),e};var i=window.webpackJsonp=window.webpackJsonp||[],a=i.push.bind(i);i.push=t,i=i.slice();for(var u=0;u<i.length;u++)t(i[u]);var l=a;o(o.s=210)}([function(e,t,n){"use strict";e.exports=n(186)},function(e,t,n){e.exports=n(201)()},function(e,t){e.exports=jQuery},function(e,t,n){"use strict";n.d(t,"m",(function(){return r})),n.d(t,"o",(function(){return o})),n.d(t,"n",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return u})),n.d(t,"b",(function(){return l})),n.d(t,"j",(function(){return c})),n.d(t,"l",(function(){return s})),n.d(t,"k",(function(){return f})),n.d(t,"t",(function(){return p})),n.d(t,"i",(function(){return d})),n.d(t,"f",(function(){return h})),n.d(t,"h",(function(){return m})),n.d(t,"g",(function(){return v})),n.d(t,"d",(function(){return y})),n.d(t,"e",(function(){return g})),n.d(t,"q",(function(){return b})),n.d(t,"r",(function(){return w})),n.d(t,"s",(function(){return E})),n.d(t,"p",(function(){return x})),n.d(t,"A",(function(){return S})),n.d(t,"u",(function(){return T})),n.d(t,"z",(function(){return O})),n.d(t,"F",(function(){return k})),n.d(t,"y",(function(){return _})),n.d(t,"x",(function(){return P})),n.d(t,"v",(function(){return F})),n.d(t,"w",(function(){return C})),n.d(t,"D",(function(){return j})),n.d(t,"C",(function(){return R})),n.d(t,"E",(function(){return D})),n.d(t,"B",(function(){return A}));var r="GET_CUSTOM_FONT_LIST",o="GET_CUSTOM_FONT_LIST_SUCCESS",i="GET_CUSTOM_FONT_LIST_ERROR",a="ADD_FONT",u="ADD_FONT_SUCCESS",l="ADD_FONT_ERROR",c="EDIT_FONT",s="EDIT_FONT_SUCCESS",f="EDIT_FONT_ERROR",p="VALIDATION_ERROR",d="DELETE_VARIANT_ERROR",h="DELETE_FONT",m="DELETE_FONT_SUCCESS",v="DELETE_FONT_ERROR",y="CLEAR_ADD_FONT_MSG",g="CLEAR_DROPZONE_ERROR",b="RESET_SEARCH_RESULT",w="SEARCH_FONT_LIST",E="SELECT_FONT",x="MOVE_SELECTED_FONT_TO_TOP",S=function(){return{type:r}},T=function(e){return{type:a,payload:e}},O=function(e){return{type:c,payload:e}},k=function(){return{type:p}},_=function(e){return{type:d,payload:e}},P=function(e){return{type:h,payload:e}},F=function(){return{type:y}},C=function(e){return{type:g,payload:e}},j=function(e){return{type:w,payload:e}},R=function(){return{type:b}},D=function(e){return{type:E,payload:e}},A=function(e){return{type:x,payload:e}}},function(e,t,n){(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(84))},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(4),o=n(61),i=n(9),a=n(63),u=n(64),l=n(101),c=o("wks"),s=r.Symbol,f=l?s:s&&s.withoutSetter||a;e.exports=function(e){return i(c,e)||(u&&i(s,e)?c[e]=s[e]:c[e]=f("Symbol."+e)),c[e]}},function(e,t,n){var r=n(4),o=n(45).f,i=n(14),a=n(26),u=n(50),l=n(102),c=n(85);e.exports=function(e,t){var n,s,f,p,d,h=e.target,m=e.global,v=e.stat;if(n=m?r:v?r[h]||u(h,{}):(r[h]||{}).prototype)for(s in t){if(p=t[s],f=e.noTargetGet?(d=o(n,s))&&d.value:n[s],!c(m?s:h+(v?".":"#")+s,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;l(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(n,s,p,e)}}},function(e,t,n){var r=n(11);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(5);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(10),o=n(76),i=n(8),a=n(51),u=Object.defineProperty;t.f=r?u:function(e,t,n){if(i(e),t=a(t,!0),i(n),o)try{return u(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){"use strict";n.d(t,"f",(function(){return r})),n.d(t,"g",(function(){return o})),n.d(t,"a",(function(){return i})),n.d(t,"o",(function(){return a})),n.d(t,"d",(function(){return u})),n.d(t,"m",(function(){return l})),n.d(t,"n",(function(){return c})),n.d(t,"h",(function(){return s})),n.d(t,"j",(function(){return f})),n.d(t,"i",(function(){return p})),n.d(t,"b",(function(){return d})),n.d(t,"e",(function(){return h})),n.d(t,"l",(function(){return m})),n.d(t,"k",(function(){return v})),n.d(t,"c",(function(){return y})),n.d(t,"u",(function(){return g})),n.d(t,"v",(function(){return b})),n.d(t,"p",(function(){return w})),n.d(t,"E",(function(){return E})),n.d(t,"s",(function(){return x})),n.d(t,"B",(function(){return S})),n.d(t,"D",(function(){return T})),n.d(t,"C",(function(){return O})),n.d(t,"w",(function(){return k})),n.d(t,"y",(function(){return _})),n.d(t,"x",(function(){return P})),n.d(t,"q",(function(){return F})),n.d(t,"t",(function(){return C})),n.d(t,"A",(function(){return j})),n.d(t,"z",(function(){return R})),n.d(t,"r",(function(){return D}));var r="SEARCH_TEMPLATES",o="SELECT_TEMPLATE",i="ADD_TEMPLATE",a="UPDATE_TEMPLATE_PARAM",u="DELETE_TEMPLATE",l="UPDATE_SELECT_BOX",c="UPDATE_SELECT_BOX_SUCCESS",s="TEMPLATE_PROCESSING",f="TEMPLATE_PROCESSING_SUCCESS",p="TEMPLATE_PROCESSING_FAILED",d="CLEAR_TEMPLATE_PROCESSING",h="POST_TEMPLATE_UPLOAD_PROCESSING",m="TEMPLATE_UPLOAD_PROCESSING_SUCCESS",v="TEMPLATE_UPLOAD_PROCESSING_FAILED",y="CLEAR_TEMPLATE_UPLOAD_PROCESSING",g=function(e){return{type:r,text:e}},b=function(e){return{type:o,id:e}},w=function(e){return{type:i,template:e}},E=function(e,t,n){return{type:a,id:e,name:t,value:n}},x=function(e){return{type:u,id:e}},S=function(){return{type:l}},T=function(e){return{type:c,payload:e}},O=function(){return{type:"UPDATE_SELECT_BOX_FAILED"}},k=function(e){return{type:s,payload:e}},_=function(e){return{type:f,payload:e}},P=function(e){return{type:p,payload:e}},F=function(){return{type:d}},C=function(e,t){return{type:h,payload:{file:e,filename:t}}},j=function(e){return{type:m,payload:e}},R=function(e){return{type:v,payload:e}},D=function(){return{type:y}}},function(e,t,n){var r=n(10),o=n(12),i=n(34);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i),u=o.a.createContext(null);var l=function(e){e()},c={notify:function(){}};function s(){var e=l,t=[],n=[];return{clear:function(){n=null,t=null},notify:function(){var r=t=n;e((function(){for(var e=0;e<r.length;e++)r[e]()}))},get:function(){return n},subscribe:function(e){var r=!0;return n===t&&(n=t.slice()),n.push(e),function(){r&&null!==t&&(r=!1,n===t&&(n=t.slice()),n.splice(n.indexOf(e),1))}}}}var f=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=c,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=s())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=c)},e}();function p(e){var t=e.store,n=e.context,i=e.children,a=Object(r.useMemo)((function(){var e=new f(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),l=Object(r.useMemo)((function(){return t.getState()}),[t]);Object(r.useEffect)((function(){var e=a.subscription;return e.trySubscribe(),l!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,l]);var c=n||u;return o.a.createElement(c.Provider,{value:a},i)}p.propTypes={store:a.a.shape({subscribe:a.a.func.isRequired,dispatch:a.a.func.isRequired,getState:a.a.func.isRequired}),context:a.a.object,children:a.a.any};var d=p,h=n(28),m=n(69),v=n(122),y=n.n(v),g=n(70),b=n.n(g),w=n(137),E="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?r.useLayoutEffect:r.useEffect,x=[],S=[null,null];function T(e,t){var n=e[1];return[t.payload,n+1]}var O=function(){return[null,0]};function k(e,t){void 0===t&&(t={});var n=t,i=n.getDisplayName,a=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,l=n.methodName,c=void 0===l?"connectAdvanced":l,s=n.renderCountProp,p=void 0===s?void 0:s,d=n.shouldHandleStateChanges,v=void 0===d||d,g=n.storeKey,k=void 0===g?"store":g,_=n.withRef,P=void 0!==_&&_,F=n.forwardRef,C=void 0!==F&&F,j=n.context,R=void 0===j?u:j,D=Object(m.a)(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);b()(void 0===p,"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension"),b()(!P,"withRef is removed. To access the wrapped instance, use a ref on the connected component");b()("store"===k,"storeKey has been removed and does not do anything. To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. You may also pass a {context : MyContext} option to connect");var A=R;return function(t){var n=t.displayName||t.name||"Component",i=a(n),u=Object(h.a)({},D,{getDisplayName:a,methodName:c,renderCountProp:p,shouldHandleStateChanges:v,storeKey:k,displayName:i,wrappedComponentName:n,WrappedComponent:t}),l=D.pure;var s=l?r.useMemo:function(e){return e()};function d(n){var a=Object(r.useMemo)((function(){var e=n.forwardedRef,t=Object(m.a)(n,["forwardedRef"]);return[n.context,e,t]}),[n]),l=a[0],c=a[1],p=a[2],d=Object(r.useMemo)((function(){return l&&l.Consumer&&Object(w.isContextConsumer)(o.a.createElement(l.Consumer,null))?l:A}),[l,A]),y=Object(r.useContext)(d),g=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch),k=Boolean(y)&&Boolean(y.store);b()(g||k,'Could not find "store" in the context of "'+i+'". Either wrap the root component in a <Provider>, or pass a custom React context provider to <Provider> and the corresponding React context consumer to '+i+" in connect options.");var _=g?n.store:y.store,P=Object(r.useMemo)((function(){return function(t){return e(t.dispatch,u)}(_)}),[_]),F=Object(r.useMemo)((function(){if(!v)return S;var e=new f(_,g?null:y.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[_,g,y]),C=F[0],j=F[1],R=Object(r.useMemo)((function(){return g?y:Object(h.a)({},y,{subscription:C})}),[g,y,C]),D=Object(r.useReducer)(T,x,O),L=D[0][0],N=D[1];if(L&&L.error)throw L.error;var I=Object(r.useRef)(),M=Object(r.useRef)(p),U=Object(r.useRef)(),q=Object(r.useRef)(!1),z=s((function(){return U.current&&p===M.current?U.current:P(_.getState(),p)}),[_,L,p]);E((function(){M.current=p,I.current=z,q.current=!1,U.current&&(U.current=null,j())})),E((function(){if(v){var e=!1,t=null,n=function(){if(!e){var n,r,o=_.getState();try{n=P(o,M.current)}catch(e){r=e,t=e}r||(t=null),n===I.current?q.current||j():(I.current=n,U.current=n,q.current=!0,N({type:"STORE_UPDATED",payload:{error:r}}))}};C.onStateChange=n,C.trySubscribe(),n();return function(){if(e=!0,C.tryUnsubscribe(),C.onStateChange=null,t)throw t}}}),[_,C,P]);var H=Object(r.useMemo)((function(){return o.a.createElement(t,Object(h.a)({},z,{ref:c}))}),[c,t,z]);return Object(r.useMemo)((function(){return v?o.a.createElement(d.Provider,{value:R},H):H}),[d,H,R])}var g=l?o.a.memo(d):d;if(g.WrappedComponent=t,g.displayName=i,C){var _=o.a.forwardRef((function(e,t){return o.a.createElement(g,Object(h.a)({},e,{forwardedRef:t}))}));return _.displayName=i,_.WrappedComponent=t,y()(_,t)}return y()(g,t)}}var _=Object.prototype.hasOwnProperty;function P(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function F(e,t){if(P(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!_.call(t,n[o])||!P(e[n[o]],t[n[o]]))return!1;return!0}var C=n(79);function j(e){return function(t,n){var r=e(t,n);function o(){return r}return o.dependsOnOwnProps=!1,o}}function R(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function D(e,t){return function(t,n){n.displayName;var r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=R(e);var o=r(t,n);return"function"==typeof o&&(r.mapToProps=o,r.dependsOnOwnProps=R(o),o=r(t,n)),o},r}}var A=[function(e){return"function"==typeof e?D(e):void 0},function(e){return e?void 0:j((function(e){return{dispatch:e}}))},function(e){return e&&"object"==typeof e?j((function(t){return Object(C.bindActionCreators)(e,t)})):void 0}];var L=[function(e){return"function"==typeof e?D(e):void 0},function(e){return e?void 0:j((function(){return{}}))}];function N(e,t,n){return Object(h.a)({},n,{},e,{},t)}var I=[function(e){return"function"==typeof e?function(e){return function(t,n){n.displayName;var r,o=n.pure,i=n.areMergedPropsEqual,a=!1;return function(t,n,u){var l=e(t,n,u);return a?o&&i(l,r)||(r=l):(a=!0,r=l),r}}}(e):void 0},function(e){return e?void 0:function(){return N}}];function M(e,t,n,r){return function(o,i){return n(e(o,i),t(r,i),i)}}function U(e,t,n,r,o){var i,a,u,l,c,s=o.areStatesEqual,f=o.areOwnPropsEqual,p=o.areStatePropsEqual,d=!1;function h(o,d){var h,m,v=!f(d,a),y=!s(o,i);return i=o,a=d,v&&y?(u=e(i,a),t.dependsOnOwnProps&&(l=t(r,a)),c=n(u,l,a)):v?(e.dependsOnOwnProps&&(u=e(i,a)),t.dependsOnOwnProps&&(l=t(r,a)),c=n(u,l,a)):y?(h=e(i,a),m=!p(h,u),u=h,m&&(c=n(u,l,a)),c):c}return function(o,s){return d?h(o,s):(u=e(i=o,a=s),l=t(r,a),c=n(u,l,a),d=!0,c)}}function q(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,o=t.initMergeProps,i=Object(m.a)(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),a=n(e,i),u=r(e,i),l=o(e,i);return(i.pure?U:M)(a,u,l,e,i)}function z(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function H(e,t){return e===t}var G,B,$,V,W,K,Q,X,Y,J,Z,ee,te=($=(B=void 0===G?{}:G).connectHOC,V=void 0===$?k:$,W=B.mapStateToPropsFactories,K=void 0===W?L:W,Q=B.mapDispatchToPropsFactories,X=void 0===Q?A:Q,Y=B.mergePropsFactories,J=void 0===Y?I:Y,Z=B.selectorFactory,ee=void 0===Z?q:Z,function(e,t,n,r){void 0===r&&(r={});var o=r,i=o.pure,a=void 0===i||i,u=o.areStatesEqual,l=void 0===u?H:u,c=o.areOwnPropsEqual,s=void 0===c?F:c,f=o.areStatePropsEqual,p=void 0===f?F:f,d=o.areMergedPropsEqual,v=void 0===d?F:d,y=Object(m.a)(o,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),g=z(e,K,"mapStateToProps"),b=z(t,X,"mapDispatchToProps"),w=z(n,J,"mergeProps");return V(ee,Object(h.a)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:g,initMapDispatchToProps:b,initMergeProps:w,pure:a,areStatesEqual:l,areOwnPropsEqual:s,areStatePropsEqual:p,areMergedPropsEqual:v},y))});function ne(){var e=Object(r.useContext)(u);return b()(e,"could not find react-redux context value; please ensure the component is wrapped in a <Provider>"),e}function re(e){void 0===e&&(e=u);var t=e===u?ne:function(){return Object(r.useContext)(e)};return function(){return t().store}}var oe=re();!function(e){void 0===e&&(e=u);var t=e===u?oe:re(e)}();var ie=function(e,t){return e===t};!function(e){void 0===e&&(e=u);var t=e===u?ne:function(){return Object(r.useContext)(e)}}();var ae,ue=n(30);n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return te})),ae=ue.unstable_batchedUpdates,l=ae},function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var o=n(0),i=n.n(o),a=(n(1),n(46)),u=n(149),l=n(37);function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var s=n(151),f=n.n(s);n(137);function p(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var d=n(122),h=n.n(d);n.d(t,"a",(function(){return E})),n.d(t,"b",(function(){return y})),n.d(t,"c",(function(){return _})),n.d(t,"d",(function(){return v})),n.d(t,"e",(function(){return w})),n.d(t,"f",(function(){return P}));var m=function(e){var t=Object(u.a)();return t.displayName=e,t}("Router-History"),v=function(e){var t=Object(u.a)();return t.displayName=e,t}("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}r(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return i.a.createElement(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},i.a.createElement(m.Provider,{children:this.props.children||null,value:this.props.history}))},t}(i.a.Component);i.a.Component;i.a.Component;var g={},b=0;function w(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,i=void 0!==o&&o,a=n.strict,u=void 0!==a&&a,l=n.sensitive,c=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=g[n]||(g[n]={});if(r[e])return r[e];var o=[],i={regexp:f()(e,o,t),keys:o};return b<1e4&&(r[e]=i,b++),i}(n,{end:i,strict:u,sensitive:c}),o=r.regexp,a=r.keys,l=o.exec(e);if(!l)return null;var s=l[0],p=l.slice(1),d=e===s;return i&&!d?null:{path:n,url:"/"===n&&""===s?"/":s,isExact:d,params:a.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(v.Consumer,null,(function(t){t||Object(l.a)(!1);var n=e.props.location||t.location,r=c({},t,{location:n,match:e.props.computedMatch?e.props.computedMatch:e.props.path?w(n.pathname,e.props):t.match}),o=e.props,a=o.children,u=o.component,s=o.render;return Array.isArray(a)&&0===a.length&&(a=null),i.a.createElement(v.Provider,{value:r},r.match?a?"function"==typeof a?a(r):a:u?i.a.createElement(u,r):s?s(r):null:"function"==typeof a?a(r):null)}))},t}(i.a.Component);function x(e){return"/"===e.charAt(0)?e:"/"+e}function S(e,t){if(!e)return t;var n=x(e);return 0!==t.pathname.indexOf(n)?t:c({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:Object(a.e)(e)}function O(e){return function(){Object(l.a)(!1)}}function k(){}i.a.Component;var _=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(v.Consumer,null,(function(t){t||Object(l.a)(!1);var n,r,o=e.props.location||t.location;return i.a.Children.forEach(e.props.children,(function(e){if(null==r&&i.a.isValidElement(e)){n=e;var a=e.props.path||e.props.from;r=a?w(o.pathname,c({},e.props,{path:a})):t.match}})),r?i.a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(i.a.Component);function P(e){var t="withRouter("+(e.displayName||e.name)+")",n=function(t){var n=t.wrappedComponentRef,r=p(t,["wrappedComponentRef"]);return i.a.createElement(v.Consumer,null,(function(t){return t||Object(l.a)(!1),i.a.createElement(e,c({},r,t,{ref:n}))}))};return n.displayName=t,n.WrappedComponent=e,h()(n,e)}i.a.useContext},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"d",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"g",(function(){return u})),n.d(t,"i",(function(){return l})),n.d(t,"h",(function(){return c})),n.d(t,"f",(function(){return s})),n.d(t,"j",(function(){return f})),n.d(t,"e",(function(){return p})),n.d(t,"k",(function(){return d})),n.d(t,"n",(function(){return h})),n.d(t,"l",(function(){return m})),n.d(t,"m",(function(){return v})),n.d(t,"r",(function(){return y})),n.d(t,"t",(function(){return g})),n.d(t,"s",(function(){return b})),n.d(t,"q",(function(){return w})),n.d(t,"p",(function(){return E})),n.d(t,"o",(function(){return x}));var r="ADD_TO_CONSOLE",o="ADD_TO_RETRY_LIST",i="CLEAR_CONSOLE",a="CLEAR_BUTTON_CLICKED_AND_RETRY_LIST",u="GET_FILES_FROM_GITHUB",l="GET_FILES_FROM_GITHUB_SUCCESS",c="GET_FILES_FROM_GITHUB_FAILED",s="DOWNLOAD_FONTS_API_CALL",f="REQUEST_SENT_COUNTER",p="CLEAR_REQUEST_REMAINING_DATA",d=function(e,t,n){return{type:r,key:e,status:t,message:n}},h=function(){return{type:i}},m=function(e){return{type:o,name:e}},v=function(){return{type:a}},y=function(){return{type:u}},g=function(e){return{type:l,payload:e}},b=function(e){return{type:c,payload:e}},w=function(e){return{type:s,payload:e}},E=function(){return{type:f}},x=function(){return{type:p}}},function(e,t,n){var r=n(113),o=n(26),i=n(176);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(e,t,n){"use strict";var r=n(7),o=n(48).find,i=n(86),a=n(33),u=!0,l=a("find");"find"in[]&&Array(1).find((function(){u=!1})),r({target:"Array",proto:!0,forced:u||!l},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(e,t,n){var r=n(59),o=n(22);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(35),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(22);e.exports=function(e){return Object(r(e))}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=n(117).charAt,o=n(47),i=n(132),a=o.set,u=o.getterFor("String Iterator");i(String,"String",(function(e){a(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=u(this),n=t.string,o=t.index;return o>=n.length?{value:void 0,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){var r=n(4),o=n(14),i=n(9),a=n(50),u=n(65),l=n(47),c=l.get,s=l.enforce,f=String(String).split("String");(e.exports=function(e,t,n,u){var l=!!u&&!!u.unsafe,c=!!u&&!!u.enumerable,p=!!u&&!!u.noTargetGet;"function"==typeof n&&("string"!=typeof t||i(n,"name")||o(n,"name",t),s(n).source=f.join("string"==typeof t?t:"")),e!==r?(l?!p&&e[t]&&(c=!0):delete e[t],c?e[t]=n:o(e,t,n)):c?e[t]=n:a(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&c(this).source||u(this)}))},function(e,t,n){var r=n(104),o=n(4),i=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(26),o=n(8),i=n(5),a=n(97),u=RegExp.prototype,l=u.toString,c=i((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),s="toString"!=l.name;(c||s)&&r(RegExp.prototype,"toString",(function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in u)?a.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(187)},function(e,t,n){"use strict";var r=n(7),o=n(4),i=n(27),a=n(49),u=n(10),l=n(64),c=n(101),s=n(5),f=n(9),p=n(74),d=n(11),h=n(8),m=n(23),v=n(20),y=n(51),g=n(34),b=n(68),w=n(67),E=n(72),x=n(197),S=n(88),T=n(45),O=n(12),k=n(77),_=n(14),P=n(26),F=n(61),C=n(52),j=n(44),R=n(63),D=n(6),A=n(159),L=n(160),N=n(89),I=n(47),M=n(48).forEach,U=C("hidden"),q=D("toPrimitive"),z=I.set,H=I.getterFor("Symbol"),G=Object.prototype,B=o.Symbol,$=i("JSON","stringify"),V=T.f,W=O.f,K=x.f,Q=k.f,X=F("symbols"),Y=F("op-symbols"),J=F("string-to-symbol-registry"),Z=F("symbol-to-string-registry"),ee=F("wks"),te=o.QObject,ne=!te||!te.prototype||!te.prototype.findChild,re=u&&s((function(){return 7!=b(W({},"a",{get:function(){return W(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=V(G,t);r&&delete G[t],W(e,t,n),r&&e!==G&&W(G,t,r)}:W,oe=function(e,t){var n=X[e]=b(B.prototype);return z(n,{type:"Symbol",tag:e,description:t}),u||(n.description=t),n},ie=c?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof B},ae=function(e,t,n){e===G&&ae(Y,t,n),h(e);var r=y(t,!0);return h(n),f(X,r)?(n.enumerable?(f(e,U)&&e[U][r]&&(e[U][r]=!1),n=b(n,{enumerable:g(0,!1)})):(f(e,U)||W(e,U,g(1,{})),e[U][r]=!0),re(e,r,n)):W(e,r,n)},ue=function(e,t){h(e);var n=v(t),r=w(n).concat(fe(n));return M(r,(function(t){u&&!le.call(n,t)||ae(e,t,n[t])})),e},le=function(e){var t=y(e,!0),n=Q.call(this,t);return!(this===G&&f(X,t)&&!f(Y,t))&&(!(n||!f(this,t)||!f(X,t)||f(this,U)&&this[U][t])||n)},ce=function(e,t){var n=v(e),r=y(t,!0);if(n!==G||!f(X,r)||f(Y,r)){var o=V(n,r);return!o||!f(X,r)||f(n,U)&&n[U][r]||(o.enumerable=!0),o}},se=function(e){var t=K(v(e)),n=[];return M(t,(function(e){f(X,e)||f(j,e)||n.push(e)})),n},fe=function(e){var t=e===G,n=K(t?Y:v(e)),r=[];return M(n,(function(e){!f(X,e)||t&&!f(G,e)||r.push(X[e])})),r};(l||(P((B=function(){if(this instanceof B)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=R(e),n=function(e){this===G&&n.call(Y,e),f(this,U)&&f(this[U],t)&&(this[U][t]=!1),re(this,t,g(1,e))};return u&&ne&&re(G,t,{configurable:!0,set:n}),oe(t,e)}).prototype,"toString",(function(){return H(this).tag})),P(B,"withoutSetter",(function(e){return oe(R(e),e)})),k.f=le,O.f=ae,T.f=ce,E.f=x.f=se,S.f=fe,A.f=function(e){return oe(D(e),e)},u&&(W(B.prototype,"description",{configurable:!0,get:function(){return H(this).description}}),a||P(G,"propertyIsEnumerable",le,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:B}),M(w(ee),(function(e){L(e)})),r({target:"Symbol",stat:!0,forced:!l},{for:function(e){var t=String(e);if(f(J,t))return J[t];var n=B(t);return J[t]=n,Z[n]=t,n},keyFor:function(e){if(!ie(e))throw TypeError(e+" is not a symbol");if(f(Z,e))return Z[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),r({target:"Object",stat:!0,forced:!l,sham:!u},{create:function(e,t){return void 0===t?b(e):ue(b(e),t)},defineProperty:ae,defineProperties:ue,getOwnPropertyDescriptor:ce}),r({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:se,getOwnPropertySymbols:fe}),r({target:"Object",stat:!0,forced:s((function(){S.f(1)}))},{getOwnPropertySymbols:function(e){return S.f(m(e))}}),$)&&r({target:"JSON",stat:!0,forced:!l||s((function(){var e=B();return"[null]"!=$([e])||"{}"!=$({a:e})||"{}"!=$(Object(e))}))},{stringify:function(e,t,n){for(var r,o=[e],i=1;arguments.length>i;)o.push(arguments[i++]);if(r=t,(d(t)||void 0!==e)&&!ie(e))return p(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ie(t))return t}),o[1]=t,$.apply(null,o)}});B.prototype[q]||_(B.prototype,q,B.prototype.valueOf),N(B,"Symbol"),j[U]=!0},function(e,t,n){"use strict";var r=n(20),o=n(86),i=n(56),a=n(47),u=n(132),l=a.set,c=a.getterFor("Array Iterator");e.exports=u(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:r(e),index:0,kind:t})}),(function(){var e=c(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t,n){var r=n(10),o=n(5),i=n(9),a=Object.defineProperty,u={},l=function(e){throw e};e.exports=function(e,t){if(i(u,e))return u[e];t||(t={});var n=[][e],c=!!i(t,"ACCESSORS")&&t.ACCESSORS,s=i(t,0)?t[0]:l,f=i(t,1)?t[1]:void 0;return u[e]=!!n&&!o((function(){if(c&&!r)return!0;var e={length:-1};c?a(e,1,{enumerable:!0,get:l}):e[1]=1,n.call(e,s,f)}))}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r;!function(){"use strict";var o={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function i(e){return u(c(e),arguments)}function a(e,t){return i.apply(null,[e].concat(t||[]))}function u(e,t){var n,r,a,u,l,c,s,f,p,d=1,h=e.length,m="";for(r=0;r<h;r++)if("string"==typeof e[r])m+=e[r];else if("object"==typeof e[r]){if((u=e[r]).keys)for(n=t[d],a=0;a<u.keys.length;a++){if(null==n)throw new Error(i('[sprintf] Cannot access property "%s" of undefined value "%s"',u.keys[a],u.keys[a-1]));n=n[u.keys[a]]}else n=u.param_no?t[u.param_no]:t[d++];if(o.not_type.test(u.type)&&o.not_primitive.test(u.type)&&n instanceof Function&&(n=n()),o.numeric_arg.test(u.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(i("[sprintf] expecting number but found %T",n));switch(o.number.test(u.type)&&(f=n>=0),u.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,u.width?parseInt(u.width):0);break;case"e":n=u.precision?parseFloat(n).toExponential(u.precision):parseFloat(n).toExponential();break;case"f":n=u.precision?parseFloat(n).toFixed(u.precision):parseFloat(n);break;case"g":n=u.precision?String(Number(n.toPrecision(u.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=u.precision?n.substring(0,u.precision):n;break;case"t":n=String(!!n),n=u.precision?n.substring(0,u.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=u.precision?n.substring(0,u.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=u.precision?n.substring(0,u.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}o.json.test(u.type)?m+=n:(!o.number.test(u.type)||f&&!u.sign?p="":(p=f?"+":"-",n=n.toString().replace(o.sign,"")),c=u.pad_char?"0"===u.pad_char?"0":u.pad_char.charAt(1):" ",s=u.width-(p+n).length,l=u.width&&s>0?c.repeat(s):"",m+=u.align?p+n+l:"0"===c?p+l+n:l+p+n)}return m}var l=Object.create(null);function c(e){if(l[e])return l[e];for(var t,n=e,r=[],i=0;n;){if(null!==(t=o.text.exec(n)))r.push(t[0]);else if(null!==(t=o.modulo.exec(n)))r.push("%");else{if(null===(t=o.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var a=[],u=t[2],c=[];if(null===(c=o.key.exec(u)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(c[1]);""!==(u=u.substring(c[0].length));)if(null!==(c=o.key_access.exec(u)))a.push(c[1]);else{if(null===(c=o.index_access.exec(u)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(c[1])}t[2]=a}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return l[e]=r}t.sprintf=i,t.vsprintf=a,"undefined"!=typeof window&&(window.sprintf=i,window.vsprintf=a,void 0===(r=function(){return{sprintf:i,vsprintf:a}}.call(t,n,t,e))||(e.exports=r))}()},function(e,t,n){"use strict";t.a=function(e,t){if(!e)throw new Error("Invariant failed")}},function(e,t,n){"use strict";var r=n(7),o=n(10),i=n(4),a=n(9),u=n(11),l=n(12).f,c=n(102),s=i.Symbol;if(o&&"function"==typeof s&&(!("description"in s.prototype)||void 0!==s().description)){var f={},p=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof p?new s(e):void 0===e?s():s(e);return""===e&&(f[t]=!0),t};c(p,s);var d=p.prototype=s.prototype;d.constructor=p;var h=d.toString,m="Symbol(test)"==String(s("test")),v=/^Symbol\((.*)\)[^)]+$/;l(d,"description",{configurable:!0,get:function(){var e=u(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=m?t.slice(7,-1):t.replace(v,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},function(e,t,n){n(160)("iterator")},function(e,t,n){var r=n(4),o=n(162),i=n(32),a=n(14),u=n(6),l=u("iterator"),c=u("toStringTag"),s=i.values;for(var f in o){var p=r[f],d=p&&p.prototype;if(d){if(d[l]!==s)try{a(d,l,s)}catch(e){d[l]=s}if(d[c]||a(d,c,f),o[f])for(var h in i)if(d[h]!==i[h])try{a(d,h,i[h])}catch(e){d[h]=i[h]}}}},function(e,t,n){"use strict";var r=n(7),o=n(73);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r=n(7),o=n(48).map,i=n(90),a=n(33),u=i("map"),l=a("map");r({target:"Array",proto:!0,forced:!u||!l},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t){e.exports={}},function(e,t,n){var r=n(10),o=n(77),i=n(34),a=n(20),u=n(51),l=n(9),c=n(76),s=Object.getOwnPropertyDescriptor;t.f=r?s:function(e,t){if(e=a(e),t=u(t,!0),c)try{return s(e,t)}catch(e){}if(l(e,t))return i(!o.f.call(e,t),e[t])}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function o(e){return"/"===e.charAt(0)}function i(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}var a=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],a=t&&t.split("/")||[],u=e&&o(e),l=t&&o(t),c=u||l;if(e&&o(e)?a=r:r.length&&(a.pop(),a=a.concat(r)),!a.length)return"/";if(a.length){var s=a[a.length-1];n="."===s||".."===s||""===s}else n=!1;for(var f=0,p=a.length;p>=0;p--){var d=a[p];"."===d?i(a,p):".."===d?(i(a,p),f++):f&&(i(a,p),f--)}if(!c)for(;f--;f)a.unshift("..");!c||""===a[0]||a[0]&&o(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function u(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=u(t),o=u(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},c=n(37);function s(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function p(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function m(e,t,n,o){var i;"string"==typeof e?(i=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=r({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(i.key=n),o?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=a(i.pathname,o.pathname)):i.pathname=o.pathname:i.pathname||(i.pathname="/"),i}function v(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function y(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}n.d(t,"a",(function(){return E})),n.d(t,"b",(function(){return k})),n.d(t,"d",(function(){return P})),n.d(t,"c",(function(){return m})),n.d(t,"f",(function(){return v})),n.d(t,"e",(function(){return h}));var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function b(e,t){t(window.confirm(e))}function w(){try{return window.history.state||{}}catch(e){return{}}}function E(e){void 0===e&&(e={}),g||Object(c.a)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,i=!(-1===window.navigator.userAgent.indexOf("Trident")),a=e,u=a.forceRefresh,l=void 0!==u&&u,f=a.getUserConfirmation,v=void 0===f?b:f,E=a.keyLength,x=void 0===E?6:E,S=e.basename?d(s(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,o=window.location,i=o.pathname+o.search+o.hash;return S&&(i=p(i,S)),m(i,r,n)}function O(){return Math.random().toString(36).substr(2,x)}var k=y();function _(e){r(U,e),U.length=n.length,k.notifyListeners(U.location,U.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||j(T(e.state))}function F(){j(T(w()))}var C=!1;function j(e){if(C)C=!1,_();else{k.confirmTransitionTo(e,"POP",v,(function(t){t?_({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(C=!0,L(o))}(e)}))}}var R=T(w()),D=[R.key];function A(e){return S+h(e)}function L(e){n.go(e)}var N=0;function I(e){1===(N+=e)&&1===e?(window.addEventListener("popstate",P),i&&window.addEventListener("hashchange",F)):0===N&&(window.removeEventListener("popstate",P),i&&window.removeEventListener("hashchange",F))}var M=!1;var U={length:n.length,action:"POP",location:R,createHref:A,push:function(e,t){var r=m(e,t,O(),U.location);k.confirmTransitionTo(r,"PUSH",v,(function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.pushState({key:i,state:a},null,t),l)window.location.href=t;else{var u=D.indexOf(U.location.key),c=D.slice(0,u+1);c.push(r.key),D=c,_({action:"PUSH",location:r})}else window.location.href=t}}))},replace:function(e,t){var r=m(e,t,O(),U.location);k.confirmTransitionTo(r,"REPLACE",v,(function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.replaceState({key:i,state:a},null,t),l)window.location.replace(t);else{var u=D.indexOf(U.location.key);-1!==u&&(D[u]=r.key),_({action:"REPLACE",location:r})}else window.location.replace(t)}}))},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return M||(I(1),M=!0),function(){return M&&(M=!1,I(-1)),t()}},listen:function(e){var t=k.appendListener(e);return I(1),function(){I(-1),t()}}};return U}var x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+f(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:f,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function T(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function O(e){window.location.replace(S(window.location.href)+"#"+e)}function k(e){void 0===e&&(e={}),g||Object(c.a)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,i=void 0===o?b:o,a=n.hashType,u=void 0===a?"slash":a,l=e.basename?d(s(e.basename)):"",f=x[u],v=f.encodePath,w=f.decodePath;function E(){var e=w(T());return l&&(e=p(e,l)),m(e)}var k=y();function _(e){r(U,e),U.length=t.length,k.notifyListeners(U.location,U.action)}var P=!1,F=null;function C(){var e,t,n=T(),r=v(n);if(n!==r)O(r);else{var o=E(),a=U.location;if(!P&&(t=o,(e=a).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(F===h(o))return;F=null,function(e){if(P)P=!1,_();else{k.confirmTransitionTo(e,"POP",i,(function(t){t?_({action:"POP",location:e}):function(e){var t=U.location,n=A.lastIndexOf(h(t));-1===n&&(n=0);var r=A.lastIndexOf(h(e));-1===r&&(r=0);var o=n-r;o&&(P=!0,L(o))}(e)}))}}(o)}}var j=T(),R=v(j);j!==R&&O(R);var D=E(),A=[h(D)];function L(e){t.go(e)}var N=0;function I(e){1===(N+=e)&&1===e?window.addEventListener("hashchange",C):0===N&&window.removeEventListener("hashchange",C)}var M=!1;var U={length:t.length,action:"POP",location:D,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(l+h(e))},push:function(e,t){var n=m(e,void 0,void 0,U.location);k.confirmTransitionTo(n,"PUSH",i,(function(e){if(e){var t=h(n),r=v(l+t);if(T()!==r){F=t,function(e){window.location.hash=e}(r);var o=A.lastIndexOf(h(U.location)),i=A.slice(0,o+1);i.push(t),A=i,_({action:"PUSH",location:n})}else _()}}))},replace:function(e,t){var n=m(e,void 0,void 0,U.location);k.confirmTransitionTo(n,"REPLACE",i,(function(e){if(e){var t=h(n),r=v(l+t);T()!==r&&(F=t,O(r));var o=A.indexOf(h(U.location));-1!==o&&(A[o]=t),_({action:"REPLACE",location:n})}}))},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return M||(I(1),M=!0),function(){return M&&(M=!1,I(-1)),t()}},listen:function(e){var t=k.appendListener(e);return I(1),function(){I(-1),t()}}};return U}function _(e,t,n){return Math.min(Math.max(e,t),n)}function P(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,i=void 0===o?["/"]:o,a=t.initialIndex,u=void 0===a?0:a,l=t.keyLength,c=void 0===l?6:l,s=y();function f(e){r(w,e),w.length=w.entries.length,s.notifyListeners(w.location,w.action)}function p(){return Math.random().toString(36).substr(2,c)}var d=_(u,0,i.length-1),v=i.map((function(e){return m(e,void 0,"string"==typeof e?p():e.key||p())})),g=h;function b(e){var t=_(w.index+e,0,w.entries.length-1),r=w.entries[t];s.confirmTransitionTo(r,"POP",n,(function(e){e?f({action:"POP",location:r,index:t}):f()}))}var w={length:v.length,action:"POP",location:v[d],index:d,entries:v,createHref:g,push:function(e,t){var r=m(e,t,p(),w.location);s.confirmTransitionTo(r,"PUSH",n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),f({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=m(e,t,p(),w.location);s.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(w.entries[w.index]=r,f({action:"REPLACE",location:r}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),s.setPrompt(e)},listen:function(e){return s.appendListener(e)}};return w}},function(e,t,n){var r,o,i,a=n(114),u=n(4),l=n(11),c=n(14),s=n(9),f=n(52),p=n(44),d=u.WeakMap;if(a){var h=new d,m=h.get,v=h.has,y=h.set;r=function(e,t){return y.call(h,e,t),t},o=function(e){return m.call(h,e)||{}},i=function(e){return v.call(h,e)}}else{var g=f("state");p[g]=!0,r=function(e,t){return c(e,g,t),t},o=function(e){return s(e,g)?e[g]:{}},i=function(e){return s(e,g)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){var r=n(66),o=n(59),i=n(23),a=n(21),u=n(107),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,s=4==e,f=6==e,p=5==e||f;return function(d,h,m,v){for(var y,g,b=i(d),w=o(b),E=r(h,m,3),x=a(w.length),S=0,T=v||u,O=t?T(d,x):n?T(d,0):void 0;x>S;S++)if((p||S in w)&&(g=E(y=w[S],S,b),e))if(t)O[S]=g;else if(g)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:l.call(O,y)}else if(s)return!1;return f?-1:c||s?s:O}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6)}},function(e,t){e.exports=!1},function(e,t,n){var r=n(4),o=n(14);e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},function(e,t,n){var r=n(11);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var r=n(61),o=n(63),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));n(120);
2
  /**
3
  * @package Gravity PDF
4
  * @copyright Copyright (c) 2022, Blue Liquid Designs
1
+ !function(e){function t(t){for(var n,o,i=t[0],a=t[1],u=0,c=[];u<i.length;u++)o=i[u],Object.prototype.hasOwnProperty.call(r,o)&&r[o]&&c.push(r[o][0]),r[o]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(l&&l(t);c.length;)c.shift()()}var n={},r={2:0};function o(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.e=function(e){var t=[],n=r[e];if(0!==n)if(n)t.push(n[2]);else{var i=new Promise((function(t,o){n=r[e]=[t,o]}));t.push(n[2]=i);var a,u=document.createElement("script");u.charset="utf-8",u.timeout=120,o.nc&&u.setAttribute("nonce",o.nc),u.src=function(e){return o.p+"assets/js/chunk-"+({}[e]||e)+"."+{0:"e033d172e282e0a2b9cc",4:"3958577e9ba487662fcf",5:"4048e584cf68fa13efd8",6:"ef3565a14028638eb70f",7:"514921733ef2f6274a79",8:"c48910b68a8cb06a33ba",9:"4ab0fcd8be55c0868e3a",10:"d768793400e94cf88b98"}[e]+".js"}(e);var l=new Error;a=function(t){u.onerror=u.onload=null,clearTimeout(c);var n=r[e];if(0!==n){if(n){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",l.name="ChunkLoadError",l.type=o,l.request=i,n[1](l)}r[e]=void 0}};var c=setTimeout((function(){a({type:"timeout",target:u})}),12e4);u.onerror=u.onload=a,document.head.appendChild(u)}return Promise.all(t)},o.m=e,o.c=n,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="/home/runner/work/gravity-pdf/gravity-pdf/tmp/package/6.4.0-RC1/dist/",o.oe=function(e){throw console.error(e),e};var i=window.webpackJsonp=window.webpackJsonp||[],a=i.push.bind(i);i.push=t,i=i.slice();for(var u=0;u<i.length;u++)t(i[u]);var l=a;o(o.s=210)}([function(e,t,n){"use strict";e.exports=n(186)},function(e,t,n){e.exports=n(201)()},function(e,t){e.exports=jQuery},function(e,t,n){"use strict";n.d(t,"m",(function(){return r})),n.d(t,"o",(function(){return o})),n.d(t,"n",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return u})),n.d(t,"b",(function(){return l})),n.d(t,"j",(function(){return c})),n.d(t,"l",(function(){return s})),n.d(t,"k",(function(){return f})),n.d(t,"t",(function(){return p})),n.d(t,"i",(function(){return d})),n.d(t,"f",(function(){return h})),n.d(t,"h",(function(){return m})),n.d(t,"g",(function(){return v})),n.d(t,"d",(function(){return y})),n.d(t,"e",(function(){return g})),n.d(t,"q",(function(){return b})),n.d(t,"r",(function(){return w})),n.d(t,"s",(function(){return E})),n.d(t,"p",(function(){return x})),n.d(t,"A",(function(){return S})),n.d(t,"u",(function(){return T})),n.d(t,"z",(function(){return O})),n.d(t,"F",(function(){return k})),n.d(t,"y",(function(){return _})),n.d(t,"x",(function(){return P})),n.d(t,"v",(function(){return F})),n.d(t,"w",(function(){return C})),n.d(t,"D",(function(){return j})),n.d(t,"C",(function(){return R})),n.d(t,"E",(function(){return D})),n.d(t,"B",(function(){return A}));var r="GET_CUSTOM_FONT_LIST",o="GET_CUSTOM_FONT_LIST_SUCCESS",i="GET_CUSTOM_FONT_LIST_ERROR",a="ADD_FONT",u="ADD_FONT_SUCCESS",l="ADD_FONT_ERROR",c="EDIT_FONT",s="EDIT_FONT_SUCCESS",f="EDIT_FONT_ERROR",p="VALIDATION_ERROR",d="DELETE_VARIANT_ERROR",h="DELETE_FONT",m="DELETE_FONT_SUCCESS",v="DELETE_FONT_ERROR",y="CLEAR_ADD_FONT_MSG",g="CLEAR_DROPZONE_ERROR",b="RESET_SEARCH_RESULT",w="SEARCH_FONT_LIST",E="SELECT_FONT",x="MOVE_SELECTED_FONT_TO_TOP",S=function(){return{type:r}},T=function(e){return{type:a,payload:e}},O=function(e){return{type:c,payload:e}},k=function(){return{type:p}},_=function(e){return{type:d,payload:e}},P=function(e){return{type:h,payload:e}},F=function(){return{type:y}},C=function(e){return{type:g,payload:e}},j=function(e){return{type:w,payload:e}},R=function(){return{type:b}},D=function(e){return{type:E,payload:e}},A=function(e){return{type:x,payload:e}}},function(e,t,n){(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(84))},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(4),o=n(61),i=n(9),a=n(63),u=n(64),l=n(101),c=o("wks"),s=r.Symbol,f=l?s:s&&s.withoutSetter||a;e.exports=function(e){return i(c,e)||(u&&i(s,e)?c[e]=s[e]:c[e]=f("Symbol."+e)),c[e]}},function(e,t,n){var r=n(4),o=n(45).f,i=n(14),a=n(26),u=n(50),l=n(102),c=n(85);e.exports=function(e,t){var n,s,f,p,d,h=e.target,m=e.global,v=e.stat;if(n=m?r:v?r[h]||u(h,{}):(r[h]||{}).prototype)for(s in t){if(p=t[s],f=e.noTargetGet?(d=o(n,s))&&d.value:n[s],!c(m?s:h+(v?".":"#")+s,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;l(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(n,s,p,e)}}},function(e,t,n){var r=n(11);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(5);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(10),o=n(76),i=n(8),a=n(51),u=Object.defineProperty;t.f=r?u:function(e,t,n){if(i(e),t=a(t,!0),i(n),o)try{return u(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){"use strict";n.d(t,"f",(function(){return r})),n.d(t,"g",(function(){return o})),n.d(t,"a",(function(){return i})),n.d(t,"o",(function(){return a})),n.d(t,"d",(function(){return u})),n.d(t,"m",(function(){return l})),n.d(t,"n",(function(){return c})),n.d(t,"h",(function(){return s})),n.d(t,"j",(function(){return f})),n.d(t,"i",(function(){return p})),n.d(t,"b",(function(){return d})),n.d(t,"e",(function(){return h})),n.d(t,"l",(function(){return m})),n.d(t,"k",(function(){return v})),n.d(t,"c",(function(){return y})),n.d(t,"u",(function(){return g})),n.d(t,"v",(function(){return b})),n.d(t,"p",(function(){return w})),n.d(t,"E",(function(){return E})),n.d(t,"s",(function(){return x})),n.d(t,"B",(function(){return S})),n.d(t,"D",(function(){return T})),n.d(t,"C",(function(){return O})),n.d(t,"w",(function(){return k})),n.d(t,"y",(function(){return _})),n.d(t,"x",(function(){return P})),n.d(t,"q",(function(){return F})),n.d(t,"t",(function(){return C})),n.d(t,"A",(function(){return j})),n.d(t,"z",(function(){return R})),n.d(t,"r",(function(){return D}));var r="SEARCH_TEMPLATES",o="SELECT_TEMPLATE",i="ADD_TEMPLATE",a="UPDATE_TEMPLATE_PARAM",u="DELETE_TEMPLATE",l="UPDATE_SELECT_BOX",c="UPDATE_SELECT_BOX_SUCCESS",s="TEMPLATE_PROCESSING",f="TEMPLATE_PROCESSING_SUCCESS",p="TEMPLATE_PROCESSING_FAILED",d="CLEAR_TEMPLATE_PROCESSING",h="POST_TEMPLATE_UPLOAD_PROCESSING",m="TEMPLATE_UPLOAD_PROCESSING_SUCCESS",v="TEMPLATE_UPLOAD_PROCESSING_FAILED",y="CLEAR_TEMPLATE_UPLOAD_PROCESSING",g=function(e){return{type:r,text:e}},b=function(e){return{type:o,id:e}},w=function(e){return{type:i,template:e}},E=function(e,t,n){return{type:a,id:e,name:t,value:n}},x=function(e){return{type:u,id:e}},S=function(){return{type:l}},T=function(e){return{type:c,payload:e}},O=function(){return{type:"UPDATE_SELECT_BOX_FAILED"}},k=function(e){return{type:s,payload:e}},_=function(e){return{type:f,payload:e}},P=function(e){return{type:p,payload:e}},F=function(){return{type:d}},C=function(e,t){return{type:h,payload:{file:e,filename:t}}},j=function(e){return{type:m,payload:e}},R=function(e){return{type:v,payload:e}},D=function(){return{type:y}}},function(e,t,n){var r=n(10),o=n(12),i=n(34);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i),u=o.a.createContext(null);var l=function(e){e()},c={notify:function(){}};function s(){var e=l,t=[],n=[];return{clear:function(){n=null,t=null},notify:function(){var r=t=n;e((function(){for(var e=0;e<r.length;e++)r[e]()}))},get:function(){return n},subscribe:function(e){var r=!0;return n===t&&(n=t.slice()),n.push(e),function(){r&&null!==t&&(r=!1,n===t&&(n=t.slice()),n.splice(n.indexOf(e),1))}}}}var f=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=c,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=s())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=c)},e}();function p(e){var t=e.store,n=e.context,i=e.children,a=Object(r.useMemo)((function(){var e=new f(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),l=Object(r.useMemo)((function(){return t.getState()}),[t]);Object(r.useEffect)((function(){var e=a.subscription;return e.trySubscribe(),l!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,l]);var c=n||u;return o.a.createElement(c.Provider,{value:a},i)}p.propTypes={store:a.a.shape({subscribe:a.a.func.isRequired,dispatch:a.a.func.isRequired,getState:a.a.func.isRequired}),context:a.a.object,children:a.a.any};var d=p,h=n(28),m=n(69),v=n(122),y=n.n(v),g=n(70),b=n.n(g),w=n(137),E="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?r.useLayoutEffect:r.useEffect,x=[],S=[null,null];function T(e,t){var n=e[1];return[t.payload,n+1]}var O=function(){return[null,0]};function k(e,t){void 0===t&&(t={});var n=t,i=n.getDisplayName,a=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,l=n.methodName,c=void 0===l?"connectAdvanced":l,s=n.renderCountProp,p=void 0===s?void 0:s,d=n.shouldHandleStateChanges,v=void 0===d||d,g=n.storeKey,k=void 0===g?"store":g,_=n.withRef,P=void 0!==_&&_,F=n.forwardRef,C=void 0!==F&&F,j=n.context,R=void 0===j?u:j,D=Object(m.a)(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);b()(void 0===p,"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension"),b()(!P,"withRef is removed. To access the wrapped instance, use a ref on the connected component");b()("store"===k,"storeKey has been removed and does not do anything. To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. You may also pass a {context : MyContext} option to connect");var A=R;return function(t){var n=t.displayName||t.name||"Component",i=a(n),u=Object(h.a)({},D,{getDisplayName:a,methodName:c,renderCountProp:p,shouldHandleStateChanges:v,storeKey:k,displayName:i,wrappedComponentName:n,WrappedComponent:t}),l=D.pure;var s=l?r.useMemo:function(e){return e()};function d(n){var a=Object(r.useMemo)((function(){var e=n.forwardedRef,t=Object(m.a)(n,["forwardedRef"]);return[n.context,e,t]}),[n]),l=a[0],c=a[1],p=a[2],d=Object(r.useMemo)((function(){return l&&l.Consumer&&Object(w.isContextConsumer)(o.a.createElement(l.Consumer,null))?l:A}),[l,A]),y=Object(r.useContext)(d),g=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch),k=Boolean(y)&&Boolean(y.store);b()(g||k,'Could not find "store" in the context of "'+i+'". Either wrap the root component in a <Provider>, or pass a custom React context provider to <Provider> and the corresponding React context consumer to '+i+" in connect options.");var _=g?n.store:y.store,P=Object(r.useMemo)((function(){return function(t){return e(t.dispatch,u)}(_)}),[_]),F=Object(r.useMemo)((function(){if(!v)return S;var e=new f(_,g?null:y.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[_,g,y]),C=F[0],j=F[1],R=Object(r.useMemo)((function(){return g?y:Object(h.a)({},y,{subscription:C})}),[g,y,C]),D=Object(r.useReducer)(T,x,O),L=D[0][0],N=D[1];if(L&&L.error)throw L.error;var I=Object(r.useRef)(),M=Object(r.useRef)(p),U=Object(r.useRef)(),q=Object(r.useRef)(!1),z=s((function(){return U.current&&p===M.current?U.current:P(_.getState(),p)}),[_,L,p]);E((function(){M.current=p,I.current=z,q.current=!1,U.current&&(U.current=null,j())})),E((function(){if(v){var e=!1,t=null,n=function(){if(!e){var n,r,o=_.getState();try{n=P(o,M.current)}catch(e){r=e,t=e}r||(t=null),n===I.current?q.current||j():(I.current=n,U.current=n,q.current=!0,N({type:"STORE_UPDATED",payload:{error:r}}))}};C.onStateChange=n,C.trySubscribe(),n();return function(){if(e=!0,C.tryUnsubscribe(),C.onStateChange=null,t)throw t}}}),[_,C,P]);var H=Object(r.useMemo)((function(){return o.a.createElement(t,Object(h.a)({},z,{ref:c}))}),[c,t,z]);return Object(r.useMemo)((function(){return v?o.a.createElement(d.Provider,{value:R},H):H}),[d,H,R])}var g=l?o.a.memo(d):d;if(g.WrappedComponent=t,g.displayName=i,C){var _=o.a.forwardRef((function(e,t){return o.a.createElement(g,Object(h.a)({},e,{forwardedRef:t}))}));return _.displayName=i,_.WrappedComponent=t,y()(_,t)}return y()(g,t)}}var _=Object.prototype.hasOwnProperty;function P(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function F(e,t){if(P(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!_.call(t,n[o])||!P(e[n[o]],t[n[o]]))return!1;return!0}var C=n(79);function j(e){return function(t,n){var r=e(t,n);function o(){return r}return o.dependsOnOwnProps=!1,o}}function R(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function D(e,t){return function(t,n){n.displayName;var r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=R(e);var o=r(t,n);return"function"==typeof o&&(r.mapToProps=o,r.dependsOnOwnProps=R(o),o=r(t,n)),o},r}}var A=[function(e){return"function"==typeof e?D(e):void 0},function(e){return e?void 0:j((function(e){return{dispatch:e}}))},function(e){return e&&"object"==typeof e?j((function(t){return Object(C.bindActionCreators)(e,t)})):void 0}];var L=[function(e){return"function"==typeof e?D(e):void 0},function(e){return e?void 0:j((function(){return{}}))}];function N(e,t,n){return Object(h.a)({},n,{},e,{},t)}var I=[function(e){return"function"==typeof e?function(e){return function(t,n){n.displayName;var r,o=n.pure,i=n.areMergedPropsEqual,a=!1;return function(t,n,u){var l=e(t,n,u);return a?o&&i(l,r)||(r=l):(a=!0,r=l),r}}}(e):void 0},function(e){return e?void 0:function(){return N}}];function M(e,t,n,r){return function(o,i){return n(e(o,i),t(r,i),i)}}function U(e,t,n,r,o){var i,a,u,l,c,s=o.areStatesEqual,f=o.areOwnPropsEqual,p=o.areStatePropsEqual,d=!1;function h(o,d){var h,m,v=!f(d,a),y=!s(o,i);return i=o,a=d,v&&y?(u=e(i,a),t.dependsOnOwnProps&&(l=t(r,a)),c=n(u,l,a)):v?(e.dependsOnOwnProps&&(u=e(i,a)),t.dependsOnOwnProps&&(l=t(r,a)),c=n(u,l,a)):y?(h=e(i,a),m=!p(h,u),u=h,m&&(c=n(u,l,a)),c):c}return function(o,s){return d?h(o,s):(u=e(i=o,a=s),l=t(r,a),c=n(u,l,a),d=!0,c)}}function q(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,o=t.initMergeProps,i=Object(m.a)(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),a=n(e,i),u=r(e,i),l=o(e,i);return(i.pure?U:M)(a,u,l,e,i)}function z(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function H(e,t){return e===t}var G,B,$,V,W,K,Q,X,Y,J,Z,ee,te=($=(B=void 0===G?{}:G).connectHOC,V=void 0===$?k:$,W=B.mapStateToPropsFactories,K=void 0===W?L:W,Q=B.mapDispatchToPropsFactories,X=void 0===Q?A:Q,Y=B.mergePropsFactories,J=void 0===Y?I:Y,Z=B.selectorFactory,ee=void 0===Z?q:Z,function(e,t,n,r){void 0===r&&(r={});var o=r,i=o.pure,a=void 0===i||i,u=o.areStatesEqual,l=void 0===u?H:u,c=o.areOwnPropsEqual,s=void 0===c?F:c,f=o.areStatePropsEqual,p=void 0===f?F:f,d=o.areMergedPropsEqual,v=void 0===d?F:d,y=Object(m.a)(o,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),g=z(e,K,"mapStateToProps"),b=z(t,X,"mapDispatchToProps"),w=z(n,J,"mergeProps");return V(ee,Object(h.a)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:g,initMapDispatchToProps:b,initMergeProps:w,pure:a,areStatesEqual:l,areOwnPropsEqual:s,areStatePropsEqual:p,areMergedPropsEqual:v},y))});function ne(){var e=Object(r.useContext)(u);return b()(e,"could not find react-redux context value; please ensure the component is wrapped in a <Provider>"),e}function re(e){void 0===e&&(e=u);var t=e===u?ne:function(){return Object(r.useContext)(e)};return function(){return t().store}}var oe=re();!function(e){void 0===e&&(e=u);var t=e===u?oe:re(e)}();var ie=function(e,t){return e===t};!function(e){void 0===e&&(e=u);var t=e===u?ne:function(){return Object(r.useContext)(e)}}();var ae,ue=n(30);n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return te})),ae=ue.unstable_batchedUpdates,l=ae},function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var o=n(0),i=n.n(o),a=(n(1),n(46)),u=n(149),l=n(37);function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var s=n(151),f=n.n(s);n(137);function p(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var d=n(122),h=n.n(d);n.d(t,"a",(function(){return E})),n.d(t,"b",(function(){return y})),n.d(t,"c",(function(){return _})),n.d(t,"d",(function(){return v})),n.d(t,"e",(function(){return w})),n.d(t,"f",(function(){return P}));var m=function(e){var t=Object(u.a)();return t.displayName=e,t}("Router-History"),v=function(e){var t=Object(u.a)();return t.displayName=e,t}("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}r(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return i.a.createElement(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},i.a.createElement(m.Provider,{children:this.props.children||null,value:this.props.history}))},t}(i.a.Component);i.a.Component;i.a.Component;var g={},b=0;function w(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,i=void 0!==o&&o,a=n.strict,u=void 0!==a&&a,l=n.sensitive,c=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=g[n]||(g[n]={});if(r[e])return r[e];var o=[],i={regexp:f()(e,o,t),keys:o};return b<1e4&&(r[e]=i,b++),i}(n,{end:i,strict:u,sensitive:c}),o=r.regexp,a=r.keys,l=o.exec(e);if(!l)return null;var s=l[0],p=l.slice(1),d=e===s;return i&&!d?null:{path:n,url:"/"===n&&""===s?"/":s,isExact:d,params:a.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(v.Consumer,null,(function(t){t||Object(l.a)(!1);var n=e.props.location||t.location,r=c({},t,{location:n,match:e.props.computedMatch?e.props.computedMatch:e.props.path?w(n.pathname,e.props):t.match}),o=e.props,a=o.children,u=o.component,s=o.render;return Array.isArray(a)&&0===a.length&&(a=null),i.a.createElement(v.Provider,{value:r},r.match?a?"function"==typeof a?a(r):a:u?i.a.createElement(u,r):s?s(r):null:"function"==typeof a?a(r):null)}))},t}(i.a.Component);function x(e){return"/"===e.charAt(0)?e:"/"+e}function S(e,t){if(!e)return t;var n=x(e);return 0!==t.pathname.indexOf(n)?t:c({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:Object(a.e)(e)}function O(e){return function(){Object(l.a)(!1)}}function k(){}i.a.Component;var _=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(v.Consumer,null,(function(t){t||Object(l.a)(!1);var n,r,o=e.props.location||t.location;return i.a.Children.forEach(e.props.children,(function(e){if(null==r&&i.a.isValidElement(e)){n=e;var a=e.props.path||e.props.from;r=a?w(o.pathname,c({},e.props,{path:a})):t.match}})),r?i.a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(i.a.Component);function P(e){var t="withRouter("+(e.displayName||e.name)+")",n=function(t){var n=t.wrappedComponentRef,r=p(t,["wrappedComponentRef"]);return i.a.createElement(v.Consumer,null,(function(t){return t||Object(l.a)(!1),i.a.createElement(e,c({},r,t,{ref:n}))}))};return n.displayName=t,n.WrappedComponent=e,h()(n,e)}i.a.useContext},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"d",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"g",(function(){return u})),n.d(t,"i",(function(){return l})),n.d(t,"h",(function(){return c})),n.d(t,"f",(function(){return s})),n.d(t,"j",(function(){return f})),n.d(t,"e",(function(){return p})),n.d(t,"k",(function(){return d})),n.d(t,"n",(function(){return h})),n.d(t,"l",(function(){return m})),n.d(t,"m",(function(){return v})),n.d(t,"r",(function(){return y})),n.d(t,"t",(function(){return g})),n.d(t,"s",(function(){return b})),n.d(t,"q",(function(){return w})),n.d(t,"p",(function(){return E})),n.d(t,"o",(function(){return x}));var r="ADD_TO_CONSOLE",o="ADD_TO_RETRY_LIST",i="CLEAR_CONSOLE",a="CLEAR_BUTTON_CLICKED_AND_RETRY_LIST",u="GET_FILES_FROM_GITHUB",l="GET_FILES_FROM_GITHUB_SUCCESS",c="GET_FILES_FROM_GITHUB_FAILED",s="DOWNLOAD_FONTS_API_CALL",f="REQUEST_SENT_COUNTER",p="CLEAR_REQUEST_REMAINING_DATA",d=function(e,t,n){return{type:r,key:e,status:t,message:n}},h=function(){return{type:i}},m=function(e){return{type:o,name:e}},v=function(){return{type:a}},y=function(){return{type:u}},g=function(e){return{type:l,payload:e}},b=function(e){return{type:c,payload:e}},w=function(e){return{type:s,payload:e}},E=function(){return{type:f}},x=function(){return{type:p}}},function(e,t,n){var r=n(113),o=n(26),i=n(176);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(e,t,n){"use strict";var r=n(7),o=n(48).find,i=n(86),a=n(33),u=!0,l=a("find");"find"in[]&&Array(1).find((function(){u=!1})),r({target:"Array",proto:!0,forced:u||!l},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(e,t,n){var r=n(59),o=n(22);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(35),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(22);e.exports=function(e){return Object(r(e))}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=n(117).charAt,o=n(47),i=n(132),a=o.set,u=o.getterFor("String Iterator");i(String,"String",(function(e){a(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=u(this),n=t.string,o=t.index;return o>=n.length?{value:void 0,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){var r=n(4),o=n(14),i=n(9),a=n(50),u=n(65),l=n(47),c=l.get,s=l.enforce,f=String(String).split("String");(e.exports=function(e,t,n,u){var l=!!u&&!!u.unsafe,c=!!u&&!!u.enumerable,p=!!u&&!!u.noTargetGet;"function"==typeof n&&("string"!=typeof t||i(n,"name")||o(n,"name",t),s(n).source=f.join("string"==typeof t?t:"")),e!==r?(l?!p&&e[t]&&(c=!0):delete e[t],c?e[t]=n:o(e,t,n)):c?e[t]=n:a(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&c(this).source||u(this)}))},function(e,t,n){var r=n(104),o=n(4),i=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(26),o=n(8),i=n(5),a=n(97),u=RegExp.prototype,l=u.toString,c=i((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),s="toString"!=l.name;(c||s)&&r(RegExp.prototype,"toString",(function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in u)?a.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(187)},function(e,t,n){"use strict";var r=n(7),o=n(4),i=n(27),a=n(49),u=n(10),l=n(64),c=n(101),s=n(5),f=n(9),p=n(74),d=n(11),h=n(8),m=n(23),v=n(20),y=n(51),g=n(34),b=n(68),w=n(67),E=n(72),x=n(197),S=n(88),T=n(45),O=n(12),k=n(77),_=n(14),P=n(26),F=n(61),C=n(52),j=n(44),R=n(63),D=n(6),A=n(159),L=n(160),N=n(89),I=n(47),M=n(48).forEach,U=C("hidden"),q=D("toPrimitive"),z=I.set,H=I.getterFor("Symbol"),G=Object.prototype,B=o.Symbol,$=i("JSON","stringify"),V=T.f,W=O.f,K=x.f,Q=k.f,X=F("symbols"),Y=F("op-symbols"),J=F("string-to-symbol-registry"),Z=F("symbol-to-string-registry"),ee=F("wks"),te=o.QObject,ne=!te||!te.prototype||!te.prototype.findChild,re=u&&s((function(){return 7!=b(W({},"a",{get:function(){return W(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=V(G,t);r&&delete G[t],W(e,t,n),r&&e!==G&&W(G,t,r)}:W,oe=function(e,t){var n=X[e]=b(B.prototype);return z(n,{type:"Symbol",tag:e,description:t}),u||(n.description=t),n},ie=c?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof B},ae=function(e,t,n){e===G&&ae(Y,t,n),h(e);var r=y(t,!0);return h(n),f(X,r)?(n.enumerable?(f(e,U)&&e[U][r]&&(e[U][r]=!1),n=b(n,{enumerable:g(0,!1)})):(f(e,U)||W(e,U,g(1,{})),e[U][r]=!0),re(e,r,n)):W(e,r,n)},ue=function(e,t){h(e);var n=v(t),r=w(n).concat(fe(n));return M(r,(function(t){u&&!le.call(n,t)||ae(e,t,n[t])})),e},le=function(e){var t=y(e,!0),n=Q.call(this,t);return!(this===G&&f(X,t)&&!f(Y,t))&&(!(n||!f(this,t)||!f(X,t)||f(this,U)&&this[U][t])||n)},ce=function(e,t){var n=v(e),r=y(t,!0);if(n!==G||!f(X,r)||f(Y,r)){var o=V(n,r);return!o||!f(X,r)||f(n,U)&&n[U][r]||(o.enumerable=!0),o}},se=function(e){var t=K(v(e)),n=[];return M(t,(function(e){f(X,e)||f(j,e)||n.push(e)})),n},fe=function(e){var t=e===G,n=K(t?Y:v(e)),r=[];return M(n,(function(e){!f(X,e)||t&&!f(G,e)||r.push(X[e])})),r};(l||(P((B=function(){if(this instanceof B)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=R(e),n=function(e){this===G&&n.call(Y,e),f(this,U)&&f(this[U],t)&&(this[U][t]=!1),re(this,t,g(1,e))};return u&&ne&&re(G,t,{configurable:!0,set:n}),oe(t,e)}).prototype,"toString",(function(){return H(this).tag})),P(B,"withoutSetter",(function(e){return oe(R(e),e)})),k.f=le,O.f=ae,T.f=ce,E.f=x.f=se,S.f=fe,A.f=function(e){return oe(D(e),e)},u&&(W(B.prototype,"description",{configurable:!0,get:function(){return H(this).description}}),a||P(G,"propertyIsEnumerable",le,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:B}),M(w(ee),(function(e){L(e)})),r({target:"Symbol",stat:!0,forced:!l},{for:function(e){var t=String(e);if(f(J,t))return J[t];var n=B(t);return J[t]=n,Z[n]=t,n},keyFor:function(e){if(!ie(e))throw TypeError(e+" is not a symbol");if(f(Z,e))return Z[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),r({target:"Object",stat:!0,forced:!l,sham:!u},{create:function(e,t){return void 0===t?b(e):ue(b(e),t)},defineProperty:ae,defineProperties:ue,getOwnPropertyDescriptor:ce}),r({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:se,getOwnPropertySymbols:fe}),r({target:"Object",stat:!0,forced:s((function(){S.f(1)}))},{getOwnPropertySymbols:function(e){return S.f(m(e))}}),$)&&r({target:"JSON",stat:!0,forced:!l||s((function(){var e=B();return"[null]"!=$([e])||"{}"!=$({a:e})||"{}"!=$(Object(e))}))},{stringify:function(e,t,n){for(var r,o=[e],i=1;arguments.length>i;)o.push(arguments[i++]);if(r=t,(d(t)||void 0!==e)&&!ie(e))return p(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ie(t))return t}),o[1]=t,$.apply(null,o)}});B.prototype[q]||_(B.prototype,q,B.prototype.valueOf),N(B,"Symbol"),j[U]=!0},function(e,t,n){"use strict";var r=n(20),o=n(86),i=n(56),a=n(47),u=n(132),l=a.set,c=a.getterFor("Array Iterator");e.exports=u(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:r(e),index:0,kind:t})}),(function(){var e=c(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t,n){var r=n(10),o=n(5),i=n(9),a=Object.defineProperty,u={},l=function(e){throw e};e.exports=function(e,t){if(i(u,e))return u[e];t||(t={});var n=[][e],c=!!i(t,"ACCESSORS")&&t.ACCESSORS,s=i(t,0)?t[0]:l,f=i(t,1)?t[1]:void 0;return u[e]=!!n&&!o((function(){if(c&&!r)return!0;var e={length:-1};c?a(e,1,{enumerable:!0,get:l}):e[1]=1,n.call(e,s,f)}))}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r;!function(){"use strict";var o={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function i(e){return u(c(e),arguments)}function a(e,t){return i.apply(null,[e].concat(t||[]))}function u(e,t){var n,r,a,u,l,c,s,f,p,d=1,h=e.length,m="";for(r=0;r<h;r++)if("string"==typeof e[r])m+=e[r];else if("object"==typeof e[r]){if((u=e[r]).keys)for(n=t[d],a=0;a<u.keys.length;a++){if(null==n)throw new Error(i('[sprintf] Cannot access property "%s" of undefined value "%s"',u.keys[a],u.keys[a-1]));n=n[u.keys[a]]}else n=u.param_no?t[u.param_no]:t[d++];if(o.not_type.test(u.type)&&o.not_primitive.test(u.type)&&n instanceof Function&&(n=n()),o.numeric_arg.test(u.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(i("[sprintf] expecting number but found %T",n));switch(o.number.test(u.type)&&(f=n>=0),u.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,u.width?parseInt(u.width):0);break;case"e":n=u.precision?parseFloat(n).toExponential(u.precision):parseFloat(n).toExponential();break;case"f":n=u.precision?parseFloat(n).toFixed(u.precision):parseFloat(n);break;case"g":n=u.precision?String(Number(n.toPrecision(u.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=u.precision?n.substring(0,u.precision):n;break;case"t":n=String(!!n),n=u.precision?n.substring(0,u.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=u.precision?n.substring(0,u.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=u.precision?n.substring(0,u.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}o.json.test(u.type)?m+=n:(!o.number.test(u.type)||f&&!u.sign?p="":(p=f?"+":"-",n=n.toString().replace(o.sign,"")),c=u.pad_char?"0"===u.pad_char?"0":u.pad_char.charAt(1):" ",s=u.width-(p+n).length,l=u.width&&s>0?c.repeat(s):"",m+=u.align?p+n+l:"0"===c?p+l+n:l+p+n)}return m}var l=Object.create(null);function c(e){if(l[e])return l[e];for(var t,n=e,r=[],i=0;n;){if(null!==(t=o.text.exec(n)))r.push(t[0]);else if(null!==(t=o.modulo.exec(n)))r.push("%");else{if(null===(t=o.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var a=[],u=t[2],c=[];if(null===(c=o.key.exec(u)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(c[1]);""!==(u=u.substring(c[0].length));)if(null!==(c=o.key_access.exec(u)))a.push(c[1]);else{if(null===(c=o.index_access.exec(u)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(c[1])}t[2]=a}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return l[e]=r}t.sprintf=i,t.vsprintf=a,"undefined"!=typeof window&&(window.sprintf=i,window.vsprintf=a,void 0===(r=function(){return{sprintf:i,vsprintf:a}}.call(t,n,t,e))||(e.exports=r))}()},function(e,t,n){"use strict";t.a=function(e,t){if(!e)throw new Error("Invariant failed")}},function(e,t,n){"use strict";var r=n(7),o=n(10),i=n(4),a=n(9),u=n(11),l=n(12).f,c=n(102),s=i.Symbol;if(o&&"function"==typeof s&&(!("description"in s.prototype)||void 0!==s().description)){var f={},p=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof p?new s(e):void 0===e?s():s(e);return""===e&&(f[t]=!0),t};c(p,s);var d=p.prototype=s.prototype;d.constructor=p;var h=d.toString,m="Symbol(test)"==String(s("test")),v=/^Symbol\((.*)\)[^)]+$/;l(d,"description",{configurable:!0,get:function(){var e=u(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=m?t.slice(7,-1):t.replace(v,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},function(e,t,n){n(160)("iterator")},function(e,t,n){var r=n(4),o=n(162),i=n(32),a=n(14),u=n(6),l=u("iterator"),c=u("toStringTag"),s=i.values;for(var f in o){var p=r[f],d=p&&p.prototype;if(d){if(d[l]!==s)try{a(d,l,s)}catch(e){d[l]=s}if(d[c]||a(d,c,f),o[f])for(var h in i)if(d[h]!==i[h])try{a(d,h,i[h])}catch(e){d[h]=i[h]}}}},function(e,t,n){"use strict";var r=n(7),o=n(73);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r=n(7),o=n(48).map,i=n(90),a=n(33),u=i("map"),l=a("map");r({target:"Array",proto:!0,forced:!u||!l},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t){e.exports={}},function(e,t,n){var r=n(10),o=n(77),i=n(34),a=n(20),u=n(51),l=n(9),c=n(76),s=Object.getOwnPropertyDescriptor;t.f=r?s:function(e,t){if(e=a(e),t=u(t,!0),c)try{return s(e,t)}catch(e){}if(l(e,t))return i(!o.f.call(e,t),e[t])}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function o(e){return"/"===e.charAt(0)}function i(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}var a=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],a=t&&t.split("/")||[],u=e&&o(e),l=t&&o(t),c=u||l;if(e&&o(e)?a=r:r.length&&(a.pop(),a=a.concat(r)),!a.length)return"/";if(a.length){var s=a[a.length-1];n="."===s||".."===s||""===s}else n=!1;for(var f=0,p=a.length;p>=0;p--){var d=a[p];"."===d?i(a,p):".."===d?(i(a,p),f++):f&&(i(a,p),f--)}if(!c)for(;f--;f)a.unshift("..");!c||""===a[0]||a[0]&&o(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function u(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=u(t),o=u(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},c=n(37);function s(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function p(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function m(e,t,n,o){var i;"string"==typeof e?(i=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=r({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(i.key=n),o?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=a(i.pathname,o.pathname)):i.pathname=o.pathname:i.pathname||(i.pathname="/"),i}function v(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function y(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}n.d(t,"a",(function(){return E})),n.d(t,"b",(function(){return k})),n.d(t,"d",(function(){return P})),n.d(t,"c",(function(){return m})),n.d(t,"f",(function(){return v})),n.d(t,"e",(function(){return h}));var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function b(e,t){t(window.confirm(e))}function w(){try{return window.history.state||{}}catch(e){return{}}}function E(e){void 0===e&&(e={}),g||Object(c.a)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,i=!(-1===window.navigator.userAgent.indexOf("Trident")),a=e,u=a.forceRefresh,l=void 0!==u&&u,f=a.getUserConfirmation,v=void 0===f?b:f,E=a.keyLength,x=void 0===E?6:E,S=e.basename?d(s(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,o=window.location,i=o.pathname+o.search+o.hash;return S&&(i=p(i,S)),m(i,r,n)}function O(){return Math.random().toString(36).substr(2,x)}var k=y();function _(e){r(U,e),U.length=n.length,k.notifyListeners(U.location,U.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||j(T(e.state))}function F(){j(T(w()))}var C=!1;function j(e){if(C)C=!1,_();else{k.confirmTransitionTo(e,"POP",v,(function(t){t?_({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(C=!0,L(o))}(e)}))}}var R=T(w()),D=[R.key];function A(e){return S+h(e)}function L(e){n.go(e)}var N=0;function I(e){1===(N+=e)&&1===e?(window.addEventListener("popstate",P),i&&window.addEventListener("hashchange",F)):0===N&&(window.removeEventListener("popstate",P),i&&window.removeEventListener("hashchange",F))}var M=!1;var U={length:n.length,action:"POP",location:R,createHref:A,push:function(e,t){var r=m(e,t,O(),U.location);k.confirmTransitionTo(r,"PUSH",v,(function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.pushState({key:i,state:a},null,t),l)window.location.href=t;else{var u=D.indexOf(U.location.key),c=D.slice(0,u+1);c.push(r.key),D=c,_({action:"PUSH",location:r})}else window.location.href=t}}))},replace:function(e,t){var r=m(e,t,O(),U.location);k.confirmTransitionTo(r,"REPLACE",v,(function(e){if(e){var t=A(r),i=r.key,a=r.state;if(o)if(n.replaceState({key:i,state:a},null,t),l)window.location.replace(t);else{var u=D.indexOf(U.location.key);-1!==u&&(D[u]=r.key),_({action:"REPLACE",location:r})}else window.location.replace(t)}}))},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return M||(I(1),M=!0),function(){return M&&(M=!1,I(-1)),t()}},listen:function(e){var t=k.appendListener(e);return I(1),function(){I(-1),t()}}};return U}var x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+f(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:f,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function T(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function O(e){window.location.replace(S(window.location.href)+"#"+e)}function k(e){void 0===e&&(e={}),g||Object(c.a)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,i=void 0===o?b:o,a=n.hashType,u=void 0===a?"slash":a,l=e.basename?d(s(e.basename)):"",f=x[u],v=f.encodePath,w=f.decodePath;function E(){var e=w(T());return l&&(e=p(e,l)),m(e)}var k=y();function _(e){r(U,e),U.length=t.length,k.notifyListeners(U.location,U.action)}var P=!1,F=null;function C(){var e,t,n=T(),r=v(n);if(n!==r)O(r);else{var o=E(),a=U.location;if(!P&&(t=o,(e=a).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(F===h(o))return;F=null,function(e){if(P)P=!1,_();else{k.confirmTransitionTo(e,"POP",i,(function(t){t?_({action:"POP",location:e}):function(e){var t=U.location,n=A.lastIndexOf(h(t));-1===n&&(n=0);var r=A.lastIndexOf(h(e));-1===r&&(r=0);var o=n-r;o&&(P=!0,L(o))}(e)}))}}(o)}}var j=T(),R=v(j);j!==R&&O(R);var D=E(),A=[h(D)];function L(e){t.go(e)}var N=0;function I(e){1===(N+=e)&&1===e?window.addEventListener("hashchange",C):0===N&&window.removeEventListener("hashchange",C)}var M=!1;var U={length:t.length,action:"POP",location:D,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(l+h(e))},push:function(e,t){var n=m(e,void 0,void 0,U.location);k.confirmTransitionTo(n,"PUSH",i,(function(e){if(e){var t=h(n),r=v(l+t);if(T()!==r){F=t,function(e){window.location.hash=e}(r);var o=A.lastIndexOf(h(U.location)),i=A.slice(0,o+1);i.push(t),A=i,_({action:"PUSH",location:n})}else _()}}))},replace:function(e,t){var n=m(e,void 0,void 0,U.location);k.confirmTransitionTo(n,"REPLACE",i,(function(e){if(e){var t=h(n),r=v(l+t);T()!==r&&(F=t,O(r));var o=A.indexOf(h(U.location));-1!==o&&(A[o]=t),_({action:"REPLACE",location:n})}}))},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(e){void 0===e&&(e=!1);var t=k.setPrompt(e);return M||(I(1),M=!0),function(){return M&&(M=!1,I(-1)),t()}},listen:function(e){var t=k.appendListener(e);return I(1),function(){I(-1),t()}}};return U}function _(e,t,n){return Math.min(Math.max(e,t),n)}function P(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,i=void 0===o?["/"]:o,a=t.initialIndex,u=void 0===a?0:a,l=t.keyLength,c=void 0===l?6:l,s=y();function f(e){r(w,e),w.length=w.entries.length,s.notifyListeners(w.location,w.action)}function p(){return Math.random().toString(36).substr(2,c)}var d=_(u,0,i.length-1),v=i.map((function(e){return m(e,void 0,"string"==typeof e?p():e.key||p())})),g=h;function b(e){var t=_(w.index+e,0,w.entries.length-1),r=w.entries[t];s.confirmTransitionTo(r,"POP",n,(function(e){e?f({action:"POP",location:r,index:t}):f()}))}var w={length:v.length,action:"POP",location:v[d],index:d,entries:v,createHref:g,push:function(e,t){var r=m(e,t,p(),w.location);s.confirmTransitionTo(r,"PUSH",n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),f({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=m(e,t,p(),w.location);s.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(w.entries[w.index]=r,f({action:"REPLACE",location:r}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),s.setPrompt(e)},listen:function(e){return s.appendListener(e)}};return w}},function(e,t,n){var r,o,i,a=n(114),u=n(4),l=n(11),c=n(14),s=n(9),f=n(52),p=n(44),d=u.WeakMap;if(a){var h=new d,m=h.get,v=h.has,y=h.set;r=function(e,t){return y.call(h,e,t),t},o=function(e){return m.call(h,e)||{}},i=function(e){return v.call(h,e)}}else{var g=f("state");p[g]=!0,r=function(e,t){return c(e,g,t),t},o=function(e){return s(e,g)?e[g]:{}},i=function(e){return s(e,g)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){var r=n(66),o=n(59),i=n(23),a=n(21),u=n(107),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,s=4==e,f=6==e,p=5==e||f;return function(d,h,m,v){for(var y,g,b=i(d),w=o(b),E=r(h,m,3),x=a(w.length),S=0,T=v||u,O=t?T(d,x):n?T(d,0):void 0;x>S;S++)if((p||S in w)&&(g=E(y=w[S],S,b),e))if(t)O[S]=g;else if(g)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:l.call(O,y)}else if(s)return!1;return f?-1:c||s?s:O}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6)}},function(e,t){e.exports=!1},function(e,t,n){var r=n(4),o=n(14);e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},function(e,t,n){var r=n(11);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var r=n(61),o=n(63),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));n(120);
2
  /**
3
  * @package Gravity PDF
4
  * @copyright Copyright (c) 2022, Blue Liquid Designs
dist/assets/js/gfpdf-entries.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="/home/runner/work/gravity-pdf/gravity-pdf/tmp/package/6.3.1/dist/",r(r.s=209)}([,,,,function(t,n,r){(function(n){var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n&&n)||Function("return this")()}).call(this,r(84))},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){var e=r(4),o=r(61),i=r(9),u=r(63),c=r(64),f=r(101),a=o("wks"),s=e.Symbol,p=f?s:s&&s.withoutSetter||u;t.exports=function(t){return i(a,t)||(c&&i(s,t)?a[t]=s[t]:a[t]=p("Symbol."+t)),a[t]}},function(t,n,r){var e=r(4),o=r(45).f,i=r(14),u=r(26),c=r(50),f=r(102),a=r(85);t.exports=function(t,n){var r,s,p,l,v,y=t.target,d=t.global,h=t.stat;if(r=d?e:h?e[y]||c(y,{}):(e[y]||{}).prototype)for(s in n){if(l=n[s],p=t.noTargetGet?(v=o(r,s))&&v.value:r[s],!a(d?s:y+(h?".":"#")+s,t.forced)&&void 0!==p){if(typeof l==typeof p)continue;f(l,p)}(t.sham||p&&p.sham)&&i(l,"sham",!0),u(r,s,l,t)}}},function(t,n,r){var e=r(11);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(5);t.exports=!e((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,r){var e=r(10),o=r(76),i=r(8),u=r(51),c=Object.defineProperty;n.f=e?c:function(t,n,r){if(i(t),n=u(n,!0),i(r),o)try{return c(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},,function(t,n,r){var e=r(10),o=r(12),i=r(34);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},,,,,function(t,n,r){"use strict";var e=r(7),o=r(48).find,i=r(86),u=r(33),c=!0,f=u("find");"find"in[]&&Array(1).find((function(){c=!1})),e({target:"Array",proto:!0,forced:c||!f},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(t,n,r){var e=r(59),o=r(22);t.exports=function(t){return e(o(t))}},function(t,n,r){var e=r(35),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(22);t.exports=function(t){return Object(e(t))}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},,function(t,n,r){var e=r(4),o=r(14),i=r(9),u=r(50),c=r(65),f=r(47),a=f.get,s=f.enforce,p=String(String).split("String");(t.exports=function(t,n,r,c){var f=!!c&&!!c.unsafe,a=!!c&&!!c.enumerable,l=!!c&&!!c.noTargetGet;"function"==typeof r&&("string"!=typeof n||i(r,"name")||o(r,"name",n),s(r).source=p.join("string"==typeof n?n:"")),t!==e?(f?!l&&t[n]&&(a=!0):delete t[n],a?t[n]=r:o(t,n,r)):a?t[n]=r:u(n,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&a(this).source||c(this)}))},function(t,n,r){var e=r(104),o=r(4),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(e[t])||i(o[t]):e[t]&&e[t][n]||o[t]&&o[t][n]}},,,,,,function(t,n,r){var e=r(10),o=r(5),i=r(9),u=Object.defineProperty,c={},f=function(t){throw t};t.exports=function(t,n){if(i(c,t))return c[t];n||(n={});var r=[][t],a=!!i(n,"ACCESSORS")&&n.ACCESSORS,s=i(n,0)?n[0]:f,p=i(n,1)?n[1]:void 0;return c[t]=!!r&&!o((function(){if(a&&!e)return!0;var t={length:-1};a?u(t,1,{enumerable:!0,get:f}):t[1]=1,r.call(t,s,p)}))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},,,,,,,,function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,n){t.exports={}},function(t,n,r){var e=r(10),o=r(77),i=r(34),u=r(20),c=r(51),f=r(9),a=r(76),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=u(t),n=c(n,!0),a)try{return s(t,n)}catch(t){}if(f(t,n))return i(!o.f.call(t,n),t[n])}},,function(t,n,r){var e,o,i,u=r(114),c=r(4),f=r(11),a=r(14),s=r(9),p=r(52),l=r(44),v=c.WeakMap;if(u){var y=new v,d=y.get,h=y.has,x=y.set;e=function(t,n){return x.call(y,t,n),n},o=function(t){return d.call(y,t)||{}},i=function(t){return h.call(y,t)}}else{var b=p("state");l[b]=!0,e=function(t,n){return a(t,b,n),n},o=function(t){return s(t,b)?t[b]:{}},i=function(t){return s(t,b)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!f(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},function(t,n,r){var e=r(66),o=r(59),i=r(23),u=r(21),c=r(107),f=[].push,a=function(t){var n=1==t,r=2==t,a=3==t,s=4==t,p=6==t,l=5==t||p;return function(v,y,d,h){for(var x,b,g=i(v),m=o(g),O=e(y,d,3),S=u(m.length),w=0,j=h||c,P=n?j(v,S):r?j(v,0):void 0;S>w;w++)if((l||w in m)&&(b=O(x=m[w],w,g),t))if(n)P[w]=b;else if(b)switch(t){case 3:return!0;case 5:return x;case 6:return w;case 2:f.call(P,x)}else if(s)return!1;return p?-1:a||s?s:P}};t.exports={forEach:a(0),map:a(1),filter:a(2),some:a(3),every:a(4),find:a(5),findIndex:a(6)}},function(t,n){t.exports=!1},function(t,n,r){var e=r(4),o=r(14);t.exports=function(t,n){try{o(e,t,n)}catch(r){e[t]=n}return n}},function(t,n,r){var e=r(11);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n,r){var e=r(61),o=r(63),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},,,,,,function(t,n,r){var e=r(5),o=r(24),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},,function(t,n,r){var e=r(49),o=r(75);(t.exports=function(t,n){return o[t]||(o[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.6.5",mode:e?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,n,r){var e=r(4),o=r(11),i=e.document,u=o(i)&&o(i.createElement);t.exports=function(t){return u?i.createElement(t):{}}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+e).toString(36)}},function(t,n,r){var e=r(5);t.exports=!!Object.getOwnPropertySymbols&&!e((function(){return!String(Symbol())}))},function(t,n,r){var e=r(75),o=Function.toString;"function"!=typeof e.inspectSource&&(e.inspectSource=function(t){return o.call(t)}),t.exports=e.inspectSource},function(t,n,r){var e=r(43);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 0:return function(){return t.call(n)};case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n,r){var e=r(78),o=r(53);t.exports=Object.keys||function(t){return e(t,o)}},function(t,n,r){var e,o=r(8),i=r(118),u=r(53),c=r(44),f=r(106),a=r(62),s=r(52),p=s("IE_PROTO"),l=function(){},v=function(t){return"<script>"+t+"<\/script>"},y=function(){try{e=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,n;y=e?function(t){t.write(v("")),t.close();var n=t.parentWindow.Object;return t=null,n}(e):((n=a("iframe")).style.display="none",f.appendChild(n),n.src=String("javascript:"),(t=n.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F);for(var r=u.length;r--;)delete y.prototype[u[r]];return y()};c[p]=!0,t.exports=Object.create||function(t,n){var r;return null!==t?(l.prototype=o(t),r=new l,l.prototype=null,r[p]=t):r=y(),void 0===n?r:i(r,n)}},,,,function(t,n,r){var e=r(78),o=r(53).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},,function(t,n,r){var e=r(24);t.exports=Array.isArray||function(t){return"Array"==e(t)}},function(t,n,r){var e=r(4),o=r(50),i=e["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},function(t,n,r){var e=r(10),o=r(5),i=r(62);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,n,r){"use strict";var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:e},function(t,n,r){var e=r(9),o=r(20),i=r(96).indexOf,u=r(44);t.exports=function(t,n){var r,c=o(t),f=0,a=[];for(r in c)!e(u,r)&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~i(a,r)||a.push(r));return a}},,,,,,function(t,n){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,n,r){var e=r(5),o=/#|\.prototype\./,i=function(t,n){var r=c[u(t)];return r==a||r!=f&&("function"==typeof n?e(n):!!n)},u=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},f=i.NATIVE="N",a=i.POLYFILL="P";t.exports=i},function(t,n,r){var e=r(6),o=r(68),i=r(12),u=e("unscopables"),c=Array.prototype;null==c[u]&&i.f(c,u,{configurable:!0,value:o(null)}),t.exports=function(t){c[u][t]=!0}},,function(t,n){n.f=Object.getOwnPropertySymbols},,,,,,,,function(t,n,r){var e=r(20),o=r(21),i=r(105),u=function(t){return function(n,r,u){var c,f=e(n),a=o(f.length),s=i(u,a);if(t&&r!=r){for(;a>s;)if((c=f[s++])!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:u(!0),indexOf:u(!1)}},,,,,function(t,n,r){var e=r(64);t.exports=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,n,r){var e=r(9),o=r(103),i=r(45),u=r(12);t.exports=function(t,n){for(var r=o(n),c=u.f,f=i.f,a=0;a<r.length;a++){var s=r[a];e(t,s)||c(t,s,f(n,s))}}},function(t,n,r){var e=r(27),o=r(72),i=r(88),u=r(8);t.exports=e("Reflect","ownKeys")||function(t){var n=o.f(u(t)),r=i.f;return r?n.concat(r(t)):n}},function(t,n,r){var e=r(4);t.exports=e},function(t,n,r){var e=r(35),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},function(t,n,r){var e=r(27);t.exports=e("document","documentElement")},function(t,n,r){var e=r(11),o=r(74),i=r(6)("species");t.exports=function(t,n){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?e(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===n?0:n)}},,,,,,,function(t,n,r){var e=r(4),o=r(65),i=e.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},,,,function(t,n,r){var e=r(10),o=r(12),i=r(8),u=r(67);t.exports=e?Object.defineProperties:function(t,n){i(t);for(var r,e=u(n),c=e.length,f=0;c>f;)o.f(t,r=e[f++],n[r]);return t}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,n,r){"use strict";r.r(n);var e;r(19);(e=jQuery)((function(){var t=null;e(".gfpdf_form_action_has_submenu > a").on("click",(function(){return"false"===e(this).attr("aria-expanded")?(e(this).parent().addClass("open"),e(this).attr("aria-expanded","true")):(e(this).parent().removeClass("open"),e(this).attr("aria-expanded","false")),!1})).parent().on("mouseover",(function(){clearTimeout(t),e(this).addClass("open").find("> a").attr("aria-expanded","true")})).on("mouseout",(function(){var n=e(this);t=setTimeout((function(){n.removeClass("open").find("> a").attr("aria-expanded","false")}),1e3)}))}))}]);
1
+ !function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="/home/runner/work/gravity-pdf/gravity-pdf/tmp/package/6.4.0-RC1/dist/",r(r.s=209)}([,,,,function(t,n,r){(function(n){var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n&&n)||Function("return this")()}).call(this,r(84))},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){var e=r(4),o=r(61),i=r(9),u=r(63),c=r(64),f=r(101),a=o("wks"),s=e.Symbol,p=f?s:s&&s.withoutSetter||u;t.exports=function(t){return i(a,t)||(c&&i(s,t)?a[t]=s[t]:a[t]=p("Symbol."+t)),a[t]}},function(t,n,r){var e=r(4),o=r(45).f,i=r(14),u=r(26),c=r(50),f=r(102),a=r(85);t.exports=function(t,n){var r,s,p,l,v,y=t.target,d=t.global,h=t.stat;if(r=d?e:h?e[y]||c(y,{}):(e[y]||{}).prototype)for(s in n){if(l=n[s],p=t.noTargetGet?(v=o(r,s))&&v.value:r[s],!a(d?s:y+(h?".":"#")+s,t.forced)&&void 0!==p){if(typeof l==typeof p)continue;f(l,p)}(t.sham||p&&p.sham)&&i(l,"sham",!0),u(r,s,l,t)}}},function(t,n,r){var e=r(11);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(5);t.exports=!e((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,r){var e=r(10),o=r(76),i=r(8),u=r(51),c=Object.defineProperty;n.f=e?c:function(t,n,r){if(i(t),n=u(n,!0),i(r),o)try{return c(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},,function(t,n,r){var e=r(10),o=r(12),i=r(34);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},,,,,function(t,n,r){"use strict";var e=r(7),o=r(48).find,i=r(86),u=r(33),c=!0,f=u("find");"find"in[]&&Array(1).find((function(){c=!1})),e({target:"Array",proto:!0,forced:c||!f},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(t,n,r){var e=r(59),o=r(22);t.exports=function(t){return e(o(t))}},function(t,n,r){var e=r(35),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(22);t.exports=function(t){return Object(e(t))}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},,function(t,n,r){var e=r(4),o=r(14),i=r(9),u=r(50),c=r(65),f=r(47),a=f.get,s=f.enforce,p=String(String).split("String");(t.exports=function(t,n,r,c){var f=!!c&&!!c.unsafe,a=!!c&&!!c.enumerable,l=!!c&&!!c.noTargetGet;"function"==typeof r&&("string"!=typeof n||i(r,"name")||o(r,"name",n),s(r).source=p.join("string"==typeof n?n:"")),t!==e?(f?!l&&t[n]&&(a=!0):delete t[n],a?t[n]=r:o(t,n,r)):a?t[n]=r:u(n,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&a(this).source||c(this)}))},function(t,n,r){var e=r(104),o=r(4),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(e[t])||i(o[t]):e[t]&&e[t][n]||o[t]&&o[t][n]}},,,,,,function(t,n,r){var e=r(10),o=r(5),i=r(9),u=Object.defineProperty,c={},f=function(t){throw t};t.exports=function(t,n){if(i(c,t))return c[t];n||(n={});var r=[][t],a=!!i(n,"ACCESSORS")&&n.ACCESSORS,s=i(n,0)?n[0]:f,p=i(n,1)?n[1]:void 0;return c[t]=!!r&&!o((function(){if(a&&!e)return!0;var t={length:-1};a?u(t,1,{enumerable:!0,get:f}):t[1]=1,r.call(t,s,p)}))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},,,,,,,,function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,n){t.exports={}},function(t,n,r){var e=r(10),o=r(77),i=r(34),u=r(20),c=r(51),f=r(9),a=r(76),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=u(t),n=c(n,!0),a)try{return s(t,n)}catch(t){}if(f(t,n))return i(!o.f.call(t,n),t[n])}},,function(t,n,r){var e,o,i,u=r(114),c=r(4),f=r(11),a=r(14),s=r(9),p=r(52),l=r(44),v=c.WeakMap;if(u){var y=new v,d=y.get,h=y.has,x=y.set;e=function(t,n){return x.call(y,t,n),n},o=function(t){return d.call(y,t)||{}},i=function(t){return h.call(y,t)}}else{var b=p("state");l[b]=!0,e=function(t,n){return a(t,b,n),n},o=function(t){return s(t,b)?t[b]:{}},i=function(t){return s(t,b)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!f(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},function(t,n,r){var e=r(66),o=r(59),i=r(23),u=r(21),c=r(107),f=[].push,a=function(t){var n=1==t,r=2==t,a=3==t,s=4==t,p=6==t,l=5==t||p;return function(v,y,d,h){for(var x,b,g=i(v),m=o(g),O=e(y,d,3),S=u(m.length),w=0,j=h||c,P=n?j(v,S):r?j(v,0):void 0;S>w;w++)if((l||w in m)&&(b=O(x=m[w],w,g),t))if(n)P[w]=b;else if(b)switch(t){case 3:return!0;case 5:return x;case 6:return w;case 2:f.call(P,x)}else if(s)return!1;return p?-1:a||s?s:P}};t.exports={forEach:a(0),map:a(1),filter:a(2),some:a(3),every:a(4),find:a(5),findIndex:a(6)}},function(t,n){t.exports=!1},function(t,n,r){var e=r(4),o=r(14);t.exports=function(t,n){try{o(e,t,n)}catch(r){e[t]=n}return n}},function(t,n,r){var e=r(11);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n,r){var e=r(61),o=r(63),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},,,,,,function(t,n,r){var e=r(5),o=r(24),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},,function(t,n,r){var e=r(49),o=r(75);(t.exports=function(t,n){return o[t]||(o[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.6.5",mode:e?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,n,r){var e=r(4),o=r(11),i=e.document,u=o(i)&&o(i.createElement);t.exports=function(t){return u?i.createElement(t):{}}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+e).toString(36)}},function(t,n,r){var e=r(5);t.exports=!!Object.getOwnPropertySymbols&&!e((function(){return!String(Symbol())}))},function(t,n,r){var e=r(75),o=Function.toString;"function"!=typeof e.inspectSource&&(e.inspectSource=function(t){return o.call(t)}),t.exports=e.inspectSource},function(t,n,r){var e=r(43);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 0:return function(){return t.call(n)};case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n,r){var e=r(78),o=r(53);t.exports=Object.keys||function(t){return e(t,o)}},function(t,n,r){var e,o=r(8),i=r(118),u=r(53),c=r(44),f=r(106),a=r(62),s=r(52),p=s("IE_PROTO"),l=function(){},v=function(t){return"<script>"+t+"<\/script>"},y=function(){try{e=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,n;y=e?function(t){t.write(v("")),t.close();var n=t.parentWindow.Object;return t=null,n}(e):((n=a("iframe")).style.display="none",f.appendChild(n),n.src=String("javascript:"),(t=n.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F);for(var r=u.length;r--;)delete y.prototype[u[r]];return y()};c[p]=!0,t.exports=Object.create||function(t,n){var r;return null!==t?(l.prototype=o(t),r=new l,l.prototype=null,r[p]=t):r=y(),void 0===n?r:i(r,n)}},,,,function(t,n,r){var e=r(78),o=r(53).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},,function(t,n,r){var e=r(24);t.exports=Array.isArray||function(t){return"Array"==e(t)}},function(t,n,r){var e=r(4),o=r(50),i=e["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},function(t,n,r){var e=r(10),o=r(5),i=r(62);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,n,r){"use strict";var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:e},function(t,n,r){var e=r(9),o=r(20),i=r(96).indexOf,u=r(44);t.exports=function(t,n){var r,c=o(t),f=0,a=[];for(r in c)!e(u,r)&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~i(a,r)||a.push(r));return a}},,,,,,function(t,n){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,n,r){var e=r(5),o=/#|\.prototype\./,i=function(t,n){var r=c[u(t)];return r==a||r!=f&&("function"==typeof n?e(n):!!n)},u=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},f=i.NATIVE="N",a=i.POLYFILL="P";t.exports=i},function(t,n,r){var e=r(6),o=r(68),i=r(12),u=e("unscopables"),c=Array.prototype;null==c[u]&&i.f(c,u,{configurable:!0,value:o(null)}),t.exports=function(t){c[u][t]=!0}},,function(t,n){n.f=Object.getOwnPropertySymbols},,,,,,,,function(t,n,r){var e=r(20),o=r(21),i=r(105),u=function(t){return function(n,r,u){var c,f=e(n),a=o(f.length),s=i(u,a);if(t&&r!=r){for(;a>s;)if((c=f[s++])!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:u(!0),indexOf:u(!1)}},,,,,function(t,n,r){var e=r(64);t.exports=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,n,r){var e=r(9),o=r(103),i=r(45),u=r(12);t.exports=function(t,n){for(var r=o(n),c=u.f,f=i.f,a=0;a<r.length;a++){var s=r[a];e(t,s)||c(t,s,f(n,s))}}},function(t,n,r){var e=r(27),o=r(72),i=r(88),u=r(8);t.exports=e("Reflect","ownKeys")||function(t){var n=o.f(u(t)),r=i.f;return r?n.concat(r(t)):n}},function(t,n,r){var e=r(4);t.exports=e},function(t,n,r){var e=r(35),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},function(t,n,r){var e=r(27);t.exports=e("document","documentElement")},function(t,n,r){var e=r(11),o=r(74),i=r(6)("species");t.exports=function(t,n){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?e(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===n?0:n)}},,,,,,,function(t,n,r){var e=r(4),o=r(65),i=e.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},,,,function(t,n,r){var e=r(10),o=r(12),i=r(8),u=r(67);t.exports=e?Object.defineProperties:function(t,n){i(t);for(var r,e=u(n),c=e.length,f=0;c>f;)o.f(t,r=e[f++],n[r]);return t}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,n,r){"use strict";r.r(n);var e;r(19);(e=jQuery)((function(){var t=null;e(".gfpdf_form_action_has_submenu > a").on("click",(function(){return"false"===e(this).attr("aria-expanded")?(e(this).parent().addClass("open"),e(this).attr("aria-expanded","true")):(e(this).parent().removeClass("open"),e(this).attr("aria-expanded","false")),!1})).parent().on("mouseover",(function(){clearTimeout(t),e(this).addClass("open").find("> a").attr("aria-expanded","true")})).on("mouseout",(function(){var n=e(this);t=setTimeout((function(){n.removeClass("open").find("> a").attr("aria-expanded","false")}),1e3)}))}))}]);
pdf.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Gravity PDF
4
- Version: 6.3.1
5
  Description: Automatically generate highly-customisable PDF documents using Gravity Forms.
6
  Author: Gravity PDF
7
  Author URI: https://gravitypdf.com
@@ -26,7 +26,7 @@ if ( ! defined( 'ABSPATH' ) ) {
26
  /*
27
  * Set base constants we'll use throughout the plugin
28
  */
29
- define( 'PDF_EXTENDED_VERSION', '6.3.1' ); /* the current plugin version */
30
  define( 'PDF_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); /* plugin directory path */
31
  define( 'PDF_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); /* plugin directory url */
32
  define( 'PDF_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); /* the plugin basename */
@@ -437,12 +437,12 @@ class GFPDF_Major_Compatibility_Checks {
437
  <p><?php esc_html_e( 'The minimum requirements for Gravity PDF have not been met. Please fix the issue(s) below to use the plugin:', 'gravity-forms-pdf-extended' ); ?></p>
438
  <ul style="padding-bottom: 0">
439
  <?php foreach ( $this->notices as $notice ): ?>
440
- <li style="padding-left: 20px;list-style: inside"><?php echo $notice; ?></li>
441
  <?php endforeach; ?>
442
  </ul>
443
 
444
  <?php if ( $this->offer_downgrade && PDF_PLUGIN_BASENAME === 'gravity-forms-pdf-extended/pdf.php' ): ?>
445
- <form method="post" action="<?= admin_url( 'index.php?page=gpdf-downgrade' ) ?>">
446
  <?php wp_nonce_field( 'gpdf-downgrade' ); ?>
447
  <p>
448
  <?php esc_html_e( 'Not ready to upgrade? Try an earlier version of Gravity PDF', 'gravity-forms-pdf-extended' ); ?>
@@ -475,18 +475,18 @@ class GFPDF_Major_Compatibility_Checks {
475
  */
476
  public function rollback() {
477
  if ( ! check_admin_referer( 'gpdf-downgrade' ) || ! current_user_can( 'update_plugins' ) ) {
478
- die( __( 'The link you followed has expired.', 'default' ) );
479
  }
480
 
481
  $plugin = 'gravity-forms-pdf-extended';
482
  $response = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.0/' . $plugin . '.json' );
483
  if ( wp_remote_retrieve_response_code( $response ) !== 200 ) {
484
- die( __( 'Plugin downgrade failed.', 'default' ) );
485
  }
486
 
487
  $body = json_decode( wp_remote_retrieve_body( $response ), true );
488
  if ( empty( $body['versions'] ) ) {
489
- die( __( 'Plugin downgrade failed.', 'default' ) );
490
  }
491
 
492
  /* Get the first matching v5 tag and url (the latest) */
1
  <?php
2
  /*
3
  Plugin Name: Gravity PDF
4
+ Version: 6.4.0-RC1
5
  Description: Automatically generate highly-customisable PDF documents using Gravity Forms.
6
  Author: Gravity PDF
7
  Author URI: https://gravitypdf.com
26
  /*
27
  * Set base constants we'll use throughout the plugin
28
  */
29
+ define( 'PDF_EXTENDED_VERSION', '6.4.0-RC1' ); /* the current plugin version */
30
  define( 'PDF_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); /* plugin directory path */
31
  define( 'PDF_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); /* plugin directory url */
32
  define( 'PDF_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); /* the plugin basename */
437
  <p><?php esc_html_e( 'The minimum requirements for Gravity PDF have not been met. Please fix the issue(s) below to use the plugin:', 'gravity-forms-pdf-extended' ); ?></p>
438
  <ul style="padding-bottom: 0">
439
  <?php foreach ( $this->notices as $notice ): ?>
440
+ <li style="padding-left: 20px;list-style: inside"><?php echo wp_kses_post( $notice ); ?></li>
441
  <?php endforeach; ?>
442
  </ul>
443
 
444
  <?php if ( $this->offer_downgrade && PDF_PLUGIN_BASENAME === 'gravity-forms-pdf-extended/pdf.php' ): ?>
445
+ <form method="post" action="<?php echo esc_url( admin_url( 'index.php?page=gpdf-downgrade' ) ); ?>">
446
  <?php wp_nonce_field( 'gpdf-downgrade' ); ?>
447
  <p>
448
  <?php esc_html_e( 'Not ready to upgrade? Try an earlier version of Gravity PDF', 'gravity-forms-pdf-extended' ); ?>
475
  */
476
  public function rollback() {
477
  if ( ! check_admin_referer( 'gpdf-downgrade' ) || ! current_user_can( 'update_plugins' ) ) {
478
+ die( esc_html__( 'The link you followed has expired.', 'default' ) );
479
  }
480
 
481
  $plugin = 'gravity-forms-pdf-extended';
482
  $response = wp_remote_get( 'https://api.wordpress.org/plugins/info/1.0/' . $plugin . '.json' );
483
  if ( wp_remote_retrieve_response_code( $response ) !== 200 ) {
484
+ die( esc_html__( 'Plugin downgrade failed.', 'default' ) );
485
  }
486
 
487
  $body = json_decode( wp_remote_retrieve_body( $response ), true );
488
  if ( empty( $body['versions'] ) ) {
489
+ die( esc_html__( 'Plugin downgrade failed.', 'default' ) );
490
  }
491
 
492
  /* Get the first matching v5 tag and url (the latest) */
src/Controller/Controller_Custom_Fonts.php CHANGED
@@ -222,7 +222,7 @@ class Controller_Custom_Fonts extends Helper_Abstract_Controller {
222
 
223
  /* Ensure the regular font file has been uploaded (required field) */
224
  if ( ! isset( $files['regular'] ) ) {
225
- throw new UploadException( json_encode( [ 'regular' => __( 'The Regular font is required', 'gravity-forms-pdf-extended' ) ] ) );
226
  }
227
 
228
  $files = $this->move_fonts_to_font_dir( $files );
@@ -482,7 +482,7 @@ class Controller_Custom_Fonts extends Helper_Abstract_Controller {
482
  }
483
 
484
  if ( count( $errors ) > 0 ) {
485
- throw new UploadException( json_encode( $errors ) );
486
  }
487
 
488
  return $files;
@@ -551,7 +551,7 @@ class Controller_Custom_Fonts extends Helper_Abstract_Controller {
551
  }
552
 
553
  if ( count( $errors ) > 0 ) {
554
- throw new GravityPdfFontNotFoundException( json_encode( $errors ) );
555
  }
556
 
557
  return $supports_otl;
222
 
223
  /* Ensure the regular font file has been uploaded (required field) */
224
  if ( ! isset( $files['regular'] ) ) {
225
+ throw new UploadException( wp_json_encode( [ 'regular' => __( 'The Regular font is required', 'gravity-forms-pdf-extended' ) ] ) );
226
  }
227
 
228
  $files = $this->move_fonts_to_font_dir( $files );
482
  }
483
 
484
  if ( count( $errors ) > 0 ) {
485
+ throw new UploadException( wp_json_encode( $errors ) );
486
  }
487
 
488
  return $files;
551
  }
552
 
553
  if ( count( $errors ) > 0 ) {
554
+ throw new GravityPdfFontNotFoundException( wp_json_encode( $errors ) );
555
  }
556
 
557
  return $supports_otl;
src/Controller/Controller_Form_Settings.php CHANGED
@@ -177,8 +177,10 @@ class Controller_Form_Settings extends Helper_Abstract_Controller implements Hel
177
  * @since 4.0
178
  */
179
  public function maybe_save_pdf_settings() {
180
- $form_id = ( isset( $_GET['id'] ) ) ? (int) $_GET['id'] : false;
181
- $pdf_id = ( isset( $_GET['pid'] ) ) ? $_GET['pid'] : false;
 
 
182
 
183
  /* Load the add/edit page */
184
  if ( $pdf_id !== false && rgpost( 'gfpdf_save_pdf' ) ) {
@@ -195,9 +197,10 @@ class Controller_Form_Settings extends Helper_Abstract_Controller implements Hel
195
  */
196
  public function display_page() {
197
 
198
- /* Determine whether to load the add/edit page, or the list view */
199
- $form_id = ( isset( $_GET['id'] ) ) ? (int) $_GET['id'] : false;
200
- $pdf_id = ( isset( $_GET['pid'] ) ) ? $_GET['pid'] : false;
 
201
 
202
  /* Load the add/edit page */
203
  if ( $pdf_id !== false ) {
177
  * @since 4.0
178
  */
179
  public function maybe_save_pdf_settings() {
180
+ /* phpcs:disable WordPress.Security.NonceVerification.Recommended */
181
+ $form_id = isset( $_GET['id'] ) ? (int) $_GET['id'] : 0;
182
+ $pdf_id = isset( $_GET['pid'] ) ? $_GET['pid'] : false;
183
+ /* phpcs:enable */
184
 
185
  /* Load the add/edit page */
186
  if ( $pdf_id !== false && rgpost( 'gfpdf_save_pdf' ) ) {
197
  */
198
  public function display_page() {
199
 
200
+ /* phpcs:disable WordPress.Security.NonceVerification.Recommended */
201
+ $form_id = isset( $_GET['id'] ) ? (int) $_GET['id'] : false;
202
+ $pdf_id = isset( $_GET['pid'] ) ? $_GET['pid'] : false;
203
+ /* phpcs:enable */
204
 
205
  /* Load the add/edit page */
206
  if ( $pdf_id !== false ) {
src/Controller/Controller_Mergetags.php CHANGED
@@ -64,5 +64,6 @@ class Controller_Mergetags extends Helper_Abstract_Controller implements Helper_
64
 
65
  add_filter( 'gform_field_map_choices', [ $this->model, 'add_field_map_choices' ], 10, 4 );
66
  add_filter( 'gform_addon_field_value', [ $this->model, 'process_field_value' ], 10, 4 );
 
67
  }
68
  }
64
 
65
  add_filter( 'gform_field_map_choices', [ $this->model, 'add_field_map_choices' ], 10, 4 );
66
  add_filter( 'gform_addon_field_value', [ $this->model, 'process_field_value' ], 10, 4 );
67
+ add_filter( 'gform_mailchimp_field_value', [ $this->model, 'process_field_value_mailchimp' ], 10, 4 );
68
  }
69
  }
src/Controller/Controller_PDF.php CHANGED
@@ -258,7 +258,7 @@ class Controller_PDF extends Helper_Abstract_Controller implements Helper_Interf
258
  */
259
  public function process_legacy_pdf_endpoint() {
260
 
261
- /* exit early if all our required parameters aren't met */
262
  if ( empty( $_GET['gf_pdf'] ) || empty( $_GET['fid'] ) || empty( $_GET['lid'] ) || empty( $_GET['template'] ) ) {
263
  return null;
264
  }
@@ -272,6 +272,7 @@ class Controller_PDF extends Helper_Abstract_Controller implements Helper_Interf
272
  'template' => substr( $_GET['template'], 0, -4 ), /* strip .php from the template name */
273
  'action' => ( isset( $_GET['download'] ) ) ? 'download' : 'view',
274
  ];
 
275
 
276
  $this->log->notice(
277
  'Processing Legacy PDF endpoint.',
@@ -369,7 +370,7 @@ class Controller_PDF extends Helper_Abstract_Controller implements Helper_Interf
369
  /* only display detailed error to admins */
370
  $whitelist_errors = [ 'timeout_expired', 'access_denied' ];
371
  if ( $this->gform->has_capability( 'gravityforms_view_settings' ) || in_array( $error->get_error_code(), $whitelist_errors, true ) ) {
372
- wp_die( $error->get_error_message() );
373
  } else {
374
  wp_die( esc_html__( 'There was a problem generating your PDF', 'gravity-forms-pdf-extended' ) );
375
  }
258
  */
259
  public function process_legacy_pdf_endpoint() {
260
 
261
+ /* phpcs:disable WordPress.Security.NonceVerification.Recommended */
262
  if ( empty( $_GET['gf_pdf'] ) || empty( $_GET['fid'] ) || empty( $_GET['lid'] ) || empty( $_GET['template'] ) ) {
263
  return null;
264
  }
272
  'template' => substr( $_GET['template'], 0, -4 ), /* strip .php from the template name */
273
  'action' => ( isset( $_GET['download'] ) ) ? 'download' : 'view',
274
  ];
275
+ /* phpcs:enable */
276
 
277
  $this->log->notice(
278
  'Processing Legacy PDF endpoint.',
370
  /* only display detailed error to admins */
371
  $whitelist_errors = [ 'timeout_expired', 'access_denied' ];
372
  if ( $this->gform->has_capability( 'gravityforms_view_settings' ) || in_array( $error->get_error_code(), $whitelist_errors, true ) ) {
373
+ wp_die( esc_html( $error->get_error_message() ) );
374
  } else {
375
  wp_die( esc_html__( 'There was a problem generating your PDF', 'gravity-forms-pdf-extended' ) );
376
  }
src/Controller/Controller_Save_Core_Fonts.php CHANGED
@@ -114,13 +114,13 @@ class Controller_Save_Core_Fonts extends Helper_Abstract_Controller implements H
114
  /* User / CORS validation */
115
  $this->misc->handle_ajax_authentication( 'Save Core Font', 'gravityforms_edit_settings' );
116
 
117
- /* Download and save our font */
118
- $fontname = isset( $_POST['font_name'] ) ? $_POST['font_name'] : '';
119
  $results = $this->download_and_save_font( $fontname );
120
 
121
  /* Return results */
122
  header( 'Content-Type: application/json' );
123
- echo json_encode( $results );
124
  wp_die();
125
  }
126
 
@@ -135,13 +135,48 @@ class Controller_Save_Core_Fonts extends Helper_Abstract_Controller implements H
135
  */
136
  protected function download_and_save_font( $fontname ) {
137
 
138
- /* Only the font name is passed via AJAX. The Repo we download from is fixed (prevent security issues) */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  $res = wp_remote_get(
140
- $this->github_repo . $fontname,
141
  [
142
  'timeout' => 60,
143
  'stream' => true,
144
- 'filename' => $this->data->template_font_location . $fontname,
145
  ]
146
  );
147
 
114
  /* User / CORS validation */
115
  $this->misc->handle_ajax_authentication( 'Save Core Font', 'gravityforms_edit_settings' );
116
 
117
+ /* phpcs:ignore WordPress.Security.NonceVerification */
118
+ $fontname = $_POST['font_name'] ?? '';
119
  $results = $this->download_and_save_font( $fontname );
120
 
121
  /* Return results */
122
  header( 'Content-Type: application/json' );
123
+ echo wp_json_encode( $results );
124
  wp_die();
125
  }
126
 
135
  */
136
  protected function download_and_save_font( $fontname ) {
137
 
138
+ /* Verify the font name provided is approved */
139
+ $core_font_list = wp_json_file_decode( __DIR__ . '/../../dist/payload/core-fonts.json', [ 'associative' => true ] );
140
+ if ( $core_font_list === null ) {
141
+ $this->log->error( 'Core font list could not be loaded' );
142
+
143
+ return false;
144
+ }
145
+
146
+ /* Look for a file in the font list with a matching name */
147
+ $matching_fonts = array_filter(
148
+ $core_font_list,
149
+ function( $item ) use ( $fontname ) {
150
+ return $item['name'] === $fontname;
151
+ }
152
+ );
153
+
154
+ $matching_fonts = array_values( $matching_fonts );
155
+
156
+ if ( ! isset( $matching_fonts[0] ) ) {
157
+ $this->log->error(
158
+ 'Core Font not on the approved list',
159
+ [
160
+ 'name' => $fontname,
161
+ ]
162
+ );
163
+
164
+ return false;
165
+ }
166
+
167
+ /* Extra check to verify the download URL points to the correct repo */
168
+ if ( strpos( $matching_fonts[0]['download_url'], $this->github_repo ) !== 0 ) {
169
+ $this->log->error( 'Core font list is corrupted' );
170
+
171
+ return false;
172
+ }
173
+
174
  $res = wp_remote_get(
175
+ $matching_fonts[0]['download_url'],
176
  [
177
  'timeout' => 60,
178
  'stream' => true,
179
+ 'filename' => $this->data->template_font_location . $matching_fonts[0]['name'],
180
  ]
181
  );
182
 
src/Controller/Controller_Settings.php CHANGED
@@ -150,6 +150,9 @@ class Controller_Settings extends Helper_Abstract_Controller implements Helper_I
150
  */
151
  public function add_actions() {
152
 
 
 
 
153
  /**
154
  * Display the uninstaller if use has the correct permissions
155
  *
@@ -208,7 +211,8 @@ class Controller_Settings extends Helper_Abstract_Controller implements Helper_I
208
  */
209
  public function display_page() {
210
 
211
- $page = ( isset( $_GET['tab'] ) ) ? $_GET['tab'] : 'general';
 
212
 
213
  switch ( $page ) {
214
  case 'general':
150
  */
151
  public function add_actions() {
152
 
153
+ /* Add submenu via a hook */
154
+ add_action( 'gfpdf_settings_sub_menu', [ $this->view, 'sub_menu' ] );
155
+
156
  /**
157
  * Display the uninstaller if use has the correct permissions
158
  *
211
  */
212
  public function display_page() {
213
 
214
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
215
+ $page = $_GET['tab'] ?? 'general';
216
 
217
  switch ( $page ) {
218
  case 'general':
src/Controller/Controller_Uninstaller.php CHANGED
@@ -73,7 +73,7 @@ class Controller_Uninstaller extends Helper_Abstract_Controller {
73
  */
74
  public function init() {
75
  if ( is_admin() && rgget( 'page' ) === 'gf_settings' && rgget( 'subview' ) === 'uninstall' ) {
76
- \GFAddOn::register( Controller_Uninstaller::class );
77
  }
78
  }
79
 
73
  */
74
  public function init() {
75
  if ( is_admin() && rgget( 'page' ) === 'gf_settings' && rgget( 'subview' ) === 'uninstall' ) {
76
+ \GFAddOn::register( __CLASS__ );
77
  }
78
  }
79
 
src/Helper/Fields/Field_Checkbox.php CHANGED
@@ -8,6 +8,7 @@ use GFCommon;
8
  use GFPDF\Helper\Helper_Abstract_Fields;
9
  use GFPDF\Helper\Helper_Abstract_Form;
10
  use GFPDF\Helper\Helper_Misc;
 
11
 
12
  /**
13
  * @package Gravity PDF
@@ -150,10 +151,10 @@ class Field_Checkbox extends Helper_Abstract_Fields {
150
 
151
  foreach ( $value as $key => $item ) {
152
  $label = esc_html( GFCommon::selection_display( $item, $this->field, '', true ) );
153
- $label = wp_kses_post( $this->gform->process_tags( wp_specialchars_decode( $label, ENT_QUOTES ), $this->form, $this->entry ) );
154
 
155
  $value = esc_html( GFCommon::selection_display( $item, $this->field ) );
156
- $value = wp_kses_post( $this->gform->process_tags( wp_specialchars_decode( $value, ENT_QUOTES ), $this->form, $this->entry ) );
157
 
158
  $items[] = [
159
  'value' => $value,
8
  use GFPDF\Helper\Helper_Abstract_Fields;
9
  use GFPDF\Helper\Helper_Abstract_Form;
10
  use GFPDF\Helper\Helper_Misc;
11
+ use GFPDF\Statics\Kses;
12
 
13
  /**
14
  * @package Gravity PDF
151
 
152
  foreach ( $value as $key => $item ) {
153
  $label = esc_html( GFCommon::selection_display( $item, $this->field, '', true ) );
154
+ $label = Kses::parse( $this->gform->process_tags( wp_specialchars_decode( $label, ENT_QUOTES ), $this->form, $this->entry ) );
155
 
156
  $value = esc_html( GFCommon::selection_display( $item, $this->field ) );
157
+ $value = Kses::parse( $this->gform->process_tags( wp_specialchars_decode( $value, ENT_QUOTES ), $this->form, $this->entry ) );
158
 
159
  $items[] = [
160
  'value' => $value,
src/Helper/Fields/Field_Consent.php CHANGED
@@ -7,6 +7,7 @@ use GF_Field_Consent;
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
 
10
 
11
  /**
12
  * @package Gravity PDF
@@ -93,8 +94,8 @@ class Field_Consent extends Helper_Abstract_Fields {
93
 
94
  $consent = [
95
  'value' => $value[0],
96
- 'label' => wp_kses_post( $this->gform->process_tags( $value[1], $this->form, $this->entry ) ),
97
- 'description' => wp_kses_post(
98
  wpautop(
99
  $this->gform->process_tags( $this->field->get_field_description_from_revision( $value[2] ), $this->form, $this->entry )
100
  )
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
10
+ use GFPDF\Statics\Kses;
11
 
12
  /**
13
  * @package Gravity PDF
94
 
95
  $consent = [
96
  'value' => $value[0],
97
+ 'label' => Kses::parse( $this->gform->process_tags( $value[1], $this->form, $this->entry ) ),
98
+ 'description' => Kses::parse(
99
  wpautop(
100
  $this->gform->process_tags( $this->field->get_field_description_from_revision( $value[2] ), $this->form, $this->entry )
101
  )
src/Helper/Fields/Field_Email.php CHANGED
@@ -62,7 +62,7 @@ class Field_Email extends Helper_Abstract_Fields {
62
  public function html( $value = '', $label = true ) {
63
  $value = $this->value();
64
 
65
- $output = ( is_email( $value ) ) ? '<a href="mailto:' . $value . '">' . $value . '</a>' : $value;
66
 
67
  return parent::html( $output );
68
  }
62
  public function html( $value = '', $label = true ) {
63
  $value = $this->value();
64
 
65
+ $output = is_email( $value ) ? '<a href="mailto:' . esc_attr( $value ) . '">' . esc_html( $value ) . '</a>' : esc_html( $value );
66
 
67
  return parent::html( $output );
68
  }
src/Helper/Fields/Field_Fileupload.php CHANGED
@@ -107,7 +107,7 @@ class Field_Fileupload extends Helper_Abstract_Fields {
107
 
108
  foreach ( $files as $file ) {
109
  $file_info = pathinfo( $file );
110
- $html .= '<li id="field-' . $this->field->id . '-option-' . $i . '"><a href="' . esc_url( $file ) . '">' . esc_html( $file_info['basename'] ) . '</a></li>';
111
  $i++;
112
  }
113
 
107
 
108
  foreach ( $files as $file ) {
109
  $file_info = pathinfo( $file );
110
+ $html .= '<li id="' . esc_attr( 'field-' . $this->field->id . '-option-' . $i ) . '"><a href="' . esc_url( $file ) . '">' . esc_html( $file_info['basename'] ) . '</a></li>';
111
  $i++;
112
  }
113
 
src/Helper/Fields/Field_Form.php CHANGED
@@ -68,7 +68,7 @@ class Field_Form extends Helper_Abstract_Fields {
68
  /* Get the Nested Form */
69
  $form = $this->gform->get_form( $this->field->gpnfForm );
70
  if ( is_wp_error( $form ) ) {
71
- return parent::html( '' );
72
  }
73
 
74
  $html = '';
@@ -108,16 +108,27 @@ class Field_Form extends Helper_Abstract_Fields {
108
  $pdf_model = GPDFAPI::get_mvc_class( 'Model_PDF' );
109
  $products = new Field_Products( new GF_Field(), $entry, $this->gform, $this->misc );
110
 
 
 
 
 
 
 
111
  /* Loop through the Repeater fields */
112
  foreach ( $form['fields'] as $field ) {
113
  /* Output a field using the standard method if not empty */
114
  $class = $pdf_model->get_field_class( $field, $form, $entry, $products );
115
  if ( ! $class->is_empty() && strpos( $field->cssClass, 'exclude' ) === false ) {
116
  $container->generate( $field );
117
- echo $class->html();
118
  }
119
  }
120
 
 
 
 
 
 
121
  $container->close( $field );
122
 
123
  return $this->gform->process_tags( ob_get_clean(), $form, $entry );
68
  /* Get the Nested Form */
69
  $form = $this->gform->get_form( $this->field->gpnfForm );
70
  if ( is_wp_error( $form ) ) {
71
+ return parent::html();
72
  }
73
 
74
  $html = '';
108
  $pdf_model = GPDFAPI::get_mvc_class( 'Model_PDF' );
109
  $products = new Field_Products( new GF_Field(), $entry, $this->gform, $this->misc );
110
 
111
+ /* Ensure the field outputs the HTML and can be reset to the original value */
112
+ $output_already_enabled = $this->get_output();
113
+ if ( ! $output_already_enabled ) {
114
+ $this->enable_output();
115
+ }
116
+
117
  /* Loop through the Repeater fields */
118
  foreach ( $form['fields'] as $field ) {
119
  /* Output a field using the standard method if not empty */
120
  $class = $pdf_model->get_field_class( $field, $form, $entry, $products );
121
  if ( ! $class->is_empty() && strpos( $field->cssClass, 'exclude' ) === false ) {
122
  $container->generate( $field );
123
+ $class->html();
124
  }
125
  }
126
 
127
+ /* If output wasn't enabled by default, disable again */
128
+ if ( ! $output_already_enabled ) {
129
+ $this->disable_output();
130
+ }
131
+
132
  $container->close( $field );
133
 
134
  return $this->gform->process_tags( ob_get_clean(), $form, $entry );
src/Helper/Fields/Field_Html.php CHANGED
@@ -7,6 +7,7 @@ use GF_Field_HTML;
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
 
10
 
11
  /**
12
  * @package Gravity PDF
@@ -95,7 +96,7 @@ class Field_Html extends Helper_Abstract_Fields {
95
  return $this->cache();
96
  }
97
 
98
- $value = ( isset( $this->field->content ) ) ? wp_kses_post(
99
  $this->gform->process_tags( $this->field->content, $this->form, $this->entry )
100
  ) : '';
101
 
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
10
+ use GFPDF\Statics\Kses;
11
 
12
  /**
13
  * @package Gravity PDF
96
  return $this->cache();
97
  }
98
 
99
+ $value = isset( $this->field->content ) ? Kses::parse(
100
  $this->gform->process_tags( $this->field->content, $this->form, $this->entry )
101
  ) : '';
102
 
src/Helper/Fields/Field_List.php CHANGED
@@ -58,9 +58,16 @@ class Field_List extends Helper_Abstract_Fields {
58
  */
59
  public function form_data() {
60
 
 
 
 
 
 
 
 
 
61
  $data = [];
62
  $label = $this->get_label();
63
- $html = $this->html();
64
 
65
  /* Add our List array */
66
  $list_array = $this->value();
@@ -112,7 +119,7 @@ class Field_List extends Helper_Abstract_Fields {
112
  <tr>
113
  <?php foreach ( $columns as $column ) : ?>
114
  <th>
115
- <?= esc_html( $column ); ?>
116
  </th>
117
  <?php endforeach; ?>
118
  </tr>
@@ -125,14 +132,14 @@ class Field_List extends Helper_Abstract_Fields {
125
  <tr>
126
  <!-- handle the basic list -->
127
  <?php if ( ! $columns ) : ?>
128
- <td><?= esc_html( $item ); ?></td>
129
  <?php
130
  else :
131
  ?>
132
  <!-- handle the advanced list -->
133
  <?php foreach ( $columns as $column ) : ?>
134
  <td>
135
- <?= esc_html( rgar( $item, $column ) ); ?>
136
  </td>
137
  <?php endforeach; ?>
138
  <?php endif; ?>
58
  */
59
  public function form_data() {
60
 
61
+ if ( $this->get_output() ) {
62
+ $this->disable_output();
63
+ $html = $this->html();
64
+ $this->enable_output();
65
+ } else {
66
+ $html = $this->html();
67
+ }
68
+
69
  $data = [];
70
  $label = $this->get_label();
 
71
 
72
  /* Add our List array */
73
  $list_array = $this->value();
119
  <tr>
120
  <?php foreach ( $columns as $column ) : ?>
121
  <th>
122
+ <?php echo esc_html( $column ); ?>
123
  </th>
124
  <?php endforeach; ?>
125
  </tr>
132
  <tr>
133
  <!-- handle the basic list -->
134
  <?php if ( ! $columns ) : ?>
135
+ <td><?php echo esc_html( $item ); ?></td>
136
  <?php
137
  else :
138
  ?>
139
  <!-- handle the advanced list -->
140
  <?php foreach ( $columns as $column ) : ?>
141
  <td>
142
+ <?php echo esc_html( rgar( $item, $column ) ); ?>
143
  </td>
144
  <?php endforeach; ?>
145
  <?php endif; ?>
src/Helper/Fields/Field_Multiselect.php CHANGED
@@ -8,6 +8,7 @@ use GFCommon;
8
  use GFPDF\Helper\Helper_Abstract_Fields;
9
  use GFPDF\Helper\Helper_Abstract_Form;
10
  use GFPDF\Helper\Helper_Misc;
 
11
 
12
  /**
13
  * @package Gravity PDF
@@ -112,10 +113,9 @@ class Field_Multiselect extends Helper_Abstract_Fields {
112
  $html = '<ul class="bulleted multiselect">';
113
 
114
  foreach ( $items as $item ) {
115
- $sanitized_value = $item['value'];
116
- $sanitized_option = ( $value ) ? $sanitized_value : $item['label'];
117
 
118
- $html .= '<li id="field-' . $this->field->id . '-option-' . $i . '">' . $sanitized_option . '</li>';
119
  $i++;
120
  }
121
 
8
  use GFPDF\Helper\Helper_Abstract_Fields;
9
  use GFPDF\Helper\Helper_Abstract_Form;
10
  use GFPDF\Helper\Helper_Misc;
11
+ use GFPDF\Statics\Kses;
12
 
13
  /**
14
  * @package Gravity PDF
113
  $html = '<ul class="bulleted multiselect">';
114
 
115
  foreach ( $items as $item ) {
116
+ $option = $value ? $item['value'] : $item['label'];
 
117
 
118
+ $html .= '<li id="' . esc_attr( 'field-' . $this->field->id . '-option-' . $i ) . '">' . Kses::parse( $option ) . '</li>';
119
  $i++;
120
  }
121
 
src/Helper/Fields/Field_Post_Content.php CHANGED
@@ -7,6 +7,7 @@ use GF_Field_Post_Content;
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
 
10
 
11
  /**
12
  * @package Gravity PDF
@@ -80,7 +81,7 @@ class Field_Post_Content extends Helper_Abstract_Fields {
80
  $value = $this->get_value();
81
 
82
  if ( isset( $this->field->useRichTextEditor ) && true === $this->field->useRichTextEditor ) {
83
- $html = wp_kses_post(
84
  $this->gform->process_tags( $value, $this->form, $this->entry )
85
  );
86
  } else {
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
10
+ use GFPDF\Statics\Kses;
11
 
12
  /**
13
  * @package Gravity PDF
81
  $value = $this->get_value();
82
 
83
  if ( isset( $this->field->useRichTextEditor ) && true === $this->field->useRichTextEditor ) {
84
+ $html = Kses::parse(
85
  $this->gform->process_tags( $value, $this->form, $this->entry )
86
  );
87
  } else {
src/Helper/Fields/Field_Post_Image.php CHANGED
@@ -64,21 +64,21 @@ class Field_Post_Image extends Helper_Abstract_Fields {
64
 
65
  $html = '';
66
  if ( ! empty( $value['url'] ) ) {
67
- $html = '<a href="' . $value['url'] . '" target="_blank">';
68
- $html .= '<img width="150" src="' . $value['url'] . '" />';
69
  }
70
 
71
  /* Include title / caption / description if needed */
72
  if ( ! empty( $value['title'] ) ) {
73
- $html .= '<div class="gfpdf-post-image-title">' . $value['title'] . '</div>';
74
  }
75
 
76
  if ( ! empty( $value['caption'] ) ) {
77
- $html .= '<div class="gfpdf-post-image-caption">' . $value['caption'] . '</div>';
78
  }
79
 
80
  if ( ! empty( $value['description'] ) ) {
81
- $html .= '<div class="gfpdf-post-image-description">' . $value['description'] . '</div>';
82
  }
83
 
84
  $html .= '</a>';
64
 
65
  $html = '';
66
  if ( ! empty( $value['url'] ) ) {
67
+ $html = '<a href="' . esc_url( $value['url'] ) . '" target="_blank">';
68
+ $html .= '<img width="150" src="' . esc_url( $value['url'] ) . '" />';
69
  }
70
 
71
  /* Include title / caption / description if needed */
72
  if ( ! empty( $value['title'] ) ) {
73
+ $html .= '<div class="gfpdf-post-image-title">' . esc_html( $value['title'] ) . '</div>';
74
  }
75
 
76
  if ( ! empty( $value['caption'] ) ) {
77
+ $html .= '<div class="gfpdf-post-image-caption">' . esc_html( $value['caption'] ) . '</div>';
78
  }
79
 
80
  if ( ! empty( $value['description'] ) ) {
81
+ $html .= '<div class="gfpdf-post-image-description">' . esc_html( $value['description'] ) . '</div>';
82
  }
83
 
84
  $html .= '</a>';
src/Helper/Fields/Field_Product.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace GFPDF\Helper\Fields;
4
 
5
  use GFPDF\Helper\Helper_Abstract_Field_Products;
 
6
 
7
  /**
8
  * @package Gravity PDF
@@ -34,7 +35,7 @@ class Field_Product extends Helper_Abstract_Field_Products {
34
  $name = ( isset( $value['name'] ) && isset( $value['price'] ) ) ? $value['name'] . " ({$value['price']})" : '';
35
  $name = esc_html( $name );
36
 
37
- $price = ( isset( $value['price_unformatted'] ) ) ? $value['price_unformatted'] : '';
38
  $price = esc_html( $price );
39
 
40
  return $this->set_form_data( $name, $price );
@@ -59,13 +60,13 @@ class Field_Product extends Helper_Abstract_Field_Products {
59
 
60
  if ( isset( $value['price'] ) ) {
61
  if ( in_array( $this->field->get_input_type(), [ 'radio', 'select' ], true ) ) {
62
- $html .= $value['name'] . ' - ' . $value['price'];
63
  } else {
64
- $html .= $value['price'];
65
  }
66
  }
67
 
68
- return parent::html( esc_html( $html ) );
69
  }
70
 
71
  /**
3
  namespace GFPDF\Helper\Fields;
4
 
5
  use GFPDF\Helper\Helper_Abstract_Field_Products;
6
+ use GFPDF\Statics\Kses;
7
 
8
  /**
9
  * @package Gravity PDF
35
  $name = ( isset( $value['name'] ) && isset( $value['price'] ) ) ? $value['name'] . " ({$value['price']})" : '';
36
  $name = esc_html( $name );
37
 
38
+ $price = $value['price_unformatted'] ?? '';
39
  $price = esc_html( $price );
40
 
41
  return $this->set_form_data( $name, $price );
60
 
61
  if ( isset( $value['price'] ) ) {
62
  if ( in_array( $this->field->get_input_type(), [ 'radio', 'select' ], true ) ) {
63
+ $html .= Kses::parse( $value['name'] . ' - ' . $value['price'] );
64
  } else {
65
+ $html .= esc_html( $value['price'] );
66
  }
67
  }
68
 
69
+ return parent::html( $html );
70
  }
71
 
72
  /**
src/Helper/Fields/Field_Products.php CHANGED
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  }
19
 
20
  /* Include any dependencies */
21
- require_once( GFCommon::get_base_path() . '/currency.php' );
22
 
23
  /**
24
  * Controls the display and output of a Gravity Form field
@@ -89,10 +89,10 @@ class Field_Products extends Helper_Abstract_Fields {
89
  <div class="row-separator products-title-container">
90
  <h3 class="product-field-title gfpdf-field">
91
  <?php
92
- $label = apply_filters( 'gform_order_label', esc_html__( 'Order', 'gravityforms' ), $form_id );
93
  $label = apply_filters( 'gform_order_label_' . $form_id, $label, $form_id );
94
 
95
- echo $label;
96
  ?>
97
  </h3>
98
  </div>
@@ -105,35 +105,35 @@ class Field_Products extends Helper_Abstract_Fields {
105
  <tr>
106
  <th class="entry-products-col1">
107
  <?php
108
- $label = apply_filters( 'gform_product', esc_html__( 'Product', 'gravityforms' ), $form_id );
109
  $label = apply_filters( 'gform_product_' . $form_id, $label, $form_id );
110
 
111
- echo $label;
112
  ?>
113
  </th>
114
 
115
  <th class="textcenter entry-products-col2">
116
  <?php
117
- $label = apply_filters( 'gform_product_qty', esc_html__( 'Qty', 'gravityforms' ), $form_id );
118
  $label = apply_filters( 'gform_product_qty_' . $form_id, $label, $form_id );
119
 
120
- echo $label;
121
  ?>
122
  </th>
123
  <th class="entry-products-col3">
124
  <?php
125
- $label = apply_filters( 'gform_product_unitprice', esc_html__( 'Unit Price', 'gravityforms' ), $form_id );
126
  $label = apply_filters( 'gform_product_unitprice_' . $form_id, $label, $form_id );
127
 
128
- echo $label;
129
  ?>
130
  </th>
131
  <th class="entry-products-col4">
132
  <?php
133
- $label = apply_filters( 'gform_product_price', esc_html__( 'Price', 'gravityforms' ), $form_id );
134
  $label = apply_filters( 'gform_product_price_' . $form_id, $label, $form_id );
135
 
136
- echo $label;
137
  ?>
138
  </th>
139
  </tr>
@@ -151,7 +151,7 @@ class Field_Products extends Helper_Abstract_Fields {
151
  <tr>
152
  <td>
153
  <div class="product_name">
154
- <?= $product['name']; ?>
155
  </div>
156
 
157
  <?php
@@ -164,14 +164,14 @@ class Field_Products extends Helper_Abstract_Fields {
164
  foreach ( $product['options'] as $option ) :
165
  $price += $option['price'];
166
  ?>
167
- <li><?= $option['option_label']; ?></li>
168
  <?php endforeach; ?>
169
  </ul>
170
  <?php endif; ?>
171
  </td>
172
- <td class="textcenter"><?= $product['quantity']; ?></td>
173
- <td class="textright"><?= GFCommon::format_number( $price, 'currency', rgar( $this->entry, 'currency' ) ); ?></td>
174
- <td class="textright"><?= $product['subtotal_formatted']; ?></td>
175
  </tr>
176
  <?php endforeach; ?>
177
 
@@ -192,14 +192,14 @@ class Field_Products extends Helper_Abstract_Fields {
192
  <?php if ( $index === 0 ): ?>
193
  <td class="emptycell"
194
  colspan="2"
195
- rowspan="<?= $gpecommerce->get_order_summary_item_count( $order_summary ); ?>"></td>
196
  <?php endif; ?>
197
- <td class="totals" style="<?php $gpecommerce->style( ".order-summary/tfoot/{$class}/td.column-3" ); ?>">
198
- <?= $item['name']; ?>
199
  </td>
200
 
201
- <td class="totals" style="<?php $gpecommerce->style( ".order-summary/tfoot/{$class}/td.column-4" ); ?>">
202
- <?= GFCommon::to_money( $item['price'], $this->entry['currency'] ); ?>
203
  </td>
204
  </tr>
205
  <?php endforeach; ?>
@@ -210,12 +210,12 @@ class Field_Products extends Helper_Abstract_Fields {
210
  <td rowspan="3" class="emptycell"></td>
211
  <td colspan="2"
212
  class="subtotal totals"><?php esc_html_e( 'Subtotal', 'gravity-forms-pdf-extended' ); ?></td>
213
- <td class="subtotal_amount totals"><?= $products['products_totals']['subtotal_formatted']; ?></td>
214
  </tr>
215
  <tr>
216
  <td colspan="2"
217
- class="shipping totals"><?= sprintf( esc_html__( 'Shipping (%s)', 'gravity-forms-pdf-extended' ), $products['products_totals']['shipping_name'] ); ?></td>
218
- <td class="shipping_amount totals"><?= $products['products_totals']['shipping_formatted']; ?></td>
219
  </tr>
220
  <?php endif; ?>
221
 
@@ -226,7 +226,7 @@ class Field_Products extends Helper_Abstract_Fields {
226
 
227
  <td colspan="2"
228
  class="grandtotal totals"><?php esc_html_e( 'Total', 'gravityforms' ); ?></td>
229
- <td class="grandtotal_amount totals"><?= $products['products_totals']['total_formatted']; ?></td>
230
  </tr>
231
 
232
  <?php endif; ?>
@@ -238,7 +238,14 @@ class Field_Products extends Helper_Abstract_Fields {
238
 
239
  <?php
240
 
241
- return apply_filters( 'gfpdf_field_product_value', ob_get_clean(), $products, $this->field, $this->form, $this->entry, $this );
 
 
 
 
 
 
 
242
  }
243
 
244
  /**
@@ -303,7 +310,7 @@ class Field_Products extends Helper_Abstract_Fields {
303
  }
304
 
305
  /* calculate subtotal */
306
- $product_subtotal = floatval( $product['quantity'] ) * $product_unit_price;
307
 
308
  /* increment the total */
309
  $order_total += $product_subtotal;
@@ -321,7 +328,7 @@ class Field_Products extends Helper_Abstract_Fields {
321
  }
322
 
323
  /* Increment total */
324
- $shipping_price = ( isset( $products['shipping']['price'] ) ) ? floatval( $products['shipping']['price'] ) : 0;
325
  $order_total += $shipping_price;
326
  $order_subtotal = $order_total - $shipping_price;
327
 
18
  }
19
 
20
  /* Include any dependencies */
21
+ require_once GFCommon::get_base_path() . '/currency.php';
22
 
23
  /**
24
  * Controls the display and output of a Gravity Form field
89
  <div class="row-separator products-title-container">
90
  <h3 class="product-field-title gfpdf-field">
91
  <?php
92
+ $label = apply_filters( 'gform_order_label', __( 'Order', 'gravityforms' ), $form_id );
93
  $label = apply_filters( 'gform_order_label_' . $form_id, $label, $form_id );
94
 
95
+ echo esc_html( $label );
96
  ?>
97
  </h3>
98
  </div>
105
  <tr>
106
  <th class="entry-products-col1">
107
  <?php
108
+ $label = apply_filters( 'gform_product', __( 'Product', 'gravityforms' ), $form_id );
109
  $label = apply_filters( 'gform_product_' . $form_id, $label, $form_id );
110
 
111
+ echo esc_html( $label );
112
  ?>
113
  </th>
114
 
115
  <th class="textcenter entry-products-col2">
116
  <?php
117
+ $label = apply_filters( 'gform_product_qty', __( 'Qty', 'gravityforms' ), $form_id );
118
  $label = apply_filters( 'gform_product_qty_' . $form_id, $label, $form_id );
119
 
120
+ echo esc_html( $label );
121
  ?>
122
  </th>
123
  <th class="entry-products-col3">
124
  <?php
125
+ $label = apply_filters( 'gform_product_unitprice', __( 'Unit Price', 'gravityforms' ), $form_id );
126
  $label = apply_filters( 'gform_product_unitprice_' . $form_id, $label, $form_id );
127
 
128
+ echo esc_html( $label );
129
  ?>
130
  </th>
131
  <th class="entry-products-col4">
132
  <?php
133
+ $label = apply_filters( 'gform_product_price', __( 'Price', 'gravityforms' ), $form_id );
134
  $label = apply_filters( 'gform_product_price_' . $form_id, $label, $form_id );
135
 
136
+ echo esc_html( $label );
137
  ?>
138
  </th>
139
  </tr>
151
  <tr>
152
  <td>
153
  <div class="product_name">
154
+ <?php echo esc_html( $product['name'] ); ?>
155
  </div>
156
 
157
  <?php
164
  foreach ( $product['options'] as $option ) :
165
  $price += $option['price'];
166
  ?>
167
+ <li><?php echo esc_html( $option['option_label'] ); ?></li>
168
  <?php endforeach; ?>
169
  </ul>
170
  <?php endif; ?>
171
  </td>
172
+ <td class="textcenter"><?php echo esc_html( $product['quantity'] ); ?></td>
173
+ <td class="textright"><?php echo esc_html( GFCommon::format_number( $price, 'currency', rgar( $this->entry, 'currency' ) ) ); ?></td>
174
+ <td class="textright"><?php echo esc_html( $product['subtotal_formatted'] ); ?></td>
175
  </tr>
176
  <?php endforeach; ?>
177
 
192
  <?php if ( $index === 0 ): ?>
193
  <td class="emptycell"
194
  colspan="2"
195
+ rowspan="<?php echo esc_attr( $gpecommerce->get_order_summary_item_count( $order_summary ) ); ?>"></td>
196
  <?php endif; ?>
197
+ <td class="totals" style="<?php esc_attr( $gpecommerce->style( ".order-summary/tfoot/{$class}/td.column-3" ) ); ?>">
198
+ <?php echo esc_html( $item['name'] ); ?>
199
  </td>
200
 
201
+ <td class="totals" style="<?php esc_attr( $gpecommerce->style( ".order-summary/tfoot/{$class}/td.column-4" ) ); ?>">
202
+ <?php echo esc_html( GFCommon::to_money( $item['price'], $this->entry['currency'] ) ); ?>
203
  </td>
204
  </tr>
205
  <?php endforeach; ?>
210
  <td rowspan="3" class="emptycell"></td>
211
  <td colspan="2"
212
  class="subtotal totals"><?php esc_html_e( 'Subtotal', 'gravity-forms-pdf-extended' ); ?></td>
213
+ <td class="subtotal_amount totals"><?php echo esc_html( $products['products_totals']['subtotal_formatted'] ); ?></td>
214
  </tr>
215
  <tr>
216
  <td colspan="2"
217
+ class="shipping totals"><?php echo esc_html( sprintf( __( 'Shipping (%s)', 'gravity-forms-pdf-extended' ), $products['products_totals']['shipping_name'] ) ); ?></td>
218
+ <td class="shipping_amount totals"><?php echo esc_html( $products['products_totals']['shipping_formatted'] ); ?></td>
219
  </tr>
220
  <?php endif; ?>
221
 
226
 
227
  <td colspan="2"
228
  class="grandtotal totals"><?php esc_html_e( 'Total', 'gravityforms' ); ?></td>
229
+ <td class="grandtotal_amount totals"><?php echo esc_html( $products['products_totals']['total_formatted'] ); ?></td>
230
  </tr>
231
 
232
  <?php endif; ?>
238
 
239
  <?php
240
 
241
+ $html = apply_filters( 'gfpdf_field_product_value', ob_get_clean(), $products, $this->field, $this->form, $this->entry, $this );
242
+
243
+ if ( $this->get_output() ) {
244
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
245
+ echo $html;
246
+ }
247
+
248
+ return $html;
249
  }
250
 
251
  /**
310
  }
311
 
312
  /* calculate subtotal */
313
+ $product_subtotal = ( (float) $product['quantity'] ) * $product_unit_price;
314
 
315
  /* increment the total */
316
  $order_total += $product_subtotal;
328
  }
329
 
330
  /* Increment total */
331
+ $shipping_price = isset( $products['shipping']['price'] ) ? (float) $products['shipping']['price'] : 0;
332
  $order_total += $shipping_price;
333
  $order_subtotal = $order_total - $shipping_price;
334
 
src/Helper/Fields/Field_Radio.php CHANGED
@@ -8,6 +8,7 @@ use GFCommon;
8
  use GFPDF\Helper\Helper_Abstract_Fields;
9
  use GFPDF\Helper\Helper_Abstract_Form;
10
  use GFPDF\Helper\Helper_Misc;
 
11
 
12
  /**
13
  * @package Gravity PDF
@@ -154,8 +155,8 @@ class Field_Radio extends Helper_Abstract_Fields {
154
 
155
  /* Allow HTML if the radio value isn't the "other" option */
156
  if ( ! $this->is_user_defined_value( $value ) ) {
157
- $value = wp_kses_post( $this->gform->process_tags( wp_specialchars_decode( $value, ENT_QUOTES ), $this->form, $this->entry ) );
158
- $label = wp_kses_post( $this->gform->process_tags( wp_specialchars_decode( $label, ENT_QUOTES ), $this->form, $this->entry ) );
159
  }
160
 
161
  /* return value / label as an array */
8
  use GFPDF\Helper\Helper_Abstract_Fields;
9
  use GFPDF\Helper\Helper_Abstract_Form;
10
  use GFPDF\Helper\Helper_Misc;
11
+ use GFPDF\Statics\Kses;
12
 
13
  /**
14
  * @package Gravity PDF
155
 
156
  /* Allow HTML if the radio value isn't the "other" option */
157
  if ( ! $this->is_user_defined_value( $value ) ) {
158
+ $value = Kses::parse( $this->gform->process_tags( wp_specialchars_decode( $value, ENT_QUOTES ), $this->form, $this->entry ) );
159
+ $label = Kses::parse( $this->gform->process_tags( wp_specialchars_decode( $label, ENT_QUOTES ), $this->form, $this->entry ) );
160
  }
161
 
162
  /* return value / label as an array */
src/Helper/Fields/Field_Repeater.php CHANGED
@@ -126,17 +126,34 @@ class Field_Repeater extends Helper_Abstract_Fields {
126
  public function html( $value = '', $label = true ) {
127
  $value = $this->value();
128
 
 
 
 
 
 
 
129
  ob_start();
130
  $this->get_repeater_html( $value, $this->field );
 
131
 
132
- return ob_get_clean();
 
 
 
 
 
 
 
 
 
 
133
  }
134
 
135
  /**
136
  * Output the Repeater HTML
137
  *
138
  * @param array $value The current Repeater entry data
139
- * @param array $field The current Repeater Field
140
  *
141
  * @throws Exception
142
  * @since 5.1
@@ -152,7 +169,7 @@ class Field_Repeater extends Helper_Abstract_Fields {
152
 
153
  /* Output the Repeater Label if a sub Repeater */
154
  if ( ! $is_top_level ) {
155
- echo sprintf( '<div class="gfpdf-section-title"><h3>%s</h3></div>', $field->label );
156
  }
157
 
158
  /* Loop through the entry data for the current repeater */
@@ -180,17 +197,22 @@ class Field_Repeater extends Helper_Abstract_Fields {
180
  }
181
 
182
  /* Output a field using the standard method if not empty */
 
183
  $class = $pdf_model->get_field_class( $sub_field, $this->form, $item, $products );
 
184
  if ( ! $class->is_empty() ) {
185
  $field->cssClass = '';
186
  $container->generate( $sub_field );
187
- echo $class->html();
 
188
  $container->close( $sub_field );
189
  }
 
 
190
  }
191
 
192
  if ( $is_top_level ) {
193
- echo parent::html( ob_get_clean() );
194
  }
195
  }
196
  }
126
  public function html( $value = '', $label = true ) {
127
  $value = $this->value();
128
 
129
+ /* Ensure the field outputs the HTML and can be reset to the original value */
130
+ $output_already_enabled = $this->get_output();
131
+ if ( ! $output_already_enabled ) {
132
+ $this->enable_output();
133
+ }
134
+
135
  ob_start();
136
  $this->get_repeater_html( $value, $this->field );
137
+ $html = ob_get_clean();
138
 
139
+ /* If output wasn't enabled by default, disable again */
140
+ if ( ! $output_already_enabled ) {
141
+ $this->disable_output();
142
+ }
143
+
144
+ if ( $this->get_output() ) {
145
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
146
+ echo $html;
147
+ }
148
+
149
+ return $html;
150
  }
151
 
152
  /**
153
  * Output the Repeater HTML
154
  *
155
  * @param array $value The current Repeater entry data
156
+ * @param GF_Field_Repeater $field The current Repeater Field
157
  *
158
  * @throws Exception
159
  * @since 5.1
169
 
170
  /* Output the Repeater Label if a sub Repeater */
171
  if ( ! $is_top_level ) {
172
+ echo sprintf( '<div class="gfpdf-section-title"><h3>%s</h3></div>', esc_html( $field->label ) );
173
  }
174
 
175
  /* Loop through the entry data for the current repeater */
197
  }
198
 
199
  /* Output a field using the standard method if not empty */
200
+ /** @var Helper_Abstract_Fields $class */
201
  $class = $pdf_model->get_field_class( $sub_field, $this->form, $item, $products );
202
+
203
  if ( ! $class->is_empty() ) {
204
  $field->cssClass = '';
205
  $container->generate( $sub_field );
206
+ $class->enable_output();
207
+ $class->html();
208
  $container->close( $sub_field );
209
  }
210
+
211
+ unset( $class );
212
  }
213
 
214
  if ( $is_top_level ) {
215
+ parent::html( ob_get_clean() );
216
  }
217
  }
218
  }
src/Helper/Fields/Field_Section.php CHANGED
@@ -9,6 +9,7 @@ use GFCommon;
9
  use GFPDF\Helper\Helper_Abstract_Fields;
10
  use GFPDF\Helper\Helper_Abstract_Form;
11
  use GFPDF\Helper\Helper_Misc;
 
12
  use GPDFAPI;
13
 
14
  /**
@@ -119,11 +120,11 @@ class Field_Section extends Helper_Abstract_Fields {
119
  /* sanitize the HTML */
120
  $section = $this->value(); /* allow the same HTML as per the post editor */
121
 
122
- $html = '<div id="field-' . $this->field->id . '" class="gfpdf-section-title gfpdf-field ' . $this->field->cssClass . '">';
123
- $html .= '<h3>' . $section['title'] . '</h3>';
124
 
125
  if ( ! empty( $value ) ) {
126
- $html .= '<div id="field-' . $this->field->id . '-desc" class="gfpdf-section-description gfpdf-field">' . $section['description'] . '</div>';
127
  }
128
 
129
  $html .= '</div>';
@@ -133,7 +134,7 @@ class Field_Section extends Helper_Abstract_Fields {
133
  *
134
  * @since 4.1
135
  */
136
- return apply_filters(
137
  'gfpdf_field_section_break_html',
138
  $html,
139
  $section['title'],
@@ -144,6 +145,13 @@ class Field_Section extends Helper_Abstract_Fields {
144
  $this->entry,
145
  $this
146
  );
 
 
 
 
 
 
 
147
  }
148
 
149
  /**
@@ -161,7 +169,7 @@ class Field_Section extends Helper_Abstract_Fields {
161
  $this->cache(
162
  [
163
  'title' => esc_html( $this->field->label ),
164
- 'description' => wp_kses_post(
165
  $this->gform->process_tags( $this->field->description, $this->form, $this->entry )
166
  ),
167
  ]
9
  use GFPDF\Helper\Helper_Abstract_Fields;
10
  use GFPDF\Helper\Helper_Abstract_Form;
11
  use GFPDF\Helper\Helper_Misc;
12
+ use GFPDF\Statics\Kses;
13
  use GPDFAPI;
14
 
15
  /**
120
  /* sanitize the HTML */
121
  $section = $this->value(); /* allow the same HTML as per the post editor */
122
 
123
+ $html = '<div id="' . esc_attr( 'field-' . $this->field->id ) . '" class="gfpdf-section-title gfpdf-field ' . esc_attr( $this->field->cssClass ) . '">';
124
+ $html .= '<h3>' . esc_html( $section['title'] ) . '</h3>';
125
 
126
  if ( ! empty( $value ) ) {
127
+ $html .= '<div id="' . esc_html( 'field-' . $this->field->id . '-desc' ) . '" class="gfpdf-section-description gfpdf-field">' . Kses::parse( $section['description'] ) . '</div>';
128
  }
129
 
130
  $html .= '</div>';
134
  *
135
  * @since 4.1
136
  */
137
+ $html = apply_filters(
138
  'gfpdf_field_section_break_html',
139
  $html,
140
  $section['title'],
145
  $this->entry,
146
  $this
147
  );
148
+
149
+ if ( $this->get_output() ) {
150
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
151
+ echo $html;
152
+ }
153
+
154
+ return $html;
155
  }
156
 
157
  /**
169
  $this->cache(
170
  [
171
  'title' => esc_html( $this->field->label ),
172
+ 'description' => Kses::parse(
173
  $this->gform->process_tags( $this->field->description, $this->form, $this->entry )
174
  ),
175
  ]
src/Helper/Fields/Field_Shipping.php CHANGED
@@ -34,7 +34,7 @@ class Field_Shipping extends Helper_Abstract_Field_Products {
34
  $name = ( isset( $value['shipping_name'] ) ) ? $value['shipping_name'] . " ({$value['shipping_formatted']})" : '';
35
  $name = esc_html( $name );
36
 
37
- $price = ( isset( $value['shipping'] ) ) ? $value['shipping'] : '';
38
  $price = esc_html( $price );
39
 
40
  return $this->set_form_data( $name, $price );
@@ -58,7 +58,7 @@ class Field_Shipping extends Helper_Abstract_Field_Products {
58
  $html = '';
59
 
60
  if ( isset( $value['shipping_formatted'] ) ) {
61
- $html .= $value['shipping_name'] . ' - ' . $value['shipping_formatted'];
62
  }
63
 
64
  return parent::html( $html );
34
  $name = ( isset( $value['shipping_name'] ) ) ? $value['shipping_name'] . " ({$value['shipping_formatted']})" : '';
35
  $name = esc_html( $name );
36
 
37
+ $price = $value['shipping'] ?? '';
38
  $price = esc_html( $price );
39
 
40
  return $this->set_form_data( $name, $price );
58
  $html = '';
59
 
60
  if ( isset( $value['shipping_formatted'] ) ) {
61
+ $html .= esc_html( $value['shipping_name'] . ' - ' . $value['shipping_formatted'] );
62
  }
63
 
64
  return parent::html( $html );
src/Helper/Fields/Field_Signature.php CHANGED
@@ -98,7 +98,7 @@ class Field_Signature extends Helper_Abstract_Fields {
98
  /* Get some sane signature defaults */
99
  $width = 75;
100
  $height = 45;
101
- $html = '<img src="' . $signature . '" alt="Signature" width="' . $width . '" />';
102
 
103
  /* If we can load in the signature let's optimise the signature size for PDF display */
104
  if ( is_file( $signature ) ) {
@@ -123,7 +123,7 @@ class Field_Signature extends Helper_Abstract_Fields {
123
  $optimised_width = apply_filters( 'gfpdf_signature_width', $optimised_width, $signature_details[0] );
124
 
125
  $optimised_height = $signature_details[1] / 3;
126
- $html = str_replace( 'width="' . $width . '"', 'width="' . $optimised_width . '"', $html );
127
 
128
  /* override the default width */
129
  $width = $optimised_width;
98
  /* Get some sane signature defaults */
99
  $width = 75;
100
  $height = 45;
101
+ $html = '<img src="' . esc_url( $signature ) . '" alt="Signature" width="' . esc_attr( $width ) . '" />';
102
 
103
  /* If we can load in the signature let's optimise the signature size for PDF display */
104
  if ( is_file( $signature ) ) {
123
  $optimised_width = apply_filters( 'gfpdf_signature_width', $optimised_width, $signature_details[0] );
124
 
125
  $optimised_height = $signature_details[1] / 3;
126
+ $html = str_replace( 'width="' . esc_attr( $width ) . '"', 'width="' . esc_attr( $optimised_width ) . '"', $html );
127
 
128
  /* override the default width */
129
  $width = $optimised_width;
src/Helper/Fields/Field_Slim.php CHANGED
@@ -36,8 +36,8 @@ class Field_Slim extends Helper_Abstract_Fields {
36
  $value = $this->value();
37
  $url = $value['url'];
38
 
39
- $image = ( isset( $value['path'] ) ) ? $value['path'] : $value['url'];
40
- $html = '<a href="' . esc_url( $url ) . '"><img src="' . $image . '" /></a>';
41
 
42
  return parent::html( $html );
43
  }
36
  $value = $this->value();
37
  $url = $value['url'];
38
 
39
+ $image = $value['path'] ?? $value['url'];
40
+ $html = '<a href="' . esc_url( $url ) . '"><img src="' . esc_url( $image ) . '" /></a>';
41
 
42
  return parent::html( $html );
43
  }
src/Helper/Fields/Field_Slim_Post.php CHANGED
@@ -36,8 +36,8 @@ class Field_Slim_Post extends Helper_Abstract_Fields {
36
  $value = $this->value();
37
  $url = $value['url'];
38
 
39
- $image = ( isset( $value['path'] ) ) ? $value['path'] : $value['url'];
40
- $html = '<a href="' . esc_url( $url ) . '"><img src="' . $image . '" /></a>';
41
 
42
  return parent::html( $html );
43
  }
36
  $value = $this->value();
37
  $url = $value['url'];
38
 
39
+ $image = $value['path'] ?? $value['url'];
40
+ $html = '<a href="' . esc_url( $url ) . '"><img src="' . esc_url( $image ) . '" /></a>';
41
 
42
  return parent::html( $html );
43
  }
src/Helper/Fields/Field_Textarea.php CHANGED
@@ -7,6 +7,7 @@ use GF_Field_Textarea;
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
 
10
 
11
  /**
12
  * @package Gravity PDF
@@ -70,7 +71,7 @@ class Field_Textarea extends Helper_Abstract_Fields {
70
  $value = $this->get_value();
71
 
72
  if ( isset( $this->field->useRichTextEditor ) && true === $this->field->useRichTextEditor ) {
73
- $html = wp_kses_post(
74
  wpautop(
75
  $this->gform->process_tags( $value, $this->form, $this->entry )
76
  )
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
10
+ use GFPDF\Statics\Kses;
11
 
12
  /**
13
  * @package Gravity PDF
71
  $value = $this->get_value();
72
 
73
  if ( isset( $this->field->useRichTextEditor ) && true === $this->field->useRichTextEditor ) {
74
+ $html = Kses::parse(
75
  wpautop(
76
  $this->gform->process_tags( $value, $this->form, $this->entry )
77
  )
src/Helper/Fields/Field_Tos.php CHANGED
@@ -7,6 +7,7 @@ use GF_Field_Checkbox;
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
 
10
 
11
  /**
12
  * @package Gravity PDF
@@ -83,7 +84,7 @@ class Field_Tos extends Helper_Abstract_Fields {
83
  */
84
  public function html( $value = '', $label = true ) {
85
 
86
- $terms = wp_kses_post(
87
  wpautop(
88
  $this->gform->process_tags( $this->field->gwtermsofservice_terms, $this->form, $this->entry )
89
  )
7
  use GFPDF\Helper\Helper_Abstract_Fields;
8
  use GFPDF\Helper\Helper_Abstract_Form;
9
  use GFPDF\Helper\Helper_Misc;
10
+ use GFPDF\Statics\Kses;
11
 
12
  /**
13
  * @package Gravity PDF
84
  */
85
  public function html( $value = '', $label = true ) {
86
 
87
+ $terms = Kses::parse(
88
  wpautop(
89
  $this->gform->process_tags( $this->field->gwtermsofservice_terms, $this->form, $this->entry )
90
  )
src/Helper/Fields/Field_V3_List.php CHANGED
@@ -55,7 +55,7 @@ class Field_V3_List extends Field_List {
55
 
56
  <ul class="bulleted single-column-list">
57
  <?php foreach ( $value as $item ) : ?>
58
- <li><?= $item; ?></li>
59
  <?php endforeach; ?>
60
  </ul>
61
  <?php
55
 
56
  <ul class="bulleted single-column-list">
57
  <?php foreach ( $value as $item ) : ?>
58
+ <li><?php echo esc_html( $item ); ?></li>
59
  <?php endforeach; ?>
60
  </ul>
61
  <?php
src/Helper/Fields/Field_V3_Products.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace GFPDF\Helper\Fields;
4
 
5
  use GFPDF\Helper\Helper_QueryPath;
 
6
  use GFPDF_Vendor\QueryPath\Exception;
7
 
8
  /**
@@ -42,7 +43,7 @@ class Field_V3_Products extends Field_Products {
42
  $label = apply_filters( 'gform_order_label', esc_html__( 'Order', 'gravityforms' ), $this->form->id );
43
  $label = apply_filters( 'gform_order_label_' . $this->form->id, $label, $this->form->id );
44
 
45
- $heading = '<h2 class="default entry-view-section-break">' . $label . '</h2>';
46
 
47
  /* Pull out the .entry-products table from the HTML using querypath */
48
  $qp = new Helper_QueryPath();
@@ -51,7 +52,11 @@ class Field_V3_Products extends Field_Products {
51
  $html = $heading;
52
  $html .= $table;
53
 
54
- return $html;
 
 
 
 
55
  }
56
 
57
  }
3
  namespace GFPDF\Helper\Fields;
4
 
5
  use GFPDF\Helper\Helper_QueryPath;
6
+ use GFPDF\Statics\Kses;
7
  use GFPDF_Vendor\QueryPath\Exception;
8
 
9
  /**
43
  $label = apply_filters( 'gform_order_label', esc_html__( 'Order', 'gravityforms' ), $this->form->id );
44
  $label = apply_filters( 'gform_order_label_' . $this->form->id, $label, $this->form->id );
45
 
46
+ $heading = '<h2 class="default entry-view-section-break">' . esc_html( $label ) . '</h2>';
47
 
48
  /* Pull out the .entry-products table from the HTML using querypath */
49
  $qp = new Helper_QueryPath();
52
  $html = $heading;
53
  $html .= $table;
54
 
55
+ if ( $this->get_output() ) {
56
+ Kses::output( $html );
57
+ }
58
+
59
+ return Kses::parse( $html );
60
  }
61
 
62
  }
src/Helper/Fields/Field_V3_Section.php CHANGED
@@ -2,6 +2,8 @@
2
 
3
  namespace GFPDF\Helper\Fields;
4
 
 
 
5
  /**
6
  * @package Gravity PDF
7
  * @copyright Copyright (c) 2022, Blue Liquid Designs
@@ -34,10 +36,15 @@ class Field_V3_Section extends Field_Section {
34
  /* sanitize the HTML */
35
  $section = $this->value(); /* allow the same HTML as per the post editor */
36
 
37
- $html = '<h2 class="default entry-view-section-break" id="field-' . $this->field->id . '">' . $section['title'] . '</h2>';
38
 
39
  if ( ! empty( $value ) ) {
40
- $html .= '<div class="default entry-view-section-break entry-view-section-break-content">' . $section['description'] . '</div>';
 
 
 
 
 
41
  }
42
 
43
  return $html;
2
 
3
  namespace GFPDF\Helper\Fields;
4
 
5
+ use GFPDF\Statics\Kses;
6
+
7
  /**
8
  * @package Gravity PDF
9
  * @copyright Copyright (c) 2022, Blue Liquid Designs
36
  /* sanitize the HTML */
37
  $section = $this->value(); /* allow the same HTML as per the post editor */
38
 
39
+ $html = '<h2 class="default entry-view-section-break" id="' . esc_attr( 'field-' . $this->field->id ) . '">' . esc_html( $section['title'] ) . '</h2>';
40
 
41
  if ( ! empty( $value ) ) {
42
+ $html .= '<div class="default entry-view-section-break entry-view-section-break-content">' . Kses::parse( $section['description'] ) . '</div>';
43
+ }
44
+
45
+ if ( $this->get_output() ) {
46
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
47
+ echo $html;
48
  }
49
 
50
  return $html;
src/Helper/Fields/Field_Website.php CHANGED
@@ -63,7 +63,7 @@ class Field_Website extends Helper_Abstract_Fields {
63
  public function html( $value = '', $label = true ) {
64
  $value = $this->value();
65
 
66
- $output = ( GFCommon::is_valid_url( $value ) ) ? '<a href="' . $value . '" target="_blank">' . $value . '</a>' : $value;
67
 
68
  return parent::html( $output );
69
  }
63
  public function html( $value = '', $label = true ) {
64
  $value = $this->value();
65
 
66
+ $output = GFCommon::is_valid_url( $value ) ? '<a href="' . esc_url( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>' : esc_html( $value );
67
 
68
  return parent::html( $output );
69
  }
src/Helper/Helper_Abstract_Addon.php CHANGED
@@ -353,7 +353,7 @@ abstract class Helper_Abstract_Addon {
353
  * @since 4.2
354
  *
355
  */
356
- public abstract function plugin_updater();
357
 
358
  /**
359
  * Register the add-on with Gravity PDF
@@ -531,7 +531,7 @@ abstract class Helper_Abstract_Addon {
531
  'body' => [
532
  'edd_action' => 'check_license',
533
  'license' => $license_info['license'],
534
- 'item_name' => urlencode( $this->get_short_name() ),
535
  'url' => home_url(),
536
  ],
537
  ]
@@ -607,8 +607,8 @@ abstract class Helper_Abstract_Addon {
607
  '%1$sRegister your copy of %2$s%3$s to receive access to automatic upgrades and support. Need a license key? %4$sPurchase one now%5$s.',
608
  'gravity-forms-pdf-extended'
609
  ),
610
- '<a href="' . admin_url( 'admin.php?page=gf_settings&subview=PDF&tab=license' ) . '">',
611
- $this->get_name(),
612
  '</a>',
613
  '<a href="' . esc_url( 'https://gravitypdf.com/checkout/?edd_action=add_to_cart&download_id=' . $edd_id ) . '">',
614
  '</a>'
353
  * @since 4.2
354
  *
355
  */
356
+ abstract public function plugin_updater();
357
 
358
  /**
359
  * Register the add-on with Gravity PDF
531
  'body' => [
532
  'edd_action' => 'check_license',
533
  'license' => $license_info['license'],
534
+ 'item_name' => rawurlencode( $this->get_short_name() ),
535
  'url' => home_url(),
536
  ],
537
  ]
607
  '%1$sRegister your copy of %2$s%3$s to receive access to automatic upgrades and support. Need a license key? %4$sPurchase one now%5$s.',
608
  'gravity-forms-pdf-extended'
609
  ),
610
+ '<a href="' . esc_url( admin_url( 'admin.php?page=gf_settings&subview=PDF&tab=license' ) ) . '">',
611
+ esc_html( $this->get_name() ),
612
  '</a>',
613
  '<a href="' . esc_url( 'https://gravitypdf.com/checkout/?edd_action=add_to_cart&download_id=' . $edd_id ) . '">',
614
  '</a>'
src/Helper/Helper_Abstract_Fields.php CHANGED
@@ -7,6 +7,7 @@ use GF_Field;
7
  use GFCache;
8
  use GFCommon;
9
  use GFFormsModel;
 
10
 
11
  /**
12
  * @package Gravity PDF
@@ -72,6 +73,15 @@ abstract class Helper_Abstract_Fields {
72
  */
73
  protected $cached_results;
74
 
 
 
 
 
 
 
 
 
 
75
  /**
76
  * As come fields can have multiple field types we'll use $fieldObject to store the object
77
  *
@@ -129,7 +139,39 @@ abstract class Helper_Abstract_Fields {
129
  $this->entry = $entry;
130
  $this->form = apply_filters( 'gfpdf_current_form_object', $gform->get_form( $entry['form_id'] ), $entry, 'helper_abstract_fields' );
131
  $this->gform = $gform;
 
 
 
 
 
 
 
 
 
 
 
 
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  }
134
 
135
  /**
@@ -303,11 +345,11 @@ abstract class Helper_Abstract_Fields {
303
  $label = esc_html( $this->get_label() );
304
  $type = $this->field->get_input_type();
305
 
306
- $html = '<div id="field-' . $this->field->id . '" class="gfpdf-' . $type . ' gfpdf-field ' . $this->field->cssClass . '">
307
  <div class="inner-container">';
308
 
309
  if ( $show_label ) {
310
- $html .= '<div class="label"><strong>' . $label . '</strong></div>';
311
  }
312
 
313
  /* If the field value is empty we'll add a non-breaking space to act like a character and maintain proper layout */
@@ -315,13 +357,19 @@ abstract class Helper_Abstract_Fields {
315
  $value = '&nbsp;';
316
  }
317
 
318
- $html .= '<div class="value">' . $value . '</div>'
319
  . '</div>'
320
  . '</div>';
321
 
322
  /* See https://docs.gravitypdf.com/v6/developers/filters/gfpdf_field_html_value for more details about this filter */
 
 
 
 
 
 
323
 
324
- return apply_filters( 'gfpdf_field_html_value', $html, $value, $show_label, $label, $this->field, $this->form, $this->entry, $this );
325
  }
326
 
327
  /**
7
  use GFCache;
8
  use GFCommon;
9
  use GFFormsModel;
10
+ use GFPDF\Statics\Kses;
11
 
12
  /**
13
  * @package Gravity PDF
73
  */
74
  protected $cached_results;
75
 
76
+ /**
77
+ * Backwards-compatible way to echo the HTML content
78
+ *
79
+ * @var bool
80
+ *
81
+ * @since 6.4.0
82
+ */
83
+ private $output = false;
84
+
85
  /**
86
  * As come fields can have multiple field types we'll use $fieldObject to store the object
87
  *
139
  $this->entry = $entry;
140
  $this->form = apply_filters( 'gfpdf_current_form_object', $gform->get_form( $entry['form_id'] ), $entry, 'helper_abstract_fields' );
141
  $this->gform = $gform;
142
+ }
143
+
144
+ /**
145
+ * Echo the HTML content when calling self::html()
146
+ *
147
+ * @return void
148
+ *
149
+ * @since 6.4.0
150
+ */
151
+ final public function enable_output(): void {
152
+ $this->output = true;
153
+ }
154
 
155
+ /**
156
+ * Do not echo the HTML content when calling self::html()
157
+ *
158
+ * @return void
159
+ *
160
+ * @since 6.4.0
161
+ */
162
+ final public function disable_output(): void {
163
+ $this->output = false;
164
+ }
165
+
166
+ /**
167
+ * Checks if the output should be echoed or not
168
+ *
169
+ * @return bool
170
+ *
171
+ * @since 6.4.0
172
+ */
173
+ final public function get_output(): bool {
174
+ return $this->output;
175
  }
176
 
177
  /**
345
  $label = esc_html( $this->get_label() );
346
  $type = $this->field->get_input_type();
347
 
348
+ $html = '<div id="' . esc_attr( 'field-' . $this->field->id ) . '" class="gfpdf-field ' . esc_attr( 'gfpdf-' . $type ) . ' ' . esc_attr( $this->field->cssClass ) . '">
349
  <div class="inner-container">';
350
 
351
  if ( $show_label ) {
352
+ $html .= '<div class="label"><strong>' . Kses::parse( $label ) . '</strong></div>';
353
  }
354
 
355
  /* If the field value is empty we'll add a non-breaking space to act like a character and maintain proper layout */
357
  $value = '&nbsp;';
358
  }
359
 
360
+ $html .= '<div class="value">' . Kses::parse( $value ) . '</div>'
361
  . '</div>'
362
  . '</div>';
363
 
364
  /* See https://docs.gravitypdf.com/v6/developers/filters/gfpdf_field_html_value for more details about this filter */
365
+ $html = apply_filters( 'gfpdf_field_html_value', $html, $value, $show_label, $label, $this->field, $this->form, $this->entry, $this );
366
+
367
+ if ( $this->get_output() ) {
368
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
369
+ echo $html;
370
+ }
371
 
372
+ return $html;
373
  }
374
 
375
  /**
src/Helper/Helper_Abstract_Options.php CHANGED
@@ -280,6 +280,7 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
280
 
281
  /* Check if our setting exists */
282
  if ( isset( $wp_settings_fields[ $group ][ $group ][ $setting ]['args'][ $option_id ] ) ) {
 
283
  $wp_settings_fields[ $group ][ $group ][ $setting ]['args'][ $option_id ] = $option_value;
284
 
285
  return true;
@@ -334,9 +335,10 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
334
  */
335
  public function get_form_settings() {
336
 
337
- /* get GF settings */
338
- $form_id = ( ! empty( $_GET['id'] ) ) ? (int) rgget( 'id' ) : (int) rgpost( 'id' );
339
- $pid = ( ! empty( $_GET['pid'] ) ) ? rgget( 'pid' ) : rgpost( 'gform_pdf_id' );
 
340
 
341
  /* return early if no ID set */
342
  if ( ! $form_id || ! $pid ) {
@@ -592,8 +594,6 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
592
  $this->data->form_settings[ $form_id ] = $options;
593
  }
594
 
595
- /* true if successful, false if failed */
596
-
597
  return $did_update;
598
  }
599
 
@@ -657,8 +657,6 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
657
  $this->data->form_settings[ $form_id ] = $options;
658
  }
659
 
660
- /* true if successful, false if failed */
661
-
662
  return $did_update;
663
  }
664
 
@@ -1095,10 +1093,12 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1095
 
1096
  $gfpdf_options = $this->settings;
1097
 
 
1098
  if ( empty( $_POST['_wp_http_referer'] ) || empty( $_POST['option_page'] ) || $_POST['option_page'] !== 'gfpdf_settings' ) {
1099
  return $input;
1100
  }
1101
 
 
1102
  parse_str( $_POST['_wp_http_referer'], $referrer );
1103
 
1104
  $all_settings = $this->get_registered_fields();
@@ -1193,7 +1193,7 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1193
  /**
1194
  * Sanitize text / textarea fields
1195
  *
1196
- * @param array $input The field value
1197
  *
1198
  * @return string $input Sanitized value
1199
  * @since 4.0
@@ -1206,7 +1206,7 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1206
  /**
1207
  * Sanitize number fields
1208
  *
1209
- * @param array $input The field value
1210
  *
1211
  * @return string $input Sanitized value
1212
  * @since 4.0
@@ -1277,7 +1277,7 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1277
  * Don't do any sanitization on input, which was causing problems with merge tags in HTML attributes.
1278
  * See https://github.com/GravityPDF/gravity-pdf/issues/492 for more details.
1279
  *
1280
- * @internal Devs should run the field through wp_kses_post() on output to correctly sanitize
1281
  * @since 4.0.6
1282
  */
1283
  return $value;
@@ -1296,9 +1296,9 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1296
  );
1297
 
1298
  return $value;
1299
- } else {
1300
- return wp_strip_all_tags( $value );
1301
  }
 
 
1302
  }
1303
  }
1304
 
@@ -1377,7 +1377,7 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1377
 
1378
  /* Fix up our conditional logic array so it returns a string value */
1379
  if ( $args['id'] === 'conditionalLogic' && isset( $pdf_form_settings['conditionalLogic'] ) ) {
1380
- $pdf_form_settings['conditionalLogic'] = json_encode( $pdf_form_settings['conditionalLogic'] );
1381
  }
1382
 
1383
  switch ( $args['type'] ) {
@@ -1509,15 +1509,31 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1509
 
1510
  /* get our selected value */
1511
  $checked = $this->get_form_value( $args );
1512
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1513
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1514
- $id = ( isset( $args['idOverride'] ) ) ? esc_attr( $args['idOverride'] ) : 'gfpdf_settings[' . esc_attr( $args['id'] ) . ']';
1515
 
1516
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc2'] ) . '</label></div>';
1517
- $html .= '<input type="checkbox" id="' . $id . '" class="gfpdf_settings_' . $args['id'] . ' ' . $class . '" name="gfpdf_settings[' . $args['id'] . ']" value="1" ' . $checked . ' ' . $required . ' />';
1518
- $html .= '<label for="' . $id . '"> ' . wp_kses_post( $args['desc'] ) . '</label>';
 
 
 
1519
 
1520
- echo $html;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1521
  }
1522
 
1523
  /**
@@ -1533,29 +1549,50 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1533
  */
1534
  public function multicheck_callback( $args ) {
1535
 
1536
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1537
- $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1538
- $args['id'] = esc_attr( $args['id'] );
1539
-
1540
- if ( ! empty( $args['options'] ) ) {
1541
- echo '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1542
 
1543
- foreach ( $args['options'] as $key => $option ) {
 
 
1544
 
1545
- /* Set up multi-select option to pass to our form value getter */
1546
- $args['multi-key'] = esc_attr( $key );
1547
- $args['multi-option'] = $key;
 
 
 
1548
 
1549
- $enabled = $this->get_form_value( $args );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1550
 
1551
- echo '<div class="gfpdf-settings-multicheck-wrapper">';
1552
- echo '<input name="gfpdf_settings[' . $args['id'] . '][' . $args['multi-key'] . ']" id="gfpdf_settings[' . $args['id'] . '][' . $args['multi-key'] . ']" class="gfpdf_settings_' . $args['id'] . ' ' . $class . '" type="checkbox" value="' . $args['multi-key'] . '" ' . checked( $key, $enabled, false ) . ' ' . $required . ' />&nbsp;';
1553
- echo '<label for="gfpdf_settings[' . $args['id'] . '][' . $args['multi-key'] . ']">' . esc_html( $option ) . '</label>';
1554
- echo '</div>';
1555
- }
1556
 
1557
- echo wp_kses_post( $args['desc2'] );
1558
- }
1559
  }
1560
 
1561
  /**
@@ -1572,25 +1609,44 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1572
  public function radio_callback( $args ) {
1573
 
1574
  /* get selected value (if any) */
1575
- $selected = $this->get_form_value( $args );
1576
- $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1577
- $args['id'] = esc_attr( $args['id'] );
1578
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1579
 
1580
- foreach ( $args['options'] as $key => $option ) {
 
 
 
 
 
 
1581
 
 
 
1582
  $checked = false;
1583
  if ( $selected === $key ) {
1584
  $checked = true;
1585
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1586
 
1587
- $html .= '<span class="entry-view"><input name="gfpdf_settings[' . $args['id'] . ']" class="gfpdf_settings_' . $args['id'] . '" id="gfpdf_settings[' . $args['id'] . '][' . esc_attr( $key ) . ']" type="radio" value="' . esc_attr( $key ) . '" ' . checked( true, $checked, false ) . ' ' . $required . ' />';
1588
- $html .= '<label for="gfpdf_settings[' . $args['id'] . '][' . esc_attr( $key ) . ']">' . $option . '</label></span>';
1589
- }
1590
-
1591
- $html .= wp_kses_post( $args['desc2'] );
1592
 
1593
- echo $html;
1594
  }
1595
 
1596
  /**
@@ -1608,24 +1664,34 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1608
 
1609
  /* get selected value (if any) */
1610
  $value = $this->get_form_value( $args );
1611
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1612
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
1613
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1614
- $args['id'] = esc_attr( $args['id'] );
1615
 
1616
- $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? esc_attr( $args['size'] ) : 'regular';
1617
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1618
- $html .= '<input type="text" class="' . $size . '-text ' . $class . '" id="gfpdf_settings[' . $args['id'] . ']" class="gfpdf_settings_' . $args['id'] . '" name="gfpdf_settings[' . $args['id'] . ']" value="' . esc_attr( $value ) . '" ' . $required;
1619
 
1620
- foreach ( $input_data as $data_id => $data_value ) {
1621
- $html .= ' data-' . $data_id . '="' . esc_html( $data_value ) . '" ';
1622
- }
 
 
1623
 
1624
- $html .= ' />';
 
 
 
 
 
 
 
 
 
 
1625
 
1626
- $html .= wp_kses_post( $args['desc2'] );
1627
 
1628
- echo $html;
1629
  }
1630
 
1631
  /**
@@ -1642,37 +1708,51 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1642
  public function license_callback( $args ) {
1643
 
1644
  /* get selected value (if any) */
1645
- $value = $this->get_form_value( $args );
1646
- $args['id'] = esc_attr( $args['id'] );
1647
-
1648
- $html = '';
1649
-
1650
- $is_error = ! in_array( $value['status'], [ '', 'active' ], true );
1651
- $is_active = $value['status'] === 'active';
1652
-
1653
- /* Show status info */
1654
- if ( ! empty( $value['msg'] ) ) {
1655
- $alert = $is_error ? '<div class="alert gforms_note_error">%s</div>' : '<div id="message" class="alert gforms_note_success">%s</div>';
1656
- $html .= sprintf( $alert, wp_kses_post( $value['msg'] ) );
1657
- }
1658
 
1659
- $html .= '<label for="gfpdf_settings[' . esc_attr( $args['id'] ) . ']" class="screen-reader-text"> ' . esc_html( $args['name'] ) . ' ' . esc_html__( 'license key', 'gravity-forms-pdf-extended' ) . '</label>';
1660
- $html .= '<input autocomplete="off" type="text" class="regular-text" id="gfpdf_settings[' . esc_attr( $args['id'] ) . ']" class="gfpdf_settings_' . esc_attr( $args['id'] ) . '" name="gfpdf_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value['key'] ) . '" />';
1661
-
1662
- /* Add renewal info */
1663
- if ( $is_active ) {
1664
- $html .= ' <button
1665
- class="button primary white gfpdf-deactivate-license"
1666
- data-addon-name="' . esc_attr( substr( $args['id'], 8 ) ) . '"
1667
- data-license="' . esc_attr( $value['key'] ) . '"
1668
- data-nonce="' . wp_create_nonce( 'gfpdf_deactivate_license' ) . '">' .
1669
- esc_attr__( 'Deactivate License', 'gravity-forms-pdf-extended' ) .
1670
- '</button>';
1671
- }
1672
 
1673
- $html .= wp_kses_post( $args['desc2'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1674
 
1675
- echo $html;
1676
  }
1677
 
1678
  /**
@@ -1697,28 +1777,41 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1697
  }
1698
 
1699
  /* check if required */
1700
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1701
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1702
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
1703
- $args['id'] = esc_attr( $args['id'] );
1704
 
1705
  $max = isset( $args['max'] ) ? (int) $args['max'] : 999999;
1706
  $min = isset( $args['min'] ) ? (int) $args['min'] : 0;
1707
  $step = isset( $args['step'] ) ? (int) $args['step'] : 1;
1708
 
1709
- $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? esc_attr( $args['size'] ) : 'regular';
1710
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1711
- $html .= '<input type="number" step="' . esc_attr( $step ) . '" max="' . esc_attr( $max ) . '" min="' . esc_attr( $min ) . '" class="' . $size . '-text gfpdf_settings_' . $args['id'] . ' ' . $class . '" id="gfpdf_settings[' . $args['id'] . ']" name="gfpdf_settings[' . $args['id'] . ']" value="' . esc_attr( $value ) . '" ' . $required;
1712
 
1713
- foreach ( $input_data as $data_id => $data_value ) {
1714
- $html .= ' data-' . $data_id . '="' . esc_html( $data_value ) . '" ';
1715
- }
1716
 
1717
- $html .= ' /> ';
 
 
 
 
1718
 
1719
- $html .= wp_kses_post( $args['desc2'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1720
 
1721
- echo $html;
1722
  }
1723
 
1724
  /**
@@ -1736,30 +1829,43 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1736
 
1737
  /* get selected value (if any) */
1738
  $value = $this->get_form_value( $args );
1739
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1740
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1741
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
1742
- $args['id'] = esc_attr( $args['id'] );
1743
-
1744
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1745
- $html .= '<textarea cols="50" rows="5" id="gfpdf_settings[' . $args['id'] . ']" class="large-text gfpdf_settings_' . $args['id'] . ' ' . $class . '" name="gfpdf_settings[' . $args['id'] . ']" ' . $required;
1746
-
1747
- foreach ( $input_data as $data_id => $data_value ) {
1748
- $html .= ' data-' . $data_id . '="' . esc_html( $data_value ) . '" ';
1749
- }
1750
 
1751
- $html .= '>' . esc_textarea( $value ) . '</textarea>';
1752
 
1753
- /* Check if the field should include a toggle option */
1754
- $toggle = ( ! empty( $args['toggle'] ) ) ? $args['toggle'] : false;
 
1755
 
1756
- if ( $toggle !== false ) {
1757
- $html = $this->create_toggle_input( $toggle, $html, $value );
1758
- }
 
 
1759
 
1760
- $html .= wp_kses_post( $args['desc2'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1761
 
1762
- echo $html;
1763
  }
1764
 
1765
  /**
@@ -1776,17 +1882,30 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1776
  public function password_callback( $args ) {
1777
 
1778
  /* get selected value (if any) */
1779
- $value = $this->get_form_value( $args );
1780
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1781
- $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1782
- $args['id'] = esc_attr( $args['id'] );
 
 
 
 
 
 
 
 
1783
 
1784
- $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? esc_attr( $args['size'] ) : 'regular';
1785
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1786
- $html .= '<input type="password" class="' . $size . '-text ' . $class . '" id="gfpdf_settings[' . $args['id'] . ']" class="gfpdf_settings_' . $args['id'] . '" name="gfpdf_settings[' . $args['id'] . ']" value="' . esc_attr( $value ) . '" ' . $required . ' />';
1787
- $html .= wp_kses_post( $args['desc2'] );
 
 
 
1788
 
1789
- echo $html;
 
 
1790
  }
1791
 
1792
  /**
@@ -1804,11 +1923,10 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1804
 
1805
  /* get selected value (if any) */
1806
  $value = $this->get_form_value( $args );
1807
- $placeholder = ( isset( $args['placeholder'] ) ) ? esc_attr( $args['placeholder'] ) : '';
1808
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1809
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1810
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
1811
- $args['id'] = esc_attr( $args['id'] );
1812
 
1813
  $multiple = '';
1814
  $multiple_ext = '';
@@ -1817,36 +1935,52 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1817
  $multiple_ext = '[]';
1818
  }
1819
 
1820
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1821
 
1822
- $select = '<select id="gfpdf_settings[' . $args['id'] . ']" class="gfpdf_settings_' . $args['id'] . ' ' . $class . '" name="gfpdf_settings[' . $args['id'] . ']' . $multiple_ext . '" data-placeholder="' . $placeholder . '" ' . $multiple . ' ' . $required;
 
 
 
 
1823
 
1824
- foreach ( $input_data as $data_id => $data_value ) {
1825
- $select .= ' data-' . $data_id . '="' . esc_html( $data_value ) . '" ';
1826
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1827
 
1828
- $select .= '>';
1829
- $select .= $this->build_options_for_select( $args['options'], $value );
1830
- $select .= '</select>';
1831
-
1832
- if ( ! empty( $args['chosen'] ) ) {
1833
- $select = sprintf( '<span class="gform-settings-input__container"><span class="gform-settings-field__select--enhanced">%s</span></span>', $select );
1834
-
1835
- $select .= '<script type="text/javascript">
1836
- jQuery( document ).ready( function () {
1837
- jQuery( "#gfpdf_settings\\\\[' . esc_attr( $args['id'] ) . '\\\\]" ).select2( {
1838
- minimumResultsForSearch: Infinity,
1839
- dropdownCssClass: "gform-settings-field__select-enhanced-container",
1840
- dropdownParent: jQuery( "#gfpdf_settings\\\\[' . esc_attr( $args['id'] ) . '\\\\]" ).parent(),
1841
- } );
1842
- } );
1843
- </script>';
1844
- }
1845
 
1846
- $html .= $select;
1847
- $html .= wp_kses_post( $args['desc2'] );
1848
 
1849
- echo $html;
1850
  }
1851
 
1852
  /**
@@ -1854,13 +1988,17 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1854
  *
1855
  * @param array $options The list of options that should be displayed
1856
  * @param array|string $value The selected option
 
1857
  *
1858
- * @return string
1859
  *
1860
  * @since 4.1
1861
  */
1862
- public function build_options_for_select( $options, $value ) {
1863
- $html = '';
 
 
 
1864
  foreach ( $options as $option => $name ) {
1865
  if ( ! is_array( $name ) ) {
1866
  $selected = '';
@@ -1875,9 +2013,9 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1875
  $selected = selected( $option, $value, false );
1876
  }
1877
 
1878
- $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
1879
  } else {
1880
- $html .= '<optgroup label="' . esc_attr( $option ) . '">';
1881
  foreach ( $name as $op_value => $op_label ) {
1882
  $selected = '';
1883
  if ( is_array( $value ) ) {
@@ -1891,13 +2029,15 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1891
  $selected = selected( $op_value, $value, false );
1892
  }
1893
 
1894
- $html .= '<option value="' . esc_attr( $op_value ) . '" ' . $selected . '>' . esc_html( $op_label ) . '</option>';
1895
  }
1896
- $html .= '</optgroup>';
1897
  }
1898
  }
1899
 
1900
- return $html;
 
 
1901
  }
1902
 
1903
  /**
@@ -1915,15 +2055,25 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1915
  /* get selected value (if any) */
1916
  $value = $this->get_form_value( $args );
1917
 
1918
- $rows = isset( $args['size'] ) ? esc_attr( $args['size'] ) : 20;
1919
- $args['id'] = esc_attr( $args['id'] );
1920
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1921
 
1922
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1923
 
1924
- if ( function_exists( 'wp_editor' ) ) {
1925
- ob_start();
1926
- echo '<span class="mt-gfpdf_settings_' . $args['id'] . ' mt-gfpdf-merge-tag-selector-container"></span>';
 
 
 
 
 
 
 
 
 
 
1927
  wp_editor(
1928
  $value,
1929
  'gfpdf_settings_' . $args['id'],
@@ -1938,21 +2088,24 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1938
  ]
1939
  )
1940
  );
1941
- $html .= ob_get_clean();
1942
- } else {
1943
- $html .= '<textarea class="large-text" rows="' . $rows . '" class="gfpdf_settings_' . $args['id'] . ' ' . $class . '" id="gfpdf_settings[' . $args['id'] . ']" name="gfpdf_settings[' . $args['id'] . ']">' . esc_textarea( $value ) . '</textarea>';
1944
- }
1945
-
1946
- /* Check if the field should include a toggle option */
1947
- $toggle = ( ! empty( $args['toggle'] ) ) ? $args['toggle'] : false;
1948
-
1949
- if ( $toggle !== false ) {
1950
- $html = $this->create_toggle_input( $toggle, $html, $value );
1951
- }
1952
-
1953
- $html .= wp_kses_post( $args['desc2'] );
 
 
 
1954
 
1955
- echo $html;
1956
  }
1957
 
1958
  /**
@@ -1970,20 +2123,41 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
1970
 
1971
  /* get selected value (if any) */
1972
  $value = $this->get_form_value( $args );
1973
- $uploader_title = ( isset( $args['uploaderTitle'] ) ) ? esc_attr( $args['uploaderTitle'] ) : esc_attr__( 'Select Media', 'gravity-forms-pdf-extended' );
1974
- $uploader_button_text = ( isset( $args['uploaderButtonText'] ) ) ? esc_attr( $args['uploaderButtonText'] ) : esc_attr__( 'Select Media', 'gravity-forms-pdf-extended' );
1975
- $button_text = ( isset( $args['buttonText'] ) ) ? esc_attr( $args['buttonText'] ) : esc_attr__( 'Upload File', 'gravity-forms-pdf-extended' );
1976
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
1977
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1978
- $args['id'] = esc_attr( $args['id'] );
1979
- $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? esc_attr( $args['size'] ) : 'regular';
1980
 
1981
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
1982
- $html .= '<div class="gfpdf-upload-setting-container"><input type="text" class="' . $size . '-text gfpdf_settings_' . $args['id'] . ' ' . $class . '" id="gfpdf_settings[' . $args['id'] . ']" name="gfpdf_settings[' . $args['id'] . ']" value="' . esc_attr( $value ) . '" ' . $required . ' />';
1983
- $html .= '<input type="button" class="gfpdf_settings_upload_button button-secondary" data-uploader-title="' . $uploader_title . '" data-uploader-button-text="' . $uploader_button_text . '" value="' . $button_text . '" /></div>';
1984
- $html .= wp_kses_post( $args['desc2'] );
1985
 
1986
- echo $html;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1987
  }
1988
 
1989
 
@@ -2001,16 +2175,31 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2001
  public function color_callback( $args ) {
2002
 
2003
  /* get selected value (if any) */
2004
- $value = $this->get_form_value( $args );
2005
- $default = isset( $args['std'] ) ? esc_attr( $args['std'] ) : '';
2006
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
2007
- $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
2008
- $args['id'] = esc_attr( $args['id'] );
 
 
 
 
 
 
 
2009
 
2010
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . $args['id'] . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div><div>';
2011
- $html .= '<input type="text" class="gfpdf-color-picker gfpdf_settings_' . $args['id'] . ' ' . $class . '" id="gfpdf_settings[' . $args['id'] . ']" name="gfpdf_settings[' . $args['id'] . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $default ) . '" ' . $required . ' /></div>';
 
 
 
 
 
 
 
 
2012
 
2013
- echo $html;
2014
  }
2015
 
2016
  /**
@@ -2026,23 +2215,35 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2026
  */
2027
  public function button_callback( $args ) {
2028
 
2029
- $nonce = wp_create_nonce( 'gfpdf_settings[' . $args['id'] . ']' );
2030
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
2031
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
2032
 
2033
- $html = '<div class="gform-settings-description gform-kitchen-sink">' . wp_kses_post( $args['desc'] ) . '</div>';
2034
 
2035
- $html .= '<div id="gfpdf-button-wrapper-' . esc_attr( $args['id'] ) . '">';
2036
- $html .= '<button id="gfpdf_settings[' . $args['id'] . ']" name="gfpdf_settings[' . $args['id'] . '][name]" value="' . $args['id'] . '" class="button gfpdf-button ' . $class . '" type="submit"';
 
2037
 
2038
- foreach ( $input_data as $data_id => $data_value ) {
2039
- $html .= ' data-' . $data_id . '="' . esc_html( $data_value ) . '" ';
2040
- }
 
 
 
 
 
 
 
 
 
 
2041
 
2042
- $html .= '>' . esc_html( $args['std'] ) . '</button></div>';
2043
- $html .= '<input type="hidden" name="gfpdf_settings[' . $args['id'] . '][nonce]" value="' . $nonce . '" />';
 
 
2044
 
2045
- echo $html;
2046
  }
2047
 
2048
  /**
@@ -2058,26 +2259,25 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2058
  $value = 'Yes';
2059
  }
2060
 
2061
- $class = isset( $args['inputClass'] ) ? esc_attr( $args['inputClass'] ) : '';
2062
- $args['id'] = esc_attr( $args['id'] );
2063
- $name = isset( $args['name'] ) ? $args['name'] : '';
2064
 
2065
  ?>
2066
- <div class="gform-settings-field gform-settings-field__toggle <?= $class ?>">
2067
- <div class="gform-settings-description gform-kitchen-sink"><?= wp_kses_post( $args['desc'] ) ?></div>
2068
 
2069
  <span class="gform-settings-input__container">
2070
- <input type="checkbox" id="gfpdf_settings[<?= $args['id'] ?>]" name="gfpdf_settings[<?= $args['id'] ?>]" value="Yes" <?= checked( $value, 'Yes', false ) ?> />
2071
- <label class="gform-field__toggle-container" for="gfpdf_settings[<?= $args['id'] ?>]">
2072
- <?php if ( strlen( $name ) > 0 ): ?>
2073
- <span class="screen-reader-text"><?= $name ?></span>
2074
  <?php endif; ?>
2075
 
2076
  <span class="gform-field__toggle-switch"></span>
2077
  </label>
2078
  </span>
2079
 
2080
- <?= wp_kses_post( $args['desc2'] ) ?>
2081
  </div>
2082
  <?php
2083
  }
@@ -2099,11 +2299,13 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2099
 
2100
  $this->checkbox_callback( $args );
2101
 
2102
- $html = '<div id="gfpdf_conditional_logic_container" class="gform-settings-field__conditional-logic" style="display: none">
 
 
2103
  <!-- content dynamically created from form_admin.js -->
2104
- </div>';
2105
 
2106
- echo $html;
2107
  }
2108
 
2109
  /**
@@ -2119,19 +2321,22 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2119
 
2120
  /* get selected value (if any) */
2121
  $value = $this->get_form_value( $args );
2122
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
2123
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
2124
- $args['id'] = esc_attr( $args['id'] );
2125
 
2126
- $html = '<input type="hidden" id="gfpdf_settings[' . $args['id'] . ']" class="gfpdf_settings_' . $args['id'] . ' ' . $class . '" name="gfpdf_settings[' . $args['id'] . ']" value="' . esc_attr( $value ) . '"';
2127
-
2128
- foreach ( $input_data as $data_id => $data_value ) {
2129
- $html .= ' data-' . $data_id . '="' . esc_html( $data_value ) . '" ';
2130
- }
2131
 
2132
- $html .= '/>';
 
 
 
 
 
 
 
 
2133
 
2134
- echo $html;
2135
  }
2136
 
2137
  /**
@@ -2152,15 +2357,45 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2152
  $value = [ '', '', 'mm' ];
2153
  }
2154
 
2155
- $placeholder = ( isset( $args['placeholder'] ) ) ? esc_attr( $args['placeholder'] ) : '';
2156
- $class = ( isset( $args['inputClass'] ) ) ? esc_attr( $args['inputClass'] ) : '';
2157
- $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? esc_attr( $args['size'] ) : 'regular';
 
 
 
 
 
 
 
 
2158
 
2159
- $html = '<div class="gform-settings-description gform-kitchen-sink"><label for="gfpdf_settings[' . esc_attr( $args['id'] ) . ']"> ' . wp_kses_post( $args['desc'] ) . '</label></div>';
2160
- $html .= esc_html__( 'Width', 'gravity-forms-pdf-extended' ) . ' <input type="number" class="' . $size . '-text gfpdf_settings_' . $args['id'] . '" id="gfpdf_settings[' . $args['id'] . ']_width" min="0" style="width: 6rem" name="gfpdf_settings[' . $args['id'] . '][]" value="' . esc_attr( $value[0] ) . '" /> &nbsp;';
2161
- $html .= esc_html__( 'Height', 'gravity-forms-pdf-extended' ) . ' <input type="number" class="' . $size . '-text gfpdf_settings_' . $args['id'] . '" id="gfpdf_settings[' . $args['id'] . ']_height" min="0" style="width: 6rem" name="gfpdf_settings[' . $args['id'] . '][]" value="' . esc_attr( $value[1] ) . '" /> &nbsp;';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2162
 
2163
- $measurement = apply_filters(
 
 
2164
  'gfpdf_paper_size_dimensions',
2165
  [
2166
  'millimeters' => esc_html__( 'mm', 'gravity-forms-pdf-extended' ),
@@ -2168,18 +2403,26 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2168
  ]
2169
  );
2170
 
2171
- $html .= ' <select id="gfpdf_settings[' . $args['id'] . ']_measurement" style="width: 6rem" class="gfpdf_settings_' . $args['id'] . ' ' . $class . '" name="gfpdf_settings[' . $args['id'] . '][]" data-placeholder="' . $placeholder . '">';
2172
 
2173
- $measure_value = esc_attr( $value[2] );
2174
- foreach ( $measurement as $key => $val ) {
2175
- $selected = ( $measure_value === $key ) ? 'selected="selected"' : '';
2176
- $html .= '<option value="' . $key . '" ' . $selected . '>' . $val . '</option>';
2177
- }
 
 
 
 
 
 
 
2178
 
2179
- $html .= '</select> ';
2180
- $html .= wp_kses_post( $args['desc2'] );
2181
 
2182
- echo $html;
 
 
2183
  }
2184
 
2185
  /**
@@ -2224,7 +2467,7 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2224
  *
2225
  */
2226
  public function missing_callback( $args ) {
2227
- printf( esc_html__( 'The callback used for the %s setting is missing.', 'gravity-forms-pdf-extended' ), "<strong>{$args['id']}</strong>" );
2228
  }
2229
 
2230
  /**
@@ -2238,12 +2481,11 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2238
  */
2239
  public function create_toggle_input( $toggle, $html, $value ) {
2240
 
2241
- $has_value = ( strlen( $value ) > 0 ) ? 1 : 0;
2242
- $current_display = ( ! $has_value ) ? 'style="display: none;"' : '';
2243
 
2244
  $toggle_elm = '<label><input class="gfpdf-input-toggle" type="checkbox" value="1" ' . checked( $has_value, 1, false ) . ' /> ' . esc_attr( $toggle ) . '</label>';
2245
 
2246
- $html = '<div class="gfpdf-toggle-wrapper" ' . $current_display . '>' .
2247
  $html .
2248
  '</div>';
2249
 
@@ -2251,4 +2493,47 @@ abstract class Helper_Abstract_Options implements Helper_Interface_Filters {
2251
 
2252
  return $html;
2253
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2254
  }
280
 
281
  /* Check if our setting exists */
282
  if ( isset( $wp_settings_fields[ $group ][ $group ][ $setting ]['args'][ $option_id ] ) ) {
283
+ /* phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited */
284
  $wp_settings_fields[ $group ][ $group ][ $setting ]['args'][ $option_id ] = $option_value;
285
 
286
  return true;
335
  */
336
  public function get_form_settings() {
337
 
338
+ /* phpcs:disable WordPress.Security.NonceVerification.Recommended */
339
+ $form_id = ! empty( $_GET['id'] ) ? (int) rgget( 'id' ) : (int) rgpost( 'id' );
340
+ $pid = ! empty( $_GET['pid'] ) ? rgget( 'pid' ) : rgpost( 'gform_pdf_id' );
341
+ /* phpcs:enable */
342
 
343
  /* return early if no ID set */
344
  if ( ! $form_id || ! $pid ) {
594
  $this->data->form_settings[ $form_id ] = $options;
595
  }
596
 
 
 
597
  return $did_update;
598
  }
599
 
657
  $this->data->form_settings[ $form_id ] = $options;
658
  }
659
 
 
 
660
  return $did_update;
661
  }
662
 
1093
 
1094
  $gfpdf_options = $this->settings;
1095
 
1096
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
1097
  if ( empty( $_POST['_wp_http_referer'] ) || empty( $_POST['option_page'] ) || $_POST['option_page'] !== 'gfpdf_settings' ) {
1098
  return $input;
1099
  }
1100
 
1101
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
1102
  parse_str( $_POST['_wp_http_referer'], $referrer );
1103
 
1104
  $all_settings = $this->get_registered_fields();
1193
  /**
1194
  * Sanitize text / textarea fields
1195
  *
1196
+ * @param string $input The field value
1197
  *
1198
  * @return string $input Sanitized value
1199
  * @since 4.0
1206
  /**
1207
  * Sanitize number fields
1208
  *
1209
+ * @param string $input The field value
1210
  *
1211
  * @return string $input Sanitized value
1212
  * @since 4.0
1277
  * Don't do any sanitization on input, which was causing problems with merge tags in HTML attributes.
1278
  * See https://github.com/GravityPDF/gravity-pdf/issues/492 for more details.
1279
  *
1280
+ * @internal Devs should run the field through \GFPDF\Statics\Kses::output() or wp_kses_post() on output to correctly sanitize
1281
  * @since 4.0.6
1282
  */
1283
  return $value;
1296
  );
1297
 
1298
  return $value;
 
 
1299
  }
1300
+
1301
+ return wp_strip_all_tags( $value );
1302
  }
1303
  }
1304
 
1377
 
1378
  /* Fix up our conditional logic array so it returns a string value */
1379
  if ( $args['id'] === 'conditionalLogic' && isset( $pdf_form_settings['conditionalLogic'] ) ) {
1380
+ $pdf_form_settings['conditionalLogic'] = wp_json_encode( $pdf_form_settings['conditionalLogic'] );
1381
  }
1382
 
1383
  switch ( $args['type'] ) {
1509
 
1510
  /* get our selected value */
1511
  $checked = $this->get_form_value( $args );
 
1512
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1513
+ $id = ( isset( $args['idOverride'] ) ) ? $args['idOverride'] : 'gfpdf_settings[' . $args['id'] . ']';
1514
 
1515
+ ?>
1516
+ <div class="gform-settings-description gform-kitchen-sink">
1517
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1518
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
1519
+ </label>
1520
+ </div>
1521
 
1522
+ <input type="checkbox"
1523
+ id="<?php echo esc_attr( $id ); ?>"
1524
+ class="gfpdf_settings_<?php echo esc_attr( $args['id'] ); ?> <?php echo esc_attr( $args['inputClass'] ?? '' ); ?>"
1525
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1526
+ value="1"
1527
+ <?php if ( strpos( $checked, 'checked' ) !== false ): ?>
1528
+ checked="checked"
1529
+ <?php endif ?>
1530
+ <?php echo esc_html( $required ); ?>
1531
+ />
1532
+
1533
+ <label for="<?php echo esc_attr( $id ); ?>">
1534
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1535
+ </label>
1536
+ <?php
1537
  }
1538
 
1539
  /**
1549
  */
1550
  public function multicheck_callback( $args ) {
1551
 
1552
+ $class = $args['inputClass'] ?? '';
1553
+ $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
 
 
 
 
1554
 
1555
+ if ( empty( $args['options'] ) ) {
1556
+ return;
1557
+ }
1558
 
1559
+ ?>
1560
+ <div class="gform-settings-description gform-kitchen-sink">
1561
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1562
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1563
+ </label>
1564
+ </div>
1565
 
1566
+ <?php
1567
+ foreach ( $args['options'] as $key => $option ):
1568
+ /* Set up multi-select option to pass to our form value getter */
1569
+ $args['multi-key'] = $key;
1570
+ $args['multi-option'] = $key;
1571
+
1572
+ $enabled = $this->get_form_value( $args );
1573
+
1574
+ ?>
1575
+
1576
+ <div class="gfpdf-settings-multicheck-wrapper">
1577
+ <input name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][<?php echo esc_attr( $args['multi-key'] ); ?>]"
1578
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][<?php echo esc_attr( $args['multi-key'] ); ?>]"
1579
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
1580
+ type="checkbox"
1581
+ value="<?php echo esc_attr( $args['multi-key'] ); ?>"
1582
+ <?php checked( $key, $enabled ); ?>
1583
+ <?php echo esc_attr( $required ); ?>
1584
+ />
1585
+ &nbsp;
1586
+
1587
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][<?php echo esc_attr( $args['multi-key'] ); ?>]">
1588
+ <?php echo esc_html( $option ); ?>
1589
+ </label>
1590
+ </div>
1591
+ <?php endforeach; ?>
1592
 
1593
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
 
 
 
 
1594
 
1595
+ <?php
 
1596
  }
1597
 
1598
  /**
1609
  public function radio_callback( $args ) {
1610
 
1611
  /* get selected value (if any) */
1612
+ $selected = $this->get_form_value( $args );
1613
+ $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
 
 
1614
 
1615
+ ?>
1616
+
1617
+ <div class="gform-settings-description gform-kitchen-sink">
1618
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1619
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1620
+ </label>
1621
+ </div>
1622
 
1623
+ <?php
1624
+ foreach ( $args['options'] as $key => $option ):
1625
  $checked = false;
1626
  if ( $selected === $key ) {
1627
  $checked = true;
1628
  }
1629
+ ?>
1630
+
1631
+ <span class="entry-view">
1632
+ <input name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1633
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?>"
1634
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][<?php echo esc_attr( $key ); ?>]"
1635
+ type="radio"
1636
+ value="<?php echo esc_attr( $key ); ?>"
1637
+ <?php checked( true, $checked ); ?>
1638
+ <?php echo esc_attr( $required ); ?>
1639
+ />
1640
+
1641
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][<?php echo esc_attr( $key ); ?>]">
1642
+ <?php echo esc_html( $option ); ?>
1643
+ </label>
1644
+ </span>
1645
+ <?php endforeach; ?>
1646
 
1647
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
 
 
 
 
1648
 
1649
+ <?php
1650
  }
1651
 
1652
  /**
1664
 
1665
  /* get selected value (if any) */
1666
  $value = $this->get_form_value( $args );
1667
+ $class = $args['inputClass'] ?? '';
1668
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
1669
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1670
+ $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1671
 
1672
+ ?>
 
 
1673
 
1674
+ <div class="gform-settings-description gform-kitchen-sink">
1675
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1676
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1677
+ </label>
1678
+ </div>
1679
 
1680
+ <input type="text"
1681
+ class="<?php echo esc_attr( $size . '-text' ); ?> <?php echo esc_attr( $class ); ?>"
1682
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1683
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?>"
1684
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1685
+ value="<?php echo esc_attr( $value ); ?>"
1686
+ <?php echo esc_attr( $required ); ?>
1687
+ <?php foreach ( $input_data as $data_id => $data_value ): ?>
1688
+ <?php echo esc_html( 'data-' . $data_id ); ?>="<?php echo esc_attr( $data_value ); ?>"
1689
+ <?php endforeach; ?>
1690
+ />
1691
 
1692
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
1693
 
1694
+ <?php
1695
  }
1696
 
1697
  /**
1708
  public function license_callback( $args ) {
1709
 
1710
  /* get selected value (if any) */
1711
+ $value = $this->get_form_value( $args );
 
 
 
 
 
 
 
 
 
 
 
 
1712
 
1713
+ $error_statuses = [ '', 'active' ];
1714
+ $is_error = ! in_array( $value['status'], $error_statuses, true );
1715
+ $is_active = $value['status'] === 'active';
1716
+ ?>
 
 
 
 
 
 
 
 
 
1717
 
1718
+ <?php if ( ! empty( $value['msg'] ) ): ?>
1719
+ <?php if ( $is_error ): ?>
1720
+ <div class="alert gforms_note_error">
1721
+ <?php echo esc_html( $value['msg'] ); ?>
1722
+ </div>
1723
+ <?php else : ?>
1724
+ <div id="message" class="alert gforms_note_success">
1725
+ <?php echo esc_html( $value['msg'] ); ?>
1726
+ </div>
1727
+ <?php endif; ?>
1728
+ <?php endif; ?>
1729
+
1730
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]" class="screen-reader-text">
1731
+ <?php echo esc_html( sprintf( __( '%s license key', 'gravity-forms-pdf-extended' ), $args['name'] ) ); ?>
1732
+ </label>
1733
+
1734
+ <input autocomplete="off"
1735
+ type="text"
1736
+ class="regular-text"
1737
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1738
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?>"
1739
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1740
+ value="<?php echo esc_attr( $value['key'] ); ?>"
1741
+ />
1742
+
1743
+ <?php if ( $is_active ): ?>
1744
+ <button class="button primary white gfpdf-deactivate-license"
1745
+ data-addon-name="<?php echo esc_attr( substr( $args['id'], 8 ) ); ?>"
1746
+ data-license="<?php echo esc_attr( $value['key'] ); ?>"
1747
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'gfpdf_deactivate_license' ) ); ?>"
1748
+ >
1749
+ <?php echo esc_attr__( 'Deactivate License', 'gravity-forms-pdf-extended' ); ?>
1750
+ </button>
1751
+ <?php endif; ?>
1752
+
1753
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
1754
 
1755
+ <?php
1756
  }
1757
 
1758
  /**
1777
  }
1778
 
1779
  /* check if required */
1780
+ $class = $args['inputClass'] ?? '';
1781
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1782
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
 
1783
 
1784
  $max = isset( $args['max'] ) ? (int) $args['max'] : 999999;
1785
  $min = isset( $args['min'] ) ? (int) $args['min'] : 0;
1786
  $step = isset( $args['step'] ) ? (int) $args['step'] : 1;
1787
 
1788
+ $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
 
 
1789
 
1790
+ ?>
 
 
1791
 
1792
+ <div class="gform-settings-description gform-kitchen-sink">
1793
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1794
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1795
+ </label>
1796
+ </div>
1797
 
1798
+ <input type="number"
1799
+ step="<?php echo esc_attr( $step ); ?>"
1800
+ max="<?php echo esc_attr( $max ); ?>"
1801
+ min="<?php echo esc_attr( $min ); ?>"
1802
+ class="<?php echo esc_attr( $size . '-text' ); ?> <?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
1803
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1804
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1805
+ value="<?php echo esc_attr( $value ); ?>"
1806
+ <?php echo esc_attr( $required ); ?>
1807
+ <?php foreach ( $input_data as $data_id => $data_value ): ?>
1808
+ <?php echo esc_html( 'data-' . $data_id ); ?>="<?php echo esc_attr( $data_value ); ?>"
1809
+ <?php endforeach; ?>
1810
+ />
1811
+
1812
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
1813
 
1814
+ <?php
1815
  }
1816
 
1817
  /**
1829
 
1830
  /* get selected value (if any) */
1831
  $value = $this->get_form_value( $args );
1832
+ $class = $args['inputClass'] ?? '';
1833
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1834
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
1835
+ $toggle = ( ! empty( $args['toggle'] ) ) ? $args['toggle'] : false;
 
 
 
 
 
 
 
1836
 
1837
+ ?>
1838
 
1839
+ <?php if ( $toggle !== false ): ?>
1840
+ <?php $this->start_toggle_input( $toggle, $value ); ?>
1841
+ <?php endif; ?>
1842
 
1843
+ <div class="gform-settings-description gform-kitchen-sink">
1844
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1845
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1846
+ </label>
1847
+ </div>
1848
 
1849
+ <textarea cols="50"
1850
+ rows="5"
1851
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1852
+ class="large-text <?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
1853
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1854
+ <?php echo esc_attr( $required ); ?>
1855
+ <?php foreach ( $input_data as $data_id => $data_value ): ?>
1856
+ <?php echo esc_html( 'data-' . $data_id ); ?>="<?php echo esc_attr( $data_value ); ?>"
1857
+ <?php endforeach; ?>
1858
+ >
1859
+ <?php echo esc_textarea( $value ); ?>
1860
+ </textarea>
1861
+
1862
+ <?php if ( $toggle !== false ): ?>
1863
+ <?php $this->end_toggle_input(); ?>
1864
+ <?php endif; ?>
1865
+
1866
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
1867
 
1868
+ <?php
1869
  }
1870
 
1871
  /**
1882
  public function password_callback( $args ) {
1883
 
1884
  /* get selected value (if any) */
1885
+ $value = $this->get_form_value( $args );
1886
+ $class = $args['inputClass'] ?? '';
1887
+ $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1888
+ $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1889
+
1890
+ ?>
1891
+
1892
+ <div class="gform-settings-description gform-kitchen-sink">
1893
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1894
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1895
+ </label>
1896
+ </div>
1897
 
1898
+ <input type="password"
1899
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1900
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $size . '-text' ); ?> <?php echo esc_attr( $class ); ?>"
1901
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1902
+ value="<?php echo esc_attr( $value ); ?>"
1903
+ <?php echo esc_attr( $required ); ?>
1904
+ />
1905
 
1906
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
1907
+
1908
+ <?php
1909
  }
1910
 
1911
  /**
1923
 
1924
  /* get selected value (if any) */
1925
  $value = $this->get_form_value( $args );
1926
+ $placeholder = $args['placeholder'] ?? '';
1927
+ $class = $args['inputClass'] ?? '';
1928
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
1929
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
 
1930
 
1931
  $multiple = '';
1932
  $multiple_ext = '';
1935
  $multiple_ext = '[]';
1936
  }
1937
 
1938
+ ?>
1939
 
1940
+ <div class="gform-settings-description gform-kitchen-sink">
1941
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
1942
+ <?php echo wp_kses_post( $args['desc'] ); ?>
1943
+ </label>
1944
+ </div>
1945
 
1946
+ <?php if ( ! empty( $args['chosen'] ) ): ?>
1947
+ <span class="gform-settings-input__container">
1948
+ <span class="gform-settings-field__select--enhanced">
1949
+ <?php endif; ?>
1950
+
1951
+ <select id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
1952
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
1953
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]<?php echo esc_attr( $multiple_ext ); ?>"
1954
+ data-placeholder="<?php echo esc_attr( $placeholder ); ?>"
1955
+ <?php echo esc_attr( $multiple ); ?>
1956
+ <?php echo esc_attr( $required ); ?>
1957
+ <?php foreach ( $input_data as $data_id => $data_value ): ?>
1958
+ <?php echo esc_html( 'data-' . $data_id ); ?>="<?php echo esc_attr( $data_value ); ?>"
1959
+ <?php endforeach; ?>
1960
+ >
1961
+
1962
+ <?php $this->build_options_for_select( $args['options'], $value, true ); ?>
1963
+
1964
+ </select>
1965
+
1966
+ <?php if ( ! empty( $args['chosen'] ) ): ?>
1967
+ </span>
1968
+ </span>
1969
 
1970
+ <script type="text/javascript">
1971
+ jQuery( document ).ready( function () {
1972
+ jQuery( "#gfpdf_settings\\[<?php echo esc_attr( $args['id'] ); ?>\\]" ).select2( {
1973
+ minimumResultsForSearch: Infinity,
1974
+ dropdownCssClass: "gform-settings-field__select-enhanced-container",
1975
+ dropdownParent: jQuery( "#gfpdf_settings\\[<?php echo esc_attr( $args['id'] ); ?>\\]" ).parent(),
1976
+ } );
1977
+ } );
1978
+ </script>
1979
+ <?php endif; ?>
 
 
 
 
 
 
 
1980
 
1981
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
 
1982
 
1983
+ <?php
1984
  }
1985
 
1986
  /**
1988
  *
1989
  * @param array $options The list of options that should be displayed
1990
  * @param array|string $value The selected option
1991
+ * @param bool $echo To output or echo the content
1992
  *
1993
+ * @return string|void
1994
  *
1995
  * @since 4.1
1996
  */
1997
+ public function build_options_for_select( $options, $value, $echo = false ) {
1998
+ if ( ! $echo ) {
1999
+ ob_start();
2000
+ }
2001
+
2002
  foreach ( $options as $option => $name ) {
2003
  if ( ! is_array( $name ) ) {
2004
  $selected = '';
2013
  $selected = selected( $option, $value, false );
2014
  }
2015
 
2016
+ echo '<option value="' . esc_attr( $option ) . '" ' . ( strpos( $selected, 'selected' ) !== false ? 'selected="selected"' : '' ) . '>' . esc_html( $name ) . '</option>';
2017
  } else {
2018
+ echo '<optgroup label="' . esc_attr( $option ) . '">';
2019
  foreach ( $name as $op_value => $op_label ) {
2020
  $selected = '';
2021
  if ( is_array( $value ) ) {
2029
  $selected = selected( $op_value, $value, false );
2030
  }
2031
 
2032
+ echo '<option value="' . esc_attr( $op_value ) . '" ' . ( strpos( $selected, 'selected' ) !== false ? 'selected="selected"' : '' ) . '>' . esc_html( $op_label ) . '</option>';
2033
  }
2034
+ echo '</optgroup>';
2035
  }
2036
  }
2037
 
2038
+ if ( ! $echo ) {
2039
+ ob_get_clean();
2040
+ }
2041
  }
2042
 
2043
  /**
2055
  /* get selected value (if any) */
2056
  $value = $this->get_form_value( $args );
2057
 
2058
+ $rows = $args['size'] ?? 20;
2059
+ $class = $args['inputClass'] ?? '';
2060
+ $toggle = ( ! empty( $args['toggle'] ) ) ? $args['toggle'] : false;
2061
 
2062
+ ?>
2063
 
2064
+ <?php if ( $toggle !== false ): ?>
2065
+ <?php $this->start_toggle_input( $toggle, $value ); ?>
2066
+ <?php endif; ?>
2067
+
2068
+ <div class="gform-settings-description gform-kitchen-sink">
2069
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
2070
+ <?php echo wp_kses_post( $args['desc'] ); ?>
2071
+ </label>
2072
+ </div>
2073
+
2074
+ <?php if ( function_exists( 'wp_editor' ) ): ?>
2075
+ <span class="<?php echo esc_attr( 'mt-gfpdf_settings_' . $args['id'] ); ?> mt-gfpdf-merge-tag-selector-container"></span>
2076
+ <?php
2077
  wp_editor(
2078
  $value,
2079
  'gfpdf_settings_' . $args['id'],
2088
  ]
2089
  )
2090
  );
2091
+ ?>
2092
+ <?php else : ?>
2093
+ <textarea rows="<?php echo esc_attr( $rows ); ?>"
2094
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> large-text <?php echo esc_attr( $class ); ?>"
2095
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2096
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2097
+ >
2098
+ <?php echo esc_textarea( $value ); ?>
2099
+ </textarea>
2100
+ <?php endif; ?>
2101
+
2102
+ <?php if ( $toggle !== false ): ?>
2103
+ <?php $this->end_toggle_input(); ?>
2104
+ <?php endif; ?>
2105
+
2106
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
2107
 
2108
+ <?php
2109
  }
2110
 
2111
  /**
2123
 
2124
  /* get selected value (if any) */
2125
  $value = $this->get_form_value( $args );
2126
+ $uploader_title = $args['uploaderTitle'] ?? __( 'Select Media', 'gravity-forms-pdf-extended' );
2127
+ $uploader_button_text = $args['uploaderButtonText'] ?? __( 'Select Media', 'gravity-forms-pdf-extended' );
2128
+ $button_text = $args['buttonText'] ?? __( 'Upload File', 'gravity-forms-pdf-extended' );
2129
+ $class = $args['inputClass'] ?? '';
2130
  $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
2131
+ $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
 
2132
 
2133
+ ?>
 
 
 
2134
 
2135
+ <div class="gform-settings-description gform-kitchen-sink">
2136
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
2137
+ <?php echo wp_kses_post( $args['desc'] ); ?>
2138
+ </label>
2139
+ </div>
2140
+
2141
+ <div class="gfpdf-upload-setting-container">
2142
+ <input type="text"
2143
+ class="<?php echo esc_attr( $size . '-text' ); ?> <?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
2144
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2145
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2146
+ value="<?php echo esc_attr( $value ); ?>"
2147
+ <?php echo esc_attr( $required ); ?>
2148
+ />
2149
+
2150
+ <input type="button"
2151
+ class="gfpdf_settings_upload_button button-secondary"
2152
+ data-uploader-title="<?php echo esc_attr( $uploader_title ); ?>"
2153
+ data-uploader-button-text="<?php echo esc_attr( $uploader_button_text ); ?>"
2154
+ value="<?php echo esc_attr( $button_text ); ?>"
2155
+ />
2156
+ </div>
2157
+
2158
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
2159
+
2160
+ <?php
2161
  }
2162
 
2163
 
2175
  public function color_callback( $args ) {
2176
 
2177
  /* get selected value (if any) */
2178
+ $value = $this->get_form_value( $args );
2179
+ $default = $args['std'] ?? '';
2180
+ $class = $args['inputClass'] ?? '';
2181
+ $required = ( isset( $args['required'] ) && $args['required'] === true ) ? 'required' : '';
2182
+
2183
+ ?>
2184
+
2185
+ <div class="gform-settings-description gform-kitchen-sink">
2186
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
2187
+ <?php echo wp_kses_post( $args['desc'] ); ?>
2188
+ </label>
2189
+ </div>
2190
 
2191
+ <div>
2192
+ <input type="text"
2193
+ class="gfpdf-color-picker <?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
2194
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2195
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2196
+ value="<?php echo esc_attr( $value ); ?>"
2197
+ data-default-color="<?php echo esc_attr( $default ); ?>"
2198
+ <?php echo esc_attr( $required ); ?>
2199
+ />
2200
+ </div>
2201
 
2202
+ <?php
2203
  }
2204
 
2205
  /**
2215
  */
2216
  public function button_callback( $args ) {
2217
 
 
2218
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
2219
+ $class = $args['inputClass'] ?? '';
2220
 
2221
+ ?>
2222
 
2223
+ <div class="gform-settings-description gform-kitchen-sink">
2224
+ <?php echo wp_kses_post( $args['desc'] ); ?>
2225
+ </div>
2226
 
2227
+ <div id="gfpdf-button-wrapper-<?php echo esc_attr( $args['id'] ); ?>">
2228
+ <button id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2229
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][name]"
2230
+ value="<?php echo esc_attr( $args['id'] ); ?>"
2231
+ class="button gfpdf-button <?php echo esc_attr( $class ); ?>"
2232
+ type="submit"
2233
+ <?php foreach ( $input_data as $data_id => $data_value ): ?>
2234
+ <?php echo esc_html( 'data-' . $data_id ); ?>="<?php echo esc_attr( $data_value ); ?>";
2235
+ <?php endforeach; ?>
2236
+ >
2237
+ <?php echo esc_html( $args['std'] ); ?>
2238
+ </button>
2239
+ </div>
2240
 
2241
+ <input type="hidden"
2242
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][nonce]"
2243
+ value="<?php echo esc_attr( wp_create_nonce( 'gfpdf_settings[' . $args['id'] . ']' ) ); ?>"
2244
+ />
2245
 
2246
+ <?php
2247
  }
2248
 
2249
  /**
2259
  $value = 'Yes';
2260
  }
2261
 
2262
+ $class = $args['inputClass'] ?? '';
2263
+ $name = $args['name'] ?? '';
 
2264
 
2265
  ?>
2266
+ <div class="gform-settings-field gform-settings-field__toggle <?php echo esc_attr( $class ); ?>">
2267
+ <div class="gform-settings-description gform-kitchen-sink"><?php echo wp_kses_post( $args['desc'] ); ?></div>
2268
 
2269
  <span class="gform-settings-input__container">
2270
+ <input type="checkbox" id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]" name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]" value="Yes" <?php echo checked( $value, 'Yes', false ); ?> />
2271
+ <label class="gform-field__toggle-container" for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
2272
+ <?php if ( ! empty( $name ) ): ?>
2273
+ <span class="screen-reader-text"><?php echo esc_html( $name ); ?></span>
2274
  <?php endif; ?>
2275
 
2276
  <span class="gform-field__toggle-switch"></span>
2277
  </label>
2278
  </span>
2279
 
2280
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
2281
  </div>
2282
  <?php
2283
  }
2299
 
2300
  $this->checkbox_callback( $args );
2301
 
2302
+ ?>
2303
+
2304
+ <div id="gfpdf_conditional_logic_container" class="gform-settings-field__conditional-logic" style="display: none">
2305
  <!-- content dynamically created from form_admin.js -->
2306
+ </div>
2307
 
2308
+ <?php
2309
  }
2310
 
2311
  /**
2321
 
2322
  /* get selected value (if any) */
2323
  $value = $this->get_form_value( $args );
2324
+ $class = $args['inputClass'] ?? '';
2325
  $input_data = ( isset( $args['data'] ) && is_array( $args['data'] ) ) ? $args['data'] : [];
 
2326
 
2327
+ ?>
 
 
 
 
2328
 
2329
+ <input type="hidden"
2330
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2331
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
2332
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]"
2333
+ value="<?php echo esc_attr( $value ); ?>"
2334
+ <?php foreach ( $input_data as $data_id => $data_value ): ?>
2335
+ <?php echo esc_html( 'data-' . $data_id ); ?>="<?php echo esc_attr( $data_value ); ?>";
2336
+ <?php endforeach; ?>
2337
+ />
2338
 
2339
+ <?php
2340
  }
2341
 
2342
  /**
2357
  $value = [ '', '', 'mm' ];
2358
  }
2359
 
2360
+ $placeholder = $args['placeholder'] ?? '';
2361
+ $class = $args['inputClass'] ?? '';
2362
+ $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
2363
+
2364
+ ?>
2365
+
2366
+ <div class="gform-settings-description gform-kitchen-sink">
2367
+ <label for="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]">
2368
+ <?php echo wp_kses_post( $args['desc'] ); ?>
2369
+ </label>
2370
+ </div>
2371
 
2372
+ <?php esc_html_e( 'Width', 'gravity-forms-pdf-extended' ); ?>
2373
+ <input type="number"
2374
+ class="<?php echo esc_attr( $size . '-text' ); ?> <?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?>"
2375
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]_width"
2376
+ min="0"
2377
+ style="width: 6rem"
2378
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][]"
2379
+ value="<?php echo esc_attr( $value[0] ); ?>"
2380
+ />
2381
+
2382
+ &nbsp;
2383
+
2384
+ <?php esc_html_e( 'Height', 'gravity-forms-pdf-extended' ); ?>
2385
+ <input type="number"
2386
+ class="<?php echo esc_attr( $size . '-text' ); ?> <?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?>"
2387
+ id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]_height"
2388
+ min="0"
2389
+ style="width: 6rem"
2390
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][]"
2391
+ value="<?php echo esc_attr( $value[1] ); ?>"
2392
+ />
2393
+
2394
+ &nbsp;
2395
 
2396
+ <?php
2397
+ $measure_value = $value[2] ?? '';
2398
+ $measurement = apply_filters(
2399
  'gfpdf_paper_size_dimensions',
2400
  [
2401
  'millimeters' => esc_html__( 'mm', 'gravity-forms-pdf-extended' ),
2403
  ]
2404
  );
2405
 
2406
+ ?>
2407
 
2408
+ <select id="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>]_measurement"
2409
+ style="width: 6rem"
2410
+ class="<?php echo esc_attr( 'gfpdf_settings_' . $args['id'] ); ?> <?php echo esc_attr( $class ); ?>"
2411
+ name="gfpdf_settings[<?php echo esc_attr( $args['id'] ); ?>][]"
2412
+ data-placeholder="<?php echo esc_attr( $placeholder ); ?>"
2413
+ >
2414
+
2415
+ <?php foreach ( $measurement as $key => $val ): ?>
2416
+ <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $measure_value, $key ); ?>>
2417
+ <?php echo esc_html( $val ); ?>
2418
+ </option>
2419
+ <?php endforeach; ?>
2420
 
2421
+ </select>
 
2422
 
2423
+ <?php echo wp_kses_post( $args['desc2'] ); ?>
2424
+
2425
+ <?php
2426
  }
2427
 
2428
  /**
2467
  *
2468
  */
2469
  public function missing_callback( $args ) {
2470
+ echo wp_kses_post( sprintf( __( 'The callback used for the %s setting is missing.', 'gravity-forms-pdf-extended' ), "<strong>{$args['id']}</strong>" ) );
2471
  }
2472
 
2473
  /**
2481
  */
2482
  public function create_toggle_input( $toggle, $html, $value ) {
2483
 
2484
+ $has_value = ( $value !== '' ) ? 1 : 0;
 
2485
 
2486
  $toggle_elm = '<label><input class="gfpdf-input-toggle" type="checkbox" value="1" ' . checked( $has_value, 1, false ) . ' /> ' . esc_attr( $toggle ) . '</label>';
2487
 
2488
+ $html = '<div class="gfpdf-toggle-wrapper" ' . ( ( ! $has_value ) ? 'style="display: none;"' : '' ) . '>' .
2489
  $html .
2490
  '</div>';
2491
 
2493
 
2494
  return $html;
2495
  }
2496
+
2497
+ /**
2498
+ * Creates jQuery toggle functionality for the current field
2499
+ *
2500
+ * @param string $toggle The text to be used in the toggle
2501
+ * @param string $value Whether the field currently has a value
2502
+ *
2503
+ * @return void
2504
+ *
2505
+ * @since 6.4
2506
+ */
2507
+ public function start_toggle_input( $toggle, $value ) {
2508
+ $has_value = ! empty( $value ) ? 1 : 0;
2509
+
2510
+ ?>
2511
+
2512
+ <label>
2513
+ <input class="gfpdf-input-toggle"
2514
+ type="checkbox"
2515
+ value="1"
2516
+ <?php checked( $has_value, 1 ); ?>
2517
+ />
2518
+
2519
+ <?php echo esc_html( $toggle ); ?>
2520
+ </label>
2521
+
2522
+ <div class="gfpdf-toggle-wrapper" style="<?php echo esc_attr( $has_value === 0 ? 'display: none;' : '' ); ?>">
2523
+
2524
+ <?php
2525
+ }
2526
+
2527
+ /**
2528
+ * Close the toggle input container
2529
+ *
2530
+ * @return void
2531
+ *
2532
+ * @since 6.4
2533
+ */
2534
+ public function end_toggle_input() {
2535
+ ?>
2536
+ </div>
2537
+ <?php
2538
+ }
2539
  }
src/Helper/Helper_Abstract_Pdf_Shortcode.php CHANGED
@@ -95,7 +95,7 @@ abstract class Helper_Abstract_Pdf_Shortcode extends Helper_Abstract_Model {
95
  *
96
  * @since 4.0
97
  */
98
- public abstract function process( $attributes );
99
 
100
  /**
101
  * Try get the Entry ID from specific $_GET keys
@@ -113,9 +113,11 @@ abstract class Helper_Abstract_Pdf_Shortcode extends Helper_Abstract_Model {
113
  return $entry_id;
114
  }
115
 
 
116
  if ( isset( $_GET['lid'] ) || isset( $_GET['entry'] ) ) {
117
  return isset( $_GET['lid'] ) ? (int) $_GET['lid'] : (int) $_GET['entry'];
118
  }
 
119
 
120
  throw new GravityPdfShortcodeEntryIdException();
121
  }
@@ -314,17 +316,20 @@ abstract class Helper_Abstract_Pdf_Shortcode extends Helper_Abstract_Model {
314
  */
315
  public function gravitypdf_redirect_confirmation( $form ) {
316
 
317
- /* check if the confirmation is currently being saved */
 
318
  if ( isset( $_POST['confirmation_id'] ) ) {
319
 
320
  $this->log->notice(
321
  'Begin Converting Shortcode to URL for Redirect Confirmation',
322
  [
323
  'form_id' => $form['id'],
 
324
  'post' => $_POST,
325
  ]
326
  );
327
 
 
328
  $url = stripslashes_deep( $_POST['_gform_setting_url'] );
329
 
330
  /* check if our shortcode exists and convert it to a URL */
95
  *
96
  * @since 4.0
97
  */
98
+ abstract public function process( $attributes );
99
 
100
  /**
101
  * Try get the Entry ID from specific $_GET keys
113
  return $entry_id;
114
  }
115
 
116
+ /* phpcs:disable WordPress.Security.NonceVerification.Recommended */
117
  if ( isset( $_GET['lid'] ) || isset( $_GET['entry'] ) ) {
118
  return isset( $_GET['lid'] ) ? (int) $_GET['lid'] : (int) $_GET['entry'];
119
  }
120
+ /* phpcs:enable */
121
 
122
  throw new GravityPdfShortcodeEntryIdException();
123
  }
316
  */
317
  public function gravitypdf_redirect_confirmation( $form ) {
318
 
319
+ /* Check if the confirmation is currently being saved */
320
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
321
  if ( isset( $_POST['confirmation_id'] ) ) {
322
 
323
  $this->log->notice(
324
  'Begin Converting Shortcode to URL for Redirect Confirmation',
325
  [
326
  'form_id' => $form['id'],
327
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
328
  'post' => $_POST,
329
  ]
330
  );
331
 
332
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
333
  $url = stripslashes_deep( $_POST['_gform_setting_url'] );
334
 
335
  /* check if our shortcode exists and convert it to a URL */
src/Helper/Helper_Abstract_View.php CHANGED
@@ -98,6 +98,13 @@ abstract class Helper_Abstract_View extends Helper_Abstract_Model {
98
  */
99
  final protected function load( $filename, $args = [], $output = true ) {
100
  $path = $this->get_view_dir_path() . $filename . '.php';
 
 
 
 
 
 
 
101
  $args = array_merge( $this->data_cache, $args );
102
 
103
  if ( is_readable( $path ) ) {
@@ -107,12 +114,9 @@ abstract class Helper_Abstract_View extends Helper_Abstract_Model {
107
  /* Include our $gfpdf object automatically */
108
  global $gfpdf;
109
 
110
- /*
111
- * For backwards compatibility extract the $args variable
112
- * phpcs:disable -- disable warning about `extract`
113
- */
114
- extract( $args, EXTR_SKIP ); /* skip any arguments that would clash - i.e filename, args, output, path, this */
115
- /* phpcs:enable */
116
 
117
  include $path;
118
 
@@ -136,16 +140,13 @@ abstract class Helper_Abstract_View extends Helper_Abstract_Model {
136
  * @since 4.0
137
  */
138
  private function buffer( $path, $args = [] ) {
139
- /*
140
- * for backwards compatibility extract the $args variable
141
- * phpcs:disable -- disable warning about `extract`
142
- */
143
- extract( $args, EXTR_SKIP ); /* skip any arguments that would clash - i.e filename, args, output, path, this */
144
- /* phpcs:enable */
145
-
146
  /* Include our $gfpdf object automatically */
147
  global $gfpdf;
148
 
 
 
 
 
149
  ob_start();
150
  include $path;
151
 
98
  */
99
  final protected function load( $filename, $args = [], $output = true ) {
100
  $path = $this->get_view_dir_path() . $filename . '.php';
101
+
102
+ /* Additional validation on the path to ensure $filename stays in the $this->get_view_dir_path() directory and doesn't traverse it */
103
+ $path_to_test = realpath( $path );
104
+ if ( $path_to_test === false || strpos( $path_to_test, realpath( $this->get_view_dir_path() ) ) !== 0 ) {
105
+ return new WP_Error( 'invalid_path', sprintf( esc_html__( '%s is an invalid filename', 'gravity-forms-pdf-extended' ), $filename ) );
106
+ }
107
+
108
  $args = array_merge( $this->data_cache, $args );
109
 
110
  if ( is_readable( $path ) ) {
114
  /* Include our $gfpdf object automatically */
115
  global $gfpdf;
116
 
117
+ /* For backwards compatibility extract the $args variable */
118
+ /* phpcs:ignore WordPress.PHP.DontExtract.extract_extract */
119
+ extract( $args, EXTR_SKIP ); /* skip any arguments that would clash - i.e gfpdf, filename, args, output, path, this */
 
 
 
120
 
121
  include $path;
122
 
140
  * @since 4.0
141
  */
142
  private function buffer( $path, $args = [] ) {
 
 
 
 
 
 
 
143
  /* Include our $gfpdf object automatically */
144
  global $gfpdf;
145
 
146
+ /* for backwards compatibility extract the $args variable */
147
+ /* phpcs:ignore WordPress.PHP.DontExtract.extract_extract */
148
+ extract( $args, EXTR_SKIP ); /* skip any arguments that would clash - i.e gfpdf, args, path, this */
149
+
150
  ob_start();
151
  include $path;
152
 
src/Helper/Helper_Data.php CHANGED
@@ -77,6 +77,8 @@ class Helper_Data {
77
  *
78
  * @return mixed The data assigned to the $name property is returned
79
  *
 
 
80
  * @since 4.0
81
  */
82
  public function &__get( $name ) {
@@ -87,20 +89,7 @@ class Helper_Data {
87
  return $this->data[ $name ];
88
  }
89
 
90
- /* phpcs:disable PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection */
91
- $trace = debug_backtrace();
92
- /* phpcs:enable */
93
- trigger_error(
94
- 'Undefined property via __get(): ' . $name .
95
- ' in ' . $trace[0]['file'] .
96
- ' on line ' . $trace[0]['line'],
97
- E_USER_NOTICE
98
- );
99
-
100
- /* because we are returning by reference we need return something that can be referenced */
101
- $value = null;
102
-
103
- return $value;
104
  }
105
 
106
  /**
@@ -221,7 +210,7 @@ class Helper_Data {
221
  'pdfWorkingDir' => PDF_TEMPLATE_LOCATION,
222
  'pluginUrl' => PDF_PLUGIN_URL,
223
  'pluginPath' => PDF_PLUGIN_DIR,
224
- 'customFontData' => json_encode( $custom_fonts ),
225
  'userCapabilities' => $user_capabilities,
226
 
227
  'spinnerUrl' => admin_url( 'images/spinner-2x.gif' ),
77
  *
78
  * @return mixed The data assigned to the $name property is returned
79
  *
80
+ * @throws \Exception
81
+ *
82
  * @since 4.0
83
  */
84
  public function &__get( $name ) {
89
  return $this->data[ $name ];
90
  }
91
 
92
+ throw new \Exception( 'Could not find stored Gravity PDF data with matching name: ' . $name );
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
 
95
  /**
210
  'pdfWorkingDir' => PDF_TEMPLATE_LOCATION,
211
  'pluginUrl' => PDF_PLUGIN_URL,
212
  'pluginPath' => PDF_PLUGIN_DIR,
213
+ 'customFontData' => wp_json_encode( $custom_fonts ),
214
  'userCapabilities' => $user_capabilities,
215
 
216
  'spinnerUrl' => admin_url( 'images/spinner-2x.gif' ),
src/Helper/Helper_Field_Container.php CHANGED
@@ -227,7 +227,7 @@ class Helper_Field_Container {
227
 
228
  /* Check if we should create a placeholder column */
229
  if ( $this->faux_column && $this->does_fit_in_row( $field ) ) {
230
- echo '<div id="field-' . $field->id . '" class="gfpdf-column-placeholder gfpdf-field ' . $field->cssClass . '"></div>';
231
 
232
  /* Increase column width */
233
  $this->increment_width( $field->cssClass );
@@ -312,6 +312,7 @@ class Helper_Field_Container {
312
  protected function open_container() {
313
 
314
  $class = $this->is_row_odd_or_even();
 
315
  echo str_replace( 'row-separator', 'row-separator ' . $class, $this->open_tag );
316
 
317
  $this->increment_row_counter();
@@ -325,6 +326,7 @@ class Helper_Field_Container {
325
  * @since 4.0
326
  */
327
  protected function close_container() {
 
328
  echo $this->close_tag;
329
  }
330
 
227
 
228
  /* Check if we should create a placeholder column */
229
  if ( $this->faux_column && $this->does_fit_in_row( $field ) ) {
230
+ echo '<div id="' . esc_html( 'field-' . $field->id ) . '" class="gfpdf-column-placeholder gfpdf-field ' . esc_html( $field->cssClass ) . '"></div>';
231
 
232
  /* Increase column width */
233
  $this->increment_width( $field->cssClass );
312
  protected function open_container() {
313
 
314
  $class = $this->is_row_odd_or_even();
315
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
316
  echo str_replace( 'row-separator', 'row-separator ' . $class, $this->open_tag );
317
 
318
  $this->increment_row_counter();
326
  * @since 4.0
327
  */
328
  protected function close_container() {
329
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
330
  echo $this->close_tag;
331
  }
332
 
src/Helper/Helper_Field_Container_Gf25.php CHANGED
@@ -113,7 +113,7 @@ class Helper_Field_Container_Gf25 extends Helper_Field_Container {
113
 
114
  $row_html = ob_get_clean();
115
 
116
- /* Set the last grid item inner container width to 100% (if exists) */
117
  try {
118
  $qp = new Helper_QueryPath();
119
  echo $qp->html5( $row_html, '.grid:last-of-type .inner-container' )
@@ -122,6 +122,7 @@ class Helper_Field_Container_Gf25 extends Helper_Field_Container {
122
  } catch ( \Exception $e ) {
123
  echo $row_html;
124
  }
 
125
  }
126
  }
127
 
113
 
114
  $row_html = ob_get_clean();
115
 
116
+ /* phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped */
117
  try {
118
  $qp = new Helper_QueryPath();
119
  echo $qp->html5( $row_html, '.grid:last-of-type .inner-container' )
122
  } catch ( \Exception $e ) {
123
  echo $row_html;
124
  }
125
+ /* phpcs:enable */
126
  }
127
  }
128
 
src/Helper/Helper_Logger.php CHANGED
@@ -116,8 +116,8 @@ class Helper_Logger {
116
 
117
  /* Check if we have a handler pushed and add our Introspection and Memory Peak usage processors */
118
  if ( count( $this->log->getHandlers() ) > 0 && substr( php_sapi_name(), 0, 3 ) !== 'cli' ) {
119
- $this->log->pushProcessor( new IntrospectionProcessor );
120
- $this->log->pushProcessor( new MemoryPeakUsageProcessor );
121
 
122
  $this->log->notice( 'Log initialized' );
123
 
116
 
117
  /* Check if we have a handler pushed and add our Introspection and Memory Peak usage processors */
118
  if ( count( $this->log->getHandlers() ) > 0 && substr( php_sapi_name(), 0, 3 ) !== 'cli' ) {
119
+ $this->log->pushProcessor( new IntrospectionProcessor() );
120
+ $this->log->pushProcessor( new MemoryPeakUsageProcessor() );
121
 
122
  $this->log->notice( 'Log initialized' );
123
 
src/Helper/Helper_Misc.php CHANGED
@@ -80,13 +80,13 @@ class Helper_Misc {
80
  *
81
  */
82
  public function is_gfpdf_page() {
83
- if ( is_admin() ) {
84
- if ( isset( $_GET['page'] ) && 'gfpdf-' === ( substr( $_GET['page'], 0, 6 ) ) ||
85
- ( isset( $_GET['subview'] ) && 'PDF' === strtoupper( $_GET['subview'] ) )
86
- ) {
87
  return true;
88
  }
89
  }
 
90
 
91
  return false;
92
  }
@@ -101,13 +101,11 @@ class Helper_Misc {
101
  *
102
  */
103
  public function is_gfpdf_settings_tab( $name ) {
104
- if ( is_admin() ) {
105
- if ( $this->is_gfpdf_page() ) {
106
- $tab = ( isset( $_GET['tab'] ) ) ? $_GET['tab'] : 'general';
107
-
108
- if ( $name === $tab ) {
109
- return true;
110
- }
111
  }
112
  }
113
 
@@ -163,7 +161,7 @@ class Helper_Misc {
163
  */
164
  public function fix_header_footer( $html ) {
165
 
166
- $html = wp_kses_post( $html );
167
  $html = trim( wpautop( $html ) );
168
  $html = $this->fix_header_footer_images( $html );
169
 
@@ -367,7 +365,7 @@ class Helper_Misc {
367
  );
368
 
369
  foreach ( $files as $fileinfo ) {
370
- $function = ( $fileinfo->isDir() ) ? 'rmdir' : 'unlink';
371
  $real_path = $fileinfo->getRealPath();
372
  if ( ! $function( $real_path ) ) {
373
  throw new Exception( 'Could not run ' . $function . ' on ' . $real_path );
@@ -447,6 +445,7 @@ class Helper_Misc {
447
 
448
  foreach ( $files as $fileinfo ) {
449
  if ( $fileinfo->isDir() && ! file_exists( $destination . $files->getSubPathName() ) ) {
 
450
  if ( ! @mkdir( $destination . $files->getSubPathName() ) ) {
451
  $this->log->error(
452
  'Failed Creating Folder',
@@ -594,14 +593,14 @@ class Helper_Misc {
594
  require_once ABSPATH . 'wp-admin/includes/file.php';
595
  }
596
 
597
- /* If that didn't work let's try use home_url() and get_home_path() */
598
  $try_path = str_replace( home_url(), get_home_path(), $url );
599
 
600
  if ( is_file( $try_path ) ) {
601
  return $try_path;
602
  }
603
 
604
- /* If that didn't work let's try use site_url() and ABSPATH */
605
  $try_path = str_replace( site_url(), ABSPATH, $url );
606
 
607
  if ( is_file( $try_path ) ) {
@@ -652,14 +651,14 @@ class Helper_Misc {
652
  require_once ABSPATH . 'wp-admin/includes/file.php';
653
  }
654
 
655
- /* If that didn't work let's try use home_url() and get_home_path() */
656
  $try_url = str_replace( get_home_path(), home_url(), $path );
657
 
658
  if ( $try_url !== $path ) {
659
  return $try_url;
660
  }
661
 
662
- /* If that didn't work let's try use site_url() and ABSPATH */
663
  $try_url = str_replace( ABSPATH, site_url(), $path );
664
 
665
  if ( $try_url !== $path ) {
@@ -890,7 +889,7 @@ class Helper_Misc {
890
  $entry_details_file = GFCommon::get_base_path() . '/entry_detail.php';
891
 
892
  if ( is_file( $entry_details_file ) ) {
893
- require_once( $entry_details_file );
894
  }
895
  }
896
  }
@@ -906,9 +905,9 @@ class Helper_Misc {
906
  */
907
  public function in_array( $needle, $haystack, $strict = true ) {
908
  foreach ( $haystack as $item ) {
909
- /* phpcs:disable */
910
  if ( ( $strict ? $item === $needle : $item == $needle ) ||
911
- ( is_array( $item ) && $this->in_array( $needle, $item, $strict ) )
912
  ) {
913
  return true;
914
  }
@@ -953,15 +952,14 @@ class Helper_Misc {
953
  'Running AJAX Endpoint',
954
  [
955
  'type' => $endpoint_desc,
 
956
  'post' => $_POST,
957
  ]
958
  );
959
 
960
- /*
961
- * Validate Endpoint
962
- */
963
- $nonce = ( isset( $_POST['nonce'] ) ) ? $_POST['nonce'] : '';
964
- if ( ! wp_verify_nonce( $nonce, $nonce_name ) ) {
965
 
966
  $this->log->warning( 'Nonce Verification Failed' );
967
 
80
  *
81
  */
82
  public function is_gfpdf_page() {
83
+ /* phpcs:disable WordPress.Security.NonceVerification.Recommended */
84
+ if ( is_admin() && ( ! empty( $_GET['page'] ) || ! empty( $_GET['subview'] ) ) ) {
85
+ if ( strpos( $_GET['page'] ?? '', 'gfpdf-' ) === 0 || strtoupper( $_GET['subview'] ?? '' ) === 'PDF' ) {
 
86
  return true;
87
  }
88
  }
89
+ /* phpcs:enable */
90
 
91
  return false;
92
  }
101
  *
102
  */
103
  public function is_gfpdf_settings_tab( $name ) {
104
+ if ( is_admin() && $this->is_gfpdf_page() ) {
105
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
106
+ $tab = $_GET['tab'] ?? 'general';
107
+ if ( $name === $tab ) {
108
+ return true;
 
 
109
  }
110
  }
111
 
161
  */
162
  public function fix_header_footer( $html ) {
163
 
164
+ $html = \GFPDF\Statics\Kses::parse( $html );
165
  $html = trim( wpautop( $html ) );
166
  $html = $this->fix_header_footer_images( $html );
167
 
365
  );
366
 
367
  foreach ( $files as $fileinfo ) {
368
+ $function = ( $fileinfo->isDir() ) ? 'rmdir' : 'unlink';
369
  $real_path = $fileinfo->getRealPath();
370
  if ( ! $function( $real_path ) ) {
371
  throw new Exception( 'Could not run ' . $function . ' on ' . $real_path );
445
 
446
  foreach ( $files as $fileinfo ) {
447
  if ( $fileinfo->isDir() && ! file_exists( $destination . $files->getSubPathName() ) ) {
448
+ /* phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged */
449
  if ( ! @mkdir( $destination . $files->getSubPathName() ) ) {
450
  $this->log->error(
451
  'Failed Creating Folder',
593
  require_once ABSPATH . 'wp-admin/includes/file.php';
594
  }
595
 
596
+ /* If that didn't work let's try the home url instead */
597
  $try_path = str_replace( home_url(), get_home_path(), $url );
598
 
599
  if ( is_file( $try_path ) ) {
600
  return $try_path;
601
  }
602
 
603
+ /* If that didn't work let's try the site url instead */
604
  $try_path = str_replace( site_url(), ABSPATH, $url );
605
 
606
  if ( is_file( $try_path ) ) {
651
  require_once ABSPATH . 'wp-admin/includes/file.php';
652
  }
653
 
654
+ /* If that didn't work let's try the home path instead */
655
  $try_url = str_replace( get_home_path(), home_url(), $path );
656
 
657
  if ( $try_url !== $path ) {
658
  return $try_url;
659
  }
660
 
661
+ /* If that didn't work let's try the ABSPATH instead */
662
  $try_url = str_replace( ABSPATH, site_url(), $path );
663
 
664
  if ( $try_url !== $path ) {
889
  $entry_details_file = GFCommon::get_base_path() . '/entry_detail.php';
890
 
891
  if ( is_file( $entry_details_file ) ) {
892
+ require_once $entry_details_file;
893
  }
894
  }
895
  }
905
  */
906
  public function in_array( $needle, $haystack, $strict = true ) {
907
  foreach ( $haystack as $item ) {
908
+ /* phpcs:ignore */
909
  if ( ( $strict ? $item === $needle : $item == $needle ) ||
910
+ ( is_array( $item ) && $this->in_array( $needle, $item, $strict ) )
911
  ) {
912
  return true;
913
  }
952
  'Running AJAX Endpoint',
953
  [
954
  'type' => $endpoint_desc,
955
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
956
  'post' => $_POST,
957
  ]
958
  );
959
 
960
+ /* Validate Endpoint */
961
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
962
+ if ( ! wp_verify_nonce( $_POST['nonce'] ?? '', $nonce_name ) ) {
 
 
963
 
964
  $this->log->warning( 'Nonce Verification Failed' );
965
 
src/Helper/Helper_Notices.php CHANGED
@@ -18,8 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) {
18
 
19
  /**
20
  * @since 4.0
21
- *
22
- * @todo Implement Transient Support so errors and notices can be saved
23
  */
24
  class Helper_Notices implements Helper_Interface_Actions {
25
 
@@ -207,8 +205,8 @@ class Helper_Notices implements Helper_Interface_Actions {
207
  */
208
  private function html( $text, $class = 'updated' ) {
209
  ?>
210
- <div class="<?= $class; ?> notice">
211
- <p><?= $text; ?></p>
212
  </div>
213
  <?php
214
  }
18
 
19
  /**
20
  * @since 4.0
 
 
21
  */
22
  class Helper_Notices implements Helper_Interface_Actions {
23
 
205
  */
206
  private function html( $text, $class = 'updated' ) {
207
  ?>
208
+ <div class="<?php echo esc_attr( $class ); ?> notice">
209
+ <p><?php echo wp_kses_post( $text ); ?></p>
210
  </div>
211
  <?php
212
  }
src/Helper/Helper_PDF.php CHANGED
@@ -368,17 +368,17 @@ class Helper_PDF {
368
  if ( rgget( 'template' ) && is_user_logged_in() && $this->gform->has_capability( 'gravityforms_edit_settings' ) ) {
369
  $template = rgget( 'template' );
370
 
371
- /* Handle legacy v3 URL structure and strip .php from the end of the template */
 
 
 
 
372
  if ( isset( $_GET['gf_pdf'] ) && isset( $_GET['fid'] ) && isset( $_GET['lid'] ) ) {
373
  $template = substr( $template, 0, -4 );
374
  }
375
  }
376
 
377
- try {
378
- $this->template_path = $this->templates->get_template_path_by_id( $template );
379
- } catch ( Exception $e ) {
380
- throw $e;
381
- }
382
 
383
  /* Check if there are version requirements */
384
  $template_info = $this->templates->get_template_info_by_path( $this->template_path );
@@ -436,8 +436,8 @@ class Helper_PDF {
436
  * @since 4.0
437
  */
438
  protected function set_metadata() {
439
- $this->mpdf->SetTitle( UtfString::strcode2utf( strip_tags( $this->get_filename() ) ) );
440
- $this->mpdf->SetAuthor( UtfString::strcode2utf( strip_tags( get_bloginfo( 'name' ) ) ) );
441
  }
442
 
443
  /**
@@ -510,13 +510,10 @@ class Helper_PDF {
510
  * @param string $js The PDF Javascript to execute
511
  *
512
  * @since 4.0
513
- *
514
- * phpcs:disable
515
  */
516
  public function set_JS( $js ) {
517
  $this->mpdf->SetJS( $js );
518
  }
519
- /* phpcs:enable */
520
 
521
  /**
522
  *
@@ -852,10 +849,9 @@ class Helper_PDF {
852
  protected function load_html( $args = [] ) {
853
  /*
854
  * for backwards compatibility extract the $args variable
855
- * phpcs:disable
856
  */
 
857
  extract( $args, EXTR_SKIP ); /* skip any arguments that would clash - i.e filename, args, output, path, this */
858
- /* phpcs:enable */
859
 
860
  ob_start();
861
  include $this->template_path;
@@ -875,10 +871,31 @@ class Helper_PDF {
875
  */
876
  protected function maybe_display_raw_html( $html ) {
877
 
878
- if ( $this->output !== 'SAVE' && rgget( 'html' ) && $this->gform->has_capability( 'gravityforms_edit_settings' ) ) {
879
- echo apply_filters( 'gfpdf_pre_html_browser_output', $html, $this->settings, $this->entry, $this->gform, $this );
880
- exit;
 
 
 
 
 
 
 
881
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
882
  }
883
 
884
  /**
@@ -902,7 +919,7 @@ class Helper_PDF {
902
  * @since 4.0
903
  */
904
  protected function set_image_dpi() {
905
- _doing_it_wrong( __METHOD__, __( 'This method has been removed because mPDF no longer supports setting the image DPI after the class is initialised.', 'gravity-forms-pdf-extended' ), '5.2' );
906
  }
907
 
908
  /**
368
  if ( rgget( 'template' ) && is_user_logged_in() && $this->gform->has_capability( 'gravityforms_edit_settings' ) ) {
369
  $template = rgget( 'template' );
370
 
371
+ /*
372
+ * Handle legacy v3 URL structure and strip .php from the end of the template
373
+ */
374
+
375
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
376
  if ( isset( $_GET['gf_pdf'] ) && isset( $_GET['fid'] ) && isset( $_GET['lid'] ) ) {
377
  $template = substr( $template, 0, -4 );
378
  }
379
  }
380
 
381
+ $this->template_path = $this->templates->get_template_path_by_id( $template );
 
 
 
 
382
 
383
  /* Check if there are version requirements */
384
  $template_info = $this->templates->get_template_info_by_path( $this->template_path );
436
  * @since 4.0
437
  */
438
  protected function set_metadata() {
439
+ $this->mpdf->SetTitle( UtfString::strcode2utf( wp_strip_all_tags( $this->get_filename() ) ) );
440
+ $this->mpdf->SetAuthor( UtfString::strcode2utf( wp_strip_all_tags( get_bloginfo( 'name' ) ) ) );
441
  }
442
 
443
  /**
510
  * @param string $js The PDF Javascript to execute
511
  *
512
  * @since 4.0
 
 
513
  */
514
  public function set_JS( $js ) {
515
  $this->mpdf->SetJS( $js );
516
  }
 
517
 
518
  /**
519
  *
849
  protected function load_html( $args = [] ) {
850
  /*
851
  * for backwards compatibility extract the $args variable
 
852
  */
853
+ /* phpcs:ignore WordPress.PHP.DontExtract.extract_extract */
854
  extract( $args, EXTR_SKIP ); /* skip any arguments that would clash - i.e filename, args, output, path, this */
 
855
 
856
  ob_start();
857
  include $this->template_path;
871
  */
872
  protected function maybe_display_raw_html( $html ) {
873
 
874
+ $options = \GPDFAPI::get_options_class();
875
+
876
+ /* Disregard if PDF is being saved */
877
+ if ( $this->output === 'SAVE' ) {
878
+ return;
879
+ }
880
+
881
+ /* Disregard if `?html` URL parameter doesn't exist */
882
+ if ( ! rgget( 'html' ) ) {
883
+ return;
884
  }
885
+
886
+ /* Disregard if PDF Debug Mode off AND the environment is production */
887
+ if ( $options->get_option( 'debug_mode', 'No' ) === 'No' && ( ! function_exists( 'wp_get_environment_type' ) || wp_get_environment_type() === 'production' ) ) {
888
+ return;
889
+ }
890
+
891
+ /* Check if user has permission to view info */
892
+ if ( ! $this->gform->has_capability( 'gravityforms_edit_settings' ) ) {
893
+ return;
894
+ }
895
+
896
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
897
+ echo apply_filters( 'gfpdf_pre_html_browser_output', $html, $this->settings, $this->entry, $this->gform, $this );
898
+ exit;
899
  }
900
 
901
  /**
919
  * @since 4.0
920
  */
921
  protected function set_image_dpi() {
922
+ _doing_it_wrong( __METHOD__, esc_html__( 'This method has been removed because mPDF no longer supports setting the image DPI after the class is initialised.', 'gravity-forms-pdf-extended' ), '5.2' );
923
  }
924
 
925
  /**
src/Helper/Helper_PDF_List_Table.php CHANGED
@@ -122,7 +122,7 @@ class Helper_PDF_List_Table extends WP_List_Table {
122
  * @since 4.0
123
  */
124
  public function prepare_items() {
125
- $this->items = ( isset( $this->form['gfpdf_form_settings'] ) ) ? $this->form['gfpdf_form_settings'] : [];
126
  }
127
 
128
  /**
@@ -135,7 +135,7 @@ class Helper_PDF_List_Table extends WP_List_Table {
135
  $singular = rgar( $this->_args, 'singular' );
136
  ?>
137
 
138
- <table class="wp-list-table <?= implode( ' ', $this->get_table_classes() ); ?>" cellspacing="0" aria-label="<?= esc_html__( 'PDF List', 'gravity-forms-pdf-extended' ) ?>">
139
  <thead>
140
  <tr>
141
  <?php $this->print_column_headers(); ?>
@@ -145,7 +145,7 @@ class Helper_PDF_List_Table extends WP_List_Table {
145
  <tbody id="the-list"
146
  <?php
147
  if ( $singular ) {
148
- echo " class='list:$singular'";
149
  }
150
  ?>
151
  >
@@ -171,7 +171,7 @@ class Helper_PDF_List_Table extends WP_List_Table {
171
  * @since 4.0
172
  */
173
  public function single_row( $item ) {
174
- echo '<tr id="gfpdf-' . $item['id'] . '">';
175
  $this->single_row_columns( $item );
176
  echo '</tr>';
177
  }
@@ -197,7 +197,7 @@ class Helper_PDF_List_Table extends WP_List_Table {
197
  /* See https://docs.gravitypdf.com/v6/developers/filters/gfpdf_pdf_list_column_id/ for more details about this action */
198
  do_action( $action, $item );
199
  } else {
200
- echo rgar( $item, $column );
201
  }
202
  }
203
 
@@ -211,20 +211,20 @@ class Helper_PDF_List_Table extends WP_List_Table {
211
  */
212
  public function column_cb( $item ) {
213
 
214
- $is_active = isset( $item['active'] ) ? $item['active'] : true;
215
  $form_id = (int) rgget( 'id' );
216
  $state_nonce = wp_create_nonce( "gfpdf_state_nonce_{$form_id}_{$item['id']}" );
217
 
218
  if ( $is_active ) {
219
  $class = 'gform-status--active';
220
- $text = esc_html__( 'Active', 'gravity-forms-pdf-extended' );
221
  } else {
222
  $class = 'gform-status--inactive';
223
- $text = esc_html__( 'Inactive', 'gravity-forms-pdf-extended' );
224
  }
225
  ?>
226
 
227
- <button type="button" class="gform-status-indicator <?php echo esc_attr( $class ); ?>" data-id="<?= esc_attr( $item['id'] ) ?>" data-nonce="<?= esc_attr( $state_nonce ) ?>" data-fid="<?= esc_attr( $form_id ) ?>" data-status="<?= $is_active ? 'active' : 'inactive' ?>">
228
  <svg viewBox="0 0 6 6" xmlns="http://www.w3.org/2000/svg"><circle cx="3" cy="2" r="1" stroke-width="2"/></svg>
229
  <span class="gform-status-indicator-status"><?php echo esc_html( $text ); ?></span>
230
  </button>
@@ -255,8 +255,7 @@ class Helper_PDF_List_Table extends WP_List_Table {
255
  }
256
  }
257
 
258
- echo sprintf( '<span>%1$s</span>', implode( ', ', $notification_names ) );
259
-
260
  }
261
 
262
  /**
@@ -269,18 +268,15 @@ class Helper_PDF_List_Table extends WP_List_Table {
269
  public function column_shortcode( $item ) {
270
  do_action( 'gfpdf_pre_pdf_list_shortcode_column', $item, $this );
271
 
272
- /*
273
- * While esc_attr() used below will ensure no display issues when copied the double quote will cause shortcode parse issues
274
- * We'll prevent this by removing them before hand
275
- */
276
  $name = str_replace( '"', '', $item['name'] );
277
- $pdf_id = esc_attr( $item['id'] );
278
 
279
  /* Prepare our shortcode sample */
280
  $shortcode = sprintf(
281
  '[gravitypdf name="%1$s" id="%2$s" text="%3$s"]',
282
  $name,
283
- $pdf_id,
284
  __( 'Download PDF', 'gravity-forms-pdf-extended' )
285
  );
286
 
@@ -292,27 +288,27 @@ class Helper_PDF_List_Table extends WP_List_Table {
292
  ?>
293
  <button type="button"
294
  class="gform-button gform-button--size-r gform-button--white gform-button--icon-leading gform-embed-form__shortcode-trigger btn-shortcode"
295
- data-clipboard-text="<?= esc_attr( $shortcode ) ?>" aria-label="<?= esc_attr( $aria_label ) ?>"
296
  role="dialog" aria-live="polite">
297
  <i class="gform-button__icon gform-icon gform-icon--copy"></i>
298
  <span class="gform-embed-form__shortcode-copy-label"
299
- aria-hidden="false"><?= esc_attr__( 'Copy', 'gravity-forms-pdf-extended' ) ?></span>
300
  <span class="gform-embed-form__shortcode-copy-copied" aria-hidden="true">
301
  <i class="gform-embed-form__shortcode-copy-icon gform-icon gform-icon--circle-check-alt"></i>
302
- <?= esc_attr__( 'Copied', 'gravity-forms-pdf-extended' ) ?>
303
  </span>
304
  </button>
305
  <?php else : ?>
306
- <button data-selected-text="<?= esc_attr__( 'Shortcode copied!', 'gravity-forms-pdf-extended' ) ?>"
307
  type="button" class="gform-status-indicator btn-shortcode gf_2_5 "
308
- data-clipboard-text="<?= esc_attr( $shortcode ) ?>" aria-label="<?= esc_attr( $aria_label ) ?>"
309
  role="status" aria-live="polite">
310
- <?= esc_html__( 'Copy Shortcode', 'gravity-forms-pdf-extended' ) ?>
311
  </button>
312
  <?php endif; ?>
313
  <div class="gpdf-fallback-input">
314
- <input type="text" id="<?= $pdf_id ?>" value="<?= esc_attr( $shortcode ) ?>"
315
- aria-label="<?= esc_attr( $aria_label ) ?>" />
316
  </div>
317
 
318
  <?php
@@ -337,8 +333,8 @@ class Helper_PDF_List_Table extends WP_List_Table {
337
  $template_name = $this->templates->maybe_add_template_compatibility_notice( $template['template'], $template['required_pdf_version'] );
338
 
339
  ?>
340
- <span aria-label="<?= esc_attr( $template_group . ' ' . $template_name ) ?>">
341
- <strong><?= esc_html( $template_group ) ?></strong> <?= esc_html( $template_name ) ?>
342
  </span>
343
  <?php
344
 
@@ -361,8 +357,8 @@ class Helper_PDF_List_Table extends WP_List_Table {
361
 
362
  $actions = [
363
  'edit' => '<a title="' . esc_attr__( 'Edit this PDF', 'gravity-forms-pdf-extended' ) . '" href="' . esc_url( $edit_url ) . '">' . esc_html__( 'Edit', 'gravity-forms-pdf-extended' ) . '</a>',
364
- 'duplicate' => '<a title="' . esc_attr__( 'Duplicate this PDF', 'gravity-forms-pdf-extended' ) . '" data-id="' . esc_attr( $item['id'] ) . '" class="submitduplicate" data-nonce="' . $duplicate_nonce . '" data-fid="' . $form_id . '" href="#">' . esc_html__( 'Duplicate', 'gravity-forms-pdf-extended' ) . '</a>',
365
- 'delete' => '<a title="' . esc_attr__( 'Delete this PDF', 'gravity-forms-pdf-extended' ) . '" class="submitdelete" data-id="' . esc_attr( $item['id'] ) . '" data-nonce="' . $delete_nonce . '" data-fid="' . $form_id . '" href="#">' . esc_html__( 'Delete', 'gravity-forms-pdf-extended' ) . '</a>',
366
  ];
367
 
368
  /* See https://docs.gravitypdf.com/v6/developers/filters/gfpdf_pdf_actions/ for more details about this filter */
@@ -370,7 +366,7 @@ class Helper_PDF_List_Table extends WP_List_Table {
370
 
371
  ?>
372
 
373
- <a href="<?= esc_url( $edit_url ); ?>" aria-label="<?= esc_attr( sprintf( __( '%s PDF', 'gravity-forms-pdf-extended' ), $pdf_name ) ) ?>"><strong><?= esc_html( $pdf_name ) ?></strong></a>
374
  <div class="row-actions">
375
 
376
  <?php
@@ -380,8 +376,8 @@ class Helper_PDF_List_Table extends WP_List_Table {
380
  foreach ( $actions as $key => $html ) {
381
  $divider = $key === $last_key ? '' : ' | ';
382
  ?>
383
- <span class="<?= $key; ?>" aria-labelledby="pdf_<?= $form_id ?>">
384
- <?= $html . $divider; ?>
385
  </span>
386
  <?php
387
  }
122
  * @since 4.0
123
  */
124
  public function prepare_items() {
125
+ $this->items = $this->form['gfpdf_form_settings'] ?? [];
126
  }
127
 
128
  /**
135
  $singular = rgar( $this->_args, 'singular' );
136
  ?>
137
 
138
+ <table class="wp-list-table <?php echo esc_attr( implode( ' ', $this->get_table_classes() ) ); ?>" cellspacing="0" aria-label="<?php echo esc_attr__( 'PDF List', 'gravity-forms-pdf-extended' ); ?>">
139
  <thead>
140
  <tr>
141
  <?php $this->print_column_headers(); ?>
145
  <tbody id="the-list"
146
  <?php
147
  if ( $singular ) {
148
+ echo ' class="list:' . esc_attr( $singular ) . '"';
149
  }
150
  ?>
151
  >
171
  * @since 4.0
172
  */
173
  public function single_row( $item ) {
174
+ echo '<tr id="gfpdf-' . esc_attr( $item['id'] ) . '">';
175
  $this->single_row_columns( $item );
176
  echo '</tr>';
177
  }
197
  /* See https://docs.gravitypdf.com/v6/developers/filters/gfpdf_pdf_list_column_id/ for more details about this action */
198
  do_action( $action, $item );
199
  } else {
200
+ echo wp_kses_post( $item[ $column ] ?? '' );
201
  }
202
  }
203
 
211
  */
212
  public function column_cb( $item ) {
213
 
214
+ $is_active = $item['active'] ?? true;
215
  $form_id = (int) rgget( 'id' );
216
  $state_nonce = wp_create_nonce( "gfpdf_state_nonce_{$form_id}_{$item['id']}" );
217
 
218
  if ( $is_active ) {
219
  $class = 'gform-status--active';
220
+ $text = __( 'Active', 'gravity-forms-pdf-extended' );
221
  } else {
222
  $class = 'gform-status--inactive';
223
+ $text = __( 'Inactive', 'gravity-forms-pdf-extended' );
224
  }
225
  ?>
226
 
227
+ <button type="button" class="gform-status-indicator <?php echo esc_attr( $class ); ?>" data-id="<?php echo esc_attr( $item['id'] ); ?>" data-nonce="<?php echo esc_attr( $state_nonce ); ?>" data-fid="<?php echo esc_attr( $form_id ); ?>" data-status="<?php echo $is_active ? 'active' : 'inactive'; ?>">
228
  <svg viewBox="0 0 6 6" xmlns="http://www.w3.org/2000/svg"><circle cx="3" cy="2" r="1" stroke-width="2"/></svg>
229
  <span class="gform-status-indicator-status"><?php echo esc_html( $text ); ?></span>
230
  </button>
255
  }
256
  }
257
 
258
+ echo sprintf( '<span>%1$s</span>', esc_html( implode( ', ', $notification_names ) ) );
 
259
  }
260
 
261
  /**
268
  public function column_shortcode( $item ) {
269
  do_action( 'gfpdf_pre_pdf_list_shortcode_column', $item, $this );
270
 
271
+ /* Remove quotes so it doesn't cause encoding issues */
 
 
 
272
  $name = str_replace( '"', '', $item['name'] );
273
+ $pdf_id = $item['id'];
274
 
275
  /* Prepare our shortcode sample */
276
  $shortcode = sprintf(
277
  '[gravitypdf name="%1$s" id="%2$s" text="%3$s"]',
278
  $name,
279
+ esc_attr( $pdf_id ),
280
  __( 'Download PDF', 'gravity-forms-pdf-extended' )
281
  );
282
 
288
  ?>
289
  <button type="button"
290
  class="gform-button gform-button--size-r gform-button--white gform-button--icon-leading gform-embed-form__shortcode-trigger btn-shortcode"
291
+ data-clipboard-text="<?php echo esc_attr( $shortcode ); ?>" aria-label="<?php echo esc_attr( $aria_label ); ?>"
292
  role="dialog" aria-live="polite">
293
  <i class="gform-button__icon gform-icon gform-icon--copy"></i>
294
  <span class="gform-embed-form__shortcode-copy-label"
295
+ aria-hidden="false"><?php echo esc_attr__( 'Copy', 'gravity-forms-pdf-extended' ); ?></span>
296
  <span class="gform-embed-form__shortcode-copy-copied" aria-hidden="true">
297
  <i class="gform-embed-form__shortcode-copy-icon gform-icon gform-icon--circle-check-alt"></i>
298
+ <?php echo esc_attr__( 'Copied', 'gravity-forms-pdf-extended' ); ?>
299
  </span>
300
  </button>
301
  <?php else : ?>
302
+ <button data-selected-text="<?php echo esc_attr__( 'Shortcode copied!', 'gravity-forms-pdf-extended' ); ?>"
303
  type="button" class="gform-status-indicator btn-shortcode gf_2_5 "
304
+ data-clipboard-text="<?php echo esc_attr( $shortcode ); ?>" aria-label="<?php echo esc_attr( $aria_label ); ?>"
305
  role="status" aria-live="polite">
306
+ <?php echo esc_html__( 'Copy Shortcode', 'gravity-forms-pdf-extended' ); ?>
307
  </button>
308
  <?php endif; ?>
309
  <div class="gpdf-fallback-input">
310
+ <input type="text" id="<?php echo esc_attr( $pdf_id ); ?>" value="<?php echo esc_attr( $shortcode ); ?>"
311
+ aria-label="<?php echo esc_attr( $aria_label ); ?>" />
312
  </div>
313
 
314
  <?php
333
  $template_name = $this->templates->maybe_add_template_compatibility_notice( $template['template'], $template['required_pdf_version'] );
334
 
335
  ?>
336
+ <span aria-label="<?php echo esc_attr( $template_group . ' ' . $template_name ); ?>">
337
+ <strong><?php echo esc_html( $template_group ); ?></strong> <?php echo esc_html( $template_name ); ?>
338
  </span>
339
  <?php
340
 
357
 
358
  $actions = [
359
  'edit' => '<a title="' . esc_attr__( 'Edit this PDF', 'gravity-forms-pdf-extended' ) . '" href="' . esc_url( $edit_url ) . '">' . esc_html__( 'Edit', 'gravity-forms-pdf-extended' ) . '</a>',
360
+ 'duplicate' => '<a title="' . esc_attr__( 'Duplicate this PDF', 'gravity-forms-pdf-extended' ) . '" data-id="' . esc_attr( $item['id'] ) . '" class="submitduplicate" data-nonce="' . esc_attr( $duplicate_nonce ) . '" data-fid="' . esc_attr( $form_id ) . '" href="#">' . esc_html__( 'Duplicate', 'gravity-forms-pdf-extended' ) . '</a>',
361
+ 'delete' => '<a title="' . esc_attr__( 'Delete this PDF', 'gravity-forms-pdf-extended' ) . '" class="submitdelete" data-id="' . esc_attr( $item['id'] ) . '" data-nonce="' . esc_attr( $delete_nonce ) . '" data-fid="' . esc_attr( $form_id ) . '" href="#">' . esc_html__( 'Delete', 'gravity-forms-pdf-extended' ) . '</a>',
362
  ];
363
 
364
  /* See https://docs.gravitypdf.com/v6/developers/filters/gfpdf_pdf_actions/ for more details about this filter */
366
 
367
  ?>
368
 
369
+ <a href="<?php echo esc_url( $edit_url ); ?>" aria-label="<?php echo esc_attr( sprintf( __( '%s PDF', 'gravity-forms-pdf-extended' ), $pdf_name ) ); ?>"><strong><?php echo esc_html( $pdf_name ); ?></strong></a>
370
  <div class="row-actions">
371
 
372
  <?php
376
  foreach ( $actions as $key => $html ) {
377
  $divider = $key === $last_key ? '' : ' | ';
378
  ?>
379
+ <span class="<?php echo esc_attr( $key ); ?>" aria-labelledby="pdf_<?php echo esc_attr( $form_id ); ?>">
380
+ <?php echo wp_kses_post( $html . $divider ); ?>
381
  </span>
382
  <?php
383
  }
src/Helper/Helper_Pdf_Queue.php CHANGED
@@ -19,11 +19,11 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  }
20
 
21
  if ( ! class_exists( 'WP_Async_Request' ) ) {
22
- require_once( GFCommon::get_base_path() . '/includes/libraries/wp-async-request.php' );
23
  }
24
 
25
  if ( ! class_exists( 'GF_Background_Process' ) ) {
26
- require_once( GFCommon::get_base_path() . '/includes/libraries/gf-background-process.php' );
27
  }
28
 
29
  /**
19
  }
20
 
21
  if ( ! class_exists( 'WP_Async_Request' ) ) {
22
+ require_once GFCommon::get_base_path() . '/includes/libraries/wp-async-request.php';
23
  }
24
 
25
  if ( ! class_exists( 'GF_Background_Process' ) ) {
26
+ require_once GFCommon::get_base_path() . '/includes/libraries/gf-background-process.php';
27
  }
28
 
29
  /**
src/Helper/Helper_Sha256_Url_Signer.php CHANGED
@@ -36,7 +36,8 @@ class Helper_Sha256_Url_Signer extends BaseUrlSigner {
36
  'url' => (string) $url,
37
  ];
38
 
39
- $token = rawurlencode( base64_encode( json_encode( $token_data ) ) );
 
40
 
41
  return hash_hmac( 'sha256', $token, $this->signatureKey );
42
  }
36
  'url' => (string) $url,
37
  ];
38
 
39
+ /* phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode */
40
+ $token = rawurlencode( base64_encode( wp_json_encode( $token_data ) ) );
41
 
42
  return hash_hmac( 'sha256', $token, $this->signatureKey );
43
  }
src/Helper/Helper_Templates.php CHANGED
@@ -522,6 +522,7 @@ class Helper_Templates {
522
  $template_id = rgget( 'template' );
523
 
524
  /* Handle legacy v3 URL structure and strip .php from the end of the template */
 
525
  if ( isset( $_GET['gf_pdf'] ) && isset( $_GET['fid'] ) && isset( $_GET['lid'] ) ) {
526
  $template_id = substr( $template_id, 0, -4 );
527
  }
@@ -586,7 +587,7 @@ class Helper_Templates {
586
 
587
  /* Try and load the file if the class doesn't exist */
588
  if ( ! class_exists( $fqcn ) && is_file( $file ) && is_readable( $file ) ) {
589
- require_once( $file );
590
  }
591
 
592
  /* Insure the class we are trying to load exists */
522
  $template_id = rgget( 'template' );
523
 
524
  /* Handle legacy v3 URL structure and strip .php from the end of the template */
525
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
526
  if ( isset( $_GET['gf_pdf'] ) && isset( $_GET['fid'] ) && isset( $_GET['lid'] ) ) {
527
  $template_id = substr( $template_id, 0, -4 );
528
  }
587
 
588
  /* Try and load the file if the class doesn't exist */
589
  if ( ! class_exists( $fqcn ) && is_file( $file ) && is_readable( $file ) ) {
590
+ require_once $file;
591
  }
592
 
593
  /* Insure the class we are trying to load exists */
src/Model/Model_Form_Settings.php CHANGED
@@ -184,7 +184,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
184
  $controller->view->list(
185
  [
186
  'title' => $this->data->title,
187
- 'add_new_url' => $add_new_url = add_query_arg( [ 'pid' => 0 ] ),
188
  'list_items' => $pdf_table,
189
  ]
190
  );
@@ -245,6 +245,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
245
  $update_pdf_text = esc_html__( 'Update PDF', 'gravity-forms-pdf-extended' );
246
  $label = esc_html__( 'Add PDF', 'gravity-forms-pdf-extended' );
247
 
 
248
  if ( ( $_POST['submit'] ?? '' ) === $update_pdf_text || ( ! is_wp_error( $pdf ) && ! isset( $pdf['status'] ) ) ) {
249
  $label = $update_pdf_text;
250
  }
@@ -300,7 +301,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
300
  * Validate, Sanitize and Update PDF settings
301
  *
302
  * @param integer $form_id The Gravity Form ID
303
- * @param integer $pdf_id The PDF configuration ID
304
  *
305
  * @return boolean
306
  *
@@ -365,7 +366,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
365
 
366
  /* Do validation */
367
  if ( empty( $sanitized['name'] ) || empty( $sanitized['filename'] ) ||
368
- ( $sanitized['pdf_size'] === 'CUSTOM' && ( (float) $sanitized['custom_pdf_size'][0] === 0 || (float) $sanitized['custom_pdf_size'][1] === 0 ) )
369
  ) {
370
  $this->notices->add_error( esc_html__( 'PDF could not be saved. Please enter all required information below.', 'gravity-forms-pdf-extended' ) );
371
 
@@ -612,8 +613,10 @@ class Model_Form_Settings extends Helper_Abstract_Model {
612
  */
613
  public function get_template_name_from_current_page() {
614
 
 
615
  $pid = ( ! empty( $_GET['pid'] ) ) ? rgget( 'pid' ) : rgpost( 'gform_pdf_id' );
616
  $form_id = ( isset( $_GET['id'] ) ) ? (int) $_GET['id'] : 0;
 
617
 
618
  /* If we don't have a specific PDF we'll use the defaults */
619
  if ( empty( $pid ) || empty( $form_id ) ) {
@@ -780,8 +783,11 @@ class Model_Form_Settings extends Helper_Abstract_Model {
780
  */
781
  public function delete_gf_pdf_setting() {
782
 
783
- $fid = ( isset( $_POST['fid'] ) ) ? (int) $_POST['fid'] : 0;
784
- $pid = ( isset( $_POST['pid'] ) ) ? $_POST['pid'] : '';
 
 
 
785
  $nonce_id = "gfpdf_delete_nonce_{$fid}_{$pid}";
786
 
787
  /* User / CORS validation */
@@ -798,7 +804,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
798
  'msg' => esc_html__( 'PDF successfully deleted.', 'gravity-forms-pdf-extended' ),
799
  ];
800
 
801
- echo json_encode( $return );
802
  wp_die();
803
  }
804
 
@@ -829,8 +835,10 @@ class Model_Form_Settings extends Helper_Abstract_Model {
829
  */
830
  public function duplicate_gf_pdf_setting() {
831
 
 
832
  $fid = ( isset( $_POST['fid'] ) ) ? (int) $_POST['fid'] : 0;
833
  $pid = ( isset( $_POST['pid'] ) ) ? $_POST['pid'] : '';
 
834
 
835
  $nonce_id = "gfpdf_duplicate_nonce_{$fid}_{$pid}";
836
 
@@ -850,7 +858,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
850
  if ( $results ) {
851
  $this->log->notice( 'AJAX – Successfully Duplicated PDF Setting' );
852
 
853
- /* @todo just use the same nonce for all requests since WP nonces aren't one-time user (time based) */
854
  $dup_nonce = wp_create_nonce( "gfpdf_duplicate_nonce_{$fid}_{$config['id']}" );
855
  $del_nonce = wp_create_nonce( "gfpdf_delete_nonce_{$fid}_{$config['id']}" );
856
  $state_nonce = wp_create_nonce( "gfpdf_state_nonce_{$fid}_{$config['id']}" );
@@ -865,7 +873,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
865
  'status' => esc_html__( 'Inactive', 'gravity-forms-pdf-extended' ),
866
  ];
867
 
868
- echo json_encode( $return );
869
  wp_die();
870
  }
871
  }
@@ -895,8 +903,11 @@ class Model_Form_Settings extends Helper_Abstract_Model {
895
  */
896
  public function change_state_pdf_setting() {
897
 
898
- $fid = ( isset( $_POST['fid'] ) ) ? (int) $_POST['fid'] : 0;
899
- $pid = ( isset( $_POST['pid'] ) ) ? $_POST['pid'] : '';
 
 
 
900
  $nonce_id = "gfpdf_state_nonce_{$fid}_{$pid}";
901
 
902
  /* User / CORS validation */
@@ -922,7 +933,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
922
  'pid' => $config['id'],
923
  ];
924
 
925
- echo json_encode( $return );
926
  wp_die();
927
  }
928
  }
@@ -953,9 +964,11 @@ class Model_Form_Settings extends Helper_Abstract_Model {
953
  /* User / CORS validation */
954
  $this->misc->handle_ajax_authentication( 'Render Template Custom Fields', 'gravityforms_edit_settings' );
955
 
956
- /* get the current template */
957
- $template = ( isset( $_POST['template'] ) ) ? $_POST['template'] : '';
958
- $type = ( isset( $_POST['type'] ) ) ? $_POST['type'] : '';
 
 
959
  $class = $this->templates->get_config_class( $template );
960
  $settings = $this->setup_custom_appearance_settings( $class );
961
 
@@ -1013,7 +1026,7 @@ class Model_Form_Settings extends Helper_Abstract_Model {
1013
 
1014
  $this->log->notice( 'AJAX – Successfully Rendered Template Custom Fields', $return );
1015
 
1016
- echo json_encode( $return );
1017
 
1018
  /* end AJAX function */
1019
  wp_die();
184
  $controller->view->list(
185
  [
186
  'title' => $this->data->title,
187
+ 'add_new_url' => add_query_arg( [ 'pid' => 0 ] ),
188
  'list_items' => $pdf_table,
189
  ]
190
  );
245
  $update_pdf_text = esc_html__( 'Update PDF', 'gravity-forms-pdf-extended' );
246
  $label = esc_html__( 'Add PDF', 'gravity-forms-pdf-extended' );
247
 
248
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
249
  if ( ( $_POST['submit'] ?? '' ) === $update_pdf_text || ( ! is_wp_error( $pdf ) && ! isset( $pdf['status'] ) ) ) {
250
  $label = $update_pdf_text;
251
  }
301
  * Validate, Sanitize and Update PDF settings
302
  *
303
  * @param integer $form_id The Gravity Form ID
304
+ * @param string $pdf_id The PDF configuration ID
305
  *
306
  * @return boolean
307
  *
366
 
367
  /* Do validation */
368
  if ( empty( $sanitized['name'] ) || empty( $sanitized['filename'] ) ||
369
+ ( $sanitized['pdf_size'] === 'CUSTOM' && ( (float) $sanitized['custom_pdf_size'][0] === 0.0 || (float) $sanitized['custom_pdf_size'][1] === 0.0 ) )
370
  ) {
371
  $this->notices->add_error( esc_html__( 'PDF could not be saved. Please enter all required information below.', 'gravity-forms-pdf-extended' ) );
372
 
613
  */
614
  public function get_template_name_from_current_page() {
615
 
616
+ /* phpcs:disable WordPress.Security.NonceVerification.Recommended */
617
  $pid = ( ! empty( $_GET['pid'] ) ) ? rgget( 'pid' ) : rgpost( 'gform_pdf_id' );
618
  $form_id = ( isset( $_GET['id'] ) ) ? (int) $_GET['id'] : 0;
619
+ /* phpcs:enable */
620
 
621
  /* If we don't have a specific PDF we'll use the defaults */
622
  if ( empty( $pid ) || empty( $form_id ) ) {
783
  */
784
  public function delete_gf_pdf_setting() {
785
 
786
+ /* phpcs:disable WordPress.Security.NonceVerification.Missing */
787
+ $fid = isset( $_POST['fid'] ) ? (int) $_POST['fid'] : 0;
788
+ $pid = isset( $_POST['pid'] ) ? $_POST['pid'] : '';
789
+ /* phpcs:enable */
790
+
791
  $nonce_id = "gfpdf_delete_nonce_{$fid}_{$pid}";
792
 
793
  /* User / CORS validation */
804
  'msg' => esc_html__( 'PDF successfully deleted.', 'gravity-forms-pdf-extended' ),
805
  ];
806
 
807
+ echo wp_json_encode( $return );
808
  wp_die();
809
  }
810
 
835
  */
836
  public function duplicate_gf_pdf_setting() {
837
 
838
+ /* phpcs:disable WordPress.Security.NonceVerification.Missing */
839
  $fid = ( isset( $_POST['fid'] ) ) ? (int) $_POST['fid'] : 0;
840
  $pid = ( isset( $_POST['pid'] ) ) ? $_POST['pid'] : '';
841
+ /* phpcs:enable */
842
 
843
  $nonce_id = "gfpdf_duplicate_nonce_{$fid}_{$pid}";
844
 
858
  if ( $results ) {
859
  $this->log->notice( 'AJAX – Successfully Duplicated PDF Setting' );
860
 
861
+ /* @todo just use the same nonce for all requests since WP nonces aren't one-time use (time based) */
862
  $dup_nonce = wp_create_nonce( "gfpdf_duplicate_nonce_{$fid}_{$config['id']}" );
863
  $del_nonce = wp_create_nonce( "gfpdf_delete_nonce_{$fid}_{$config['id']}" );
864
  $state_nonce = wp_create_nonce( "gfpdf_state_nonce_{$fid}_{$config['id']}" );
873
  'status' => esc_html__( 'Inactive', 'gravity-forms-pdf-extended' ),
874
  ];
875
 
876
+ echo wp_json_encode( $return );
877
  wp_die();
878
  }
879
  }
903
  */
904
  public function change_state_pdf_setting() {
905
 
906
+ /* phpcs:disable WordPress.Security.NonceVerification.Missing */
907
+ $fid = ( isset( $_POST['fid'] ) ) ? (int) $_POST['fid'] : 0;
908
+ $pid = ( isset( $_POST['pid'] ) ) ? $_POST['pid'] : '';
909
+ /* phpcs:enable */
910
+
911
  $nonce_id = "gfpdf_state_nonce_{$fid}_{$pid}";
912
 
913
  /* User / CORS validation */
933
  'pid' => $config['id'],
934
  ];
935
 
936
+ echo wp_json_encode( $return );
937
  wp_die();
938
  }
939
  }
964
  /* User / CORS validation */
965
  $this->misc->handle_ajax_authentication( 'Render Template Custom Fields', 'gravityforms_edit_settings' );
966
 
967
+ /* phpcs:disable WordPress.Security.NonceVerification.Missing */
968
+ $template = $_POST['template'] ?? '';
969
+ $type = $_POST['type'] ?? '';
970
+ /* phpcs:enable */
971
+
972
  $class = $this->templates->get_config_class( $template );
973
  $settings = $this->setup_custom_appearance_settings( $class );
974
 
1026
 
1027
  $this->log->notice( 'AJAX – Successfully Rendered Template Custom Fields', $return );
1028
 
1029
+ echo wp_json_encode( $return );
1030
 
1031
  /* end AJAX function */
1032
  wp_die();
src/Model/Model_Install.php CHANGED
@@ -350,7 +350,7 @@ class Model_Install extends Helper_Abstract_Model {
350
  }
351
 
352
  /**
353
- * Register our PDF custom rewrite rules
354
  *
355
  * @param array $tags
356
  *
@@ -361,7 +361,7 @@ class Model_Install extends Helper_Abstract_Model {
361
  public function register_rewrite_tags( $tags ) {
362
  global $wp;
363
 
364
- /* Conditionally register rewrite tags to prevent conflict with other plugins */
365
  if ( ! empty( $_GET['gpdf'] ) || ! empty( $_GET['gf_pdf'] ) || strpos( $wp->matched_query, 'gpdf=1' ) === 0 ) {
366
  $tags[] = 'gpdf';
367
  $tags[] = 'pid';
350
  }
351
 
352
  /**
353
+ * Conditionally register the PDF custom rewrite rules
354
  *
355
  * @param array $tags
356
  *
361
  public function register_rewrite_tags( $tags ) {
362
  global $wp;
363
 
364
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
365
  if ( ! empty( $_GET['gpdf'] ) || ! empty( $_GET['gf_pdf'] ) || strpos( $wp->matched_query, 'gpdf=1' ) === 0 ) {
366
  $tags[] = 'gpdf';
367
  $tags[] = 'pid';
src/Model/Model_Mergetags.php CHANGED
@@ -258,7 +258,7 @@ class Model_Mergetags extends Helper_Abstract_Model {
258
  public function add_field_map_choices( $fields, $form_id, $field_type, $exclude_field_types ) {
259
 
260
  /* Only add PDFs to choices if $fields contains the Entry Properties information */
261
- if ( ! in_array( esc_html__( 'Entry Properties', 'gravityforms' ), array_column( $fields, 'label' ) ) ) {
262
  return $fields;
263
  }
264
 
@@ -342,4 +342,21 @@ class Model_Mergetags extends Helper_Abstract_Model {
342
  return $gform->process_tags( $field_id, $gform->get_form( $form['id'] ), $gform->get_entry( $entry['id'] ) );
343
  }
344
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
  }
258
  public function add_field_map_choices( $fields, $form_id, $field_type, $exclude_field_types ) {
259
 
260
  /* Only add PDFs to choices if $fields contains the Entry Properties information */
261
+ if ( ! in_array( esc_html__( 'Entry Properties', 'gravityforms' ), array_column( $fields, 'label' ), true ) ) {
262
  return $fields;
263
  }
264
 
342
  return $gform->process_tags( $field_id, $gform->get_form( $form['id'] ), $gform->get_entry( $entry['id'] ) );
343
  }
344
 
345
+ /**
346
+ * Convert gform_mailchimp_field_value parameter to be compatible with gform_addon_field_value.
347
+ *
348
+ * @param string $field_value
349
+ * @param int $form_id
350
+ * @param int $field_id
351
+ * @param array $entry
352
+ *
353
+ * @return string
354
+ *
355
+ * @since 6.3.2
356
+ */
357
+ public function process_field_value_mailchimp( $field_value, $form_id, $field_id, $entry ) {
358
+ $gform = \GPDFAPI::get_form_class();
359
+ return $this->process_field_value( $field_value, $gform->get_form( $form_id ), $entry, $field_id );
360
+ }
361
+
362
  }
src/Model/Model_PDF.php CHANGED
@@ -325,6 +325,7 @@ class Model_PDF extends Helper_Abstract_Model {
325
  */
326
  public function middle_signed_url_access( $action, $entry, $settings ) {
327
 
 
328
  if ( isset( $_GET['expires'] ) && isset( $_GET['signature'] ) && isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
329
  try {
330
  $protocol = isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';
@@ -1483,7 +1484,7 @@ class Model_PDF extends Helper_Abstract_Model {
1483
  * @param array $entry The Gravity Form Entry
1484
  * @param Field_Products $products A Field_Products Object
1485
  *
1486
- * @return object Gravity PDF Field Object
1487
  *
1488
  * @throws Exception
1489
  * @since 4.0
@@ -1648,7 +1649,7 @@ class Model_PDF extends Helper_Abstract_Model {
1648
 
1649
  /* If the results class isn't loaded, load it */
1650
  if ( ! class_exists( 'GFResults' ) ) {
1651
- require_once( GFCommon::get_base_path() . '/includes/addon/class-gf-results.php' );
1652
  }
1653
 
1654
  $form_id = $form['id'];
@@ -1940,8 +1941,6 @@ class Model_PDF extends Helper_Abstract_Model {
1940
  *
1941
  * @return array
1942
  * @since 4.0
1943
- *
1944
- * @TODO Work out how to handle this for 6.0
1945
  */
1946
  public function add_unregistered_fonts_to_mPDF( $fonts ) {
1947
 
325
  */
326
  public function middle_signed_url_access( $action, $entry, $settings ) {
327
 
328
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
329
  if ( isset( $_GET['expires'] ) && isset( $_GET['signature'] ) && isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
330
  try {
331
  $protocol = isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';
1484
  * @param array $entry The Gravity Form Entry
1485
  * @param Field_Products $products A Field_Products Object
1486
  *
1487
+ * @return Helper_Abstract_Fields
1488
  *
1489
  * @throws Exception
1490
  * @since 4.0
1649
 
1650
  /* If the results class isn't loaded, load it */
1651
  if ( ! class_exists( 'GFResults' ) ) {
1652
+ require_once GFCommon::get_base_path() . '/includes/addon/class-gf-results.php';
1653
  }
1654
 
1655
  $form_id = $form['id'];
1941
  *
1942
  * @return array
1943
  * @since 4.0
 
 
1944
  */
1945
  public function add_unregistered_fonts_to_mPDF( $fonts ) {
1946
 
src/Model/Model_Settings.php CHANGED
@@ -328,7 +328,7 @@ class Model_Settings extends Helper_Abstract_Model {
328
  'body' => [
329
  'edd_action' => 'activate_license',
330
  'license' => $license_key,
331
- 'item_name' => urlencode( $addon->get_short_name() ), // the name of our product in EDD
332
  'url' => home_url(),
333
  ],
334
  ]
@@ -398,16 +398,17 @@ class Model_Settings extends Helper_Abstract_Model {
398
  /* User / CORS validation */
399
  $this->misc->handle_ajax_authentication( 'Deactivate License', 'gravityforms_edit_settings', 'gfpdf_deactivate_license' );
400
 
401
- /* Get the required details */
402
- $addon_slug = ( isset( $_POST['addon_name'] ) ) ? $_POST['addon_name'] : '';
403
- $license = ( isset( $_POST['license'] ) ) ? $_POST['license'] : '';
404
- $addon = ( isset( $this->data->addon[ $addon_slug ] ) ) ? $this->data->addon[ $addon_slug ] : false;
 
405
 
406
  /* Check add-on currently installed */
407
  if ( ! empty( $addon ) ) {
408
  if ( $this->deactivate_license_key( $addon, $license ) ) {
409
  $this->log->notice( 'AJAX – Successfully Deactivated License' );
410
- echo json_encode(
411
  [
412
  'success' => esc_html__( 'License deactivated.', 'gravity-forms-pdf-extended' ),
413
  ]
@@ -417,7 +418,7 @@ class Model_Settings extends Helper_Abstract_Model {
417
  } elseif ( $addon->schedule_license_check() ) {
418
  $license_info = $addon->get_license_info();
419
 
420
- echo json_encode(
421
  [
422
  'error' => $license_info['message'],
423
  ]
@@ -429,7 +430,7 @@ class Model_Settings extends Helper_Abstract_Model {
429
 
430
  $this->log->error( 'AJAX Endpoint Error' );
431
 
432
- echo json_encode(
433
  [
434
  'error' => esc_html__( 'An error occurred during deactivation, please try again', 'gravity-forms-pdf-extended' ),
435
  ]
@@ -458,7 +459,7 @@ class Model_Settings extends Helper_Abstract_Model {
458
  'body' => [
459
  'edd_action' => 'deactivate_license',
460
  'license' => $license_key,
461
- 'item_name' => urlencode( $addon->get_short_name() ), // the name of our product in EDD
462
  'url' => home_url(),
463
  ],
464
  ]
328
  'body' => [
329
  'edd_action' => 'activate_license',
330
  'license' => $license_key,
331
+ 'item_name' => rawurlencode( $addon->get_short_name() ), // the name of our product in EDD
332
  'url' => home_url(),
333
  ],
334
  ]
398
  /* User / CORS validation */
399
  $this->misc->handle_ajax_authentication( 'Deactivate License', 'gravityforms_edit_settings', 'gfpdf_deactivate_license' );
400
 
401
+ /* phpcs:disable WordPress.Security.NonceVerification.Missing */
402
+ $addon_slug = $_POST['addon_name'] ?? '';
403
+ $license = $_POST['license'] ?? '';
404
+ /* phpcs:enable */
405
+ $addon = $this->data->addon[ $addon_slug ] ?? false;
406
 
407
  /* Check add-on currently installed */
408
  if ( ! empty( $addon ) ) {
409
  if ( $this->deactivate_license_key( $addon, $license ) ) {
410
  $this->log->notice( 'AJAX – Successfully Deactivated License' );
411
+ echo wp_json_encode(
412
  [
413
  'success' => esc_html__( 'License deactivated.', 'gravity-forms-pdf-extended' ),
414
  ]
418
  } elseif ( $addon->schedule_license_check() ) {
419
  $license_info = $addon->get_license_info();
420
 
421
+ echo wp_json_encode(
422
  [
423
  'error' => $license_info['message'],
424
  ]
430
 
431
  $this->log->error( 'AJAX Endpoint Error' );
432
 
433
+ echo wp_json_encode(
434
  [
435
  'error' => esc_html__( 'An error occurred during deactivation, please try again', 'gravity-forms-pdf-extended' ),
436
  ]
459
  'body' => [
460
  'edd_action' => 'deactivate_license',
461
  'license' => $license_key,
462
+ 'item_name' => rawurlencode( $addon->get_short_name() ), // the name of our product in EDD
463
  'url' => home_url(),
464
  ],
465
  ]
src/Model/Model_Shortcodes.php CHANGED
@@ -47,7 +47,7 @@ class Model_Shortcodes extends Helper_Abstract_Pdf_Shortcode {
47
  * @internal Deprecated in 5.2. Use self::process()
48
  */
49
  public function gravitypdf( $attributes ) {
50
- _doing_it_wrong( __METHOD__, __( 'This method has been superseded by self::process()', 'gravity-forms-pdf-extended' ), '5.2' );
51
 
52
  return $this->process( $attributes );
53
  }
47
  * @internal Deprecated in 5.2. Use self::process()
48
  */
49
  public function gravitypdf( $attributes ) {
50
+ _doing_it_wrong( __METHOD__, esc_html__( 'This method has been superseded by self::process()', 'gravity-forms-pdf-extended' ), '5.2' );
51
 
52
  return $this->process( $attributes );
53
  }
src/Model/Model_System_Report.php CHANGED
@@ -376,7 +376,7 @@ class Model_System_Report extends Helper_Abstract_Model {
376
  }
377
  }
378
 
379
- /* Cleanup our test file */
380
  @unlink( $tmp_dir . $tmp_test_file );
381
  }
382
 
376
  }
377
  }
378
 
379
+ /* phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged */
380
  @unlink( $tmp_dir . $tmp_test_file );
381
  }
382
 
src/Model/Model_Templates.php CHANGED
@@ -137,7 +137,7 @@ class Model_Templates extends Helper_Abstract_Model {
137
  );
138
 
139
  header( 'Content-Type: application/json' );
140
- echo json_encode(
141
  [
142
  'error' => $e->getMessage(),
143
  ]
@@ -180,7 +180,7 @@ class Model_Templates extends Helper_Abstract_Model {
180
 
181
  /* Return newly-installed template headers */
182
  header( 'Content-Type: application/json' );
183
- echo json_encode(
184
  [
185
  'templates' => $headers,
186
  ]
@@ -220,7 +220,8 @@ class Model_Templates extends Helper_Abstract_Model {
220
 
221
  $this->misc->handle_ajax_authentication( 'Delete PDF Template' );
222
 
223
- $template_id = ( isset( $_POST['id'] ) ) ? $_POST['id'] : '';
 
224
 
225
  /* Get all the necessary PDF template files to delete */
226
  try {
@@ -233,7 +234,7 @@ class Model_Templates extends Helper_Abstract_Model {
233
  $this->templates->flush_template_transient_cache();
234
 
235
  header( 'Content-Type: application/json' );
236
- echo json_encode( true );
237
 
238
  /* Okay Response */
239
  wp_die( '', 200 );
@@ -286,7 +287,7 @@ class Model_Templates extends Helper_Abstract_Model {
286
  $value = $options_class->get_form_value( $template_settings );
287
 
288
  header( 'Content-Type: application/text' );
289
- echo $options_class->build_options_for_select( $templates, $value );
290
 
291
  /* Okay Response */
292
  wp_die( '', 200 );
@@ -386,7 +387,7 @@ class Model_Templates extends Helper_Abstract_Model {
386
 
387
  if ( ! isset( $info['template'] ) || strlen( $info['template'] ) === 0 ) {
388
  /* Check if it's a v3 template */
389
- $fp = fopen( $file, 'r' );
390
  $file_data = fread( $fp, 8192 );
391
  fclose( $fp );
392
 
137
  );
138
 
139
  header( 'Content-Type: application/json' );
140
+ echo wp_json_encode(
141
  [
142
  'error' => $e->getMessage(),
143
  ]
180
 
181
  /* Return newly-installed template headers */
182
  header( 'Content-Type: application/json' );
183
+ echo wp_json_encode(
184
  [
185
  'templates' => $headers,
186
  ]
220
 
221
  $this->misc->handle_ajax_authentication( 'Delete PDF Template' );
222
 
223
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
224
+ $template_id = $_POST['id'] ?? '';
225
 
226
  /* Get all the necessary PDF template files to delete */
227
  try {
234
  $this->templates->flush_template_transient_cache();
235
 
236
  header( 'Content-Type: application/json' );
237
+ echo wp_json_encode( true );
238
 
239
  /* Okay Response */
240
  wp_die( '', 200 );
287
  $value = $options_class->get_form_value( $template_settings );
288
 
289
  header( 'Content-Type: application/text' );
290
+ $options_class->build_options_for_select( $templates, $value, true );
291
 
292
  /* Okay Response */
293
  wp_die( '', 200 );
387
 
388
  if ( ! isset( $info['template'] ) || strlen( $info['template'] ) === 0 ) {
389
  /* Check if it's a v3 template */
390
+ $fp = fopen( $file, 'rb' );
391
  $file_data = fread( $fp, 8192 );
392
  fclose( $fp );
393
 
src/Statics/Kses.php ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GFPDF\Statics;
4
+
5
+ /**
6
+ * @package Gravity PDF
7
+ * @copyright Copyright (c) 2022, Blue Liquid Designs
8
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9
+ */
10
+
11
+ /* Exit if accessed directly */
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ /**
17
+ * @since 6.4.0
18
+ */
19
+ class Kses {
20
+
21
+ /**
22
+ * Echo the HTML after escaping using wp_kses()
23
+ *
24
+ * @param string $html
25
+ *
26
+ * @return void
27
+ *
28
+ * @since 6.4.0
29
+ */
30
+ public static function output( string $html ): void {
31
+ /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
32
+ echo self::parse( $html );
33
+ }
34
+
35
+ /**
36
+ * Returns the HTML after escaping using wp_kses()
37
+ *
38
+ * @param string $html
39
+ *
40
+ * @return string
41
+ *
42
+ * @since 6.4.0
43
+ */
44
+ public static function parse( string $html ): string {
45
+ add_filter( 'safe_style_css', '\GFPDF\Statics\Kses::get_allowed_pdf_styles' );
46
+ $html = wp_kses( $html, self::get_allowed_pdf_tags() );
47
+ remove_filter( 'safe_style_css', '\GFPDF\Statics\Kses::get_allowed_pdf_styles' );
48
+
49
+ return $html;
50
+ }
51
+
52
+ /**
53
+ * Get all allowed HTML tags that will be passed to wp_kses() when building HTML for the PDFs
54
+ *
55
+ * @param array|null $tags An array of existing tags to pass to wp_kses(), or null to use the allowed "post" context tags
56
+ *
57
+ * @return array
58
+ *
59
+ * @since 6.4.0
60
+ */
61
+ public static function get_allowed_pdf_tags( $tags = null ): array {
62
+ $tags = is_array( $tags ) ? $tags : wp_kses_allowed_html( 'post' );
63
+
64
+ /* Add additional Table support */
65
+ $tags['table']['autosize'] = true;
66
+ $tags['table']['rotate'] = true;
67
+
68
+ /* Add IMG rotate support */
69
+ $tags['img']['rotate'] = true;
70
+
71
+ /* Add <dottab /> support */
72
+ $tags['dottab'] = [
73
+ 'dir' => true,
74
+ 'outdent' => true,
75
+ 'id' => true,
76
+ 'class' => true,
77
+ 'style' => true,
78
+ ];
79
+
80
+ /* Add <meter /> support */
81
+ $tags['meter'] = [
82
+ 'dir' => true,
83
+ 'value' => true,
84
+ 'max' => true,
85
+ 'min' => true,
86
+ 'low' => true,
87
+ 'high' => true,
88
+ 'optimum' => true,
89
+ 'id' => true,
90
+ 'class' => true,
91
+ 'style' => true,
92
+ 'width' => true,
93
+ 'height' => true,
94
+ ];
95
+
96
+ /* Add <progress /> support */
97
+ $tags['progress'] = [
98
+ 'dir' => true,
99
+ 'value' => true,
100
+ 'max' => true,
101
+ 'width' => true,
102
+ 'height' => true,
103
+ 'id' => true,
104
+ 'class' => true,
105
+ 'style' => true,
106
+ ];
107
+
108
+ /* Add <pagebreak /> support */
109
+ $tags['pagebreak'] = [
110
+ 'orientation' => true,
111
+ 'type' => true,
112
+ 'resetpagenum' => true,
113
+ 'pagenumstyle' => true,
114
+ 'suppress' => true,
115
+ 'sheet-size' => true,
116
+ 'page-selector' => true,
117
+ 'margin-left' => true,
118
+ 'margin-right' => true,
119
+ 'margin-top' => true,
120
+ 'margin-bottom' => true,
121
+ ];
122
+
123
+ /* Add <barcode /> support */
124
+ $tags['barcode'] = [
125
+ 'code' => true,
126
+ 'type' => true,
127
+ 'text' => true,
128
+ 'size' => true,
129
+ 'height' => true,
130
+ 'pr' => true,
131
+ 'id' => true,
132
+ 'class' => true,
133
+ 'style' => true,
134
+ ];
135
+
136
+ return $tags;
137
+ }
138
+
139
+ /**
140
+ * Add additional inline style properties that are valid in PDFs
141
+ *
142
+ * @param array $styles
143
+ *
144
+ * @return array
145
+ *
146
+ * @since 6.4.0
147
+ */
148
+ public static function get_allowed_pdf_styles( $styles ): array {
149
+ if ( ! is_array( $styles ) ) {
150
+ return $styles;
151
+ }
152
+
153
+ return array_merge(
154
+ $styles,
155
+ [
156
+ 'background-image-opacity',
157
+ 'background-image-resize',
158
+ 'box-shadow',
159
+ 'hyphens',
160
+ 'page',
161
+ 'page-break-inside',
162
+ 'page-break-before',
163
+ 'page-break-after',
164
+ 'rotate',
165
+ 'z-index',
166
+ ]
167
+ );
168
+ }
169
+ }
src/View/View_Form_Settings.php CHANGED
@@ -18,8 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  /**
19
  * View_Form_Settings
20
  *
21
- * A general class for About / Intro Screen
22
- *
23
  * @since 4.0
24
  */
25
  class View_Form_Settings extends Helper_Abstract_View {
@@ -43,7 +41,9 @@ class View_Form_Settings extends Helper_Abstract_View {
43
  'width' => 'full',
44
  'title' => __( 'General', 'gravity-forms-pdf-extended' ),
45
  'desc' => '',
46
- 'content' => $markup->do_settings_fields( 'gfpdf_settings_form_settings', $markup::ENABLE_PANEL_TITLE ),
 
 
47
  'collapsible' => true,
48
  'collapsible-open' => true,
49
  ],
@@ -53,7 +53,9 @@ class View_Form_Settings extends Helper_Abstract_View {
53
  'width' => 'full',
54
  'title' => __( 'Appearance', 'gravity-forms-pdf-extended' ),
55
  'desc' => '',
56
- 'content' => $markup->do_settings_fields( 'gfpdf_settings_form_settings_appearance', $markup::ENABLE_PANEL_TITLE ),
 
 
57
  'collapsible' => true,
58
  'collapsible-open' => true,
59
  ],
@@ -63,7 +65,9 @@ class View_Form_Settings extends Helper_Abstract_View {
63
  'width' => 'full',
64
  'title' => __( 'Template', 'gravity-forms-pdf-extended' ),
65
  'desc' => '',
66
- 'content' => $markup->do_settings_fields( 'gfpdf_settings_form_settings_custom_appearance', $markup::ENABLE_PANEL_TITLE ),
 
 
67
  'collapsible' => true,
68
  'collapsible-open' => true,
69
  ],
@@ -73,7 +77,9 @@ class View_Form_Settings extends Helper_Abstract_View {
73
  'width' => 'full',
74
  'title' => __( 'Advanced', 'gravity-forms-pdf-extended' ),
75
  'desc' => '',
76
- 'content' => $markup->do_settings_fields( 'gfpdf_settings_form_settings_advanced', $markup::ENABLE_PANEL_TITLE ),
 
 
77
  'collapsible' => true,
78
  'collapsible-open' => true,
79
  ],
@@ -82,7 +88,9 @@ class View_Form_Settings extends Helper_Abstract_View {
82
  $vars = array_merge(
83
  $vars,
84
  [
85
- 'content' => $markup->do_settings_sections( $sections ),
 
 
86
  ]
87
  );
88
 
18
  /**
19
  * View_Form_Settings
20
  *
 
 
21
  * @since 4.0
22
  */
23
  class View_Form_Settings extends Helper_Abstract_View {
41
  'width' => 'full',
42
  'title' => __( 'General', 'gravity-forms-pdf-extended' ),
43
  'desc' => '',
44
+ 'callback' => static function() use ( $markup ) {
45
+ $markup->output_settings_fields( 'gfpdf_settings_form_settings', $markup::ENABLE_PANEL_TITLE );
46
+ },
47
  'collapsible' => true,
48
  'collapsible-open' => true,
49
  ],
53
  'width' => 'full',
54
  'title' => __( 'Appearance', 'gravity-forms-pdf-extended' ),
55
  'desc' => '',
56
+ 'callback' => static function() use ( $markup ) {
57
+ $markup->output_settings_fields( 'gfpdf_settings_form_settings_appearance', $markup::ENABLE_PANEL_TITLE );
58
+ },
59
  'collapsible' => true,
60
  'collapsible-open' => true,
61
  ],
65
  'width' => 'full',
66
  'title' => __( 'Template', 'gravity-forms-pdf-extended' ),
67
  'desc' => '',
68
+ 'callback' => static function() use ( $markup ) {
69
+ $markup->output_settings_fields( 'gfpdf_settings_form_settings_custom_appearance', $markup::ENABLE_PANEL_TITLE );
70
+ },
71
  'collapsible' => true,
72
  'collapsible-open' => true,
73
  ],
77
  'width' => 'full',
78
  'title' => __( 'Advanced', 'gravity-forms-pdf-extended' ),
79
  'desc' => '',
80
+ 'callback' => static function() use ( $markup ) {
81
+ $markup->output_settings_fields( 'gfpdf_settings_form_settings_advanced', $markup::ENABLE_PANEL_TITLE );
82
+ },
83
  'collapsible' => true,
84
  'collapsible-open' => true,
85
  ],
88
  $vars = array_merge(
89
  $vars,
90
  [
91
+ 'callback' => static function() use ( $markup, $sections ) {
92
+ $markup->do_settings_sections( $sections, true );
93
+ },
94
  ]
95
  );
96
 
src/View/View_GravityForm_Settings_Markup.php CHANGED
@@ -31,14 +31,15 @@ class View_GravityForm_Settings_Markup extends Helper_Abstract_View {
31
  protected $view_type = 'GravityForms';
32
 
33
  /**
34
- * @param $sections
 
35
  *
36
  * @return string
37
  */
38
- public function do_settings_sections( $sections ) {
39
  $markup = '';
40
  foreach ( $sections as $section ) {
41
- $markup .= $this->fieldset( $section );
42
  }
43
 
44
  return $markup;
@@ -46,11 +47,12 @@ class View_GravityForm_Settings_Markup extends Helper_Abstract_View {
46
 
47
  /**
48
  * @param array $args
 
49
  *
50
  * @return string
51
  */
52
- public function fieldset( $args ) {
53
- return $this->load( 'fieldset', $args, false );
54
  }
55
 
56
  /**
@@ -62,12 +64,24 @@ class View_GravityForm_Settings_Markup extends Helper_Abstract_View {
62
  public function do_settings_fields( $id, $output_title = self::DISABLE_PANEL_TITLE ) {
63
  ob_start();
64
  foreach ( (array) $this->get_section_fields( $id ) as $field ) {
65
- echo $this->get_field_content( $field, $output_title );
66
  }
67
 
68
  return ob_get_clean();
69
  }
70
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  /**
72
  * @param $id
73
  *
@@ -93,16 +107,17 @@ class View_GravityForm_Settings_Markup extends Helper_Abstract_View {
93
 
94
  $section = [];
95
  foreach ( $this->get_section_fields( $section_id ) as $field ) {
96
- $id = $field['args']['id'];
97
- $content = $this->get_field_content( $field );
98
 
99
  $section[] = [
100
  'id' => $id,
101
- 'width' => isset( $overrides[ $id ]['width'] ) ? $overrides[ $id ]['width'] : 'half',
102
  'title' => $field['title'],
103
- 'desc' => isset( $overrides[ $id ]['desc'] ) ? $overrides[ $id ]['desc'] : '',
104
- 'content' => $content,
105
- 'content_class' => isset( $overrides[ $id ]['content_class'] ) ? $overrides[ $id ]['content_class'] : '',
 
 
106
  'tooltip' => ! empty( $field['args']['tooltip'] ) ? $this->get_tooltip_markup( $field['args']['tooltip'] ) : '',
107
  'collapsible' => isset( $overrides[ $id ]['collapsible'] ) ? (bool) $overrides[ $id ]['collapsible'] : false,
108
  ];
@@ -114,10 +129,11 @@ class View_GravityForm_Settings_Markup extends Helper_Abstract_View {
114
  /**
115
  * @param $field
116
  * @param int $output_title
 
117
  *
118
  * @return bool|string|WP_Error
119
  */
120
- public function get_field_content( $field, $output_title = self::DISABLE_PANEL_TITLE ) {
121
 
122
  $class = 'gform-settings-field gfpdf-settings-field-wrapper';
123
 
@@ -136,7 +152,7 @@ class View_GravityForm_Settings_Markup extends Helper_Abstract_View {
136
  }
137
  }
138
 
139
- return $this->load( 'settings_field', $args, false );
140
  }
141
 
142
  /**
31
  protected $view_type = 'GravityForms';
32
 
33
  /**
34
+ * @param array $sections
35
+ * @param bool $echo
36
  *
37
  * @return string
38
  */
39
+ public function do_settings_sections( $sections, $echo = false ) {
40
  $markup = '';
41
  foreach ( $sections as $section ) {
42
+ $markup .= $this->fieldset( $section, $echo );
43
  }
44
 
45
  return $markup;
47
 
48
  /**
49
  * @param array $args
50
+ * @param bool $echo
51
  *
52
  * @return string
53
  */
54
+ public function fieldset( $args, $echo = false ) {
55
+ return $this->load( 'fieldset', $args, $echo );
56
  }
57
 
58
  /**
64
  public function do_settings_fields( $id, $output_title = self::DISABLE_PANEL_TITLE ) {
65
  ob_start();
66
  foreach ( (array) $this->get_section_fields( $id ) as $field ) {
67
+ $this->get_field_content( $field, $output_title, true );
68
  }
69
 
70
  return ob_get_clean();
71
  }
72
 
73
+ /**
74
+ * @param string $id
75
+ * @param int $output_title
76
+ *
77
+ * @since 6.4.0
78
+ */
79
+ public function output_settings_fields( string $id, int $output_title = self::DISABLE_PANEL_TITLE ): void {
80
+ foreach ( (array) $this->get_section_fields( $id ) as $field ) {
81
+ $this->get_field_content( $field, $output_title, true );
82
+ }
83
+ }
84
+
85
  /**
86
  * @param $id
87
  *
107
 
108
  $section = [];
109
  foreach ( $this->get_section_fields( $section_id ) as $field ) {
110
+ $id = $field['args']['id'];
 
111
 
112
  $section[] = [
113
  'id' => $id,
114
+ 'width' => $overrides[ $id ]['width'] ?? 'half',
115
  'title' => $field['title'],
116
+ 'desc' => $overrides[ $id ]['desc'] ?? '',
117
+ 'callback' => function() use ( $field ) {
118
+ $this->get_field_content( $field, self::DISABLE_PANEL_TITLE, true );
119
+ },
120
+ 'content_class' => $overrides[ $id ]['content_class'] ?? '',
121
  'tooltip' => ! empty( $field['args']['tooltip'] ) ? $this->get_tooltip_markup( $field['args']['tooltip'] ) : '',
122
  'collapsible' => isset( $overrides[ $id ]['collapsible'] ) ? (bool) $overrides[ $id ]['collapsible'] : false,
123
  ];
129
  /**
130
  * @param $field
131
  * @param int $output_title
132
+ * @param bool $echo
133
  *
134
  * @return bool|string|WP_Error
135
  */
136
+ public function get_field_content( $field, int $output_title = self::DISABLE_PANEL_TITLE, bool $echo = false ) {
137
 
138
  $class = 'gform-settings-field gfpdf-settings-field-wrapper';
139
 
152
  }
153
  }
154
 
155
+ return $this->load( 'settings_field', $args, $echo );
156
  }
157
 
158
  /**
src/View/View_PDF.php CHANGED
@@ -6,6 +6,7 @@ use Exception;
6
  use GF_Field;
7
  use GFCommon;
8
  use GFPDF\Helper\Fields\Field_Products;
 
9
  use GFPDF\Helper\Helper_Abstract_Form;
10
  use GFPDF\Helper\Helper_Abstract_Model;
11
  use GFPDF\Helper\Helper_Abstract_Options;
@@ -18,6 +19,7 @@ use GFPDF\Helper\Helper_Form;
18
  use GFPDF\Helper\Helper_Misc;
19
  use GFPDF\Helper\Helper_PDF;
20
  use GFPDF\Helper\Helper_Templates;
 
21
  use GFPDFEntryDetail;
22
  use GWConditionalLogicDateFields;
23
  use Psr\Log\LoggerInterface;
@@ -178,15 +180,8 @@ class View_PDF extends Helper_Abstract_View {
178
  $this->misc->get_legacy_ids( $entry['id'], $settings )
179
  );
180
 
181
- /**
182
- * Show $form_data array if requested
183
- */
184
- if ( isset( $_GET['data'] ) && $this->gform->has_capability( 'gravityforms_view_settings' ) && isset( $args['form_data'] ) ) {
185
- echo '<pre>';
186
- print_r( $args['form_data'] );
187
- echo '</pre>';
188
- exit;
189
- }
190
 
191
  /* Enable Multicurrency support */
192
  $this->misc->maybe_add_multicurrency_support();
@@ -213,8 +208,9 @@ class View_PDF extends Helper_Abstract_View {
213
  }
214
 
215
  /* Determine if we should show the print dialog box */
 
216
  if ( isset( $_GET['print'] ) ) {
217
- $pdf->set_print_dialog( true );
218
  }
219
 
220
  /* Render the PDF template HTML */
@@ -242,7 +238,7 @@ class View_PDF extends Helper_Abstract_View {
242
  $e->getLine()
243
  );
244
 
245
- wp_die( $message );
246
  }
247
 
248
  wp_die( esc_html__( 'There was a problem generating your PDF', 'gravity-forms-pdf-extended' ) );
@@ -450,7 +446,8 @@ class View_PDF extends Helper_Abstract_View {
450
  */
451
  $should_disable_product_table = apply_filters( 'gfpdf_disable_product_table', false, $entry, $form, $config, $products );
452
  if ( ! $should_disable_product_table && $show_individual_product_fields === false && ! $products->is_empty() ) {
453
- echo $products->html();
 
454
  }
455
  }
456
 
@@ -472,18 +469,19 @@ class View_PDF extends Helper_Abstract_View {
472
  /*
473
  * Set up our configuration variables
474
  */
475
- $config['meta'] = ( isset( $config['meta'] ) ) ? $config['meta'] : []; /* ensure we have a meta key */
476
- $show_empty_fields = ( isset( $config['meta']['empty'] ) ) ? $config['meta']['empty'] : false; /* whether to show empty fields or not. Default is false */
477
- $load_legacy_css = ( isset( $config['meta']['legacy_css'] ) ) ? $config['meta']['legacy_css'] : false; /* whether we should add our legacy field class names (v3.x.x) to our fields. Default to false */
478
- $show_section_description = ( isset( $config['meta']['section_content'] ) ) ? $config['meta']['section_content'] : false; /* whether we should include a section breaks content. Default to false */
479
 
 
480
  $class = $model->get_field_class( $field, $form, $entry, $products );
481
 
482
  /* Try and display our HTML */
483
  try {
484
 
485
  /* Only load our HTML if the field is NOT empty, or the $empty config option is true */
486
- if ( ! $class->is_empty() || $show_empty_fields === true ) {
487
  /* Load our legacy CSS class names */
488
  if ( $load_legacy_css === true ) {
489
  GFPDFEntryDetail::load_legacy_css( $field );
@@ -495,7 +493,8 @@ class View_PDF extends Helper_Abstract_View {
495
  */
496
  $container->generate( $field );
497
 
498
- echo ( $field->type !== 'section' ) ? $class->html() : $class->html( $show_section_description );
 
499
  } else {
500
  /* To prevent display issues we will output the column markup needed */
501
  $container->maybe_display_faux_column( $field );
@@ -532,7 +531,7 @@ class View_PDF extends Helper_Abstract_View {
532
  $html = $this->load( 'form_title', [ 'form' => $form ], false );
533
 
534
  /* Run it through a filter and output */
535
- echo apply_filters( 'gfpdf_pdf_form_title_html', $html, $form );
536
  }
537
  }
538
 
@@ -574,7 +573,7 @@ class View_PDF extends Helper_Abstract_View {
574
  );
575
 
576
  /* Run it through a filter and output */
577
- echo apply_filters( 'gfpdf_field_page_name_html', $html, $page, $form );
578
  }
579
  }
580
 
@@ -637,60 +636,60 @@ class View_PDF extends Helper_Abstract_View {
637
  }
638
 
639
  /**
640
- * Allow PDF HTML Mark-up when using wp_kses_post()
641
  *
642
- * @param array $context
643
  *
644
  * @return array
645
  *
646
  * @since 5.1.1
647
  */
648
- public function allow_pdf_html( $context ) {
649
- /* Add Table autosize support */
650
- $context['table']['autosize'] = true;
651
-
652
- /* Add <pagebreak /> support */
653
- $context['pagebreak'] = [
654
- 'orientation' => true,
655
- 'type' => true,
656
- 'resetpagenum' => true,
657
- 'pagenumstyle' => true,
658
- 'suppress' => true,
659
- 'sheet-size' => true,
660
- 'page-selector' => true,
661
- 'margin-left' => true,
662
- 'margin-right' => true,
663
- 'margin-top' => true,
664
- 'margin-bottom' => true,
665
- ];
666
-
667
- /* Add <barcode /> support */
668
- $context['barcode'] = [
669
- 'code' => true,
670
- 'type' => true,
671
- 'text' => true,
672
- 'size' => true,
673
- 'height' => true,
674
- 'pr' => true,
675
- ];
676
-
677
- return $context;
678
  }
679
 
680
  /**
681
- * Allow PDF CSS Mark-up when using wp_kses()
682
  *
683
- * @param array $context
684
  *
685
  * @return array
686
  *
687
  * @since 5.1.1
688
  */
689
- public function allow_pdf_css( $context ) {
690
- $context[] = 'page-break-inside';
691
- $context[] = 'page-break-before';
692
- $context[] = 'page-break-after';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
693
 
694
- return $context;
695
  }
696
  }
6
  use GF_Field;
7
  use GFCommon;
8
  use GFPDF\Helper\Fields\Field_Products;
9
+ use GFPDF\Helper\Helper_Abstract_Fields;
10
  use GFPDF\Helper\Helper_Abstract_Form;
11
  use GFPDF\Helper\Helper_Abstract_Model;
12
  use GFPDF\Helper\Helper_Abstract_Options;
19
  use GFPDF\Helper\Helper_Misc;
20
  use GFPDF\Helper\Helper_PDF;
21
  use GFPDF\Helper\Helper_Templates;
22
+ use GFPDF\Statics\Kses;
23
  use GFPDFEntryDetail;
24
  use GWConditionalLogicDateFields;
25
  use Psr\Log\LoggerInterface;
180
  $this->misc->get_legacy_ids( $entry['id'], $settings )
181
  );
182
 
183
+ /* Show $form_data array if requested */
184
+ $this->maybe_view_form_data( $args['form_data'] ?? [] );
 
 
 
 
 
 
 
185
 
186
  /* Enable Multicurrency support */
187
  $this->misc->maybe_add_multicurrency_support();
208
  }
209
 
210
  /* Determine if we should show the print dialog box */
211
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
212
  if ( isset( $_GET['print'] ) ) {
213
+ $pdf->set_print_dialog();
214
  }
215
 
216
  /* Render the PDF template HTML */
238
  $e->getLine()
239
  );
240
 
241
+ wp_die( esc_html( $message ) );
242
  }
243
 
244
  wp_die( esc_html__( 'There was a problem generating your PDF', 'gravity-forms-pdf-extended' ) );
446
  */
447
  $should_disable_product_table = apply_filters( 'gfpdf_disable_product_table', false, $entry, $form, $config, $products );
448
  if ( ! $should_disable_product_table && $show_individual_product_fields === false && ! $products->is_empty() ) {
449
+ $products->enable_output();
450
+ $products->html();
451
  }
452
  }
453
 
469
  /*
470
  * Set up our configuration variables
471
  */
472
+ $config['meta'] = $config['meta'] ?? []; /* ensure we have a meta key */
473
+ $show_empty_fields = $config['meta']['empty'] ?? false; /* whether to show empty fields or not. Default is false */
474
+ $load_legacy_css = $config['meta']['legacy_css'] ?? false; /* whether we should add our legacy field class names (v3.x.x) to our fields. Default to false */
475
+ $show_section_description = $config['meta']['section_content'] ?? false; /* whether we should include a section breaks content. Default to false */
476
 
477
+ /** @var \GFPDF\Helper\Helper_Abstract_Fields $class */
478
  $class = $model->get_field_class( $field, $form, $entry, $products );
479
 
480
  /* Try and display our HTML */
481
  try {
482
 
483
  /* Only load our HTML if the field is NOT empty, or the $empty config option is true */
484
+ if ( $show_empty_fields === true || ! $class->is_empty() ) {
485
  /* Load our legacy CSS class names */
486
  if ( $load_legacy_css === true ) {
487
  GFPDFEntryDetail::load_legacy_css( $field );
493
  */
494
  $container->generate( $field );
495
 
496
+ $class->enable_output();
497
+ $field->type !== 'section' ? $class->html() : $class->html( $show_section_description );
498
  } else {
499
  /* To prevent display issues we will output the column markup needed */
500
  $container->maybe_display_faux_column( $field );
531
  $html = $this->load( 'form_title', [ 'form' => $form ], false );
532
 
533
  /* Run it through a filter and output */
534
+ Kses::output( apply_filters( 'gfpdf_pdf_form_title_html', $html, $form ) );
535
  }
536
  }
537
 
573
  );
574
 
575
  /* Run it through a filter and output */
576
+ Kses::output( apply_filters( 'gfpdf_field_page_name_html', $html, $page, $form ) );
577
  }
578
  }
579
 
636
  }
637
 
638
  /**
639
+ * Allow PDF HTML Mark-up when using wp_kses_post() during PDF generation
640
  *
641
+ * @param array $tags
642
  *
643
  * @return array
644
  *
645
  * @since 5.1.1
646
  */
647
+ public function allow_pdf_html( $tags ) {
648
+ return Kses::get_allowed_pdf_tags( $tags );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649
  }
650
 
651
  /**
652
+ * Allow PDF CSS Mark-up when using wp_kses_post() during PDF generation
653
  *
654
+ * @param array $styles
655
  *
656
  * @return array
657
  *
658
  * @since 5.1.1
659
  */
660
+ public function allow_pdf_css( $styles ) {
661
+ return Kses::get_allowed_pdf_styles( $styles );
662
+ }
663
+
664
+ /**
665
+ * @param array $form_data
666
+ *
667
+ * @return void
668
+ *
669
+ * @since 6.4.0
670
+ */
671
+ public function maybe_view_form_data( $form_data ) {
672
+
673
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
674
+ if ( ! isset( $_GET['data'] ) ) {
675
+ return;
676
+ }
677
+
678
+ /* Disable if PDF Debug Mode off AND the environment is production */
679
+ if ( $this->options->get_option( 'debug_mode', 'No' ) === 'No' && ( ! function_exists( 'wp_get_environment_type' ) || wp_get_environment_type() === 'production' ) ) {
680
+ return;
681
+ }
682
+
683
+ /* Check if user has permission to view info */
684
+ if ( ! $this->gform->has_capability( 'gravityforms_view_settings' ) ) {
685
+ return;
686
+ }
687
+
688
+ print '<pre>';
689
+ /* phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r */
690
+ print_r( $form_data );
691
+ print '</pre>';
692
 
693
+ exit;
694
  }
695
  }
src/View/View_Settings.php CHANGED
@@ -133,18 +133,29 @@ class View_Settings extends Helper_Abstract_View {
133
  * @return string
134
  * @since 4.0
135
  *
 
136
  */
137
  public function tabs() {
 
 
138
 
139
- /* Set up any variables we need for the view and display */
 
 
 
 
 
 
 
 
140
  $vars = [
141
- 'selected' => isset( $_GET['tab'] ) ? $_GET['tab'] : 'general',
 
142
  'tabs' => $this->get_available_tabs(),
143
  'data' => $this->data,
144
  ];
145
 
146
- /* load the tabs view */
147
- return $this->load( 'tabs', $vars, false );
148
  }
149
 
150
  /**
@@ -221,7 +232,9 @@ class View_Settings extends Helper_Abstract_View {
221
  'width' => 'full',
222
  'title' => __( 'Default PDF Options', 'gravity-forms-pdf-extended' ),
223
  'desc' => __( 'Control the default settings to use when you create new PDFs on your forms.', 'gravity-forms-pdf-extended' ),
224
- 'content' => $markup->do_settings_fields( 'gfpdf_settings_general_defaults', $markup::ENABLE_PANEL_TITLE ),
 
 
225
  'content_class' => 'gform_settings_form',
226
  ],
227
  ];
@@ -243,14 +256,17 @@ class View_Settings extends Helper_Abstract_View {
243
  'width' => 'full',
244
  'collapsible' => true,
245
  'title' => __( 'Security', 'gravity-forms-pdf-extended' ),
246
- 'content' => $markup->do_settings_fields( 'gfpdf_settings_general_security', $markup::ENABLE_PANEL_TITLE ),
 
 
247
  'content_class' => 'gform_settings_form',
248
  ];
249
 
250
  $vars = [
251
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
252
- 'content' => $markup->do_settings_sections( $sections ),
253
- 'menu' => $this->tabs(),
 
254
  ];
255
 
256
  /* load the system status view */
@@ -270,11 +286,12 @@ class View_Settings extends Helper_Abstract_View {
270
 
271
  $sections = [
272
  [
273
- 'id' => 'gfpdf_settings_general_view',
274
- 'width' => 'full',
275
- 'title' => __( 'Licensing', 'gravity-forms-pdf-extended' ),
276
- 'content' => $this->load( 'licence-info', [], false ),
277
- 'menu' => $this->tabs(),
 
278
  ],
279
  ];
280
 
@@ -284,13 +301,19 @@ class View_Settings extends Helper_Abstract_View {
284
 
285
  if ( empty( $args ) ) {
286
  $args = [
287
- 'id' => $field['args']['id'],
288
- 'width' => 'half',
289
- 'title' => $field['title'],
290
- 'content' => $markup->get_field_content( $field, $markup::DISABLE_PANEL_TITLE ),
 
 
 
 
291
  ];
292
  } else {
293
- $args['content'] .= $markup->get_field_content( $field, $markup::DISABLE_PANEL_TITLE );
 
 
294
  }
295
 
296
  if ( $i % 3 === 0 ) {
@@ -303,8 +326,9 @@ class View_Settings extends Helper_Abstract_View {
303
 
304
  $vars = [
305
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
306
- 'content' => $markup->do_settings_sections( $sections ),
307
- 'menu' => $this->tabs(),
 
308
  ];
309
 
310
  /* load the system status view */
@@ -321,7 +345,6 @@ class View_Settings extends Helper_Abstract_View {
321
  public function extensions() {
322
  $vars = [
323
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
324
- 'menu' => $this->tabs(),
325
  ];
326
 
327
  /* load the system status view */
@@ -338,7 +361,6 @@ class View_Settings extends Helper_Abstract_View {
338
  public function help() {
339
  $vars = [
340
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
341
- 'menu' => $this->tabs(),
342
  ];
343
 
344
  /* load the system status view */
@@ -369,16 +391,15 @@ class View_Settings extends Helper_Abstract_View {
369
  'template_directory' => $this->misc->relative_path( $template_directory, '/' ),
370
  'template_files' => $this->templates->get_core_pdf_templates(),
371
  'custom_template_setup_warning' => $this->options->get_option( 'custom_pdf_template_files_installed' ),
372
- 'content' => $markup->do_settings_sections( $sections ),
373
- 'menu' => $this->tabs(),
 
374
  ];
375
 
376
  /* load the system status view */
377
  $this->load( 'tools', $vars );
378
  }
379
 
380
-
381
-
382
  /**
383
  * Add Gravity Forms Tooltips
384
  *
133
  * @return string
134
  * @since 4.0
135
  *
136
+ * @deprecated 6.4
137
  */
138
  public function tabs() {
139
+ ob_start();
140
+ $this->sub_menu();
141
 
142
+ return ob_get_clean();
143
+ }
144
+
145
+ /**
146
+ * Display the sub menu for the global settings
147
+ *
148
+ * @since 6.4
149
+ */
150
+ public function sub_menu() {
151
  $vars = [
152
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
153
+ 'selected' => $_GET['tab'] ?? 'general',
154
  'tabs' => $this->get_available_tabs(),
155
  'data' => $this->data,
156
  ];
157
 
158
+ $this->load( 'tabs', $vars );
 
159
  }
160
 
161
  /**
232
  'width' => 'full',
233
  'title' => __( 'Default PDF Options', 'gravity-forms-pdf-extended' ),
234
  'desc' => __( 'Control the default settings to use when you create new PDFs on your forms.', 'gravity-forms-pdf-extended' ),
235
+ 'callback' => static function() use ( $markup ) {
236
+ $markup->output_settings_fields( 'gfpdf_settings_general_defaults', $markup::ENABLE_PANEL_TITLE );
237
+ },
238
  'content_class' => 'gform_settings_form',
239
  ],
240
  ];
256
  'width' => 'full',
257
  'collapsible' => true,
258
  'title' => __( 'Security', 'gravity-forms-pdf-extended' ),
259
+ 'callback' => static function() use ( $markup ) {
260
+ $markup->output_settings_fields( 'gfpdf_settings_general_security', $markup::ENABLE_PANEL_TITLE );
261
+ },
262
  'content_class' => 'gform_settings_form',
263
  ];
264
 
265
  $vars = [
266
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
267
+ 'callback' => static function() use ( $markup, $sections ) {
268
+ $markup->do_settings_sections( $sections, true );
269
+ },
270
  ];
271
 
272
  /* load the system status view */
286
 
287
  $sections = [
288
  [
289
+ 'id' => 'gfpdf_settings_general_view',
290
+ 'width' => 'full',
291
+ 'title' => __( 'Licensing', 'gravity-forms-pdf-extended' ),
292
+ 'callback' => function() {
293
+ $this->load( 'licence-info', [] );
294
+ },
295
  ],
296
  ];
297
 
301
 
302
  if ( empty( $args ) ) {
303
  $args = [
304
+ 'id' => $field['args']['id'],
305
+ 'width' => 'half',
306
+ 'title' => $field['title'],
307
+ 'callback' => [
308
+ static function() use ( $markup, $field ) {
309
+ $markup->get_field_content( $field, $markup::DISABLE_PANEL_TITLE, true );
310
+ },
311
+ ],
312
  ];
313
  } else {
314
+ $args['callback'][] = static function() use ( $markup, $field ) {
315
+ $markup->get_field_content( $field, $markup::DISABLE_PANEL_TITLE, true );
316
+ };
317
  }
318
 
319
  if ( $i % 3 === 0 ) {
326
 
327
  $vars = [
328
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
329
+ 'callback' => static function() use ( $markup, $sections ) {
330
+ $markup->do_settings_sections( $sections, true );
331
+ },
332
  ];
333
 
334
  /* load the system status view */
345
  public function extensions() {
346
  $vars = [
347
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
 
348
  ];
349
 
350
  /* load the system status view */
361
  public function help() {
362
  $vars = [
363
  'edit_cap' => $this->gform->has_capability( 'gravityforms_edit_settings' ),
 
364
  ];
365
 
366
  /* load the system status view */
391
  'template_directory' => $this->misc->relative_path( $template_directory, '/' ),
392
  'template_files' => $this->templates->get_core_pdf_templates(),
393
  'custom_template_setup_warning' => $this->options->get_option( 'custom_pdf_template_files_installed' ),
394
+ 'callback' => static function() use ( $markup, $sections ) {
395
+ $markup->do_settings_sections( $sections, true );
396
+ },
397
  ];
398
 
399
  /* load the system status view */
400
  $this->load( 'tools', $vars );
401
  }
402
 
 
 
403
  /**
404
  * Add Gravity Forms Tooltips
405
  *
src/View/html/Actions/action_buttons.php CHANGED
@@ -19,11 +19,11 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  ?>
20
 
21
  <form method="post">
22
- <input type="hidden" name="gfpdf_action" value="gfpdf_<?= $args['type']; ?>" />
23
- <input type="hidden" name="gfpdf_action_<?= $args['type']; ?>" value="<?= wp_create_nonce( 'gfpdf_action_' . $args['type'] ); ?>" />
24
 
25
  <p>
26
- <button class="button"><?= $args['button_text']; ?></button>
27
 
28
  <?php if ( $args['dismissal'] === 'enabled' ): ?>
29
  <input class="button primary" type="submit" value="<?php esc_attr_e( 'Dismiss Notice', 'gravity-forms-pdf-extended' ); ?>" name="gfpdf-dismiss-notice" />
19
  ?>
20
 
21
  <form method="post">
22
+ <input type="hidden" name="gfpdf_action" value="gfpdf_<?php echo esc_attr( $args['type'] ); ?>" />
23
+ <input type="hidden" name="gfpdf_action_<?php echo esc_attr( $args['type'] ); ?>" value="<?php echo esc_attr( wp_create_nonce( 'gfpdf_action_' . $args['type'] ) ); ?>" />
24
 
25
  <p>
26
+ <button class="button"><?php echo esc_html( $args['button_text'] ); ?></button>
27
 
28
  <?php if ( $args['dismissal'] === 'enabled' ): ?>
29
  <input class="button primary" type="submit" value="<?php esc_attr_e( 'Dismiss Notice', 'gravity-forms-pdf-extended' ); ?>" name="gfpdf-dismiss-notice" />
src/View/html/FormSettings/add_edit.php CHANGED
@@ -23,9 +23,9 @@ global $wp_settings_fields;
23
  <script type="text/javascript">
24
  <?php GFCommon::gf_global(); ?>
25
  <?php GFCommon::gf_vars(); ?>
26
- var form = <?= json_encode( $args['form'] ); ?>;
27
- var gfpdf_current_pdf = <?= json_encode( $args['pdf'] ); ?>;
28
- var entry_meta = <?= json_encode( $args['entry_meta'] ); ?>;
29
 
30
  <?php GFFormSettings::output_field_scripts(); ?>
31
  </script>
@@ -33,18 +33,28 @@ global $wp_settings_fields;
33
  <?php GFFormSettings::page_header( $args['title'] ); ?>
34
 
35
  <!-- Prevent Firefox auto-filling fields on refresh. @see https://stackoverflow.com/a/44504822/1614565 -->
36
- <form name="gfpdf-settings-form-<?= rand() ?>" method="post" id="gfpdf_pdf_form"
37
- class="gform_settings_form <?= $args['form_classes'] ?>">
38
 
39
  <?php wp_nonce_field( 'gfpdf_save_pdf', 'gfpdf_save_pdf' ); ?>
40
 
41
- <input type="hidden" id="gform_pdf_id" name="gform_pdf_id" value="<?= esc_attr( $args['pdf_id'] ) ?>" />
42
- <input type="hidden" id="gform_id" name="gform_id" value="<?= esc_attr( $args['form']['id'] ) ?>" />
43
 
44
- <?= $args['content'] ?>
 
 
 
 
 
 
 
 
 
 
45
 
46
  <div id="submit-and-promo-container">
47
- <input type="submit" name="submit" id="submit" value="<?= $args['button_label']; ?>" class="button primary large">
48
 
49
  <div class="extensions-upsell">
50
  <a href="https://gravitypdf.com/store/">
23
  <script type="text/javascript">
24
  <?php GFCommon::gf_global(); ?>
25
  <?php GFCommon::gf_vars(); ?>
26
+ var form = <?php echo wp_json_encode( $args['form'] ); ?>;
27
+ var gfpdf_current_pdf = <?php echo wp_json_encode( $args['pdf'] ); ?>;
28
+ var entry_meta = <?php echo wp_json_encode( $args['entry_meta'] ); ?>;
29
 
30
  <?php GFFormSettings::output_field_scripts(); ?>
31
  </script>
33
  <?php GFFormSettings::page_header( $args['title'] ); ?>
34
 
35
  <!-- Prevent Firefox auto-filling fields on refresh. @see https://stackoverflow.com/a/44504822/1614565 -->
36
+ <form name="gfpdf-settings-form-<?php echo esc_attr( wp_rand() ); ?>" method="post" id="gfpdf_pdf_form"
37
+ class="gform_settings_form <?php echo esc_attr( $args['form_classes'] ); ?>">
38
 
39
  <?php wp_nonce_field( 'gfpdf_save_pdf', 'gfpdf_save_pdf' ); ?>
40
 
41
+ <input type="hidden" id="gform_pdf_id" name="gform_pdf_id" value="<?php echo esc_attr( $args['pdf_id'] ); ?>" />
42
+ <input type="hidden" id="gform_id" name="gform_id" value="<?php echo esc_attr( $args['form']['id'] ); ?>" />
43
 
44
+ <?php
45
+ /** @since 6.4.0 */
46
+ if ( isset( $args['callback'] ) ) {
47
+ call_user_func_array( $args['callback'], $args['callback_args'] ?? [] );
48
+ }
49
+
50
+ /** @deprecated 6.4.0 */
51
+ if ( isset( $args['content'] ) ) {
52
+ echo wp_kses_post( $args['content'] );
53
+ }
54
+ ?>
55
 
56
  <div id="submit-and-promo-container">
57
+ <input type="submit" name="submit" id="submit" value="<?php echo esc_attr( $args['button_label'] ); ?>" class="button primary large">
58
 
59
  <div class="extensions-upsell">
60
  <a href="https://gravitypdf.com/store/">
src/View/html/FormSettings/list.php CHANGED
@@ -26,7 +26,7 @@ $list_items = $args['list_items'];
26
  <div class="gform-settings__content">
27
  <div class="gform-settings-panel">
28
  <header class="gform-settings-panel__header">
29
- <h4 class="gform-settings-panel__title"><?= esc_html( $args['title'] ); ?></h4>
30
  </header>
31
 
32
  <div class="gform-settings-panel__content">
@@ -34,7 +34,7 @@ $list_items = $args['list_items'];
34
  <div class="tablenav top">
35
  <div class="alignleft actions bulkactions"></div>
36
  <div class="alignright">
37
- <a class="button" href="<?= esc_url( $args['add_new_url'] ) ?>" aria-label="<?= esc_attr__( 'Add new PDF', 'gravity-forms-pdf-extended' ) ?>"><?php esc_html_e( 'Add New', 'gravityforms' ); ?></a>
38
  </div>
39
  <br class="clear">
40
  </div>
26
  <div class="gform-settings__content">
27
  <div class="gform-settings-panel">
28
  <header class="gform-settings-panel__header">
29
+ <h4 class="gform-settings-panel__title"><?php echo esc_html( $args['title'] ); ?></h4>
30
  </header>
31
 
32
  <div class="gform-settings-panel__content">
34
  <div class="tablenav top">
35
  <div class="alignleft actions bulkactions"></div>
36
  <div class="alignright">
37
+ <a class="button" href="<?php echo esc_url( $args['add_new_url'] ); ?>" aria-label="<?php echo esc_attr__( 'Add new PDF', 'gravity-forms-pdf-extended' ); ?>"><?php esc_html_e( 'Add New', 'gravityforms' ); ?></a>
38
  </div>
39
  <br class="clear">
40
  </div>
src/View/html/GravityForms/fieldset.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  exit;
13
  }
14
 
15
- $width = isset( $args['width'] ) ? $args['width'] : 'full';
16
  $width_class = 'gform-settings-panel--' . $width;
17
 
18
  $collapsible = ! empty( $args['collapsible'] );
@@ -22,9 +22,11 @@ if ( $collapsible ) {
22
  $collapsible_name = 'gform_settings_section_collapsed_' . $args['id'];
23
 
24
  /* Force open the collapsible section if user had it open during submission */
 
25
  if ( isset( $_POST['gfpdf_settings'] ) ) {
26
  $args['collapsible-open'] = empty( $_POST[ $collapsible_name ] );
27
  }
 
28
 
29
  $collapsible_class = 'gform-settings-panel--collapsible';
30
  $collapsible_class .= empty( $args['collapsible-open'] ) ? ' gform-settings-panel--collapsed' : '';
@@ -32,38 +34,74 @@ if ( $collapsible ) {
32
 
33
  ?>
34
 
35
- <fieldset id="gfpdf-fieldset-<?= esc_attr( $args['id'] ) ?>" class="gform-settings-panel gform-settings-panel--with-title <?= esc_attr( $width_class ) ?> <?= $collapsible_class ?>">
36
- <?php if ( $collapsible ): ?>
37
- <legend class="gform-settings-panel__title gform-settings-panel__title--header">
38
- <label class="gform-settings-panel__title" id="<?= esc_attr( $collapsible_name ) ?>-description" for="<?= esc_attr( $collapsible_name ) ?>"><?= esc_html( $args['title'] ) ?></label>
39
 
40
- <?php if ( ! empty( $args['tooltip'] ) ): ?>
41
- <?= $args['tooltip'] ?>
42
- <?php endif; ?>
43
- </legend>
 
 
 
44
 
45
- <span class="gform-settings-panel__collapsible-control">
46
- <input type="checkbox" class="gform-settings-panel__collapsible-toggle-checkbox" name="<?= esc_attr( $collapsible_name ) ?>" id="<?= esc_attr( $collapsible_name ) ?>" aria-labelledby="<?=$collapsible_name?>-description" value="1"
 
 
 
 
 
 
 
 
 
 
47
  onclick="this.checked ? this.closest( '.gform-settings-panel' ).classList.add( 'gform-settings-panel--collapsed' ) : this.closest( '.gform-settings-panel' ).classList.remove( 'gform-settings-panel--collapsed' )"
48
  onkeydown="if(event.keyCode==13){ event.preventDefault(); this.click(); }"
49
- <?php checked( empty( $args['collapsible-open'] ) ); ?>>
50
- <label class="gform-settings-panel__collapsible-toggle" for="<?= esc_attr( $collapsible_name ) ?>"><span class="screen-reader-text"><?= sprintf( __( 'Toggle %s Section', 'gravity-forms-pdf-extended' ), esc_html( $args['title'] ) ) ?></span></label>
 
 
 
 
 
 
51
  </span>
52
- <?php else : ?>
53
- <legend class="gform-settings-panel__title gform-settings-panel__title--header">
54
- <?= esc_html( $args['title'] ) ?>
55
-
56
- <?php if ( ! empty( $args['tooltip'] ) ): ?>
57
- <?= $args['tooltip'] ?>
58
- <?php endif; ?>
59
- </legend>
60
- <?php endif; ?>
61
 
62
- <div class="gform-settings-panel__content <?= isset( $args['content_class'] ) ? esc_attr( $args['content_class'] ) : '' ?>">
 
 
 
 
 
 
63
  <?php if ( ! empty( $args['desc'] ) ): ?>
64
- <div class="gform-settings-description gform-settings-panel--full"><?= wp_kses_post( $args['desc'] ) ?></div>
65
  <?php endif; ?>
66
 
67
- <?= $args['content'] ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  </div>
69
  </fieldset>
12
  exit;
13
  }
14
 
15
+ $width = $args['width'] ?? 'full';
16
  $width_class = 'gform-settings-panel--' . $width;
17
 
18
  $collapsible = ! empty( $args['collapsible'] );
22
  $collapsible_name = 'gform_settings_section_collapsed_' . $args['id'];
23
 
24
  /* Force open the collapsible section if user had it open during submission */
25
+ /* phpcs:disable WordPress.Security.NonceVerification.Missing */
26
  if ( isset( $_POST['gfpdf_settings'] ) ) {
27
  $args['collapsible-open'] = empty( $_POST[ $collapsible_name ] );
28
  }
29
+ /* phpcs:enable */
30
 
31
  $collapsible_class = 'gform-settings-panel--collapsible';
32
  $collapsible_class .= empty( $args['collapsible-open'] ) ? ' gform-settings-panel--collapsed' : '';
34
 
35
  ?>
36
 
37
+ <fieldset id="<?php echo esc_attr( 'gfpdf-fieldset-' . $args['id'] ); ?>"
38
+ class="gform-settings-panel gform-settings-panel--with-title <?php echo esc_attr( $width_class ); ?> <?php echo esc_attr( $collapsible_class ); ?>">
 
 
39
 
40
+ <?php if ( $collapsible ): ?>
41
+ <legend class="gform-settings-panel__title gform-settings-panel__title--header">
42
+ <label class="gform-settings-panel__title"
43
+ id="<?php echo esc_attr( $collapsible_name ); ?>-description"
44
+ for="<?php echo esc_attr( $collapsible_name ); ?>">
45
+ <?php echo esc_html( $args['title'] ); ?>
46
+ </label>
47
 
48
+ <?php if ( ! empty( $args['tooltip'] ) ): ?>
49
+ <?php echo wp_kses_post( $args['tooltip'] ); ?>
50
+ <?php endif; ?>
51
+ </legend>
52
+
53
+ <span class="gform-settings-panel__collapsible-control">
54
+ <input type="checkbox"
55
+ class="gform-settings-panel__collapsible-toggle-checkbox"
56
+ name="<?php echo esc_attr( $collapsible_name ); ?>"
57
+ id="<?php echo esc_attr( $collapsible_name ); ?>"
58
+ aria-labelledby="<?php echo esc_attr( $collapsible_name ); ?>-description"
59
+ value="1"
60
  onclick="this.checked ? this.closest( '.gform-settings-panel' ).classList.add( 'gform-settings-panel--collapsed' ) : this.closest( '.gform-settings-panel' ).classList.remove( 'gform-settings-panel--collapsed' )"
61
  onkeydown="if(event.keyCode==13){ event.preventDefault(); this.click(); }"
62
+ <?php checked( empty( $args['collapsible-open'] ) ); ?>
63
+ />
64
+
65
+ <label class="gform-settings-panel__collapsible-toggle" for="<?php echo esc_attr( $collapsible_name ); ?>">
66
+ <span class="screen-reader-text">
67
+ <?php echo sprintf( esc_html__( 'Toggle %s Section', 'gravity-forms-pdf-extended' ), esc_html( $args['title'] ) ); ?>
68
+ </span>
69
+ </label>
70
  </span>
71
+ <?php else : ?>
72
+ <legend class="gform-settings-panel__title gform-settings-panel__title--header">
73
+ <?php echo esc_html( $args['title'] ); ?>
 
 
 
 
 
 
74
 
75
+ <?php if ( ! empty( $args['tooltip'] ) ): ?>
76
+ <?php echo wp_kses_post( $args['tooltip'] ); ?>
77
+ <?php endif; ?>
78
+ </legend>
79
+ <?php endif; ?>
80
+
81
+ <div class="gform-settings-panel__content <?php echo esc_attr( $args['content_class'] ?? '' ); ?>">
82
  <?php if ( ! empty( $args['desc'] ) ): ?>
83
+ <div class="gform-settings-description gform-settings-panel--full"><?php echo wp_kses_post( $args['desc'] ); ?></div>
84
  <?php endif; ?>
85
 
86
+ <?php
87
+ /** @since 6.4.0 */
88
+ if ( isset( $args['callback'] ) ) {
89
+ if ( ! is_array( $args['callback'] ) ) {
90
+ $args['callback'] = [ $args['callback'] ];
91
+ }
92
+
93
+ array_map(
94
+ static function( $callback ) use ( $args ) {
95
+ call_user_func_array( $callback, $args['callback_args'] ?? [] );
96
+ },
97
+ $args['callback']
98
+ );
99
+ }
100
+
101
+ /** @deprecated 6.4.0 */
102
+ if ( isset( $args['content'] ) ) {
103
+ echo wp_kses_post( $args['content'] );
104
+ }
105
+ ?>
106
  </div>
107
  </fieldset>
src/View/html/GravityForms/settings_field.php CHANGED
@@ -16,13 +16,13 @@ if ( ! defined( 'ABSPATH' ) ) {
16
 
17
  ?>
18
 
19
- <div id="<?= esc_attr( $args['id'] ) ?>" class="<?= esc_attr( $args['class'] ) ?>">
20
  <?php if ( ! empty( $args['title'] ) ): ?>
21
  <div class='gform-settings-panel__title'>
22
- <?= esc_html( $args['title'] ) ?>
23
 
24
  <?php if ( ! empty( $args['tooltip'] ) ): ?>
25
- <?= $args['tooltip'] ?>
26
  <?php endif; ?>
27
  </div>
28
  <?php endif; ?>
16
 
17
  ?>
18
 
19
+ <div id="<?php echo esc_attr( $args['id'] ); ?>" class="<?php echo esc_attr( $args['class'] ); ?>">
20
  <?php if ( ! empty( $args['title'] ) ): ?>
21
  <div class='gform-settings-panel__title'>
22
+ <?php echo esc_html( $args['title'] ); ?>
23
 
24
  <?php if ( ! empty( $args['tooltip'] ) ): ?>
25
+ <?php echo wp_kses_post( $args['tooltip'] ); ?>
26
  <?php endif; ?>
27
  </div>
28
  <?php endif; ?>
src/View/html/PDF/core_template_styles.php CHANGED
@@ -10,6 +10,9 @@
10
  */
11
 
12
  /* Exit if accessed directly */
 
 
 
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
@@ -64,11 +67,11 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
64
  <?php endif; ?>
65
 
66
  <?php if ( ! empty( $background_color ) ) : ?>
67
- background-color: <?= $background_color; ?>;
68
  <?php endif; ?>
69
 
70
  <?php if ( ! empty( $background_image ) ) : ?>
71
- background-image: url(<?= $background_image; ?>) no-repeat 0 0;
72
  background-image-resize: 4;
73
  <?php endif; ?>
74
  }
@@ -86,9 +89,9 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
86
  }
87
 
88
  body, th, td, li, a {
89
- color: <?= $font_colour; ?>;
90
- font-size: <?= $font_size; ?>pt;
91
- font-family: <?= $font; ?>, sans-serif;
92
  }
93
 
94
  .header-footer-img {
@@ -101,7 +104,7 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
101
  .gfield_list {
102
  border-collapse: collapse;
103
  border: 1px solid #000;
104
- border-color: <?= $contrast_border_color; ?>;
105
  margin: 2px 0 6px;
106
  padding: 0;
107
  width: 100%;
@@ -109,9 +112,9 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
109
 
110
  .gfield_list th {
111
  text-align: left;
112
- background-color: <?= $contrast_background_color; ?>;
113
  border: 1px solid #000;
114
- border-color: <?= $contrast_border_color; ?>;
115
  font-weight: bold;
116
  padding: 6px 10px;
117
  }
@@ -119,7 +122,7 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
119
  .gfield_list td {
120
  padding: 6px 10px;
121
  border: 1px solid #000;
122
- border-color: <?= $contrast_border_color; ?>;
123
  }
124
 
125
  <?php endif; ?>
@@ -127,11 +130,11 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
127
  /* Product Field Styles */
128
  <?php if ( $include_product_styles ) : ?>
129
  table.entry-products th {
130
- background-color: <?= $contrast_background_color; ?>;
131
  border-bottom: 1px solid #000;
132
  border-right: 1px solid #000;
133
- border-bottom-color: <?= $contrast_border_color; ?>;
134
- border-right-color: <?= $contrast_border_color; ?>;
135
  }
136
 
137
  table.entry-products td.textcenter, table.entry-products th.textcenter {
@@ -152,21 +155,21 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
152
 
153
  table.entry-products {
154
  border: 1px solid #000;
155
- border-color: <?= $contrast_border_color; ?>;
156
  margin: 5px 0 3px;
157
  }
158
 
159
  table.entry-products td {
160
  border-bottom: 1px solid #000;
161
  border-right: 1px solid #000;
162
- border-bottom-color: <?= $contrast_border_color; ?>;
163
- border-right-color: <?= $contrast_border_color; ?>;
164
  padding: 7px 7px 8px;
165
  vertical-align: top;
166
  }
167
 
168
  table.entry-products td.emptycell {
169
- background-color: <?= $contrast_background_color; ?>;
170
  }
171
 
172
  table.entry-products td.totals {
@@ -235,7 +238,7 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
235
  <?php if ( ! empty( $first_header ) ) : ?>
236
  <htmlpageheader name="TemplateFirstHeader">
237
  <div id="first_header">
238
- <?= $first_header; ?>
239
  </div>
240
  </htmlpageheader>
241
  <?php endif; ?>
@@ -243,7 +246,7 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
243
  <?php if ( ! empty( $header ) ) : ?>
244
  <htmlpageheader name="TemplateHeader">
245
  <div id="header">
246
- <?= $header; ?>
247
  </div>
248
  </htmlpageheader>
249
  <?php endif; ?>
@@ -251,7 +254,7 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
251
  <?php if ( ! empty( $first_footer ) ) : ?>
252
  <htmlpagefooter name="TemplateFirstFooter">
253
  <div id="first_footer">
254
- <?= $first_footer; ?>
255
  </div>
256
  </htmlpagefooter>
257
  <?php endif; ?>
@@ -259,7 +262,7 @@ $include_product_styles = apply_filters( 'gfpdf_include_product_styles', true, $
259
  <?php if ( ! empty( $footer ) ) : ?>
260
  <htmlpagefooter name="TemplateFooter">
261
  <div class="footer">
262
- <?= $footer; ?>
263
  </div>
264
  </htmlpagefooter>
265
  <?php endif; ?>
10
  */
11
 
12
  /* Exit if accessed directly */
13
+
14
+ use GFPDF\Statics\Kses;
15
+
16
  if ( ! defined( 'ABSPATH' ) ) {
17
  exit;
18
  }
67
  <?php endif; ?>
68
 
69
  <?php if ( ! empty( $background_color ) ) : ?>
70
+ background-color: <?php echo esc_html( $background_color ); ?>;
71
  <?php endif; ?>
72
 
73
  <?php if ( ! empty( $background_image ) ) : ?>
74
+ background-image: url(<?php echo esc_url_raw( $background_image ); ?>) no-repeat 0 0;
75
  background-image-resize: 4;
76
  <?php endif; ?>
77
  }
89
  }
90
 
91
  body, th, td, li, a {
92
+ color: <?php echo esc_html( $font_colour ); ?>;
93
+ font-size: <?php echo esc_html( $font_size ); ?>pt;
94
+ font-family: <?php echo esc_html( $font ); ?>, sans-serif;
95
  }
96
 
97
  .header-footer-img {
104
  .gfield_list {
105
  border-collapse: collapse;
106
  border: 1px solid #000;
107
+ border-color: <?php echo esc_html( $contrast_border_color ); ?>;
108
  margin: 2px 0 6px;
109
  padding: 0;
110
  width: 100%;
112
 
113
  .gfield_list th {
114
  text-align: left;
115
+ background-color: <?php echo esc_html( $contrast_background_color ); ?>;
116
  border: 1px solid #000;
117
+ border-color: <?php echo esc_html( $contrast_border_color ); ?>;
118
  font-weight: bold;
119
  padding: 6px 10px;
120
  }
122
  .gfield_list td {
123
  padding: 6px 10px;
124
  border: 1px solid #000;
125
+ border-color: <?php echo esc_html( $contrast_border_color ); ?>;
126
  }
127
 
128
  <?php endif; ?>
130
  /* Product Field Styles */
131
  <?php if ( $include_product_styles ) : ?>
132
  table.entry-products th {
133
+ background-color: <?php echo esc_html( $contrast_background_color ); ?>;
134
  border-bottom: 1px solid #000;
135
  border-right: 1px solid #000;
136
+ border-bottom-color: <?php echo esc_html( $contrast_border_color ); ?>;
137
+ border-right-color: <?php echo esc_html( $contrast_border_color ); ?>;
138
  }
139
 
140
  table.entry-products td.textcenter, table.entry-products th.textcenter {
155
 
156
  table.entry-products {
157
  border: 1px solid #000;
158
+ border-color: <?php echo esc_html( $contrast_border_color ); ?>;
159
  margin: 5px 0 3px;
160
  }
161
 
162
  table.entry-products td {
163
  border-bottom: 1px solid #000;
164
  border-right: 1px solid #000;
165
+ border-bottom-color: <?php echo esc_html( $contrast_border_color ); ?>;
166
+ border-right-color: <?php echo esc_html( $contrast_border_color ); ?>;
167
  padding: 7px 7px 8px;
168
  vertical-align: top;
169
  }
170
 
171
  table.entry-products td.emptycell {
172
+ background-color: <?php echo esc_html( $contrast_background_color ); ?>;
173
  }
174
 
175
  table.entry-products td.totals {
238
  <?php if ( ! empty( $first_header ) ) : ?>
239
  <htmlpageheader name="TemplateFirstHeader">
240
  <div id="first_header">
241
+ <?php Kses::output( $first_header ); ?>
242
  </div>
243
  </htmlpageheader>
244
  <?php endif; ?>
246
  <?php if ( ! empty( $header ) ) : ?>
247
  <htmlpageheader name="TemplateHeader">
248
  <div id="header">
249
+ <?php Kses::output( $header ); ?>
250
  </div>
251
  </htmlpageheader>
252
  <?php endif; ?>
254
  <?php if ( ! empty( $first_footer ) ) : ?>
255
  <htmlpagefooter name="TemplateFirstFooter">
256
  <div id="first_footer">
257
+ <?php Kses::output( $first_footer ); ?>
258
  </div>
259
  </htmlpagefooter>
260
  <?php endif; ?>
262
  <?php if ( ! empty( $footer ) ) : ?>
263
  <htmlpagefooter name="TemplateFooter">
264
  <div class="footer">
265
+ <?php Kses::output( $footer ); ?>
266
  </div>
267
  </htmlpagefooter>
268
  <?php endif; ?>
src/View/html/PDF/entry_detailed_pdf.php CHANGED
@@ -25,15 +25,15 @@ if ( ! defined( 'ABSPATH' ) ) {
25
 
26
  <?php do_action( 'gfpdf_entry_detail_pre_pdf_name_markup', $pdf, $args['pdfs'] ); ?>
27
 
28
- <div><?= esc_html( $pdf['name'] ); ?></div>
29
 
30
  <?php do_action( 'gfpdf_entry_detail_post_pdf_name_markup', $pdf, $args['pdfs'] ); ?>
31
 
32
- <div class="gfpdf_detailed_pdf_cta" aria-label="<?= esc_attr( sprintf( __( 'View or download %s.pdf', 'gravity-forms-pdf-extended' ), $pdf['name'] ) ) ?>">
33
  <?php do_action( 'gfpdf_entry_detail_pre_pdf_links_markup', $pdf, $args['pdfs'] ); ?>
34
 
35
- <a href="<?= esc_url( $pdf['view'] ) ?>" target="_blank"><?= esc_html__( 'View', 'gravity-forms-pdf-extended' ) ?></a> |
36
- <a href="<?= esc_url( $pdf['download'] ) ?>"><?= esc_html__( 'Download', 'gravity-forms-pdf-extended' ); ?></a>
37
 
38
  <?php do_action( 'gfpdf_entry_detail_post_pdf_links_markup', $pdf, $args['pdfs'] ); ?>
39
  </div>
25
 
26
  <?php do_action( 'gfpdf_entry_detail_pre_pdf_name_markup', $pdf, $args['pdfs'] ); ?>
27
 
28
+ <div><?php echo esc_html( $pdf['name'] ); ?></div>
29
 
30
  <?php do_action( 'gfpdf_entry_detail_post_pdf_name_markup', $pdf, $args['pdfs'] ); ?>
31
 
32
+ <div class="gfpdf_detailed_pdf_cta" aria-label="<?php echo esc_attr( sprintf( __( 'View or download %s.pdf', 'gravity-forms-pdf-extended' ), $pdf['name'] ) ); ?>">
33
  <?php do_action( 'gfpdf_entry_detail_pre_pdf_links_markup', $pdf, $args['pdfs'] ); ?>
34
 
35
+ <a href="<?php echo esc_url( $pdf['view'] ); ?>" target="_blank"><?php echo esc_html__( 'View', 'gravity-forms-pdf-extended' ); ?></a> |
36
+ <a href="<?php echo esc_url( $pdf['download'] ); ?>"><?php echo esc_html__( 'Download', 'gravity-forms-pdf-extended' ); ?></a>
37
 
38
  <?php do_action( 'gfpdf_entry_detail_post_pdf_links_markup', $pdf, $args['pdfs'] ); ?>
39
  </div>
src/View/html/PDF/entry_list_pdf_multiple.php CHANGED
@@ -17,22 +17,22 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  /** @var $args array */
18
 
19
  $download = $args['view'] === 'download';
20
- $parent_link_text = $download ? esc_html__( 'Download PDFs', 'gravity-forms-pdf-extended' ) : esc_html__( 'View PDFs', 'gravity-forms-pdf-extended' );
21
 
22
  ?>
23
 
24
  <div class="gfpdf_form_action_has_submenu">
25
- | <a href="#" aria-haspopup="true" aria-expanded="false"><?= $parent_link_text ?></a>
26
  <div class="gform-form-toolbar__submenu">
27
  <div data-simplebar>
28
  <ul>
29
  <?php foreach ( $args['pdfs'] as $pdf ): ?>
30
  <li>
31
- <a href="<?= $download ? esc_url( $pdf['download'] ) : esc_url( $pdf['view'] ); ?>"
32
- <?= ! $download ? 'target="_blank"' : ''; ?>
33
- data-label="<?= esc_attr( $pdf['name'] ) ?>"
34
  >
35
- <?= esc_html( $pdf['name'] ); ?>
36
  </a>
37
  </li>
38
  <?php endforeach; ?>
17
  /** @var $args array */
18
 
19
  $download = $args['view'] === 'download';
20
+ $parent_link_text = $download ? __( 'Download PDFs', 'gravity-forms-pdf-extended' ) : __( 'View PDFs', 'gravity-forms-pdf-extended' );
21
 
22
  ?>
23
 
24
  <div class="gfpdf_form_action_has_submenu">
25
+ | <a href="#" aria-haspopup="true" aria-expanded="false"><?php echo esc_html( $parent_link_text ); ?></a>
26
  <div class="gform-form-toolbar__submenu">
27
  <div data-simplebar>
28
  <ul>
29
  <?php foreach ( $args['pdfs'] as $pdf ): ?>
30
  <li>
31
+ <a href="<?php echo $download ? esc_url( $pdf['download'] ) : esc_url( $pdf['view'] ); ?>"
32
+ <?php echo ! $download ? 'target="_blank"' : ''; ?>
33
+ data-label="<?php echo esc_attr( $pdf['name'] ); ?>"
34
  >
35
+ <?php echo esc_html( $pdf['name'] ); ?>
36
  </a>
37
  </li>
38
  <?php endforeach; ?>
src/View/html/PDF/entry_list_pdf_single.php CHANGED
@@ -16,9 +16,11 @@ if ( ! defined( 'ABSPATH' ) ) {
16
 
17
  /** @var $args array */
18
 
 
 
19
  ?>
20
 
21
  |
22
- <a href="<?= ( $args['view'] === 'download' ) ? esc_url( $args['pdf']['download'] ) : esc_url( $args['pdf']['view'] ); ?>" <?= ( $args['view'] !== 'download' ) ? 'target="_blank"' : ''; ?>>
23
- <?= ( $args['view'] === 'download' ) ? esc_html__( 'Download PDF', 'gravity-forms-pdf-extended' ) : esc_html__( 'View PDF', 'gravity-forms-pdf-extended' ); ?>
24
  </a>
16
 
17
  /** @var $args array */
18
 
19
+ $is_download = $args['view'] === 'download';
20
+
21
  ?>
22
 
23
  |
24
+ <a href="<?php echo $is_download ? esc_url( $args['pdf']['download'] ) : esc_url( $args['pdf']['view'] ); ?>" <?php echo $is_download ? 'target="_blank"' : ''; ?>>
25
+ <?php echo $is_download ? esc_html__( 'Download PDF', 'gravity-forms-pdf-extended' ) : esc_html__( 'View PDF', 'gravity-forms-pdf-extended' ); ?>
26
  </a>
src/View/html/PDF/entry_no_valid_pdf.php CHANGED
@@ -17,5 +17,5 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  ?>
18
 
19
  <div class="gfpdf_detailed_pdf_container">
20
- <?= esc_html__( 'No PDFs available for this entry.', 'gravity-forms-pdf-extended' ); ?>
21
  </div>
17
  ?>
18
 
19
  <div class="gfpdf_detailed_pdf_container">
20
+ <?php echo esc_html__( 'No PDFs available for this entry.', 'gravity-forms-pdf-extended' ); ?>
21
  </div>
src/View/html/PDF/form_title.php CHANGED
@@ -19,5 +19,5 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  ?>
20
 
21
  <div class="row-separator">
22
- <h3 id="form_title"><?= $form['title']; ?></h3>
23
  </div>
19
  ?>
20
 
21
  <div class="row-separator">
22
+ <h3 id="form_title"><?php echo esc_html( $form['title'] ); ?></h3>
23
  </div>
src/View/html/PDF/page_title.php CHANGED
@@ -23,7 +23,7 @@ if ( ! defined( 'ABSPATH' ) ) {
23
  ?>
24
 
25
  <div class="row-separator">
26
- <h3 class="gfpdf-page gfpdf-field <?= $classes; ?>">
27
- <?= $form['pagination']['pages'][ $page ]; ?>
28
  </h3>
29
  </div>
23
  ?>
24
 
25
  <div class="row-separator">
26
+ <h3 class="gfpdf-page gfpdf-field <?php echo esc_attr( $classes ); ?>">
27
+ <?php echo esc_html( $form['pagination']['pages'][ $page ] ); ?>
28
  </h3>
29
  </div>
src/View/html/Settings/extensions.php CHANGED
@@ -41,7 +41,6 @@ if ( ! defined( 'ABSPATH' ) ) {
41
  </form>
42
 
43
  <?php
44
- /* @TODO */
45
  do_action( 'gfpdf_post_extensions_settings_page' );
46
  ?>
47
  </div>
41
  </form>
42
 
43
  <?php
 
44
  do_action( 'gfpdf_post_extensions_settings_page' );
45
  ?>
46
  </div>
src/View/html/Settings/general.php CHANGED
@@ -23,15 +23,26 @@ GFCommon::display_admin_message();
23
  <div id="pdfextended-settings">
24
 
25
  <!-- Prevent Firefox auto-filling fields on refresh. @see https://stackoverflow.com/a/44504822/1614565 -->
26
- <form name="gfpdf-settings-form-<?= rand() ?>" class="gform_settings_form" method="post" action="options.php">
27
  <?php settings_fields( 'gfpdf_settings' ); ?>
28
 
29
- <?= $args['menu'] ?>
30
- <?= $args['content'] ?>
 
 
 
 
 
 
 
 
 
 
 
31
 
32
  <div id="submit-and-promo-container">
33
  <?php if ( $args['edit_cap'] ): ?>
34
- <input type="submit" name="submit" id="submit" value="<?= __( 'Save Settings →', 'gravityforms' ) ?>" class="button primary large">
35
  <?php endif; ?>
36
 
37
  <div class="extensions-upsell">
23
  <div id="pdfextended-settings">
24
 
25
  <!-- Prevent Firefox auto-filling fields on refresh. @see https://stackoverflow.com/a/44504822/1614565 -->
26
+ <form name="gfpdf-settings-form-<?php echo esc_attr( wp_rand() ); ?>" class="gform_settings_form" method="post" action="options.php">
27
  <?php settings_fields( 'gfpdf_settings' ); ?>
28
 
29
+ <?php do_action( 'gfpdf_settings_sub_menu' ); ?>
30
+
31
+ <?php
32
+ /** @since 6.4.0 */
33
+ if ( isset( $args['callback'] ) ) {
34
+ call_user_func_array( $args['callback'], $args['callback_args'] ?? [] );
35
+ }
36
+
37
+ /** @deprecated 6.4.0 */
38
+ if ( isset( $args['content'] ) ) {
39
+ echo wp_kses_post( $args['content'] );
40
+ }
41
+ ?>
42
 
43
  <div id="submit-and-promo-container">
44
  <?php if ( $args['edit_cap'] ): ?>
45
+ <input type="submit" name="submit" id="submit" value="<?php echo esc_attr__( 'Save Settings →', 'gravityforms' ); ?>" class="button primary large">
46
  <?php endif; ?>
47
 
48
  <div class="extensions-upsell">
src/View/html/Settings/help.php CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
 
21
  <div id="pdfextended-settings" class="gpdf-help">
22
 
23
- <?= $args['menu'] ?>
24
 
25
  <h2><?php esc_html_e( 'Get help with Gravity PDF', 'gravity-forms-pdf-extended' ); ?></h2>
26
 
20
 
21
  <div id="pdfextended-settings" class="gpdf-help">
22
 
23
+ <?php do_action( 'gfpdf_settings_sub_menu' ); ?>
24
 
25
  <h2><?php esc_html_e( 'Get help with Gravity PDF', 'gravity-forms-pdf-extended' ); ?></h2>
26
 
src/View/html/Settings/licence.php CHANGED
@@ -22,18 +22,28 @@ if ( ! defined( 'ABSPATH' ) ) {
22
  <form method="post" class="gform_settings_form" action="options.php">
23
  <?php settings_fields( 'gfpdf_settings' ); ?>
24
 
25
- <?= $args['menu'] ?>
26
- <?= $args['content'] ?>
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  <?php if ( $args['edit_cap'] ): ?>
29
  <div id="submit-and-promo-container">
30
- <input type="submit" name="submit" id="submit" value="<?= esc_html__( 'Save Settings →', 'gravityforms' ) ?>" class="button primary large">
31
  </div>
32
  <?php endif; ?>
33
  </form>
34
 
35
  <?php
36
- /* @TODO */
37
  do_action( 'gfpdf_post_license_settings_page' );
38
  ?>
39
  </div>
22
  <form method="post" class="gform_settings_form" action="options.php">
23
  <?php settings_fields( 'gfpdf_settings' ); ?>
24
 
25
+ <?php do_action( 'gfpdf_settings_sub_menu' ); ?>
26
+
27
+ <?php
28
+ /** @since 6.4.0 */
29
+ if ( isset( $args['callback'] ) ) {
30
+ call_user_func_array( $args['callback'], $args['callback_args'] ?? [] );
31
+ }
32
+
33
+ /** @deprecated 6.4.0 */
34
+ if ( isset( $args['content'] ) ) {
35
+ echo wp_kses_post( $args['content'] );
36
+ }
37
+ ?>
38
 
39
  <?php if ( $args['edit_cap'] ): ?>
40
  <div id="submit-and-promo-container">
41
+ <input type="submit" name="submit" id="submit" value="<?php echo esc_html__( 'Save Settings →', 'gravityforms' ); ?>" class="button primary large">
42
  </div>
43
  <?php endif; ?>
44
  </form>
45
 
46
  <?php
 
47
  do_action( 'gfpdf_post_license_settings_page' );
48
  ?>
49
  </div>
src/View/html/Settings/tabs.php CHANGED
@@ -19,14 +19,14 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  ?>
20
 
21
  <nav class="gform-settings-tabs__navigation" role="tablist">
22
- <?php foreach ( $args['tabs'] as $tab ): ?>
23
  <a
24
  role="tab"
25
- aria-selected="<?= $args['selected'] === $tab['id'] ? 'true' : 'false' ?>"
26
- data-id="<?= esc_attr( $tab['id'] ); ?>"
27
- class="<?= $args['selected'] === $tab['id'] ? 'active' : ''; ?>"
28
- href="<?= $args['data']->settings_url . '&amp;tab=' . esc_attr( $tab['id'] ); ?>">
29
- <?= esc_html( $tab['name'] ); ?>
30
  </a>
31
  <?php endforeach; ?>
32
  </nav>
19
  ?>
20
 
21
  <nav class="gform-settings-tabs__navigation" role="tablist">
22
+ <?php foreach ( $args['tabs'] as $tab_nav_item ): ?>
23
  <a
24
  role="tab"
25
+ aria-selected="<?php echo $args['selected'] === $tab_nav_item['id'] ? 'true' : 'false'; ?>"
26
+ data-id="<?php echo esc_attr( $tab_nav_item['id'] ); ?>"
27
+ class="<?php echo $args['selected'] === $tab_nav_item['id'] ? 'active' : ''; ?>"
28
+ href="<?php echo esc_url( add_query_arg( [ 'tab' => $tab_nav_item['id'] ], $args['data']->settings_url ) ); ?>">
29
+ <?php echo esc_html( $tab_nav_item['name'] ); ?>
30
  </a>
31
  <?php endforeach; ?>
32
  </nav>
src/View/html/Settings/tools.php CHANGED
@@ -21,12 +21,23 @@ if ( ! defined( 'ABSPATH' ) ) {
21
  <div id="pdfextended-settings">
22
 
23
  <!-- Prevent Firefox auto-filling fields on refresh. @see https://stackoverflow.com/a/44504822/1614565 -->
24
- <form name="gfpdf-settings-form-<?= rand() ?>" method="post" class="gform_settings_form">
25
 
26
  <?php settings_fields( 'gfpdf_settings' ); ?>
27
 
28
- <?= $args['menu'] ?>
29
- <?= $args['content'] ?>
 
 
 
 
 
 
 
 
 
 
 
30
  </form>
31
 
32
  <?php
21
  <div id="pdfextended-settings">
22
 
23
  <!-- Prevent Firefox auto-filling fields on refresh. @see https://stackoverflow.com/a/44504822/1614565 -->
24
+ <form name="gfpdf-settings-form-<?php echo esc_attr( wp_rand() ); ?>" method="post" class="gform_settings_form">
25
 
26
  <?php settings_fields( 'gfpdf_settings' ); ?>
27
 
28
+ <?php do_action( 'gfpdf_settings_sub_menu' ); ?>
29
+
30
+ <?php
31
+ /** @since 6.4.0 */
32
+ if ( isset( $args['callback'] ) ) {
33
+ call_user_func_array( $args['callback'], $args['callback_args'] ?? [] );
34
+ }
35
+
36
+ /** @deprecated 6.4.0 */
37
+ if ( isset( $args['content'] ) ) {
38
+ echo wp_kses_post( $args['content'] );
39
+ }
40
+ ?>
41
  </form>
42
 
43
  <?php
src/View/html/Shortcodes/gravitypdf.php CHANGED
@@ -19,12 +19,11 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  ?>
20
 
21
  <a
22
- href="<?= $args['url']; ?>"
23
- class="<?= $args['class']; ?> <?= $args['classes']; ?>"
24
- <?php
25
- if ( 'view' === $args['type'] ):
26
- ?>
27
- target="_blank"<?php endif; ?>
28
  rel="nofollow">
29
- <?= $args['text']; ?>
30
  </a>
19
  ?>
20
 
21
  <a
22
+ href="<?php echo esc_url( $args['url'] ); ?>"
23
+ class="<?php echo esc_attr( $args['class'] ); ?> <?php echo esc_attr( $args['classes'] ); ?>"
24
+ <?php if ( 'view' === $args['type'] ): ?>
25
+ target="_blank"
26
+ <?php endif; ?>
 
27
  rel="nofollow">
28
+ <?php echo esc_html( $args['text'] ); ?>
29
  </a>
src/View/html/Uninstaller/uninstall_button.php CHANGED
@@ -20,26 +20,26 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  <?php wp_nonce_field( 'uninstall', 'gf_addon_uninstall' ); ?>
21
 
22
  <div class="gform-settings-panel__content">
23
- <div class="addon-logo dashicons"><?= $args['icon'] ?></div>
24
 
25
  <div class="addon-uninstall-text">
26
- <h4 class="gform-settings-panel__title"><?= $args['title'] ?></h4>
27
- <div><?php printf( esc_html__( 'This operation deletes ALL %s settings.', 'gravityforms' ), $args['title'] ); ?></div>
28
  </div>
29
 
30
  <div class="addon-uninstall-button">
31
- <input id="addon" name="addon" type="hidden" value="<?= $args['title']; ?>">
32
 
33
  <button
34
  type="submit"
35
- aria-label="<?php printf( esc_html__( 'Uninstall %s', 'gravityforms' ), $args['title'] ); ?>"
36
  name="uninstall_addon"
37
  value="uninstall"
38
  class="button uninstall-addon red"
39
- onclick="return confirm('<?= esc_js( __( 'This operation deletes ALL Gravity PDF settings and deactivates the plugin. If you continue, all settings, configuration, custom templates and fonts will be removed.', 'gravity-forms-pdf-extended' ) ) ?>');"
40
- onkeypress="return confirm('<?= esc_js( __( 'This operation deletes ALL Gravity PDF settings and deactivates the plugin. If you continue, all settings, configuration, custom templates and fonts will be removed.', 'gravity-forms-pdf-extended' ) ) ?>');">
41
  <i class="dashicons dashicons-trash"></i>
42
- <?php esc_attr_e( 'Uninstall', 'gravityforms' ); ?>
43
  </button>
44
  </div>
45
  </div>
20
  <?php wp_nonce_field( 'uninstall', 'gf_addon_uninstall' ); ?>
21
 
22
  <div class="gform-settings-panel__content">
23
+ <div class="addon-logo dashicons"><?php echo wp_kses_post( $args['icon'] ); ?></div>
24
 
25
  <div class="addon-uninstall-text">
26
+ <h4 class="gform-settings-panel__title"><?php echo esc_attr( $args['title'] ); ?></h4>
27
+ <div><?php echo esc_html( sprintf( __( 'This operation deletes ALL %s settings.', 'gravityforms' ), $args['title'] ) ); ?></div>
28
  </div>
29
 
30
  <div class="addon-uninstall-button">
31
+ <input id="addon" name="addon" type="hidden" value="<?php echo esc_attr( $args['title'] ); ?>">
32
 
33
  <button
34
  type="submit"
35
+ aria-label="<?php echo esc_attr( sprintf( __( 'Uninstall %s', 'gravityforms' ), $args['title'] ) ); ?>"
36
  name="uninstall_addon"
37
  value="uninstall"
38
  class="button uninstall-addon red"
39
+ onclick="return confirm('<?php echo esc_js( __( 'This operation deletes ALL Gravity PDF settings and deactivates the plugin. If you continue, all settings, configuration, custom templates and fonts will be removed.', 'gravity-forms-pdf-extended' ) ); ?>');"
40
+ onkeypress="return confirm('<?php echo esc_js( __( 'This operation deletes ALL Gravity PDF settings and deactivates the plugin. If you continue, all settings, configuration, custom templates and fonts will be removed.', 'gravity-forms-pdf-extended' ) ); ?>');">
41
  <i class="dashicons dashicons-trash"></i>
42
+ <?php esc_html_e( 'Uninstall', 'gravityforms' ); ?>
43
  </button>
44
  </div>
45
  </div>
src/assets/languages/gravity-forms-pdf-extended.pot CHANGED
@@ -6,7 +6,7 @@ msgstr ""
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
- "POT-Creation-Date: 2022-06-07 02:55+0000\n"
10
  "X-Poedit-Basepath: ..\n"
11
  "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
12
  "X-Poedit-SearchPath-0: .\n"
@@ -90,7 +90,7 @@ msgstr ""
90
  msgid "Downgrade"
91
  msgstr ""
92
 
93
- #: ../../bootstrap.php:134, ../../bootstrap.php:146, ../../deprecated.php:42, ../../deprecated.php:55
94
  msgid "\"%s\" has been deprecated as of Gravity PDF 4.0"
95
  msgstr ""
96
 
@@ -98,7 +98,7 @@ msgstr ""
98
  msgid "View Gravity PDF Settings"
99
  msgstr ""
100
 
101
- #: ../../bootstrap.php:309, ../../View/View_Settings.php:162
102
  msgid "Settings"
103
  msgstr ""
104
 
@@ -122,7 +122,7 @@ msgstr ""
122
  msgid "View Gravity PDF Extensions Shop"
123
  msgstr ""
124
 
125
- #: ../../bootstrap.php:331, ../../View/View_Settings.php:189
126
  msgid "Extensions"
127
  msgstr ""
128
 
@@ -138,7 +138,7 @@ msgstr ""
138
  msgid "Install Core Fonts"
139
  msgstr ""
140
 
141
- #: ../../Controller/Controller_Actions.php:207, ../../Model/Model_Form_Settings.php:171, ../../Model/Model_Form_Settings.php:208, ../../Model/Model_Form_Settings.php:321, ../../View/View_Settings.php:361
142
  msgid "You do not have permission to access this page"
143
  msgstr ""
144
 
@@ -186,7 +186,7 @@ msgstr ""
186
  msgid "PDF: %s"
187
  msgstr ""
188
 
189
- #: ../../Controller/Controller_PDF.php:374, ../../View/View_PDF.php:248
190
  msgid "There was a problem generating your PDF"
191
  msgstr ""
192
 
@@ -198,283 +198,283 @@ msgstr ""
198
  msgid "View plugin Documentation"
199
  msgstr ""
200
 
201
- #: ../../Helper/Helper_Abstract_Options.php:389, ../../Helper/Helper_Abstract_Options.php:408
202
  msgid "You must pass in a valid form ID"
203
  msgstr ""
204
 
205
- #: ../../Helper/Helper_Abstract_Options.php:450
206
  msgid "You must pass in a valid PDF ID"
207
  msgstr ""
208
 
209
- #: ../../Helper/Helper_Abstract_Options.php:839
210
  msgid "Common Sizes"
211
  msgstr ""
212
 
213
- #: ../../Helper/Helper_Abstract_Options.php:840
214
  msgid "A4 (210 x 297mm)"
215
  msgstr ""
216
 
217
- #: ../../Helper/Helper_Abstract_Options.php:841
218
  msgid "Letter (8.5 x 11in)"
219
  msgstr ""
220
 
221
- #: ../../Helper/Helper_Abstract_Options.php:842
222
  msgid "Legal (8.5 x 14in)"
223
  msgstr ""
224
 
225
- #: ../../Helper/Helper_Abstract_Options.php:843
226
  msgid "Ledger / Tabloid (11 x 17in)"
227
  msgstr ""
228
 
229
- #: ../../Helper/Helper_Abstract_Options.php:844
230
  msgid "Executive (7 x 10in)"
231
  msgstr ""
232
 
233
- #: ../../Helper/Helper_Abstract_Options.php:845, ../../Helper/Helper_Options_Fields.php:94, ../../Helper/Helper_Options_Fields.php:318
234
  msgid "Custom Paper Size"
235
  msgstr ""
236
 
237
- #: ../../Helper/Helper_Abstract_Options.php:848
238
  msgid "\"A\" Sizes"
239
  msgstr ""
240
 
241
- #: ../../Helper/Helper_Abstract_Options.php:849
242
  msgid "A0 (841 x 1189mm)"
243
  msgstr ""
244
 
245
- #: ../../Helper/Helper_Abstract_Options.php:850
246
  msgid "A1 (594 x 841mm)"
247
  msgstr ""
248
 
249
- #: ../../Helper/Helper_Abstract_Options.php:851
250
  msgid "A2 (420 x 594mm)"
251
  msgstr ""
252
 
253
- #: ../../Helper/Helper_Abstract_Options.php:852
254
  msgid "A3 (297 x 420mm)"
255
  msgstr ""
256
 
257
- #: ../../Helper/Helper_Abstract_Options.php:853
258
  msgid "A5 (148 x 210mm)"
259
  msgstr ""
260
 
261
- #: ../../Helper/Helper_Abstract_Options.php:854
262
  msgid "A6 (105 x 148mm)"
263
  msgstr ""
264
 
265
- #: ../../Helper/Helper_Abstract_Options.php:855
266
  msgid "A7 (74 x 105mm)"
267
  msgstr ""
268
 
269
- #: ../../Helper/Helper_Abstract_Options.php:856
270
  msgid "A8 (52 x 74mm)"
271
  msgstr ""
272
 
273
- #: ../../Helper/Helper_Abstract_Options.php:857
274
  msgid "A9 (37 x 52mm)"
275
  msgstr ""
276
 
277
- #: ../../Helper/Helper_Abstract_Options.php:858
278
  msgid "A10 (26 x 37mm)"
279
  msgstr ""
280
 
281
- #: ../../Helper/Helper_Abstract_Options.php:861
282
  msgid "\"B\" Sizes"
283
  msgstr ""
284
 
285
- #: ../../Helper/Helper_Abstract_Options.php:862
286
  msgid "B0 (1414 x 1000mm)"
287
  msgstr ""
288
 
289
- #: ../../Helper/Helper_Abstract_Options.php:863
290
  msgid "B1 (1000 x 707mm)"
291
  msgstr ""
292
 
293
- #: ../../Helper/Helper_Abstract_Options.php:864
294
  msgid "B2 (707 x 500mm)"
295
  msgstr ""
296
 
297
- #: ../../Helper/Helper_Abstract_Options.php:865
298
  msgid "B3 (500 x 353mm)"
299
  msgstr ""
300
 
301
- #: ../../Helper/Helper_Abstract_Options.php:866
302
  msgid "B4 (353 x 250mm)"
303
  msgstr ""
304
 
305
- #: ../../Helper/Helper_Abstract_Options.php:867
306
  msgid "B5 (250 x 176mm)"
307
  msgstr ""
308
 
309
- #: ../../Helper/Helper_Abstract_Options.php:868
310
  msgid "B6 (176 x 125mm)"
311
  msgstr ""
312
 
313
- #: ../../Helper/Helper_Abstract_Options.php:869
314
  msgid "B7 (125 x 88mm)"
315
  msgstr ""
316
 
317
- #: ../../Helper/Helper_Abstract_Options.php:870
318
  msgid "B8 (88 x 62mm)"
319
  msgstr ""
320
 
321
- #: ../../Helper/Helper_Abstract_Options.php:871
322
  msgid "B9 (62 x 44mm)"
323
  msgstr ""
324
 
325
- #: ../../Helper/Helper_Abstract_Options.php:872
326
  msgid "B10 (44 x 31mm)"
327
  msgstr ""
328
 
329
- #: ../../Helper/Helper_Abstract_Options.php:875
330
  msgid "\"C\" Sizes"
331
  msgstr ""
332
 
333
- #: ../../Helper/Helper_Abstract_Options.php:876
334
  msgid "C0 (1297 x 917mm)"
335
  msgstr ""
336
 
337
- #: ../../Helper/Helper_Abstract_Options.php:877
338
  msgid "C1 (917 x 648mm)"
339
  msgstr ""
340
 
341
- #: ../../Helper/Helper_Abstract_Options.php:878
342
  msgid "C2 (648 x 458mm)"
343
  msgstr ""
344
 
345
- #: ../../Helper/Helper_Abstract_Options.php:879
346
  msgid "C3 (458 x 324mm)"
347
  msgstr ""
348
 
349
- #: ../../Helper/Helper_Abstract_Options.php:880
350
  msgid "C4 (324 x 229mm)"
351
  msgstr ""
352
 
353
- #: ../../Helper/Helper_Abstract_Options.php:881
354
  msgid "C5 (229 x 162mm)"
355
  msgstr ""
356
 
357
- #: ../../Helper/Helper_Abstract_Options.php:882
358
  msgid "C6 (162 x 114mm)"
359
  msgstr ""
360
 
361
- #: ../../Helper/Helper_Abstract_Options.php:883
362
  msgid "C7 (114 x 81mm)"
363
  msgstr ""
364
 
365
- #: ../../Helper/Helper_Abstract_Options.php:884
366
  msgid "C8 (81 x 57mm)"
367
  msgstr ""
368
 
369
- #: ../../Helper/Helper_Abstract_Options.php:885
370
  msgid "C9 (57 x 40mm)"
371
  msgstr ""
372
 
373
- #: ../../Helper/Helper_Abstract_Options.php:886
374
  msgid "C10 (40 x 28mm)"
375
  msgstr ""
376
 
377
- #: ../../Helper/Helper_Abstract_Options.php:889
378
  msgid "\"RA\" and \"SRA\" Sizes"
379
  msgstr ""
380
 
381
- #: ../../Helper/Helper_Abstract_Options.php:890
382
  msgid "RA0 (860 x 1220mm)"
383
  msgstr ""
384
 
385
- #: ../../Helper/Helper_Abstract_Options.php:891
386
  msgid "RA1 (610 x 860mm)"
387
  msgstr ""
388
 
389
- #: ../../Helper/Helper_Abstract_Options.php:892
390
  msgid "RA2 (430 x 610mm)"
391
  msgstr ""
392
 
393
- #: ../../Helper/Helper_Abstract_Options.php:893
394
  msgid "RA3 (305 x 430mm)"
395
  msgstr ""
396
 
397
- #: ../../Helper/Helper_Abstract_Options.php:894
398
  msgid "RA4 (215 x 305mm)"
399
  msgstr ""
400
 
401
- #: ../../Helper/Helper_Abstract_Options.php:895
402
  msgid "SRA0 (900 x 1280mm)"
403
  msgstr ""
404
 
405
- #: ../../Helper/Helper_Abstract_Options.php:896
406
  msgid "SRA1 (640 x 900mm)"
407
  msgstr ""
408
 
409
- #: ../../Helper/Helper_Abstract_Options.php:897
410
  msgid "SRA2 (450 x 640mm)"
411
  msgstr ""
412
 
413
- #: ../../Helper/Helper_Abstract_Options.php:898
414
  msgid "SRA3 (320 x 450mm)"
415
  msgstr ""
416
 
417
- #: ../../Helper/Helper_Abstract_Options.php:899
418
  msgid "SRA4 (225 x 320mm)"
419
  msgstr ""
420
 
421
- #: ../../Helper/Helper_Abstract_Options.php:915
422
  msgid "Unicode"
423
  msgstr ""
424
 
425
- #: ../../Helper/Helper_Abstract_Options.php:929
426
  msgid "Indic"
427
  msgstr ""
428
 
429
- #: ../../Helper/Helper_Abstract_Options.php:934
430
  msgid "Arabic"
431
  msgstr ""
432
 
433
- #: ../../Helper/Helper_Abstract_Options.php:940
434
  msgid "Chinese, Japanese, Korean"
435
  msgstr ""
436
 
437
- #: ../../Helper/Helper_Abstract_Options.php:945
438
  msgid "Other"
439
  msgstr ""
440
 
441
- #: ../../Helper/Helper_Abstract_Options.php:999
442
  msgid "User-Defined Fonts"
443
  msgstr ""
444
 
445
- #: ../../Helper/Helper_Abstract_Options.php:1056
446
  msgid "Could not find Gravity PDF Font"
447
  msgstr ""
448
 
449
- #: ../../Helper/Helper_Abstract_Options.php:1068, ../../Helper/Helper_PDF_List_Table.php:299
450
  msgid "Copy"
451
  msgstr ""
452
 
453
- #: ../../Helper/Helper_Abstract_Options.php:1069
454
  msgid "Print - Low Resolution"
455
  msgstr ""
456
 
457
- #: ../../Helper/Helper_Abstract_Options.php:1070
458
  msgid "Print - High Resolution"
459
  msgstr ""
460
 
461
- #: ../../Helper/Helper_Abstract_Options.php:1071
462
  msgid "Modify"
463
  msgstr ""
464
 
465
- #: ../../Helper/Helper_Abstract_Options.php:1072
466
  msgid "Annotate"
467
  msgstr ""
468
 
469
- #: ../../Helper/Helper_Abstract_Options.php:1073
470
  msgid "Fill Forms"
471
  msgstr ""
472
 
473
- #: ../../Helper/Helper_Abstract_Options.php:1074
474
  msgid "Extract"
475
  msgstr ""
476
 
477
- #: ../../Helper/Helper_Abstract_Options.php:1075
478
  msgid "Assemble"
479
  msgstr ""
480
 
@@ -486,459 +486,463 @@ msgstr ""
486
  msgid "PDF Settings could not be saved. Please enter all required information below."
487
  msgstr ""
488
 
489
- #: ../../Helper/Helper_Abstract_Options.php:1659
490
- msgid "license key"
491
  msgstr ""
492
 
493
- #: ../../Helper/Helper_Abstract_Options.php:1669
494
  msgid "Deactivate License"
495
  msgstr ""
496
 
497
- #: ../../Helper/Helper_Abstract_Options.php:1973, ../../Helper/Helper_Abstract_Options.php:1974
498
  msgid "Select Media"
499
  msgstr ""
500
 
501
- #: ../../Helper/Helper_Abstract_Options.php:1975
502
  msgid "Upload File"
503
  msgstr ""
504
 
505
- #: ../../Helper/Helper_Abstract_Options.php:2160
506
  msgid "Width"
507
  msgstr ""
508
 
509
- #: ../../Helper/Helper_Abstract_Options.php:2161
510
  msgid "Height"
511
  msgstr ""
512
 
513
- #: ../../Helper/Helper_Abstract_Options.php:2166
514
  msgid "mm"
515
  msgstr ""
516
 
517
- #: ../../Helper/Helper_Abstract_Options.php:2167
518
  msgid "inches"
519
  msgstr ""
520
 
521
- #: ../../Helper/Helper_Abstract_Options.php:2227
522
  msgid "The callback used for the %s setting is missing."
523
  msgstr ""
524
 
525
- #: ../../Helper/Helper_Abstract_View.php:125
 
 
 
 
526
  msgid "Cannot find file %s"
527
  msgstr ""
528
 
529
- #: ../../Helper/Helper_Data.php:154, ../../Model/Model_Mergetags.php:125
530
  msgid "PDF"
531
  msgstr ""
532
 
533
- #: ../../Helper/Helper_Data.php:155
534
  msgid "Gravity PDF"
535
  msgstr ""
536
 
537
- #: ../../Helper/Helper_Data.php:182
538
  msgid "Your license key expired on %s."
539
  msgstr ""
540
 
541
- #: ../../Helper/Helper_Data.php:183
542
  msgid "Your license key has been disabled"
543
  msgstr ""
544
 
545
- #: ../../Helper/Helper_Data.php:184
546
  msgid "Invalid license key provided"
547
  msgstr ""
548
 
549
- #: ../../Helper/Helper_Data.php:185, ../../Helper/Helper_Data.php:186
550
  msgid "Your license is not active for this URL"
551
  msgstr ""
552
 
553
- #: ../../Helper/Helper_Data.php:187
554
  msgid "This appears to be an invalid license key for %s"
555
  msgstr ""
556
 
557
- #: ../../Helper/Helper_Data.php:188
558
  msgid "Your license key has reached its activation limit"
559
  msgstr ""
560
 
561
- #: ../../Helper/Helper_Data.php:189
562
  msgid "An error occurred, please try again"
563
  msgstr ""
564
 
565
- #: ../../Helper/Helper_Data.php:190
566
  msgid "An error occurred during activation, please try again"
567
  msgstr ""
568
 
569
- #: ../../Helper/Helper_Data.php:228
570
  msgid "Loading..."
571
  msgstr ""
572
 
573
- #: ../../Helper/Helper_Data.php:229
574
  msgid "Continue"
575
  msgstr ""
576
 
577
- #: ../../Helper/Helper_Data.php:230
578
  msgid "Uninstall"
579
  msgstr ""
580
 
581
- #: ../../Helper/Helper_Data.php:231
582
  msgid "Cancel"
583
  msgstr ""
584
 
585
- #: ../../Helper/Helper_Data.php:232, ../../Helper/Helper_PDF_List_Table.php:365
586
  msgid "Delete"
587
  msgstr ""
588
 
589
- #: ../../Helper/Helper_Data.php:233, ../../Helper/Helper_PDF_List_Table.php:220, ../../Model/Model_Form_Settings.php:912
590
  msgid "Active"
591
  msgstr ""
592
 
593
- #: ../../Helper/Helper_Data.php:234, ../../Helper/Helper_PDF_List_Table.php:223, ../../Model/Model_Form_Settings.php:865, ../../Model/Model_Form_Settings.php:912
594
  msgid "Inactive"
595
  msgstr ""
596
 
597
- #: ../../Helper/Helper_Data.php:235
598
  msgid "this PDF if"
599
  msgstr ""
600
 
601
- #: ../../Helper/Helper_Data.php:236
602
  msgid "Enable"
603
  msgstr ""
604
 
605
- #: ../../Helper/Helper_Data.php:237
606
  msgid "Disable"
607
  msgstr ""
608
 
609
- #: ../../Helper/Helper_Data.php:238
610
  msgid "Successfully Updated"
611
  msgstr ""
612
 
613
- #: ../../Helper/Helper_Data.php:239
614
  msgid "Successfully Deleted"
615
  msgstr ""
616
 
617
- #: ../../Helper/Helper_Data.php:240
618
  msgid "No"
619
  msgstr ""
620
 
621
- #: ../../Helper/Helper_Data.php:241
622
  msgid "Yes"
623
  msgstr ""
624
 
625
- #: ../../Helper/Helper_Data.php:242
626
  msgid "Standard"
627
  msgstr ""
628
 
629
- #: ../../Helper/Helper_Data.php:243, ../../View/View_Form_Settings.php:74
630
  msgid "Advanced"
631
  msgstr ""
632
 
633
- #: ../../Helper/Helper_Data.php:244
634
  msgid "Manage"
635
  msgstr ""
636
 
637
- #: ../../Helper/Helper_Data.php:245
638
  msgid "Details"
639
  msgstr ""
640
 
641
- #: ../../Helper/Helper_Data.php:246
642
  msgid "Select"
643
  msgstr ""
644
 
645
- #: ../../Helper/Helper_Data.php:247
646
  msgid "Version"
647
  msgstr ""
648
 
649
- #: ../../Helper/Helper_Data.php:248
650
  msgid "Group"
651
  msgstr ""
652
 
653
- #: ../../Helper/Helper_Data.php:249
654
  msgid "Tags"
655
  msgstr ""
656
 
657
- #: ../../Helper/Helper_Data.php:251, ../../Helper/Helper_Options_Fields.php:254, ../../Helper/Helper_PDF_List_Table.php:97, ../../View/View_Form_Settings.php:64
658
  msgid "Template"
659
  msgstr ""
660
 
661
- #: ../../Helper/Helper_Data.php:252
662
  msgid "Manage PDF Templates"
663
  msgstr ""
664
 
665
- #: ../../Helper/Helper_Data.php:253
666
  msgid "Add New Template"
667
  msgstr ""
668
 
669
- #: ../../Helper/Helper_Data.php:254
670
  msgid "This form doesn't have any PDFs."
671
  msgstr ""
672
 
673
- #: ../../Helper/Helper_Data.php:255
674
  msgid "Let's go create one"
675
  msgstr ""
676
 
677
- #: ../../Helper/Helper_Data.php:256
678
  msgid "Installed PDFs"
679
  msgstr ""
680
 
681
- #: ../../Helper/Helper_Data.php:257
682
  msgid "Search Installed Templates"
683
  msgstr ""
684
 
685
- #: ../../Helper/Helper_Data.php:259
686
  msgid "Search the Gravity PDF Knowledgebase..."
687
  msgstr ""
688
 
689
- #: ../../Helper/Helper_Data.php:260
690
  msgid "Gravity PDF Documentation"
691
  msgstr ""
692
 
693
- #: ../../Helper/Helper_Data.php:261
694
  msgid "It doesn't look like there are any topics related to your issue."
695
  msgstr ""
696
 
697
- #: ../../Helper/Helper_Data.php:262
698
  msgid "An error occurred. Please try again"
699
  msgstr ""
700
 
701
- #: ../../Helper/Helper_Data.php:264
702
  msgid "Requires Gravity PDF v%s"
703
  msgstr ""
704
 
705
- #: ../../Helper/Helper_Data.php:265
706
  msgid "This PDF template is not compatible with your version of Gravity PDF. This template required Gravity PDF v%s."
707
  msgstr ""
708
 
709
- #: ../../Helper/Helper_Data.php:266
710
  msgid "Template Details"
711
  msgstr ""
712
 
713
- #: ../../Helper/Helper_Data.php:267
714
  msgid "Current Template"
715
  msgstr ""
716
 
717
- #: ../../Helper/Helper_Data.php:268
718
  msgid "Show previous template"
719
  msgstr ""
720
 
721
- #: ../../Helper/Helper_Data.php:269
722
  msgid "Show next template"
723
  msgstr ""
724
 
725
- #: ../../Helper/Helper_Data.php:270
726
  msgid "Upload is not a valid template. Upload a .zip file."
727
  msgstr ""
728
 
729
- #: ../../Helper/Helper_Data.php:271
730
  msgid "Upload exceeds the 10MB limit."
731
  msgstr ""
732
 
733
- #: ../../Helper/Helper_Data.php:272
734
  msgid "Template successfully installed"
735
  msgstr ""
736
 
737
- #: ../../Helper/Helper_Data.php:273
738
  msgid "Template successfully updated"
739
  msgstr ""
740
 
741
- #: ../../Helper/Helper_Data.php:274
742
  msgid "PDF Template(s) Successfully Installed / Updated"
743
  msgstr ""
744
 
745
- #: ../../Helper/Helper_Data.php:275
746
  msgid "There was a problem with the upload. Reload the page and try again."
747
  msgstr ""
748
 
749
- #: ../../Helper/Helper_Data.php:276
750
  msgid "Do you really want to delete this PDF template?%sClick 'Cancel' to go back, 'OK' to confirm the delete."
751
  msgstr ""
752
 
753
- #: ../../Helper/Helper_Data.php:277
754
  msgid "Could not delete template."
755
  msgstr ""
756
 
757
- #: ../../Helper/Helper_Data.php:278
758
  msgid "If you have a PDF template in .zip format you may install it here. You can also update an existing PDF template (this will override any changes you have made)."
759
  msgstr ""
760
 
761
- #: ../../Helper/Helper_Data.php:280
762
  msgid "ALL CORE FONTS SUCCESSFULLY INSTALLED"
763
  msgstr ""
764
 
765
- #: ../../Helper/Helper_Data.php:281
766
  msgid "%s CORE FONT(S) DID NOT INSTALL CORRECTLY"
767
  msgstr ""
768
 
769
- #: ../../Helper/Helper_Data.php:282
770
  msgid "Could not download Core Font list. Try again."
771
  msgstr ""
772
 
773
- #: ../../Helper/Helper_Data.php:283
774
  msgid "Downloading %s..."
775
  msgstr ""
776
 
777
- #: ../../Helper/Helper_Data.php:284
778
  msgid "Completed installation of %s"
779
  msgstr ""
780
 
781
- #: ../../Helper/Helper_Data.php:285
782
  msgid "Failed installation of %s"
783
  msgstr ""
784
 
785
- #: ../../Helper/Helper_Data.php:286
786
  msgid "Fonts remaining:"
787
  msgstr ""
788
 
789
- #: ../../Helper/Helper_Data.php:287
790
  msgid "Retry Failed Downloads?"
791
  msgstr ""
792
 
793
- #: ../../Helper/Helper_Data.php:288
794
  msgid "Core font installation"
795
  msgstr ""
796
 
797
- #: ../../Helper/Helper_Data.php:291
798
  msgid "Search installed fonts"
799
  msgstr ""
800
 
801
- #: ../../Helper/Helper_Data.php:292
802
  msgid "Installed Fonts"
803
  msgstr ""
804
 
805
- #: ../../Helper/Helper_Data.php:293
806
  msgid "Regular"
807
  msgstr ""
808
 
809
- #: ../../Helper/Helper_Data.php:294
810
  msgid "Regular %1$s(required)%2$s"
811
  msgstr ""
812
 
813
- #: ../../Helper/Helper_Data.php:295
814
  msgid "Italics"
815
  msgstr ""
816
 
817
- #: ../../Helper/Helper_Data.php:296
818
  msgid "Bold"
819
  msgstr ""
820
 
821
- #: ../../Helper/Helper_Data.php:297
822
  msgid "Bold Italics"
823
  msgstr ""
824
 
825
- #: ../../Helper/Helper_Data.php:298
826
  msgid "Add Font"
827
  msgstr ""
828
 
829
- #: ../../Helper/Helper_Data.php:299
830
  msgid "Update Font"
831
  msgstr ""
832
 
833
- #: ../../Helper/Helper_Data.php:300
834
  msgid "Install new fonts for use in your PDF documents."
835
  msgstr ""
836
 
837
- #: ../../Helper/Helper_Data.php:301
838
  msgid "Once saved, PDFs configured to use this font will have your changes applied automatically for newly-generated documents."
839
  msgstr ""
840
 
841
- #: ../../Helper/Helper_Data.php:302
842
  msgid "Font Name %1$s(required)%2$s"
843
  msgstr ""
844
 
845
- #: ../../Helper/Helper_Data.php:303
846
  msgid "The font name can only contain letters, numbers and spaces."
847
  msgstr ""
848
 
849
- #: ../../Helper/Helper_Data.php:304
850
  msgid "Please choose a name contains letters and/or numbers (and a space if you want it)."
851
  msgstr ""
852
 
853
- #: ../../Helper/Helper_Data.php:305
854
  msgid "Font Files"
855
  msgstr ""
856
 
857
- #: ../../Helper/Helper_Data.php:306
858
  msgid "Select or drag and drop your .ttf font file for the variants below. Only the Regular type is required."
859
  msgstr ""
860
 
861
- #: ../../Helper/Helper_Data.php:307
862
  msgid "Add a .ttf font file."
863
  msgstr ""
864
 
865
- #: ../../Helper/Helper_Data.php:308
866
  msgid "View template usage"
867
  msgstr ""
868
 
869
- #: ../../Helper/Helper_Data.php:309
870
  msgid "← Cancel"
871
  msgstr ""
872
 
873
- #: ../../Helper/Helper_Data.php:310
874
  msgid "Are you sure you want to delete this font?"
875
  msgstr ""
876
 
877
- #: ../../Helper/Helper_Data.php:311
878
  msgid "Add this snippet %1$sin a custom template%3$s to selectively set the font on blocks of text. If you want to apply the font to the entire PDF, %2$suse the Font setting%3$s when configuring the PDF on the form."
879
  msgstr ""
880
 
881
- #: ../../Helper/Helper_Data.php:312
882
  msgid "Update font"
883
  msgstr ""
884
 
885
- #: ../../Helper/Helper_Data.php:313
886
  msgid "Select font"
887
  msgstr ""
888
 
889
- #: ../../Helper/Helper_Data.php:314
890
  msgid "Delete font"
891
  msgstr ""
892
 
893
- #: ../../Helper/Helper_Data.php:317
894
  msgid "Font list empty."
895
  msgstr ""
896
 
897
- #: ../../Helper/Helper_Data.php:318
898
  msgid "No fonts matching your search found."
899
  msgstr ""
900
 
901
- #: ../../Helper/Helper_Data.php:319
902
  msgid "Clear Search."
903
  msgstr ""
904
 
905
- #: ../../Helper/Helper_Data.php:320
906
  msgid "Your font has been saved."
907
  msgstr ""
908
 
909
- #: ../../Helper/Helper_Data.php:321
910
  msgid "%1$sThe action could not be completed.%2$s Resolve the highlighted issues above and then try again."
911
  msgstr ""
912
 
913
- #: ../../Helper/Helper_Data.php:322
914
  msgid "A problem occurred. Reload the page and try again."
915
  msgstr ""
916
 
917
- #: ../../Helper/Helper_Data.php:323
918
  msgid "%1$sFont file(s) missing from the server.%2$s Please upload the font(s) again and then save."
919
  msgstr ""
920
 
921
- #: ../../Helper/Helper_Data.php:324
922
  msgid "%1$sFont file(s) are malformed%2$s and cannot be used with Gravity PDF."
923
  msgstr ""
924
 
925
- #: ../../Helper/Helper_Data.php:326
926
  msgid "Warning! ALL Gravity PDF data, including templates, will be deleted. This cannot be undone. 'OK' to delete, 'Cancel' to stop."
927
  msgstr ""
928
 
929
- #: ../../Helper/Helper_Data.php:327
930
  msgid "WARNING: You are about to delete this PDF. 'Cancel' to stop, 'OK' to delete."
931
  msgstr ""
932
 
933
- #: ../../Helper/Helper_Data.php:330
934
  msgid "Search the Gravity PDF Documentation..."
935
  msgstr ""
936
 
937
- #: ../../Helper/Helper_Data.php:331
938
  msgid "Submit your search query."
939
  msgstr ""
940
 
941
- #: ../../Helper/Helper_Data.php:332
942
  msgid "Clear your search query."
943
  msgstr ""
944
 
@@ -1358,7 +1362,7 @@ msgstr ""
1358
  msgid "The PDF Template %1$s requires Gravity PDF version %2$s. Upgrade to the latest version."
1359
  msgstr ""
1360
 
1361
- #: ../../Helper/Helper_PDF.php:905
1362
  msgid "This method has been removed because mPDF no longer supports setting the image DPI after the class is initialised."
1363
  msgstr ""
1364
 
@@ -1374,51 +1378,51 @@ msgstr ""
1374
  msgid "None"
1375
  msgstr ""
1376
 
1377
- #: ../../Helper/Helper_PDF_List_Table.php:284, ../../View/html/PDF/entry_list_pdf_single.php:23
1378
  msgid "Download PDF"
1379
  msgstr ""
1380
 
1381
- #: ../../Helper/Helper_PDF_List_Table.php:287
1382
  msgid "Copy the %s PDF shortcode to the clipboard"
1383
  msgstr ""
1384
 
1385
- #: ../../Helper/Helper_PDF_List_Table.php:306
1386
  msgid "Shortcode copied!"
1387
  msgstr ""
1388
 
1389
- #: ../../Helper/Helper_PDF_List_Table.php:310
1390
  msgid "Copy Shortcode"
1391
  msgstr ""
1392
 
1393
- #: ../../Helper/Helper_PDF_List_Table.php:302
1394
  msgid "Copied"
1395
  msgstr ""
1396
 
1397
- #: ../../Helper/Helper_PDF_List_Table.php:363
1398
  msgid "Edit this PDF"
1399
  msgstr ""
1400
 
1401
- #: ../../Helper/Helper_PDF_List_Table.php:363
1402
  msgid "Edit"
1403
  msgstr ""
1404
 
1405
- #: ../../Helper/Helper_PDF_List_Table.php:364
1406
  msgid "Duplicate this PDF"
1407
  msgstr ""
1408
 
1409
- #: ../../Helper/Helper_PDF_List_Table.php:364
1410
  msgid "Duplicate"
1411
  msgstr ""
1412
 
1413
- #: ../../Helper/Helper_PDF_List_Table.php:365
1414
  msgid "Delete this PDF"
1415
  msgstr ""
1416
 
1417
- #: ../../Helper/Helper_PDF_List_Table.php:373
1418
  msgid "%s PDF"
1419
  msgstr ""
1420
 
1421
- #: ../../Helper/Helper_PDF_List_Table.php:403
1422
  msgid "This form doesn't have any PDFs. Let's go %1$screate one%2$s."
1423
  msgstr ""
1424
 
@@ -1438,23 +1442,23 @@ msgstr ""
1438
  msgid "Add PDF"
1439
  msgstr ""
1440
 
1441
- #: ../../Model/Model_Form_Settings.php:327, ../../Model/Model_Form_Settings.php:349, ../../Model/Model_Form_Settings.php:398, ../../Model/Model_Form_Settings.php:506
1442
  msgid "There was a problem saving your PDF settings. Please try again."
1443
  msgstr ""
1444
 
1445
- #: ../../Model/Model_Form_Settings.php:370
1446
  msgid "PDF could not be saved. Please enter all required information below."
1447
  msgstr ""
1448
 
1449
- #: ../../Model/Model_Form_Settings.php:392
1450
  msgid "PDF saved successfully. %1$sBack to PDF list.%2$s"
1451
  msgstr ""
1452
 
1453
- #: ../../Model/Model_Form_Settings.php:798
1454
  msgid "PDF successfully deleted."
1455
  msgstr ""
1456
 
1457
- #: ../../Model/Model_Form_Settings.php:859
1458
  msgid "PDF successfully duplicated."
1459
  msgstr ""
1460
 
@@ -1482,39 +1486,39 @@ msgstr ""
1482
  msgid "PDF URLs"
1483
  msgstr ""
1484
 
1485
- #: ../../Model/Model_PDF.php:365
1486
  msgid "The PDF configuration is not currently active."
1487
  msgstr ""
1488
 
1489
- #: ../../Model/Model_PDF.php:387
1490
  msgid "PDF conditional logic requirements have not been met."
1491
  msgstr ""
1492
 
1493
- #: ../../Model/Model_PDF.php:465
1494
  msgid "Your PDF is no longer accessible."
1495
  msgstr ""
1496
 
1497
- #: ../../Model/Model_PDF.php:566, ../../Model/Model_PDF.php:606
1498
  msgid "You do not have access to view this PDF."
1499
  msgstr ""
1500
 
1501
- #: ../../Model/Model_PDF.php:865
1502
  msgid "PDFs"
1503
  msgstr ""
1504
 
1505
- #: ../../Model/Model_PDF.php:1002
1506
  msgid "The PDF could not be saved."
1507
  msgstr ""
1508
 
1509
- #: ../../Model/Model_PDF.php:2013
1510
  msgid "Could not find PDF configuration requested"
1511
  msgstr ""
1512
 
1513
- #: ../../Model/Model_Settings.php:412
1514
  msgid "License deactivated."
1515
  msgstr ""
1516
 
1517
- #: ../../Model/Model_Settings.php:434
1518
  msgid "An error occurred during deactivation, please try again"
1519
  msgstr ""
1520
 
@@ -1602,11 +1606,11 @@ msgstr ""
1602
  msgid "minute(s)"
1603
  msgstr ""
1604
 
1605
- #: ../../Model/Model_Templates.php:366
1606
  msgid "No valid PDF template found in Zip archive."
1607
  msgstr ""
1608
 
1609
- #: ../../Model/Model_Templates.php:395
1610
  msgid "The PHP file %s is not a valid PDF Template."
1611
  msgstr ""
1612
 
@@ -1634,7 +1638,7 @@ msgstr ""
1634
  msgid "Zadani"
1635
  msgstr ""
1636
 
1637
- #: ../../View/View_Form_Settings.php:44
1638
  msgid "General"
1639
  msgstr ""
1640
 
@@ -1642,39 +1646,39 @@ msgstr ""
1642
  msgid "Appearance"
1643
  msgstr ""
1644
 
1645
- #: ../../View/View_Settings.php:167
1646
  msgid "Tools"
1647
  msgstr ""
1648
 
1649
- #: ../../View/View_Settings.php:172
1650
  msgid "Help"
1651
  msgstr ""
1652
 
1653
- #: ../../View/View_Settings.php:180
1654
  msgid "License"
1655
  msgstr ""
1656
 
1657
- #: ../../View/View_Settings.php:222
1658
  msgid "Default PDF Options"
1659
  msgstr ""
1660
 
1661
- #: ../../View/View_Settings.php:223
1662
  msgid "Control the default settings to use when you create new PDFs on your forms."
1663
  msgstr ""
1664
 
1665
- #: ../../View/View_Settings.php:245
1666
  msgid "Security"
1667
  msgstr ""
1668
 
1669
- #: ../../View/View_Settings.php:275
1670
  msgid "Licensing"
1671
  msgstr ""
1672
 
1673
- #: ../../View/View_Settings.php:393
1674
  msgid "PDF Download Link"
1675
  msgstr ""
1676
 
1677
- #: ../../View/View_Settings.php:393
1678
  msgid "Include the [gravitypdf] shortcode in the form's Confirmation or Notification settings to display a PDF download link. %1$sGet more info%2$s."
1679
  msgstr ""
1680
 
@@ -1710,7 +1714,7 @@ msgstr ""
1710
  msgid "Learn how to update"
1711
  msgstr ""
1712
 
1713
- #: ../../Helper/Fields/Field_Consent.php:136
1714
  msgid "Consent not given."
1715
  msgstr ""
1716
 
@@ -1722,7 +1726,7 @@ msgstr ""
1722
  msgid "Shipping (%s)"
1723
  msgstr ""
1724
 
1725
- #: ../../Helper/Fields/Field_Tos.php:100
1726
  msgid "Not accepted"
1727
  msgstr ""
1728
 
@@ -1798,7 +1802,7 @@ msgstr ""
1798
  msgid "Before you can generate a PDF using Gravity Forms, the core fonts need to be saved to your server. This only needs to be done once."
1799
  msgstr ""
1800
 
1801
- #: ../../View/html/FormSettings/add_edit.php:51, ../../View/html/Settings/general.php:39
1802
  msgid "Want more features? Take a look at our addons."
1803
  msgstr ""
1804
 
@@ -1806,7 +1810,7 @@ msgstr ""
1806
  msgid "Add new PDF"
1807
  msgstr ""
1808
 
1809
- #: ../../View/html/GravityForms/fieldset.php:50
1810
  msgid "Toggle %s Section"
1811
  msgstr ""
1812
 
@@ -1822,7 +1826,7 @@ msgstr ""
1822
  msgid "View PDFs"
1823
  msgstr ""
1824
 
1825
- #: ../../View/html/PDF/entry_list_pdf_single.php:23
1826
  msgid "View PDF"
1827
  msgstr ""
1828
 
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
+ "POT-Creation-Date: 2022-06-21 04:08+0000\n"
10
  "X-Poedit-Basepath: ..\n"
11
  "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
12
  "X-Poedit-SearchPath-0: .\n"
90
  msgid "Downgrade"
91
  msgstr ""
92
 
93
+ #: ../../bootstrap.php:134, ../../bootstrap.php:146, ../../deprecated.php:45, ../../deprecated.php:58
94
  msgid "\"%s\" has been deprecated as of Gravity PDF 4.0"
95
  msgstr ""
96
 
98
  msgid "View Gravity PDF Settings"
99
  msgstr ""
100
 
101
+ #: ../../bootstrap.php:309, ../../View/View_Settings.php:173
102
  msgid "Settings"
103
  msgstr ""
104
 
122
  msgid "View Gravity PDF Extensions Shop"
123
  msgstr ""
124
 
125
+ #: ../../bootstrap.php:331, ../../View/View_Settings.php:200
126
  msgid "Extensions"
127
  msgstr ""
128
 
138
  msgid "Install Core Fonts"
139
  msgstr ""
140
 
141
+ #: ../../Controller/Controller_Actions.php:207, ../../Model/Model_Form_Settings.php:171, ../../Model/Model_Form_Settings.php:208, ../../Model/Model_Form_Settings.php:322, ../../View/View_Settings.php:383
142
  msgid "You do not have permission to access this page"
143
  msgstr ""
144
 
186
  msgid "PDF: %s"
187
  msgstr ""
188
 
189
+ #: ../../Controller/Controller_PDF.php:375, ../../View/View_PDF.php:244
190
  msgid "There was a problem generating your PDF"
191
  msgstr ""
192
 
198
  msgid "View plugin Documentation"
199
  msgstr ""
200
 
201
+ #: ../../Helper/Helper_Abstract_Options.php:391, ../../Helper/Helper_Abstract_Options.php:410
202
  msgid "You must pass in a valid form ID"
203
  msgstr ""
204
 
205
+ #: ../../Helper/Helper_Abstract_Options.php:452
206
  msgid "You must pass in a valid PDF ID"
207
  msgstr ""
208
 
209
+ #: ../../Helper/Helper_Abstract_Options.php:837
210
  msgid "Common Sizes"
211
  msgstr ""
212
 
213
+ #: ../../Helper/Helper_Abstract_Options.php:838
214
  msgid "A4 (210 x 297mm)"
215
  msgstr ""
216
 
217
+ #: ../../Helper/Helper_Abstract_Options.php:839
218
  msgid "Letter (8.5 x 11in)"
219
  msgstr ""
220
 
221
+ #: ../../Helper/Helper_Abstract_Options.php:840
222
  msgid "Legal (8.5 x 14in)"
223
  msgstr ""
224
 
225
+ #: ../../Helper/Helper_Abstract_Options.php:841
226
  msgid "Ledger / Tabloid (11 x 17in)"
227
  msgstr ""
228
 
229
+ #: ../../Helper/Helper_Abstract_Options.php:842
230
  msgid "Executive (7 x 10in)"
231
  msgstr ""
232
 
233
+ #: ../../Helper/Helper_Abstract_Options.php:843, ../../Helper/Helper_Options_Fields.php:94, ../../Helper/Helper_Options_Fields.php:318
234
  msgid "Custom Paper Size"
235
  msgstr ""
236
 
237
+ #: ../../Helper/Helper_Abstract_Options.php:846
238
  msgid "\"A\" Sizes"
239
  msgstr ""
240
 
241
+ #: ../../Helper/Helper_Abstract_Options.php:847
242
  msgid "A0 (841 x 1189mm)"
243
  msgstr ""
244
 
245
+ #: ../../Helper/Helper_Abstract_Options.php:848
246
  msgid "A1 (594 x 841mm)"
247
  msgstr ""
248
 
249
+ #: ../../Helper/Helper_Abstract_Options.php:849
250
  msgid "A2 (420 x 594mm)"
251
  msgstr ""
252
 
253
+ #: ../../Helper/Helper_Abstract_Options.php:850
254
  msgid "A3 (297 x 420mm)"
255
  msgstr ""
256
 
257
+ #: ../../Helper/Helper_Abstract_Options.php:851
258
  msgid "A5 (148 x 210mm)"
259
  msgstr ""
260
 
261
+ #: ../../Helper/Helper_Abstract_Options.php:852
262
  msgid "A6 (105 x 148mm)"
263
  msgstr ""
264
 
265
+ #: ../../Helper/Helper_Abstract_Options.php:853
266
  msgid "A7 (74 x 105mm)"
267
  msgstr ""
268
 
269
+ #: ../../Helper/Helper_Abstract_Options.php:854
270
  msgid "A8 (52 x 74mm)"
271
  msgstr ""
272
 
273
+ #: ../../Helper/Helper_Abstract_Options.php:855
274
  msgid "A9 (37 x 52mm)"
275
  msgstr ""
276
 
277
+ #: ../../Helper/Helper_Abstract_Options.php:856
278
  msgid "A10 (26 x 37mm)"
279
  msgstr ""
280
 
281
+ #: ../../Helper/Helper_Abstract_Options.php:859
282
  msgid "\"B\" Sizes"
283
  msgstr ""
284
 
285
+ #: ../../Helper/Helper_Abstract_Options.php:860
286
  msgid "B0 (1414 x 1000mm)"
287
  msgstr ""
288
 
289
+ #: ../../Helper/Helper_Abstract_Options.php:861
290
  msgid "B1 (1000 x 707mm)"
291
  msgstr ""
292
 
293
+ #: ../../Helper/Helper_Abstract_Options.php:862
294
  msgid "B2 (707 x 500mm)"
295
  msgstr ""
296
 
297
+ #: ../../Helper/Helper_Abstract_Options.php:863
298
  msgid "B3 (500 x 353mm)"
299
  msgstr ""
300
 
301
+ #: ../../Helper/Helper_Abstract_Options.php:864
302
  msgid "B4 (353 x 250mm)"
303
  msgstr ""
304
 
305
+ #: ../../Helper/Helper_Abstract_Options.php:865
306
  msgid "B5 (250 x 176mm)"
307
  msgstr ""
308
 
309
+ #: ../../Helper/Helper_Abstract_Options.php:866
310
  msgid "B6 (176 x 125mm)"
311
  msgstr ""
312
 
313
+ #: ../../Helper/Helper_Abstract_Options.php:867
314
  msgid "B7 (125 x 88mm)"
315
  msgstr ""
316
 
317
+ #: ../../Helper/Helper_Abstract_Options.php:868
318
  msgid "B8 (88 x 62mm)"
319
  msgstr ""
320
 
321
+ #: ../../Helper/Helper_Abstract_Options.php:869
322
  msgid "B9 (62 x 44mm)"
323
  msgstr ""
324
 
325
+ #: ../../Helper/Helper_Abstract_Options.php:870
326
  msgid "B10 (44 x 31mm)"
327
  msgstr ""
328
 
329
+ #: ../../Helper/Helper_Abstract_Options.php:873
330
  msgid "\"C\" Sizes"
331
  msgstr ""
332
 
333
+ #: ../../Helper/Helper_Abstract_Options.php:874
334
  msgid "C0 (1297 x 917mm)"
335
  msgstr ""
336
 
337
+ #: ../../Helper/Helper_Abstract_Options.php:875
338
  msgid "C1 (917 x 648mm)"
339
  msgstr ""
340
 
341
+ #: ../../Helper/Helper_Abstract_Options.php:876
342
  msgid "C2 (648 x 458mm)"
343
  msgstr ""
344
 
345
+ #: ../../Helper/Helper_Abstract_Options.php:877
346
  msgid "C3 (458 x 324mm)"
347
  msgstr ""
348
 
349
+ #: ../../Helper/Helper_Abstract_Options.php:878
350
  msgid "C4 (324 x 229mm)"
351
  msgstr ""
352
 
353
+ #: ../../Helper/Helper_Abstract_Options.php:879
354
  msgid "C5 (229 x 162mm)"
355
  msgstr ""
356
 
357
+ #: ../../Helper/Helper_Abstract_Options.php:880
358
  msgid "C6 (162 x 114mm)"
359
  msgstr ""
360
 
361
+ #: ../../Helper/Helper_Abstract_Options.php:881
362
  msgid "C7 (114 x 81mm)"
363
  msgstr ""
364
 
365
+ #: ../../Helper/Helper_Abstract_Options.php:882
366
  msgid "C8 (81 x 57mm)"
367
  msgstr ""
368
 
369
+ #: ../../Helper/Helper_Abstract_Options.php:883
370
  msgid "C9 (57 x 40mm)"
371
  msgstr ""
372
 
373
+ #: ../../Helper/Helper_Abstract_Options.php:884
374
  msgid "C10 (40 x 28mm)"
375
  msgstr ""
376
 
377
+ #: ../../Helper/Helper_Abstract_Options.php:887
378
  msgid "\"RA\" and \"SRA\" Sizes"
379
  msgstr ""
380
 
381
+ #: ../../Helper/Helper_Abstract_Options.php:888
382
  msgid "RA0 (860 x 1220mm)"
383
  msgstr ""
384
 
385
+ #: ../../Helper/Helper_Abstract_Options.php:889
386
  msgid "RA1 (610 x 860mm)"
387
  msgstr ""
388
 
389
+ #: ../../Helper/Helper_Abstract_Options.php:890
390
  msgid "RA2 (430 x 610mm)"
391
  msgstr ""
392
 
393
+ #: ../../Helper/Helper_Abstract_Options.php:891
394
  msgid "RA3 (305 x 430mm)"
395
  msgstr ""
396
 
397
+ #: ../../Helper/Helper_Abstract_Options.php:892
398
  msgid "RA4 (215 x 305mm)"
399
  msgstr ""
400
 
401
+ #: ../../Helper/Helper_Abstract_Options.php:893
402
  msgid "SRA0 (900 x 1280mm)"
403
  msgstr ""
404
 
405
+ #: ../../Helper/Helper_Abstract_Options.php:894
406
  msgid "SRA1 (640 x 900mm)"
407
  msgstr ""
408
 
409
+ #: ../../Helper/Helper_Abstract_Options.php:895
410
  msgid "SRA2 (450 x 640mm)"
411
  msgstr ""
412
 
413
+ #: ../../Helper/Helper_Abstract_Options.php:896
414
  msgid "SRA3 (320 x 450mm)"
415
  msgstr ""
416
 
417
+ #: ../../Helper/Helper_Abstract_Options.php:897
418
  msgid "SRA4 (225 x 320mm)"
419
  msgstr ""
420
 
421
+ #: ../../Helper/Helper_Abstract_Options.php:913
422
  msgid "Unicode"
423
  msgstr ""
424
 
425
+ #: ../../Helper/Helper_Abstract_Options.php:927
426
  msgid "Indic"
427
  msgstr ""
428
 
429
+ #: ../../Helper/Helper_Abstract_Options.php:932
430
  msgid "Arabic"
431
  msgstr ""
432
 
433
+ #: ../../Helper/Helper_Abstract_Options.php:938
434
  msgid "Chinese, Japanese, Korean"
435
  msgstr ""
436
 
437
+ #: ../../Helper/Helper_Abstract_Options.php:943
438
  msgid "Other"
439
  msgstr ""
440
 
441
+ #: ../../Helper/Helper_Abstract_Options.php:997
442
  msgid "User-Defined Fonts"
443
  msgstr ""
444
 
445
+ #: ../../Helper/Helper_Abstract_Options.php:1054
446
  msgid "Could not find Gravity PDF Font"
447
  msgstr ""
448
 
449
+ #: ../../Helper/Helper_Abstract_Options.php:1066, ../../Helper/Helper_PDF_List_Table.php:295
450
  msgid "Copy"
451
  msgstr ""
452
 
453
+ #: ../../Helper/Helper_Abstract_Options.php:1067
454
  msgid "Print - Low Resolution"
455
  msgstr ""
456
 
457
+ #: ../../Helper/Helper_Abstract_Options.php:1068
458
  msgid "Print - High Resolution"
459
  msgstr ""
460
 
461
+ #: ../../Helper/Helper_Abstract_Options.php:1069
462
  msgid "Modify"
463
  msgstr ""
464
 
465
+ #: ../../Helper/Helper_Abstract_Options.php:1070
466
  msgid "Annotate"
467
  msgstr ""
468
 
469
+ #: ../../Helper/Helper_Abstract_Options.php:1071
470
  msgid "Fill Forms"
471
  msgstr ""
472
 
473
+ #: ../../Helper/Helper_Abstract_Options.php:1072
474
  msgid "Extract"
475
  msgstr ""
476
 
477
+ #: ../../Helper/Helper_Abstract_Options.php:1073
478
  msgid "Assemble"
479
  msgstr ""
480
 
486
  msgid "PDF Settings could not be saved. Please enter all required information below."
487
  msgstr ""
488
 
489
+ #: ../../Helper/Helper_Abstract_Options.php:1731
490
+ msgid "%s license key"
491
  msgstr ""
492
 
493
+ #: ../../Helper/Helper_Abstract_Options.php:1749
494
  msgid "Deactivate License"
495
  msgstr ""
496
 
497
+ #: ../../Helper/Helper_Abstract_Options.php:2126, ../../Helper/Helper_Abstract_Options.php:2127
498
  msgid "Select Media"
499
  msgstr ""
500
 
501
+ #: ../../Helper/Helper_Abstract_Options.php:2128
502
  msgid "Upload File"
503
  msgstr ""
504
 
505
+ #: ../../Helper/Helper_Abstract_Options.php:2372
506
  msgid "Width"
507
  msgstr ""
508
 
509
+ #: ../../Helper/Helper_Abstract_Options.php:2384
510
  msgid "Height"
511
  msgstr ""
512
 
513
+ #: ../../Helper/Helper_Abstract_Options.php:2401
514
  msgid "mm"
515
  msgstr ""
516
 
517
+ #: ../../Helper/Helper_Abstract_Options.php:2402
518
  msgid "inches"
519
  msgstr ""
520
 
521
+ #: ../../Helper/Helper_Abstract_Options.php:2470
522
  msgid "The callback used for the %s setting is missing."
523
  msgstr ""
524
 
525
+ #: ../../Helper/Helper_Abstract_View.php:105
526
+ msgid "%s is an invalid filename"
527
+ msgstr ""
528
+
529
+ #: ../../Helper/Helper_Abstract_View.php:129
530
  msgid "Cannot find file %s"
531
  msgstr ""
532
 
533
+ #: ../../Helper/Helper_Data.php:143, ../../Model/Model_Mergetags.php:125
534
  msgid "PDF"
535
  msgstr ""
536
 
537
+ #: ../../Helper/Helper_Data.php:144
538
  msgid "Gravity PDF"
539
  msgstr ""
540
 
541
+ #: ../../Helper/Helper_Data.php:171
542
  msgid "Your license key expired on %s."
543
  msgstr ""
544
 
545
+ #: ../../Helper/Helper_Data.php:172
546
  msgid "Your license key has been disabled"
547
  msgstr ""
548
 
549
+ #: ../../Helper/Helper_Data.php:173
550
  msgid "Invalid license key provided"
551
  msgstr ""
552
 
553
+ #: ../../Helper/Helper_Data.php:174, ../../Helper/Helper_Data.php:175
554
  msgid "Your license is not active for this URL"
555
  msgstr ""
556
 
557
+ #: ../../Helper/Helper_Data.php:176
558
  msgid "This appears to be an invalid license key for %s"
559
  msgstr ""
560
 
561
+ #: ../../Helper/Helper_Data.php:177
562
  msgid "Your license key has reached its activation limit"
563
  msgstr ""
564
 
565
+ #: ../../Helper/Helper_Data.php:178
566
  msgid "An error occurred, please try again"
567
  msgstr ""
568
 
569
+ #: ../../Helper/Helper_Data.php:179
570
  msgid "An error occurred during activation, please try again"
571
  msgstr ""
572
 
573
+ #: ../../Helper/Helper_Data.php:217
574
  msgid "Loading..."
575
  msgstr ""
576
 
577
+ #: ../../Helper/Helper_Data.php:218
578
  msgid "Continue"
579
  msgstr ""
580
 
581
+ #: ../../Helper/Helper_Data.php:219
582
  msgid "Uninstall"
583
  msgstr ""
584
 
585
+ #: ../../Helper/Helper_Data.php:220
586
  msgid "Cancel"
587
  msgstr ""
588
 
589
+ #: ../../Helper/Helper_Data.php:221, ../../Helper/Helper_PDF_List_Table.php:361
590
  msgid "Delete"
591
  msgstr ""
592
 
593
+ #: ../../Helper/Helper_Data.php:222, ../../Helper/Helper_PDF_List_Table.php:220, ../../Model/Model_Form_Settings.php:923
594
  msgid "Active"
595
  msgstr ""
596
 
597
+ #: ../../Helper/Helper_Data.php:223, ../../Helper/Helper_PDF_List_Table.php:223, ../../Model/Model_Form_Settings.php:873, ../../Model/Model_Form_Settings.php:923
598
  msgid "Inactive"
599
  msgstr ""
600
 
601
+ #: ../../Helper/Helper_Data.php:224
602
  msgid "this PDF if"
603
  msgstr ""
604
 
605
+ #: ../../Helper/Helper_Data.php:225
606
  msgid "Enable"
607
  msgstr ""
608
 
609
+ #: ../../Helper/Helper_Data.php:226
610
  msgid "Disable"
611
  msgstr ""
612
 
613
+ #: ../../Helper/Helper_Data.php:227
614
  msgid "Successfully Updated"
615
  msgstr ""
616
 
617
+ #: ../../Helper/Helper_Data.php:228
618
  msgid "Successfully Deleted"
619
  msgstr ""
620
 
621
+ #: ../../Helper/Helper_Data.php:229
622
  msgid "No"
623
  msgstr ""
624
 
625
+ #: ../../Helper/Helper_Data.php:230
626
  msgid "Yes"
627
  msgstr ""
628
 
629
+ #: ../../Helper/Helper_Data.php:231
630
  msgid "Standard"
631
  msgstr ""
632
 
633
+ #: ../../Helper/Helper_Data.php:232, ../../View/View_Form_Settings.php:78
634
  msgid "Advanced"
635
  msgstr ""
636
 
637
+ #: ../../Helper/Helper_Data.php:233
638
  msgid "Manage"
639
  msgstr ""
640
 
641
+ #: ../../Helper/Helper_Data.php:234
642
  msgid "Details"
643
  msgstr ""
644
 
645
+ #: ../../Helper/Helper_Data.php:235
646
  msgid "Select"
647
  msgstr ""
648
 
649
+ #: ../../Helper/Helper_Data.php:236
650
  msgid "Version"
651
  msgstr ""
652
 
653
+ #: ../../Helper/Helper_Data.php:237
654
  msgid "Group"
655
  msgstr ""
656
 
657
+ #: ../../Helper/Helper_Data.php:238
658
  msgid "Tags"
659
  msgstr ""
660
 
661
+ #: ../../Helper/Helper_Data.php:240, ../../Helper/Helper_Options_Fields.php:254, ../../Helper/Helper_PDF_List_Table.php:97, ../../View/View_Form_Settings.php:66
662
  msgid "Template"
663
  msgstr ""
664
 
665
+ #: ../../Helper/Helper_Data.php:241
666
  msgid "Manage PDF Templates"
667
  msgstr ""
668
 
669
+ #: ../../Helper/Helper_Data.php:242
670
  msgid "Add New Template"
671
  msgstr ""
672
 
673
+ #: ../../Helper/Helper_Data.php:243
674
  msgid "This form doesn't have any PDFs."
675
  msgstr ""
676
 
677
+ #: ../../Helper/Helper_Data.php:244
678
  msgid "Let's go create one"
679
  msgstr ""
680
 
681
+ #: ../../Helper/Helper_Data.php:245
682
  msgid "Installed PDFs"
683
  msgstr ""
684
 
685
+ #: ../../Helper/Helper_Data.php:246
686
  msgid "Search Installed Templates"
687
  msgstr ""
688
 
689
+ #: ../../Helper/Helper_Data.php:248
690
  msgid "Search the Gravity PDF Knowledgebase..."
691
  msgstr ""
692
 
693
+ #: ../../Helper/Helper_Data.php:249
694
  msgid "Gravity PDF Documentation"
695
  msgstr ""
696
 
697
+ #: ../../Helper/Helper_Data.php:250
698
  msgid "It doesn't look like there are any topics related to your issue."
699
  msgstr ""
700
 
701
+ #: ../../Helper/Helper_Data.php:251
702
  msgid "An error occurred. Please try again"
703
  msgstr ""
704
 
705
+ #: ../../Helper/Helper_Data.php:253
706
  msgid "Requires Gravity PDF v%s"
707
  msgstr ""
708
 
709
+ #: ../../Helper/Helper_Data.php:254
710
  msgid "This PDF template is not compatible with your version of Gravity PDF. This template required Gravity PDF v%s."
711
  msgstr ""
712
 
713
+ #: ../../Helper/Helper_Data.php:255
714
  msgid "Template Details"
715
  msgstr ""
716
 
717
+ #: ../../Helper/Helper_Data.php:256
718
  msgid "Current Template"
719
  msgstr ""
720
 
721
+ #: ../../Helper/Helper_Data.php:257
722
  msgid "Show previous template"
723
  msgstr ""
724
 
725
+ #: ../../Helper/Helper_Data.php:258
726
  msgid "Show next template"
727
  msgstr ""
728
 
729
+ #: ../../Helper/Helper_Data.php:259
730
  msgid "Upload is not a valid template. Upload a .zip file."
731
  msgstr ""
732
 
733
+ #: ../../Helper/Helper_Data.php:260
734
  msgid "Upload exceeds the 10MB limit."
735
  msgstr ""
736
 
737
+ #: ../../Helper/Helper_Data.php:261
738
  msgid "Template successfully installed"
739
  msgstr ""
740
 
741
+ #: ../../Helper/Helper_Data.php:262
742
  msgid "Template successfully updated"
743
  msgstr ""
744
 
745
+ #: ../../Helper/Helper_Data.php:263
746
  msgid "PDF Template(s) Successfully Installed / Updated"
747
  msgstr ""
748
 
749
+ #: ../../Helper/Helper_Data.php:264
750
  msgid "There was a problem with the upload. Reload the page and try again."
751
  msgstr ""
752
 
753
+ #: ../../Helper/Helper_Data.php:265
754
  msgid "Do you really want to delete this PDF template?%sClick 'Cancel' to go back, 'OK' to confirm the delete."
755
  msgstr ""
756
 
757
+ #: ../../Helper/Helper_Data.php:266
758
  msgid "Could not delete template."
759
  msgstr ""
760
 
761
+ #: ../../Helper/Helper_Data.php:267
762
  msgid "If you have a PDF template in .zip format you may install it here. You can also update an existing PDF template (this will override any changes you have made)."
763
  msgstr ""
764
 
765
+ #: ../../Helper/Helper_Data.php:269
766
  msgid "ALL CORE FONTS SUCCESSFULLY INSTALLED"
767
  msgstr ""
768
 
769
+ #: ../../Helper/Helper_Data.php:270
770
  msgid "%s CORE FONT(S) DID NOT INSTALL CORRECTLY"
771
  msgstr ""
772
 
773
+ #: ../../Helper/Helper_Data.php:271
774
  msgid "Could not download Core Font list. Try again."
775
  msgstr ""
776
 
777
+ #: ../../Helper/Helper_Data.php:272
778
  msgid "Downloading %s..."
779
  msgstr ""
780
 
781
+ #: ../../Helper/Helper_Data.php:273
782
  msgid "Completed installation of %s"
783
  msgstr ""
784
 
785
+ #: ../../Helper/Helper_Data.php:274
786
  msgid "Failed installation of %s"
787
  msgstr ""
788
 
789
+ #: ../../Helper/Helper_Data.php:275
790
  msgid "Fonts remaining:"
791
  msgstr ""
792
 
793
+ #: ../../Helper/Helper_Data.php:276
794
  msgid "Retry Failed Downloads?"
795
  msgstr ""
796
 
797
+ #: ../../Helper/Helper_Data.php:277
798
  msgid "Core font installation"
799
  msgstr ""
800
 
801
+ #: ../../Helper/Helper_Data.php:280
802
  msgid "Search installed fonts"
803
  msgstr ""
804
 
805
+ #: ../../Helper/Helper_Data.php:281
806
  msgid "Installed Fonts"
807
  msgstr ""
808
 
809
+ #: ../../Helper/Helper_Data.php:282
810
  msgid "Regular"
811
  msgstr ""
812
 
813
+ #: ../../Helper/Helper_Data.php:283
814
  msgid "Regular %1$s(required)%2$s"
815
  msgstr ""
816
 
817
+ #: ../../Helper/Helper_Data.php:284
818
  msgid "Italics"
819
  msgstr ""
820
 
821
+ #: ../../Helper/Helper_Data.php:285
822
  msgid "Bold"
823
  msgstr ""
824
 
825
+ #: ../../Helper/Helper_Data.php:286
826
  msgid "Bold Italics"
827
  msgstr ""
828
 
829
+ #: ../../Helper/Helper_Data.php:287
830
  msgid "Add Font"
831
  msgstr ""
832
 
833
+ #: ../../Helper/Helper_Data.php:288
834
  msgid "Update Font"
835
  msgstr ""
836
 
837
+ #: ../../Helper/Helper_Data.php:289
838
  msgid "Install new fonts for use in your PDF documents."
839
  msgstr ""
840
 
841
+ #: ../../Helper/Helper_Data.php:290
842
  msgid "Once saved, PDFs configured to use this font will have your changes applied automatically for newly-generated documents."
843
  msgstr ""
844
 
845
+ #: ../../Helper/Helper_Data.php:291
846
  msgid "Font Name %1$s(required)%2$s"
847
  msgstr ""
848
 
849
+ #: ../../Helper/Helper_Data.php:292
850
  msgid "The font name can only contain letters, numbers and spaces."
851
  msgstr ""
852
 
853
+ #: ../../Helper/Helper_Data.php:293
854
  msgid "Please choose a name contains letters and/or numbers (and a space if you want it)."
855
  msgstr ""
856
 
857
+ #: ../../Helper/Helper_Data.php:294
858
  msgid "Font Files"
859
  msgstr ""
860
 
861
+ #: ../../Helper/Helper_Data.php:295
862
  msgid "Select or drag and drop your .ttf font file for the variants below. Only the Regular type is required."
863
  msgstr ""
864
 
865
+ #: ../../Helper/Helper_Data.php:296
866
  msgid "Add a .ttf font file."
867
  msgstr ""
868
 
869
+ #: ../../Helper/Helper_Data.php:297
870
  msgid "View template usage"
871
  msgstr ""
872
 
873
+ #: ../../Helper/Helper_Data.php:298
874
  msgid "← Cancel"
875
  msgstr ""
876
 
877
+ #: ../../Helper/Helper_Data.php:299
878
  msgid "Are you sure you want to delete this font?"
879
  msgstr ""
880
 
881
+ #: ../../Helper/Helper_Data.php:300
882
  msgid "Add this snippet %1$sin a custom template%3$s to selectively set the font on blocks of text. If you want to apply the font to the entire PDF, %2$suse the Font setting%3$s when configuring the PDF on the form."
883
  msgstr ""
884
 
885
+ #: ../../Helper/Helper_Data.php:301
886
  msgid "Update font"
887
  msgstr ""
888
 
889
+ #: ../../Helper/Helper_Data.php:302
890
  msgid "Select font"
891
  msgstr ""
892
 
893
+ #: ../../Helper/Helper_Data.php:303
894
  msgid "Delete font"
895
  msgstr ""
896
 
897
+ #: ../../Helper/Helper_Data.php:306
898
  msgid "Font list empty."
899
  msgstr ""
900
 
901
+ #: ../../Helper/Helper_Data.php:307
902
  msgid "No fonts matching your search found."
903
  msgstr ""
904
 
905
+ #: ../../Helper/Helper_Data.php:308
906
  msgid "Clear Search."
907
  msgstr ""
908
 
909
+ #: ../../Helper/Helper_Data.php:309
910
  msgid "Your font has been saved."
911
  msgstr ""
912
 
913
+ #: ../../Helper/Helper_Data.php:310
914
  msgid "%1$sThe action could not be completed.%2$s Resolve the highlighted issues above and then try again."
915
  msgstr ""
916
 
917
+ #: ../../Helper/Helper_Data.php:311
918
  msgid "A problem occurred. Reload the page and try again."
919
  msgstr ""
920
 
921
+ #: ../../Helper/Helper_Data.php:312
922
  msgid "%1$sFont file(s) missing from the server.%2$s Please upload the font(s) again and then save."
923
  msgstr ""
924
 
925
+ #: ../../Helper/Helper_Data.php:313
926
  msgid "%1$sFont file(s) are malformed%2$s and cannot be used with Gravity PDF."
927
  msgstr ""
928
 
929
+ #: ../../Helper/Helper_Data.php:315
930
  msgid "Warning! ALL Gravity PDF data, including templates, will be deleted. This cannot be undone. 'OK' to delete, 'Cancel' to stop."
931
  msgstr ""
932
 
933
+ #: ../../Helper/Helper_Data.php:316
934
  msgid "WARNING: You are about to delete this PDF. 'Cancel' to stop, 'OK' to delete."
935
  msgstr ""
936
 
937
+ #: ../../Helper/Helper_Data.php:319
938
  msgid "Search the Gravity PDF Documentation..."
939
  msgstr ""
940
 
941
+ #: ../../Helper/Helper_Data.php:320
942
  msgid "Submit your search query."
943
  msgstr ""
944
 
945
+ #: ../../Helper/Helper_Data.php:321
946
  msgid "Clear your search query."
947
  msgstr ""
948
 
1362
  msgid "The PDF Template %1$s requires Gravity PDF version %2$s. Upgrade to the latest version."
1363
  msgstr ""
1364
 
1365
+ #: ../../Helper/Helper_PDF.php:922
1366
  msgid "This method has been removed because mPDF no longer supports setting the image DPI after the class is initialised."
1367
  msgstr ""
1368
 
1378
  msgid "None"
1379
  msgstr ""
1380
 
1381
+ #: ../../Helper/Helper_PDF_List_Table.php:280, ../../View/html/PDF/entry_list_pdf_single.php:25
1382
  msgid "Download PDF"
1383
  msgstr ""
1384
 
1385
+ #: ../../Helper/Helper_PDF_List_Table.php:283
1386
  msgid "Copy the %s PDF shortcode to the clipboard"
1387
  msgstr ""
1388
 
1389
+ #: ../../Helper/Helper_PDF_List_Table.php:302
1390
  msgid "Shortcode copied!"
1391
  msgstr ""
1392
 
1393
+ #: ../../Helper/Helper_PDF_List_Table.php:306
1394
  msgid "Copy Shortcode"
1395
  msgstr ""
1396
 
1397
+ #: ../../Helper/Helper_PDF_List_Table.php:298
1398
  msgid "Copied"
1399
  msgstr ""
1400
 
1401
+ #: ../../Helper/Helper_PDF_List_Table.php:359
1402
  msgid "Edit this PDF"
1403
  msgstr ""
1404
 
1405
+ #: ../../Helper/Helper_PDF_List_Table.php:359
1406
  msgid "Edit"
1407
  msgstr ""
1408
 
1409
+ #: ../../Helper/Helper_PDF_List_Table.php:360
1410
  msgid "Duplicate this PDF"
1411
  msgstr ""
1412
 
1413
+ #: ../../Helper/Helper_PDF_List_Table.php:360
1414
  msgid "Duplicate"
1415
  msgstr ""
1416
 
1417
+ #: ../../Helper/Helper_PDF_List_Table.php:361
1418
  msgid "Delete this PDF"
1419
  msgstr ""
1420
 
1421
+ #: ../../Helper/Helper_PDF_List_Table.php:369
1422
  msgid "%s PDF"
1423
  msgstr ""
1424
 
1425
+ #: ../../Helper/Helper_PDF_List_Table.php:399
1426
  msgid "This form doesn't have any PDFs. Let's go %1$screate one%2$s."
1427
  msgstr ""
1428
 
1442
  msgid "Add PDF"
1443
  msgstr ""
1444
 
1445
+ #: ../../Model/Model_Form_Settings.php:328, ../../Model/Model_Form_Settings.php:350, ../../Model/Model_Form_Settings.php:399, ../../Model/Model_Form_Settings.php:507
1446
  msgid "There was a problem saving your PDF settings. Please try again."
1447
  msgstr ""
1448
 
1449
+ #: ../../Model/Model_Form_Settings.php:371
1450
  msgid "PDF could not be saved. Please enter all required information below."
1451
  msgstr ""
1452
 
1453
+ #: ../../Model/Model_Form_Settings.php:393
1454
  msgid "PDF saved successfully. %1$sBack to PDF list.%2$s"
1455
  msgstr ""
1456
 
1457
+ #: ../../Model/Model_Form_Settings.php:804
1458
  msgid "PDF successfully deleted."
1459
  msgstr ""
1460
 
1461
+ #: ../../Model/Model_Form_Settings.php:867
1462
  msgid "PDF successfully duplicated."
1463
  msgstr ""
1464
 
1486
  msgid "PDF URLs"
1487
  msgstr ""
1488
 
1489
+ #: ../../Model/Model_PDF.php:366
1490
  msgid "The PDF configuration is not currently active."
1491
  msgstr ""
1492
 
1493
+ #: ../../Model/Model_PDF.php:388
1494
  msgid "PDF conditional logic requirements have not been met."
1495
  msgstr ""
1496
 
1497
+ #: ../../Model/Model_PDF.php:466
1498
  msgid "Your PDF is no longer accessible."
1499
  msgstr ""
1500
 
1501
+ #: ../../Model/Model_PDF.php:567, ../../Model/Model_PDF.php:607
1502
  msgid "You do not have access to view this PDF."
1503
  msgstr ""
1504
 
1505
+ #: ../../Model/Model_PDF.php:866
1506
  msgid "PDFs"
1507
  msgstr ""
1508
 
1509
+ #: ../../Model/Model_PDF.php:1003
1510
  msgid "The PDF could not be saved."
1511
  msgstr ""
1512
 
1513
+ #: ../../Model/Model_PDF.php:2012
1514
  msgid "Could not find PDF configuration requested"
1515
  msgstr ""
1516
 
1517
+ #: ../../Model/Model_Settings.php:413
1518
  msgid "License deactivated."
1519
  msgstr ""
1520
 
1521
+ #: ../../Model/Model_Settings.php:435
1522
  msgid "An error occurred during deactivation, please try again"
1523
  msgstr ""
1524
 
1606
  msgid "minute(s)"
1607
  msgstr ""
1608
 
1609
+ #: ../../Model/Model_Templates.php:367
1610
  msgid "No valid PDF template found in Zip archive."
1611
  msgstr ""
1612
 
1613
+ #: ../../Model/Model_Templates.php:396
1614
  msgid "The PHP file %s is not a valid PDF Template."
1615
  msgstr ""
1616
 
1638
  msgid "Zadani"
1639
  msgstr ""
1640
 
1641
+ #: ../../View/View_Form_Settings.php:42
1642
  msgid "General"
1643
  msgstr ""
1644
 
1646
  msgid "Appearance"
1647
  msgstr ""
1648
 
1649
+ #: ../../View/View_Settings.php:178
1650
  msgid "Tools"
1651
  msgstr ""
1652
 
1653
+ #: ../../View/View_Settings.php:183
1654
  msgid "Help"
1655
  msgstr ""
1656
 
1657
+ #: ../../View/View_Settings.php:191
1658
  msgid "License"
1659
  msgstr ""
1660
 
1661
+ #: ../../View/View_Settings.php:233
1662
  msgid "Default PDF Options"
1663
  msgstr ""
1664
 
1665
+ #: ../../View/View_Settings.php:234
1666
  msgid "Control the default settings to use when you create new PDFs on your forms."
1667
  msgstr ""
1668
 
1669
+ #: ../../View/View_Settings.php:258
1670
  msgid "Security"
1671
  msgstr ""
1672
 
1673
+ #: ../../View/View_Settings.php:291
1674
  msgid "Licensing"
1675
  msgstr ""
1676
 
1677
+ #: ../../View/View_Settings.php:414
1678
  msgid "PDF Download Link"
1679
  msgstr ""
1680
 
1681
+ #: ../../View/View_Settings.php:414
1682
  msgid "Include the [gravitypdf] shortcode in the form's Confirmation or Notification settings to display a PDF download link. %1$sGet more info%2$s."
1683
  msgstr ""
1684
 
1714
  msgid "Learn how to update"
1715
  msgstr ""
1716
 
1717
+ #: ../../Helper/Fields/Field_Consent.php:137
1718
  msgid "Consent not given."
1719
  msgstr ""
1720
 
1726
  msgid "Shipping (%s)"
1727
  msgstr ""
1728
 
1729
+ #: ../../Helper/Fields/Field_Tos.php:101
1730
  msgid "Not accepted"
1731
  msgstr ""
1732
 
1802
  msgid "Before you can generate a PDF using Gravity Forms, the core fonts need to be saved to your server. This only needs to be done once."
1803
  msgstr ""
1804
 
1805
+ #: ../../View/html/FormSettings/add_edit.php:61, ../../View/html/Settings/general.php:50
1806
  msgid "Want more features? Take a look at our addons."
1807
  msgstr ""
1808
 
1810
  msgid "Add new PDF"
1811
  msgstr ""
1812
 
1813
+ #: ../../View/html/GravityForms/fieldset.php:67
1814
  msgid "Toggle %s Section"
1815
  msgstr ""
1816
 
1826
  msgid "View PDFs"
1827
  msgstr ""
1828
 
1829
+ #: ../../View/html/PDF/entry_list_pdf_single.php:25
1830
  msgid "View PDF"
1831
  msgstr ""
1832
 
src/autoload.php CHANGED
@@ -11,8 +11,8 @@ if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
14
- require_once( PDF_PLUGIN_DIR . 'vendor/autoload.php' );
15
- require_once( PDF_PLUGIN_DIR . 'src/deprecated.php' );
16
- require_once( PDF_PLUGIN_DIR . 'api.php' );
17
 
18
- require_once( PDF_PLUGIN_DIR . 'vendor_prefixed/querypath/querypath/src/qp_functions.php' );
11
  exit;
12
  }
13
 
14
+ require_once PDF_PLUGIN_DIR . 'vendor/autoload.php';
15
+ require_once PDF_PLUGIN_DIR . 'src/deprecated.php';
16
+ require_once PDF_PLUGIN_DIR . 'api.php';
17
 
18
+ require_once PDF_PLUGIN_DIR . 'vendor_prefixed/querypath/querypath/src/qp_functions.php';
src/bootstrap.php CHANGED
@@ -37,7 +37,7 @@ if ( ! defined( 'ABSPATH' ) ) {
37
  /*
38
  * Load dependencies
39
  */
40
- require_once( PDF_PLUGIN_DIR . 'src/autoload.php' );
41
 
42
  /**
43
  * @since 4.0
@@ -131,7 +131,7 @@ class Router implements Helper\Helper_Interface_Actions, Helper\Helper_Interface
131
  * @since 4.0
132
  */
133
  public function __call( $name, $arguments ) {
134
- trigger_error( sprintf( esc_html__( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ), E_USER_DEPRECATED );
135
  }
136
 
137
  /**
@@ -143,7 +143,7 @@ class Router implements Helper\Helper_Interface_Actions, Helper\Helper_Interface
143
  * @since 4.0
144
  */
145
  public static function __callStatic( $name, $arguments ) {
146
- trigger_error( sprintf( esc_html__( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ), E_USER_DEPRECATED );
147
  }
148
 
149
  /**
@@ -400,10 +400,10 @@ class Router implements Helper\Helper_Interface_Actions, Helper\Helper_Interface
400
  'wp-color-picker',
401
  ];
402
 
403
- wp_register_script( 'gfpdf_js_settings', PDF_PLUGIN_URL . 'dist/assets/js/admin.min.js', $pdf_settings_dependencies, $version );
404
 
405
- wp_register_script( 'gfpdf_js_entrypoint', PDF_PLUGIN_URL . 'dist/assets/js/app.bundle.min.js', [ 'jquery' ], $version );
406
- wp_register_script( 'gfpdf_js_entries', PDF_PLUGIN_URL . 'dist/assets/js/gfpdf-entries.min.js', [ 'jquery' ], $version );
407
 
408
  /* Localise admin script */
409
  wp_localize_script( 'gfpdf_js_entrypoint', 'GFPDF', $this->data->get_localised_script_data( $this->options, $this->gform ) );
@@ -871,7 +871,7 @@ class Router implements Helper\Helper_Interface_Actions, Helper\Helper_Interface
871
  */
872
  public function check_system_status() {
873
  $view = new View\View_System_Report();
874
- $model = new Model\Model_System_Report( $this->options, $this->data, $this->log, $this->misc, new GFPDF_Major_Compatibility_Checks, $this->templates );
875
  $class = new Controller\Controller_System_Report( $model, $view );
876
  $class->init();
877
 
37
  /*
38
  * Load dependencies
39
  */
40
+ require_once PDF_PLUGIN_DIR . 'src/autoload.php';
41
 
42
  /**
43
  * @since 4.0
131
  * @since 4.0
132
  */
133
  public function __call( $name, $arguments ) {
134
+ _doing_it_wrong( esc_html( $name ), esc_html( sprintf( __( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ) ), '4.0' );
135
  }
136
 
137
  /**
143
  * @since 4.0
144
  */
145
  public static function __callStatic( $name, $arguments ) {
146
+ _doing_it_wrong( esc_html( $name ), esc_html( sprintf( __( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ) ), '4.0' );
147
  }
148
 
149
  /**
400
  'wp-color-picker',
401
  ];
402
 
403
+ wp_register_script( 'gfpdf_js_settings', PDF_PLUGIN_URL . 'dist/assets/js/admin.min.js', $pdf_settings_dependencies, $version, true );
404
 
405
+ wp_register_script( 'gfpdf_js_entrypoint', PDF_PLUGIN_URL . 'dist/assets/js/app.bundle.min.js', [ 'jquery' ], $version, true );
406
+ wp_register_script( 'gfpdf_js_entries', PDF_PLUGIN_URL . 'dist/assets/js/gfpdf-entries.min.js', [ 'jquery' ], $version, true );
407
 
408
  /* Localise admin script */
409
  wp_localize_script( 'gfpdf_js_entrypoint', 'GFPDF', $this->data->get_localised_script_data( $this->options, $this->gform ) );
871
  */
872
  public function check_system_status() {
873
  $view = new View\View_System_Report();
874
+ $model = new Model\Model_System_Report( $this->options, $this->data, $this->log, $this->misc, new GFPDF_Major_Compatibility_Checks(), $this->templates );
875
  $class = new Controller\Controller_System_Report( $model, $view );
876
  $class->init();
877
 
src/deprecated.php CHANGED
@@ -4,11 +4,14 @@
4
 
5
  use GFPDF\Helper\Fields\Field_V3_Products;
6
  use GFPDF\Helper\Helper_Mpdf;
 
7
  use GFPDF_Vendor\Mpdf\Config\FontVariables;
8
  use GFPDF_Vendor\Mpdf\MpdfException;
9
 
10
  /*
11
  * Deprecated Functionality / Classes
 
 
12
  */
13
 
14
  /**
@@ -39,7 +42,7 @@ abstract class GFPDF_Deprecated_Abstract {
39
  *
40
  */
41
  public function __call( $name, $arguments ) {
42
- trigger_error( sprintf( esc_html__( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ), E_USER_DEPRECATED );
43
  }
44
 
45
  /**
@@ -52,7 +55,7 @@ abstract class GFPDF_Deprecated_Abstract {
52
  *
53
  */
54
  public static function __callStatic( $name, $arguments ) {
55
- trigger_error( sprintf( esc_html__( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ), E_USER_DEPRECATED );
56
  }
57
  }
58
 
@@ -236,14 +239,8 @@ class PDF_Common extends GFPDF_Deprecated_Abstract {
236
  * @since 4.0
237
  */
238
  public static function view_data( $form_data ) {
239
- $gform = GPDFAPI::get_form_class();
240
-
241
- if ( isset( $_GET['data'] ) && $gform->has_capability( 'gravityforms_view_settings' ) ) {
242
- print '<pre>';
243
- print_r( $form_data );
244
- print '</pre>';
245
- exit;
246
- }
247
  }
248
 
249
  /**
@@ -256,7 +253,9 @@ class PDF_Common extends GFPDF_Deprecated_Abstract {
256
  * @since 3.0
257
  */
258
  public static function post( $name ) {
 
259
  if ( isset( $_POST[ $name ] ) ) {
 
260
  return $_POST[ $name ];
261
  }
262
 
@@ -273,7 +272,9 @@ class PDF_Common extends GFPDF_Deprecated_Abstract {
273
  * @since 3.0
274
  */
275
  public static function get( $name ) {
 
276
  if ( isset( $_GET[ $name ] ) ) {
 
277
  return $_GET[ $name ];
278
  }
279
 
@@ -407,11 +408,11 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
407
 
408
  /* Output the form title */
409
  if ( isset( $config['return'] ) && $config['return'] ) {
410
- $results['title'] = '<h2 id="details" class="default">' . $form['title'] . '</h2>';
411
  } else {
412
  ?>
413
  <div id='container'>
414
- <h2 id='details' class='default'><?= $form['title']; ?></h2>
415
  <?php
416
  }
417
 
@@ -432,11 +433,11 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
432
  /* Check if we should display the page names */
433
  if ( $config['page_names'] === true && (int) $field->pageNumber !== $page_number && isset( $form['pagination']['pages'][ $page_number ] ) ) {
434
  if ( isset( $config['return'] ) && $config['return'] ) {
435
- $results['field'][] = '<h2 id="field-' . $field->id . '" class="default entry-view-page-break">' . $form['pagination']['pages'][ $page_number ] . '</h2>';
436
  } else {
437
  ?>
438
- <h2 id="field-<?= $field->id; ?>"
439
- class="default entry-view-page-break"><?= $form['pagination']['pages'][ $page_number ]; ?></h2>
440
  <?php
441
  }
442
  $page_number++;
@@ -451,7 +452,7 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
451
  continue;
452
  }
453
 
454
- /* Load our class */
455
  $class = $model->get_field_class( $field, $form, $lead, $products );
456
 
457
  self::load_legacy_css( $field );
@@ -460,12 +461,12 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
460
  if ( $input === 'html' ) {
461
 
462
  if ( $config['html_field'] === true ) {
463
- $html = $class->html();
464
 
465
  if ( isset( $config['return'] ) && $config['return'] ) {
466
- $results['field'][] = $html;
467
  } else {
468
- echo $html;
 
469
  }
470
  }
471
 
@@ -474,25 +475,22 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
474
 
475
  /* Only load our HTML if the field is NOT empty, or the 'empty_field' config option is true */
476
  if ( $config['empty_field'] === true || ! $class->is_empty() ) {
477
-
478
- $html = ( $field->type !== 'section' ) ? $class->html() : $class->html( $config['section_content'] );
479
-
480
  if ( isset( $config['return'] ) && $config['return'] ) {
481
- $results['field'][] = $html;
482
  } else {
483
- echo $html;
 
484
  }
485
  }
486
  }
487
 
488
  /* Output product table, if needed */
489
  if ( $has_products && ! $products->is_empty() ) {
490
- $products = $products->html();
491
-
492
  if ( $config['return'] ) {
493
- $results['field'][] = $products;
494
  } else {
495
- echo $products;
 
496
  }
497
  }
498
 
@@ -521,10 +519,10 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
521
  */
522
  public static function legacy_html_format( $html, $value, $show_label, $label, $field ) {
523
 
524
- $html = '<div id="field-' . $field->id . '" class="' . $field->cssClass . '">';
525
 
526
  if ( $show_label ) {
527
- $html .= '<div class="strong">' . $label . '</div>';
528
  }
529
 
530
  /* If the field value is empty we'll add a non-breaking space to act like a character and maintain proper layout */
@@ -532,7 +530,7 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
532
  $value = '&nbsp;';
533
  }
534
 
535
- $html .= '<div class="value">' . $value . '</div>'
536
  . '</div>';
537
 
538
  return $html;
@@ -584,7 +582,7 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
584
  }
585
 
586
  /* Add odd / even rows */
587
- $field->cssClass = ( $counter++ % 2 ) ? $field->cssClass . ' odd' : ' even';
588
 
589
  switch ( $field->type ) {
590
  case 'html':
@@ -601,6 +599,8 @@ class GFPDFEntryDetail extends GFPDF_Deprecated_Abstract {
601
  }
602
 
603
  $field->cssClass .= ' gfpdf-field-processed';
 
 
604
  }
605
 
606
  /**
4
 
5
  use GFPDF\Helper\Fields\Field_V3_Products;
6
  use GFPDF\Helper\Helper_Mpdf;
7
+ use GFPDF\Statics\Kses;
8
  use GFPDF_Vendor\Mpdf\Config\FontVariables;
9
  use GFPDF_Vendor\Mpdf\MpdfException;
10
 
11
  /*
12
  * Deprecated Functionality / Classes
13
+ *
14
+ * @phpcs:disable Generic.Files.OneObjectStructurePerFile.MultipleFound
15
  */
16
 
17
  /**
42
  *
43
  */
44
  public function __call( $name, $arguments ) {
45
+ _doing_it_wrong( esc_html( $name ), esc_html( sprintf( __( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ) ), '4.0' );
46
  }
47
 
48
  /**
55
  *
56
  */
57
  public static function __callStatic( $name, $arguments ) {
58
+ _doing_it_wrong( esc_html( $name ), esc_html( sprintf( __( '"%s" has been deprecated as of Gravity PDF 4.0', 'gravity-forms-pdf-extended' ), $name ) ), '4.0' );
59
  }
60
  }
61
 
239
  * @since 4.0
240
  */
241
  public static function view_data( $form_data ) {
242
+ $pdf_view = \GPDFAPI::get_pdf_class();
243
+ $pdf_view->maybe_view_form_data( $form_data );
 
 
 
 
 
 
244
  }
245
 
246
  /**
253
  * @since 3.0
254
  */
255
  public static function post( $name ) {
256
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
257
  if ( isset( $_POST[ $name ] ) ) {
258
+ /* phpcs:ignore WordPress.Security.NonceVerification.Missing */
259
  return $_POST[ $name ];
260
  }
261
 
272
  * @since 3.0
273
  */
274
  public static function get( $name ) {
275
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
276
  if ( isset( $_GET[ $name ] ) ) {
277
+ /* phpcs:ignore WordPress.Security.NonceVerification.Recommended */
278
  return $_GET[ $name ];
279
  }
280
 
408
 
409
  /* Output the form title */
410
  if ( isset( $config['return'] ) && $config['return'] ) {
411
+ $results['title'] = '<h2 id="details" class="default">' . esc_html( $form['title'] ) . '</h2>';
412
  } else {
413
  ?>
414
  <div id='container'>
415
+ <h2 id='details' class='default'><?php echo esc_html( $form['title'] ); ?></h2>
416
  <?php
417
  }
418
 
433
  /* Check if we should display the page names */
434
  if ( $config['page_names'] === true && (int) $field->pageNumber !== $page_number && isset( $form['pagination']['pages'][ $page_number ] ) ) {
435
  if ( isset( $config['return'] ) && $config['return'] ) {
436
+ $results['field'][] = '<h2 id="field-' . esc_attr( $field->id ) . '" class="default entry-view-page-break">' . esc_html( $form['pagination']['pages'][ $page_number ] ) . '</h2>';
437
  } else {
438
  ?>
439
+ <h2 id="field-<?php echo esc_attr( $field->id ); ?>"
440
+ class="default entry-view-page-break"><?php echo esc_attr( $form['pagination']['pages'][ $page_number ] ); ?></h2>
441
  <?php
442
  }
443
  $page_number++;
452
  continue;
453
  }
454
 
455
+ /** @var \GFPDF\Helper\Helper_Abstract_Fields $class */
456
  $class = $model->get_field_class( $field, $form, $lead, $products );
457
 
458
  self::load_legacy_css( $field );
461
  if ( $input === 'html' ) {
462
 
463
  if ( $config['html_field'] === true ) {
 
464
 
465
  if ( isset( $config['return'] ) && $config['return'] ) {
466
+ $results['field'][] = $class->html();
467
  } else {
468
+ $class->enable_output();
469
+ $class->html();
470
  }
471
  }
472
 
475
 
476
  /* Only load our HTML if the field is NOT empty, or the 'empty_field' config option is true */
477
  if ( $config['empty_field'] === true || ! $class->is_empty() ) {
 
 
 
478
  if ( isset( $config['return'] ) && $config['return'] ) {
479
+ $results['field'][] = $field->type !== 'section' ? $class->html() : $class->html( $config['section_content'] );
480
  } else {
481
+ $class->enable_output();
482
+ $field->type !== 'section' ? $class->html() : $class->html( $config['section_content'] );
483
  }
484
  }
485
  }
486
 
487
  /* Output product table, if needed */
488
  if ( $has_products && ! $products->is_empty() ) {
 
 
489
  if ( $config['return'] ) {
490
+ $results['field'][] = $products->html();
491
  } else {
492
+ $products->enable_output();
493
+ $products->html();
494
  }
495
  }
496
 
519
  */
520
  public static function legacy_html_format( $html, $value, $show_label, $label, $field ) {
521
 
522
+ $html = '<div id="' . esc_attr( 'field-' . $field->id ) . '" class="' . esc_attr( $field->cssClass ) . '">';
523
 
524
  if ( $show_label ) {
525
+ $html .= '<div class="strong">' . Kses::parse( $label ) . '</div>';
526
  }
527
 
528
  /* If the field value is empty we'll add a non-breaking space to act like a character and maintain proper layout */
530
  $value = '&nbsp;';
531
  }
532
 
533
+ $html .= '<div class="value">' . Kses::parse( $value ) . '</div>'
534
  . '</div>';
535
 
536
  return $html;
582
  }
583
 
584
  /* Add odd / even rows */
585
+ $field->cssClass = ( $counter % 2 ) ? $field->cssClass . ' odd' : ' even';
586
 
587
  switch ( $field->type ) {
588
  case 'html':
599
  }
600
 
601
  $field->cssClass .= ' gfpdf-field-processed';
602
+
603
+ $counter++;
604
  }
605
 
606
  /**
src/templates/blank-slate.php CHANGED
@@ -43,7 +43,7 @@ if ( ! class_exists( 'GFForms' ) ) {
43
 
44
  /* Handle GF2.5+ Columns */
45
  .grid {
46
- float: <?= $settings['rtl'] === 'Yes' ? 'right' : 'left' ?>;
47
  }
48
 
49
  .grid .inner-container {
43
 
44
  /* Handle GF2.5+ Columns */
45
  .grid {
46
+ float: <?php echo $settings['rtl'] === 'Yes' ? 'right' : 'left'; ?>;
47
  }
48
 
49
  .grid .inner-container {
src/templates/focus-gravity.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  /*
4
  * Template Name: Focus Gravity
5
- * Version: 2.0.1
6
  * Description: Focus Gravity providing a classic layout which epitomises Gravity Forms Print Preview. It's the familiar layout you've come to love. Through the Template tab you can control the PDF header and footer, change the background color or image, and show or hide the form title, page names, HTML fields and the Section Break descriptions.
7
  * Author: Gravity PDF
8
  * Author URI: https://gravitypdf.com
@@ -55,7 +55,7 @@ $label_format = $settings['focusgravity_label_format'] ?? 'combined_label';
55
 
56
  /* Handle GF2.5+ Columns */
57
  .grid {
58
- float: <?= $settings['rtl'] === 'Yes' ? 'right' : 'left' ?>;
59
  }
60
 
61
  .grid .inner-container {
@@ -256,7 +256,7 @@ $label_format = $settings['focusgravity_label_format'] ?? 'combined_label';
256
  #container {
257
  border-radius: 5px;
258
  border: 1px solid #000;
259
- border-color: <?= $accent_colour; ?>;
260
  }
261
 
262
  #form_title {
@@ -265,8 +265,8 @@ $label_format = $settings['focusgravity_label_format'] ?? 'combined_label';
265
  }
266
 
267
  h3 {
268
- background: <?= $accent_colour; ?>;
269
- color: <?= $accent_contrast_colour; ?>;
270
  margin: 0;
271
  }
272
 
@@ -277,9 +277,9 @@ $label_format = $settings['focusgravity_label_format'] ?? 'combined_label';
277
  .gfpdf-field .label {
278
  font-weight: bold;
279
  border-bottom: 1px solid #000;
280
- border-bottom-color: <?= $accent_colour; ?>;
281
- background: <?= $secondary_colour; ?>;
282
- color: <?= $secondary_contrast_colour; ?>;
283
  }
284
 
285
  .value, .gfpdf-section-description, .gfpdf-field .label, h3, .gfpdf-html .value {
@@ -288,12 +288,12 @@ $label_format = $settings['focusgravity_label_format'] ?? 'combined_label';
288
 
289
  .gfpdf-html {
290
  border-top: 5px solid #000;
291
- border-top-color: <?= $secondary_colour; ?>;
292
  }
293
 
294
  table.gfield_list th {
295
- background: <?= $accent_colour; ?>;
296
- color: <?= $accent_contrast_colour; ?>;
297
  }
298
 
299
  table.entry-products th, table.entry-products td.emptycell {
@@ -312,13 +312,13 @@ $label_format = $settings['focusgravity_label_format'] ?? 'combined_label';
312
  }
313
 
314
  .even {
315
- background: <?= $secondary_colour; ?>;
316
  }
317
 
318
  <?php else : ?>
319
  .gfpdf-html .value {
320
  border-top: 1px solid #000;
321
- border-top-color: <?= $accent_colour; ?>;
322
  }
323
 
324
  <?php endif; ?>
2
 
3
  /*
4
  * Template Name: Focus Gravity
5
+ * Version: 2.0.2
6
  * Description: Focus Gravity providing a classic layout which epitomises Gravity Forms Print Preview. It's the familiar layout you've come to love. Through the Template tab you can control the PDF header and footer, change the background color or image, and show or hide the form title, page names, HTML fields and the Section Break descriptions.
7
  * Author: Gravity PDF
8
  * Author URI: https://gravitypdf.com
55
 
56
  /* Handle GF2.5+ Columns */
57
  .grid {
58
+ float: <?php echo $settings['rtl'] === 'Yes' ? 'right' : 'left'; ?>;
59
  }
60
 
61
  .grid .inner-container {
256
  #container {
257
  border-radius: 5px;
258
  border: 1px solid #000;
259
+ border-color: <?php echo esc_html( $accent_colour ); ?>;
260
  }
261
 
262
  #form_title {
265
  }
266
 
267
  h3 {
268
+ background: <?php echo esc_html( $accent_colour ); ?>;
269
+ color: <?php echo esc_html( $accent_contrast_colour ); ?>;
270
  margin: 0;
271
  }
272
 
277
  .gfpdf-field .label {
278
  font-weight: bold;
279
  border-bottom: 1px solid #000;
280
+ border-bottom-color: <?php echo esc_html( $accent_colour ); ?>;
281
+ background: <?php echo esc_html( $secondary_colour ); ?>;
282
+ color: <?php echo esc_html( $secondary_contrast_colour ); ?>;
283
  }
284
 
285
  .value, .gfpdf-section-description, .gfpdf-field .label, h3, .gfpdf-html .value {
288
 
289
  .gfpdf-html {
290
  border-top: 5px solid #000;
291
+ border-top-color: <?php echo esc_html( $secondary_colour ); ?>;
292
  }
293
 
294
  table.gfield_list th {
295
+ background: <?php echo esc_html( $accent_colour ); ?>;
296
+ color: <?php echo esc_html( $accent_contrast_colour ); ?>;
297
  }
298
 
299
  table.entry-products th, table.entry-products td.emptycell {
312
  }
313
 
314
  .even {
315
+ background: <?php echo esc_html( $secondary_colour ); ?>;
316
  }
317
 
318
  <?php else : ?>
319
  .gfpdf-html .value {
320
  border-top: 1px solid #000;
321
+ border-top-color: <?php echo esc_html( $accent_colour ); ?>;
322
  }
323
 
324
  <?php endif; ?>
src/templates/rubix.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  /*
4
  * Template Name: Rubix
5
- * Version: 2.0.0
6
  * Description: Rubix uses stylish containers to create an aesthetically pleasing design. Through the Template tab you can control the PDF header and footer, change the background color or image, and show or hide the form title, page names, HTML fields and the Section Break descriptions.
7
  * Author: Gravity PDF
8
  * Author URI: https://gravitypdf.com
@@ -52,7 +52,7 @@ $contrast = $misc->get_background_and_border_contrast( $container_background_col
52
 
53
  /* Handle GF2.5+ Columns */
54
  .grid {
55
- float: <?= $settings['rtl'] === 'Yes' ? 'right' : 'left' ?>;
56
  }
57
 
58
  .grid .inner-container {
@@ -266,7 +266,7 @@ $contrast = $misc->get_background_and_border_contrast( $container_background_col
266
  }
267
 
268
  .gfpdf-field .inner-container {
269
- background: <?= $container_background_color; ?>;
270
  border-radius: 10px;
271
  }
272
 
@@ -299,13 +299,13 @@ $contrast = $misc->get_background_and_border_contrast( $container_background_col
299
 
300
  .gfield_list th,
301
  table.entry-products th, table.entry-products td.emptycell {
302
- background-color: <?= $contrast['background']; ?>;
303
  }
304
 
305
  .gfield_list th, .gfield_list td,
306
  table.entry-products th, table.entry-products td {
307
  border: 1px solid #000;
308
- border-color: <?= $contrast['border']; ?>;
309
  }
310
 
311
  </style>
2
 
3
  /*
4
  * Template Name: Rubix
5
+ * Version: 2.0.1
6
  * Description: Rubix uses stylish containers to create an aesthetically pleasing design. Through the Template tab you can control the PDF header and footer, change the background color or image, and show or hide the form title, page names, HTML fields and the Section Break descriptions.
7
  * Author: Gravity PDF
8
  * Author URI: https://gravitypdf.com
52
 
53
  /* Handle GF2.5+ Columns */
54
  .grid {
55
+ float: <?php echo $settings['rtl'] === 'Yes' ? 'right' : 'left'; ?>;
56
  }
57
 
58
  .grid .inner-container {
266
  }
267
 
268
  .gfpdf-field .inner-container {
269
+ background: <?php echo esc_html( $container_background_color ); ?>;
270
  border-radius: 10px;
271
  }
272
 
299
 
300
  .gfield_list th,
301
  table.entry-products th, table.entry-products td.emptycell {
302
+ background-color: <?php echo esc_html( $contrast['background'] ); ?>;
303
  }
304
 
305
  .gfield_list th, .gfield_list td,
306
  table.entry-products th, table.entry-products td {
307
  border: 1px solid #000;
308
+ border-color: <?php echo esc_html( $contrast['border'] ); ?>;
309
  }
310
 
311
  </style>
src/templates/zadani.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  /*
4
  * Template Name: Zadani
5
- * Version: 2.0.0
6
  * Description: A minimalist business-style template that will generate a well-spaced document great for printing. Through the Template tab you can control the PDF header and footer, change the background color or image, and show or hide the form title, page names, HTML fields and the Section Break descriptions.
7
  * Author: Gravity PDF
8
  * Author URI: https://gravitypdf.com
@@ -48,7 +48,7 @@ $value_border_colour = $settings['zadani_border_colour'] ?? '#CCCCCC';
48
 
49
  /* Handle GF2.5+ Columns */
50
  .grid {
51
- float: <?= $settings['rtl'] === 'Yes' ? 'right' : 'left' ?>;
52
  }
53
 
54
  .grid .inner-container {
@@ -253,7 +253,7 @@ $value_border_colour = $settings['zadani_border_colour'] ?? '#CCCCCC';
253
 
254
  .gfpdf-field .value {
255
  border: 1px solid #000;
256
- border-color: <?= $value_border_colour; ?>;
257
  padding: 1.5mm 2mm;
258
  }
259
 
2
 
3
  /*
4
  * Template Name: Zadani
5
+ * Version: 2.0.1
6
  * Description: A minimalist business-style template that will generate a well-spaced document great for printing. Through the Template tab you can control the PDF header and footer, change the background color or image, and show or hide the form title, page names, HTML fields and the Section Break descriptions.
7
  * Author: Gravity PDF
8
  * Author URI: https://gravitypdf.com
48
 
49
  /* Handle GF2.5+ Columns */
50
  .grid {
51
+ float: <?php echo $settings['rtl'] === 'Yes' ? 'right' : 'left'; ?>;
52
  }
53
 
54
  .grid .inner-container {
253
 
254
  .gfpdf-field .value {
255
  border: 1px solid #000;
256
+ border-color: <?php echo esc_html( $value_border_colour ); ?>;
257
  padding: 1.5mm 2mm;
258
  }
259
 
vendor/composer/autoload_classmap.php CHANGED
@@ -144,6 +144,7 @@ return array(
144
  'GFPDF\\Model\\Model_System_Report' => $baseDir . '/src/Model/Model_System_Report.php',
145
  'GFPDF\\Model\\Model_Templates' => $baseDir . '/src/Model/Model_Templates.php',
146
  'GFPDF\\Model\\Model_Uninstall' => $baseDir . '/src/Model/Model_Uninstall.php',
 
147
  'GFPDF\\Statics\\Queue_Callbacks' => $baseDir . '/src/Statics/Queue_Callbacks.php',
148
  'GFPDF\\View\\View_Actions' => $baseDir . '/src/View/View_Actions.php',
149
  'GFPDF\\View\\View_Form_Settings' => $baseDir . '/src/View/View_Form_Settings.php',
144
  'GFPDF\\Model\\Model_System_Report' => $baseDir . '/src/Model/Model_System_Report.php',
145
  'GFPDF\\Model\\Model_Templates' => $baseDir . '/src/Model/Model_Templates.php',
146
  'GFPDF\\Model\\Model_Uninstall' => $baseDir . '/src/Model/Model_Uninstall.php',
147
+ 'GFPDF\\Statics\\Kses' => $baseDir . '/src/Statics/Kses.php',
148
  'GFPDF\\Statics\\Queue_Callbacks' => $baseDir . '/src/Statics/Queue_Callbacks.php',
149
  'GFPDF\\View\\View_Actions' => $baseDir . '/src/View/View_Actions.php',
150
  'GFPDF\\View\\View_Form_Settings' => $baseDir . '/src/View/View_Form_Settings.php',
vendor/composer/autoload_static.php CHANGED
@@ -172,6 +172,7 @@ class ComposerStaticInitGravityPDFPlugin
172
  'GFPDF\\Model\\Model_System_Report' => __DIR__ . '/../..' . '/src/Model/Model_System_Report.php',
173
  'GFPDF\\Model\\Model_Templates' => __DIR__ . '/../..' . '/src/Model/Model_Templates.php',
174
  'GFPDF\\Model\\Model_Uninstall' => __DIR__ . '/../..' . '/src/Model/Model_Uninstall.php',
 
175
  'GFPDF\\Statics\\Queue_Callbacks' => __DIR__ . '/../..' . '/src/Statics/Queue_Callbacks.php',
176
  'GFPDF\\View\\View_Actions' => __DIR__ . '/../..' . '/src/View/View_Actions.php',
177
  'GFPDF\\View\\View_Form_Settings' => __DIR__ . '/../..' . '/src/View/View_Form_Settings.php',
172
  'GFPDF\\Model\\Model_System_Report' => __DIR__ . '/../..' . '/src/Model/Model_System_Report.php',
173
  'GFPDF\\Model\\Model_Templates' => __DIR__ . '/../..' . '/src/Model/Model_Templates.php',
174
  'GFPDF\\Model\\Model_Uninstall' => __DIR__ . '/../..' . '/src/Model/Model_Uninstall.php',
175
+ 'GFPDF\\Statics\\Kses' => __DIR__ . '/../..' . '/src/Statics/Kses.php',
176
  'GFPDF\\Statics\\Queue_Callbacks' => __DIR__ . '/../..' . '/src/Statics/Queue_Callbacks.php',
177
  'GFPDF\\View\\View_Actions' => __DIR__ . '/../..' . '/src/View/View_Actions.php',
178
  'GFPDF\\View\\View_Form_Settings' => __DIR__ . '/../..' . '/src/View/View_Form_Settings.php',
vendor/composer/installed.json CHANGED
@@ -393,17 +393,17 @@
393
  },
394
  {
395
  "name": "monolog/monolog",
396
- "version": "2.6.0",
397
- "version_normalized": "2.6.0.0",
398
  "source": {
399
  "type": "git",
400
  "url": "https://github.com/Seldaek/monolog.git",
401
- "reference": "247918972acd74356b0a91dfaa5adcaec069b6c0"
402
  },
403
  "dist": {
404
  "type": "zip",
405
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/247918972acd74356b0a91dfaa5adcaec069b6c0",
406
- "reference": "247918972acd74356b0a91dfaa5adcaec069b6c0",
407
  "shasum": ""
408
  },
409
  "require": {
@@ -451,7 +451,7 @@
451
  "rollbar/rollbar": "Allow sending log messages to Rollbar",
452
  "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
453
  },
454
- "time": "2022-05-10T09:36:00+00:00",
455
  "type": "library",
456
  "extra": {
457
  "branch-alias": {
@@ -484,7 +484,7 @@
484
  ],
485
  "support": {
486
  "issues": "https://github.com/Seldaek/monolog/issues",
487
- "source": "https://github.com/Seldaek/monolog/tree/2.6.0"
488
  },
489
  "funding": [
490
  {
393
  },
394
  {
395
  "name": "monolog/monolog",
396
+ "version": "2.7.0",
397
+ "version_normalized": "2.7.0.0",
398
  "source": {
399
  "type": "git",
400
  "url": "https://github.com/Seldaek/monolog.git",
401
+ "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524"
402
  },
403
  "dist": {
404
  "type": "zip",
405
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5579edf28aee1190a798bfa5be8bc16c563bd524",
406
+ "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524",
407
  "shasum": ""
408
  },
409
  "require": {
451
  "rollbar/rollbar": "Allow sending log messages to Rollbar",
452
  "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
453
  },
454
+ "time": "2022-06-09T08:59:12+00:00",
455
  "type": "library",
456
  "extra": {
457
  "branch-alias": {
484
  ],
485
  "support": {
486
  "issues": "https://github.com/Seldaek/monolog/issues",
487
+ "source": "https://github.com/Seldaek/monolog/tree/2.7.0"
488
  },
489
  "funding": [
490
  {
vendor/composer/installed.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php return array(
2
  'root' => array(
3
  'name' => 'gravitypdf/gravitypdf',
4
- 'pretty_version' => '6.3.1',
5
- 'version' => '6.3.1.0',
6
- 'reference' => 'ebf8a8a4a5bbb8783a944fd0c62bc8b3c7673fbf',
7
  'type' => 'library',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
@@ -20,9 +20,9 @@
20
  'dev_requirement' => false,
21
  ),
22
  'gravitypdf/gravitypdf' => array(
23
- 'pretty_version' => '6.3.1',
24
- 'version' => '6.3.1.0',
25
- 'reference' => 'ebf8a8a4a5bbb8783a944fd0c62bc8b3c7673fbf',
26
  'type' => 'library',
27
  'install_path' => __DIR__ . '/../../',
28
  'aliases' => array(),
@@ -65,9 +65,9 @@
65
  'dev_requirement' => false,
66
  ),
67
  'monolog/monolog' => array(
68
- 'pretty_version' => '2.6.0',
69
- 'version' => '2.6.0.0',
70
- 'reference' => '247918972acd74356b0a91dfaa5adcaec069b6c0',
71
  'type' => 'library',
72
  'install_path' => __DIR__ . '/../monolog/monolog',
73
  'aliases' => array(),
1
  <?php return array(
2
  'root' => array(
3
  'name' => 'gravitypdf/gravitypdf',
4
+ 'pretty_version' => '6.4.0-RC1',
5
+ 'version' => '6.4.0.0-RC1',
6
+ 'reference' => '1d0fee717286df7150286e75b6a69b92889a5b3f',
7
  'type' => 'library',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
20
  'dev_requirement' => false,
21
  ),
22
  'gravitypdf/gravitypdf' => array(
23
+ 'pretty_version' => '6.4.0-RC1',
24
+ 'version' => '6.4.0.0-RC1',
25
+ 'reference' => '1d0fee717286df7150286e75b6a69b92889a5b3f',
26
  'type' => 'library',
27
  'install_path' => __DIR__ . '/../../',
28
  'aliases' => array(),
65
  'dev_requirement' => false,
66
  ),
67
  'monolog/monolog' => array(
68
+ 'pretty_version' => '2.7.0',
69
+ 'version' => '2.7.0.0',
70
+ 'reference' => '5579edf28aee1190a798bfa5be8bc16c563bd524',
71
  'type' => 'library',
72
  'install_path' => __DIR__ . '/../monolog/monolog',
73
  'aliases' => array(),
vendor_prefixed/monolog/src/Monolog/ErrorHandler.php CHANGED
@@ -42,8 +42,8 @@ class ErrorHandler
42
  private $fatalLevel = \Psr\Log\LogLevel::ALERT;
43
  /** @var ?string */
44
  private $reservedMemory = null;
45
- /** @var ?mixed */
46
- private $lastFatalTrace;
47
  /** @var int[] */
48
  private static $fatalErrors = [\E_ERROR, \E_PARSE, \E_CORE_ERROR, \E_COMPILE_ERROR, \E_USER_ERROR];
49
  public function __construct(\Psr\Log\LoggerInterface $logger)
@@ -177,7 +177,7 @@ class ErrorHandler
177
  $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
178
  \array_shift($trace);
179
  // Exclude handleError from trace
180
- $this->lastFatalTrace = $trace;
181
  }
182
  if ($this->previousErrorHandler === \true) {
183
  return \false;
@@ -192,9 +192,14 @@ class ErrorHandler
192
  public function handleFatalError() : void
193
  {
194
  $this->reservedMemory = '';
195
- $lastError = \error_get_last();
 
 
 
 
196
  if ($lastError && \in_array($lastError['type'], self::$fatalErrors, \true)) {
197
- $this->logger->log($this->fatalLevel, 'Fatal Error (' . self::codeToString($lastError['type']) . '): ' . $lastError['message'], ['code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $this->lastFatalTrace]);
 
198
  if ($this->logger instanceof \GFPDF_Vendor\Monolog\Logger) {
199
  foreach ($this->logger->getHandlers() as $handler) {
200
  $handler->close();
42
  private $fatalLevel = \Psr\Log\LogLevel::ALERT;
43
  /** @var ?string */
44
  private $reservedMemory = null;
45
+ /** @var ?array{type: int, message: string, file: string, line: int, trace: mixed} */
46
+ private $lastFatalData = null;
47
  /** @var int[] */
48
  private static $fatalErrors = [\E_ERROR, \E_PARSE, \E_CORE_ERROR, \E_COMPILE_ERROR, \E_USER_ERROR];
49
  public function __construct(\Psr\Log\LoggerInterface $logger)
177
  $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
178
  \array_shift($trace);
179
  // Exclude handleError from trace
180
+ $this->lastFatalData = ['type' => $code, 'message' => $message, 'file' => $file, 'line' => $line, 'trace' => $trace];
181
  }
182
  if ($this->previousErrorHandler === \true) {
183
  return \false;
192
  public function handleFatalError() : void
193
  {
194
  $this->reservedMemory = '';
195
+ if (\is_array($this->lastFatalData)) {
196
+ $lastError = $this->lastFatalData;
197
+ } else {
198
+ $lastError = \error_get_last();
199
+ }
200
  if ($lastError && \in_array($lastError['type'], self::$fatalErrors, \true)) {
201
+ $trace = $lastError['trace'] ?? null;
202
+ $this->logger->log($this->fatalLevel, 'Fatal Error (' . self::codeToString($lastError['type']) . '): ' . $lastError['message'], ['code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $trace]);
203
  if ($this->logger instanceof \GFPDF_Vendor\Monolog\Logger) {
204
  foreach ($this->logger->getHandlers() as $handler) {
205
  $handler->close();
vendor_prefixed/monolog/src/Monolog/Handler/RotatingFileHandler.php CHANGED
@@ -154,7 +154,7 @@ class RotatingFileHandler extends \GFPDF_Vendor\Monolog\Handler\StreamHandler
154
  protected function getGlobPattern() : string
155
  {
156
  $fileInfo = \pathinfo($this->filename);
157
- $glob = \str_replace(['{filename}', '{date}'], [$fileInfo['filename'], '[0-9][0-9][0-9][0-9]*'], $fileInfo['dirname'] . '/' . $this->filenameFormat);
158
  if (isset($fileInfo['extension'])) {
159
  $glob .= '.' . $fileInfo['extension'];
160
  }
154
  protected function getGlobPattern() : string
155
  {
156
  $fileInfo = \pathinfo($this->filename);
157
+ $glob = \str_replace(['{filename}', '{date}'], [$fileInfo['filename'], \str_replace(['Y', 'y', 'm', 'd'], ['[0-9][0-9][0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]'], $this->dateFormat)], $fileInfo['dirname'] . '/' . $this->filenameFormat);
158
  if (isset($fileInfo['extension'])) {
159
  $glob .= '.' . $fileInfo['extension'];
160
  }
vendor_prefixed/monolog/src/Monolog/Logger.php CHANGED
@@ -125,6 +125,12 @@ class Logger implements \Psr\Log\LoggerInterface, \GFPDF_Vendor\Monolog\Resettab
125
  * @var int Keeps track of depth to prevent infinite logging loops
126
  */
127
  private $logDepth = 0;
 
 
 
 
 
 
128
  /**
129
  * @psalm-param array<callable(array): array> $processors
130
  *
@@ -239,19 +245,27 @@ class Logger implements \Psr\Log\LoggerInterface, \GFPDF_Vendor\Monolog\Resettab
239
  $this->microsecondTimestamps = $micro;
240
  return $this;
241
  }
 
 
 
 
 
242
  /**
243
  * Adds a log record.
244
  *
245
- * @param int $level The logging level
246
- * @param string $message The log message
247
- * @param mixed[] $context The log context
248
- * @return bool Whether the record has been processed
 
249
  *
250
  * @phpstan-param Level $level
251
  */
252
- public function addRecord(int $level, string $message, array $context = []) : bool
253
  {
254
- $this->logDepth += 1;
 
 
255
  if ($this->logDepth === 3) {
256
  $this->warning('A possible infinite logging loop was detected and aborted. It appears some of your handler code is triggering logging, see the previous log record for a hint as to what may be the cause.');
257
  return \false;
@@ -268,7 +282,7 @@ class Logger implements \Psr\Log\LoggerInterface, \GFPDF_Vendor\Monolog\Resettab
268
  continue;
269
  }
270
  $levelName = static::getLevelName($level);
271
- $record = ['message' => $message, 'context' => $context, 'level' => $level, 'level_name' => $levelName, 'channel' => $this->name, 'datetime' => new \GFPDF_Vendor\Monolog\DateTimeImmutable($this->microsecondTimestamps, $this->timezone), 'extra' => []];
272
  try {
273
  foreach ($this->processors as $processor) {
274
  $record = $processor($record);
@@ -289,7 +303,9 @@ class Logger implements \Psr\Log\LoggerInterface, \GFPDF_Vendor\Monolog\Resettab
289
  }
290
  }
291
  } finally {
292
- $this->logDepth--;
 
 
293
  }
294
  return null !== $record;
295
  }
125
  * @var int Keeps track of depth to prevent infinite logging loops
126
  */
127
  private $logDepth = 0;
128
+ /**
129
+ * @var bool Whether to detect infinite logging loops
130
+ *
131
+ * This can be disabled via {@see useLoggingLoopDetection} if you have async handlers that do not play well with this
132
+ */
133
+ private $detectCycles = \true;
134
  /**
135
  * @psalm-param array<callable(array): array> $processors
136
  *
245
  $this->microsecondTimestamps = $micro;
246
  return $this;
247
  }
248
+ public function useLoggingLoopDetection(bool $detectCycles) : self
249
+ {
250
+ $this->detectCycles = $detectCycles;
251
+ return $this;
252
+ }
253
  /**
254
  * Adds a log record.
255
  *
256
+ * @param int $level The logging level
257
+ * @param string $message The log message
258
+ * @param mixed[] $context The log context
259
+ * @param DateTimeImmutable $datetime Optional log date to log into the past or future
260
+ * @return bool Whether the record has been processed
261
  *
262
  * @phpstan-param Level $level
263
  */
264
+ public function addRecord(int $level, string $message, array $context = [], \GFPDF_Vendor\Monolog\DateTimeImmutable $datetime = null) : bool
265
  {
266
+ if ($this->detectCycles) {
267
+ $this->logDepth += 1;
268
+ }
269
  if ($this->logDepth === 3) {
270
  $this->warning('A possible infinite logging loop was detected and aborted. It appears some of your handler code is triggering logging, see the previous log record for a hint as to what may be the cause.');
271
  return \false;
282
  continue;
283
  }
284
  $levelName = static::getLevelName($level);
285
+ $record = ['message' => $message, 'context' => $context, 'level' => $level, 'level_name' => $levelName, 'channel' => $this->name, 'datetime' => $datetime ?? new \GFPDF_Vendor\Monolog\DateTimeImmutable($this->microsecondTimestamps, $this->timezone), 'extra' => []];
286
  try {
287
  foreach ($this->processors as $processor) {
288
  $record = $processor($record);
303
  }
304
  }
305
  } finally {
306
+ if ($this->detectCycles) {
307
+ $this->logDepth--;
308
+ }
309
  }
310
  return null !== $record;
311
  }
vendor_prefixed/monolog/src/Monolog/Test/TestCase.php CHANGED
@@ -21,6 +21,8 @@ use GFPDF_Vendor\Monolog\Formatter\FormatterInterface;
21
  *
22
  * @phpstan-import-type Record from \Monolog\Logger
23
  * @phpstan-import-type Level from \Monolog\Logger
 
 
24
  */
25
  class TestCase extends \GFPDF_Vendor\PHPUnit\Framework\TestCase
26
  {
21
  *
22
  * @phpstan-import-type Record from \Monolog\Logger
23
  * @phpstan-import-type Level from \Monolog\Logger
24
+ *
25
+ * @internal feel free to reuse this to test your own handlers, this is marked internal to avoid issues with PHPStorm https://github.com/Seldaek/monolog/issues/1677
26
  */
27
  class TestCase extends \GFPDF_Vendor\PHPUnit\Framework\TestCase
28
  {