The Events Calendar - Version 6.0.1

Version Description

= [6.0] = Please see the changelog for the complete list of changes in this release. Previous versions of The Events Calendar are not cross-compatible with 6.X add-ons. Remember to always make a backup of your database and files before updating!

Download this release

Release Info

Developer bordoni
Plugin Icon The Events Calendar
Version 6.0.1
Comparing to
See all releases

Code changes from version 6.0.0.1 to 6.0.1

Files changed (132) hide show
  1. common/lang/tribe-common-de_DE.mo +0 -0
  2. common/src/Tribe/Context.php +17 -1
  3. common/src/Tribe/Cost_Utils.php +1 -1
  4. common/src/Tribe/Customizer.php +2 -2
  5. common/src/Tribe/Main.php +7 -7
  6. common/src/Tribe/Repository.php +13 -1
  7. common/src/Tribe/Repository/Decorator.php +7 -0
  8. common/src/Tribe/Repository/Interface.php +9 -0
  9. common/src/Tribe/Utils/Array.php +1 -1
  10. common/src/functions/utils.php +21 -2
  11. common/vendor/autoload.php +1 -1
  12. common/vendor/autoload_52.php +1 -1
  13. common/vendor/composer/autoload_real.php +4 -4
  14. common/vendor/composer/autoload_real_52.php +3 -3
  15. common/vendor/composer/autoload_static.php +5 -5
  16. common/vendor/composer/installed.json +6 -6
  17. lang/the-events-calendar-bg_BG.mo +0 -0
  18. lang/the-events-calendar-ca.mo +0 -0
  19. lang/the-events-calendar-cs_CZ.mo +0 -0
  20. lang/the-events-calendar-da_DK.mo +0 -0
  21. lang/the-events-calendar-de_CH.mo +0 -0
  22. lang/the-events-calendar-de_DE.mo +0 -0
  23. lang/the-events-calendar-el.mo +0 -0
  24. lang/the-events-calendar-en_AU.mo +0 -0
  25. lang/the-events-calendar-en_CA.mo +0 -0
  26. lang/the-events-calendar-en_GB.mo +0 -0
  27. lang/the-events-calendar-en_NZ.mo +0 -0
  28. lang/the-events-calendar-en_ZA.mo +0 -0
  29. lang/the-events-calendar-es_AR.mo +0 -0
  30. lang/the-events-calendar-es_CO.mo +0 -0
  31. lang/the-events-calendar-es_DO.mo +0 -0
  32. lang/the-events-calendar-es_EC.mo +0 -0
  33. lang/the-events-calendar-es_ES.mo +0 -0
  34. lang/the-events-calendar-es_MX.mo +0 -0
  35. lang/the-events-calendar-es_VE.mo +0 -0
  36. lang/the-events-calendar-et.mo +0 -0
  37. lang/the-events-calendar-eu.mo +0 -0
  38. lang/the-events-calendar-fi.mo +0 -0
  39. lang/the-events-calendar-fr_CA.mo +0 -0
  40. lang/the-events-calendar-fr_FR.mo +0 -0
  41. lang/the-events-calendar-gl_ES.mo +0 -0
  42. lang/the-events-calendar-he_IL.mo +0 -0
  43. lang/the-events-calendar-hr.mo +0 -0
  44. lang/the-events-calendar-hu_HU.mo +0 -0
  45. lang/the-events-calendar-it_IT.mo +0 -0
  46. lang/the-events-calendar-ja.mo +0 -0
  47. lang/the-events-calendar-ko_KR.mo +0 -0
  48. lang/the-events-calendar-lt_LT.mo +0 -0
  49. lang/the-events-calendar-nb_NO.mo +0 -0
  50. lang/the-events-calendar-nl_BE.mo +0 -0
  51. lang/the-events-calendar-nl_NL.mo +0 -0
  52. lang/the-events-calendar-nn_NO.mo +0 -0
  53. lang/the-events-calendar-pl_PL.mo +0 -0
  54. lang/the-events-calendar-pt_BR.mo +0 -0
  55. lang/the-events-calendar-pt_PT.mo +0 -0
  56. lang/the-events-calendar-ro_RO.mo +0 -0
  57. lang/the-events-calendar-ru_RU.mo +0 -0
  58. lang/the-events-calendar-sk_SK.mo +0 -0
  59. lang/the-events-calendar-sl_SI.mo +0 -0
  60. lang/the-events-calendar-sq.mo +0 -0
  61. lang/the-events-calendar-sv_SE.mo +0 -0
  62. lang/the-events-calendar-tr_TR.mo +0 -0
  63. lang/the-events-calendar-uk.mo +0 -0
  64. lang/the-events-calendar-zh_CN.mo +0 -0
  65. lang/the-events-calendar.pot +193 -170
  66. readme.txt +21 -1
  67. src/Events/Custom_Tables/V1/Activation.php +38 -4
  68. src/Events/Custom_Tables/V1/Migration/Events.php +17 -4
  69. src/Events/Custom_Tables/V1/Migration/Process.php +15 -5
  70. src/Events/Custom_Tables/V1/Migration/Process_Worker.php +107 -11
  71. src/Events/Custom_Tables/V1/Migration/Reports/Site_Report.php +11 -12
  72. src/Events/Custom_Tables/V1/Migration/Strategies/Single_Event_Migration_Strategy.php +2 -2
  73. src/Events/Custom_Tables/V1/Models/Builder.php +26 -0
  74. src/Events/Custom_Tables/V1/Models/Model.php +2 -0
  75. src/Events/Custom_Tables/V1/Models/Occurrence.php +2 -2
  76. src/Events/Custom_Tables/V1/Models/Validators/Duration.php +13 -14
  77. src/Events/Custom_Tables/V1/Models/Validators/Occurrence_Duration.php +77 -0
  78. src/Events/Custom_Tables/V1/Provider.php +1 -0
  79. src/Events/Custom_Tables/V1/Repository/Events.php +16 -7
  80. src/Events/Custom_Tables/V1/Repository/Provider.php +1 -1
  81. src/Events/Custom_Tables/V1/Updates/Requests.php +6 -0
  82. src/Events/Custom_Tables/V1/WP_Query/Custom_Tables_Query.php +4 -1
  83. src/Events/Custom_Tables/V1/WP_Query/Modifiers/Events_Not_In_Series_Modifier.php +5 -0
  84. src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/migration-in-progress.php +1 -1
  85. src/Events/Custom_Tables/V1/admin-views/migration/upgrade-box.php +1 -1
  86. src/Tribe/Admin/Settings.php +3 -3
  87. src/Tribe/Aggregator/Record/Abstract.php +7 -1
  88. src/Tribe/Deactivation.php +6 -0
  89. src/Tribe/Editor/Compatibility.php +13 -4
  90. src/Tribe/Integrations/Divi/Service_Provider.php +73 -0
  91. src/Tribe/Integrations/Manager.php +14 -0
  92. src/Tribe/Integrations/WPML/Meta.php +10 -0
  93. src/Tribe/Linked_Posts/Chooser_Meta_Box.php +10 -4
  94. src/Tribe/Main.php +4 -5
  95. src/Tribe/Models/Post_Types/Event.php +6 -5
  96. src/Tribe/Plugin_Register.php +1 -1
  97. src/Tribe/Updater.php +13 -1
  98. src/Tribe/Views/V2/Query/Event_Query_Controller.php +3 -1
  99. src/Tribe/Views/V2/View.php +3 -2
  100. src/admin-views/aggregator/origins/csv.php +23 -0
  101. src/admin-views/aggregator/origins/limit.php +1 -1
  102. src/resources/css/aggregator-page.min.css +1 -1
  103. src/resources/css/views-full.min.css +1 -1
  104. src/resources/css/views-skeleton.min.css +1 -1
  105. src/resources/icons/tec-horns.svg +1 -0
  106. src/resources/images/icons/tec-horns.svg +4 -1
  107. src/resources/js/event-editor.js +134 -9
  108. src/resources/js/event-editor.min.js +1 -1
  109. src/resources/js/views/datepicker.js +10 -0
  110. src/resources/js/views/manager.js +19 -0
  111. src/views/single-event.php +10 -1
  112. the-events-calendar.php +1 -1
  113. vendor/autoload.php +1 -1
  114. vendor/composer/autoload_classmap.php +2 -0
  115. vendor/composer/autoload_real.php +4 -4
  116. vendor/composer/autoload_static.php +6 -4
  117. vendor/composer/installed.json +6 -6
  118. vendor/woocommerce/action-scheduler/action-scheduler.php +7 -7
  119. vendor/woocommerce/action-scheduler/changelog.txt +8 -0
  120. vendor/woocommerce/action-scheduler/classes/ActionScheduler_ActionFactory.php +132 -49
  121. vendor/woocommerce/action-scheduler/classes/ActionScheduler_AdminView.php +91 -1
  122. vendor/woocommerce/action-scheduler/classes/ActionScheduler_Exception.php +1 -1
  123. vendor/woocommerce/action-scheduler/classes/ActionScheduler_ListTable.php +15 -1
  124. vendor/woocommerce/action-scheduler/classes/ActionScheduler_QueueRunner.php +25 -6
  125. vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php +1 -1
  126. vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php +58 -0
  127. vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php +30 -2
  128. vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_Action.php +22 -1
  129. vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php +139 -10
  130. vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore.php +1 -1
  131. vendor/woocommerce/action-scheduler/functions.php +59 -53
  132. vendor/woocommerce/action-scheduler/readme.txt +10 -2
common/lang/tribe-common-de_DE.mo CHANGED
Binary file
common/src/Tribe/Context.php CHANGED
@@ -282,7 +282,23 @@ class Tribe__Context {
282
  }
283
 
284
  if ( ! empty( $post_or_type ) ) {
285
- $lookup = [ $_GET, $_POST, $_REQUEST ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
 
287
  $current_post = Tribe__Utils__Array::get_in_any( $lookup, 'post', get_post() );
288
 
282
  }
283
 
284
  if ( ! empty( $post_or_type ) ) {
285
+ $lookup = [];
286
+ // Prevent a slew of warnings every time we call this.
287
+ if ( isset( $_REQUEST ) ) {
288
+ $lookup[] = (array) $_REQUEST;
289
+ }
290
+
291
+ if ( isset( $_GET ) ) {
292
+ $lookup[] = (array) $_GET;
293
+ }
294
+
295
+ if ( isset( $_POST ) ) {
296
+ $lookup[] = (array) $_POST;
297
+ }
298
+
299
+ if ( empty( $lookup ) ) {
300
+ return false;
301
+ }
302
 
303
  $current_post = Tribe__Utils__Array::get_in_any( $lookup, 'post', get_post() );
304
 
common/src/Tribe/Cost_Utils.php CHANGED
@@ -111,7 +111,7 @@ class Tribe__Cost_Utils {
111
  is_numeric( $cost_with_period )
112
  && '0.00' === number_format( $cost_with_period, 2, '.', ',' )
113
  ) {
114
- return esc_html__( 'Free', 'the-events-calendar' );
115
  }
116
 
117
  return $cost;
111
  is_numeric( $cost_with_period )
112
  && '0.00' === number_format( $cost_with_period, 2, '.', ',' )
113
  ) {
114
+ return esc_html__( 'Free', 'tribe-common' );
115
  }
116
 
117
  return $cost;
common/src/Tribe/Customizer.php CHANGED
@@ -1049,11 +1049,11 @@ final class Tribe__Customizer {
1049
  $new_settings = [
1050
  'tribe-customizer-section-title' => [
1051
  'type' => 'html',
1052
- 'html' => '<h3>' . __( 'Customizer', 'the-events-calendar' ) . '</h3>',
1053
  ],
1054
  'tribe-customizer-link-description' => [
1055
  'type' => 'html',
1056
- 'html' => '<p class="contained">' . __( 'Adjust colors, fonts, and more with the WordPress Customizer.', 'the-events-calendar' ) . '</p>',
1057
  ],
1058
  'tribe-customizer-link' => [
1059
  'type' => 'html',
1049
  $new_settings = [
1050
  'tribe-customizer-section-title' => [
1051
  'type' => 'html',
1052
+ 'html' => '<h3>' . __( 'Customizer', 'tribe-common' ) . '</h3>',
1053
  ],
1054
  'tribe-customizer-link-description' => [
1055
  'type' => 'html',
1056
+ 'html' => '<p class="contained">' . __( 'Adjust colors, fonts, and more with the WordPress Customizer.', 'tribe-common' ) . '</p>',
1057
  ],
1058
  'tribe-customizer-link' => [
1059
  'type' => 'html',
common/src/Tribe/Main.php CHANGED
@@ -21,7 +21,7 @@ class Tribe__Main {
21
  const OPTIONNAME = 'tribe_events_calendar_options';
22
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
23
 
24
- const VERSION = '5.0.0.1';
25
 
26
  const FEED_URL = 'https://theeventscalendar.com/feed/';
27
 
@@ -412,12 +412,12 @@ class Tribe__Main {
412
  'monthNames' => $datepicker_months,
413
  'monthNamesShort' => $datepicker_months, // We deliberately use full month names here,
414
  'monthNamesMin' => array_values( Tribe__Date_Utils::get_localized_months_short() ),
415
- 'nextText' => esc_html__( 'Next', 'the-events-calendar' ),
416
- 'prevText' => esc_html__( 'Prev', 'the-events-calendar' ),
417
- 'currentText' => esc_html__( 'Today', 'the-events-calendar' ),
418
- 'closeText' => esc_html__( 'Done', 'the-events-calendar' ),
419
- 'today' => esc_html__( 'Today', 'the-events-calendar' ),
420
- 'clear' => esc_html__( 'Clear', 'the-events-calendar' ),
421
  ],
422
  ] );
423
  }
21
  const OPTIONNAME = 'tribe_events_calendar_options';
22
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
23
 
24
+ const VERSION = '5.0.1';
25
 
26
  const FEED_URL = 'https://theeventscalendar.com/feed/';
27
 
412
  'monthNames' => $datepicker_months,
413
  'monthNamesShort' => $datepicker_months, // We deliberately use full month names here,
414
  'monthNamesMin' => array_values( Tribe__Date_Utils::get_localized_months_short() ),
415
+ 'nextText' => esc_html__( 'Next', 'tribe-common' ),
416
+ 'prevText' => esc_html__( 'Prev', 'tribe-common' ),
417
+ 'currentText' => esc_html__( 'Today', 'tribe-common' ),
418
+ 'closeText' => esc_html__( 'Done', 'tribe-common' ),
419
+ 'today' => esc_html__( 'Today', 'tribe-common' ),
420
+ 'clear' => esc_html__( 'Clear', 'tribe-common' ),
421
  ],
422
  ] );
423
  }
common/src/Tribe/Repository.php CHANGED
@@ -2922,7 +2922,10 @@ abstract class Tribe__Repository
2922
  }
2923
 
2924
  foreach ( $this->updates as $key => $value ) {
2925
- if ( is_callable( $value ) ) {
 
 
 
2926
  $value = $value( $id, $key, $this );
2927
  }
2928
 
@@ -3725,4 +3728,13 @@ abstract class Tribe__Repository
3725
 
3726
  return $this;
3727
  }
 
 
 
 
 
 
 
 
 
3728
  }
2922
  }
2923
 
2924
  foreach ( $this->updates as $key => $value ) {
2925
+ if (
2926
+ $value instanceof Closure ||
2927
+ ( is_array( $value ) && is_callable( $value ) )
2928
+ ) {
2929
  $value = $value( $id, $key, $this );
2930
  }
2931
 
3728
 
3729
  return $this;
3730
  }
3731
+
3732
+ /**
3733
+ * {@inheritDoc}
3734
+ */
3735
+ public function get_last_sql(): ?string {
3736
+ return $this->last_built_query instanceof WP_Query ?
3737
+ $this->last_built_query->request
3738
+ : null;
3739
+ }
3740
  }
common/src/Tribe/Repository/Decorator.php CHANGED
@@ -685,4 +685,11 @@ abstract class Tribe__Repository__Decorator implements Tribe__Repository__Interf
685
 
686
  return $this;
687
  }
 
 
 
 
 
 
 
688
  }
685
 
686
  return $this;
687
  }
688
+
689
+ /**
690
+ * {@inheritDoc}
691
+ */
692
+ public function get_last_sql(): ?string {
693
+ return $this->decorated->get_last_sql();
694
+ }
695
  }
common/src/Tribe/Repository/Interface.php CHANGED
@@ -320,4 +320,13 @@ interface Tribe__Repository__Interface
320
  * @return Tribe__Repository__Interface $this The repository instance.
321
  */
322
  public function void_query( $void_query = true );
 
 
 
 
 
 
 
 
 
323
  }
320
  * @return Tribe__Repository__Interface $this The repository instance.
321
  */
322
  public function void_query( $void_query = true );
323
+
324
+ /**
325
+ * Returns the SQL code for the last query built and ran by the repository, if any.
326
+ *
327
+ * @since 5.0.1
328
+ *
329
+ * @return string|null The SQL code for the last query built and ran by the repository, if any.
330
+ */
331
+ public function get_last_sql(): ?string;
332
  }
common/src/Tribe/Utils/Array.php CHANGED
@@ -35,7 +35,7 @@ if ( ! class_exists( 'Tribe__Utils__Array' ) ) {
35
  // would likely lead to unexpected problems for whatever first set it.
36
  $error = sprintf(
37
  'Attempted to set $array[%1$s] but %2$s is already set and is not an array.',
38
- implode( $key, '][' ),
39
  $i
40
  );
41
 
35
  // would likely lead to unexpected problems for whatever first set it.
36
  $error = sprintf(
37
  'Attempted to set $array[%1$s] but %2$s is already set and is not an array.',
38
+ implode( '][', $key ),
39
  $i
40
  );
41
 
common/src/functions/utils.php CHANGED
@@ -144,7 +144,26 @@ if ( ! function_exists( 'tribe_get_request_var' ) ) {
144
  * @return mixed
145
  */
146
  function tribe_get_request_var( $var, $default = null ) {
147
- $unsafe = Tribe__Utils__Array::get_in_any( [ $_GET, $_POST, $_REQUEST ], $var, $default );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  return tribe_sanitize_deep( $unsafe );
149
  }
150
  }
@@ -1107,7 +1126,7 @@ if ( ! function_exists( 'tribe_sanitize_deep' ) ) {
1107
  return $value;
1108
  }
1109
  if ( is_string( $value ) ) {
1110
- $value = filter_var( $value, FILTER_UNSAFE_RAW );
1111
  return $value;
1112
  }
1113
  if ( is_int( $value ) ) {
144
  * @return mixed
145
  */
146
  function tribe_get_request_var( $var, $default = null ) {
147
+ $requests = [];
148
+
149
+ // Prevent a slew of warnings every time we call this.
150
+ if ( isset( $_REQUEST ) ) {
151
+ $requests[] = (array) $_REQUEST;
152
+ }
153
+
154
+ if ( isset( $_GET ) ) {
155
+ $requests[] = (array) $_GET;
156
+ }
157
+
158
+ if ( isset( $_POST ) ) {
159
+ $requests[] = (array) $_POST;
160
+ }
161
+
162
+ if ( empty( $requests ) ) {
163
+ return $default;
164
+ }
165
+
166
+ $unsafe = Tribe__Utils__Array::get_in_any( $requests, $var, $default );
167
  return tribe_sanitize_deep( $unsafe );
168
  }
169
  }
1126
  return $value;
1127
  }
1128
  if ( is_string( $value ) ) {
1129
+ $value = filter_var( $value, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES );
1130
  return $value;
1131
  }
1132
  if ( is_int( $value ) ) {
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit965fd73b9e6ec78a30b46dab36da57c0::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit9f9eb54d1069e52fd89a03767dfcaa06::getLoader();
common/vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit1f195f258f1d31ee18997503744f1f56::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit4ec4533f8663dfe1c619eea121fe969d::getLoader();
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit965fd73b9e6ec78a30b46dab36da57c0
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit965fd73b9e6ec78a30b46dab36da57c0
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit965fd73b9e6ec78a30b46dab36da57c0', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit965fd73b9e6ec78a30b46dab36da57c0', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit965fd73b9e6ec78a30b46dab36da57c0::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit9f9eb54d1069e52fd89a03767dfcaa06
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit9f9eb54d1069e52fd89a03767dfcaa06', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit9f9eb54d1069e52fd89a03767dfcaa06', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit9f9eb54d1069e52fd89a03767dfcaa06::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
common/vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit1f195f258f1d31ee18997503744f1f56 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit1f195f258f1d31ee18997503744f1f56 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit1f195f258f1d31ee18997503744f1f56', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit1f195f258f1d31ee18997503744f1f56', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit4ec4533f8663dfe1c619eea121fe969d {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit4ec4533f8663dfe1c619eea121fe969d', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit4ec4533f8663dfe1c619eea121fe969d', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
common/vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit965fd73b9e6ec78a30b46dab36da57c0
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -270,10 +270,10 @@ class ComposerStaticInit965fd73b9e6ec78a30b46dab36da57c0
270
  public static function getInitializer(ClassLoader $loader)
271
  {
272
  return \Closure::bind(function () use ($loader) {
273
- $loader->prefixLengthsPsr4 = ComposerStaticInit965fd73b9e6ec78a30b46dab36da57c0::$prefixLengthsPsr4;
274
- $loader->prefixDirsPsr4 = ComposerStaticInit965fd73b9e6ec78a30b46dab36da57c0::$prefixDirsPsr4;
275
- $loader->prefixesPsr0 = ComposerStaticInit965fd73b9e6ec78a30b46dab36da57c0::$prefixesPsr0;
276
- $loader->classMap = ComposerStaticInit965fd73b9e6ec78a30b46dab36da57c0::$classMap;
277
 
278
  }, null, ClassLoader::class);
279
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit9f9eb54d1069e52fd89a03767dfcaa06
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
270
  public static function getInitializer(ClassLoader $loader)
271
  {
272
  return \Closure::bind(function () use ($loader) {
273
+ $loader->prefixLengthsPsr4 = ComposerStaticInit9f9eb54d1069e52fd89a03767dfcaa06::$prefixLengthsPsr4;
274
+ $loader->prefixDirsPsr4 = ComposerStaticInit9f9eb54d1069e52fd89a03767dfcaa06::$prefixDirsPsr4;
275
+ $loader->prefixesPsr0 = ComposerStaticInit9f9eb54d1069e52fd89a03767dfcaa06::$prefixesPsr0;
276
+ $loader->classMap = ComposerStaticInit9f9eb54d1069e52fd89a03767dfcaa06::$classMap;
277
 
278
  }, null, ClassLoader::class);
279
  }
common/vendor/composer/installed.json CHANGED
@@ -223,20 +223,20 @@
223
  },
224
  {
225
  "name": "xrstf/composer-php52",
226
- "version": "v1.0.20",
227
- "version_normalized": "1.0.20.0",
228
  "source": {
229
  "type": "git",
230
  "url": "https://github.com/composer-php52/composer-php52.git",
231
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
232
  },
233
  "dist": {
234
  "type": "zip",
235
- "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
236
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
237
  "shasum": ""
238
  },
239
- "time": "2016-04-16T21:52:24+00:00",
240
  "type": "library",
241
  "extra": {
242
  "branch-alias": {
223
  },
224
  {
225
  "name": "xrstf/composer-php52",
226
+ "version": "v1.0.21",
227
+ "version_normalized": "1.0.21.0",
228
  "source": {
229
  "type": "git",
230
  "url": "https://github.com/composer-php52/composer-php52.git",
231
+ "reference": "670ac996f93792f8de0427605cfef342b3429ff3"
232
  },
233
  "dist": {
234
  "type": "zip",
235
+ "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/670ac996f93792f8de0427605cfef342b3429ff3",
236
+ "reference": "670ac996f93792f8de0427605cfef342b3429ff3",
237
  "shasum": ""
238
  },
239
+ "time": "2022-06-08T03:23:46+00:00",
240
  "type": "library",
241
  "extra": {
242
  "branch-alias": {
lang/the-events-calendar-bg_BG.mo CHANGED
Binary file
lang/the-events-calendar-ca.mo CHANGED
Binary file
lang/the-events-calendar-cs_CZ.mo CHANGED
Binary file
lang/the-events-calendar-da_DK.mo CHANGED
Binary file
lang/the-events-calendar-de_CH.mo CHANGED
Binary file
lang/the-events-calendar-de_DE.mo CHANGED
Binary file
lang/the-events-calendar-el.mo CHANGED
Binary file
lang/the-events-calendar-en_AU.mo CHANGED
Binary file
lang/the-events-calendar-en_CA.mo CHANGED
Binary file
lang/the-events-calendar-en_GB.mo CHANGED
Binary file
lang/the-events-calendar-en_NZ.mo CHANGED
Binary file
lang/the-events-calendar-en_ZA.mo CHANGED
Binary file
lang/the-events-calendar-es_AR.mo CHANGED
Binary file
lang/the-events-calendar-es_CO.mo CHANGED
Binary file
lang/the-events-calendar-es_DO.mo CHANGED
Binary file
lang/the-events-calendar-es_EC.mo CHANGED
Binary file
lang/the-events-calendar-es_ES.mo CHANGED
Binary file
lang/the-events-calendar-es_MX.mo CHANGED
Binary file
lang/the-events-calendar-es_VE.mo CHANGED
Binary file
lang/the-events-calendar-et.mo CHANGED
Binary file
lang/the-events-calendar-eu.mo CHANGED
Binary file
lang/the-events-calendar-fi.mo CHANGED
Binary file
lang/the-events-calendar-fr_CA.mo CHANGED
Binary file
lang/the-events-calendar-fr_FR.mo CHANGED
Binary file
lang/the-events-calendar-gl_ES.mo CHANGED
Binary file
lang/the-events-calendar-he_IL.mo CHANGED
Binary file
lang/the-events-calendar-hr.mo CHANGED
Binary file
lang/the-events-calendar-hu_HU.mo CHANGED
Binary file
lang/the-events-calendar-it_IT.mo CHANGED
Binary file
lang/the-events-calendar-ja.mo CHANGED
Binary file
lang/the-events-calendar-ko_KR.mo CHANGED
Binary file
lang/the-events-calendar-lt_LT.mo CHANGED
Binary file
lang/the-events-calendar-nb_NO.mo CHANGED
Binary file
lang/the-events-calendar-nl_BE.mo CHANGED
Binary file
lang/the-events-calendar-nl_NL.mo CHANGED
Binary file
lang/the-events-calendar-nn_NO.mo CHANGED
Binary file
lang/the-events-calendar-pl_PL.mo CHANGED
Binary file
lang/the-events-calendar-pt_BR.mo CHANGED
Binary file
lang/the-events-calendar-pt_PT.mo CHANGED
Binary file
lang/the-events-calendar-ro_RO.mo CHANGED
Binary file
lang/the-events-calendar-ru_RU.mo CHANGED
Binary file
lang/the-events-calendar-sk_SK.mo CHANGED
Binary file
lang/the-events-calendar-sl_SI.mo CHANGED
Binary file
lang/the-events-calendar-sq.mo CHANGED
Binary file
lang/the-events-calendar-sv_SE.mo CHANGED
Binary file
lang/the-events-calendar-tr_TR.mo CHANGED
Binary file
lang/the-events-calendar-uk.mo CHANGED
Binary file
lang/the-events-calendar-zh_CN.mo CHANGED
Binary file
lang/the-events-calendar.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the The Events Calendar package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: The Events Calendar 6.0.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
- "POT-Creation-Date: 2022-08-25 17:54:43+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "PO-Revision-Date: 2022-08-25 17:54\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
@@ -477,7 +477,7 @@ msgstr ""
477
  msgid "%s"
478
  msgstr ""
479
 
480
- #: src/Tribe/Admin/Bar/Default_Configurator.php:47 src/Tribe/Main.php:3613
481
  #: src/Tribe/Views/V2/Views/Widgets/Widget_View.php:61
482
  #: src/admin-views/tribe-options-upgrade.php:20
483
  msgid "View Calendar"
@@ -488,7 +488,7 @@ msgid "Add %s"
488
  msgstr ""
489
 
490
  #: src/Tribe/Admin/Bar/Default_Configurator.php:64
491
- #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:210 src/Tribe/Main.php:2063
492
  #: src/Tribe/Organizer.php:93 src/Tribe/Organizer.php:801
493
  #: src/Tribe/Venue.php:129 src/Tribe/Venue.php:915
494
  msgid "Edit %s"
@@ -501,7 +501,7 @@ msgid "Import"
501
  msgstr ""
502
 
503
  #: src/Tribe/Admin/Bar/Default_Configurator.php:91
504
- #: src/Tribe/Admin/Settings.php:166 src/Tribe/Main.php:3661
505
  msgid "Settings"
506
  msgstr ""
507
 
@@ -556,7 +556,7 @@ msgid ""
556
  msgstr ""
557
 
558
  #: src/Tribe/Admin/Notice/Timezones.php:151
559
- #: src/Tribe/Editor/Compatibility.php:129 src/Tribe/Google/Maps_API_Key.php:77
560
  msgid "Read more"
561
  msgstr ""
562
 
@@ -642,7 +642,7 @@ msgid ""
642
  "refresh and try again."
643
  msgstr ""
644
 
645
- #: src/Tribe/Admin_List.php:299 src/Tribe/Main.php:2115
646
  msgid "%s Categories"
647
  msgstr ""
648
 
@@ -2589,15 +2589,15 @@ msgstr ""
2589
  msgid "Add Button Text"
2590
  msgstr ""
2591
 
2592
- #: src/Tribe/Editor/Compatibility.php:135
2593
  msgid "Activate Block Editor for Events"
2594
  msgstr ""
2595
 
2596
- #: src/Tribe/Editor/Compatibility.php:136
2597
  msgid "Enable the Gutenberg block editor interface for creating events."
2598
  msgstr ""
2599
 
2600
- #: src/Tribe/Editor/Compatibility.php:143
2601
  msgid "Hidden Blocks Editor Config"
2602
  msgstr ""
2603
 
@@ -3142,11 +3142,11 @@ msgstr ""
3142
  msgid "%s:"
3143
  msgstr ""
3144
 
3145
- #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:257
3146
  msgid "Add another %s"
3147
  msgstr ""
3148
 
3149
- #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:280
3150
  msgid "Delete this"
3151
  msgstr ""
3152
 
@@ -3238,205 +3238,205 @@ msgctxt ""
3238
  msgid "Create or Find %s"
3239
  msgstr ""
3240
 
3241
- #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 6.0.0) #-#-#-#-#
3242
  #. Plugin Name of the plugin/theme
3243
- #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 6.0.0) #-#-#-#-#
3244
  #. Author of the plugin/theme
3245
- #: src/Tribe/Main.php:953 src/Tribe/Main.php:1482 src/Tribe/Privacy.php:29
3246
  #: src/admin-views/admin-welcome-message.php:29
3247
  #: src/functions/template-tags/general.php:1413 the-events-calendar.php:55
3248
  msgid "The Events Calendar"
3249
  msgstr ""
3250
 
3251
- #: src/Tribe/Main.php:960
3252
  msgid "month"
3253
  msgstr ""
3254
 
3255
- #: src/Tribe/Main.php:961
3256
  msgid "list"
3257
  msgstr ""
3258
 
3259
- #: src/Tribe/Main.php:962
3260
  msgid "upcoming"
3261
  msgstr ""
3262
 
3263
- #: src/Tribe/Main.php:963
3264
  msgid "past"
3265
  msgstr ""
3266
 
3267
- #: src/Tribe/Main.php:964
3268
  msgid "day"
3269
  msgstr ""
3270
 
3271
- #: src/Tribe/Main.php:965
3272
  msgid "today"
3273
  msgstr ""
3274
 
3275
- #: src/Tribe/Main.php:966
3276
  msgctxt "featured events slug"
3277
  msgid "featured"
3278
  msgstr ""
3279
 
3280
- #: src/Tribe/Main.php:967
3281
  msgctxt "all events slug"
3282
  msgid "all"
3283
  msgstr ""
3284
 
3285
- #: src/Tribe/Main.php:991
3286
  msgid "Initializing Tribe Events on %s"
3287
  msgstr ""
3288
 
3289
- #: src/Tribe/Main.php:1063 src/Tribe/Main.php:1065
3290
  msgid "Welcome to The Events Calendar!"
3291
  msgstr ""
3292
 
3293
- #: src/Tribe/Main.php:1214
3294
  msgid ""
3295
  "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
3296
  "show its calendar in place of the page."
3297
  msgstr ""
3298
 
3299
- #: src/Tribe/Main.php:1217
3300
  msgid "Ask the site administrator to edit the %s slug"
3301
  msgstr ""
3302
 
3303
- #: src/Tribe/Main.php:1219
3304
  msgid "Edit the %s slug"
3305
  msgstr ""
3306
 
3307
- #: src/Tribe/Main.php:1223
3308
  msgid " ask the site administrator to set a different Events URL slug."
3309
  msgstr ""
3310
 
3311
- #: src/Tribe/Main.php:1227
3312
  msgid "edit Events settings."
3313
  msgstr ""
3314
 
3315
- #: src/Tribe/Main.php:1230
3316
  msgid "%1$s or %2$s"
3317
  msgstr ""
3318
 
3319
- #: src/Tribe/Main.php:1318
3320
  msgid "Upgrade your calendar views"
3321
  msgstr ""
3322
 
3323
- #: src/Tribe/Main.php:1343
3324
  msgid "Upgrade"
3325
  msgstr ""
3326
 
3327
- #: src/Tribe/Main.php:1402
3328
  msgid "New User Primer"
3329
  msgstr ""
3330
 
3331
- #: src/Tribe/Main.php:1404
3332
  msgid ""
3333
  "We are committed to helping make your calendar spectacular and have a wealth "
3334
  "of resources available, including a handy %s to get your calendar up and "
3335
  "running."
3336
  msgstr ""
3337
 
3338
- #: src/Tribe/Main.php:1415
3339
  msgid "Support for The Events Calendar"
3340
  msgstr ""
3341
 
3342
- #: src/Tribe/Main.php:1421
3343
  msgid ""
3344
  "%s: A thorough walkthrough of The Events Calendar and the settings that are "
3345
  "available to you."
3346
  msgstr ""
3347
 
3348
- #: src/Tribe/Main.php:1425
3349
  msgid "Settings overview"
3350
  msgstr ""
3351
 
3352
- #: src/Tribe/Main.php:1429
3353
  msgid ""
3354
  "%s: A complete look at the features you can expect to see right out of the "
3355
  "box as well as how to use them."
3356
  msgstr ""
3357
 
3358
- #: src/Tribe/Main.php:1433
3359
  msgid "Features overview"
3360
  msgstr ""
3361
 
3362
- #: src/Tribe/Main.php:1437
3363
  msgid ""
3364
  "%s: Our most comprehensive outline for customizing the calendar to suit your "
3365
  "needs, including custom layouts and styles."
3366
  msgstr ""
3367
 
3368
- #: src/Tribe/Main.php:1441
3369
  msgid "Themer's Guide"
3370
  msgstr ""
3371
 
3372
- #: src/Tribe/Main.php:1445
3373
  msgid ""
3374
  "%s: An overview of the default templates and styles that are included in the "
3375
  "plugin, as well as how to change them."
3376
  msgstr ""
3377
 
3378
- #: src/Tribe/Main.php:1449
3379
  msgid "Using stylesheets and page templates"
3380
  msgstr ""
3381
 
3382
- #: src/Tribe/Main.php:1453
3383
  msgid ""
3384
  "%s: Do you see an issue with your calendar? Go here first to find where it’s "
3385
  "coming from and how to fix it."
3386
  msgstr ""
3387
 
3388
- #: src/Tribe/Main.php:1457
3389
  msgid "Troubleshooting common problems"
3390
  msgstr ""
3391
 
3392
- #: src/Tribe/Main.php:1461
3393
  msgid ""
3394
  "%s: Code and guides for customizing your calendar in useful and interesting "
3395
  "ways."
3396
  msgstr ""
3397
 
3398
- #: src/Tribe/Main.php:1465
3399
  msgid "Customizing the Events plugins"
3400
  msgstr ""
3401
 
3402
- #: src/Tribe/Main.php:1483
3403
  msgid "Events Tickets"
3404
  msgstr ""
3405
 
3406
- #: src/Tribe/Main.php:1484
3407
  msgid ""
3408
  "If you have tried the above steps and are still having trouble, you can post "
3409
  "a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
3410
  "monitors these forums once a week and would be happy to assist you there. "
3411
  msgstr ""
3412
 
3413
- #: src/Tribe/Main.php:1486 src/Tribe/Main.php:1494
3414
  msgid "premium support on our website"
3415
  msgstr ""
3416
 
3417
- #: src/Tribe/Main.php:1487
3418
  msgid ""
3419
  "<strong>Looking for more immediate support?</strong> We offer %s with the "
3420
  "purchase of any of our premium plugins. Pick up a license and you can post "
3421
  "there directly and expect a response within 24-48 hours during weekdays"
3422
  msgstr ""
3423
 
3424
- #: src/Tribe/Main.php:1491
3425
  msgid "open-source forum on WordPress.org"
3426
  msgstr ""
3427
 
3428
- #: src/Tribe/Main.php:1492
3429
  msgid ""
3430
  "If you have tried the above steps and are still having trouble, you can post "
3431
  "a new thread to our %s. Our support staff monitors these forums once a week "
3432
  "and would be happy to assist you there."
3433
  msgstr ""
3434
 
3435
- #: src/Tribe/Main.php:1495
3436
  msgid "Events Calendar PRO"
3437
  msgstr ""
3438
 
3439
- #: src/Tribe/Main.php:1496
3440
  msgid ""
3441
  "<strong>Looking for more immediate support?</strong> We offer %1$s with the "
3442
  "purchase of any of our premium plugins (like %2$s). Pick up a license and "
@@ -3444,110 +3444,110 @@ msgid ""
3444
  "weekdays."
3445
  msgstr ""
3446
 
3447
- #: src/Tribe/Main.php:1500
3448
  msgid "post a thread"
3449
  msgstr ""
3450
 
3451
- #: src/Tribe/Main.php:1501
3452
  msgid ""
3453
  "If you have a valid license for one of our paid plugins, you can %s in our "
3454
  "premium support forums. Our support team monitors the forums and will "
3455
  "respond to your thread within 24-48 hours (during the week)."
3456
  msgstr ""
3457
 
3458
- #: src/Tribe/Main.php:1544 src/functions/template-tags/general.php:127
3459
  msgid "Events"
3460
  msgstr ""
3461
 
3462
- #: src/Tribe/Main.php:1552 src/admin-views/aggregator/tabs/import-form.php:229
3463
  #: src/admin-views/aggregator/tabs/import-form.php:241
3464
  #: src/functions/template-tags/general.php:71
3465
  msgid "Event"
3466
  msgstr ""
3467
 
3468
- #: src/Tribe/Main.php:1723
3469
  msgid ""
3470
  "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
3471
  "your WordPress install."
3472
  msgstr ""
3473
 
3474
- #: src/Tribe/Main.php:1726
3475
  msgid ""
3476
  "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
3477
  "about moving you to a newer version of PHP."
3478
  msgstr ""
3479
 
3480
- #: src/Tribe/Main.php:1761
3481
  msgid ""
3482
  "To continue using The Events Calendar, please install the latest version of"
3483
  msgstr ""
3484
 
3485
- #: src/Tribe/Main.php:1763 src/Tribe/Main.php:1764
3486
  msgid "Event Tickets"
3487
  msgstr ""
3488
 
3489
- #: src/Tribe/Main.php:1790
3490
  msgid ""
3491
  "It appears as if the tribe-common libraries cannot be found! The directory "
3492
  "should be in the \"common/\" directory in the events calendar plugin."
3493
  msgstr ""
3494
 
3495
- #: src/Tribe/Main.php:2027 src/Tribe/Main.php:2500
3496
  msgid "category"
3497
  msgstr ""
3498
 
3499
- #: src/Tribe/Main.php:2041 src/Tribe/Main.php:2499
3500
  msgid "tag"
3501
  msgstr ""
3502
 
3503
- #: src/Tribe/Main.php:2058 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:127
3504
  msgid "Add New"
3505
  msgstr ""
3506
 
3507
- #: src/Tribe/Main.php:2060 src/Tribe/Main.php:2267 src/Tribe/Main.php:2268
3508
  #: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:128
3509
  msgid "Add New %s"
3510
  msgstr ""
3511
 
3512
- #: src/Tribe/Main.php:2066 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:130
3513
  msgid "New %s"
3514
  msgstr ""
3515
 
3516
- #: src/Tribe/Main.php:2069 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:131
3517
  msgid "View %s"
3518
  msgstr ""
3519
 
3520
- #: src/Tribe/Main.php:2072 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:132
3521
  msgid "Search %s"
3522
  msgstr ""
3523
 
3524
- #: src/Tribe/Main.php:2075 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:133
3525
  msgid "No %s found"
3526
  msgstr ""
3527
 
3528
- #: src/Tribe/Main.php:2078 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:134
3529
  msgid "No %s found in Trash"
3530
  msgstr ""
3531
 
3532
- #: src/Tribe/Main.php:2081 src/Tribe/Main.php:2220 src/Tribe/Main.php:2242
3533
  #: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:135
3534
  msgid "%s published."
3535
  msgstr ""
3536
 
3537
- #: src/Tribe/Main.php:2084 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:136
3538
  msgid "%s published privately."
3539
  msgstr ""
3540
 
3541
- #: src/Tribe/Main.php:2087 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:137
3542
  msgid "%s reverted to draft."
3543
  msgstr ""
3544
 
3545
- #: src/Tribe/Main.php:2090 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:138
3546
  msgid "%s scheduled."
3547
  msgstr ""
3548
 
3549
- #: src/Tribe/Main.php:2093 src/Tribe/Main.php:2176 src/Tribe/Main.php:2212
3550
- #: src/Tribe/Main.php:2215 src/Tribe/Main.php:2234 src/Tribe/Main.php:2237
3551
  #: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:139
3552
  msgid "%s updated."
3553
  msgstr ""
@@ -3555,185 +3555,185 @@ msgstr ""
3555
  #. Translators: %s: Event singular.
3556
  #. Translators: %s: Organizer singular.
3557
  #. Translators: %s: Venue singular.
3558
- #: src/Tribe/Main.php:2097 src/Tribe/Organizer.php:106 src/Tribe/Venue.php:142
3559
  msgid "%s Link"
3560
  msgstr ""
3561
 
3562
  #. Translators: %s: Event singular.
3563
  #. Translators: %s: Organizer singular.
3564
  #. Translators: %s: Venue singular.
3565
- #: src/Tribe/Main.php:2101 src/Tribe/Organizer.php:110 src/Tribe/Venue.php:146
3566
  msgid "A link to a particular %s."
3567
  msgstr ""
3568
 
3569
- #: src/Tribe/Main.php:2118
3570
  msgid "%s Category"
3571
  msgstr ""
3572
 
3573
- #: src/Tribe/Main.php:2121
3574
  msgid "Search %s Categories"
3575
  msgstr ""
3576
 
3577
- #: src/Tribe/Main.php:2124
3578
  msgid "All %s Categories"
3579
  msgstr ""
3580
 
3581
- #: src/Tribe/Main.php:2127
3582
  msgid "Parent %s Category"
3583
  msgstr ""
3584
 
3585
- #: src/Tribe/Main.php:2130
3586
  msgid "Parent %s Category:"
3587
  msgstr ""
3588
 
3589
- #: src/Tribe/Main.php:2133
3590
  msgid "Edit %s Category"
3591
  msgstr ""
3592
 
3593
- #: src/Tribe/Main.php:2136
3594
  msgid "Update %s Category"
3595
  msgstr ""
3596
 
3597
- #: src/Tribe/Main.php:2139
3598
  msgid "Add New %s Category"
3599
  msgstr ""
3600
 
3601
- #: src/Tribe/Main.php:2142
3602
  msgid "New %s Category Name"
3603
  msgstr ""
3604
 
3605
  #. Translators: %s: Event singular.
3606
- #: src/Tribe/Main.php:2146
3607
  msgid "%s Category Link"
3608
  msgstr ""
3609
 
3610
  #. Translators: %s: Event singular.
3611
- #: src/Tribe/Main.php:2150
3612
  msgid "A link to a particular %s category."
3613
  msgstr ""
3614
 
3615
- #: src/Tribe/Main.php:2169
3616
  msgid "%1$s updated. %2$sView %1$s%3$s"
3617
  msgstr ""
3618
 
3619
- #: src/Tribe/Main.php:2174 src/Tribe/Main.php:2213 src/Tribe/Main.php:2235
3620
  msgid "Custom field updated."
3621
  msgstr ""
3622
 
3623
- #: src/Tribe/Main.php:2175 src/Tribe/Main.php:2214 src/Tribe/Main.php:2236
3624
  msgid "Custom field deleted."
3625
  msgstr ""
3626
 
3627
  #. translators: %s: date and time of the revision
3628
- #: src/Tribe/Main.php:2179 src/Tribe/Main.php:2218
3629
  msgid "%1$s restored to revision from %2$s"
3630
  msgstr ""
3631
 
3632
- #: src/Tribe/Main.php:2182
3633
  msgid "%1$s published. %2$sView %3$s"
3634
  msgstr ""
3635
 
3636
- #: src/Tribe/Main.php:2187 src/Tribe/Main.php:2221 src/Tribe/Main.php:2243
3637
  msgid "%s saved."
3638
  msgstr ""
3639
 
3640
- #: src/Tribe/Main.php:2189
3641
  msgid "%1$s submitted. %2$sPreview %3$s"
3642
  msgstr ""
3643
 
3644
- #: src/Tribe/Main.php:2195
3645
  msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
3646
  msgstr ""
3647
 
3648
  #. translators: Publish box date format, see http://php.net/date
3649
- #: src/Tribe/Main.php:2198 src/Tribe/Main.php:2227 src/Tribe/Main.php:2249
3650
  msgid "M j, Y @ G:i"
3651
  msgstr ""
3652
 
3653
- #: src/Tribe/Main.php:2203
3654
  msgid "%1$s draft updated. %2$sPreview %3$s"
3655
  msgstr ""
3656
 
3657
- #: src/Tribe/Main.php:2222 src/Tribe/Main.php:2244
3658
  msgid "%s submitted."
3659
  msgstr ""
3660
 
3661
- #: src/Tribe/Main.php:2224 src/Tribe/Main.php:2246
3662
  msgid "%1$s scheduled for: %2$s."
3663
  msgstr ""
3664
 
3665
- #: src/Tribe/Main.php:2229 src/Tribe/Main.php:2252
3666
  msgid "%s draft updated."
3667
  msgstr ""
3668
 
3669
  #. translators: %s: date and time of the revision
3670
- #: src/Tribe/Main.php:2240
3671
  msgid "%s restored to revision from %s"
3672
  msgstr ""
3673
 
3674
- #: src/Tribe/Main.php:2301
3675
  msgid ""
3676
  "Without a defined location your event will not display a %sGoogle Rich "
3677
  "Snippet%s on the search results."
3678
  msgstr ""
3679
 
3680
- #: src/Tribe/Main.php:2501
3681
  msgid "page"
3682
  msgstr ""
3683
 
3684
- #: src/Tribe/Main.php:2502 src/functions/template-tags/general.php:99
3685
  msgid "event"
3686
  msgstr ""
3687
 
3688
- #: src/Tribe/Main.php:2503 src/functions/template-tags/general.php:155
3689
  msgid "events"
3690
  msgstr ""
3691
 
3692
- #: src/Tribe/Main.php:2504
3693
  msgid "all"
3694
  msgstr ""
3695
 
3696
- #: src/Tribe/Main.php:3262 src/Tribe/Main.php:3301
3697
  #: src/functions/template-tags/deprecated.php:22
3698
  #: src/functions/template-tags/deprecated.php:44
3699
  msgid "Date out of range."
3700
  msgstr ""
3701
 
3702
- #: src/Tribe/Main.php:3331
3703
  msgid "%s Options"
3704
  msgstr ""
3705
 
3706
- #: src/Tribe/Main.php:3503
3707
  msgid "Support"
3708
  msgstr ""
3709
 
3710
- #: src/Tribe/Main.php:3506
3711
  msgid "View All Add-Ons"
3712
  msgstr ""
3713
 
3714
- #: src/Tribe/Main.php:3528
3715
  msgid "News from The Events Calendar"
3716
  msgstr ""
3717
 
3718
- #: src/Tribe/Main.php:3555
3719
  msgid "Additional Functionality"
3720
  msgstr ""
3721
 
3722
- #: src/Tribe/Main.php:3560
3723
  msgid ""
3724
  "Looking for additional functionality including recurring events, ticket "
3725
  "sales, publicly submitted events, new views and more?"
3726
  msgstr ""
3727
 
3728
- #: src/Tribe/Main.php:3561
3729
  msgid "Check out the %savailable add-ons%s."
3730
  msgstr ""
3731
 
3732
- #: src/Tribe/Main.php:3662
3733
  msgid "Calendar"
3734
  msgstr ""
3735
 
3736
- #: src/Tribe/Main.php:3699
3737
  msgid "Once Every 30 Mins"
3738
  msgstr ""
3739
 
@@ -5551,7 +5551,7 @@ msgctxt "day_view"
5551
  msgid "%1$s for %2$s"
5552
  msgstr ""
5553
 
5554
- #: src/Tribe/Views/V2/View.php:2056 src/views/v2/day/event/date/featured.php:27
5555
  #: src/views/v2/day/event/date/featured.php:32
5556
  #: src/views/v2/latest-past/event/date/featured.php:27
5557
  #: src/views/v2/latest-past/event/date/featured.php:32
@@ -5777,12 +5777,14 @@ msgstr ""
5777
 
5778
  #: src/admin-views/admin-welcome-message.php:14
5779
  #: src/admin-views/admin-welcome-message.php:20
5780
- #: src/admin-views/updates/6.0.0.php:17
5781
  msgid "Shapes and lines for visual interest"
5782
  msgstr ""
5783
 
5784
  #: src/admin-views/admin-welcome-message.php:27
5785
- #: src/admin-views/updates/6.0.0.php:24
 
 
5786
  msgid "The Events Calendar logo"
5787
  msgstr ""
5788
 
@@ -5861,7 +5863,7 @@ msgstr ""
5861
  #: src/admin-views/admin-welcome-message.php:73
5862
  #: src/admin-views/aggregator/banners/eventbrite-upsell.php:17
5863
  #: src/admin-views/notices/update-6-0-0.php:29
5864
- #: src/admin-views/updates/6.0.0.php:64 src/admin-views/updates/6.0.0.php:98
5865
  msgid "Learn more"
5866
  msgstr ""
5867
 
@@ -6010,36 +6012,36 @@ msgid ""
6010
  "event files."
6011
  msgstr ""
6012
 
6013
- #: src/admin-views/aggregator/origins/csv.php:39
6014
  #: src/admin-views/aggregator/origins/ics.php:5
6015
  msgid "Choose File:"
6016
  msgstr ""
6017
 
6018
- #: src/admin-views/aggregator/origins/csv.php:40
6019
  msgid "Choose a CSV file"
6020
  msgstr ""
6021
 
6022
- #: src/admin-views/aggregator/origins/csv.php:41
6023
  msgid ""
6024
  "Select your .CSV file from the WordPress media library. You may need to "
6025
  "first upload the file from your computer to the library."
6026
  msgstr ""
6027
 
6028
- #: src/admin-views/aggregator/origins/csv.php:42
6029
  #: src/admin-views/aggregator/origins/ics.php:9
6030
  msgid "Upload"
6031
  msgstr ""
6032
 
6033
- #: src/admin-views/aggregator/origins/csv.php:43
6034
  msgid "Upload a CSV File"
6035
  msgstr ""
6036
 
6037
- #: src/admin-views/aggregator/origins/csv.php:68
6038
  #: src/admin-views/aggregator/origins/ics.php:35
6039
  msgid "No file chosen"
6040
  msgstr ""
6041
 
6042
- #: src/admin-views/aggregator/origins/csv.php:76
6043
  #: src/admin-views/aggregator/origins/eventbrite.php:219
6044
  #: src/admin-views/aggregator/origins/gcal.php:123
6045
  #: src/admin-views/aggregator/origins/ical.php:119
@@ -6050,6 +6052,18 @@ msgstr ""
6050
  msgid "Preview"
6051
  msgstr ""
6052
 
 
 
 
 
 
 
 
 
 
 
 
 
6053
  #: src/admin-views/aggregator/origins/eventbrite.php:6
6054
  #: src/admin-views/aggregator/origins/gcal.php:5
6055
  #: src/admin-views/aggregator/origins/ical.php:5
@@ -7195,7 +7209,7 @@ msgid "contact support"
7195
  msgstr ""
7196
 
7197
  #: src/admin-views/notices/legacy-views-updated.php:18
7198
- #: src/admin-views/updates/6.0.0.php:97
7199
  msgid "View your calendar"
7200
  msgstr ""
7201
 
@@ -8050,150 +8064,159 @@ msgstr ""
8050
  msgid "Step 2 of 2"
8051
  msgstr ""
8052
 
8053
- #: src/admin-views/updates/6.0.0.php:28
8054
  msgid "Welcome to"
8055
  msgstr ""
8056
 
8057
- #: src/admin-views/updates/6.0.0.php:29
8058
  msgid "The Events Calendar 6.0"
8059
  msgstr ""
8060
 
8061
- #: src/admin-views/updates/6.0.0.php:39
 
 
 
 
8062
  msgid "What’s New in The Events Calendar 6.0"
8063
  msgstr ""
8064
 
8065
- #: src/admin-views/updates/6.0.0.php:42
8066
  msgid "Video describing features on The Events Calendar 6.0"
8067
  msgstr ""
8068
 
8069
- #: src/admin-views/updates/6.0.0.php:48
8070
  msgid ""
8071
  "We’re excited to bring all of our users faster event creation and editing in "
8072
  "the WordPress dashboard as well as quicker loading times for your website’s "
8073
  "calendar."
8074
  msgstr ""
8075
 
8076
- #: src/admin-views/updates/6.0.0.php:49
8077
  msgid ""
8078
  "Watch the video or check out the <a href=\"%s\">release notes</a> to learn "
8079
  "more."
8080
  msgstr ""
8081
 
8082
- #: src/admin-views/updates/6.0.0.php:51
8083
  msgid ""
8084
  "Be sure to <a href=\"%s\">migrate</a> to the new data storage system so you "
8085
  "can take advantage of the improved performance."
8086
  msgstr ""
8087
 
8088
- #: src/admin-views/updates/6.0.0.php:57
8089
  msgid "Lightening bolt icon"
8090
  msgstr ""
8091
 
8092
- #: src/admin-views/updates/6.0.0.php:58
8093
  msgid "New Features for Events Calendar Pro"
8094
  msgstr ""
8095
 
8096
- #: src/admin-views/updates/6.0.0.php:62
8097
  msgid ""
8098
  "A game-changing ✨new✨ post type, Series, allows you to group and display any "
8099
  "single or recurring events together like never before."
8100
  msgstr ""
8101
 
8102
- #: src/admin-views/updates/6.0.0.php:63
8103
  msgid ""
8104
  "With Series, you can edit an individual occurrence of a recurring event "
8105
  "without disconnecting it from the others, allowing you to build complex "
8106
  "event Series with different venues, images, and more."
8107
  msgstr ""
8108
 
8109
- #: src/admin-views/updates/6.0.0.php:64
8110
  msgid "Watch a video"
8111
  msgstr ""
8112
 
8113
- #: src/admin-views/updates/6.0.0.php:64
8114
  msgid "See a demo"
8115
  msgstr ""
8116
 
8117
- #: src/admin-views/updates/6.0.0.php:68 src/admin-views/updates/6.0.0.php:73
8118
- #: src/admin-views/updates/6.0.0.php:77 src/admin-views/updates/6.0.0.php:83
8119
  msgid "Event series graphic"
8120
  msgstr ""
8121
 
8122
- #: src/admin-views/updates/6.0.0.php:74
8123
  msgid "Advanced editing options"
8124
  msgstr ""
8125
 
8126
- #: src/admin-views/updates/6.0.0.php:74
8127
  msgid ""
8128
  "for recurring events give you more possibilities for complex event "
8129
  "management."
8130
  msgstr ""
8131
 
8132
- #: src/admin-views/updates/6.0.0.php:78
8133
  msgid "With the Duplicate Event Tool"
8134
  msgstr ""
8135
 
8136
- #: src/admin-views/updates/6.0.0.php:78
8137
  msgid ""
8138
  "you can replicate and modify any events in seconds, making event creation a "
8139
  "breeze."
8140
  msgstr ""
8141
 
8142
- #: src/admin-views/updates/6.0.0.php:84
8143
  msgid ""
8144
  "Upgrade to <a href=\"%s\">Events Calendar Pro</a> to unlock these features."
8145
  msgstr ""
8146
 
8147
- #: src/admin-views/updates/6.0.0.php:93
8148
  msgid "Light bulb icon"
8149
  msgstr ""
8150
 
8151
- #: src/admin-views/updates/6.0.0.php:94
8152
  msgid "Legacy Views"
8153
  msgstr ""
8154
 
8155
- #: src/admin-views/updates/6.0.0.php:96
8156
  msgid ""
8157
  "We have fully removed the legacy views from The Events Calendar 6.0. Your "
8158
  "views have been automatically updated."
8159
  msgstr ""
8160
 
8161
- #: src/admin-views/updates/6.0.0.php:101
8162
  msgid "Resources"
8163
  msgstr ""
8164
 
8165
- #: src/admin-views/updates/6.0.0.php:103
8166
  msgid "Migrating Your Site"
8167
  msgstr ""
8168
 
8169
- #: src/admin-views/updates/6.0.0.php:104
8170
  msgid "Event Series"
8171
  msgstr ""
8172
 
8173
- #: src/admin-views/updates/6.0.0.php:105
8174
  msgid "Creating Recurring Events"
8175
  msgstr ""
8176
 
8177
- #: src/admin-views/updates/6.0.0.php:106
8178
  msgid "Duplicating Events"
8179
  msgstr ""
8180
 
8181
- #: src/admin-views/updates/6.0.0.php:107
8182
  msgid "Recurring Events & Tickets"
8183
  msgstr ""
8184
 
8185
- #: src/admin-views/updates/6.0.0.php:108
8186
  msgid "Community Events & Series"
8187
  msgstr ""
8188
 
8189
- #: src/admin-views/updates/6.0.0.php:109
8190
  msgid "Release Notes"
8191
  msgstr ""
8192
 
8193
- #: src/admin-views/updates/6.0.0.php:110
8194
  msgid "Get Support"
8195
  msgstr ""
8196
 
 
 
 
 
 
8197
  #: src/admin-views/venue-meta-box.php:265
8198
  msgid "%s Name can not be empty"
8199
  msgstr ""
@@ -8353,13 +8376,13 @@ msgstr ""
8353
  msgid "In a location"
8354
  msgstr ""
8355
 
8356
- #: src/views/single-event/back-link.php:18 src/views/single-event.php:69
8357
  msgctxt "%s Events plural label"
8358
  msgid "All %s"
8359
  msgstr ""
8360
 
8361
- #: src/views/single-event/footer.php:21 src/views/single-event.php:87
8362
- #: src/views/single-event.php:121
8363
  msgid "%s Navigation"
8364
  msgstr ""
8365
 
2
  # This file is distributed under the same license as the The Events Calendar package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: The Events Calendar 6.0.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
+ "POT-Creation-Date: 2022-09-14 17:27:00+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "PO-Revision-Date: 2022-09-14 17:27\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
477
  msgid "%s"
478
  msgstr ""
479
 
480
+ #: src/Tribe/Admin/Bar/Default_Configurator.php:47 src/Tribe/Main.php:3612
481
  #: src/Tribe/Views/V2/Views/Widgets/Widget_View.php:61
482
  #: src/admin-views/tribe-options-upgrade.php:20
483
  msgid "View Calendar"
488
  msgstr ""
489
 
490
  #: src/Tribe/Admin/Bar/Default_Configurator.php:64
491
+ #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:216 src/Tribe/Main.php:2062
492
  #: src/Tribe/Organizer.php:93 src/Tribe/Organizer.php:801
493
  #: src/Tribe/Venue.php:129 src/Tribe/Venue.php:915
494
  msgid "Edit %s"
501
  msgstr ""
502
 
503
  #: src/Tribe/Admin/Bar/Default_Configurator.php:91
504
+ #: src/Tribe/Admin/Settings.php:166 src/Tribe/Main.php:3660
505
  msgid "Settings"
506
  msgstr ""
507
 
556
  msgstr ""
557
 
558
  #: src/Tribe/Admin/Notice/Timezones.php:151
559
+ #: src/Tribe/Editor/Compatibility.php:138 src/Tribe/Google/Maps_API_Key.php:77
560
  msgid "Read more"
561
  msgstr ""
562
 
642
  "refresh and try again."
643
  msgstr ""
644
 
645
+ #: src/Tribe/Admin_List.php:299 src/Tribe/Main.php:2114
646
  msgid "%s Categories"
647
  msgstr ""
648
 
2589
  msgid "Add Button Text"
2590
  msgstr ""
2591
 
2592
+ #: src/Tribe/Editor/Compatibility.php:144
2593
  msgid "Activate Block Editor for Events"
2594
  msgstr ""
2595
 
2596
+ #: src/Tribe/Editor/Compatibility.php:145
2597
  msgid "Enable the Gutenberg block editor interface for creating events."
2598
  msgstr ""
2599
 
2600
+ #: src/Tribe/Editor/Compatibility.php:152
2601
  msgid "Hidden Blocks Editor Config"
2602
  msgstr ""
2603
 
3142
  msgid "%s:"
3143
  msgstr ""
3144
 
3145
+ #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:263
3146
  msgid "Add another %s"
3147
  msgstr ""
3148
 
3149
+ #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:286
3150
  msgid "Delete this"
3151
  msgstr ""
3152
 
3238
  msgid "Create or Find %s"
3239
  msgstr ""
3240
 
3241
+ #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 6.0.1) #-#-#-#-#
3242
  #. Plugin Name of the plugin/theme
3243
+ #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 6.0.1) #-#-#-#-#
3244
  #. Author of the plugin/theme
3245
+ #: src/Tribe/Main.php:952 src/Tribe/Main.php:1481 src/Tribe/Privacy.php:29
3246
  #: src/admin-views/admin-welcome-message.php:29
3247
  #: src/functions/template-tags/general.php:1413 the-events-calendar.php:55
3248
  msgid "The Events Calendar"
3249
  msgstr ""
3250
 
3251
+ #: src/Tribe/Main.php:959
3252
  msgid "month"
3253
  msgstr ""
3254
 
3255
+ #: src/Tribe/Main.php:960
3256
  msgid "list"
3257
  msgstr ""
3258
 
3259
+ #: src/Tribe/Main.php:961
3260
  msgid "upcoming"
3261
  msgstr ""
3262
 
3263
+ #: src/Tribe/Main.php:962
3264
  msgid "past"
3265
  msgstr ""
3266
 
3267
+ #: src/Tribe/Main.php:963
3268
  msgid "day"
3269
  msgstr ""
3270
 
3271
+ #: src/Tribe/Main.php:964
3272
  msgid "today"
3273
  msgstr ""
3274
 
3275
+ #: src/Tribe/Main.php:965
3276
  msgctxt "featured events slug"
3277
  msgid "featured"
3278
  msgstr ""
3279
 
3280
+ #: src/Tribe/Main.php:966
3281
  msgctxt "all events slug"
3282
  msgid "all"
3283
  msgstr ""
3284
 
3285
+ #: src/Tribe/Main.php:990
3286
  msgid "Initializing Tribe Events on %s"
3287
  msgstr ""
3288
 
3289
+ #: src/Tribe/Main.php:1062 src/Tribe/Main.php:1064
3290
  msgid "Welcome to The Events Calendar!"
3291
  msgstr ""
3292
 
3293
+ #: src/Tribe/Main.php:1213
3294
  msgid ""
3295
  "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
3296
  "show its calendar in place of the page."
3297
  msgstr ""
3298
 
3299
+ #: src/Tribe/Main.php:1216
3300
  msgid "Ask the site administrator to edit the %s slug"
3301
  msgstr ""
3302
 
3303
+ #: src/Tribe/Main.php:1218
3304
  msgid "Edit the %s slug"
3305
  msgstr ""
3306
 
3307
+ #: src/Tribe/Main.php:1222
3308
  msgid " ask the site administrator to set a different Events URL slug."
3309
  msgstr ""
3310
 
3311
+ #: src/Tribe/Main.php:1226
3312
  msgid "edit Events settings."
3313
  msgstr ""
3314
 
3315
+ #: src/Tribe/Main.php:1229
3316
  msgid "%1$s or %2$s"
3317
  msgstr ""
3318
 
3319
+ #: src/Tribe/Main.php:1317
3320
  msgid "Upgrade your calendar views"
3321
  msgstr ""
3322
 
3323
+ #: src/Tribe/Main.php:1342
3324
  msgid "Upgrade"
3325
  msgstr ""
3326
 
3327
+ #: src/Tribe/Main.php:1401
3328
  msgid "New User Primer"
3329
  msgstr ""
3330
 
3331
+ #: src/Tribe/Main.php:1403
3332
  msgid ""
3333
  "We are committed to helping make your calendar spectacular and have a wealth "
3334
  "of resources available, including a handy %s to get your calendar up and "
3335
  "running."
3336
  msgstr ""
3337
 
3338
+ #: src/Tribe/Main.php:1414
3339
  msgid "Support for The Events Calendar"
3340
  msgstr ""
3341
 
3342
+ #: src/Tribe/Main.php:1420
3343
  msgid ""
3344
  "%s: A thorough walkthrough of The Events Calendar and the settings that are "
3345
  "available to you."
3346
  msgstr ""
3347
 
3348
+ #: src/Tribe/Main.php:1424
3349
  msgid "Settings overview"
3350
  msgstr ""
3351
 
3352
+ #: src/Tribe/Main.php:1428
3353
  msgid ""
3354
  "%s: A complete look at the features you can expect to see right out of the "
3355
  "box as well as how to use them."
3356
  msgstr ""
3357
 
3358
+ #: src/Tribe/Main.php:1432
3359
  msgid "Features overview"
3360
  msgstr ""
3361
 
3362
+ #: src/Tribe/Main.php:1436
3363
  msgid ""
3364
  "%s: Our most comprehensive outline for customizing the calendar to suit your "
3365
  "needs, including custom layouts and styles."
3366
  msgstr ""
3367
 
3368
+ #: src/Tribe/Main.php:1440
3369
  msgid "Themer's Guide"
3370
  msgstr ""
3371
 
3372
+ #: src/Tribe/Main.php:1444
3373
  msgid ""
3374
  "%s: An overview of the default templates and styles that are included in the "
3375
  "plugin, as well as how to change them."
3376
  msgstr ""
3377
 
3378
+ #: src/Tribe/Main.php:1448
3379
  msgid "Using stylesheets and page templates"
3380
  msgstr ""
3381
 
3382
+ #: src/Tribe/Main.php:1452
3383
  msgid ""
3384
  "%s: Do you see an issue with your calendar? Go here first to find where it’s "
3385
  "coming from and how to fix it."
3386
  msgstr ""
3387
 
3388
+ #: src/Tribe/Main.php:1456
3389
  msgid "Troubleshooting common problems"
3390
  msgstr ""
3391
 
3392
+ #: src/Tribe/Main.php:1460
3393
  msgid ""
3394
  "%s: Code and guides for customizing your calendar in useful and interesting "
3395
  "ways."
3396
  msgstr ""
3397
 
3398
+ #: src/Tribe/Main.php:1464
3399
  msgid "Customizing the Events plugins"
3400
  msgstr ""
3401
 
3402
+ #: src/Tribe/Main.php:1482
3403
  msgid "Events Tickets"
3404
  msgstr ""
3405
 
3406
+ #: src/Tribe/Main.php:1483
3407
  msgid ""
3408
  "If you have tried the above steps and are still having trouble, you can post "
3409
  "a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
3410
  "monitors these forums once a week and would be happy to assist you there. "
3411
  msgstr ""
3412
 
3413
+ #: src/Tribe/Main.php:1485 src/Tribe/Main.php:1493
3414
  msgid "premium support on our website"
3415
  msgstr ""
3416
 
3417
+ #: src/Tribe/Main.php:1486
3418
  msgid ""
3419
  "<strong>Looking for more immediate support?</strong> We offer %s with the "
3420
  "purchase of any of our premium plugins. Pick up a license and you can post "
3421
  "there directly and expect a response within 24-48 hours during weekdays"
3422
  msgstr ""
3423
 
3424
+ #: src/Tribe/Main.php:1490
3425
  msgid "open-source forum on WordPress.org"
3426
  msgstr ""
3427
 
3428
+ #: src/Tribe/Main.php:1491
3429
  msgid ""
3430
  "If you have tried the above steps and are still having trouble, you can post "
3431
  "a new thread to our %s. Our support staff monitors these forums once a week "
3432
  "and would be happy to assist you there."
3433
  msgstr ""
3434
 
3435
+ #: src/Tribe/Main.php:1494
3436
  msgid "Events Calendar PRO"
3437
  msgstr ""
3438
 
3439
+ #: src/Tribe/Main.php:1495
3440
  msgid ""
3441
  "<strong>Looking for more immediate support?</strong> We offer %1$s with the "
3442
  "purchase of any of our premium plugins (like %2$s). Pick up a license and "
3444
  "weekdays."
3445
  msgstr ""
3446
 
3447
+ #: src/Tribe/Main.php:1499
3448
  msgid "post a thread"
3449
  msgstr ""
3450
 
3451
+ #: src/Tribe/Main.php:1500
3452
  msgid ""
3453
  "If you have a valid license for one of our paid plugins, you can %s in our "
3454
  "premium support forums. Our support team monitors the forums and will "
3455
  "respond to your thread within 24-48 hours (during the week)."
3456
  msgstr ""
3457
 
3458
+ #: src/Tribe/Main.php:1543 src/functions/template-tags/general.php:127
3459
  msgid "Events"
3460
  msgstr ""
3461
 
3462
+ #: src/Tribe/Main.php:1551 src/admin-views/aggregator/tabs/import-form.php:229
3463
  #: src/admin-views/aggregator/tabs/import-form.php:241
3464
  #: src/functions/template-tags/general.php:71
3465
  msgid "Event"
3466
  msgstr ""
3467
 
3468
+ #: src/Tribe/Main.php:1722
3469
  msgid ""
3470
  "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
3471
  "your WordPress install."
3472
  msgstr ""
3473
 
3474
+ #: src/Tribe/Main.php:1725
3475
  msgid ""
3476
  "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
3477
  "about moving you to a newer version of PHP."
3478
  msgstr ""
3479
 
3480
+ #: src/Tribe/Main.php:1760
3481
  msgid ""
3482
  "To continue using The Events Calendar, please install the latest version of"
3483
  msgstr ""
3484
 
3485
+ #: src/Tribe/Main.php:1762 src/Tribe/Main.php:1763
3486
  msgid "Event Tickets"
3487
  msgstr ""
3488
 
3489
+ #: src/Tribe/Main.php:1789
3490
  msgid ""
3491
  "It appears as if the tribe-common libraries cannot be found! The directory "
3492
  "should be in the \"common/\" directory in the events calendar plugin."
3493
  msgstr ""
3494
 
3495
+ #: src/Tribe/Main.php:2026 src/Tribe/Main.php:2499
3496
  msgid "category"
3497
  msgstr ""
3498
 
3499
+ #: src/Tribe/Main.php:2040 src/Tribe/Main.php:2498
3500
  msgid "tag"
3501
  msgstr ""
3502
 
3503
+ #: src/Tribe/Main.php:2057 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:127
3504
  msgid "Add New"
3505
  msgstr ""
3506
 
3507
+ #: src/Tribe/Main.php:2059 src/Tribe/Main.php:2266 src/Tribe/Main.php:2267
3508
  #: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:128
3509
  msgid "Add New %s"
3510
  msgstr ""
3511
 
3512
+ #: src/Tribe/Main.php:2065 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:130
3513
  msgid "New %s"
3514
  msgstr ""
3515
 
3516
+ #: src/Tribe/Main.php:2068 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:131
3517
  msgid "View %s"
3518
  msgstr ""
3519
 
3520
+ #: src/Tribe/Main.php:2071 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:132
3521
  msgid "Search %s"
3522
  msgstr ""
3523
 
3524
+ #: src/Tribe/Main.php:2074 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:133
3525
  msgid "No %s found"
3526
  msgstr ""
3527
 
3528
+ #: src/Tribe/Main.php:2077 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:134
3529
  msgid "No %s found in Trash"
3530
  msgstr ""
3531
 
3532
+ #: src/Tribe/Main.php:2080 src/Tribe/Main.php:2219 src/Tribe/Main.php:2241
3533
  #: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:135
3534
  msgid "%s published."
3535
  msgstr ""
3536
 
3537
+ #: src/Tribe/Main.php:2083 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:136
3538
  msgid "%s published privately."
3539
  msgstr ""
3540
 
3541
+ #: src/Tribe/Main.php:2086 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:137
3542
  msgid "%s reverted to draft."
3543
  msgstr ""
3544
 
3545
+ #: src/Tribe/Main.php:2089 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:138
3546
  msgid "%s scheduled."
3547
  msgstr ""
3548
 
3549
+ #: src/Tribe/Main.php:2092 src/Tribe/Main.php:2175 src/Tribe/Main.php:2211
3550
+ #: src/Tribe/Main.php:2214 src/Tribe/Main.php:2233 src/Tribe/Main.php:2236
3551
  #: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:139
3552
  msgid "%s updated."
3553
  msgstr ""
3555
  #. Translators: %s: Event singular.
3556
  #. Translators: %s: Organizer singular.
3557
  #. Translators: %s: Venue singular.
3558
+ #: src/Tribe/Main.php:2096 src/Tribe/Organizer.php:106 src/Tribe/Venue.php:142
3559
  msgid "%s Link"
3560
  msgstr ""
3561
 
3562
  #. Translators: %s: Event singular.
3563
  #. Translators: %s: Organizer singular.
3564
  #. Translators: %s: Venue singular.
3565
+ #: src/Tribe/Main.php:2100 src/Tribe/Organizer.php:110 src/Tribe/Venue.php:146
3566
  msgid "A link to a particular %s."
3567
  msgstr ""
3568
 
3569
+ #: src/Tribe/Main.php:2117
3570
  msgid "%s Category"
3571
  msgstr ""
3572
 
3573
+ #: src/Tribe/Main.php:2120
3574
  msgid "Search %s Categories"
3575
  msgstr ""
3576
 
3577
+ #: src/Tribe/Main.php:2123
3578
  msgid "All %s Categories"
3579
  msgstr ""
3580
 
3581
+ #: src/Tribe/Main.php:2126
3582
  msgid "Parent %s Category"
3583
  msgstr ""
3584
 
3585
+ #: src/Tribe/Main.php:2129
3586
  msgid "Parent %s Category:"
3587
  msgstr ""
3588
 
3589
+ #: src/Tribe/Main.php:2132
3590
  msgid "Edit %s Category"
3591
  msgstr ""
3592
 
3593
+ #: src/Tribe/Main.php:2135
3594
  msgid "Update %s Category"
3595
  msgstr ""
3596
 
3597
+ #: src/Tribe/Main.php:2138
3598
  msgid "Add New %s Category"
3599
  msgstr ""
3600
 
3601
+ #: src/Tribe/Main.php:2141
3602
  msgid "New %s Category Name"
3603
  msgstr ""
3604
 
3605
  #. Translators: %s: Event singular.
3606
+ #: src/Tribe/Main.php:2145
3607
  msgid "%s Category Link"
3608
  msgstr ""
3609
 
3610
  #. Translators: %s: Event singular.
3611
+ #: src/Tribe/Main.php:2149
3612
  msgid "A link to a particular %s category."
3613
  msgstr ""
3614
 
3615
+ #: src/Tribe/Main.php:2168
3616
  msgid "%1$s updated. %2$sView %1$s%3$s"
3617
  msgstr ""
3618
 
3619
+ #: src/Tribe/Main.php:2173 src/Tribe/Main.php:2212 src/Tribe/Main.php:2234
3620
  msgid "Custom field updated."
3621
  msgstr ""
3622
 
3623
+ #: src/Tribe/Main.php:2174 src/Tribe/Main.php:2213 src/Tribe/Main.php:2235
3624
  msgid "Custom field deleted."
3625
  msgstr ""
3626
 
3627
  #. translators: %s: date and time of the revision
3628
+ #: src/Tribe/Main.php:2178 src/Tribe/Main.php:2217
3629
  msgid "%1$s restored to revision from %2$s"
3630
  msgstr ""
3631
 
3632
+ #: src/Tribe/Main.php:2181
3633
  msgid "%1$s published. %2$sView %3$s"
3634
  msgstr ""
3635
 
3636
+ #: src/Tribe/Main.php:2186 src/Tribe/Main.php:2220 src/Tribe/Main.php:2242
3637
  msgid "%s saved."
3638
  msgstr ""
3639
 
3640
+ #: src/Tribe/Main.php:2188
3641
  msgid "%1$s submitted. %2$sPreview %3$s"
3642
  msgstr ""
3643
 
3644
+ #: src/Tribe/Main.php:2194
3645
  msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
3646
  msgstr ""
3647
 
3648
  #. translators: Publish box date format, see http://php.net/date
3649
+ #: src/Tribe/Main.php:2197 src/Tribe/Main.php:2226 src/Tribe/Main.php:2248
3650
  msgid "M j, Y @ G:i"
3651
  msgstr ""
3652
 
3653
+ #: src/Tribe/Main.php:2202
3654
  msgid "%1$s draft updated. %2$sPreview %3$s"
3655
  msgstr ""
3656
 
3657
+ #: src/Tribe/Main.php:2221 src/Tribe/Main.php:2243
3658
  msgid "%s submitted."
3659
  msgstr ""
3660
 
3661
+ #: src/Tribe/Main.php:2223 src/Tribe/Main.php:2245
3662
  msgid "%1$s scheduled for: %2$s."
3663
  msgstr ""
3664
 
3665
+ #: src/Tribe/Main.php:2228 src/Tribe/Main.php:2251
3666
  msgid "%s draft updated."
3667
  msgstr ""
3668
 
3669
  #. translators: %s: date and time of the revision
3670
+ #: src/Tribe/Main.php:2239
3671
  msgid "%s restored to revision from %s"
3672
  msgstr ""
3673
 
3674
+ #: src/Tribe/Main.php:2300
3675
  msgid ""
3676
  "Without a defined location your event will not display a %sGoogle Rich "
3677
  "Snippet%s on the search results."
3678
  msgstr ""
3679
 
3680
+ #: src/Tribe/Main.php:2500
3681
  msgid "page"
3682
  msgstr ""
3683
 
3684
+ #: src/Tribe/Main.php:2501 src/functions/template-tags/general.php:99
3685
  msgid "event"
3686
  msgstr ""
3687
 
3688
+ #: src/Tribe/Main.php:2502 src/functions/template-tags/general.php:155
3689
  msgid "events"
3690
  msgstr ""
3691
 
3692
+ #: src/Tribe/Main.php:2503
3693
  msgid "all"
3694
  msgstr ""
3695
 
3696
+ #: src/Tribe/Main.php:3261 src/Tribe/Main.php:3300
3697
  #: src/functions/template-tags/deprecated.php:22
3698
  #: src/functions/template-tags/deprecated.php:44
3699
  msgid "Date out of range."
3700
  msgstr ""
3701
 
3702
+ #: src/Tribe/Main.php:3330
3703
  msgid "%s Options"
3704
  msgstr ""
3705
 
3706
+ #: src/Tribe/Main.php:3502
3707
  msgid "Support"
3708
  msgstr ""
3709
 
3710
+ #: src/Tribe/Main.php:3505
3711
  msgid "View All Add-Ons"
3712
  msgstr ""
3713
 
3714
+ #: src/Tribe/Main.php:3527
3715
  msgid "News from The Events Calendar"
3716
  msgstr ""
3717
 
3718
+ #: src/Tribe/Main.php:3554
3719
  msgid "Additional Functionality"
3720
  msgstr ""
3721
 
3722
+ #: src/Tribe/Main.php:3559
3723
  msgid ""
3724
  "Looking for additional functionality including recurring events, ticket "
3725
  "sales, publicly submitted events, new views and more?"
3726
  msgstr ""
3727
 
3728
+ #: src/Tribe/Main.php:3560
3729
  msgid "Check out the %savailable add-ons%s."
3730
  msgstr ""
3731
 
3732
+ #: src/Tribe/Main.php:3661
3733
  msgid "Calendar"
3734
  msgstr ""
3735
 
3736
+ #: src/Tribe/Main.php:3698
3737
  msgid "Once Every 30 Mins"
3738
  msgstr ""
3739
 
5551
  msgid "%1$s for %2$s"
5552
  msgstr ""
5553
 
5554
+ #: src/Tribe/Views/V2/View.php:2057 src/views/v2/day/event/date/featured.php:27
5555
  #: src/views/v2/day/event/date/featured.php:32
5556
  #: src/views/v2/latest-past/event/date/featured.php:27
5557
  #: src/views/v2/latest-past/event/date/featured.php:32
5777
 
5778
  #: src/admin-views/admin-welcome-message.php:14
5779
  #: src/admin-views/admin-welcome-message.php:20
5780
+ #: src/admin-views/updates/6.0.0.php:18
5781
  msgid "Shapes and lines for visual interest"
5782
  msgstr ""
5783
 
5784
  #: src/admin-views/admin-welcome-message.php:27
5785
+ #: src/admin-views/aggregator/origins/csv.php:88
5786
+ #: src/admin-views/aggregator/origins/csv.php:97
5787
+ #: src/admin-views/updates/6.0.0.php:25
5788
  msgid "The Events Calendar logo"
5789
  msgstr ""
5790
 
5863
  #: src/admin-views/admin-welcome-message.php:73
5864
  #: src/admin-views/aggregator/banners/eventbrite-upsell.php:17
5865
  #: src/admin-views/notices/update-6-0-0.php:29
5866
+ #: src/admin-views/updates/6.0.0.php:66 src/admin-views/updates/6.0.0.php:100
5867
  msgid "Learn more"
5868
  msgstr ""
5869
 
6012
  "event files."
6013
  msgstr ""
6014
 
6015
+ #: src/admin-views/aggregator/origins/csv.php:40
6016
  #: src/admin-views/aggregator/origins/ics.php:5
6017
  msgid "Choose File:"
6018
  msgstr ""
6019
 
6020
+ #: src/admin-views/aggregator/origins/csv.php:41
6021
  msgid "Choose a CSV file"
6022
  msgstr ""
6023
 
6024
+ #: src/admin-views/aggregator/origins/csv.php:42
6025
  msgid ""
6026
  "Select your .CSV file from the WordPress media library. You may need to "
6027
  "first upload the file from your computer to the library."
6028
  msgstr ""
6029
 
6030
+ #: src/admin-views/aggregator/origins/csv.php:43
6031
  #: src/admin-views/aggregator/origins/ics.php:9
6032
  msgid "Upload"
6033
  msgstr ""
6034
 
6035
+ #: src/admin-views/aggregator/origins/csv.php:44
6036
  msgid "Upload a CSV File"
6037
  msgstr ""
6038
 
6039
+ #: src/admin-views/aggregator/origins/csv.php:69
6040
  #: src/admin-views/aggregator/origins/ics.php:35
6041
  msgid "No file chosen"
6042
  msgstr ""
6043
 
6044
+ #: src/admin-views/aggregator/origins/csv.php:77
6045
  #: src/admin-views/aggregator/origins/eventbrite.php:219
6046
  #: src/admin-views/aggregator/origins/gcal.php:123
6047
  #: src/admin-views/aggregator/origins/ical.php:119
6052
  msgid "Preview"
6053
  msgstr ""
6054
 
6055
+ #: src/admin-views/aggregator/origins/csv.php:83
6056
+ msgid "Need assistance? You can find more information here:"
6057
+ msgstr ""
6058
+
6059
+ #: src/admin-views/aggregator/origins/csv.php:91
6060
+ msgid "Importing Calendar Data From a CSV File"
6061
+ msgstr ""
6062
+
6063
+ #: src/admin-views/aggregator/origins/csv.php:100
6064
+ msgid "CSV File Formatting and Examples "
6065
+ msgstr ""
6066
+
6067
  #: src/admin-views/aggregator/origins/eventbrite.php:6
6068
  #: src/admin-views/aggregator/origins/gcal.php:5
6069
  #: src/admin-views/aggregator/origins/ical.php:5
7209
  msgstr ""
7210
 
7211
  #: src/admin-views/notices/legacy-views-updated.php:18
7212
+ #: src/admin-views/updates/6.0.0.php:99
7213
  msgid "View your calendar"
7214
  msgstr ""
7215
 
8064
  msgid "Step 2 of 2"
8065
  msgstr ""
8066
 
8067
+ #: src/admin-views/updates/6.0.0.php:29
8068
  msgid "Welcome to"
8069
  msgstr ""
8070
 
8071
+ #: src/admin-views/updates/6.0.0.php:30
8072
  msgid "The Events Calendar 6.0"
8073
  msgstr ""
8074
 
8075
+ #: src/admin-views/updates/6.0.0.php:31 src/admin-views/updates/6.0.0.php:120
8076
+ msgid "Take me to Settings ›"
8077
+ msgstr ""
8078
+
8079
+ #: src/admin-views/updates/6.0.0.php:41
8080
  msgid "What’s New in The Events Calendar 6.0"
8081
  msgstr ""
8082
 
8083
+ #: src/admin-views/updates/6.0.0.php:44
8084
  msgid "Video describing features on The Events Calendar 6.0"
8085
  msgstr ""
8086
 
8087
+ #: src/admin-views/updates/6.0.0.php:50
8088
  msgid ""
8089
  "We’re excited to bring all of our users faster event creation and editing in "
8090
  "the WordPress dashboard as well as quicker loading times for your website’s "
8091
  "calendar."
8092
  msgstr ""
8093
 
8094
+ #: src/admin-views/updates/6.0.0.php:51
8095
  msgid ""
8096
  "Watch the video or check out the <a href=\"%s\">release notes</a> to learn "
8097
  "more."
8098
  msgstr ""
8099
 
8100
+ #: src/admin-views/updates/6.0.0.php:53
8101
  msgid ""
8102
  "Be sure to <a href=\"%s\">migrate</a> to the new data storage system so you "
8103
  "can take advantage of the improved performance."
8104
  msgstr ""
8105
 
8106
+ #: src/admin-views/updates/6.0.0.php:59
8107
  msgid "Lightening bolt icon"
8108
  msgstr ""
8109
 
8110
+ #: src/admin-views/updates/6.0.0.php:60
8111
  msgid "New Features for Events Calendar Pro"
8112
  msgstr ""
8113
 
8114
+ #: src/admin-views/updates/6.0.0.php:64
8115
  msgid ""
8116
  "A game-changing ✨new✨ post type, Series, allows you to group and display any "
8117
  "single or recurring events together like never before."
8118
  msgstr ""
8119
 
8120
+ #: src/admin-views/updates/6.0.0.php:65
8121
  msgid ""
8122
  "With Series, you can edit an individual occurrence of a recurring event "
8123
  "without disconnecting it from the others, allowing you to build complex "
8124
  "event Series with different venues, images, and more."
8125
  msgstr ""
8126
 
8127
+ #: src/admin-views/updates/6.0.0.php:66
8128
  msgid "Watch a video"
8129
  msgstr ""
8130
 
8131
+ #: src/admin-views/updates/6.0.0.php:66
8132
  msgid "See a demo"
8133
  msgstr ""
8134
 
8135
+ #: src/admin-views/updates/6.0.0.php:70 src/admin-views/updates/6.0.0.php:75
8136
+ #: src/admin-views/updates/6.0.0.php:79 src/admin-views/updates/6.0.0.php:85
8137
  msgid "Event series graphic"
8138
  msgstr ""
8139
 
8140
+ #: src/admin-views/updates/6.0.0.php:76
8141
  msgid "Advanced editing options"
8142
  msgstr ""
8143
 
8144
+ #: src/admin-views/updates/6.0.0.php:76
8145
  msgid ""
8146
  "for recurring events give you more possibilities for complex event "
8147
  "management."
8148
  msgstr ""
8149
 
8150
+ #: src/admin-views/updates/6.0.0.php:80
8151
  msgid "With the Duplicate Event Tool"
8152
  msgstr ""
8153
 
8154
+ #: src/admin-views/updates/6.0.0.php:80
8155
  msgid ""
8156
  "you can replicate and modify any events in seconds, making event creation a "
8157
  "breeze."
8158
  msgstr ""
8159
 
8160
+ #: src/admin-views/updates/6.0.0.php:86
8161
  msgid ""
8162
  "Upgrade to <a href=\"%s\">Events Calendar Pro</a> to unlock these features."
8163
  msgstr ""
8164
 
8165
+ #: src/admin-views/updates/6.0.0.php:95
8166
  msgid "Light bulb icon"
8167
  msgstr ""
8168
 
8169
+ #: src/admin-views/updates/6.0.0.php:96
8170
  msgid "Legacy Views"
8171
  msgstr ""
8172
 
8173
+ #: src/admin-views/updates/6.0.0.php:98
8174
  msgid ""
8175
  "We have fully removed the legacy views from The Events Calendar 6.0. Your "
8176
  "views have been automatically updated."
8177
  msgstr ""
8178
 
8179
+ #: src/admin-views/updates/6.0.0.php:103
8180
  msgid "Resources"
8181
  msgstr ""
8182
 
8183
+ #: src/admin-views/updates/6.0.0.php:105
8184
  msgid "Migrating Your Site"
8185
  msgstr ""
8186
 
8187
+ #: src/admin-views/updates/6.0.0.php:106
8188
  msgid "Event Series"
8189
  msgstr ""
8190
 
8191
+ #: src/admin-views/updates/6.0.0.php:107
8192
  msgid "Creating Recurring Events"
8193
  msgstr ""
8194
 
8195
+ #: src/admin-views/updates/6.0.0.php:108
8196
  msgid "Duplicating Events"
8197
  msgstr ""
8198
 
8199
+ #: src/admin-views/updates/6.0.0.php:109
8200
  msgid "Recurring Events & Tickets"
8201
  msgstr ""
8202
 
8203
+ #: src/admin-views/updates/6.0.0.php:110
8204
  msgid "Community Events & Series"
8205
  msgstr ""
8206
 
8207
+ #: src/admin-views/updates/6.0.0.php:111
8208
  msgid "Release Notes"
8209
  msgstr ""
8210
 
8211
+ #: src/admin-views/updates/6.0.0.php:112
8212
  msgid "Get Support"
8213
  msgstr ""
8214
 
8215
+ #: src/admin-views/updates/6.0.0.php:119
8216
+ msgid ""
8217
+ "We won't post this page again once you skip to The Events Calendar Settings."
8218
+ msgstr ""
8219
+
8220
  #: src/admin-views/venue-meta-box.php:265
8221
  msgid "%s Name can not be empty"
8222
  msgstr ""
8376
  msgid "In a location"
8377
  msgstr ""
8378
 
8379
+ #: src/views/single-event/back-link.php:18 src/views/single-event.php:78
8380
  msgctxt "%s Events plural label"
8381
  msgid "All %s"
8382
  msgstr ""
8383
 
8384
+ #: src/views/single-event/footer.php:21 src/views/single-event.php:96
8385
+ #: src/views/single-event.php:130
8386
  msgid "%s Navigation"
8387
  msgstr ""
8388
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Contributors: theeventscalendar, borkweb, bordoni, brianjessee, aguseo, camwynsp
4
  Tags: events, calendar, event, schedule, organizer
5
  Donate link: https://evnt.is/29
6
  Requires at least: 5.8.4
7
- Stable tag: 6.0.0.1
8
  Tested up to: 6.0.2
9
  Requires PHP: 7.3
10
  License: GPLv2 or later
@@ -229,6 +229,26 @@ Remember to always make a backup of your database and files before updating!
229
 
230
  == Changelog ==
231
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  = [6.0.0.1] 2022-09-07 =
233
 
234
  * Fix - Prevent `E_ERROR` from showing up when calling `tribe_context()->is( 'is_main_query' )` too early in execution. [TEC-4464]
4
  Tags: events, calendar, event, schedule, organizer
5
  Donate link: https://evnt.is/29
6
  Requires at least: 5.8.4
7
+ Stable tag: 6.0.1
8
  Tested up to: 6.0.2
9
  Requires PHP: 7.3
10
  License: GPLv2 or later
229
 
230
  == Changelog ==
231
 
232
+ = [6.0.1] 2022-09-22 =
233
+
234
+ * Fix - Prevent network deactivation from overwriting the subsite settings with main site cached settings. [TEC-3738]
235
+ * Fix - Correct some translation domains pointing to the wrong plugin. [TEC-4450]
236
+ * Fix - Ensure the details in the single event page are accurate for Divi users who set any Divi template under Settings → Events template. [TEC-3814]
237
+ * Fix - Add caching to prevent duplicated queries for translated venue/organizer values. props to @dgwatkins for the suggested fix! [TEC-4428]
238
+ * Fix - Check the document for `lang` and `rtl` attributes and pass them on to the datepicker so it adapts properly. [TEC-4452]
239
+ * Fix - Corrected an issue where the Organizer Block was showing the "Add Another Organizer" button when no organizers were selected. [CE-11]
240
+ * Fix - Corrected an issue where the "Edit Venue" and "Edit Organizer" links were displaying with no link. [CE-165]
241
+ * Fix - Correct migration error when The Events Calendar PRO is not active. [TEC-4475]
242
+ * Fix - Normalize, reformat and rebuild Event date-related meta to fix a number of migration preview failures [ECP-1304]
243
+ * Fix - Correct a problem with moving tickets when The Events Calendar PRO is not active. [TEC-4471]
244
+ * Fix - Correct an issue with migrating past events that straddle Daylight Savings Time. [ECP-1270]
245
+ * Fix - Fix the Community Events recurrence link. [ECP-1215]
246
+ * Tweak - Add some helpful knowledgebase article links to the CSV import screen. [TEC-4353]
247
+ * Tweak - Ensure the Fast-forward link uses the correct, customizable color as other links. [TEC-3962]
248
+ * Tweak - Include Custom Tables Migration in the Support System Information array. [ECP-1316]
249
+ * Tweak - Add compatibility for new "Convert to single" option in The Events Calendar PRO. [ECP-1308]
250
+ * Language - 5 new strings added, 163 updated, 0 fuzzied, and 0 obsoleted
251
+
252
  = [6.0.0.1] 2022-09-07 =
253
 
254
  * Fix - Prevent `E_ERROR` from showing up when calling `tribe_context()->is( 'is_main_query' )` too early in execution. [TEC-4464]
src/Events/Custom_Tables/V1/Activation.php CHANGED
@@ -12,6 +12,7 @@ namespace TEC\Events\Custom_Tables\V1;
12
  use TEC\Events\Custom_Tables\V1\Migration\Events;
13
  use TEC\Events\Custom_Tables\V1\Migration\State;
14
  use TEC\Events\Custom_Tables\V1\Schema_Builder\Schema_Builder;
 
15
 
16
  /**
17
  * Class Activation
@@ -35,7 +36,7 @@ class Activation {
35
  * @since 6.0.0
36
  */
37
  public static function activate() {
38
- $schema_builder = tribe( Schema_Builder::class);
39
  $schema_builder->up();
40
  }
41
 
@@ -51,7 +52,7 @@ class Activation {
51
  $db_hash = get_transient( static::ACTIVATION_TRANSIENT );
52
 
53
  $schema_builder = tribe( Schema_Builder::class );
54
- $hash = $schema_builder->get_registered_schemas_version_hash();
55
 
56
  if ( $db_hash == $hash ) {
57
  return;
@@ -64,8 +65,8 @@ class Activation {
64
  $schema_builder->up();
65
  }
66
 
67
- $services = tribe();
68
- $state = $services->make( State::class );
69
 
70
  // Check if we have any events to migrate, if not we can set up our schema and flag the migration complete.
71
  if (
@@ -86,6 +87,39 @@ class Activation {
86
  }
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  /**
90
  * Handles the feature deactivation.
91
  *
12
  use TEC\Events\Custom_Tables\V1\Migration\Events;
13
  use TEC\Events\Custom_Tables\V1\Migration\State;
14
  use TEC\Events\Custom_Tables\V1\Schema_Builder\Schema_Builder;
15
+ use Tribe__Main as Common;
16
 
17
  /**
18
  * Class Activation
36
  * @since 6.0.0
37
  */
38
  public static function activate() {
39
+ $schema_builder = tribe( Schema_Builder::class );
40
  $schema_builder->up();
41
  }
42
 
52
  $db_hash = get_transient( static::ACTIVATION_TRANSIENT );
53
 
54
  $schema_builder = tribe( Schema_Builder::class );
55
+ $hash = $schema_builder->get_registered_schemas_version_hash();
56
 
57
  if ( $db_hash == $hash ) {
58
  return;
65
  $schema_builder->up();
66
  }
67
 
68
+ $services = tribe();
69
+ $state = $services->make( State::class );
70
 
71
  // Check if we have any events to migrate, if not we can set up our schema and flag the migration complete.
72
  if (
87
  }
88
  }
89
 
90
+ /**
91
+ * Includes the Migration state into the System Information for support.
92
+ *
93
+ * @since 6.0.1
94
+ *
95
+ * @param array<string,mixed> $info The system information, as produced by the
96
+ * default logic and previous filters.
97
+ *
98
+ * @return array<string,mixed> The filtered system information.
99
+ */
100
+ public static function filter_include_migration_in_system_info( array $info = [] ): array {
101
+ $phase = tribe( State::class )->get_phase();
102
+ // String not translated on purpose.
103
+ $incomplete_label = 'Incomplete';
104
+ $status_map = [
105
+ State::PHASE_MIGRATION_COMPLETE => 'Completed', // String not translated on purpose.
106
+ State::PHASE_MIGRATION_NOT_REQUIRED => 'Not Required', // String not translated on purpose.
107
+ ];
108
+
109
+ $migration_status = [
110
+ 'Custom Tables Migration Status' => ! empty( $phase ) && ! empty( $status_map[ $phase ] ) ?
111
+ $status_map[ $phase ]
112
+ : $incomplete_label,
113
+ ];
114
+
115
+ // Prevents problems in case we don't have sys info.
116
+ if ( empty( $info ) ) {
117
+ return $migration_status;
118
+ }
119
+
120
+ return Common::array_insert_before_key( 'Settings', $info, $migration_status );
121
+ }
122
+
123
  /**
124
  * Handles the feature deactivation.
125
  *
src/Events/Custom_Tables/V1/Migration/Events.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * ${CARET}
4
  *
5
  * @since 6.0.0
6
  * @package TEC\Events\Custom_Tables\V1\Migration;
@@ -56,14 +56,20 @@ class Events {
56
  $lock_query = "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value)
57
  SELECT p.ID, %s,%s
58
  FROM {$wpdb->posts} p
59
- LEFT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key IN(%s, %s)
60
  LEFT JOIN {$wpdb->postmeta} created_by_migration ON p.ID = created_by_migration.post_id
61
  AND created_by_migration.meta_key = %s
 
 
 
 
62
  WHERE p.post_type = %s
63
  AND pm.meta_value IS NULL
64
  AND p.post_status != 'auto-draft'
65
  AND p.post_parent = 0
66
- and created_by_migration.meta_value IS NULL
 
 
67
  LIMIT %d";
68
  $lock_query = $wpdb->prepare( $lock_query,
69
  Event_Report::META_KEY_MIGRATION_LOCK_HASH,
@@ -262,10 +268,17 @@ class Events {
262
  "SELECT COUNT(ID) FROM {$wpdb->posts} p
263
  LEFT JOIN {$wpdb->postmeta} created_by_migration ON p.ID = created_by_migration.post_id
264
  AND created_by_migration.meta_key = %s
 
 
 
 
265
  WHERE p.post_type = %s
266
  AND post_parent = 0
267
  AND p.post_status != 'auto-draft'
268
- AND created_by_migration.meta_value IS NULL",
 
 
 
269
  Process::EVENT_CREATED_BY_MIGRATION_META_KEY,
270
  TEC::POSTTYPE
271
  )
1
  <?php
2
  /**
3
+ * Provides methods to query the Events posts and postmeta tables in the context of the migration process.
4
  *
5
  * @since 6.0.0
6
  * @package TEC\Events\Custom_Tables\V1\Migration;
56
  $lock_query = "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value)
57
  SELECT p.ID, %s,%s
58
  FROM {$wpdb->posts} p
59
+ LEFT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id AND pm.meta_key IN (%s, %s)
60
  LEFT JOIN {$wpdb->postmeta} created_by_migration ON p.ID = created_by_migration.post_id
61
  AND created_by_migration.meta_key = %s
62
+ LEFT JOIN {$wpdb->postmeta} pm1 ON p.ID = pm1.post_id AND pm1.meta_key = '_EventStartDate'
63
+ LEFT JOIN {$wpdb->postmeta} pm2 ON p.ID = pm2.post_id AND pm2.meta_key = '_EventStartDateUTC'
64
+ LEFT JOIN {$wpdb->postmeta} pm3 ON p.ID = pm3.post_id AND pm3.meta_key = '_EventEndDate'
65
+ LEFT JOIN {$wpdb->postmeta} pm4 ON p.ID = pm4.post_id AND pm4.meta_key = '_EventEndDateUTC'
66
  WHERE p.post_type = %s
67
  AND pm.meta_value IS NULL
68
  AND p.post_status != 'auto-draft'
69
  AND p.post_parent = 0
70
+ AND created_by_migration.meta_value IS NULL
71
+ AND ((pm1.meta_value IS NOT NULL AND pm1.meta_value != '') OR (pm2.meta_value IS NOT NULL AND pm2.meta_value != ''))
72
+ AND ((pm3.meta_value IS NOT NULL AND pm3.meta_value != '') OR (pm4.meta_value IS NOT NULL AND pm4.meta_value != ''))
73
  LIMIT %d";
74
  $lock_query = $wpdb->prepare( $lock_query,
75
  Event_Report::META_KEY_MIGRATION_LOCK_HASH,
268
  "SELECT COUNT(ID) FROM {$wpdb->posts} p
269
  LEFT JOIN {$wpdb->postmeta} created_by_migration ON p.ID = created_by_migration.post_id
270
  AND created_by_migration.meta_key = %s
271
+ LEFT JOIN {$wpdb->postmeta} pm1 ON p.ID = pm1.post_id AND pm1.meta_key = '_EventStartDate'
272
+ LEFT JOIN {$wpdb->postmeta} pm2 ON p.ID = pm2.post_id AND pm2.meta_key = '_EventStartDateUTC'
273
+ LEFT JOIN {$wpdb->postmeta} pm3 ON p.ID = pm3.post_id AND pm3.meta_key = '_EventEndDate'
274
+ LEFT JOIN {$wpdb->postmeta} pm4 ON p.ID = pm4.post_id AND pm4.meta_key = '_EventEndDateUTC'
275
  WHERE p.post_type = %s
276
  AND post_parent = 0
277
  AND p.post_status != 'auto-draft'
278
+ AND created_by_migration.meta_value IS NULL
279
+ AND ((pm1.meta_value IS NOT NULL AND pm1.meta_value != '') OR (pm2.meta_value IS NOT NULL AND pm2.meta_value != ''))
280
+ AND ((pm3.meta_value IS NOT NULL AND pm3.meta_value != '') OR (pm4.meta_value IS NOT NULL AND pm4.meta_value != ''))
281
+ ",
282
  Process::EVENT_CREATED_BY_MIGRATION_META_KEY,
283
  TEC::POSTTYPE
284
  )
src/Events/Custom_Tables/V1/Migration/Process.php CHANGED
@@ -85,11 +85,7 @@ class Process {
85
  ActionScheduler::store()->init();
86
 
87
  $action_ids = [];
88
-
89
- // Remove what migration phase flags might have been set by previous previews or migrations.
90
- delete_metadata( 'post', 0, Event_Report::META_KEY_MIGRATION_PHASE, '', true );
91
- delete_metadata( 'post', 0, Event_Report::META_KEY_REPORT_DATA, '', true );
92
- delete_metadata( 'post', 0, Event_Report::META_KEY_MIGRATION_LOCK_HASH, '', true );
93
 
94
  // Flag our new phase.
95
  $this->state->set( 'phase', $dry_run ? State::PHASE_PREVIEW_IN_PROGRESS : State::PHASE_MIGRATION_IN_PROGRESS );
@@ -245,4 +241,18 @@ class Process {
245
  $this->cancel_async_action( $action_id );
246
  }
247
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  }
85
  ActionScheduler::store()->init();
86
 
87
  $action_ids = [];
88
+ $this->remove_migration_report_meta();
 
 
 
 
89
 
90
  // Flag our new phase.
91
  $this->state->set( 'phase', $dry_run ? State::PHASE_PREVIEW_IN_PROGRESS : State::PHASE_MIGRATION_IN_PROGRESS );
241
  $this->cancel_async_action( $action_id );
242
  }
243
  }
244
+
245
+ /**
246
+ * Remove the migration report meta from all events.
247
+ *
248
+ * @since 6.0.0
249
+ *
250
+ * @return void
251
+ */
252
+ public function remove_migration_report_meta(): void {
253
+ // Remove what migration phase flags might have been set by previous previews or migrations.
254
+ delete_metadata( 'post', 0, Event_Report::META_KEY_MIGRATION_PHASE, '', true );
255
+ delete_metadata( 'post', 0, Event_Report::META_KEY_REPORT_DATA, '', true );
256
+ delete_metadata( 'post', 0, Event_Report::META_KEY_MIGRATION_LOCK_HASH, '', true );
257
+ }
258
  }
src/Events/Custom_Tables/V1/Migration/Process_Worker.php CHANGED
@@ -10,13 +10,14 @@ namespace TEC\Events\Custom_Tables\V1\Migration;
10
 
11
  use TEC\Events\Custom_Tables\V1\Migration\Reports\Event_Report;
12
  use TEC\Events\Custom_Tables\V1\Migration\Strategies\Single_Event_Migration_Strategy;
13
- use TEC\Events\Custom_Tables\V1\Migration\Expected_Migration_Exception;
14
  use TEC\Events\Custom_Tables\V1\Migration\Strategies\Strategy_Interface;
15
  use TEC\Events\Custom_Tables\V1\Models\Builder;
16
  use TEC\Events\Custom_Tables\V1\Schema_Builder\Schema_Builder;
17
  use TEC\Events\Custom_Tables\V1\Traits\With_Database_Transactions;
18
  use TEC\Events\Custom_Tables\V1\Traits\With_String_Dictionary;
19
  use Tribe__Admin__Notices;
 
 
20
 
21
  /**
22
  * Class Process_Worker. Handles the migration and undo operations.
@@ -215,7 +216,7 @@ class Process_Worker {
215
  * @return Event_Report A reference to the migration report object produced by the
216
  * migration.
217
  */
218
- public function migrate_event( $post_id, $dry_run = false ) {
219
  global $wpdb;
220
 
221
  // Log our worker starting
@@ -225,6 +226,8 @@ class Process_Worker {
225
  'dry_run' => $dry_run
226
  ] );
227
 
 
 
228
  /*
229
  * Get our Event_Report ready for the strategy.
230
  * This is also used in our error catching, so needs to be defined outside that block.
@@ -236,8 +239,6 @@ class Process_Worker {
236
  return $this->event_report;
237
  }
238
 
239
- $this->dry_run = $dry_run;
240
-
241
  // Set our dead-man switch.
242
  $this->migration_completed = false;
243
 
@@ -307,6 +308,8 @@ class Process_Worker {
307
  $this->before_dry_run( $post_id );
308
  }
309
 
 
 
310
  /**
311
  * Action to be fired immediately prior to applying migration strategy. Some migrations may still fail after this phase,
312
  * as there are various factors internal to the strategy that could cancel this migration.
@@ -380,10 +383,26 @@ class Process_Worker {
380
 
381
  $this->unbind_shutdown_handlers();
382
 
383
- $did_migration_error = ! $dry_run && $this->event_report->error;
384
- // If error in the migration phase, need to stop the queue.
385
- $continue_queue = $did_migration_error ? false : true;
386
- $next_post_id = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
387
 
388
  if ( $continue_queue ) {
389
  // Get next event to process.
@@ -587,10 +606,13 @@ class Process_Worker {
587
  */
588
  public function error_handler( int $errno, string $errstr, string $errfile ): bool {
589
  if ( $errno === E_WARNING ) {
590
- $tec = basename( TRIBE_EVENTS_FILE );
591
- $ecp = basename( EVENTS_CALENDAR_PRO_FILE );
592
 
593
- if ( ! tec_is_file_from_plugins( $errfile, $tec, $ecp ) ) {
 
 
 
 
594
  // Do not handle Warnings when coming from outside TEC or ECP codebase (e.g. caching plugins).
595
  return false;
596
  }
@@ -797,4 +819,78 @@ class Process_Worker {
797
  Builder::class_enable_query_execution( true );
798
  }
799
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
800
  }
10
 
11
  use TEC\Events\Custom_Tables\V1\Migration\Reports\Event_Report;
12
  use TEC\Events\Custom_Tables\V1\Migration\Strategies\Single_Event_Migration_Strategy;
 
13
  use TEC\Events\Custom_Tables\V1\Migration\Strategies\Strategy_Interface;
14
  use TEC\Events\Custom_Tables\V1\Models\Builder;
15
  use TEC\Events\Custom_Tables\V1\Schema_Builder\Schema_Builder;
16
  use TEC\Events\Custom_Tables\V1\Traits\With_Database_Transactions;
17
  use TEC\Events\Custom_Tables\V1\Traits\With_String_Dictionary;
18
  use Tribe__Admin__Notices;
19
+ use Tribe__Date_Utils as Dates;
20
+ use Tribe__Timezones as Timezones;
21
 
22
  /**
23
  * Class Process_Worker. Handles the migration and undo operations.
216
  * @return Event_Report A reference to the migration report object produced by the
217
  * migration.
218
  */
219
+ public function migrate_event( int $post_id, bool $dry_run = false ): ?Event_Report {
220
  global $wpdb;
221
 
222
  // Log our worker starting
226
  'dry_run' => $dry_run
227
  ] );
228
 
229
+ $this->dry_run = $dry_run;
230
+
231
  /*
232
  * Get our Event_Report ready for the strategy.
233
  * This is also used in our error catching, so needs to be defined outside that block.
239
  return $this->event_report;
240
  }
241
 
 
 
242
  // Set our dead-man switch.
243
  $this->migration_completed = false;
244
 
308
  $this->before_dry_run( $post_id );
309
  }
310
 
311
+ $this->fix_event_meta( $post_id );
312
+
313
  /**
314
  * Action to be fired immediately prior to applying migration strategy. Some migrations may still fail after this phase,
315
  * as there are various factors internal to the strategy that could cancel this migration.
383
 
384
  $this->unbind_shutdown_handlers();
385
 
386
+ // Flag to fail on first error.
387
+ $fail_on_first_error = (
388
+ defined( 'TEC_EVENTS_CUSTOM_TABLES_V1_MIGRATION_STOP_ON_FAILURE' )
389
+ && TEC_EVENTS_CUSTOM_TABLES_V1_MIGRATION_STOP_ON_FAILURE
390
+ )
391
+ || ! $dry_run;
392
+ /**
393
+ * Filter to determine whether we should stop on first failure or not. Useful for troubleshooting in preview mode.
394
+ * @since 6.0.1
395
+ *
396
+ * @param bool $fail_on_first_error
397
+ *
398
+ * @returns bool Whether we should stop on first failure or not.
399
+ */
400
+ $fail_on_first_error = apply_filters( 'tec_events_custom_tables_v1_migration_should_stop_on_failure', $fail_on_first_error );
401
+
402
+ // If error in the migration phase or fail on first error flag, then we need to stop the queue.
403
+ $did_migration_error = ( $fail_on_first_error && $this->event_report->error );
404
+ $continue_queue = $did_migration_error ? false : true;
405
+ $next_post_id = null;
406
 
407
  if ( $continue_queue ) {
408
  // Get next event to process.
606
  */
607
  public function error_handler( int $errno, string $errstr, string $errfile ): bool {
608
  if ( $errno === E_WARNING ) {
609
+ $check_plugins = [ basename( TRIBE_EVENTS_FILE ) ];
 
610
 
611
+ if ( defined( 'EVENTS_CALENDAR_PRO_FILE' ) ) {
612
+ $check_plugins[] = basename( EVENTS_CALENDAR_PRO_FILE );
613
+ }
614
+
615
+ if ( ! tec_is_file_from_plugins( $errfile, ...$check_plugins ) ) {
616
  // Do not handle Warnings when coming from outside TEC or ECP codebase (e.g. caching plugins).
617
  return false;
618
  }
819
  Builder::class_enable_query_execution( true );
820
  }
821
  }
822
+
823
+ /**
824
+ * Updates the Event date and duration meta to make sure it's consistent.
825
+ *
826
+ * @since 6.0.1
827
+ *
828
+ * @param int $post_id The ID of the Event to update.
829
+ *
830
+ * @return void Updates the Event date and duration meta to make sure it's consistent.
831
+ *
832
+ * @throws Migration_Exception If the Event date and duration meta could not be updated.
833
+ */
834
+ private function fix_event_meta( int $post_id ): void {
835
+ /**
836
+ * Filters whether an Event date related meta should be fixed before migration or not.
837
+ *
838
+ * @since 6.0.0
839
+ *
840
+ * @param bool $fix_event_duration Whether the Event date related meta should be fixed before migration or not.
841
+ * @param int $post_id The ID of the post being migrated.
842
+ */
843
+ $should_fix_meta = apply_filters( 'tec_events_custom_tables_v1_migration_fix_event_date_meta', true, $post_id );
844
+
845
+ if ( ! $should_fix_meta ) {
846
+ return;
847
+ }
848
+
849
+ // At this stage, we can be sure the meta will be there.
850
+ $start_date = get_post_meta( $post_id, '_EventStartDate', true );
851
+ $end_date = get_post_meta( $post_id, '_EventEndDate', true );
852
+ $start_date_utc = get_post_meta( $post_id, '_EventStartDateUTC', true );
853
+ $end_date_utc = get_post_meta( $post_id, '_EventEndDateUTC', true );
854
+
855
+ $has_start = ! empty( $start_date ) || ! empty( $start_date_utc );
856
+ $has_end = ! empty( $end_date ) || ! empty( $end_date_utc );
857
+
858
+ if ( ! ( $has_start && $has_end ) ) {
859
+ throw new Migration_Exception(
860
+ 'Required Event date data is missing: check the event for missing or invalid data in the start and end date fields.'
861
+ );
862
+ }
863
+
864
+ $timezone_string = get_post_meta( $post_id, '_EventTimezone', true );
865
+
866
+ if ( ! Timezones::is_valid_timezone( $timezone_string ) ) {
867
+ // Use the site one, if not set.
868
+ $timezone_string = Timezones::build_timezone_object()->getName();
869
+ update_post_meta( $post_id, '_EventTimezone', $timezone_string );
870
+ update_post_meta( $post_id, '_EventTimezoneAbbr', Timezones::abbr( $start_date, $timezone_string ) );
871
+ }
872
+
873
+ $timezone = Timezones::build_timezone_object( $timezone_string );
874
+ $utc = new \DateTimeZone( 'UTC' );
875
+
876
+ $dtstart = $start_date ?
877
+ Dates::immutable( $start_date, $timezone )
878
+ : Dates::immutable( $start_date_utc, $utc )->setTimezone( $timezone );
879
+
880
+ $dtend = $end_date ?
881
+ Dates::immutable( $end_date, $timezone )
882
+ : Dates::immutable( $end_date_utc, $utc )->setTimezone( $timezone );
883
+
884
+ $updated_duration = $dtend->getTimestamp() - $dtstart->getTimestamp();
885
+ $event_start_date = $dtstart->format( Dates::DBDATETIMEFORMAT );
886
+ $event_end_date = $dtend->format( Dates::DBDATETIMEFORMAT );
887
+ $event_start_date_utc = $dtstart->setTimezone( $utc )->format( Dates::DBDATETIMEFORMAT );
888
+ $event_end_date_utc = $dtend->setTimezone( $utc )->format( Dates::DBDATETIMEFORMAT );
889
+
890
+ update_post_meta( $post_id, '_EventDuration', $updated_duration );
891
+ update_post_meta( $post_id, '_EventStartDate', $event_start_date );
892
+ update_post_meta( $post_id, '_EventEndDate', $event_end_date );
893
+ update_post_meta( $post_id, '_EventStartDateUTC', $event_start_date_utc );
894
+ update_post_meta( $post_id, '_EventEndDateUTC', $event_end_date_utc );
895
+ }
896
  }
src/Events/Custom_Tables/V1/Migration/Reports/Site_Report.php CHANGED
@@ -11,8 +11,6 @@ namespace TEC\Events\Custom_Tables\V1\Migration\Reports;
11
  use JsonSerializable;
12
  use TEC\Events\Custom_Tables\V1\Migration\Events;
13
  use TEC\Events\Custom_Tables\V1\Migration\State;
14
- use TEC\Events_Pro\Custom_Tables\V1\EventRecurrence_Factory;
15
- use Tribe__Events__Main as TEC;
16
 
17
  /**
18
  * Class Site_Report.
@@ -52,6 +50,7 @@ class Site_Report implements JsonSerializable {
52
  'total_events' => null,
53
  'total_events_migrated' => null,
54
  'total_events_in_progress' => null,
 
55
  'has_changes' => false,
56
  'migration_phase' => null,
57
  'is_completed' => false,
@@ -69,21 +68,21 @@ class Site_Report implements JsonSerializable {
69
  * @param array <string,mixed> $data The report data in array format.
70
  */
71
  public function __construct( array $data ) {
72
- $this->data['estimated_time_in_seconds'] = $data['estimated_time_in_seconds'];
73
- $this->data['estimated_time_in_minutes'] = $data['estimated_time_in_minutes'];
74
- $this->data['total_events'] = (int) $data['total_events'];
75
  $this->data['total_events_remaining'] = (int) $data['total_events_remaining'];
76
  $this->data['total_events_in_progress'] = (int) $data['total_events_in_progress'];
77
  $this->data['total_events_migrated'] = (int) $data['total_events_migrated'];
78
  $this->data['has_changes'] = (boolean) $data['has_changes'];
79
  $this->data['has_errors'] = (boolean) $data['has_errors'];
80
- $this->data['migration_phase'] = $data['migration_phase'];
81
- $this->data['is_completed'] = $data['is_completed'];
82
- $this->data['is_running'] = $data['is_running'];
83
- $this->data['progress_percent'] = $data['progress_percent'];
84
- $this->data['date_completed'] = $data['date_completed'];
85
- $this->data['total_events_failed'] = $data['total_events_failed'];
86
- $this->data['completed_timestamp'] = $data['completed_timestamp'];
87
  }
88
 
89
  /**
11
  use JsonSerializable;
12
  use TEC\Events\Custom_Tables\V1\Migration\Events;
13
  use TEC\Events\Custom_Tables\V1\Migration\State;
 
 
14
 
15
  /**
16
  * Class Site_Report.
50
  'total_events' => null,
51
  'total_events_migrated' => null,
52
  'total_events_in_progress' => null,
53
+ 'total_events_remaining' => null,
54
  'has_changes' => false,
55
  'migration_phase' => null,
56
  'is_completed' => false,
68
  * @param array <string,mixed> $data The report data in array format.
69
  */
70
  public function __construct( array $data ) {
71
+ $this->data['estimated_time_in_seconds'] = $data['estimated_time_in_seconds'] ?? 0;
72
+ $this->data['estimated_time_in_minutes'] = $data['estimated_time_in_minutes'] ?? 0;
73
+ $this->data['total_events'] = (int) $data['total_events'] ;
74
  $this->data['total_events_remaining'] = (int) $data['total_events_remaining'];
75
  $this->data['total_events_in_progress'] = (int) $data['total_events_in_progress'];
76
  $this->data['total_events_migrated'] = (int) $data['total_events_migrated'];
77
  $this->data['has_changes'] = (boolean) $data['has_changes'];
78
  $this->data['has_errors'] = (boolean) $data['has_errors'];
79
+ $this->data['migration_phase'] = $data['migration_phase'] ?? null;
80
+ $this->data['is_completed'] = $data['is_completed'] ?? false;
81
+ $this->data['is_running'] = $data['is_running'] ?? false;
82
+ $this->data['progress_percent'] = $data['progress_percent'] ?? 0;
83
+ $this->data['date_completed'] = $data['date_completed'] ?? null;
84
+ $this->data['total_events_failed'] = $data['total_events_failed'] ?? null;
85
+ $this->data['completed_timestamp'] = $data['completed_timestamp'] ?? null;
86
  }
87
 
88
  /**
src/Events/Custom_Tables/V1/Migration/Strategies/Single_Event_Migration_Strategy.php CHANGED
@@ -57,7 +57,7 @@ class Single_Event_Migration_Strategy implements Strategy_Interface {
57
  $recurrence_meta = get_post_meta( $post_id, '_EventRecurrence', true );
58
 
59
  if ( ! empty( $recurrence_meta ) && ! empty( $recurrence_meta['rules'] ) ) {
60
- throw new Migration_Exception( 'Attempting to run Single Event strategy for recurring event. Is a strategy missing for this type of event?' );
61
  }
62
 
63
  $this->dry_run = $dry_run;
@@ -99,7 +99,7 @@ class Single_Event_Migration_Strategy implements Strategy_Interface {
99
 
100
  $event_model->occurrences()->save_occurrences();
101
 
102
- $occurrences = Occurrence::where('post_id','=',$this->post_id)
103
  ->count();
104
 
105
  if ( $occurrences !== 1 ) {
57
  $recurrence_meta = get_post_meta( $post_id, '_EventRecurrence', true );
58
 
59
  if ( ! empty( $recurrence_meta ) && ! empty( $recurrence_meta['rules'] ) ) {
60
+ throw new Migration_Exception( 'Attempting to run Single Event strategy for recurring event. Install and activate the latest version of Events Calendar PRO.' );
61
  }
62
 
63
  $this->dry_run = $dry_run;
99
 
100
  $event_model->occurrences()->save_occurrences();
101
 
102
+ $occurrences = Occurrence::where( 'post_id', '=', $this->post_id )
103
  ->count();
104
 
105
  if ( $occurrences !== 1 ) {
src/Events/Custom_Tables/V1/Models/Builder.php CHANGED
@@ -1440,4 +1440,30 @@ class Builder {
1440
 
1441
  return $inserted;
1442
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1443
  }
1440
 
1441
  return $inserted;
1442
  }
1443
+
1444
+ /**
1445
+ * Gets the results and plucks a field from each.
1446
+ *
1447
+ * @since 6.0.1
1448
+ *
1449
+ * @param string $field The field to pluck.
1450
+ *
1451
+ * @return array The plucked values.
1452
+ */
1453
+ public function pluck( string $field ): array {
1454
+ return wp_list_pluck( $this->get(), $field );
1455
+ }
1456
+
1457
+ /**
1458
+ * Maps from the results of the query to a new array using the callback.
1459
+ *
1460
+ * @since 6.0.1
1461
+ *
1462
+ * @param callable $callback The callback to use to map the results.
1463
+ *
1464
+ * @return array The mapped results.
1465
+ */
1466
+ public function map( callable $callback ): array {
1467
+ return array_map( $callback, $this->get() );
1468
+ }
1469
  }
src/Events/Custom_Tables/V1/Models/Model.php CHANGED
@@ -44,6 +44,8 @@ use TEC\Events\Custom_Tables\V1\Models\Validators\ValidatorInterface;
44
  * @method static Builder output( string $output ) Sets the format that should be used to format results in SELECT queries.
45
  * @method static Builder all( ) Find all the records based on the built query.
46
  * @method static int upsert_set( array $data ) Update or Insert a multiple records into the table.
 
 
47
  */
48
  abstract class Model implements Serializable {
49
  /**
44
  * @method static Builder output( string $output ) Sets the format that should be used to format results in SELECT queries.
45
  * @method static Builder all( ) Find all the records based on the built query.
46
  * @method static int upsert_set( array $data ) Update or Insert a multiple records into the table.
47
+ * @method static array pluck( string $field ) Pluck a single field from the results.
48
+ * @method static array map (callable $callback ) Maps from the results of the query to a new array using the callback.
49
  */
50
  abstract class Model implements Serializable {
51
  /**
src/Events/Custom_Tables/V1/Models/Occurrence.php CHANGED
@@ -19,7 +19,7 @@ use TEC\Events\Custom_Tables\V1\Models\Formatters\Date_Formatter;
19
  use TEC\Events\Custom_Tables\V1\Models\Formatters\Integer_Key_Formatter;
20
  use TEC\Events\Custom_Tables\V1\Models\Formatters\Numeric_Formatter;
21
  use TEC\Events\Custom_Tables\V1\Models\Formatters\Text_Formatter;
22
- use TEC\Events\Custom_Tables\V1\Models\Validators\Duration;
23
  use TEC\Events\Custom_Tables\V1\Models\Validators\End_Date;
24
  use TEC\Events\Custom_Tables\V1\Models\Validators\End_Date_UTC;
25
  use TEC\Events\Custom_Tables\V1\Models\Validators\Integer_Key;
@@ -70,7 +70,7 @@ class Occurrence extends Model {
70
  'end_date' => End_Date::class,
71
  'start_date_utc' => Start_Date_UTC::class,
72
  'end_date_utc' => End_Date_UTC::class,
73
- 'duration' => Duration::class,
74
  'hash' => String_Validator::class,
75
  'updated_at' => Valid_Date::class,
76
  ];
19
  use TEC\Events\Custom_Tables\V1\Models\Formatters\Integer_Key_Formatter;
20
  use TEC\Events\Custom_Tables\V1\Models\Formatters\Numeric_Formatter;
21
  use TEC\Events\Custom_Tables\V1\Models\Formatters\Text_Formatter;
22
+ use TEC\Events\Custom_Tables\V1\Models\Validators\Occurrence_Duration;
23
  use TEC\Events\Custom_Tables\V1\Models\Validators\End_Date;
24
  use TEC\Events\Custom_Tables\V1\Models\Validators\End_Date_UTC;
25
  use TEC\Events\Custom_Tables\V1\Models\Validators\Integer_Key;
70
  'end_date' => End_Date::class,
71
  'start_date_utc' => Start_Date_UTC::class,
72
  'end_date_utc' => End_Date_UTC::class,
73
+ 'duration' => Occurrence_Duration::class,
74
  'hash' => String_Validator::class,
75
  'updated_at' => Valid_Date::class,
76
  ];
src/Events/Custom_Tables/V1/Models/Validators/Duration.php CHANGED
@@ -24,14 +24,12 @@ class Duration extends Validator {
24
  /**
25
  * @var Whole_Number
26
  */
27
- private $whole_number_validator;
28
 
29
  /**
30
  * Duration constructor.
31
  *
32
- * @param Valid_Date $date_validator A reference to the Date validator.
33
- * @param Range_Dates $range_dates_validator A reference to the Dates Range validator.
34
- * @param Positive_Integer $whole_number_validator A reference to the Positive Integer validator.
35
  */
36
  public function __construct( Whole_Number $whole_number_validator) {
37
  $this->whole_number_validator = $whole_number_validator;
@@ -52,8 +50,8 @@ class Duration extends Validator {
52
 
53
  if ( $model->start_date && $model->end_date ) {
54
  // If possible, validate against the entry Start and End Dates.
55
- if ( ! $this->check_against_dates( $model->start_date, $model->end_date, $duration ) ) {
56
- $this->add_error_message( "The {$duration} is greater than the duration of the event" );
57
 
58
  return false;
59
  }
@@ -61,8 +59,8 @@ class Duration extends Validator {
61
 
62
  if ( $model->start_date_utc && $model->end_date_utc ) {
63
  // If possible, validate against the entry Start and End Dates.
64
- if ( ! $this->check_against_dates( $model->start_date_utc, $model->end_date_utc, $duration ) ) {
65
- $this->add_error_message( "The {$duration} is greater than the duration of the event" );
66
 
67
  return false;
68
  }
@@ -79,15 +77,16 @@ class Duration extends Validator {
79
  *
80
  * @since 6.0.0
81
  *
82
- * @param string|int|\DateTimeInterface $start_date The Start Date.
83
- * @param string|int|\DateTimeInterface $end_date The End Date.
84
- * @param int $duration The Duration value.
 
85
  *
86
  * @return bool Whether the Duration value is valid when validated in the context of the Dates or not.
87
  */
88
- private function check_against_dates( $start_date, $end_date, $duration ) {
89
- $start_date_object = Dates::build_date_object( $start_date );
90
- $end_date_object = Dates::build_date_object( $end_date );
91
  $date_duration = $end_date_object->getTimestamp() - $start_date_object->getTimestamp();
92
 
93
  return $date_duration >= $duration;
24
  /**
25
  * @var Whole_Number
26
  */
27
+ protected $whole_number_validator;
28
 
29
  /**
30
  * Duration constructor.
31
  *
32
+ * @param Whole_Number $whole_number_validator A reference to the Positive Integer validator.
 
 
33
  */
34
  public function __construct( Whole_Number $whole_number_validator) {
35
  $this->whole_number_validator = $whole_number_validator;
50
 
51
  if ( $model->start_date && $model->end_date ) {
52
  // If possible, validate against the entry Start and End Dates.
53
+ if ( ! $this->check_against_dates( $model->start_date, $model->end_date, $duration, $model->timezone ) ) {
54
+ $this->add_error_message( "The Event duration ({$duration}) is greater than the one calculated using dates." );
55
 
56
  return false;
57
  }
59
 
60
  if ( $model->start_date_utc && $model->end_date_utc ) {
61
  // If possible, validate against the entry Start and End Dates.
62
+ if ( ! $this->check_against_dates( $model->start_date_utc, $model->end_date_utc, $duration, 'UTC' ) ) {
63
+ $this->add_error_message( "The Event duration ({$duration}) is greater than the one calculated using UTC dates." );
64
 
65
  return false;
66
  }
77
  *
78
  * @since 6.0.0
79
  *
80
+ * @param string|int|\DateTimeInterface $start_date The Start Date.
81
+ * @param string|int|\DateTimeInterface $end_date The End Date.
82
+ * @param int $duration The Duration value.
83
+ * @param string|null $timezone The timezone to use for the calculation.
84
  *
85
  * @return bool Whether the Duration value is valid when validated in the context of the Dates or not.
86
  */
87
+ protected function check_against_dates( $start_date, $end_date, int $duration, ?string $timezone = null ) {
88
+ $start_date_object = Dates::build_date_object( $start_date, $timezone );
89
+ $end_date_object = Dates::build_date_object( $end_date, $timezone );
90
  $date_duration = $end_date_object->getTimestamp() - $start_date_object->getTimestamp();
91
 
92
  return $date_duration >= $duration;
src/Events/Custom_Tables/V1/Models/Validators/Occurrence_Duration.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Validates Occurrence Duration input.
4
+ *
5
+ * @since 6.0.1
6
+ *
7
+ * @package TEC\Events\Custom_Tables\V1\Models\Validators
8
+ */
9
+
10
+ namespace TEC\Events\Custom_Tables\V1\Models\Validators;
11
+
12
+ use TEC\Events\Custom_Tables\V1\Models\Event;
13
+ use TEC\Events\Custom_Tables\V1\Models\Occurrence;
14
+ use TEC\Events\Custom_Tables\V1\Models\Model;
15
+
16
+ /**
17
+ * Class Occurrence_Duration
18
+ *
19
+ * @since 6.0.1
20
+ *
21
+ * @package TEC\Events\Custom_Tables\V1\Models\Validators
22
+ */
23
+ class Occurrence_Duration extends Duration {
24
+
25
+ /**
26
+ * {@inheritDoc}
27
+ */
28
+ public function validate( Model $model, $name, $value ) {
29
+ // Duration cannot be negative
30
+ if ( ! $this->whole_number_validator->validate( $model, 'duration', $value ) ) {
31
+ $this->add_error_message( 'Duration must be a positive integer' );
32
+
33
+ return false;
34
+ }
35
+
36
+ $duration = (int) $value;
37
+
38
+ if ( $model->start_date && $model->end_date ) {
39
+ // If possible, validate against the entry Start and End Dates.
40
+ if ( ! $this->check_against_dates( $model->start_date, $model->end_date, $duration, $this->get_occurrence_timezone( $model ) ) ) {
41
+ $this->add_error_message( "The Occurrence duration ({$duration}) is greater than the one calculated using dates." );
42
+
43
+ return false;
44
+ }
45
+ }
46
+
47
+ if ( $model->start_date_utc && $model->end_date_utc ) {
48
+ // If possible, validate against the entry Start and End Dates.
49
+ if ( ! $this->check_against_dates( $model->start_date_utc, $model->end_date_utc, $duration, 'UTC' ) ) {
50
+ $this->add_error_message( "The Occurrence duration ({$duration}) is greater than the one calculated using UTC dates." );
51
+
52
+ return false;
53
+ }
54
+ }
55
+
56
+ return true;
57
+ }
58
+
59
+ /**
60
+ * Fetch the timezone that relates to this occurrence.
61
+ *
62
+ * @since 6.0.1
63
+ *
64
+ * @param Occurrence $model The occurrence to fetch it's timezone for.
65
+ *
66
+ * @return string|null
67
+ */
68
+ protected function get_occurrence_timezone( Occurrence $model ): ?string {
69
+ $event = Event::find( $model->event_id );
70
+ if ( $event instanceof Event ) {
71
+
72
+ return $event->timezone;
73
+ }
74
+
75
+ return null;
76
+ }
77
+ }
src/Events/Custom_Tables/V1/Provider.php CHANGED
@@ -194,6 +194,7 @@ class Provider extends Service_Provider {
194
 
195
  // If the plugin has been silently activated, then init it now.
196
  add_action( 'init', [ Activation::class, 'init' ] );
 
197
  }
198
 
199
  /**
194
 
195
  // If the plugin has been silently activated, then init it now.
196
  add_action( 'init', [ Activation::class, 'init' ] );
197
+ add_filter( 'tec_system_information', [ Activation::class, 'filter_include_migration_in_system_info' ] );
198
  }
199
 
200
  /**
src/Events/Custom_Tables/V1/Repository/Events.php CHANGED
@@ -9,6 +9,7 @@
9
 
10
  namespace TEC\Events\Custom_Tables\V1\Repository;
11
 
 
12
  use TEC\Events\Custom_Tables\V1\Models\Event;
13
  use WP_Post;
14
  use Tribe__Events__Main as TEC;
@@ -22,17 +23,26 @@ use RuntimeException;
22
  * @package tec\events\custom_tables\v1\repository
23
  */
24
  class Events {
 
 
 
 
 
 
 
 
 
25
  /**
26
  * Returns the callback that should be used to update Events in the context of
27
  * the Repository.
28
  *
29
  * @since 6.0.0
30
  *
31
- * @return callable The callback that should be used to upsert the Event data in the custom tables.
32
  */
33
- public function update_callback( $repository_callback, array $postarr = [] ) {
34
  // Run the original callback, then ours.
35
- $wrapping_callback = function ( ...$args ) use ( $repository_callback, $postarr ) {
36
  $post_id = $repository_callback( ...$args );
37
 
38
  if ( ! $post_id ) {
@@ -41,8 +51,6 @@ class Events {
41
 
42
  return $this->update( $post_id, $postarr );
43
  };
44
-
45
- return $wrapping_callback;
46
  }
47
 
48
  /**
@@ -50,12 +58,12 @@ class Events {
50
  *
51
  * @since 6.0.0
52
  *
53
- * @param int|\WP_Post $event_id The Event post ID, or a reference to the Event post object.
54
  * @param array<string,mixed> $data The data, all of it, used to upsert the Event.
55
  *
56
  * @return int|null Either the updated Event post ID, or `null` if the Event could not be created.
57
  */
58
- public function update( $event_id, $data ) {
59
  $event_post = get_post( $event_id );
60
 
61
  if ( ! ( $event_post instanceof WP_Post && TEC::POSTTYPE === $event_post->post_type ) ) {
@@ -64,6 +72,7 @@ class Events {
64
  }
65
 
66
  try {
 
67
  $event = $this->upsert_event( $event_id );
68
  $this->save_occurrences( $event );
69
  } catch ( \Exception $e ) {
9
 
10
  namespace TEC\Events\Custom_Tables\V1\Repository;
11
 
12
+ use Closure;
13
  use TEC\Events\Custom_Tables\V1\Models\Event;
14
  use WP_Post;
15
  use Tribe__Events__Main as TEC;
23
  * @package tec\events\custom_tables\v1\repository
24
  */
25
  class Events {
26
+ /**
27
+ * A map of the update data per post ID.
28
+ *
29
+ * @since 6.0.0
30
+ *
31
+ * @var array<int,array<string,mixed>>
32
+ */
33
+ private $update_data = [];
34
+
35
  /**
36
  * Returns the callback that should be used to update Events in the context of
37
  * the Repository.
38
  *
39
  * @since 6.0.0
40
  *
41
+ * @return Closure The callback that should be used to upsert the Event data in the custom tables.
42
  */
43
+ public function update_callback( callable $repository_callback, array $postarr = [] ): Closure {
44
  // Run the original callback, then ours.
45
+ return function ( ...$args ) use ( $repository_callback, $postarr ) {
46
  $post_id = $repository_callback( ...$args );
47
 
48
  if ( ! $post_id ) {
51
 
52
  return $this->update( $post_id, $postarr );
53
  };
 
 
54
  }
55
 
56
  /**
58
  *
59
  * @since 6.0.0
60
  *
61
+ * @param int|WP_Post $event_id The Event post ID, or a reference to the Event post object.
62
  * @param array<string,mixed> $data The data, all of it, used to upsert the Event.
63
  *
64
  * @return int|null Either the updated Event post ID, or `null` if the Event could not be created.
65
  */
66
+ public function update( $event_id, array $data ): ?int {
67
  $event_post = get_post( $event_id );
68
 
69
  if ( ! ( $event_post instanceof WP_Post && TEC::POSTTYPE === $event_post->post_type ) ) {
72
  }
73
 
74
  try {
75
+ $this->update_data[ $event_id ] = $data;
76
  $event = $this->upsert_event( $event_id );
77
  $this->save_occurrences( $event );
78
  } catch ( \Exception $e ) {
src/Events/Custom_Tables/V1/Repository/Provider.php CHANGED
@@ -56,7 +56,7 @@ class Provider extends Service_Provider implements Provider_Contract {
56
  * @return callable The callback that will handle upsertions of an Event custom tables data
57
  * in the context of a repository call.
58
  */
59
- public function update_callback( $repository_callback, array $postarr = [] ) {
60
  return $this->container->make( Events::class )->update_callback( $repository_callback, $postarr );
61
  }
62
  }
56
  * @return callable The callback that will handle upsertions of an Event custom tables data
57
  * in the context of a repository call.
58
  */
59
+ public function update_callback( callable $repository_callback, array $postarr = [] ): callable {
60
  return $this->container->make( Events::class )->update_callback( $repository_callback, $postarr );
61
  }
62
  }
src/Events/Custom_Tables/V1/Updates/Requests.php CHANGED
@@ -79,6 +79,12 @@ class Requests {
79
 
80
  $post_id = Arr::get_first_set( $request->get_params(), $post_id_locations, 0 );
81
 
 
 
 
 
 
 
82
  // For consistency with the REST Request, set up the `id` parameter.
83
  $request->set_param( 'id', (int) $post_id );
84
 
79
 
80
  $post_id = Arr::get_first_set( $request->get_params(), $post_id_locations, 0 );
81
 
82
+ // If we're loading one of the front-end forms, `post_id` will be empty.
83
+ if ( empty( $post_id ) && tribe_is_frontend() ) {
84
+ global $post;
85
+ $post_id = $post->ID ?? $post_id;
86
+ }
87
+
88
  // For consistency with the REST Request, set up the `id` parameter.
89
  $request->set_param( 'id', (int) $post_id );
90
 
src/Events/Custom_Tables/V1/WP_Query/Custom_Tables_Query.php CHANGED
@@ -176,6 +176,9 @@ class Custom_Tables_Query extends WP_Query {
176
  $this->wp_query->found_posts = $this->found_posts;
177
  }
178
 
 
 
 
179
  return $results;
180
  }
181
 
@@ -439,7 +442,7 @@ class Custom_Tables_Query extends WP_Query {
439
  }
440
 
441
  global $wpdb;
442
- $join .= " LEFT JOIN {$occurrences} ON {$wpdb->posts}.ID = {$occurrences}.post_id";
443
 
444
  return $join;
445
  }
176
  $this->wp_query->found_posts = $this->found_posts;
177
  }
178
 
179
+ // Set the request SQL that actually ran to allow easier debugging of the query.
180
+ $this->wp_query->request = $this->request;
181
+
182
  return $results;
183
  }
184
 
442
  }
443
 
444
  global $wpdb;
445
+ $join .= " JOIN {$occurrences} ON {$wpdb->posts}.ID = {$occurrences}.post_id";
446
 
447
  return $join;
448
  }
src/Events/Custom_Tables/V1/WP_Query/Modifiers/Events_Not_In_Series_Modifier.php CHANGED
@@ -45,6 +45,11 @@ class Events_Not_In_Series_Modifier extends Base_Modifier {
45
  * {@inheritdoc}
46
  */
47
  public function applies_to( WP_Query $query = null ) {
 
 
 
 
 
48
  if ( empty( $query->query_vars[ self::POST_NOT_IN_SERIES ] ) ) {
49
  return false;
50
  }
45
  * {@inheritdoc}
46
  */
47
  public function applies_to( WP_Query $query = null ) {
48
+
49
+ if ( ! class_exists( 'Tribe__Events__Pro__Main' ) ) {
50
+ return false;
51
+ }
52
+
53
  if ( empty( $query->query_vars[ self::POST_NOT_IN_SERIES ] ) ) {
54
  return false;
55
  }
src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/migration-in-progress.php CHANGED
@@ -39,7 +39,7 @@ use TEC\Events\Custom_Tables\V1\Migration\String_Dictionary;
39
  </div>
40
  <div>
41
  <a href="#"
42
- class="tec-ct1-action-container tec-ct1-upgrade-cancel-migration tec-ct1-upgrade__link-danger"><?php echo esc_html( $text->get( 'cancel-migration-button' ) ); ?></a>
43
  </div>
44
  </div>
45
  <div class="image-container">
39
  </div>
40
  <div>
41
  <a href="#"
42
+ class="tec-ct1-upgrade-cancel-migration tec-ct1-upgrade__link-danger"><?php echo esc_html( $text->get( 'cancel-migration-button' ) ); ?></a>
43
  </div>
44
  </div>
45
  <div class="image-container">
src/Events/Custom_Tables/V1/admin-views/migration/upgrade-box.php CHANGED
@@ -12,7 +12,7 @@
12
  use TEC\Events\Custom_Tables\V1\Migration\String_Dictionary;
13
  use TEC\Events\Custom_Tables\V1\Migration\Admin\Upgrade_Tab;
14
 
15
- $is_outdated_pro = class_exists( 'Tribe__Events__Pro__Main' ) && version_compare( Tribe__Events__Pro__Main::VERSION, '6.0.0-beta4-dev', '<=' );
16
  ?>
17
 
18
  <?php if ( $is_outdated_pro ) : ?>
12
  use TEC\Events\Custom_Tables\V1\Migration\String_Dictionary;
13
  use TEC\Events\Custom_Tables\V1\Migration\Admin\Upgrade_Tab;
14
 
15
+ $is_outdated_pro = class_exists( 'Tribe__Events__Pro__Main' ) && version_compare( Tribe__Events__Pro__Main::VERSION, '6.0.0-dev', '<=' );
16
  ?>
17
 
18
  <?php if ( $is_outdated_pro ) : ?>
src/Tribe/Admin/Settings.php CHANGED
@@ -163,7 +163,7 @@ class Settings {
163
  [
164
  'id' => static::$settings_page_id,
165
  'parent' => $this->get_tec_events_menu_slug(),
166
- 'title' => esc_html__( 'Settings', 'tribe-common' ),
167
  'path' => static::$settings_page_id,
168
  'callback' => [
169
  tribe( 'settings' ),
@@ -392,8 +392,8 @@ class Settings {
392
  include_once tribe( 'tec.main' )->plugin_path . 'src/admin-views/tribe-options-general.php';
393
  include_once tribe( 'tec.main' )->plugin_path . 'src/admin-views/tribe-options-display.php';
394
 
395
- $this->tabs['general'] = new Tribe__Settings_Tab( 'general', esc_html__( 'General', 'tribe-common' ), $generalTab );
396
- $this->tabs['display'] = new Tribe__Settings_Tab( 'display', esc_html__( 'Display', 'tribe-common' ), $displayTab );
397
  }
398
 
399
  /**
163
  [
164
  'id' => static::$settings_page_id,
165
  'parent' => $this->get_tec_events_menu_slug(),
166
+ 'title' => esc_html__( 'Settings', 'the-events-calendar' ),
167
  'path' => static::$settings_page_id,
168
  'callback' => [
169
  tribe( 'settings' ),
392
  include_once tribe( 'tec.main' )->plugin_path . 'src/admin-views/tribe-options-general.php';
393
  include_once tribe( 'tec.main' )->plugin_path . 'src/admin-views/tribe-options-display.php';
394
 
395
+ $this->tabs['general'] = new Tribe__Settings_Tab( 'general', esc_html__( 'General', 'the-events-calendar' ), $generalTab );
396
+ $this->tabs['display'] = new Tribe__Settings_Tab( 'display', esc_html__( 'Display', 'the-events-calendar' ), $displayTab );
397
  }
398
 
399
  /**
src/Tribe/Aggregator/Record/Abstract.php CHANGED
@@ -2140,7 +2140,13 @@ abstract class Tribe__Events__Aggregator__Record__Abstract {
2140
  $selected_ids = json_decode( $this->meta['ids_to_import'] );
2141
  }
2142
  } else {
2143
- $selected_ids = wp_list_pluck( $import_data, $unique_field['source'] );
 
 
 
 
 
 
2144
  }
2145
 
2146
  if ( empty( $selected_ids ) ) {
2140
  $selected_ids = json_decode( $this->meta['ids_to_import'] );
2141
  }
2142
  } else {
2143
+ $source_field = $unique_field['source'];
2144
+ $selected_ids = array_filter( array_map( static function ( $entry ) use ( $source_field ): ?int {
2145
+ $array_entry = (array) $entry;
2146
+ $value = $array_entry[ $source_field ] ?? null;
2147
+
2148
+ return is_numeric( $value ) ? (int) $value : null;
2149
+ }, $import_data ) );
2150
  }
2151
 
2152
  if ( empty( $selected_ids ) ) {
src/Tribe/Deactivation.php CHANGED
@@ -10,6 +10,12 @@ class Tribe__Events__Deactivation extends Tribe__Abstract_Deactivation {
10
  // Ensure the class is loaded before using it, we're in shutdown context and common autoloader might be unset.
11
  require_once __DIR__ . '/Updater.php';
12
  $updater = new Tribe__Events__Updater( Tribe__Main::VERSION );
 
 
 
 
 
 
13
  $updater->reset();
14
  }
15
 
10
  // Ensure the class is loaded before using it, we're in shutdown context and common autoloader might be unset.
11
  require_once __DIR__ . '/Updater.php';
12
  $updater = new Tribe__Events__Updater( Tribe__Main::VERSION );
13
+
14
+ // Reset uses cached values, which means the sub-sites will be overwritten by the main site cache.
15
+ if ( $this->network && ! is_main_site() ) {
16
+ return;
17
+ }
18
+
19
  $updater->reset();
20
  }
21
 
src/Tribe/Editor/Compatibility.php CHANGED
@@ -19,6 +19,9 @@ class Tribe__Events__Editor__Compatibility {
19
  * Key we store the toggle under in the tribe_events_calendar_options array.
20
  *
21
  * @since 15.4.0
 
 
 
22
  *
23
  * @var string
24
  */
@@ -55,8 +58,12 @@ class Tribe__Events__Editor__Compatibility {
55
  * @return bool
56
  */
57
  public function is_blocks_editor_toggled_on() {
58
- if ( null !== static::$blocks_editor_value ) {
59
- return static::$blocks_editor_value;
 
 
 
 
60
  }
61
 
62
  $is_on = tribe_get_option( static::$blocks_editor_key, false );
@@ -68,9 +75,11 @@ class Tribe__Events__Editor__Compatibility {
68
  *
69
  * @param bool $is_on Whether the Blocks Editor is on or not.
70
  */
71
- static::$blocks_editor_value = (bool) apply_filters( 'tribe_events_blocks_editor_is_on', $is_on );
 
 
72
 
73
- return tribe_is_truthy( static::$blocks_editor_value );
74
  }
75
 
76
  /**
19
  * Key we store the toggle under in the tribe_events_calendar_options array.
20
  *
21
  * @since 15.4.0
22
+ * @since 6.0.1
23
+ *
24
+ * @deprecated Using the \Tribe__Cache object instead of caching locally.
25
  *
26
  * @var string
27
  */
58
  * @return bool
59
  */
60
  public function is_blocks_editor_toggled_on() {
61
+ $cache = tribe( 'cache' );
62
+ $cache_key = 'tec_editor_compatibility_' . static::$blocks_editor_key;
63
+
64
+ $is_on = $cache->get( $cache_key, '', null );
65
+ if ( $is_on !== null ) {
66
+ return tribe_is_truthy( $is_on );
67
  }
68
 
69
  $is_on = tribe_get_option( static::$blocks_editor_key, false );
75
  *
76
  * @param bool $is_on Whether the Blocks Editor is on or not.
77
  */
78
+ $is_on = (bool) apply_filters( 'tribe_events_blocks_editor_is_on', $is_on );
79
+
80
+ $cache->set( $cache_key, $is_on, \Tribe__Cache::NON_PERSISTENT );
81
 
82
+ return tribe_is_truthy( $is_on );
83
  }
84
 
85
  /**
src/Tribe/Integrations/Divi/Service_Provider.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Handles The Events Calendar integration with the Divi theme builder.
4
+ *
5
+ * @since 6.0.1
6
+ *
7
+ * @package Tribe\Events\Integrations\Divi
8
+ */
9
+
10
+ namespace Tribe\Events\Integrations\Divi;
11
+
12
+ /**
13
+ * Class Service_Provider
14
+ *
15
+ * @since 6.0.1
16
+ *
17
+ * @package Tribe\Events\Integrations\Divi
18
+ */
19
+ class Service_Provider extends \tad_DI52_ServiceProvider {
20
+
21
+ /**
22
+ * Binds and sets up implementations.
23
+ *
24
+ * @since 6.0.1
25
+ */
26
+ public function register() {
27
+ $this->container->singleton( static::class, $this );
28
+
29
+ $theme = wp_get_theme();
30
+
31
+ if ( 'divi' !== strtolower( $theme->name ) && 'divi' !== strtolower( $theme->parent_theme ) ) {
32
+ return;
33
+ }
34
+
35
+ $this->hooks();
36
+ }
37
+
38
+ /**
39
+ * Hooks the filters and actions required for this integration to work.
40
+ *
41
+ * @since 6.0.1
42
+ */
43
+ protected function hooks() {
44
+ add_filter( 'tribe_post_id', [ $this, 'filter_tribe_post_id' ] );
45
+ }
46
+
47
+ /**
48
+ * Get the $event_id using get_queried_object_id() for Divi users who aren't using the Default Events Template.
49
+ *
50
+ * @since 6.0.1
51
+ *
52
+ * @param int $event_id The event ID.
53
+ */
54
+ public function filter_tribe_post_id( $event_id ) {
55
+ // try the "normal" way first.
56
+ if ( empty( $event_id ) ) {
57
+ $event_id = get_the_ID();
58
+ }
59
+
60
+ // look for a post
61
+ if ( ! tribe_is_event( $event_id ) && tribe_get_request_var( 'et_post_id' ) ) {
62
+ $event_id = tribe_get_request_var( 'et_post_id' );
63
+ }
64
+
65
+ if ( ! tribe_is_event( $event_id ) ) {
66
+ wp_reset_postdata();
67
+
68
+ $event_id = get_queried_object_id();
69
+ }
70
+
71
+ return $event_id;
72
+ }
73
+ }
src/Tribe/Integrations/Manager.php CHANGED
@@ -46,6 +46,7 @@ class Tribe__Events__Integrations__Manager {
46
  $this->load_beaver_builder_integration();
47
  $this->load_fusion_integration();
48
  $this->load_hello_elementor_integration();
 
49
  }
50
 
51
  /**
@@ -152,6 +153,8 @@ class Tribe__Events__Integrations__Manager {
152
  return false;
153
  }
154
 
 
 
155
  tribe( WP_Rocket::class )->hook();
156
 
157
  return true;
@@ -169,6 +172,8 @@ class Tribe__Events__Integrations__Manager {
169
  return false;
170
  }
171
 
 
 
172
  tribe( Beaver_Builder::class )->hook();
173
 
174
  return true;
@@ -191,4 +196,13 @@ class Tribe__Events__Integrations__Manager {
191
  private function load_hello_elementor_integration() {
192
  tribe_register_provider( Hello_Elementor_Integration::class );
193
  }
 
 
 
 
 
 
 
 
 
194
  }
46
  $this->load_beaver_builder_integration();
47
  $this->load_fusion_integration();
48
  $this->load_hello_elementor_integration();
49
+ $this->load_divi_integration();
50
  }
51
 
52
  /**
153
  return false;
154
  }
155
 
156
+ tribe_singleton( \Tribe\Events\Integrations\WP_Rocket::class, \Tribe\Events\Integrations\WP_Rocket::class );
157
+
158
  tribe( WP_Rocket::class )->hook();
159
 
160
  return true;
172
  return false;
173
  }
174
 
175
+ tribe_singleton( \Tribe\Events\Integrations\Beaver_Builder::class, \Tribe\Events\Integrations\Beaver_Builder::class );
176
+
177
  tribe( Beaver_Builder::class )->hook();
178
 
179
  return true;
196
  private function load_hello_elementor_integration() {
197
  tribe_register_provider( Hello_Elementor_Integration::class );
198
  }
199
+
200
+ /**
201
+ * Loads the Hello Elementor theme integration.
202
+ *
203
+ * @since 6.0.1
204
+ */
205
+ private function load_divi_integration() {
206
+ tribe_register_provider( Tribe\Events\Integrations\Divi\Service_Provider::class );
207
+ }
208
  }
src/Tribe/Integrations/WPML/Meta.php CHANGED
@@ -38,6 +38,14 @@ class Tribe__Events__Integrations__WPML__Meta {
38
  return $value;
39
  }
40
 
 
 
 
 
 
 
 
 
41
  $value = $this->get_post_meta( $object_id, $meta_key );
42
 
43
  if ( empty( $value ) ) {
@@ -74,6 +82,8 @@ class Tribe__Events__Integrations__WPML__Meta {
74
  }
75
  }
76
 
 
 
77
  return $value;
78
  }
79
 
38
  return $value;
39
  }
40
 
41
+ $cache = tribe_cache();
42
+
43
+ $cache_key = 'wpml_meta_translate_post_id_' . $object_id . '-' . $meta_key;
44
+
45
+ if ( isset( $cache[ $cache_key ] ) ) {
46
+ return $cache[ $cache_key ];
47
+ }
48
+
49
  $value = $this->get_post_meta( $object_id, $meta_key );
50
 
51
  if ( empty( $value ) ) {
82
  }
83
  }
84
 
85
+ $cache[ $cache_key ] = $value;
86
+
87
  return $value;
88
  }
89
 
src/Tribe/Linked_Posts/Chooser_Meta_Box.php CHANGED
@@ -186,23 +186,29 @@ class Tribe__Events__Linked_Posts__Chooser_Meta_Box {
186
  /**
187
  * Render a link to edit the linked post
188
  *
 
189
  * @since 3.0
190
  *
191
  * @param int $linked_post_id
192
  */
193
  protected function edit_post_link( $linked_post_id ) {
194
  $linked_post_pto = get_post_type_object( $this->post_type );
195
- $cannot_edit_others_posts = (
 
 
196
  empty( $linked_post_pto->cap->edit_others_posts )
197
  || ! current_user_can( $linked_post_pto->cap->edit_others_posts )
198
- );
199
-
200
- if ( is_admin() && $cannot_edit_others_posts ) {
201
  return;
202
  }
203
 
204
  $edit_link = get_edit_post_link( $linked_post_id );
205
 
 
 
 
 
 
206
  printf(
207
  '<div class="edit-linked-post-link"><a style="%1$s" href="%2$s" target="_blank">%3$s</a></div>',
208
  esc_attr( empty( $linked_post_id ) ? 'display: none;' : 'display: inline-block;' ),
186
  /**
187
  * Render a link to edit the linked post
188
  *
189
+ * @since 6.0.1 Reversed check for editing posts. Added check if the $edit_link is empty.
190
  * @since 3.0
191
  *
192
  * @param int $linked_post_id
193
  */
194
  protected function edit_post_link( $linked_post_id ) {
195
  $linked_post_pto = get_post_type_object( $this->post_type );
196
+
197
+ // Bail if the user is unable to edit the type of post.
198
+ if (
199
  empty( $linked_post_pto->cap->edit_others_posts )
200
  || ! current_user_can( $linked_post_pto->cap->edit_others_posts )
201
+ ) {
 
 
202
  return;
203
  }
204
 
205
  $edit_link = get_edit_post_link( $linked_post_id );
206
 
207
+ // Bail if $edit_link is empty.
208
+ if ( empty( $edit_link ) ) {
209
+ return;
210
+ }
211
+
212
  printf(
213
  '<div class="edit-linked-post-link"><a style="%1$s" href="%2$s" target="_blank">%3$s</a></div>',
214
  esc_attr( empty( $linked_post_id ) ? 'display: none;' : 'display: inline-block;' ),
src/Tribe/Main.php CHANGED
@@ -35,7 +35,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
35
  const VENUE_POST_TYPE = 'tribe_venue';
36
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
37
 
38
- const VERSION = '6.0.0.1';
39
 
40
  /**
41
  * Min Pro Addon
@@ -600,8 +600,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
600
 
601
  // Integrations
602
  tribe_singleton( 'tec.integrations.twenty-seventeen', 'Tribe__Events__Integrations__Twenty_Seventeen', [ 'hook' ] );
603
- tribe_singleton( \Tribe\Events\Integrations\WP_Rocket::class, \Tribe\Events\Integrations\WP_Rocket::class );
604
- tribe_singleton( \Tribe\Events\Integrations\Beaver_Builder::class, \Tribe\Events\Integrations\Beaver_Builder::class );
605
 
606
  // Linked Posts
607
  tribe_singleton( 'tec.linked-posts', 'Tribe__Events__Linked_Posts' );
@@ -1340,7 +1339,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
1340
  $upgrade_fields = apply_filters( 'tribe_upgrade_fields', $upgrade_tab );
1341
 
1342
  new Tribe__Settings_Tab(
1343
- 'upgrade', esc_html__( 'Upgrade', 'tribe-common' ),
1344
  [
1345
  'priority' => 100,
1346
  'fields' => $upgrade_fields,
@@ -2825,7 +2824,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
2825
 
2826
  /**
2827
  * plugin activation callback
2828
- * @see register_deactivation_hook()
2829
  *
2830
  * @param bool $network_deactivating
2831
  */
35
  const VENUE_POST_TYPE = 'tribe_venue';
36
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
37
 
38
+ const VERSION = '6.0.1';
39
 
40
  /**
41
  * Min Pro Addon
600
 
601
  // Integrations
602
  tribe_singleton( 'tec.integrations.twenty-seventeen', 'Tribe__Events__Integrations__Twenty_Seventeen', [ 'hook' ] );
603
+
 
604
 
605
  // Linked Posts
606
  tribe_singleton( 'tec.linked-posts', 'Tribe__Events__Linked_Posts' );
1339
  $upgrade_fields = apply_filters( 'tribe_upgrade_fields', $upgrade_tab );
1340
 
1341
  new Tribe__Settings_Tab(
1342
+ 'upgrade', esc_html__( 'Upgrade', 'the-events-calendar' ),
1343
  [
1344
  'priority' => 100,
1345
  'fields' => $upgrade_fields,
2824
 
2825
  /**
2826
  * plugin activation callback
2827
+ * @see register_activation_hook()
2828
  *
2829
  * @param bool $network_deactivating
2830
  */
src/Tribe/Models/Post_Types/Event.php CHANGED
@@ -22,6 +22,7 @@ use Tribe__Events__Featured_Events as Featured;
22
  use Tribe__Events__Organizer as Organizer;
23
  use Tribe__Events__Timezones as Timezones;
24
  use Tribe__Events__Venue as Venue;
 
25
 
26
  /**
27
  * Class Event
@@ -274,11 +275,11 @@ class Event extends Base {
274
  *
275
  * @since 6.0.0
276
  *
277
- * @param int[]|\WP_Post[] $events
278
  */
279
  public static function prime_cache( array $events = [] ) {
280
  $first = reset( $events );
281
- $is_numeric = ( ! $first instanceof \WP_Post );
282
  if ( $is_numeric ) {
283
  $event_ids = $events;
284
  } else {
@@ -286,12 +287,12 @@ class Event extends Base {
286
  }
287
 
288
  /**
289
- * Allows changing which Post IDs will get primed for cache
290
  *
291
  * @since 6.0.0
292
  *
293
- * @param int[] $event_ids Which IDs we will prime.
294
- * @param \WP_Post[]|int[] $events Which event objects will generate the ids.
295
  */
296
  $event_ids = apply_filters( 'tec_events_prime_cache_post_ids', $event_ids, $events );
297
 
22
  use Tribe__Events__Organizer as Organizer;
23
  use Tribe__Events__Timezones as Timezones;
24
  use Tribe__Events__Venue as Venue;
25
+ use WP_Post;
26
 
27
  /**
28
  * Class Event
275
  *
276
  * @since 6.0.0
277
  *
278
+ * @param array<int|WP_Post> $events
279
  */
280
  public static function prime_cache( array $events = [] ) {
281
  $first = reset( $events );
282
+ $is_numeric = ( ! $first instanceof WP_Post );
283
  if ( $is_numeric ) {
284
  $event_ids = $events;
285
  } else {
287
  }
288
 
289
  /**
290
+ * Allows changing which Post IDs will get primed for cache.
291
  *
292
  * @since 6.0.0
293
  *
294
+ * @param array<int> $event_ids Which IDs we will prime.
295
+ * @param array<int|WP_Post> $events Which event objects will generate the ids.
296
  */
297
  $event_ids = apply_filters( 'tec_events_prime_cache_post_ids', $event_ids, $events );
298
 
src/Tribe/Plugin_Register.php CHANGED
@@ -6,7 +6,7 @@ class Tribe__Events__Plugin_Register extends Tribe__Abstract_Plugin_Register {
6
  protected $main_class = 'Tribe__Events__Main';
7
  protected $dependencies = [
8
  'addon-dependencies' => [
9
- 'Tribe__Events__Pro__Main' => '6.0.0-dev',
10
  'Tribe__Events__Filterbar__View' => '5.4.0-dev',
11
  'Tribe__Events__Community__Main' => '4.10.0-dev',
12
  'Tribe__Events__Community__Tickets__Main' => '4.8.0-dev',
6
  protected $main_class = 'Tribe__Events__Main';
7
  protected $dependencies = [
8
  'addon-dependencies' => [
9
+ 'Tribe__Events__Pro__Main' => '6.0.1-dev',
10
  'Tribe__Events__Filterbar__View' => '5.4.0-dev',
11
  'Tribe__Events__Community__Main' => '4.10.0-dev',
12
  'Tribe__Events__Community__Tickets__Main' => '4.8.0-dev',
src/Tribe/Updater.php CHANGED
@@ -7,7 +7,7 @@ use Tribe\Events\Event_Status\Event_Meta as Event_Status_Meta;
7
  */
8
  class Tribe__Events__Updater {
9
  protected $version_option = 'schema-version';
10
- protected $reset_version = '3.9'; // when a reset() is called, go to this version
11
  protected $current_version = 0;
12
  public $capabilities;
13
 
@@ -69,6 +69,18 @@ class Tribe__Events__Updater {
69
  return $this->get_update_callbacks();
70
  }
71
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  /**
73
  * Returns an array of callbacks with version strings as keys.
74
  * Any key higher than the version recorded in the DB
7
  */
8
  class Tribe__Events__Updater {
9
  protected $version_option = 'schema-version';
10
+ protected $reset_version = '5.16.0'; // when a reset() is called, go to this version
11
  protected $current_version = 0;
12
  public $capabilities;
13
 
69
  return $this->get_update_callbacks();
70
  }
71
 
72
+ /**
73
+ * Getter for the private reset version.
74
+ * Mainly for tests.
75
+ *
76
+ * @since 6.0.1
77
+ *
78
+ * @return string The reset version number.
79
+ */
80
+ public function get_reset_version(): string {
81
+ return $this->reset_version;
82
+ }
83
+
84
  /**
85
  * Returns an array of callbacks with version strings as keys.
86
  * Any key higher than the version recorded in the DB
src/Tribe/Views/V2/Query/Event_Query_Controller.php CHANGED
@@ -86,7 +86,9 @@ class Event_Query_Controller {
86
  // If the query posts have been pre-filled already then let's use the information.
87
  $query_posts = $query->posts;
88
 
89
- $post__in = wp_list_pluck( $query_posts, 'ID' );
 
 
90
  }
91
 
92
  /**
86
  // If the query posts have been pre-filled already then let's use the information.
87
  $query_posts = $query->posts;
88
 
89
+ $post__in = array_map( static function ( $post ): int {
90
+ return is_object( $post ) ? $post->ID : (int) $post;
91
+ }, $query_posts );
92
  }
93
 
94
  /**
src/Tribe/Views/V2/View.php CHANGED
@@ -27,6 +27,7 @@ use Tribe__Events__Rewrite as TEC_Rewrite;
27
  use Tribe__Events__Venue as Venue;
28
  use Tribe__Repository__Interface as Repository;
29
  use Tribe__Utils__Array as Arr;
 
30
 
31
  /**
32
  * Class View
@@ -1469,8 +1470,8 @@ class View implements View_Interface {
1469
  *
1470
  * @since 6.0.0
1471
  *
1472
- * @param array $events Which events were just selected.
1473
- * @param self $view Which view we are dealing with.
1474
  */
1475
  do_action( 'tec_events_views_v2_after_get_events', $events, $this );
1476
 
27
  use Tribe__Events__Venue as Venue;
28
  use Tribe__Repository__Interface as Repository;
29
  use Tribe__Utils__Array as Arr;
30
+ use WP_Post;
31
 
32
  /**
33
  * Class View
1470
  *
1471
  * @since 6.0.0
1472
  *
1473
+ * @param array<WP_Post> $events Which events were just selected.
1474
+ * @param self $view Which view we are dealing with.
1475
  */
1476
  do_action( 'tec_events_views_v2_after_get_events', $events, $this );
1477
 
src/admin-views/aggregator/origins/csv.php CHANGED
@@ -11,6 +11,7 @@ $field->source = 'csv_content_type';
11
 
12
  $csv_record = Tribe__Events__Aggregator__Records::instance()->get_by_origin( 'csv' );
13
  $post_types = $csv_record->get_import_post_types();
 
14
  ?>
15
  <tr class="tribe-dependent" data-depends="#tribe-ea-field-origin" data-condition="csv">
16
  <th scope="row">
@@ -77,3 +78,25 @@ $field->media_title = __( 'Upload a CSV File', 'the-events-calendar' );
77
  </button>
78
  </td>
79
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
  $csv_record = Tribe__Events__Aggregator__Records::instance()->get_by_origin( 'csv' );
13
  $post_types = $csv_record->get_import_post_types();
14
+ $main = Tribe__Events__Main::instance();
15
  ?>
16
  <tr class="tribe-dependent" data-depends="#tribe-ea-field-origin" data-condition="csv">
17
  <th scope="row">
78
  </button>
79
  </td>
80
  </tr>
81
+
82
+ <div class="tec-admin-ea-help-message" data-depends="#tribe-ea-field-origin" data-condition-not-empty data-condition-relation="and" data-condition-not='["url","eventbrite", "gcal", "ics", "ical", "meetup", "url"]'>
83
+ <?php esc_html_e( 'Need assistance? You can find more information here:', 'the-events-calendar' ); ?>
84
+
85
+ <img
86
+ class="tec-admin-ea-help-message__icon"
87
+ src="<?php echo esc_url( tribe_resource_url( 'images/icons/tec-horns.svg', false, null, $main ) ); ?>"
88
+ alt="<?php esc_attr_e( 'The Events Calendar logo', 'the-events-calendar' ); ?>"
89
+ />
90
+ <a href="https://evnt.is/1bam" target="_blank" rel="noopener noreferrer">
91
+ <?php esc_html_e( 'Importing Calendar Data From a CSV File', 'the-events-calendar' ); ?>
92
+ </a>
93
+
94
+ <img
95
+ class="tec-admin-ea-help-message__icon"
96
+ src="<?php echo esc_url( tribe_resource_url( 'images/icons/tec-horns.svg', false, null, $main ) ); ?>"
97
+ alt="<?php esc_attr_e( 'The Events Calendar logo', 'the-events-calendar' ); ?>"
98
+ />
99
+ <a href="https://evnt.is/1ban" target="_blank" rel="noopener noreferrer">
100
+ <?php esc_html_e( 'CSV File Formatting and Examples ', 'the-events-calendar' ); ?>
101
+ </a>
102
+ </div>
src/admin-views/aggregator/origins/limit.php CHANGED
@@ -41,4 +41,4 @@ $import_limit_message = $global_limit_message . ' ' . sprintf( '<a href="%s" tar
41
 
42
  <div class="tribe-dependent" data-depends="#tribe-ea-field-origin" data-condition-not-empty data-condition-relation="and" data-condition-not='["url","eventbrite"]'>
43
  <p><?php echo $import_limit_message; ?></p>
44
- </div>
41
 
42
  <div class="tribe-dependent" data-depends="#tribe-ea-field-origin" data-condition-not-empty data-condition-relation="and" data-condition-not='["url","eventbrite"]'>
43
  <p><?php echo $import_limit_message; ?></p>
44
+ </div>
src/resources/css/aggregator-page.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-ea .tribe-ea-tab{background-color:#fff;border:1px solid #ccc;margin-top:20px;padding:20px}.tribe-ea .tribe-ea-tab .form-table th[scope=row]{width:140px}.tribe-ea .tribe-ea-tab .form-table tr{position:relative}.tribe-ea .tribe-ea-tab .form-table .eb-url-row th[scope=row]{padding:0}.tribe-ea .tribe-ea-tab .form-table .eb-url-row td{padding:0 10px}.tribe-ea .tribe-ea-tab .subsubsub li{font-weight:700}.tribe-ea .tribe-ea-tab .subsubsub .count,.tribe-ea .tribe-ea-tab .subsubsub a{font-weight:400}.tribe-ea .tribe-ea-help{color:#0073aa;cursor:pointer;padding:4px}.tribe-ea .tribe-ea-hidden{display:none}.tribe-ea .tribe-ea-file-name{display:inline-block;font-style:italic;line-height:26px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.tribe-ea .tribe-ea-raw-list{line-height:1.25em;list-style:square;margin-bottom:6px;margin-left:22px;margin-top:0}.tribe-ea .tribe-ea-raw-list>li{margin-bottom:2px}.tribe-ea .tribe-ea-total{font-weight:600}.tribe-ea .tribe-ea-size-tiny{width:75px}.tribe-ea .tribe-ea-size-small{width:100px}.tribe-ea .tribe-ea-size-medium{width:150px}.tribe-ea .tribe-ea-size-large{width:200px}.tribe-ea .tribe-ea-size-xlarge{width:405px}.tribe-ea .has-credentials{padding:0}.tribe-ea .tribe-button-row{padding-left:0}.tribe-ea .tribe-ea-fileicon{padding:3px}.tribe-ea .tribe-ea-field-readonly{line-height:30px}.tribe-ea .tribe-ea-field-readonly+.tribe-ea-field{margin-left:10px}.tribe-ea .tribe-ea-field.tribe-field-inline-dropdown{margin-left:0}.tribe-ea .tribe-credential-row{border-top:15px solid #fff}.tribe-ea .enter-credentials{background-color:#f8eceb;padding:1rem}.tribe-ea .enter-credentials.credentials-entered{background-color:#ebf2eb}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-prompt,.tribe-ea .enter-credentials.credentials-entered .tribe-fieldset{display:none}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-success{display:block;margin-bottom:0}.tribe-ea .enter-credentials input{max-width:250px;width:75%}.tribe-ea .enter-credentials .dashicons{font-size:1.5rem;line-height:1.2rem;margin-right:.5rem}.tribe-ea .enter-credentials .dashicons-warning{color:#d54e21}.tribe-ea .enter-credentials .dashicons-yes{color:#41a341;font-size:2rem}.tribe-ea .enter-credentials #facebook_api_key{margin-right:1.5rem}.tribe-ea .enter-credentials .tribe-credentials-success{display:none}.tribe-ea .manage-column.column-frequency,.tribe-ea .manage-column.column-imported{width:15%}.tribe-ea .manage-column.column-total{text-align:left;width:15%}.tribe-ea .tribe-ea-tab-scheduled td.column-source{padding-left:10px}.tribe-ea .tribe-ea-tab-scheduled td.column-source :not(.row-actions) a:first-of-type{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.tribe-ea td.column-source{padding-left:50px;position:relative}.tribe-ea td.column-total{text-align:left}.tribe-ea .dashicons.tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status{bottom:0;font-size:25px;left:0;position:absolute;top:0;width:45px}.tribe-ea .tribe-ea-report-status>.dashicons{font-size:inherit;padding-top:10px;width:100%}.tribe-ea .tribe-ea-report-status .tribe-ea-status-success{color:#46b450}.tribe-ea .tribe-ea-report-status .tribe-ea-status-scheduled{color:#00a0d2}.tribe-ea .tribe-ea-report-status .tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status .tribe-ea-status-pending{color:#ffb900;font-size:.8em}.tribe-ea .select2-container-multi .select2-choices .select2-search-field input{height:25px}.tribe-ea .select2-container{margin:0 1px 0 0}.tribe-ea input,.tribe-ea select{margin-left:0}.tribe-ea .tribe-refine{margin-bottom:.25rem}.tribe-ea .tribe-refine:last-child{margin-bottom:0}.tribe-ea .tribe-date-helper{color:gray}.tribe-ea .tribe-ea-inline-label{padding-top:7px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license{background-color:#f9f7f4;border:1px solid #f9f7f4;border-radius:16px;display:flex;justify-content:space-between;padding:60px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .tribe-notice-tribe-missing-aggregator-license__image{background-image:url(../images/aggregator/ea-intro-img-text.png);background-position:100%;background-repeat:no-repeat;background-size:contain;display:none;margin-left:30px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .upsell-banner{background:url(../images/aggregator/EventAggregator-icon.svg) transparent no-repeat;background-position:0;background-size:contain;font-family:apercu-mono-bold,monospace;height:43px;line-height:43px;margin:0 auto 30px;padding-left:60px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{color:#141827;font-size:40px;font-weight:700;letter-spacing:1.5px;line-height:1.2;margin:28px 0 0}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{color:#141827;font-size:16px;font-weight:300;letter-spacing:2px;margin:15px 0 30px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button){color:#abd8e8}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):active,.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):hover{color:#cbe1e8}.tribe-ea .tribe-banner.tribe-active.tribe-dependent,.tribe-ea .tribe-notice-tribe-missing-aggregator-license.tribe-dependent.tribe-active{display:flex}.tribe-ea .tribe-banner{align-items:center;display:flex;flex:1 1 auto;justify-content:center}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets{background-image:linear-gradient(135deg,#0178ba,#0178ba 25%,#01bdac 65%,#01bdac);background-size:cover;padding:0;text-align:center}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets h3{color:#fff;font-size:26px;font-weight:400;letter-spacing:1px;padding:0 45px}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets img{max-width:165px}.tribe-ea .tribe-button{border:1px solid;border-radius:3px;color:#fff;display:inline-block;font-size:13px;font-weight:300;letter-spacing:1.5px;padding:15px 30px;text-decoration:none;text-transform:uppercase}.tribe-ea .tribe-button-primary{background:#000;border-color:#000;margin-right:5px}.tribe-ea .tribe-button-secondary{background:#334aff;border-color:#334aff;border-radius:40px;font-size:16px;font-weight:700;margin-left:0;margin-top:6px;padding:20px 50px;text-transform:none}.tribe-ea .dataTables_filter,.tribe-ea .dataTables_length{line-height:28px;margin-bottom:.5rem}.tribe-ea .dataTables_filter select,.tribe-ea .dataTables_length select{margin-top:-2px}.tribe-ea .tribe-view-filters.tribe-active+.tribe-filters{display:block}.tribe-ea dl.tribe-filters{display:none;margin-left:.5rem;margin-top:0}.tribe-ea dl.tribe-filters dt{clear:left;display:inline-block;font-weight:700;margin-right:.25rem}.tribe-ea dl.tribe-filters dd{display:inline;margin-left:0}.tribe-ea dl.tribe-filters dd:after{content:"";display:block;margin-bottom:.25rem}.tribe-ea .widefat td p{margin-bottom:.25em}.tribe-ea .tribe-ea-login-button{margin-left:2rem;margin-top:1rem}.tribe-ea-table-container{background-color:#fafafa;border:1px solid #e7e7e7;min-height:25px;padding:.5rem}.tribe-preview-container{display:none;margin-top:.5rem;padding-left:1rem;padding-right:1rem}.edit-form .tribe-preview-container,.show-data .tribe-preview-container,.tribe-preview-container.tribe-fetch-error,.tribe-preview-container.tribe-fetched,.tribe-preview-container.tribe-fetching{display:block}.tribe-preview-container.tribe-fetching .spinner-container{display:block;text-align:center}.tribe-preview-container.tribe-fetch-error .tribe-fetch-error-message{display:block}.tribe-preview-container .data-container{display:none}.tribe-preview-container .data-container.csv-data #tribe-csv-preview-message{display:block}.tribe-preview-container .data-container.csv-data #tribe-remote-preview-message{display:none}.tribe-preview-container .data-container #tribe-remote-preview-message{display:block}.tribe-preview-container>td{padding-left:0;padding-right:0}.tribe-preview-container .tribe-column-end-date,.tribe-preview-container .tribe-column-start-date,.tribe-preview-container .tribe-column-start-time{width:8em}.tribe-preview-container .spinner-container,.tribe-preview-container .tribe-fetch-error-message{display:none}.tribe-preview-container .spinner{float:none;margin-left:auto;margin-right:auto;visibility:visible}.tribe-preview-container .spinner-message{display:block;margin-top:.25rem}.tribe-preview-container .dataTable{float:left}.tribe-preview-container .dataTable .check-column input,.tribe-preview-container .dataTable .column-cb input{display:none}.tribe-preview-container .dataTable tfoot th,.tribe-preview-container .dataTable thead th{padding-right:20px;white-space:nowrap}.tribe-preview-container .dataTable thead tr+tr th{background:#f3f3f3;border-bottom:0;font-weight:700}.tribe-preview-container .tribe-td-height-limit{max-height:50px;overflow:hidden}.tribe-preview-container .display-checkboxes .check-column input,.tribe-preview-container .display-checkboxes .column-cb input{display:inline-block}.tribe-preview-container .tribe-preview-message{display:none;font-weight:700;line-height:26px}.tribe-preview-container #tribe-ea-field-post_status+label{margin-left:1rem}.tribe-default-settings{display:none;overflow:hidden;padding-bottom:1rem;padding-top:1rem}.tribe-default-settings label{display:inline-block;line-height:26px}.edit-form .tribe-default-settings,.edit-form .tribe-finalize-container,.show-data .data-container,.show-data .tribe-default-settings,.show-data .tribe-finalize-container{display:block}.edit-form .tribe-cancel{display:inline-block}.tribe-ea-form .tribe-bumpdown-manual,.tribe-ea-form .tribe-bumpdown-scheduled,.tribe-ea-form[data-origin=csv] .dataTables_filter,.tribe-ea-form[data-origin=csv] .dataTables_info,.tribe-ea-form[data-origin=csv] .dataTables_length,.tribe-ea-form[data-origin=csv] .dataTables_paginate{display:none}.tribe-ea-form[data-type=manual] .tribe-bumpdown-manual,.tribe-ea-form[data-type=schedule] .tribe-bumpdown-scheduled{display:inline-block}.tribe-cancel{display:none}.tribe-finalize-container{display:none;padding-top:1.5rem}.tribe-finalize-container .tribe-timezone-message{font-style:italic;padding-top:.5rem}.tribe-finalize-container .tribe-limits-message{font-style:italic;margin:1em 0 -1.5em;padding:0}.tribe-message-loader,.tribe-notice-aggregator-update-msg{display:none}.tribe-notice-aggregator-update-msg .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-notice-aggregator-update-msg .progress .bar{background:#ffba00;height:1rem;width:1%}.tribe-notice-aggregator-update-msg .tracker{margin:0;padding:0}.tribe-notice-aggregator-update-msg .tracker .tracked-item{display:none;margin:.25rem 0}.tribe-notice-aggregator-update-msg .tracker.has-created,.tribe-notice-aggregator-update-msg .tracker.has-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated{padding-bottom:.25rem}.tribe-notice-aggregator-update-msg .tracker.has-created .track-created,.tribe-notice-aggregator-update-msg .tracker.has-created .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-updated,.tribe_events_page_aggregator .tribe-notice-aggregator-update-msg{display:block}.tribe-ea-tab-edit .tribe-bumpdown-trigger.tribe-ea-help{display:none}.select2-disabled{color:gray;cursor:default;margin-bottom:0}.tribe-dropdown-subtitle{color:gray;font-size:11px}.select2-highlighted .tribe-dropdown-subtitle{color:#fff}.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat p,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat td,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat ul{color:#ccc}.tribe-ea-field-wrapper-post_status{min-width:275px}.tribe-ea-field-wrapper-post_status.tribe-active{float:left}@media screen and (min-width:1260px){.tribe-ea .tribe-notice-tribe-missing-aggregator-license .tribe-notice-tribe-missing-aggregator-license__content{width:50%}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .tribe-notice-tribe-missing-aggregator-license__image{display:block;flex:auto}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{font-size:68px;max-width:510px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{font-size:22px;max-width:730px}.tribe-ea .tribe-button-secondary{font-size:20px;padding:26px 63px}}@media screen and (max-width:782px){.tribe-ea .form-table td{padding-right:0}.tribe-ea .form-table td input[type=text]{display:inline-block;width:92%}.tribe-ea td.tribe-dependent.tribe-active{display:block}.tribe-ea input+.tribe-ea-help{line-height:30px}}
1
+ .tribe-ea .tribe-ea-tab{background-color:#fff;border:1px solid #ccc;margin-top:20px;padding:20px}.tribe-ea .tribe-ea-tab .form-table th[scope=row]{width:140px}.tribe-ea .tribe-ea-tab .form-table tr{position:relative}.tribe-ea .tribe-ea-tab .form-table .eb-url-row th[scope=row]{padding:0}.tribe-ea .tribe-ea-tab .form-table .eb-url-row td{padding:0 10px}.tribe-ea .tribe-ea-tab .subsubsub li{font-weight:700}.tribe-ea .tribe-ea-tab .subsubsub .count,.tribe-ea .tribe-ea-tab .subsubsub a{font-weight:400}.tribe-ea .tribe-ea-help{color:#0073aa;cursor:pointer;padding:4px}.tribe-ea .tribe-ea-hidden{display:none}.tribe-ea .tribe-ea-file-name{display:inline-block;font-style:italic;line-height:26px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.tribe-ea .tribe-ea-raw-list{line-height:1.25em;list-style:square;margin-bottom:6px;margin-left:22px;margin-top:0}.tribe-ea .tribe-ea-raw-list>li{margin-bottom:2px}.tribe-ea .tribe-ea-total{font-weight:600}.tribe-ea .tribe-ea-size-tiny{width:75px}.tribe-ea .tribe-ea-size-small{width:100px}.tribe-ea .tribe-ea-size-medium{width:150px}.tribe-ea .tribe-ea-size-large{width:200px}.tribe-ea .tribe-ea-size-xlarge{width:405px}.tribe-ea .has-credentials{padding:0}.tribe-ea .tribe-button-row{padding-left:0}.tribe-ea .tribe-ea-fileicon{padding:3px}.tribe-ea .tribe-ea-field-readonly{line-height:30px}.tribe-ea .tribe-ea-field-readonly+.tribe-ea-field{margin-left:10px}.tribe-ea .tribe-ea-field.tribe-field-inline-dropdown{margin-left:0}.tribe-ea .tribe-credential-row{border-top:15px solid #fff}.tribe-ea .enter-credentials{background-color:#f8eceb;padding:1rem}.tribe-ea .enter-credentials.credentials-entered{background-color:#ebf2eb}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-prompt,.tribe-ea .enter-credentials.credentials-entered .tribe-fieldset{display:none}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-success{display:block;margin-bottom:0}.tribe-ea .enter-credentials input{max-width:250px;width:75%}.tribe-ea .enter-credentials .dashicons{font-size:1.5rem;line-height:1.2rem;margin-right:.5rem}.tribe-ea .enter-credentials .dashicons-warning{color:#d54e21}.tribe-ea .enter-credentials .dashicons-yes{color:#41a341;font-size:2rem}.tribe-ea .enter-credentials #facebook_api_key{margin-right:1.5rem}.tribe-ea .enter-credentials .tribe-credentials-success{display:none}.tribe-ea .manage-column.column-frequency,.tribe-ea .manage-column.column-imported{width:15%}.tribe-ea .manage-column.column-total{text-align:left;width:15%}.tribe-ea .tribe-ea-tab-scheduled td.column-source{padding-left:10px}.tribe-ea .tribe-ea-tab-scheduled td.column-source :not(.row-actions) a:first-of-type{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.tribe-ea td.column-source{padding-left:50px;position:relative}.tribe-ea td.column-total{text-align:left}.tribe-ea .dashicons.tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status{bottom:0;font-size:25px;left:0;position:absolute;top:0;width:45px}.tribe-ea .tribe-ea-report-status>.dashicons{font-size:inherit;padding-top:10px;width:100%}.tribe-ea .tribe-ea-report-status .tribe-ea-status-success{color:#46b450}.tribe-ea .tribe-ea-report-status .tribe-ea-status-scheduled{color:#00a0d2}.tribe-ea .tribe-ea-report-status .tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status .tribe-ea-status-pending{color:#ffb900;font-size:.8em}.tribe-ea .select2-container-multi .select2-choices .select2-search-field input{height:25px}.tribe-ea .select2-container{margin:0 1px 0 0}.tribe-ea input,.tribe-ea select{margin-left:0}.tribe-ea .tribe-refine{margin-bottom:.25rem}.tribe-ea .tribe-refine:last-child{margin-bottom:0}.tribe-ea .tribe-date-helper{color:gray}.tribe-ea .tribe-ea-inline-label{padding-top:7px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license{background-color:#f9f7f4;border:1px solid #f9f7f4;border-radius:16px;display:flex;justify-content:space-between;padding:60px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .tribe-notice-tribe-missing-aggregator-license__image{background-image:url(../images/aggregator/ea-intro-img-text.png);background-position:100%;background-repeat:no-repeat;background-size:contain;display:none;margin-left:30px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .upsell-banner{background:url(../images/aggregator/EventAggregator-icon.svg) transparent no-repeat;background-position:0;background-size:contain;font-family:apercu-mono-bold,monospace;height:43px;line-height:43px;margin:0 auto 30px;padding-left:60px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{color:#141827;font-size:40px;font-weight:700;letter-spacing:1.5px;line-height:1.2;margin:28px 0 0}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{color:#141827;font-size:16px;font-weight:300;letter-spacing:2px;margin:15px 0 30px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button){color:#abd8e8}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):active,.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):hover{color:#cbe1e8}.tribe-ea .tribe-banner.tribe-active.tribe-dependent,.tribe-ea .tribe-notice-tribe-missing-aggregator-license.tribe-dependent.tribe-active{display:flex}.tribe-ea .tribe-banner{align-items:center;display:flex;flex:1 1 auto;justify-content:center}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets{background-image:linear-gradient(135deg,#0178ba,#0178ba 25%,#01bdac 65%,#01bdac);background-size:cover;padding:0;text-align:center}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets h3{color:#fff;font-size:26px;font-weight:400;letter-spacing:1px;padding:0 45px}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets img{max-width:165px}.tribe-ea .tribe-button{border:1px solid;border-radius:3px;color:#fff;display:inline-block;font-size:13px;font-weight:300;letter-spacing:1.5px;padding:15px 30px;text-decoration:none;text-transform:uppercase}.tribe-ea .tribe-button-primary{background:#000;border-color:#000;margin-right:5px}.tribe-ea .tribe-button-secondary{background:#334aff;border-color:#334aff;border-radius:40px;font-size:16px;font-weight:700;margin-left:0;margin-top:6px;padding:20px 50px;text-transform:none}.tribe-ea .dataTables_filter,.tribe-ea .dataTables_length{line-height:28px;margin-bottom:.5rem}.tribe-ea .dataTables_filter select,.tribe-ea .dataTables_length select{margin-top:-2px}.tribe-ea .tribe-view-filters.tribe-active+.tribe-filters{display:block}.tribe-ea dl.tribe-filters{display:none;margin-left:.5rem;margin-top:0}.tribe-ea dl.tribe-filters dt{clear:left;display:inline-block;font-weight:700;margin-right:.25rem}.tribe-ea dl.tribe-filters dd{display:inline;margin-left:0}.tribe-ea dl.tribe-filters dd:after{content:"";display:block;margin-bottom:.25rem}.tribe-ea .widefat td p{margin-bottom:.25em}.tribe-ea .tribe-ea-login-button{margin-left:2rem;margin-top:1rem}.tribe-ea-table-container{background-color:#fafafa;border:1px solid #e7e7e7;min-height:25px;padding:.5rem}.tribe-preview-container{display:none;margin-top:.5rem;padding-left:1rem;padding-right:1rem}.edit-form .tribe-preview-container,.show-data .tribe-preview-container,.tribe-preview-container.tribe-fetch-error,.tribe-preview-container.tribe-fetched,.tribe-preview-container.tribe-fetching{display:block}.tribe-preview-container.tribe-fetching .spinner-container{display:block;text-align:center}.tribe-preview-container.tribe-fetch-error .tribe-fetch-error-message{display:block}.tribe-preview-container .data-container{display:none}.tribe-preview-container .data-container.csv-data #tribe-csv-preview-message{display:block}.tribe-preview-container .data-container.csv-data #tribe-remote-preview-message{display:none}.tribe-preview-container .data-container #tribe-remote-preview-message{display:block}.tribe-preview-container>td{padding-left:0;padding-right:0}.tribe-preview-container .tribe-column-end-date,.tribe-preview-container .tribe-column-start-date,.tribe-preview-container .tribe-column-start-time{width:8em}.tribe-preview-container .spinner-container,.tribe-preview-container .tribe-fetch-error-message{display:none}.tribe-preview-container .spinner{float:none;margin-left:auto;margin-right:auto;visibility:visible}.tribe-preview-container .spinner-message{display:block;margin-top:.25rem}.tribe-preview-container .dataTable{float:left}.tribe-preview-container .dataTable .check-column input,.tribe-preview-container .dataTable .column-cb input{display:none}.tribe-preview-container .dataTable tfoot th,.tribe-preview-container .dataTable thead th{padding-right:20px;white-space:nowrap}.tribe-preview-container .dataTable thead tr+tr th{background:#f3f3f3;border-bottom:0;font-weight:700}.tribe-preview-container .tribe-td-height-limit{max-height:50px;overflow:hidden}.tribe-preview-container .display-checkboxes .check-column input,.tribe-preview-container .display-checkboxes .column-cb input{display:inline-block}.tribe-preview-container .tribe-preview-message{display:none;font-weight:700;line-height:26px}.tribe-preview-container #tribe-ea-field-post_status+label{margin-left:1rem}.tribe-default-settings{display:none;overflow:hidden;padding-bottom:1rem;padding-top:1rem}.tribe-default-settings label{display:inline-block;line-height:26px}.edit-form .tribe-default-settings,.edit-form .tribe-finalize-container,.show-data .data-container,.show-data .tribe-default-settings,.show-data .tribe-finalize-container{display:block}.edit-form .tribe-cancel{display:inline-block}.tribe-ea-form .tribe-bumpdown-manual,.tribe-ea-form .tribe-bumpdown-scheduled,.tribe-ea-form[data-origin=csv] .dataTables_filter,.tribe-ea-form[data-origin=csv] .dataTables_info,.tribe-ea-form[data-origin=csv] .dataTables_length,.tribe-ea-form[data-origin=csv] .dataTables_paginate{display:none}.tribe-ea-form[data-type=manual] .tribe-bumpdown-manual,.tribe-ea-form[data-type=schedule] .tribe-bumpdown-scheduled{display:inline-block}.tribe-cancel{display:none}.tribe-finalize-container{display:none;padding-top:1.5rem}.tribe-finalize-container .tribe-timezone-message{font-style:italic;padding-top:.5rem}.tribe-finalize-container .tribe-limits-message{font-style:italic;margin:1em 0 -1.5em;padding:0}.tribe-message-loader,.tribe-notice-aggregator-update-msg{display:none}.tribe-notice-aggregator-update-msg .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-notice-aggregator-update-msg .progress .bar{background:#ffba00;height:1rem;width:1%}.tribe-notice-aggregator-update-msg .tracker{margin:0;padding:0}.tribe-notice-aggregator-update-msg .tracker .tracked-item{display:none;margin:.25rem 0}.tribe-notice-aggregator-update-msg .tracker.has-created,.tribe-notice-aggregator-update-msg .tracker.has-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated{padding-bottom:.25rem}.tribe-notice-aggregator-update-msg .tracker.has-created .track-created,.tribe-notice-aggregator-update-msg .tracker.has-created .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-updated,.tribe_events_page_aggregator .tribe-notice-aggregator-update-msg{display:block}.tribe-ea-tab-edit .tribe-bumpdown-trigger.tribe-ea-help{display:none}.select2-disabled{color:gray;cursor:default;margin-bottom:0}.tribe-dropdown-subtitle{color:gray;font-size:11px}.select2-highlighted .tribe-dropdown-subtitle{color:#fff}.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat p,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat td,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat ul{color:#ccc}.tribe-ea-field-wrapper-post_status{min-width:275px}.tribe-ea-field-wrapper-post_status.tribe-active{float:left}.tec-admin-ea-help-message__icon{height:20px;width:auto;margin:0 7px -4px}@media screen and (min-width:1260px){.tribe-ea .tribe-notice-tribe-missing-aggregator-license .tribe-notice-tribe-missing-aggregator-license__content{width:50%}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .tribe-notice-tribe-missing-aggregator-license__image{display:block;flex:auto}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{font-size:68px;max-width:510px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{font-size:22px;max-width:730px}.tribe-ea .tribe-button-secondary{font-size:20px;padding:26px 63px}}@media screen and (max-width:782px){.tribe-ea .form-table td{padding-right:0}.tribe-ea .form-table td input[type=text]{display:inline-block;width:92%}.tribe-ea td.tribe-dependent.tribe-active{display:block}.tribe-ea input+.tribe-ea-help{line-height:30px}}
src/resources/css/views-full.min.css CHANGED
@@ -1 +1 @@
1
- :root{--tec-color-text-events-title-day:var(--tec-color-text-events-title);--tec-color-text-events-title-latest-past:var(--tec-color-text-events-title);--tec-color-text-event-title-list:var(--tec-color-text-events-title);--tec-color-text-events-title-month-multiday:var(--tec-color-text-events-title);--tec-color-text-events-title-widget-list:var(--tec-color-text-events-title);--tec-color-text-event-date-secondary-month:var(--tec-color-text-event-date-secondary);--tec-color-text-event-date-secondary-month-mobile:var(--tec-color-text-event-date-secondary-month);--tec-color-text-day-of-week-month:var(--tec-color-text-secondary);--tec-color-day-marker-month:var(--tec-color-text-primary);--tec-color-day-marker-month-hover:var(--tec-color-text-primary-hover);--tec-color-day-marker-month-active:var(--tec-color-text-primary-active);--tec-color-day-marker-current-month:var(--tec-color-day-marker-month);--tec-color-day-marker-current-month-hover:var(--tec-color-day-marker-month-hover);--tec-color-day-marker-current-month-active:var(--tec-color-day-marker-month-active);--tec-color-day-marker-past-month:var(--tec-color-text-primary);--tec-color-day-marker-past-month-hover:var(--tec-color-day-marker-past-month);--tec-color-day-marker-past-month-active:var(--tec-color-day-marker-past-month);--tec-color-text-day-of-week-week:var(--tec-color-text-secondary);--tec-border-radius-month-multiday:9.5px;--tec-color-border-secondary-month-grid:var(--tec-color-border-secondary);--tec-color-border-active-month-grid-hover:var(--tec-color-border-active);--tec-color-background-month-grid:transparent;--tec-color-background-tooltip:var(--tec-color-background);--tec-color-text-events-bar-input:var(--tec-color-text-primary);--tec-color-text-events-bar-input-placeholder:var(--tec-color-text-secondary);--tec-opacity-events-bar-input-placeholder:var(--tec-opacity-default);--tec-color-border-events-bar:var(--tec-color-border-secondary);--tec-color-background-events-bar:var(--tec-color-background);--tec-color-background-view-selector:var(--tec-color-background-events-bar);--tec-color-background-view-selector-tabs:var(--tec-color-background-view-selector);--tec-color-background-view-selector-list-item-hover:var(--tec-color-background-secondary);--tec-color-background-subscribe-list-item-hover:var(--tec-color-background-secondary);--tec-color-text-view-selector-list-item:var(--tec-color-text-primary);--tec-color-text-view-selector-list-item-hover:var(--tec-color-accent-secondary-hover);--tec-color-background-search-container:var(--tec-color-background-events-bar);--tec-color-text-events-bar-submit-button:var(--tec-color-background);--tec-color-text-events-bar-submit-button-active:var(--tec-color-text-events-bar-submit-button);--tec-color-text-events-bar-submit-button-hover:var(--tec-color-text-events-bar-submit-button);--tec-color-background-events-bar-submit-button:var(--tec-color-button-primary);--tec-color-background-events-bar-submit-button-hover:var(--tec-color-button-primary-hover);--tec-color-background-events-bar-submit-button-active:var(--tec-color-button-primary-active);--tec-color-icon-events-bar:var(--tec-color-icon-primary);--tec-color-icon-events-bar-active:var(--tec-color-icon-active);--tec-color-icon-events-bar-hover:var(--tec-color-icon-hover)}.tribe-events-view{background-color:var(--tec-color-background-events)}.tribe-events .tribe-events-c-breadcrumbs__list{font-family:var(--tec-font-family-base);font-size:24px;line-height:var(--tec-line-height-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-breadcrumbs__list{font-size:42px;line-height:var(--tec-line-height-0)}.tribe-events .tribe-events-c-breadcrumbs__list-item-link{color:var(--tec-color-text-secondary);transition:var(--tec-transition-color)}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:visited{color:var(--tec-color-text-secondary)}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:focus,.tribe-events .tribe-events-c-breadcrumbs__list-item-link:hover{color:var(--tec-color-text-primary)}.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg path{fill:var(--tec-color-icon-primary)}.tribe-events .datepicker{background-color:var(--tec-color-background);border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tribe-events .datepicker:after,.tribe-events .datepicker:before{content:none}.tribe-events .datepicker .datepicker-switch:active,.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover,.tribe-events .datepicker .next:active,.tribe-events .datepicker .next:focus,.tribe-events .datepicker .next:hover,.tribe-events .datepicker .prev:active,.tribe-events .datepicker .prev:focus,.tribe-events .datepicker .prev:hover{background-color:var(--tec-color-background)}.tribe-events .datepicker .datepicker-switch{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-3);line-height:var(--tec-line-height-3);font-weight:var(--tec-font-weight-regular)}.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-events .datepicker .datepicker-switch:active{color:var(--tec-color-accent-secondary-active)}.tribe-events .datepicker .next:active .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .next:focus .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .next:hover .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev:active .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev:focus .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev:hover .tribe-events-c-top-bar__datepicker-nav-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev .tribe-events-c-top-bar__datepicker-nav-icon-svg path{fill:var(--tec-color-icon-secondary)}.tribe-events .datepicker .dow{font-size:var(--tec-font-size-0);line-height:var(--tec-line-height-2)}.tribe-events .datepicker .day,.tribe-events .datepicker .dow{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-weight:var(--tec-font-weight-regular)}.tribe-events .datepicker .day{font-size:var(--tec-font-size-3);line-height:var(--tec-line-height-3)}.tribe-events .datepicker .month,.tribe-events .datepicker .year{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-1);line-height:var(--tec-line-height-0);font-weight:var(--tec-font-weight-regular)}.tribe-events .datepicker .past{color:var(--tec-color-text-primary-light)}.tribe-events .datepicker .day,.tribe-events .datepicker .month,.tribe-events .datepicker .year{border-radius:var(--tec-border-radius-default)}.tribe-events .datepicker .day.focused,.tribe-events .datepicker .day:focus,.tribe-events .datepicker .day:hover,.tribe-events .datepicker .month.focused,.tribe-events .datepicker .month:focus,.tribe-events .datepicker .month:hover,.tribe-events .datepicker .year.focused,.tribe-events .datepicker .year:focus,.tribe-events .datepicker .year:hover{background:var(--tec-color-background-secondary-datepicker)}.tribe-events .datepicker .day.current,.tribe-events .datepicker .day.current.focused,.tribe-events .datepicker .day.current:focus,.tribe-events .datepicker .day.current:hover,.tribe-events .datepicker .month.current,.tribe-events .datepicker .month.current.focused,.tribe-events .datepicker .month.current:focus,.tribe-events .datepicker .month.current:hover,.tribe-events .datepicker .year.current,.tribe-events .datepicker .year.current.focused,.tribe-events .datepicker .year.current:focus,.tribe-events .datepicker .year.current:hover{background:var(--tec-color-accent-primary-background-datepicker)}.tribe-events .datepicker .day.active,.tribe-events .datepicker .day.active.focused,.tribe-events .datepicker .day.active:focus,.tribe-events .datepicker .day.active:hover,.tribe-events .datepicker .month.active,.tribe-events .datepicker .month.active.focused,.tribe-events .datepicker .month.active:focus,.tribe-events .datepicker .month.active:hover,.tribe-events .datepicker .year.active,.tribe-events .datepicker .year.active.focused,.tribe-events .datepicker .year.active:focus,.tribe-events .datepicker .year.active:hover{background:var(--tec-color-accent-primary);color:var(--tec-color-background);text-shadow:none}.admin-bar .tribe-events .datepicker{margin-top:var(--tec-spacer-1)}.admin-bar .tribe-events.tribe-common--breakpoint-medium .datepicker{margin-top:var(--tec-spacer-3)}.tribe-theme-enfold .tribe-events .datepicker{border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tribe-theme-enfold .tribe-events .datepicker table,.tribe-theme-enfold .tribe-events .datepicker td,.tribe-theme-enfold .tribe-events .datepicker th,.tribe-theme-enfold .tribe-events .datepicker tr{background:transparent}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{color:var(--tec-color-text-primary)!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:focus,.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:hover{color:var(--tec-color-accent-secondary-hover)!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:active{color:var(--tec-color-accent-secondary-active)!important}.tribe-theme-enfold .tribe-events .datepicker .day{background-color:var(--tec-color-background)}.tribe-theme-enfold .tribe-events .datepicker .day.new,.tribe-theme-enfold .tribe-events .datepicker .day.old{opacity:1}.tribe-theme-enfold .tribe-events .datepicker .day,.tribe-theme-enfold .tribe-events .datepicker .month,.tribe-theme-enfold .tribe-events .datepicker .year{background-color:var(--tec-color-background);color:var(--tec-color-text-primary)}.tribe-theme-enfold .tribe-events .datepicker .day.focused,.tribe-theme-enfold .tribe-events .datepicker .day:focus,.tribe-theme-enfold .tribe-events .datepicker .day:hover,.tribe-theme-enfold .tribe-events .datepicker .month.focused,.tribe-theme-enfold .tribe-events .datepicker .month:focus,.tribe-theme-enfold .tribe-events .datepicker .month:hover,.tribe-theme-enfold .tribe-events .datepicker .year.focused,.tribe-theme-enfold .tribe-events .datepicker .year:focus,.tribe-theme-enfold .tribe-events .datepicker .year:hover{background:var(--tec-color-background-secondary-datepicker)}.tribe-theme-enfold .tribe-events .datepicker .day.past,.tribe-theme-enfold .tribe-events .datepicker .month.past,.tribe-theme-enfold .tribe-events .datepicker .year.past{color:var(--tec-color-text-primary-light)}.tribe-theme-enfold .tribe-events .datepicker .day.current,.tribe-theme-enfold .tribe-events .datepicker .day.current.focused,.tribe-theme-enfold .tribe-events .datepicker .day.current:focus,.tribe-theme-enfold .tribe-events .datepicker .day.current:hover,.tribe-theme-enfold .tribe-events .datepicker .month.current,.tribe-theme-enfold .tribe-events .datepicker .month.current.focused,.tribe-theme-enfold .tribe-events .datepicker .month.current:focus,.tribe-theme-enfold .tribe-events .datepicker .month.current:hover,.tribe-theme-enfold .tribe-events .datepicker .year.current,.tribe-theme-enfold .tribe-events .datepicker .year.current.focused,.tribe-theme-enfold .tribe-events .datepicker .year.current:focus,.tribe-theme-enfold .tribe-events .datepicker .year.current:hover{background:var(--tec-color-accent-primary-background-datepicker)}.tribe-theme-enfold .tribe-events .datepicker .day.active,.tribe-theme-enfold .tribe-events .datepicker .day.active.focused,.tribe-theme-enfold .tribe-events .datepicker .day.active:focus,.tribe-theme-enfold .tribe-events .datepicker .day.active:hover,.tribe-theme-enfold .tribe-events .datepicker .month.active,.tribe-theme-enfold .tribe-events .datepicker .month.active.focused,.tribe-theme-enfold .tribe-events .datepicker .month.active:focus,.tribe-theme-enfold .tribe-events .datepicker .month.active:hover,.tribe-theme-enfold .tribe-events .datepicker .year.active,.tribe-theme-enfold .tribe-events .datepicker .year.active.focused,.tribe-theme-enfold .tribe-events .datepicker .year.active:focus,.tribe-theme-enfold .tribe-events .datepicker .year.active:hover{background:var(--tec-color-accent-primary);color:var(--tec-color-background)}.tribe-theme-avada .tribe-events .datepicker{border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default)}.tribe-theme-avada .tribe-events .datepicker tbody td{border:0}.tribe-theme-avada .tribe-events .datepicker .datepicker-switch,.tribe-theme-avada .tribe-events .datepicker .datepicker-switch:hover,.tribe-theme-avada .tribe-events .datepicker .next,.tribe-theme-avada .tribe-events .datepicker .next:hover,.tribe-theme-avada .tribe-events .datepicker .prev,.tribe-theme-avada .tribe-events .datepicker .prev:hover{background-color:var(--tec-color-background)}.tribe-theme-avada .tribe-events .datepicker .day.new,.tribe-theme-avada .tribe-events .datepicker .day.old{background-color:transparent!important;color:var(--tec-color-text-primary)!important}.tribe-theme-avada .tribe-events .datepicker .day.new.focused,.tribe-theme-avada .tribe-events .datepicker .day.new:focus,.tribe-theme-avada .tribe-events .datepicker .day.new:hover,.tribe-theme-avada .tribe-events .datepicker .day.old.focused,.tribe-theme-avada .tribe-events .datepicker .day.old:focus,.tribe-theme-avada .tribe-events .datepicker .day.old:hover{background:var(--tec-color-background-secondary-datepicker)!important}.tribe-theme-avada .tribe-events .datepicker .day,.tribe-theme-avada .tribe-events .datepicker .month{background-color:transparent;color:var(--tec-color-text-primary)}.tribe-theme-avada .tribe-events .datepicker .day.focused,.tribe-theme-avada .tribe-events .datepicker .day:focus,.tribe-theme-avada .tribe-events .datepicker .day:hover,.tribe-theme-avada .tribe-events .datepicker .month.focused,.tribe-theme-avada .tribe-events .datepicker .month:focus,.tribe-theme-avada .tribe-events .datepicker .month:hover{background:var(--tec-color-background-secondary-datepicker)}.tribe-theme-avada .tribe-events .datepicker .day.past,.tribe-theme-avada .tribe-events .datepicker .month.past{color:var(--tec-color-text-primary-light)!important}.tribe-theme-avada .tribe-events .datepicker .day.current,.tribe-theme-avada .tribe-events .datepicker .day.current.focused,.tribe-theme-avada .tribe-events .datepicker .day.current:focus,.tribe-theme-avada .tribe-events .datepicker .day.current:hover,.tribe-theme-avada .tribe-events .datepicker .month.current,.tribe-theme-avada .tribe-events .datepicker .month.current.focused,.tribe-theme-avada .tribe-events .datepicker .month.current:focus,.tribe-theme-avada .tribe-events .datepicker .month.current:hover{background:var(--tec-color-accent-primary-background-datepicker)}.tribe-theme-avada .tribe-events .datepicker .day.active,.tribe-theme-avada .tribe-events .datepicker .day.active.focused,.tribe-theme-avada .tribe-events .datepicker .day.active:focus,.tribe-theme-avada .tribe-events .datepicker .day.active:hover,.tribe-theme-avada .tribe-events .datepicker .month.active,.tribe-theme-avada .tribe-events .datepicker .month.active.focused,.tribe-theme-avada .tribe-events .datepicker .month.active:focus,.tribe-theme-avada .tribe-events .datepicker .month.active:hover{background:var(--tec-color-accent-primary)!important;color:var(--tec-color-background)!important}.tribe-events .tribe-events-c-day-marker:after{background-color:var(--tec-color-border-default);content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-c-events-bar{background-color:var(--tec-color-background-events-bar)}.tribe-events .tribe-events-c-events-bar .tribe-common-form-control-text__input{background-color:transparent;color:var(--tec-color-text-events-bar-input)}.tribe-events .tribe-events-c-events-bar .tribe-common-form-control-text__input::placeholder{color:var(--tec-color-text-events-bar-input-placeholder);opacity:var(--tec-opacity-events-bar-input-placeholder)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar--border{border:1px solid var(--tec-color-border-events-bar)}.tribe-events .tribe-events-c-events-bar__search-container{background-color:var(--tec-color-background-events-bar)}.tribe-events .tribe-events-c-events-bar__search-button{display:flex}.tribe-events .tribe-events-c-events-bar__search-button:focus,.tribe-events .tribe-events-c-events-bar__search-button:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-events-bar__search-button:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-c-events-bar__search-button:before{background-color:var(--tec-color-icon-events-bar-hover);content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(var(--tec-spacer-0));width:calc(100% - var(--tec-spacer-0)*2)}.tribe-events .tribe-events-c-events-bar__search-button--active:before{display:block}.tribe-events .tribe-events-c-events-bar__search-button-icon-svg path{fill:var(--tec-color-icon-events-bar-active)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-events-bar__search-button,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-events-bar__search-button:focus,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-events-bar__search-button:hover{background-color:transparent}.single-tribe_events .tribe-events-c-ical__link,.single-tribe_events .tribe-events-c-ical__link:visited,.tribe-events .tribe-events-c-ical__link,.tribe-events .tribe-events-c-ical__link:visited{align-items:center;background-color:var(--tec-color-background);border:1px solid var(--tec-color-accent-primary);border-radius:var(--tec-border-radius-default);color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.single-tribe_events .tribe-events-c-ical__link:active,.single-tribe_events .tribe-events-c-ical__link:focus,.single-tribe_events .tribe-events-c-ical__link:focus-within,.single-tribe_events .tribe-events-c-ical__link:hover,.tribe-events .tribe-events-c-ical__link:active,.tribe-events .tribe-events-c-ical__link:focus,.tribe-events .tribe-events-c-ical__link:focus-within,.tribe-events .tribe-events-c-ical__link:hover{background-color:var(--tec-color-accent-primary);color:var(--tec-color-background)}.single-tribe_events .tribe-events-c-ical__link:active .tribe-events-c-ical__link-icon-svg path,.single-tribe_events .tribe-events-c-ical__link:focus-within .tribe-events-c-ical__link-icon-svg path,.single-tribe_events .tribe-events-c-ical__link:focus .tribe-events-c-ical__link-icon-svg path,.single-tribe_events .tribe-events-c-ical__link:hover .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:active .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:focus-within .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:focus .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:hover .tribe-events-c-ical__link-icon-svg path{stroke:var(--tec-color-background)}.single-tribe_events .tribe-events-c-ical__link-icon-svg,.tribe-events .tribe-events-c-ical__link-icon-svg{display:block;flex:none;margin-right:var(--tec-spacer-1);width:10px}.single-tribe_events .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link-icon-svg path{stroke:currentColor}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button.tribe-events-c-subscribe-dropdown__button--active,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus-within,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:hover,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button.tribe-events-c-subscribe-dropdown__button--active,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus-within,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:hover{background-color:var(--tec-color-accent-primary);color:var(--tec-color-background)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-text,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-text{cursor:pointer}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon{color:currentColor;stroke:currentColor}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon path,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon path{fill:currentColor}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list{background-color:var(--tec-color-background);border:1px solid var(--tec-color-border-secondary);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-default)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:active,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus-within,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:hover,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:active,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus-within,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:hover{background-color:var(--tec-color-background-subscribe-list-item-hover)}.tribe-theme-twentyseventeen .single-tribe_events .tribe-events-c-ical__link:active,.tribe-theme-twentyseventeen .single-tribe_events .tribe-events-c-ical__link:focus,.tribe-theme-twentyseventeen .single-tribe_events .tribe-events-c-ical__link:hover,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-ical__link:active,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-ical__link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-ical__link:hover{color:var(--tec-color-background)}.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-ical__link:focus:not(.wp-block-button__link):not(.wp-block-file__button),.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-ical__link:focus:not(.wp-block-button__link):not(.wp-block-file__button){background-color:var(--tec-color-accent-primary);color:var(--tec-color-background)}.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a:focus,.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a:focus-within,.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a:hover,.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-subscribe-dropdown__list-item a:focus,.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-subscribe-dropdown__list-item a:focus-within,.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-subscribe-dropdown__list-item a:hover{background-color:transparent!important}.single-tribe_events .tribe-events-c-ical,.tribe-block__events-link .tribe-events-c-ical{text-align:left}.single-tribe_events .tribe-events-c-ical__link,.tribe-block__events-link .tribe-events-c-ical__link{color:var(--tec-color-accent-primary);font-size:var(--tec-font-size-2);margin:0 0 var(--tec-spacer-3);width:220px}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown__container,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown__container{width:200px}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown{position:relative}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content{position:absolute;top:42px;width:100%;z-index:var(--tec-z-index-dropdown)}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon{margin-left:var(--tec-spacer-2)}.single-tribe_events .tribe-events-c-subscribe-dropdown__button,.tribe-block__events-link .tribe-events-c-subscribe-dropdown__button{padding:var(--tec-spacer-1) var(--tec-spacer-2);width:200px}.single-tribe_events .tribe-events-c-subscribe-dropdown__export-icon,.tribe-block__events-link .tribe-events-c-subscribe-dropdown__export-icon{color:currentColor;display:inline-block;height:16px;margin-right:var(--tec-spacer-1);margin-top:-3px;stroke:currentColor;vertical-align:middle;width:21px}#tribe-events-content .tribe-block__events-link .tribe-events-c-ical__link{color:var(--tec-color-accent-primary)}#tribe-events-content .tribe-block__events-link .tribe-events-c-ical__link:hover{color:#fff}.tribe-events .tribe-events-c-messages__message{background-color:var(--tec-color-background-messages);border-radius:var(--tec-border-radius-default)}.tribe-events .tribe-events-c-messages__message--notice .tribe-events-c-messages__message-icon-svg{display:inline-block;margin-right:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-messages__message-list{text-align:center}.tribe-events .tribe-events-c-messages__message-list-item-link{font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-c-nav{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-c-nav__list{list-style:none}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{white-space:pre}.tribe-events .tribe-events-c-nav__today:focus,.tribe-events .tribe-events-c-nav__today:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-events .tribe-events-c-nav__today:active{color:var(--tec-color-text-primary)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev{color:var(--tec-color-text-secondary)}.tribe-events .tribe-events-c-nav__next:focus,.tribe-events .tribe-events-c-nav__next:hover,.tribe-events .tribe-events-c-nav__prev:focus,.tribe-events .tribe-events-c-nav__prev:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-events .tribe-events-c-nav__next:active,.tribe-events .tribe-events-c-nav__prev:active{color:var(--tec-color-text-primary)}.tribe-events .tribe-events-c-nav__next:disabled,.tribe-events .tribe-events-c-nav__prev:disabled{background-color:transparent;color:var(--tec-color-text-disabled)}.tribe-events .tribe-events-c-nav__prev:focus .tribe-events-c-nav__prev-icon-svg,.tribe-events .tribe-events-c-nav__prev:hover .tribe-events-c-nav__prev-icon-svg{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-nav__prev:focus .tribe-events-c-nav__prev-icon-svg path,.tribe-events .tribe-events-c-nav__prev:hover .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .tribe-events-c-nav__prev:active:before{opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-c-nav__prev:disabled .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-disabled)}.tribe-events .tribe-events-c-nav__prev-icon-svg{display:block;margin-right:8px;width:7px}.tribe-events .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev-icon-svg{margin-right:15px;width:9px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-primary)}.tribe-events .tribe-events-c-nav__next:focus .tribe-events-c-nav__next-icon-svg,.tribe-events .tribe-events-c-nav__next:hover .tribe-events-c-nav__next-icon-svg{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-nav__next:focus .tribe-events-c-nav__next-icon-svg path,.tribe-events .tribe-events-c-nav__next:hover .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .tribe-events-c-nav__next:active:after{opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-c-nav__next:disabled .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-disabled)}.tribe-events .tribe-events-c-nav__next-icon-svg{display:block;margin-left:8px;width:7px}.tribe-events .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next-icon-svg{margin-left:15px;width:9px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-primary)}.tribe-events .tribe-events-c-small-cta__stock{color:var(--tec-color-text-secondary)}.tribe-events .tribe-events-c-search__input-control{position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control{border-right:1px solid var(--tec-color-border-events-bar)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control:last-child{border-right:0}.tribe-events .tribe-events-c-search__input-control-icon-svg{color:var(--tec-color-icon-events-bar);display:block;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control-icon-svg{left:16px;right:auto}.tribe-events .tribe-events-c-search__input-control--keyword-focus .tribe-events-c-search__input~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input:focus~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control--location-focus .tribe-events-c-search__input~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input:focus~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control-icon-svg path{fill:currentColor}.tribe-events .tribe-events-c-search__button{background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tribe-events .tribe-events-c-search__button:focus,.tribe-events .tribe-events-c-search__button:hover{background-color:var(--tec-color-background-events-bar-submit-button-hover);color:var(--tec-color-text-events-bar-submit-button-hover)}.tribe-events .tribe-events-c-search__button:active{background-color:var(--tec-color-background-events-bar-submit-button-active);color:var(--tec-color-text-events-bar-submit-button-active)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__input{background-color:var(--tec-background-color)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button{background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button:focus,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button:hover{background-color:var(--tec-color-background-events-bar-submit-button-hover);color:var(--tec-color-text-events-bar-submit-button-hover)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button:active{background-color:var(--tec-color-background-events-bar-submit-button-active);color:var(--tec-color-text-events-bar-submit-button-active)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__input{background-color:var(--tec-background-color)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button{background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button:focus,.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button:hover{background-color:var(--tec-color-background-events-bar-submit-button-hover);color:var(--tec-color-text-events-bar-submit-button-hover)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button:active{background-color:var(--tec-color-background-events-bar-submit-button-active);color:var(--tec-color-text-events-bar-submit-button-active)}.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-search__button:not(:hover):not(:active){background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tooltipster-base.tribe-events-tooltip-theme{background-color:var(--tec-color-background-tooltip);border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{color:var(--tec-color-text-primary);overflow:inherit}.tooltipster-base.tribe-events-tooltip-theme--hover{background-color:var(--tec-color-background-tooltip)}.tribe-events .tribe-events-c-top-bar__datepicker-button{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-c-top-bar__datepicker-button:focus,.tribe-events .tribe-events-c-top-bar__datepicker-button:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-top-bar__datepicker-button:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-c-top-bar__datepicker-button-icon-svg{display:block;height:6px;margin-left:var(--tec-spacer-1);width:9px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__datepicker-button-icon-svg{height:8px;width:11px}.tribe-events .tribe-events-c-top-bar__datepicker-button--open .tribe-events-c-top-bar__datepicker-button-icon-svg{transform:rotate(180deg)}.tribe-theme-genesis .tribe-events .tribe-events-c-top-bar__nav-link:disabled,.tribe-theme-genesis .tribe-events .tribe-events-c-top-bar__nav-link:focus,.tribe-theme-genesis .tribe-events .tribe-events-c-top-bar__nav-link:hover,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-top-bar__datepicker-button,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-top-bar__nav-link{background-color:transparent}.tribe-theme-twentytwentyone .tribe-events button.tribe-events-c-top-bar__datepicker-button:focus{outline-offset:0}.tribe-theme-twentytwentyone .tribe-events a.tribe-events-c-top-bar__nav-link--next.tribe-events-c-top-bar__nav-link:focus,.tribe-theme-twentytwentyone .tribe-events a.tribe-events-c-top-bar__nav-link--prev.tribe-events-c-top-bar__nav-link:focus{background:transparent}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button:before{content:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon-caret-svg{color:var(--tec-color-icon-events-bar);display:block;flex:none;height:6px;margin-left:var(--tec-spacer-1);width:10px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon-caret-svg path{fill:currentColor}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button--active .tribe-events-c-view-selector__button-icon-caret-svg{transform:rotate(180deg)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-2);line-height:var(--tec-line-height-3);font-weight:var(--tec-font-weight-regular);font-weight:var(--tec-font-weight-bold);color:var(--tec-color-text-view-selector-list-item)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{box-shadow:var(--tec-box-shadow-default)}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{background-color:var(--tec-color-background-view-selector)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{border:0;border-radius:0;box-shadow:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link:after{background-color:var(--tec-color-accent-secondary);bottom:-1px;content:"";display:block;height:2px;position:absolute;width:100%}.tribe-events .tribe-events-c-view-selector__button{text-align:left}.tribe-events .tribe-events-c-view-selector__button:focus,.tribe-events .tribe-events-c-view-selector__button:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-view-selector__button:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-c-view-selector__button:before{background-color:var(--tec-color-accent-primary);content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(var(--tec-spacer-0));width:calc(100% - var(--tec-spacer-0)*2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__button:before{transform:none;width:calc(100% - var(--tec-spacer-1)*2)}.tribe-events .tribe-events-c-view-selector__button--active:before{display:block}.tribe-events .tribe-events-c-view-selector__content{background-color:var(--tec-color-background-view-selector);border:1px solid var(--tec-color-border-secondary);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__list-item:focus,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__list-item:focus-within,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__list-item:hover{background-color:var(--tec-color-background-view-selector-list-item-hover)}.tribe-events .tribe-events-c-view-selector__list-item-text{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-2);line-height:var(--tec-line-height-3);font-weight:var(--tec-font-weight-regular);color:var(--tec-color-text-view-selector-list-item)}.tribe-events .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-text{font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-c-view-selector__list-item-link{border-radius:var(--tec-border-radius-default);color:var(--tec-color-text-view-selector-list-item)}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-icon,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-icon{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-text,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-text{color:var(--tec-color-text-view-selector-list-item-hover)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-view-selector__button,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-view-selector__button:focus,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-view-selector__button:hover{background-color:transparent}.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{background-color:var(--tec-color-accent-primary);border-radius:var(--tec-border-radius-default);content:"";height:100%;position:absolute;right:calc(100% - 3px);width:3px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-list__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2);color:var(--tec-color-text-secondary);text-transform:uppercase}.tribe-events .tribe-events-calendar-list__event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-list__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-list__event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-list__event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-list__event-title{color:var(--tec-color-text-event-title-list)}.tribe-events .tribe-events-calendar-list__event-datetime{color:var(--tec-color-text-event-date)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-list__month-separator:after{background-color:var(--tec-color-border-default);content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-list-nav{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-calendar-month__body{background-color:var(--tec-color-background-month-grid)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__calendar-event{opacity:.64}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__calendar-event-datetime{color:var(--tec-color-text-event-date);opacity:.94}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-month__calendar-event-datetime{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2);color:var(--tec-color-text-event-date-secondary)}.tribe-events .tribe-events-calendar-month__calendar-event--featured:before{background-color:var(--tec-color-accent-primary);content:"";height:100%;left:7px;position:absolute;width:2px}.tribe-events .tribe-events-calendar-month__calendar-event--featured:last-child:before{height:calc(100% - var(--tec-spacer-3))}.tribe-events .tribe-events-calendar-month__calendar-event-title-link,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__calendar-event-title-link:active,.tribe-events .tribe-events-calendar-month__calendar-event-title-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-title-link:hover,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:active,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__calendar-event-title-link:visited,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2);color:var(--tec-color-text-event-date)}.tribe-events .tribe-events-calendar-month__header-column{text-transform:uppercase}.tribe-events .tribe-events-calendar-month__header-column-title{color:var(--tec-color-text-day-of-week-month);text-align:center}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__header-column-title{text-align:left}.tribe-events .tribe-events-calendar-month__day{border-radius:var(--tec-border-radius-default)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day{border-radius:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day:after{background-color:transparent;bottom:0;content:"";display:block;height:2px;left:-1px;position:absolute;transition:var(--tec-transition-background-color);width:calc(100% + 2px)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day:hover:after{background-color:var(--tec-color-border-active-month-grid-hover)}.tribe-events .tribe-events-calendar-month__day-date-link{color:var(--tec-color-day-marker-month);transition:var(--tec-transition-color)}.tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-day-marker-month-hover)}.tribe-events .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-day-marker-month-active)}.tribe-events .tribe-events-calendar-month__day-date-daynum{color:var(--tec-color-day-marker-month)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link{color:var(--tec-color-day-marker-current-month);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-day-marker-month-current-hover)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-day-marker-month-current-active)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date{color:var(--tec-color-day-marker-past-month);opacity:.6}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link{color:var(--tec-color-day-marker-past-month)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-day-marker-month-past-hover)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-day-marker-month-past-active)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link .tribe-events-calendar-month__day-date-daynum{color:inherit}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--event{background-color:var(--tec-color-icon-active);opacity:.6}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--featured{opacity:.6}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .tribe-events-calendar-month__day-cell--mobile:focus,.tribe-events .tribe-events-calendar-month__day-cell--mobile:hover{background-color:var(--tec-color-background-secondary)}.tribe-events .tribe-events-calendar-month__day-cell--selected,.tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:var(--tec-color-accent-primary)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:var(--tec-color-background);opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--event{background-color:var(--tec-color-background);opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--featured{opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:var(--tec-color-background)}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:var(--tec-color-accent-primary)}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:currentColor}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-accent-primary-hover)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-accent-primary-active)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:var(--tec-color-accent-primary)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-accent-secondary-active)}.tribe-theme-twentytwenty .tribe-events .tribe-events-calendar-month__day-cell--selected{background-color:var(--tec-color-accent-primary)}.tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:var(--tec-color-background-events)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event+.tribe-events-calendar-month-mobile-events__mobile-event{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{color:var(--tec-color-text-event-date-secondary-month-mobile)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:focus .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon-svg path,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:hover .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon-svg path{fill:currentColor;stroke:currentColor}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:active,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:focus,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__more-events{border-top:1px solid var(--tec-color-border-secondary)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__more-events-link{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event--start .tribe-events-calendar-month__multiday-event-bar{border-bottom-left-radius:9.5px;border-top-left-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event--end .tribe-events-calendar-month__multiday-event-bar{border-bottom-right-radius:9.5px;border-top-right-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{background-color:var(--tec-color-background-primary-multiday);transition:var(--tec-transition-background-color)}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:var(--tec-color-background-primary-multiday-hover)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner{background-color:var(--tec-color-background-secondary-multiday)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:var(--tec-color-background-secondary-multiday-hover)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-featured-icon,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-title{opacity:.64}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{color:var(--tec-color-text-events-title-month-multiday);font-weight:var(--tec-font-weight-regular);text-overflow:ellipsis}.tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__multiday-event-bar-title{font-weight:var(--tec-font-weight-regular)}.tribe-events .tribe-events-calendar-day__event-title{color:var(--tec-color-text-events-title-day)}.tribe-events .tribe-events-calendar-day__event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-day__event-title-link:active,.tribe-events .tribe-events-calendar-day__event-title-link:focus,.tribe-events .tribe-events-calendar-day__event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-day__event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-day__event-datetime{color:var(--tec-color-text-event-date)}.tribe-events .tribe-events-calendar-day__event--featured{position:relative}.tribe-events .tribe-events-calendar-day__event--featured:after{background-color:var(--tec-color-accent-primary);content:"";height:100%;left:var(--tec-grid-gutter-small-half);position:absolute;width:3px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event--featured:after{left:calc(var(--tec-grid-width-1-of-9) - var(--tec-grid-gutter-half));width:4px}.tribe-events .tribe-events-calendar-day__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-day__event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-day__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-day__event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-day__event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-day-nav{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-calendar-day__time-separator:after,.tribe-events .tribe-events-calendar-day__type-separator:after{background-color:var(--tec-color-border-default);content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-latest-past__event-row--featured .tribe-events-calendar-latest-past__event-date-tag-datetime:after{background-color:var(--tec-color-accent-primary);content:"";height:100%;position:absolute;right:calc(100% - 3px);width:3px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row--featured .tribe-events-calendar-latest-past__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-latest-past__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-month,.tribe-events .tribe-events-calendar-latest-past__event-date-tag-year{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2)}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-month{color:var(--tec-color-text-secondary);text-transform:uppercase}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-latest-past__event-datetime{color:var(--tec-color-text-event-date)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-latest-past__event-title{color:var(--tec-color-text-events-title-latest-past)}.tribe-events .tribe-events-calendar-latest-past__event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-latest-past__event-title-link:active,.tribe-events .tribe-events-calendar-latest-past__event-title-link:focus,.tribe-events .tribe-events-calendar-latest-past__event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-latest-past__event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-status-label__text{color:var(--tec-color-icon-error)}.tribe-events-single .tribe-events-status-single__header{color:var(--tec-color-icon-error);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-0)}.tribe-events-single .tribe-events-status-single__header--bold{font-weight:var(--tec-font-weight-bold)}.tribe-events-single .tribe-events-status-single__header--alert-icon:before{background-image:url(../images/alert.svg);background-repeat:no-repeat;background-size:var(--tec-spacer-3);content:"";display:inline-block;height:var(--tec-spacer-3);margin-right:var(--tec-spacer-1);min-width:var(--tec-spacer-3)}.tribe-events-single .tribe-events-status-single{border:1px solid var(--tec-color-border-active);border-left-color:var(--tec-color-icon-error);border-left-width:var(--tec-spacer-0);font-size:var(--tec-font-size-2)}.tribe-events-single .tribe-events-status-single__description{color:var(--tec-color-text-primary)}
1
+ :root{--tec-color-text-events-title-day:var(--tec-color-text-events-title);--tec-color-text-events-title-latest-past:var(--tec-color-text-events-title);--tec-color-text-event-title-list:var(--tec-color-text-events-title);--tec-color-text-events-title-month-multiday:var(--tec-color-text-events-title);--tec-color-text-events-title-widget-list:var(--tec-color-text-events-title);--tec-color-text-event-date-secondary-month:var(--tec-color-text-event-date-secondary);--tec-color-text-event-date-secondary-month-mobile:var(--tec-color-text-event-date-secondary-month);--tec-color-text-day-of-week-month:var(--tec-color-text-secondary);--tec-color-day-marker-month:var(--tec-color-text-primary);--tec-color-day-marker-month-hover:var(--tec-color-text-primary-hover);--tec-color-day-marker-month-active:var(--tec-color-text-primary-active);--tec-color-day-marker-current-month:var(--tec-color-day-marker-month);--tec-color-day-marker-current-month-hover:var(--tec-color-day-marker-month-hover);--tec-color-day-marker-current-month-active:var(--tec-color-day-marker-month-active);--tec-color-day-marker-past-month:var(--tec-color-text-primary);--tec-color-day-marker-past-month-hover:var(--tec-color-day-marker-past-month);--tec-color-day-marker-past-month-active:var(--tec-color-day-marker-past-month);--tec-color-text-day-of-week-week:var(--tec-color-text-secondary);--tec-border-radius-month-multiday:9.5px;--tec-color-border-secondary-month-grid:var(--tec-color-border-secondary);--tec-color-border-active-month-grid-hover:var(--tec-color-border-active);--tec-color-background-month-grid:transparent;--tec-color-background-tooltip:var(--tec-color-background);--tec-color-text-events-bar-input:var(--tec-color-text-primary);--tec-color-text-events-bar-input-placeholder:var(--tec-color-text-secondary);--tec-opacity-events-bar-input-placeholder:var(--tec-opacity-default);--tec-color-border-events-bar:var(--tec-color-border-secondary);--tec-color-background-events-bar:var(--tec-color-background);--tec-color-background-view-selector:var(--tec-color-background-events-bar);--tec-color-background-view-selector-tabs:var(--tec-color-background-view-selector);--tec-color-background-view-selector-list-item-hover:var(--tec-color-background-secondary);--tec-color-background-subscribe-list-item-hover:var(--tec-color-background-secondary);--tec-color-text-view-selector-list-item:var(--tec-color-text-primary);--tec-color-text-view-selector-list-item-hover:var(--tec-color-accent-secondary-hover);--tec-color-background-search-container:var(--tec-color-background-events-bar);--tec-color-text-events-bar-submit-button:var(--tec-color-background);--tec-color-text-events-bar-submit-button-active:var(--tec-color-text-events-bar-submit-button);--tec-color-text-events-bar-submit-button-hover:var(--tec-color-text-events-bar-submit-button);--tec-color-background-events-bar-submit-button:var(--tec-color-button-primary);--tec-color-background-events-bar-submit-button-hover:var(--tec-color-button-primary-hover);--tec-color-background-events-bar-submit-button-active:var(--tec-color-button-primary-active);--tec-color-icon-events-bar:var(--tec-color-icon-primary);--tec-color-icon-events-bar-active:var(--tec-color-icon-active);--tec-color-icon-events-bar-hover:var(--tec-color-icon-hover)}.tribe-events-view{background-color:var(--tec-color-background-events)}.tribe-events .tribe-events-c-breadcrumbs__list{font-family:var(--tec-font-family-base);font-size:24px;line-height:var(--tec-line-height-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-breadcrumbs__list{font-size:42px;line-height:var(--tec-line-height-0)}.tribe-events .tribe-events-c-breadcrumbs__list-item-link{color:var(--tec-color-text-secondary);transition:var(--tec-transition-color)}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:visited{color:var(--tec-color-text-secondary)}.tribe-events .tribe-events-c-breadcrumbs__list-item-link:focus,.tribe-events .tribe-events-c-breadcrumbs__list-item-link:hover{color:var(--tec-color-text-primary)}.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg path{fill:var(--tec-color-icon-primary)}.tribe-events .datepicker{background-color:var(--tec-color-background);border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tribe-events .datepicker:after,.tribe-events .datepicker:before{content:none}.tribe-events .datepicker .datepicker-switch:active,.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover,.tribe-events .datepicker .next:active,.tribe-events .datepicker .next:focus,.tribe-events .datepicker .next:hover,.tribe-events .datepicker .prev:active,.tribe-events .datepicker .prev:focus,.tribe-events .datepicker .prev:hover{background-color:var(--tec-color-background)}.tribe-events .datepicker .datepicker-switch{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-3);line-height:var(--tec-line-height-3);font-weight:var(--tec-font-weight-regular)}.tribe-events .datepicker .datepicker-switch:focus,.tribe-events .datepicker .datepicker-switch:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-events .datepicker .datepicker-switch:active{color:var(--tec-color-accent-secondary-active)}.tribe-events .datepicker .next:active .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .next:focus .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .next:hover .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev:active .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev:focus .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev:hover .tribe-events-c-top-bar__datepicker-nav-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev .tribe-events-c-top-bar__datepicker-nav-icon-svg path{fill:var(--tec-color-icon-secondary)}.tribe-events .datepicker .dow{font-size:var(--tec-font-size-0);line-height:var(--tec-line-height-2)}.tribe-events .datepicker .day,.tribe-events .datepicker .dow{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-weight:var(--tec-font-weight-regular)}.tribe-events .datepicker .day{font-size:var(--tec-font-size-3);line-height:var(--tec-line-height-3)}.tribe-events .datepicker .month,.tribe-events .datepicker .year{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-1);line-height:var(--tec-line-height-0);font-weight:var(--tec-font-weight-regular)}.tribe-events .datepicker .past{color:var(--tec-color-text-primary-light)}.tribe-events .datepicker .day,.tribe-events .datepicker .month,.tribe-events .datepicker .year{border-radius:var(--tec-border-radius-default)}.tribe-events .datepicker .day.focused,.tribe-events .datepicker .day:focus,.tribe-events .datepicker .day:hover,.tribe-events .datepicker .month.focused,.tribe-events .datepicker .month:focus,.tribe-events .datepicker .month:hover,.tribe-events .datepicker .year.focused,.tribe-events .datepicker .year:focus,.tribe-events .datepicker .year:hover{background:var(--tec-color-background-secondary-datepicker)}.tribe-events .datepicker .day.current,.tribe-events .datepicker .day.current.focused,.tribe-events .datepicker .day.current:focus,.tribe-events .datepicker .day.current:hover,.tribe-events .datepicker .month.current,.tribe-events .datepicker .month.current.focused,.tribe-events .datepicker .month.current:focus,.tribe-events .datepicker .month.current:hover,.tribe-events .datepicker .year.current,.tribe-events .datepicker .year.current.focused,.tribe-events .datepicker .year.current:focus,.tribe-events .datepicker .year.current:hover{background:var(--tec-color-accent-primary-background-datepicker)}.tribe-events .datepicker .day.active,.tribe-events .datepicker .day.active.focused,.tribe-events .datepicker .day.active:focus,.tribe-events .datepicker .day.active:hover,.tribe-events .datepicker .month.active,.tribe-events .datepicker .month.active.focused,.tribe-events .datepicker .month.active:focus,.tribe-events .datepicker .month.active:hover,.tribe-events .datepicker .year.active,.tribe-events .datepicker .year.active.focused,.tribe-events .datepicker .year.active:focus,.tribe-events .datepicker .year.active:hover{background:var(--tec-color-accent-primary);color:var(--tec-color-background);text-shadow:none}.admin-bar .tribe-events .datepicker{margin-top:var(--tec-spacer-1)}.admin-bar .tribe-events.tribe-common--breakpoint-medium .datepicker{margin-top:var(--tec-spacer-3)}.tribe-theme-enfold .tribe-events .datepicker{border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tribe-theme-enfold .tribe-events .datepicker table,.tribe-theme-enfold .tribe-events .datepicker td,.tribe-theme-enfold .tribe-events .datepicker th,.tribe-theme-enfold .tribe-events .datepicker tr{background:transparent}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{color:var(--tec-color-text-primary)!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:focus,.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:hover{color:var(--tec-color-accent-secondary-hover)!important}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch:active{color:var(--tec-color-accent-secondary-active)!important}.tribe-theme-enfold .tribe-events .datepicker .day{background-color:var(--tec-color-background)}.tribe-theme-enfold .tribe-events .datepicker .day.new,.tribe-theme-enfold .tribe-events .datepicker .day.old{opacity:1}.tribe-theme-enfold .tribe-events .datepicker .day,.tribe-theme-enfold .tribe-events .datepicker .month,.tribe-theme-enfold .tribe-events .datepicker .year{background-color:var(--tec-color-background);color:var(--tec-color-text-primary)}.tribe-theme-enfold .tribe-events .datepicker .day.focused,.tribe-theme-enfold .tribe-events .datepicker .day:focus,.tribe-theme-enfold .tribe-events .datepicker .day:hover,.tribe-theme-enfold .tribe-events .datepicker .month.focused,.tribe-theme-enfold .tribe-events .datepicker .month:focus,.tribe-theme-enfold .tribe-events .datepicker .month:hover,.tribe-theme-enfold .tribe-events .datepicker .year.focused,.tribe-theme-enfold .tribe-events .datepicker .year:focus,.tribe-theme-enfold .tribe-events .datepicker .year:hover{background:var(--tec-color-background-secondary-datepicker)}.tribe-theme-enfold .tribe-events .datepicker .day.past,.tribe-theme-enfold .tribe-events .datepicker .month.past,.tribe-theme-enfold .tribe-events .datepicker .year.past{color:var(--tec-color-text-primary-light)}.tribe-theme-enfold .tribe-events .datepicker .day.current,.tribe-theme-enfold .tribe-events .datepicker .day.current.focused,.tribe-theme-enfold .tribe-events .datepicker .day.current:focus,.tribe-theme-enfold .tribe-events .datepicker .day.current:hover,.tribe-theme-enfold .tribe-events .datepicker .month.current,.tribe-theme-enfold .tribe-events .datepicker .month.current.focused,.tribe-theme-enfold .tribe-events .datepicker .month.current:focus,.tribe-theme-enfold .tribe-events .datepicker .month.current:hover,.tribe-theme-enfold .tribe-events .datepicker .year.current,.tribe-theme-enfold .tribe-events .datepicker .year.current.focused,.tribe-theme-enfold .tribe-events .datepicker .year.current:focus,.tribe-theme-enfold .tribe-events .datepicker .year.current:hover{background:var(--tec-color-accent-primary-background-datepicker)}.tribe-theme-enfold .tribe-events .datepicker .day.active,.tribe-theme-enfold .tribe-events .datepicker .day.active.focused,.tribe-theme-enfold .tribe-events .datepicker .day.active:focus,.tribe-theme-enfold .tribe-events .datepicker .day.active:hover,.tribe-theme-enfold .tribe-events .datepicker .month.active,.tribe-theme-enfold .tribe-events .datepicker .month.active.focused,.tribe-theme-enfold .tribe-events .datepicker .month.active:focus,.tribe-theme-enfold .tribe-events .datepicker .month.active:hover,.tribe-theme-enfold .tribe-events .datepicker .year.active,.tribe-theme-enfold .tribe-events .datepicker .year.active.focused,.tribe-theme-enfold .tribe-events .datepicker .year.active:focus,.tribe-theme-enfold .tribe-events .datepicker .year.active:hover{background:var(--tec-color-accent-primary);color:var(--tec-color-background)}.tribe-theme-avada .tribe-events .datepicker{border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default)}.tribe-theme-avada .tribe-events .datepicker tbody td{border:0}.tribe-theme-avada .tribe-events .datepicker .datepicker-switch,.tribe-theme-avada .tribe-events .datepicker .datepicker-switch:hover,.tribe-theme-avada .tribe-events .datepicker .next,.tribe-theme-avada .tribe-events .datepicker .next:hover,.tribe-theme-avada .tribe-events .datepicker .prev,.tribe-theme-avada .tribe-events .datepicker .prev:hover{background-color:var(--tec-color-background)}.tribe-theme-avada .tribe-events .datepicker .day.new,.tribe-theme-avada .tribe-events .datepicker .day.old{background-color:transparent!important;color:var(--tec-color-text-primary)!important}.tribe-theme-avada .tribe-events .datepicker .day.new.focused,.tribe-theme-avada .tribe-events .datepicker .day.new:focus,.tribe-theme-avada .tribe-events .datepicker .day.new:hover,.tribe-theme-avada .tribe-events .datepicker .day.old.focused,.tribe-theme-avada .tribe-events .datepicker .day.old:focus,.tribe-theme-avada .tribe-events .datepicker .day.old:hover{background:var(--tec-color-background-secondary-datepicker)!important}.tribe-theme-avada .tribe-events .datepicker .day,.tribe-theme-avada .tribe-events .datepicker .month{background-color:transparent;color:var(--tec-color-text-primary)}.tribe-theme-avada .tribe-events .datepicker .day.focused,.tribe-theme-avada .tribe-events .datepicker .day:focus,.tribe-theme-avada .tribe-events .datepicker .day:hover,.tribe-theme-avada .tribe-events .datepicker .month.focused,.tribe-theme-avada .tribe-events .datepicker .month:focus,.tribe-theme-avada .tribe-events .datepicker .month:hover{background:var(--tec-color-background-secondary-datepicker)}.tribe-theme-avada .tribe-events .datepicker .day.past,.tribe-theme-avada .tribe-events .datepicker .month.past{color:var(--tec-color-text-primary-light)!important}.tribe-theme-avada .tribe-events .datepicker .day.current,.tribe-theme-avada .tribe-events .datepicker .day.current.focused,.tribe-theme-avada .tribe-events .datepicker .day.current:focus,.tribe-theme-avada .tribe-events .datepicker .day.current:hover,.tribe-theme-avada .tribe-events .datepicker .month.current,.tribe-theme-avada .tribe-events .datepicker .month.current.focused,.tribe-theme-avada .tribe-events .datepicker .month.current:focus,.tribe-theme-avada .tribe-events .datepicker .month.current:hover{background:var(--tec-color-accent-primary-background-datepicker)}.tribe-theme-avada .tribe-events .datepicker .day.active,.tribe-theme-avada .tribe-events .datepicker .day.active.focused,.tribe-theme-avada .tribe-events .datepicker .day.active:focus,.tribe-theme-avada .tribe-events .datepicker .day.active:hover,.tribe-theme-avada .tribe-events .datepicker .month.active,.tribe-theme-avada .tribe-events .datepicker .month.active.focused,.tribe-theme-avada .tribe-events .datepicker .month.active:focus,.tribe-theme-avada .tribe-events .datepicker .month.active:hover{background:var(--tec-color-accent-primary)!important;color:var(--tec-color-background)!important}.tribe-events .tribe-events-c-day-marker:after{background-color:var(--tec-color-border-default);content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-c-events-bar{background-color:var(--tec-color-background-events-bar)}.tribe-events .tribe-events-c-events-bar .tribe-common-form-control-text__input{background-color:transparent;color:var(--tec-color-text-events-bar-input)}.tribe-events .tribe-events-c-events-bar .tribe-common-form-control-text__input::placeholder{color:var(--tec-color-text-events-bar-input-placeholder);opacity:var(--tec-opacity-events-bar-input-placeholder)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar--border{border:1px solid var(--tec-color-border-events-bar)}.tribe-events .tribe-events-c-events-bar__search-container{background-color:var(--tec-color-background-events-bar)}.tribe-events .tribe-events-c-events-bar__search-button{display:flex}.tribe-events .tribe-events-c-events-bar__search-button:focus,.tribe-events .tribe-events-c-events-bar__search-button:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-events-bar__search-button:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-c-events-bar__search-button:before{background-color:var(--tec-color-icon-events-bar-hover);content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(var(--tec-spacer-0));width:calc(100% - var(--tec-spacer-0)*2)}.tribe-events .tribe-events-c-events-bar__search-button--active:before{display:block}.tribe-events .tribe-events-c-events-bar__search-button-icon-svg path{fill:var(--tec-color-icon-events-bar-active)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-events-bar__search-button,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-events-bar__search-button:focus,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-events-bar__search-button:hover{background-color:transparent}.single-tribe_events .tribe-events-c-ical__link,.single-tribe_events .tribe-events-c-ical__link:visited,.tribe-events .tribe-events-c-ical__link,.tribe-events .tribe-events-c-ical__link:visited{align-items:center;background-color:var(--tec-color-background);border:1px solid var(--tec-color-accent-primary);border-radius:var(--tec-border-radius-default);color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.single-tribe_events .tribe-events-c-ical__link:active,.single-tribe_events .tribe-events-c-ical__link:focus,.single-tribe_events .tribe-events-c-ical__link:focus-within,.single-tribe_events .tribe-events-c-ical__link:hover,.tribe-events .tribe-events-c-ical__link:active,.tribe-events .tribe-events-c-ical__link:focus,.tribe-events .tribe-events-c-ical__link:focus-within,.tribe-events .tribe-events-c-ical__link:hover{background-color:var(--tec-color-accent-primary);color:var(--tec-color-background)}.single-tribe_events .tribe-events-c-ical__link:active .tribe-events-c-ical__link-icon-svg path,.single-tribe_events .tribe-events-c-ical__link:focus-within .tribe-events-c-ical__link-icon-svg path,.single-tribe_events .tribe-events-c-ical__link:focus .tribe-events-c-ical__link-icon-svg path,.single-tribe_events .tribe-events-c-ical__link:hover .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:active .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:focus-within .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:focus .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link:hover .tribe-events-c-ical__link-icon-svg path{stroke:var(--tec-color-background)}.single-tribe_events .tribe-events-c-ical__link-icon-svg,.tribe-events .tribe-events-c-ical__link-icon-svg{display:block;flex:none;margin-right:var(--tec-spacer-1);width:10px}.single-tribe_events .tribe-events-c-ical__link-icon-svg path,.tribe-events .tribe-events-c-ical__link-icon-svg path{stroke:currentColor}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button.tribe-events-c-subscribe-dropdown__button--active,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus-within,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:hover,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button.tribe-events-c-subscribe-dropdown__button--active,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:focus-within,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button:hover{background-color:var(--tec-color-accent-primary);color:var(--tec-color-background)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-text,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-text{cursor:pointer}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon{color:currentColor;stroke:currentColor}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon path,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon path{fill:currentColor}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list{background-color:var(--tec-color-background);border:1px solid var(--tec-color-border-secondary);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-default)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:active,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus-within,.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:hover,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:active,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:focus-within,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item:hover{background-color:var(--tec-color-background-subscribe-list-item-hover)}.tribe-theme-twentyseventeen .single-tribe_events .tribe-events-c-ical__link:active,.tribe-theme-twentyseventeen .single-tribe_events .tribe-events-c-ical__link:focus,.tribe-theme-twentyseventeen .single-tribe_events .tribe-events-c-ical__link:hover,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-ical__link:active,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-ical__link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-c-ical__link:hover{color:var(--tec-color-background)}.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-ical__link:focus:not(.wp-block-button__link):not(.wp-block-file__button),.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-ical__link:focus:not(.wp-block-button__link):not(.wp-block-file__button){background-color:var(--tec-color-accent-primary);color:var(--tec-color-background)}.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a:focus,.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a:focus-within,.tribe-theme-twentytwentyone .single-tribe_events .tribe-events-c-subscribe-dropdown__list-item a:hover,.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-subscribe-dropdown__list-item a:focus,.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-subscribe-dropdown__list-item a:focus-within,.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-subscribe-dropdown__list-item a:hover{background-color:transparent!important}.single-tribe_events .tribe-events-c-ical,.tribe-block__events-link .tribe-events-c-ical{text-align:left}.single-tribe_events .tribe-events-c-ical__link,.tribe-block__events-link .tribe-events-c-ical__link{color:var(--tec-color-accent-primary);font-size:var(--tec-font-size-2);margin:0 0 var(--tec-spacer-3);width:220px}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown__container,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown__container{width:200px}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown{position:relative}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content{position:absolute;top:42px;width:100%;z-index:var(--tec-z-index-dropdown)}.single-tribe_events .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon,.tribe-block__events-link .tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon{margin-left:var(--tec-spacer-2)}.single-tribe_events .tribe-events-c-subscribe-dropdown__button,.tribe-block__events-link .tribe-events-c-subscribe-dropdown__button{padding:var(--tec-spacer-1) var(--tec-spacer-2);width:200px}.single-tribe_events .tribe-events-c-subscribe-dropdown__export-icon,.tribe-block__events-link .tribe-events-c-subscribe-dropdown__export-icon{color:currentColor;display:inline-block;height:16px;margin-right:var(--tec-spacer-1);margin-top:-3px;stroke:currentColor;vertical-align:middle;width:21px}#tribe-events-content .tribe-block__events-link .tribe-events-c-ical__link{color:var(--tec-color-accent-primary)}#tribe-events-content .tribe-block__events-link .tribe-events-c-ical__link:hover{color:#fff}.tribe-events .tribe-events-c-messages__message{background-color:var(--tec-color-background-messages);border-radius:var(--tec-border-radius-default)}.tribe-events .tribe-events-c-messages__message--notice .tribe-events-c-messages__message-icon-svg{display:inline-block;margin-right:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-messages__message-list{text-align:center}.tribe-events .tribe-events-c-messages__message-list-item-link{color:var(--tec-color-link-accent);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-c-nav{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-c-nav__list{list-style:none}.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-events .tribe-events-c-nav__prev-label-plural{white-space:pre}.tribe-events .tribe-events-c-nav__today:focus,.tribe-events .tribe-events-c-nav__today:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-events .tribe-events-c-nav__today:active{color:var(--tec-color-text-primary)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev{color:var(--tec-color-text-secondary)}.tribe-events .tribe-events-c-nav__next:focus,.tribe-events .tribe-events-c-nav__next:hover,.tribe-events .tribe-events-c-nav__prev:focus,.tribe-events .tribe-events-c-nav__prev:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-events .tribe-events-c-nav__next:active,.tribe-events .tribe-events-c-nav__prev:active{color:var(--tec-color-text-primary)}.tribe-events .tribe-events-c-nav__next:disabled,.tribe-events .tribe-events-c-nav__prev:disabled{background-color:transparent;color:var(--tec-color-text-disabled)}.tribe-events .tribe-events-c-nav__prev:focus .tribe-events-c-nav__prev-icon-svg,.tribe-events .tribe-events-c-nav__prev:hover .tribe-events-c-nav__prev-icon-svg{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-nav__prev:focus .tribe-events-c-nav__prev-icon-svg path,.tribe-events .tribe-events-c-nav__prev:hover .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .tribe-events-c-nav__prev:active:before{opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-c-nav__prev:disabled .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-disabled)}.tribe-events .tribe-events-c-nav__prev-icon-svg{display:block;margin-right:8px;width:7px}.tribe-events .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev-icon-svg{margin-right:15px;width:9px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev-icon-svg path{fill:var(--tec-color-icon-primary)}.tribe-events .tribe-events-c-nav__next:focus .tribe-events-c-nav__next-icon-svg,.tribe-events .tribe-events-c-nav__next:hover .tribe-events-c-nav__next-icon-svg{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-nav__next:focus .tribe-events-c-nav__next-icon-svg path,.tribe-events .tribe-events-c-nav__next:hover .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .tribe-events-c-nav__next:active:after{opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-c-nav__next:disabled .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-disabled)}.tribe-events .tribe-events-c-nav__next-icon-svg{display:block;margin-left:8px;width:7px}.tribe-events .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next-icon-svg{margin-left:15px;width:9px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next-icon-svg path{fill:var(--tec-color-icon-primary)}.tribe-events .tribe-events-c-small-cta__stock{color:var(--tec-color-text-secondary)}.tribe-events .tribe-events-c-search__input-control{position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control{border-right:1px solid var(--tec-color-border-events-bar)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control:last-child{border-right:0}.tribe-events .tribe-events-c-search__input-control-icon-svg{color:var(--tec-color-icon-events-bar);display:block;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control-icon-svg{left:16px;right:auto}.tribe-events .tribe-events-c-search__input-control--keyword-focus .tribe-events-c-search__input~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control--keyword .tribe-events-c-search__input:focus~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control--location-focus .tribe-events-c-search__input~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control--location .tribe-events-c-search__input:focus~.tribe-events-c-search__input-control-icon-svg path,.tribe-events .tribe-events-c-search__input-control-icon-svg path{fill:currentColor}.tribe-events .tribe-events-c-search__button{background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tribe-events .tribe-events-c-search__button:focus,.tribe-events .tribe-events-c-search__button:hover{background-color:var(--tec-color-background-events-bar-submit-button-hover);color:var(--tec-color-text-events-bar-submit-button-hover)}.tribe-events .tribe-events-c-search__button:active{background-color:var(--tec-color-background-events-bar-submit-button-active);color:var(--tec-color-text-events-bar-submit-button-active)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__input{background-color:var(--tec-background-color)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button{background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button:focus,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button:hover{background-color:var(--tec-color-background-events-bar-submit-button-hover);color:var(--tec-color-text-events-bar-submit-button-hover)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-search__button:active{background-color:var(--tec-color-background-events-bar-submit-button-active);color:var(--tec-color-text-events-bar-submit-button-active)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__input{background-color:var(--tec-background-color)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button{background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button:focus,.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button:hover{background-color:var(--tec-color-background-events-bar-submit-button-hover);color:var(--tec-color-text-events-bar-submit-button-hover)}.tribe-theme-twentytwenty .tribe-events .tribe-events-c-search__button:active{background-color:var(--tec-color-background-events-bar-submit-button-active);color:var(--tec-color-text-events-bar-submit-button-active)}.tribe-theme-twentytwentyone .tribe-events .tribe-events-c-search__button:not(:hover):not(:active){background-color:var(--tec-color-background-events-bar-submit-button);color:var(--tec-color-text-events-bar-submit-button)}.tooltipster-base.tribe-events-tooltip-theme{background-color:var(--tec-color-background-tooltip);border:1px solid var(--tec-color-border-default);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{color:var(--tec-color-text-primary);overflow:inherit}.tooltipster-base.tribe-events-tooltip-theme--hover{background-color:var(--tec-color-background-tooltip)}.tribe-events .tribe-events-c-top-bar__datepicker-button{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-c-top-bar__datepicker-button:focus,.tribe-events .tribe-events-c-top-bar__datepicker-button:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-top-bar__datepicker-button:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-c-top-bar__datepicker-button-icon-svg{display:block;height:6px;margin-left:var(--tec-spacer-1);width:9px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__datepicker-button-icon-svg{height:8px;width:11px}.tribe-events .tribe-events-c-top-bar__datepicker-button--open .tribe-events-c-top-bar__datepicker-button-icon-svg{transform:rotate(180deg)}.tribe-theme-genesis .tribe-events .tribe-events-c-top-bar__nav-link:disabled,.tribe-theme-genesis .tribe-events .tribe-events-c-top-bar__nav-link:focus,.tribe-theme-genesis .tribe-events .tribe-events-c-top-bar__nav-link:hover,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-top-bar__datepicker-button,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-top-bar__nav-link{background-color:transparent}.tribe-theme-twentytwentyone .tribe-events button.tribe-events-c-top-bar__datepicker-button:focus{outline-offset:0}.tribe-theme-twentytwentyone .tribe-events a.tribe-events-c-top-bar__nav-link--next.tribe-events-c-top-bar__nav-link:focus,.tribe-theme-twentytwentyone .tribe-events a.tribe-events-c-top-bar__nav-link--prev.tribe-events-c-top-bar__nav-link:focus{background:transparent}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button:before{content:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon-caret-svg{color:var(--tec-color-icon-events-bar);display:block;flex:none;height:6px;margin-left:var(--tec-spacer-1);width:10px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon-caret-svg path{fill:currentColor}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button--active .tribe-events-c-view-selector__button-icon-caret-svg{transform:rotate(180deg)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-2);line-height:var(--tec-line-height-3);font-weight:var(--tec-font-weight-regular);font-weight:var(--tec-font-weight-bold);color:var(--tec-color-text-view-selector-list-item)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{box-shadow:var(--tec-box-shadow-default)}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{background-color:var(--tec-color-background-view-selector)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{border:0;border-radius:0;box-shadow:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-link:after{background-color:var(--tec-color-accent-secondary);bottom:-1px;content:"";display:block;height:2px;position:absolute;width:100%}.tribe-events .tribe-events-c-view-selector__button{text-align:left}.tribe-events .tribe-events-c-view-selector__button:focus,.tribe-events .tribe-events-c-view-selector__button:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-view-selector__button:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-c-view-selector__button:before{background-color:var(--tec-color-accent-primary);content:"";display:none;height:2px;pointer-events:none;position:absolute;top:100%;transform:translateY(var(--tec-spacer-0));width:calc(100% - var(--tec-spacer-0)*2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__button:before{transform:none;width:calc(100% - var(--tec-spacer-1)*2)}.tribe-events .tribe-events-c-view-selector__button--active:before{display:block}.tribe-events .tribe-events-c-view-selector__content{background-color:var(--tec-color-background-view-selector);border:1px solid var(--tec-color-border-secondary);border-radius:var(--tec-border-radius-default);box-shadow:var(--tec-box-shadow-tooltip)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__list-item:focus,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__list-item:focus-within,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__list-item:hover{background-color:var(--tec-color-background-view-selector-list-item-hover)}.tribe-events .tribe-events-c-view-selector__list-item-text{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-2);line-height:var(--tec-line-height-3);font-weight:var(--tec-font-weight-regular);color:var(--tec-color-text-view-selector-list-item)}.tribe-events .tribe-events-c-view-selector__list-item--active .tribe-events-c-view-selector__list-item-text{font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-c-view-selector__list-item-link{border-radius:var(--tec-border-radius-default);color:var(--tec-color-text-view-selector-list-item)}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-icon,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-icon{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-c-view-selector__list-item-link:focus .tribe-events-c-view-selector__list-item-text,.tribe-events .tribe-events-c-view-selector__list-item-link:hover .tribe-events-c-view-selector__list-item-text{color:var(--tec-color-text-view-selector-list-item-hover)}.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-view-selector__button,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-view-selector__button:focus,.tribe-theme-twentyseventeen.colors-dark .tribe-events .tribe-events-c-view-selector__button:hover{background-color:transparent}.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{background-color:var(--tec-color-accent-primary);border-radius:var(--tec-border-radius-default);content:"";height:100%;position:absolute;right:calc(100% - 3px);width:3px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row--featured .tribe-events-calendar-list__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-list__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2);color:var(--tec-color-text-secondary);text-transform:uppercase}.tribe-events .tribe-events-calendar-list__event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-list__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-list__event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-list__event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-list__event-title{color:var(--tec-color-text-event-title-list)}.tribe-events .tribe-events-calendar-list__event-datetime{color:var(--tec-color-text-event-date)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-list__month-separator:after{background-color:var(--tec-color-border-default);content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-list-nav{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-calendar-month__body{background-color:var(--tec-color-background-month-grid)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__calendar-event{opacity:.64}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__calendar-event-datetime{color:var(--tec-color-text-event-date);opacity:.94}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-month__calendar-event-datetime{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2);color:var(--tec-color-text-event-date-secondary)}.tribe-events .tribe-events-calendar-month__calendar-event--featured:before{background-color:var(--tec-color-accent-primary);content:"";height:100%;left:7px;position:absolute;width:2px}.tribe-events .tribe-events-calendar-month__calendar-event--featured:last-child:before{height:calc(100% - var(--tec-spacer-3))}.tribe-events .tribe-events-calendar-month__calendar-event-title-link,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__calendar-event-title-link:active,.tribe-events .tribe-events-calendar-month__calendar-event-title-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-title-link:hover,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:active,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__calendar-event-title-link:visited,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:focus,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2);color:var(--tec-color-text-event-date)}.tribe-events .tribe-events-calendar-month__header-column{text-transform:uppercase}.tribe-events .tribe-events-calendar-month__header-column-title{color:var(--tec-color-text-day-of-week-month);text-align:center}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__header-column-title{text-align:left}.tribe-events .tribe-events-calendar-month__day{border-radius:var(--tec-border-radius-default)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day{border-radius:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day:after{background-color:transparent;bottom:0;content:"";display:block;height:2px;left:-1px;position:absolute;transition:var(--tec-transition-background-color);width:calc(100% + 2px)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day:hover:after{background-color:var(--tec-color-border-active-month-grid-hover)}.tribe-events .tribe-events-calendar-month__day-date-link{color:var(--tec-color-day-marker-month);transition:var(--tec-transition-color)}.tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-day-marker-month-hover)}.tribe-events .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-day-marker-month-active)}.tribe-events .tribe-events-calendar-month__day-date-daynum{color:var(--tec-color-day-marker-month)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link{color:var(--tec-color-day-marker-current-month);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-day-marker-month-current-hover)}.tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-day-marker-month-current-active)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date{color:var(--tec-color-day-marker-past-month);opacity:.6}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link{color:var(--tec-color-day-marker-past-month)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link:focus,.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-day-marker-month-past-hover)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-day-marker-month-past-active)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__day-date-link .tribe-events-calendar-month__day-date-daynum{color:inherit}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--event{background-color:var(--tec-color-icon-active);opacity:.6}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--featured{opacity:.6}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:var(--tec-color-icon-active)}.tribe-events .tribe-events-calendar-month__day-cell--mobile:focus,.tribe-events .tribe-events-calendar-month__day-cell--mobile:hover{background-color:var(--tec-color-background-secondary)}.tribe-events .tribe-events-calendar-month__day-cell--selected,.tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:var(--tec-color-accent-primary)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:var(--tec-color-background);opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--event{background-color:var(--tec-color-background);opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--featured{opacity:var(--tec-opacity-default)}.tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:var(--tec-color-background)}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:var(--tec-color-accent-primary)}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:currentColor}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-accent-primary-hover)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day--current .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-accent-primary-active)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-cell--selected:hover{background-color:var(--tec-color-accent-primary)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:hover{color:var(--tec-color-accent-secondary-hover)}.tribe-theme-twentyseventeen .tribe-events .tribe-events-calendar-month__day-date-link:active{color:var(--tec-color-accent-secondary-active)}.tribe-theme-twentytwenty .tribe-events .tribe-events-calendar-month__day-cell--selected{background-color:var(--tec-color-accent-primary)}.tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__day-cell--selected .tribe-events-calendar-month__day-date{color:var(--tec-color-background-events)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event+.tribe-events-calendar-month-mobile-events__mobile-event{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{color:var(--tec-color-text-event-date-secondary-month-mobile)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:focus .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon-svg path,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-link:hover .tribe-events-calendar-month-mobile-events__mobile-event-datetime-recurring-icon-svg path{fill:currentColor;stroke:currentColor}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:active,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:focus,.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-month__more-events{border-top:1px solid var(--tec-color-border-secondary)}.tribe-events .tribe-events-calendar-month__day--past .tribe-events-calendar-month__more-events-link{opacity:.5}.tribe-events .tribe-events-calendar-month__multiday-event--start .tribe-events-calendar-month__multiday-event-bar{border-bottom-left-radius:9.5px;border-top-left-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event--end .tribe-events-calendar-month__multiday-event-bar{border-bottom-right-radius:9.5px;border-top-right-radius:9.5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{background-color:var(--tec-color-background-primary-multiday);transition:var(--tec-transition-background-color)}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:var(--tec-color-background-primary-multiday-hover)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner{background-color:var(--tec-color-background-secondary-multiday)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner--hover,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:focus,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-inner:hover{background-color:var(--tec-color-background-secondary-multiday-hover)}.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-featured-icon,.tribe-events .tribe-events-calendar-month__multiday-event--past .tribe-events-calendar-month__multiday-event-bar-title{opacity:.64}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{color:var(--tec-color-text-events-title-month-multiday);font-weight:var(--tec-font-weight-regular);text-overflow:ellipsis}.tribe-theme-avada #main .tribe-events .tribe-events-calendar-month__multiday-event-bar-title{font-weight:var(--tec-font-weight-regular)}.tribe-events .tribe-events-calendar-day__event-title{color:var(--tec-color-text-events-title-day)}.tribe-events .tribe-events-calendar-day__event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-day__event-title-link:active,.tribe-events .tribe-events-calendar-day__event-title-link:focus,.tribe-events .tribe-events-calendar-day__event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-day__event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-day__event-datetime{color:var(--tec-color-text-event-date)}.tribe-events .tribe-events-calendar-day__event--featured{position:relative}.tribe-events .tribe-events-calendar-day__event--featured:after{background-color:var(--tec-color-accent-primary);content:"";height:100%;left:var(--tec-grid-gutter-small-half);position:absolute;width:3px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event--featured:after{left:calc(var(--tec-grid-width-1-of-9) - var(--tec-grid-gutter-half));width:4px}.tribe-events .tribe-events-calendar-day__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-day__event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-day__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-day__event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-day__event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-day-nav{border-top:1px solid var(--tec-color-border-default)}.tribe-events .tribe-events-calendar-day__time-separator:after,.tribe-events .tribe-events-calendar-day__type-separator:after{background-color:var(--tec-color-border-default);content:"";display:block;flex:auto;height:1px;margin-left:20px}.tribe-events .tribe-events-calendar-latest-past__event-row--featured .tribe-events-calendar-latest-past__event-date-tag-datetime:after{background-color:var(--tec-color-accent-primary);content:"";height:100%;position:absolute;right:calc(100% - 3px);width:3px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row--featured .tribe-events-calendar-latest-past__event-date-tag-datetime:after{right:-1px;width:4px}.tribe-events .tribe-events-calendar-latest-past__event-venue{font-style:normal}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-month,.tribe-events .tribe-events-calendar-latest-past__event-date-tag-year{color:var(--tec-color-text-primary);font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-0);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-2)}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-month{color:var(--tec-color-text-secondary);text-transform:uppercase}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link{transition:var(--tec-transition-opacity)}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link:focus,.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link:hover{opacity:var(--tec-opacity-icon-hover)}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link:active{opacity:var(--tec-opacity-icon-active)}.tribe-events .tribe-events-calendar-latest-past__event-datetime{color:var(--tec-color-text-event-date)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-datetime-featured-text{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold)}.tribe-events .tribe-events-calendar-latest-past__event-title{color:var(--tec-color-text-events-title-latest-past)}.tribe-events .tribe-events-calendar-latest-past__event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-latest-past__event-title-link:active,.tribe-events .tribe-events-calendar-latest-past__event-title-link:focus,.tribe-events .tribe-events-calendar-latest-past__event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-latest-past__event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-status-label__text{color:var(--tec-color-icon-error)}.tribe-events-single .tribe-events-status-single__header{color:var(--tec-color-icon-error);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-0)}.tribe-events-single .tribe-events-status-single__header--bold{font-weight:var(--tec-font-weight-bold)}.tribe-events-single .tribe-events-status-single__header--alert-icon:before{background-image:url(../images/alert.svg);background-repeat:no-repeat;background-size:var(--tec-spacer-3);content:"";display:inline-block;height:var(--tec-spacer-3);margin-right:var(--tec-spacer-1);min-width:var(--tec-spacer-3)}.tribe-events-single .tribe-events-status-single{border:1px solid var(--tec-color-border-active);border-left-color:var(--tec-color-icon-error);border-left-width:var(--tec-spacer-0);font-size:var(--tec-font-size-2)}.tribe-events-single .tribe-events-status-single__description{color:var(--tec-color-text-primary)}
src/resources/css/views-skeleton.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-events-view{position:relative;width:100%}.tribe-events .tribe-events-l-container{min-height:600px;padding-bottom:var(--tec-spacer-12);padding-top:var(--tec-spacer-11)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-l-container{min-height:700px;padding-bottom:var(--tec-spacer-14);padding-top:var(--tec-spacer-13)}.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:var(--tec-spacer-5);width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:var(--tec-spacer-9)}.tribe-events .tribe-events-c-breadcrumbs__list{display:flex;flex-wrap:wrap}.tribe-events .tribe-events-c-breadcrumbs__list-item{align-items:center;display:inline-flex}.tribe-events .tribe-events-c-breadcrumbs__list-item:last-child .tribe-events-c-breadcrumbs__list-item-icon-svg{display:none}.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg{display:inline-block;height:14px;margin:0 6px;width:6px}.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg path{fill:currentColor}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg{height:16px;margin:0 10px;width:10px}.tribe-events .datepicker{margin-top:var(--tec-spacer-1);padding:0 var(--tec-spacer-3) var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .datepicker{margin-top:var(--tec-spacer-3)}.tribe-events .datepicker table{border-collapse:collapse;table-layout:fixed}.tribe-events .datepicker .datepicker-switch,.tribe-events .datepicker .next,.tribe-events .datepicker .prev{padding:var(--tec-spacer-4) 0;vertical-align:middle}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg,.tribe-events .datepicker .prev .tribe-events-c-top-bar__datepicker-nav-icon-svg{height:15px;margin-right:auto;width:9px}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev .tribe-events-c-top-bar__datepicker-nav-icon-svg path{fill:currentColor}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg{margin-left:auto;margin-right:0}.tribe-events .datepicker .datepicker-months td,.tribe-events .datepicker .datepicker-months th,.tribe-events .datepicker .datepicker-years td,.tribe-events .datepicker .datepicker-years th{padding:0}.tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-events .datepicker .datepicker-months .next,.tribe-events .datepicker .datepicker-months .prev,.tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-events .datepicker .datepicker-years .next,.tribe-events .datepicker .datepicker-years .prev{padding:var(--tec-spacer-4) 0 var(--tec-spacer-1)}.tribe-events .datepicker .dow{padding:0;width:var(--tec-grid-width-1-of-7)}.tribe-events .datepicker .day{padding:11px 0;width:48px}.tribe-events .datepicker .month,.tribe-events .datepicker .year{height:auto;margin:0;padding:15px 0;width:25%}.admin-bar .tribe-events .datepicker{margin-top:var(--tec-spacer-1)}.admin-bar .tribe-events.tribe-common--breakpoint-medium .datepicker{margin-top:var(--tec-spacer-3)}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .next,.tribe-theme-divi #content-area .tribe-events .datepicker .prev{padding:var(--tec-spacer-4) 0}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .prev,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .prev{padding:var(--tec-spacer-4) 0 var(--tec-spacer-1)}.tribe-theme-divi #content-area .tribe-events .datepicker .dow{padding:0}.tribe-theme-divi #content-area .tribe-events .datepicker .day{padding:11px 0}.tribe-theme-enfold .tribe-events .datepicker{min-width:0;padding:0 var(--tec-spacer-3) var(--tec-spacer-3)}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{cursor:pointer!important}.tribe-theme-avada .tribe-events .datepicker{padding:0 var(--tec-spacer-3) var(--tec-spacer-3)}.tribe-theme-avada .tribe-events .datepicker .datepicker-months td{padding:0}.tribe-events .tribe-events-c-day-marker{align-items:center;display:flex}.tribe-events .tribe-events-c-day-marker__date{flex:none}.tribe-events .tribe-events-c-events-bar{display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar{flex-direction:row}.tribe-events .tribe-events-c-events-bar__views{display:flex;flex:none;justify-content:center}.tribe-events .tribe-events-c-events-bar__search-container{display:none;left:0;padding:var(--tec-spacer-1) var(--tec-grid-gutter-small-half) var(--tec-spacer-2);position:absolute;right:0;top:calc(100% - var(--tec-spacer-1));z-index:var(--tec-z-index-dropdown)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar__search-container{align-items:center;display:flex;flex:auto;padding:0;position:static;z-index:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar__search{display:flex;flex:auto}.tribe-events .tribe-events-c-events-bar__search-form{width:100%}.tribe-events .tribe-events-c-events-bar__search-button{display:inline-block;margin-right:var(--tec-spacer-1);padding:var(--tec-spacer-0);position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar__search-button{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-events-bar__search-button-icon-svg{width:21px}.tribe-events .tribe-events-c-events-bar__search-button-icon-svg path{fill:currentColor}.single-tribe_events .tribe-events-c-ical,.tribe-events .tribe-events-c-ical{margin-top:var(--tec-spacer-4);text-align:right}.single-tribe_events .tribe-events-c-ical__link,.tribe-events .tribe-events-c-ical__link{align-items:center;display:inline-flex;justify-content:center;padding:var(--tec-spacer-2);width:100%}.tribe-common--breakpoint-medium.single-tribe_events .tribe-events-c-ical__link,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-ical__link{width:auto}.single-tribe_events .tribe-events-c-ical__link-icon-svg,.tribe-events .tribe-events-c-ical__link-icon-svg{display:none}.single-tribe_events .tribe-events-c-subscribe-dropdown__container,.tribe-events .tribe-events-c-subscribe-dropdown__container{display:flex;flex-flow:column;justify-content:flex-end}.single-tribe_events .tribe-events-c-subscribe-dropdown,.tribe-events .tribe-events-c-subscribe-dropdown{font-size:var(--tec-font-size-2);margin:var(--tec-spacer-7) 0}.tribe-common--breakpoint-medium.single-tribe_events .tribe-events-c-subscribe-dropdown,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-subscribe-dropdown{float:right;margin-left:auto}.tribe-events--filter-bar-vertical.tribe-common--breakpoint-medium.single-tribe_events .tribe-events-c-subscribe-dropdown,.tribe-events--filter-bar-vertical.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-subscribe-dropdown{width:auto}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button{position:relative}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon{display:inline-block;height:6px;margin-left:var(--tec-spacer-1);vertical-align:middle;width:10px}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__export-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__export-icon{height:16px}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content{display:none}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list{list-style:none;padding:var(--tec-spacer-1);transform:translateY(var(--tec-spacer-1));width:auto;z-index:var(--tec-z-index-dropdown)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item{border-radius:var(--tec-border-radius-default);outline:0;padding:var(--tec-spacer-0);text-align:left}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item a,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item a{display:inline-block;padding:0 var(--tec-spacer-3);width:100%}.single-tribe_events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__content,.single-tribe_events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__content{display:block}.single-tribe_events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__button-icon,.single-tribe_events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__button-icon{transform:rotate(180deg)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active+.tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active+.tribe-events-c-subscribe-dropdown__content{display:block}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active .tribe-events-c-subscribe-dropdown__button-icon{transform:rotate(180deg)}.tribe-events .tribe-events-view-loader{align-items:flex-start;background-color:var(--tec-color-background-transparent);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:var(--tec-z-index-spinner-container)}.tribe-events .tribe-events-c-messages{display:flex;flex-direction:column}.tribe-events .tribe-events-c-messages__message{align-items:center;display:flex;padding:var(--tec-spacer-2);width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-messages__message{justify-content:center;padding:var(--tec-spacer-3)}.tribe-events .tribe-events-c-nav{padding-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav{padding-top:var(--tec-spacer-6)}.tribe-events .tribe-events-c-nav__list{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.tribe-events .tribe-events-c-nav__list-item{display:flex;width:33.33%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__list-item{width:50%}.tribe-events .tribe-events-c-nav__list-item--prev{justify-content:flex-start}.tribe-events .tribe-events-c-nav__list-item--next{justify-content:flex-end}.tribe-events .tribe-events-c-nav__list-item--today{justify-content:center}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__list-item--today{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev-label-plural{clip:auto;height:auto;margin:0;position:static;width:auto}.tribe-events .tribe-events-c-nav__next,.tribe-events .tribe-events-c-nav__prev{align-items:center;display:flex;flex:none;flex-wrap:wrap;justify-content:center}.tribe-events .tribe-events-c-nav__next-icon-svg,.tribe-events .tribe-events-c-nav__prev-icon-svg{display:none}.tribe-events .tribe-events-c-promo{margin-top:var(--tec-spacer-4)}.tribe-events .tribe-events-c-read-more{margin-top:var(--tec-spacer-2)}.tribe-events .tribe-events-c-small-cta>*{margin-left:var(--tec-spacer-1)}.tribe-events .tribe-events-c-small-cta>:first-child{margin-left:0}.tribe-events .tribe-events-c-small-cta__link{cursor:pointer}.tribe-events .tribe-events-c-small-cta__stock{margin-left:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search{align-items:center;display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-group{align-items:center;display:flex;flex:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control{flex:auto;margin:var(--tec-spacer-2) 0}.tribe-events .tribe-events-c-search__input-control-icon-svg{display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input{margin:calc(var(--tec-spacer-2)*-1) 0}.tribe-events .tribe-common-c-btn.tribe-events-c-search__button{margin-top:var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-common-c-btn.tribe-events-c-search__button{flex:none;margin-top:0}#top .main_color .tribe-events.tribe-common--breakpoint-medium .tribe-events-c-search__input,#top.tribe-theme-enfold .tribe-events.tribe-common--breakpoint-medium .tribe-events-c-search__input,.tribe-theme-avada .tribe-events.tribe-common--breakpoint-medium .tribe-events-c-search__input{margin:calc(var(--tec-spacer-2)*-1) 0}.tooltipster-base.tribe-events-tooltip-theme{height:auto!important;max-width:254px;padding:var(--tec-spacer-5)}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{margin:0}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{padding:0;word-break:break-word}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-arrow{display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__nav{display:block!important;flex:none;visibility:visible}.tribe-events .tribe-events-c-top-bar__nav-list{display:flex}.tribe-events .tribe-events-c-top-bar__nav-list-item{flex:none;padding-right:15px}.tribe-events .tribe-events-c-top-bar__nav-list-item>*{vertical-align:middle}.tribe-events .tribe-events-c-top-bar__nav-link{display:block;line-height:0}.tribe-events .tribe-events-c-top-bar__nav-link-icon-svg{height:19px;width:11px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__today-button{display:block!important;flex:none;margin-right:15px;visibility:visible}.tribe-events .tribe-events-c-top-bar__datepicker{flex:auto;position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__datepicker{margin:0;padding:0}.tribe-events .tribe-events-c-top-bar__datepicker-separator{white-space:pre}.tribe-common--breakpoint-full.tribe-events .tribe-events-c-top-bar__datepicker-mobile{display:none!important;visibility:hidden}.tribe-common--breakpoint-full.tribe-events .tribe-events-c-top-bar__datepicker-desktop{display:block!important;visibility:visible}.tribe-events .tribe-events-c-top-bar__datepicker-button{align-items:center;display:flex;flex:none}.tribe-events .tribe-events-c-top-bar__datepicker-button-icon-svg{display:none}.tribe-events .tribe-events-c-top-bar__datepicker-container{bottom:0;left:0;max-width:calc(100% + 29px);position:absolute;width:363px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__datepicker-container{max-width:none;min-width:363px}.tribe-events .tribe-events-header--has-event-search .tribe-events-c-top-bar__datepicker-container{max-width:calc(100% + 66px)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-c-top-bar__datepicker-container{max-width:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__actions{display:block!important;flex:none;margin-left:auto;visibility:visible}#top .main_color .tribe-events .tribe-events-c-top-bar__datepicker-input,#top.tribe-theme-enfold .tribe-events .tribe-events-c-top-bar__datepicker-input{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.entry-content-wrapper .tribe-events .tribe-events-c-top-bar__nav-list-item{padding-right:15px}.tribe-theme-avada .tribe-events .tribe-events-c-top-bar__datepicker-input{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-events .tribe-events-c-view-selector{position:relative;width:29px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector{width:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button{height:100%;padding:var(--tec-spacer-4) var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{clip:auto;height:auto;margin:0;position:static;width:auto;flex:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{left:0;padding:var(--tec-spacer-1);right:auto;transform:translateY(var(--tec-spacer-1));width:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item--active{display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-link{padding:var(--tec-spacer-0) var(--tec-spacer-7) var(--tec-spacer-0) var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-icon,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__button{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{display:block;height:100%;padding:0 var(--tec-spacer-2);position:static;transform:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list{display:flex;height:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item{padding:0 var(--tec-spacer-2)}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active{display:block}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item-link{height:100%;padding:var(--tec-spacer-4) 0;position:relative}.tribe-events .tribe-events-c-view-selector__button{align-items:center;display:flex;padding:var(--tec-spacer-0);position:relative;width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__button{padding:var(--tec-spacer-1)}.tribe-events .tribe-events-c-view-selector__button-icon{display:block;height:21px;width:21px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__button-icon{height:23px;width:23px}.tribe-events .tribe-events-c-view-selector__button-icon-caret-svg{display:none}.tribe-events .tribe-events-c-view-selector__content{display:none;padding:var(--tec-spacer-2) calc(var(--tec-spacer-2)/2);position:absolute;right:0;top:100%;transform:translateY(var(--tec-spacer-3));z-index:var(--tec-z-index-dropdown)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__content{transform:translateY(var(--tec-spacer-2))}.tribe-events .tribe-events-c-view-selector__list-item-link{align-items:center;display:flex;padding:var(--tec-spacer-1) var(--tec-spacer-5) var(--tec-spacer-1) var(--tec-spacer-2)}.tribe-events .tribe-events-c-view-selector__list-item-icon{flex:none;height:18px;margin-right:12px;width:18px}.tribe-events .tribe-events-c-view-selector__list-item-text{flex:auto}.tribe-events .tribe-events-header{align-items:center;display:flex;flex-direction:row-reverse;flex-wrap:wrap;justify-content:space-between;margin:0 calc(var(--tec-grid-gutter-page-small)*-1);padding:0 var(--tec-grid-gutter-page-small) var(--tec-spacer-3);position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header{margin:0;padding:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search{background-color:transparent;flex-direction:row}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-header__events-bar{margin-left:0;width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-header__top-bar{width:100%}.tribe-events .tribe-events-header__messages{margin-bottom:var(--tec-spacer-3);width:100%}.tribe-events .tribe-events-header__messages.tribe-events-header__messages--mobile{margin-top:10px}.tribe-events .tribe-events-header__messages:not(.tribe-events-header__messages--mobile){display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__messages{margin-bottom:var(--tec-spacer-7);order:1}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__messages:not(.tribe-events-header__messages--mobile){display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__messages.tribe-events-header__messages--mobile{display:none}.tribe-events .tribe-events-header__events-bar{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__events-bar{margin-bottom:var(--tec-spacer-7);margin-left:var(--tec-spacer-3)}.tribe-events .tribe-events-header__top-bar{flex:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__top-bar{margin-bottom:var(--tec-spacer-7)}.tribe-events .tribe-events-calendar-list__event-row{flex-wrap:nowrap;margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row{margin:var(--tec-spacer-9) var(--tec-grid-gutter-half-negative) var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row>.tribe-common-g-col{padding-left:var(--tec-grid-gutter-half);padding-right:var(--tec-grid-gutter-half)}.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:var(--tec-spacer-8)}.tribe-events .tribe-events-calendar-list__event-date-tag{flex:none;position:relative;width:54px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-date-tag{min-width:90px;width:var(--tec-grid-width-1-of-9)}.tribe-events .tribe-events-calendar-list__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;padding-top:var(--tec-spacer-0);text-align:center}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{margin-bottom:calc(var(--tec-spacer-0)*-1)}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1;width:calc(var(--tec-grid-width-1-of-4)*3 + var(--tec-grid-gutter-small-half))}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1 1 calc(var(--tec-grid-width-1-of-9)*8)}.tribe-events .tribe-events-calendar-list__event{flex-direction:column}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event{flex-direction:row-reverse;justify-content:flex-end}.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{flex:none;margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{margin-bottom:0;width:calc(var(--tec-grid-width-1-of-8)*3)}.tribe-events .tribe-events-calendar-list__event-featured-image,.tribe-events .tribe-events-calendar-list__event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-list__event-details{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-details{width:calc(var(--tec-grid-width-1-of-8)*5)}.tribe-events .tribe-events-calendar-list__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper,.tribe-events .tribe-events-calendar-list__event-title{margin:0 0 var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-list__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-list__event-title-link:active,.tribe-events .tribe-events-calendar-list__event-title-link:focus,.tribe-events .tribe-events-calendar-list__event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-list__event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-list__event-datetime-featured-icon{display:inline-block;margin-right:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{clip:auto;height:auto;margin:0;position:static;width:auto;margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-description{display:block!important;margin-top:var(--tec-spacer-3);visibility:visible}.tribe-events .tribe-events-calendar-list__event-cost{margin-top:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-cost{margin-top:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-list__month-separator{align-items:center;display:flex}.tribe-events .tribe-events-calendar-list__month-separator-text{flex:none}.tribe-events .tribe-events-calendar-list-nav{padding-top:var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list-nav{padding-top:var(--tec-spacer-7)}.tribe-events .tribe-events-calendar-month{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month{margin:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__body{border-top:1px solid var(--tec-color-border-secondary-month-grid)}.tribe-events .tribe-events-calendar-month__week{display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__week{border-left:1px solid var(--tec-color-border-secondary-month-grid)}.tribe-events .tribe-events-calendar-month__calendar-event{margin:var(--tec-spacer-1) 0;padding:0 var(--tec-spacer-3);position:relative}.tribe-events .tribe-events-calendar-month__calendar-event:first-child{margin-top:0}.tribe-events .tribe-events-calendar-month__calendar-event:last-child{margin-bottom:0;padding-bottom:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event{margin-top:0}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event--featured{margin-top:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured-icon{display:inline-block;line-height:0;margin-right:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-wrapper{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image,.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper{margin-bottom:var(--tec-spacer-2);width:206px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon{display:inline-block;line-height:0;margin-right:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description{margin-bottom:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-title{margin:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-cost{margin-top:var(--tec-spacer-3)}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event{margin:var(--tec-spacer-1) 0;padding:0 var(--tec-spacer-3);position:relative}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:first-child,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:first-child{margin-top:0}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:last-child,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:last-child{margin-bottom:0;padding-bottom:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__header-row{display:flex}.tribe-events .tribe-events-calendar-month__header-column{padding-bottom:var(--tec-spacer-3);width:var(--tec-grid-width-1-of-7)}.tribe-events .tribe-events-calendar-month__header-column-title{margin:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__header-column-title-mobile{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__header-column-title-desktop{display:block!important;visibility:visible}.tribe-events .tribe-events-calendar-month__day{aspect-ratio:1/1;height:auto;min-height:36px;overflow:hidden;padding-top:var(--grid-width-1-of-7);position:relative;width:var(--tec-grid-width-1-of-7)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day{aspect-ratio:auto;border-color:var(--tec-color-border-secondary-month-grid);border-style:solid;border-width:0 1px 1px 0;min-height:168px;overflow:visible;padding-top:0}.tribe-events .tribe-events-calendar-month__day-cell{height:100%;width:100%}.tribe-events .tribe-events-calendar-month__day-cell--mobile{align-items:center;display:flex;flex-direction:column;position:absolute;text-align:center;top:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day-cell--mobile{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day-cell--desktop{display:flex!important;flex-direction:column;visibility:visible}.tribe-events .tribe-events-calendar-month__day-date{margin:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day-date{flex:none;padding:var(--tec-spacer-1) var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__events{flex:auto}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:currentColor;border-radius:50%;height:8px;width:8px}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured{line-height:0;width:8px}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:currentColor}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month-mobile-events{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day{display:none}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day--show{display:block}.tribe-events .tribe-events-calendar-month-mobile-events__day-marker{padding-top:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event{padding:var(--tec-spacer-2) 0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event--featured{padding-bottom:var(--tec-spacer-4)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-featured-image-wrapper{margin-bottom:var(--tec-spacer-2)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-icon{display:inline-block;line-height:0;margin-right:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title{margin:0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-cost{margin-top:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month-mobile-events__more-events{padding:var(--tec-spacer-0) 0 var(--tec-spacer-4)}.tribe-events .tribe-events-calendar-month__more-events{display:flex;flex:none;margin:0 var(--tec-spacer-3);padding:var(--tec-spacer-1) 0 var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__more-events-link{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__multiday-event-wrapper{height:19px;margin-bottom:var(--tec-spacer-0);position:relative}.tribe-events .tribe-events-calendar-month__multiday-event--width-2 .tribe-events-calendar-month__multiday-event-bar{width:calc(200% + 1px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-3 .tribe-events-calendar-month__multiday-event-bar{width:calc(300% + 2px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-4 .tribe-events-calendar-month__multiday-event-bar{width:calc(400% + 3px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-5 .tribe-events-calendar-month__multiday-event-bar{width:calc(500% + 4px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-6 .tribe-events-calendar-month__multiday-event-bar{width:calc(600% + 5px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-7 .tribe-events-calendar-month__multiday-event-bar{width:calc(700% + 6px)}.tribe-events .tribe-events-calendar-month__multiday-event-hidden{height:100%;opacity:0;position:absolute;width:100%;z-index:var(--tec-z-index-multiday-event)}.tribe-events .tribe-events-calendar-month__multiday-event-hidden-title{margin:0;overflow:hidden;white-space:nowrap}.tribe-events .tribe-events-calendar-month__multiday-event-hidden-link{display:block;height:100%}.tribe-events .tribe-events-calendar-month__multiday-event-bar{background-color:var(--tec-color-background);overflow:hidden;position:relative;width:100%;z-index:var(--tec-z-index-multiday-event-bar)}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{align-items:center;cursor:pointer;display:flex;flex-wrap:nowrap;padding:1px var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__multiday-event-bar-featured-icon{flex:none;line-height:0;margin-right:5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{flex:none;margin:0;max-width:100%;overflow:hidden;white-space:nowrap}.tribe-events .tribe-events-calendar-month-nav{padding-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month-nav{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7);padding-left:54px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-8);margin-top:var(--tec-spacer-9);padding-left:0}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event:before{content:"";min-width:90px;width:var(--tec-grid-width-1-of-9)}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event,.tribe-events .tribe-events-calendar-day__type-separator+.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event,.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__type-separator+.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-8)}.tribe-events .tribe-events-calendar-day__event-content{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-content{display:flex;flex:1 1 calc(var(--tec-grid-width-1-of-9)*8);flex-direction:row-reverse;justify-content:flex-end;margin-left:var(--tec-grid-gutter-half-negative);margin-right:var(--tec-grid-gutter-half-negative)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-content>*{padding-left:var(--tec-grid-gutter-half);padding-right:var(--tec-grid-gutter-half)}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{flex:none;margin-bottom:0;width:calc(var(--tec-grid-width-1-of-8)*3)}.tribe-events .tribe-events-calendar-day__event-featured-image-link,.tribe-events .tribe-events-calendar-list__event-featured-image{display:block}.tribe-events .tribe-events-calendar-day__event-details{position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-details{flex:none;width:calc(var(--tec-grid-width-1-of-8)*5)}.tribe-events .tribe-events-calendar-day__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-events .tribe-events-calendar-day__event-title{margin:0 0 var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-title{margin:0 0 var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-day__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-featured-icon{display:inline-block;margin-right:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{clip:auto;height:auto;margin:0;position:static;width:auto;margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-description{display:block!important;margin-top:var(--tec-spacer-3);visibility:visible}.tribe-events .tribe-events-calendar-day__event-cost{margin-top:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-cost{margin-top:var(--tec-spacer-3)}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7);padding-left:54px}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .entry.tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-8);margin-top:var(--tec-spacer-9);padding-left:0}.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .entry.tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__time-separator+.entry.tribe-events-calendar-day__event,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__type-separator+.entry.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-4)}.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .tribe-events-calendar-day__time-separator+.entry.tribe-events-calendar-day__event,.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .tribe-events-calendar-day__type-separator+.entry.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-8)}.tribe-events .tribe-events-calendar-day-nav{padding-top:var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day-nav{padding-top:var(--tec-spacer-7)}.tribe-events .tribe-events-calendar-day__time-separator{align-items:center;display:flex}.tribe-events .tribe-events-calendar-day__time-separator-text{flex:none}.tribe-events .tribe-events-calendar-day__type-separator{align-items:center;display:flex}.tribe-events .tribe-events-calendar-day__type-separator-text{flex:none}.tribe-events .tribe-events-calendar-latest-past__event-row{flex-wrap:nowrap;margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row{margin:var(--tec-spacer-9) var(--tec-grid-gutter-half-negative) var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row>.tribe-common-g-col{padding-left:var(--tec-grid-gutter-half);padding-right:var(--tec-grid-gutter-half)}.tribe-events .tribe-events-calendar-latest-past__event-row:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-events .tribe-events-calendar-latest-past__event-date-tag{flex:none;position:relative;width:54px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-date-tag{min-width:90px;width:var(--tec-grid-width-1-of-9)}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;text-align:center}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-daynum,.tribe-events .tribe-events-calendar-latest-past__event-date-tag-month{margin-bottom:calc(var(--tec-spacer-0)*-1)}.tribe-events .tribe-events-calendar-latest-past__event-wrapper{flex:1;width:calc(var(--tec-grid-width-1-of-4)*3 + var(--tec-grid-gutter-small-half))}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-wrapper{flex:1 1 calc(var(--tec-grid-width-1-of-9)*8)}.tribe-events .tribe-events-calendar-latest-past__event{flex-direction:column}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event{flex-direction:row-reverse;justify-content:flex-end}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-wrapper{flex:none;margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-featured-image-wrapper{margin-bottom:0;width:calc(var(--tec-grid-width-1-of-8)*3)}.tribe-events .tribe-events-calendar-latest-past__event-featured-image,.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-latest-past__event-details{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-details{width:calc(var(--tec-grid-width-1-of-8)*5)}.tribe-events .tribe-events-calendar-latest-past__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-latest-past__event-datetime-wrapper,.tribe-events .tribe-events-calendar-latest-past__event-title{margin:0 0 var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-datetime-wrapper,.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-title{margin:0 0 var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-latest-past__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-latest-past__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-latest-past__event-datetime-featured-icon{display:inline-block;margin-right:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-datetime-featured-text{clip:auto;height:auto;margin:0;position:static;width:auto;margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-latest-past__event-venue{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-venue{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-description{display:block!important;margin-top:var(--tec-spacer-3);visibility:visible}.tribe-events .tribe-events-calendar-latest-past__event-cost{margin-top:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-cost{margin-top:var(--tec-spacer-3)}.tribe-events-single .tribe-events-status-single__header--alert-icon{align-items:center;display:inline-flex}.tribe-events-single .tribe-events-status-single{display:inline-flex;margin-bottom:var(--tec-spacer-4);padding:var(--tec-spacer-2) var(--tec-spacer-4)}.tribe-events-single .tribe-events-status-single__description{padding-left:var(--tec-spacer-5)}
1
+ .tribe-events-view{position:relative;width:100%}.tribe-events .tribe-events-l-container{min-height:600px;padding-bottom:var(--tec-spacer-12);padding-top:var(--tec-spacer-11)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-l-container{min-height:700px;padding-bottom:var(--tec-spacer-14);padding-top:var(--tec-spacer-13)}.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:var(--tec-spacer-5);width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-breadcrumbs{margin-bottom:var(--tec-spacer-9)}.tribe-events .tribe-events-c-breadcrumbs__list{display:flex;flex-wrap:wrap}.tribe-events .tribe-events-c-breadcrumbs__list-item{align-items:center;display:inline-flex}.tribe-events .tribe-events-c-breadcrumbs__list-item:last-child .tribe-events-c-breadcrumbs__list-item-icon-svg{display:none}.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg{display:inline-block;height:14px;margin:0 6px;width:6px}.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg path{fill:currentColor}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-breadcrumbs__list-item-icon-svg{height:16px;margin:0 10px;width:10px}.tribe-events .datepicker{margin-top:var(--tec-spacer-1);padding:0 var(--tec-spacer-3) var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .datepicker{margin-top:var(--tec-spacer-3)}.tribe-events .datepicker table{border-collapse:collapse;table-layout:fixed}.tribe-events .datepicker .datepicker-switch,.tribe-events .datepicker .next,.tribe-events .datepicker .prev{padding:var(--tec-spacer-4) 0;vertical-align:middle}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg,.tribe-events .datepicker .prev .tribe-events-c-top-bar__datepicker-nav-icon-svg{height:15px;margin-right:auto;width:9px}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg path,.tribe-events .datepicker .prev .tribe-events-c-top-bar__datepicker-nav-icon-svg path{fill:currentColor}.tribe-events .datepicker .next .tribe-events-c-top-bar__datepicker-nav-icon-svg{margin-left:auto;margin-right:0}.tribe-events .datepicker .datepicker-months td,.tribe-events .datepicker .datepicker-months th,.tribe-events .datepicker .datepicker-years td,.tribe-events .datepicker .datepicker-years th{padding:0}.tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-events .datepicker .datepicker-months .next,.tribe-events .datepicker .datepicker-months .prev,.tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-events .datepicker .datepicker-years .next,.tribe-events .datepicker .datepicker-years .prev{padding:var(--tec-spacer-4) 0 var(--tec-spacer-1)}.tribe-events .datepicker .dow{padding:0;width:var(--tec-grid-width-1-of-7)}.tribe-events .datepicker .day{padding:11px 0;width:48px}.tribe-events .datepicker .month,.tribe-events .datepicker .year{height:auto;margin:0;padding:15px 0;width:25%}.admin-bar .tribe-events .datepicker{margin-top:var(--tec-spacer-1)}.admin-bar .tribe-events.tribe-common--breakpoint-medium .datepicker{margin-top:var(--tec-spacer-3)}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .next,.tribe-theme-divi #content-area .tribe-events .datepicker .prev{padding:var(--tec-spacer-4) 0}.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-months .prev,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .datepicker-switch,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .next,.tribe-theme-divi #content-area .tribe-events .datepicker .datepicker-years .prev{padding:var(--tec-spacer-4) 0 var(--tec-spacer-1)}.tribe-theme-divi #content-area .tribe-events .datepicker .dow{padding:0}.tribe-theme-divi #content-area .tribe-events .datepicker .day{padding:11px 0}.tribe-theme-enfold .tribe-events .datepicker{min-width:0;padding:0 var(--tec-spacer-3) var(--tec-spacer-3)}.tribe-theme-enfold .tribe-events .datepicker .datepicker-switch{cursor:pointer!important}.tribe-theme-avada .tribe-events .datepicker{padding:0 var(--tec-spacer-3) var(--tec-spacer-3)}.tribe-theme-avada .tribe-events .datepicker .datepicker-months td{padding:0}.tribe-events .tribe-events-c-day-marker{align-items:center;display:flex}.tribe-events .tribe-events-c-day-marker__date{flex:none}.tribe-events .tribe-events-c-events-bar{display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar{flex-direction:row}.tribe-events .tribe-events-c-events-bar__views{display:flex;flex:none;justify-content:center}.tribe-events .tribe-events-c-events-bar__search-container{display:none;left:0;padding:var(--tec-spacer-1) var(--tec-grid-gutter-small-half) var(--tec-spacer-2);position:absolute;right:0;top:calc(100% - var(--tec-spacer-1));z-index:var(--tec-z-index-dropdown)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar__search-container{align-items:center;display:flex;flex:auto;padding:0;position:static;z-index:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar__search{display:flex;flex:auto}.tribe-events .tribe-events-c-events-bar__search-form{width:100%}.tribe-events .tribe-events-c-events-bar__search-button{display:inline-block;margin-right:var(--tec-spacer-1);padding:var(--tec-spacer-0);position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-events-bar__search-button{display:none!important;visibility:hidden}.tribe-events .tribe-events-c-events-bar__search-button-icon-svg{width:21px}.tribe-events .tribe-events-c-events-bar__search-button-icon-svg path{fill:currentColor}.single-tribe_events .tribe-events-c-ical,.tribe-events .tribe-events-c-ical{margin-top:var(--tec-spacer-4);text-align:right}.single-tribe_events .tribe-events-c-ical__link,.tribe-events .tribe-events-c-ical__link{align-items:center;display:inline-flex;justify-content:center;padding:var(--tec-spacer-2);width:100%}.tribe-common--breakpoint-medium.single-tribe_events .tribe-events-c-ical__link,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-ical__link{width:auto}.single-tribe_events .tribe-events-c-ical__link-icon-svg,.tribe-events .tribe-events-c-ical__link-icon-svg{display:none}.single-tribe_events .tribe-events-c-subscribe-dropdown__container,.tribe-events .tribe-events-c-subscribe-dropdown__container{display:flex;flex-flow:column;justify-content:flex-end}.single-tribe_events .tribe-events-c-subscribe-dropdown,.tribe-events .tribe-events-c-subscribe-dropdown{font-size:var(--tec-font-size-2);margin:var(--tec-spacer-7) 0}.tribe-common--breakpoint-medium.single-tribe_events .tribe-events-c-subscribe-dropdown,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-subscribe-dropdown{float:right;margin-left:auto}.tribe-events--filter-bar-vertical.tribe-common--breakpoint-medium.single-tribe_events .tribe-events-c-subscribe-dropdown,.tribe-events--filter-bar-vertical.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-subscribe-dropdown{width:auto}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button{position:relative}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button-icon{display:inline-block;height:6px;margin-left:var(--tec-spacer-1);vertical-align:middle;width:10px}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__export-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__export-icon{height:16px}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__content{display:none}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list{list-style:none;padding:var(--tec-spacer-1);transform:translateY(var(--tec-spacer-1));width:auto;z-index:var(--tec-z-index-dropdown)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item{border-radius:var(--tec-border-radius-default);outline:0;padding:var(--tec-spacer-0);text-align:left}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item a,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__list-item a{display:inline-block;padding:0 var(--tec-spacer-3);width:100%}.single-tribe_events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__content,.single-tribe_events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__content{display:block}.single-tribe_events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__button-icon,.single-tribe_events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown:focus-within .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown:focus .tribe-events-c-subscribe-dropdown__button-icon{transform:rotate(180deg)}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active+.tribe-events-c-subscribe-dropdown__content,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active+.tribe-events-c-subscribe-dropdown__content{display:block}.single-tribe_events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active .tribe-events-c-subscribe-dropdown__button-icon,.tribe-events .tribe-events-c-subscribe-dropdown .tribe-events-c-subscribe-dropdown__button--active .tribe-events-c-subscribe-dropdown__button-icon{transform:rotate(180deg)}.tribe-events .tribe-events-view-loader{align-items:flex-start;background-color:var(--tec-color-background-transparent);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:var(--tec-z-index-spinner-container)}.tribe-events .tribe-events-c-messages{display:flex;flex-direction:column}.tribe-events .tribe-events-c-messages__message{align-items:center;display:flex;padding:var(--tec-spacer-2);width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-messages__message{justify-content:center;padding:var(--tec-spacer-3)}.tribe-events .tribe-events-c-nav{padding-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav{padding-top:var(--tec-spacer-6)}.tribe-events .tribe-events-c-nav__list{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.tribe-events .tribe-events-c-nav__list-item{display:flex;width:33.33%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__list-item{width:50%}.tribe-events .tribe-events-c-nav__list-item--prev{justify-content:flex-start}.tribe-events .tribe-events-c-nav__list-item--next{justify-content:flex-end}.tribe-events .tribe-events-c-nav__list-item--today{justify-content:center}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__list-item--today{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__next-label-plural,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-nav__prev-label-plural{clip:auto;height:auto;margin:0;position:static;width:auto}.tribe-events .tribe-events-c-nav__next,.tribe-events .tribe-events-c-nav__prev{align-items:center;display:flex;flex:none;flex-wrap:wrap;justify-content:center}.tribe-events .tribe-events-c-nav__next-icon-svg,.tribe-events .tribe-events-c-nav__prev-icon-svg{display:none}.tribe-events .tribe-events-c-promo{margin-top:var(--tec-spacer-4)}.tribe-events .tribe-events-c-read-more{margin-top:var(--tec-spacer-2)}.tribe-events .tribe-events-c-small-cta>*{margin-left:var(--tec-spacer-1)}.tribe-events .tribe-events-c-small-cta>:first-child{margin-left:0}.tribe-events .tribe-events-c-small-cta__link{cursor:pointer}.tribe-events .tribe-events-c-small-cta__stock{margin-left:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search{align-items:center;display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-group{align-items:center;display:flex;flex:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input-control{flex:auto;margin:var(--tec-spacer-2) 0}.tribe-events .tribe-events-c-search__input-control-icon-svg{display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-search__input{margin:calc(var(--tec-spacer-2)*-1) 0}.tribe-events .tribe-common-c-btn.tribe-events-c-search__button{margin-top:var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-common-c-btn.tribe-events-c-search__button{flex:none;margin-top:0}#top .main_color .tribe-events.tribe-common--breakpoint-medium .tribe-events-c-search__input,#top.tribe-theme-enfold .tribe-events.tribe-common--breakpoint-medium .tribe-events-c-search__input,.tribe-theme-avada .tribe-events.tribe-common--breakpoint-medium .tribe-events-c-search__input{margin:calc(var(--tec-spacer-2)*-1) 0}.tooltipster-base.tribe-events-tooltip-theme{height:auto!important;max-width:254px;padding:var(--tec-spacer-5)}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box{margin:0}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-box .tooltipster-content{padding:0;word-break:break-word}.tooltipster-base.tribe-events-tooltip-theme .tooltipster-arrow{display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__nav{display:block!important;flex:none;visibility:visible}.tribe-events .tribe-events-c-top-bar__nav-list{display:flex}.tribe-events .tribe-events-c-top-bar__nav-list-item{flex:none;padding-right:15px}.tribe-events .tribe-events-c-top-bar__nav-list-item>*{vertical-align:middle}.tribe-events .tribe-events-c-top-bar__nav-link{display:block;line-height:0}.tribe-events .tribe-events-c-top-bar__nav-link-icon-svg{height:19px;width:11px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__today-button{display:block!important;flex:none;margin-right:15px;visibility:visible}.tribe-events .tribe-events-c-top-bar__datepicker{flex:auto;position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__datepicker{margin:0;padding:0}.tribe-events .tribe-events-c-top-bar__datepicker-separator{white-space:pre}.tribe-common--breakpoint-full.tribe-events .tribe-events-c-top-bar__datepicker-mobile{display:none!important;visibility:hidden}.tribe-common--breakpoint-full.tribe-events .tribe-events-c-top-bar__datepicker-desktop{display:block!important;visibility:visible}.tribe-events .tribe-events-c-top-bar__datepicker-button{align-items:center;display:flex;flex:none}.tribe-events .tribe-events-c-top-bar__datepicker-button-icon-svg{display:none}.tribe-events .tribe-events-c-top-bar__datepicker-container{bottom:0;left:0;max-width:calc(100% + 29px);position:absolute;width:363px}.tribe-events .tribe-events-c-top-bar__datepicker-container .dropdown-menu{min-width:100%;width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__datepicker-container{max-width:none;min-width:min-content}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__datepicker-container .dropdown-menu{max-width:100%}.tribe-events .tribe-events-header--has-event-search .tribe-events-c-top-bar__datepicker-container{max-width:calc(100% + 66px)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-c-top-bar__datepicker-container{max-width:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-top-bar__actions{display:block!important;flex:none;margin-left:auto;visibility:visible}#top .main_color .tribe-events .tribe-events-c-top-bar__datepicker-input,#top.tribe-theme-enfold .tribe-events .tribe-events-c-top-bar__datepicker-input{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.entry-content-wrapper .tribe-events .tribe-events-c-top-bar__nav-list-item{padding-right:15px}.tribe-theme-avada .tribe-events .tribe-events-c-top-bar__datepicker-input{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-events .tribe-events-c-view-selector{position:relative;width:29px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector{width:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button{height:100%;padding:var(--tec-spacer-4) var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-icon{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__button-text{clip:auto;height:auto;margin:0;position:static;width:auto;flex:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__content{left:0;padding:var(--tec-spacer-1);right:auto;transform:translateY(var(--tec-spacer-1));width:auto}.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item--active{display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-link{padding:var(--tec-spacer-0) var(--tec-spacer-7) var(--tec-spacer-0) var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--labels .tribe-events-c-view-selector__list-item-icon,.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__button{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__content{display:block;height:100%;padding:0 var(--tec-spacer-2);position:static;transform:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list{display:flex;height:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item{padding:0 var(--tec-spacer-2)}.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item--active{display:block}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector--tabs .tribe-events-c-view-selector__list-item-link{height:100%;padding:var(--tec-spacer-4) 0;position:relative}.tribe-events .tribe-events-c-view-selector__button{align-items:center;display:flex;padding:var(--tec-spacer-0);position:relative;width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__button{padding:var(--tec-spacer-1)}.tribe-events .tribe-events-c-view-selector__button-icon{display:block;height:21px;width:21px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__button-icon{height:23px;width:23px}.tribe-events .tribe-events-c-view-selector__button-icon-caret-svg{display:none}.tribe-events .tribe-events-c-view-selector__content{display:none;padding:var(--tec-spacer-2) calc(var(--tec-spacer-2)/2);position:absolute;right:0;top:100%;transform:translateY(var(--tec-spacer-3));z-index:var(--tec-z-index-dropdown)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-c-view-selector__content{transform:translateY(var(--tec-spacer-2))}.tribe-events .tribe-events-c-view-selector__list-item-link{align-items:center;display:flex;padding:var(--tec-spacer-1) var(--tec-spacer-5) var(--tec-spacer-1) var(--tec-spacer-2)}.tribe-events .tribe-events-c-view-selector__list-item-icon{flex:none;height:18px;margin-right:12px;width:18px}.tribe-events .tribe-events-c-view-selector__list-item-text{flex:auto}.tribe-events .tribe-events-header{align-items:center;display:flex;flex-direction:row-reverse;flex-wrap:wrap;justify-content:space-between;margin:0 calc(var(--tec-grid-gutter-page-small)*-1);padding:0 var(--tec-grid-gutter-page-small) var(--tec-spacer-3);position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header{margin:0;padding:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search{background-color:transparent;flex-direction:row}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-header__events-bar{margin-left:0;width:100%}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header--has-event-search .tribe-events-header__top-bar{width:100%}.tribe-events .tribe-events-header__messages{margin-bottom:var(--tec-spacer-3);width:100%}.tribe-events .tribe-events-header__messages.tribe-events-header__messages--mobile{margin-top:10px}.tribe-events .tribe-events-header__messages:not(.tribe-events-header__messages--mobile){display:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__messages{margin-bottom:var(--tec-spacer-7);order:1}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__messages:not(.tribe-events-header__messages--mobile){display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__messages.tribe-events-header__messages--mobile{display:none}.tribe-events .tribe-events-header__events-bar{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__events-bar{margin-bottom:var(--tec-spacer-7);margin-left:var(--tec-spacer-3)}.tribe-events .tribe-events-header__top-bar{flex:auto}.tribe-common--breakpoint-medium.tribe-events .tribe-events-header__top-bar{margin-bottom:var(--tec-spacer-7)}.tribe-events .tribe-events-calendar-list__event-row{flex-wrap:nowrap;margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row{margin:var(--tec-spacer-9) var(--tec-grid-gutter-half-negative) var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row>.tribe-common-g-col{padding-left:var(--tec-grid-gutter-half);padding-right:var(--tec-grid-gutter-half)}.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-row:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__month-separator+.tribe-events-calendar-list__event-row{margin-top:var(--tec-spacer-8)}.tribe-events .tribe-events-calendar-list__event-date-tag{flex:none;position:relative;width:54px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-date-tag{min-width:90px;width:var(--tec-grid-width-1-of-9)}.tribe-events .tribe-events-calendar-list__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;padding-top:var(--tec-spacer-0);text-align:center}.tribe-events .tribe-events-calendar-list__event-date-tag-weekday{margin-bottom:calc(var(--tec-spacer-0)*-1)}.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1;width:calc(var(--tec-grid-width-1-of-4)*3 + var(--tec-grid-gutter-small-half))}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-wrapper{flex:1 1 calc(var(--tec-grid-width-1-of-9)*8)}.tribe-events .tribe-events-calendar-list__event{flex-direction:column}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event{flex-direction:row-reverse;justify-content:flex-end}.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{flex:none;margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-featured-image-wrapper{margin-bottom:0;width:calc(var(--tec-grid-width-1-of-8)*3)}.tribe-events .tribe-events-calendar-list__event-featured-image,.tribe-events .tribe-events-calendar-list__event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-list__event-details{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-details{width:calc(var(--tec-grid-width-1-of-8)*5)}.tribe-events .tribe-events-calendar-list__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper,.tribe-events .tribe-events-calendar-list__event-title{margin:0 0 var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-list__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-list__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-list__event-title-link{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-list__event-title-link:active,.tribe-events .tribe-events-calendar-list__event-title-link:focus,.tribe-events .tribe-events-calendar-list__event-title-link:hover{border-color:currentColor;color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-list__event-title-link:visited{color:var(--tec-color-text-events-title)}.tribe-events .tribe-events-calendar-list__event-datetime-featured-icon{display:inline-block;margin-right:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-datetime-featured-text{clip:auto;height:auto;margin:0;position:static;width:auto;margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-venue{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-description{display:block!important;margin-top:var(--tec-spacer-3);visibility:visible}.tribe-events .tribe-events-calendar-list__event-cost{margin-top:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-cost{margin-top:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-list__month-separator{align-items:center;display:flex}.tribe-events .tribe-events-calendar-list__month-separator-text{flex:none}.tribe-events .tribe-events-calendar-list-nav{padding-top:var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list-nav{padding-top:var(--tec-spacer-7)}.tribe-events .tribe-events-calendar-month{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month{margin:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__body{border-top:1px solid var(--tec-color-border-secondary-month-grid)}.tribe-events .tribe-events-calendar-month__week{display:flex}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__week{border-left:1px solid var(--tec-color-border-secondary-month-grid)}.tribe-events .tribe-events-calendar-month__calendar-event{margin:var(--tec-spacer-1) 0;padding:0 var(--tec-spacer-3);position:relative}.tribe-events .tribe-events-calendar-month__calendar-event:first-child{margin-top:0}.tribe-events .tribe-events-calendar-month__calendar-event:last-child{margin-bottom:0;padding-bottom:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event{margin-top:0}.tribe-events .tribe-events-calendar-month__multiday-event-wrapper+.tribe-events-calendar-month__calendar-event--featured{margin-top:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month__calendar-event-datetime-featured-icon{display:inline-block;line-height:0;margin-right:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-wrapper{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-featured-image,.tribe-events .tribe-events-calendar-month__calendar-event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper{margin-bottom:var(--tec-spacer-2);width:206px}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-wrapper:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image,.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-featured-image-link{display:block}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-datetime-featured-icon{display:inline-block;line-height:0;margin-right:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-title{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description{margin-bottom:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-description:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-month__calendar-event-title{margin:0}.tribe-events .tribe-events-calendar-month__calendar-event-tooltip-cost{margin-top:var(--tec-spacer-3)}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event{margin:var(--tec-spacer-1) 0;padding:0 var(--tec-spacer-3);position:relative}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:first-child,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:first-child{margin-top:0}.tribe-theme-twentynineteen .entry .tribe-events .tribe-events-calendar-month__calendar-event:last-child,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-month__calendar-event:last-child{margin-bottom:0;padding-bottom:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__header-row{display:flex}.tribe-events .tribe-events-calendar-month__header-column{padding-bottom:var(--tec-spacer-3);width:var(--tec-grid-width-1-of-7)}.tribe-events .tribe-events-calendar-month__header-column-title{margin:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__header-column-title-mobile{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__header-column-title-desktop{display:block!important;visibility:visible}.tribe-events .tribe-events-calendar-month__day{aspect-ratio:1/1;height:auto;min-height:36px;overflow:hidden;padding-top:var(--grid-width-1-of-7);position:relative;width:var(--tec-grid-width-1-of-7)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day{aspect-ratio:auto;border-color:var(--tec-color-border-secondary-month-grid);border-style:solid;border-width:0 1px 1px 0;min-height:168px;overflow:visible;padding-top:0}.tribe-events .tribe-events-calendar-month__day-cell{height:100%;width:100%}.tribe-events .tribe-events-calendar-month__day-cell--mobile{align-items:center;display:flex;flex-direction:column;position:absolute;text-align:center;top:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day-cell--mobile{display:none!important;visibility:hidden}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day-cell--desktop{display:flex!important;flex-direction:column;visibility:visible}.tribe-events .tribe-events-calendar-month__day-date{margin:0}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__day-date{flex:none;padding:var(--tec-spacer-1) var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__events{flex:auto}.tribe-events .tribe-events-calendar-month__mobile-events-icon--event{background-color:currentColor;border-radius:50%;height:8px;width:8px}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured{line-height:0;width:8px}.tribe-events .tribe-events-calendar-month__mobile-events-icon--featured .tribe-events-calendar-month__mobile-events-icon-svg path{fill:currentColor}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month-mobile-events{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day{display:none}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-day--show{display:block}.tribe-events .tribe-events-calendar-month-mobile-events__day-marker{padding-top:var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event{padding:var(--tec-spacer-2) 0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event--featured{padding-bottom:var(--tec-spacer-4)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-featured-image-wrapper{margin-bottom:var(--tec-spacer-2)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime{margin-bottom:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime>*{vertical-align:middle}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-icon{display:inline-block;line-height:0;margin-right:var(--tec-spacer-0)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-datetime-featured-text{margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-title{margin:0}.tribe-events .tribe-events-calendar-month-mobile-events__mobile-event-cost{margin-top:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-month-mobile-events__more-events{padding:var(--tec-spacer-0) 0 var(--tec-spacer-4)}.tribe-events .tribe-events-calendar-month__more-events{display:flex;flex:none;margin:0 var(--tec-spacer-3);padding:var(--tec-spacer-1) 0 var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__more-events-link{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month__multiday-event-wrapper{height:19px;margin-bottom:var(--tec-spacer-0);position:relative}.tribe-events .tribe-events-calendar-month__multiday-event--width-2 .tribe-events-calendar-month__multiday-event-bar{width:calc(200% + 1px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-3 .tribe-events-calendar-month__multiday-event-bar{width:calc(300% + 2px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-4 .tribe-events-calendar-month__multiday-event-bar{width:calc(400% + 3px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-5 .tribe-events-calendar-month__multiday-event-bar{width:calc(500% + 4px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-6 .tribe-events-calendar-month__multiday-event-bar{width:calc(600% + 5px)}.tribe-events .tribe-events-calendar-month__multiday-event--width-7 .tribe-events-calendar-month__multiday-event-bar{width:calc(700% + 6px)}.tribe-events .tribe-events-calendar-month__multiday-event-hidden{height:100%;opacity:0;position:absolute;width:100%;z-index:var(--tec-z-index-multiday-event)}.tribe-events .tribe-events-calendar-month__multiday-event-hidden-title{margin:0;overflow:hidden;white-space:nowrap}.tribe-events .tribe-events-calendar-month__multiday-event-hidden-link{display:block;height:100%}.tribe-events .tribe-events-calendar-month__multiday-event-bar{background-color:var(--tec-color-background);overflow:hidden;position:relative;width:100%;z-index:var(--tec-z-index-multiday-event-bar)}.tribe-events .tribe-events-calendar-month__multiday-event-bar-inner{align-items:center;cursor:pointer;display:flex;flex-wrap:nowrap;padding:1px var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-month__multiday-event-bar-featured-icon{flex:none;line-height:0;margin-right:5px}.tribe-events .tribe-events-calendar-month__multiday-event-bar-title{flex:none;margin:0;max-width:100%;overflow:hidden;white-space:nowrap}.tribe-events .tribe-events-calendar-month-nav{padding-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-month-nav{display:none!important;visibility:hidden}.tribe-events .tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7);padding-left:54px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-8);margin-top:var(--tec-spacer-9);padding-left:0}.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event:before{content:"";min-width:90px;width:var(--tec-grid-width-1-of-9)}.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event,.tribe-events .tribe-events-calendar-day__type-separator+.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-4)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__time-separator+.tribe-events-calendar-day__event,.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__type-separator+.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-8)}.tribe-events .tribe-events-calendar-day__event-content{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-content{display:flex;flex:1 1 calc(var(--tec-grid-width-1-of-9)*8);flex-direction:row-reverse;justify-content:flex-end;margin-left:var(--tec-grid-gutter-half-negative);margin-right:var(--tec-grid-gutter-half-negative)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-content>*{padding-left:var(--tec-grid-gutter-half);padding-right:var(--tec-grid-gutter-half)}.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-featured-image-wrapper{flex:none;margin-bottom:0;width:calc(var(--tec-grid-width-1-of-8)*3)}.tribe-events .tribe-events-calendar-day__event-featured-image-link,.tribe-events .tribe-events-calendar-list__event-featured-image{display:block}.tribe-events .tribe-events-calendar-day__event-details{position:relative}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-details{flex:none;width:calc(var(--tec-grid-width-1-of-8)*5)}.tribe-events .tribe-events-calendar-day__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-events .tribe-events-calendar-day__event-title{margin:0 0 var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-datetime-wrapper,.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-title{margin:0 0 var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-day__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-day__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-day__event-datetime-featured-icon{display:inline-block;margin-right:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-datetime-featured-text{clip:auto;height:auto;margin:0;position:static;width:auto;margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-venue{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-description{display:block!important;margin-top:var(--tec-spacer-3);visibility:visible}.tribe-events .tribe-events-calendar-day__event-cost{margin-top:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day__event-cost{margin-top:var(--tec-spacer-3)}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7);padding-left:54px}.tribe-theme-twentynineteen .tribe-events .entry.tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .entry.tribe-events-calendar-day__event{margin-bottom:var(--tec-spacer-8);margin-top:var(--tec-spacer-9);padding-left:0}.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .entry.tribe-events-calendar-day__event:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__time-separator+.entry.tribe-events-calendar-day__event,.tribe-theme-twentynineteen .tribe-events .tribe-events-calendar-day__type-separator+.entry.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-4)}.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .tribe-events-calendar-day__time-separator+.entry.tribe-events-calendar-day__event,.tribe-theme-twentynineteen .tribe-events.tribe-common--breakpoint-medium .tribe-events-calendar-day__type-separator+.entry.tribe-events-calendar-day__event{margin-top:var(--tec-spacer-8)}.tribe-events .tribe-events-calendar-day-nav{padding-top:var(--tec-spacer-5)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-day-nav{padding-top:var(--tec-spacer-7)}.tribe-events .tribe-events-calendar-day__time-separator{align-items:center;display:flex}.tribe-events .tribe-events-calendar-day__time-separator-text{flex:none}.tribe-events .tribe-events-calendar-day__type-separator{align-items:center;display:flex}.tribe-events .tribe-events-calendar-day__type-separator-text{flex:none}.tribe-events .tribe-events-calendar-latest-past__event-row{flex-wrap:nowrap;margin-bottom:var(--tec-spacer-5);margin-top:var(--tec-spacer-7)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row{margin:var(--tec-spacer-9) var(--tec-grid-gutter-half-negative) var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row>.tribe-common-g-col{padding-left:var(--tec-grid-gutter-half);padding-right:var(--tec-grid-gutter-half)}.tribe-events .tribe-events-calendar-latest-past__event-row:last-child{margin-bottom:var(--tec-spacer-8)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-row:last-child{margin-bottom:var(--tec-spacer-11)}.tribe-events .tribe-events-calendar-latest-past__event-date-tag{flex:none;position:relative;width:54px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-date-tag{min-width:90px;width:var(--tec-grid-width-1-of-9)}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;text-align:center}.tribe-events .tribe-events-calendar-latest-past__event-date-tag-daynum,.tribe-events .tribe-events-calendar-latest-past__event-date-tag-month{margin-bottom:calc(var(--tec-spacer-0)*-1)}.tribe-events .tribe-events-calendar-latest-past__event-wrapper{flex:1;width:calc(var(--tec-grid-width-1-of-4)*3 + var(--tec-grid-gutter-small-half))}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-wrapper{flex:1 1 calc(var(--tec-grid-width-1-of-9)*8)}.tribe-events .tribe-events-calendar-latest-past__event{flex-direction:column}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event{flex-direction:row-reverse;justify-content:flex-end}.tribe-events .tribe-events-calendar-latest-past__event-featured-image-wrapper{flex:none;margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-featured-image-wrapper{margin-bottom:0;width:calc(var(--tec-grid-width-1-of-8)*3)}.tribe-events .tribe-events-calendar-latest-past__event-featured-image,.tribe-events .tribe-events-calendar-latest-past__event-featured-image-link{display:block}.tribe-events .tribe-events-calendar-latest-past__event-details{flex:none}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-details{width:calc(var(--tec-grid-width-1-of-8)*5)}.tribe-events .tribe-events-calendar-latest-past__event-header>:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-latest-past__event-datetime-wrapper,.tribe-events .tribe-events-calendar-latest-past__event-title{margin:0 0 var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-datetime-wrapper,.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-title{margin:0 0 var(--tec-spacer-3)}.tribe-events .tribe-events-calendar-latest-past__event-datetime-wrapper:last-child,.tribe-events .tribe-events-calendar-latest-past__event-title:last-child{margin-bottom:0}.tribe-events .tribe-events-calendar-latest-past__event-datetime-featured-icon{display:inline-block;margin-right:var(--tec-spacer-0)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-datetime-featured-text{clip:auto;height:auto;margin:0;position:static;width:auto;margin-right:var(--tec-spacer-1)}.tribe-events .tribe-events-calendar-latest-past__event-venue{margin-bottom:var(--tec-spacer-1)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-venue{margin-bottom:var(--tec-spacer-3)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-description{display:block!important;margin-top:var(--tec-spacer-3);visibility:visible}.tribe-events .tribe-events-calendar-latest-past__event-cost{margin-top:var(--tec-spacer-2)}.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-latest-past__event-cost{margin-top:var(--tec-spacer-3)}.tribe-events-single .tribe-events-status-single__header--alert-icon{align-items:center;display:inline-flex}.tribe-events-single .tribe-events-status-single{display:inline-flex;margin-bottom:var(--tec-spacer-4);padding:var(--tec-spacer-2) var(--tec-spacer-4)}.tribe-events-single .tribe-events-status-single__description{padding-left:var(--tec-spacer-5)}
src/resources/icons/tec-horns.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="13" height="16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.667 9.968c-.486.197-.935.303-1.262.286-.423-.024-.604-.21-.605-.281 0-.05.158-.207.645-.242.076-.005.157-.009.24-.009.333 0 .703.055.982.246m.909 4.292c-1.781.492-3.663.038-4.795-1.155-.802-.844-1.07-1.901-.738-2.9.67-2.007 3.877-3.212 5.926-3.212h.066c.764.01 1.293.194 1.38.482.05.161-.067.443-.31.754-.43.548-1.084 1.045-1.749 1.41-.421-.463-1.097-.673-1.962-.61-.962.07-1.302.536-1.298.95.004.451.441.932 1.27.978.502.028 1.101-.127 1.703-.39.089.346.061.801-.083 1.343a.352.352 0 0 0 .68.182c.197-.737.212-1.355.045-1.846.786-.441 1.512-1.027 1.948-1.582.409-.522.554-.99.43-1.395-.089-.293-.3-.525-.617-.69.024-2.648.494-4.477.916-4.48h.003c.062 0 .146.014.249.117.343.34.752 1.461.752 4.86 0 3.354-.287 6.21-3.816 7.184M4.214 6.438V6.41l-.006-.04c-.05-.722.037-1.292.257-1.597a.59.59 0 0 1 .432-.256.748.748 0 0 1 .646.205c.342.329.542 1.04.523 1.818a9.735 9.735 0 0 0-1.758.617 7.581 7.581 0 0 1-.094-.72M7.249 5.21A.65.65 0 0 1 7.755 5c.336 0 .482.11.562.192.193.198.297.58.311 1.138a4.688 4.688 0 0 0-.655-.042 7.21 7.21 0 0 0-1.027.08c-.016-.511.091-.927.303-1.158m3.888-3.494a1.045 1.045 0 0 0-.747-.321h-.006c-.928.005-1.249 1.39-1.409 2.432a15.79 15.79 0 0 0-.111.92L8.822 4.7c-.262-.268-.621-.405-1.067-.405a1.353 1.353 0 0 0-1.223.716 2.151 2.151 0 0 0-.5-.796 1.45 1.45 0 0 0-1.22-.397 1.301 1.301 0 0 0-.918.543l-.003.004C3.505 2.44 2.771.115 1.49.247 1.175.28.896.45.685.737-.303 2.082.16 6.076.59 8.224a.353.353 0 0 0 .69-.138c-.719-3.597-.558-6.209-.028-6.93.125-.17.238-.2.312-.207.707-.073 1.578 2.397 1.945 5.515.03.386.088.748.145 1.029v.003c-1.058.61-1.932 1.445-2.28 2.488-.417 1.253-.09 2.568.895 3.607.963 1.015 2.384 1.57 3.875 1.57.536 0 1.082-.072 1.619-.22 4.002-1.105 4.334-4.35 4.334-7.864 0-3.006-.305-4.709-.96-5.36" fill="#0F1031"/></svg>
src/resources/images/icons/tec-horns.svg CHANGED
@@ -1 +1,4 @@
1
- <svg width="13" height="16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.667 9.968c-.486.197-.935.303-1.262.286-.423-.024-.604-.21-.605-.281 0-.05.158-.207.645-.242.076-.005.157-.009.24-.009.333 0 .703.055.982.246m.909 4.292c-1.781.492-3.663.038-4.795-1.155-.802-.844-1.07-1.901-.738-2.9.67-2.007 3.877-3.212 5.926-3.212h.066c.764.01 1.293.194 1.38.482.05.161-.067.443-.31.754-.43.548-1.084 1.045-1.749 1.41-.421-.463-1.097-.673-1.962-.61-.962.07-1.302.536-1.298.95.004.451.441.932 1.27.978.502.028 1.101-.127 1.703-.39.089.346.061.801-.083 1.343a.352.352 0 0 0 .68.182c.197-.737.212-1.355.045-1.846.786-.441 1.512-1.027 1.948-1.582.409-.522.554-.99.43-1.395-.089-.293-.3-.525-.617-.69.024-2.648.494-4.477.916-4.48h.003c.062 0 .146.014.249.117.343.34.752 1.461.752 4.86 0 3.354-.287 6.21-3.816 7.184M4.214 6.438V6.41l-.006-.04c-.05-.722.037-1.292.257-1.597a.59.59 0 0 1 .432-.256.748.748 0 0 1 .646.205c.342.329.542 1.04.523 1.818a9.735 9.735 0 0 0-1.758.617 7.581 7.581 0 0 1-.094-.72M7.249 5.21A.65.65 0 0 1 7.755 5c.336 0 .482.11.562.192.193.198.297.58.311 1.138a4.688 4.688 0 0 0-.655-.042 7.21 7.21 0 0 0-1.027.08c-.016-.511.091-.927.303-1.158m3.888-3.494a1.045 1.045 0 0 0-.747-.321h-.006c-.928.005-1.249 1.39-1.409 2.432a15.79 15.79 0 0 0-.111.92L8.822 4.7c-.262-.268-.621-.405-1.067-.405a1.353 1.353 0 0 0-1.223.716 2.151 2.151 0 0 0-.5-.796 1.45 1.45 0 0 0-1.22-.397 1.301 1.301 0 0 0-.918.543l-.003.004C3.505 2.44 2.771.115 1.49.247 1.175.28.896.45.685.737-.303 2.082.16 6.076.59 8.224a.353.353 0 0 0 .69-.138c-.719-3.597-.558-6.209-.028-6.93.125-.17.238-.2.312-.207.707-.073 1.578 2.397 1.945 5.515.03.386.088.748.145 1.029v.003c-1.058.61-1.932 1.445-2.28 2.488-.417 1.253-.09 2.568.895 3.607.963 1.015 2.384 1.57 3.875 1.57.536 0 1.082-.072 1.619-.22 4.002-1.105 4.334-4.35 4.334-7.864 0-3.006-.305-4.709-.96-5.36" fill="#0F1031"/></svg>
 
 
 
1
+ <svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="20.9944" cy="20.6724" r="20" fill="#334AFF"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M21.9989 24.6674C21.143 25.0146 20.351 25.2019 19.7751 25.1708C19.0292 25.1293 18.7107 24.8003 18.7096 24.6766C18.709 24.5885 18.9871 24.3125 19.8456 24.2501C19.9802 24.2405 20.1223 24.2344 20.2686 24.2344C20.8552 24.2344 21.5081 24.3309 21.9989 24.6674M23.5999 32.2315C20.4617 33.0971 17.1454 32.2988 15.1501 30.1958C13.7382 28.7079 13.2648 26.8457 13.851 25.0869C15.0302 21.5482 20.6819 19.4243 24.2939 19.4243C24.3328 19.4243 24.3715 19.4245 24.4098 19.425C25.7557 19.4423 26.6877 19.7676 26.8423 20.2745C26.9288 20.5582 26.7241 21.0547 26.2946 21.6024C25.5366 22.569 24.3849 23.4449 23.2134 24.0874C22.4708 23.2726 21.2794 22.9018 19.7558 23.0115C18.0597 23.1347 17.4618 23.9578 17.4679 24.687C17.4746 25.4821 18.2456 26.3296 19.7062 26.4108C20.5902 26.459 21.6467 26.1867 22.7077 25.7225C22.8634 26.3334 22.8151 27.1348 22.5604 28.0904C22.4721 28.4216 22.669 28.762 23.0003 28.8503C23.3312 28.9386 23.6717 28.7417 23.7602 28.4103C24.1064 27.1119 24.1321 26.0228 23.8383 25.1575C25.2235 24.3802 26.5039 23.3476 27.2716 22.3688C27.9921 21.4502 28.2471 20.6237 28.0302 19.912C27.8726 19.3954 27.5014 18.9855 26.9422 18.6948C26.9849 14.029 27.812 10.8062 28.5566 10.8018H28.5612C28.6706 10.8018 28.8186 10.8263 28.9999 11.0065C29.6049 11.6078 30.3257 13.5818 30.3257 19.5719C30.3257 25.4823 29.8198 30.5145 23.5999 32.2315M17.6754 18.4465C17.6747 18.431 17.6766 18.4157 17.6747 18.4C17.672 18.3776 17.6693 18.3538 17.6664 18.3308C17.5772 17.0568 17.73 16.0527 18.1186 15.5142C18.3116 15.2468 18.5537 15.1036 18.8806 15.0634C19.3364 15.0084 19.7071 15.126 20.0185 15.4251C20.6216 16.0048 20.9735 17.2582 20.94 18.6294C19.9061 18.8845 18.8474 19.2478 17.8417 19.7154C17.7624 19.2704 17.7076 18.8464 17.6754 18.4465M23.0244 16.2829C23.253 16.0341 23.5447 15.9131 23.9168 15.9131C24.5081 15.9131 24.7651 16.1065 24.9072 16.252C25.247 16.6 25.43 17.2749 25.4551 18.2577C25.137 18.2136 24.7941 18.188 24.4256 18.1834C24.3837 18.1828 24.3419 18.1826 24.2996 18.1826C23.7391 18.1826 23.1282 18.2313 22.4904 18.3239C22.4629 17.4233 22.6511 16.6894 23.0244 16.2829M29.8755 10.1259C29.503 9.75556 29.0484 9.56004 28.56 9.56004H28.5491C26.9131 9.5698 26.3487 12.0107 26.0663 13.8459C25.9835 14.3844 25.9196 14.934 25.8698 15.466C25.8455 15.4389 25.8215 15.4107 25.7961 15.3847C25.3341 14.9114 24.7018 14.6715 23.9168 14.6715C23.1981 14.6715 22.5732 14.9381 22.1098 15.4429C21.9776 15.5869 21.8641 15.7537 21.7614 15.9326C21.5567 15.3938 21.2704 14.9061 20.8792 14.5298C20.2978 13.9712 19.5549 13.7293 18.7291 13.8308C18.0637 13.9126 17.5043 14.2431 17.1115 14.7874C17.11 14.7898 17.1086 14.7925 17.1069 14.7946C16.4265 11.4012 15.1329 7.30353 12.8758 7.53793C12.3204 7.59634 11.8296 7.89528 11.4567 8.40201C9.71558 10.769 10.5325 17.8076 11.2896 21.5932C11.3487 21.8884 11.6078 22.0927 11.8978 22.0927C11.9382 22.0927 11.9792 22.0887 12.0203 22.0804C12.3564 22.0132 12.5746 21.6861 12.5073 21.3498C11.2396 15.011 11.5224 10.4084 12.4572 9.13796C12.6768 8.8394 12.8754 8.78655 13.0058 8.77295C14.2518 8.6433 15.7867 12.9966 16.4345 18.4911C16.4864 19.1715 16.5895 19.8086 16.6888 20.3038C16.6892 20.3061 16.6904 20.3082 16.6908 20.3105C14.8249 21.386 13.2852 22.8566 12.6728 24.6945C11.9367 26.9023 12.5114 29.2194 14.2493 31.0509C15.946 32.8388 18.4494 33.8164 21.0772 33.8164C22.0226 33.8162 22.9846 33.6897 23.9302 33.4286C30.9835 31.4818 31.5676 25.7633 31.5676 19.5721C31.5676 14.2751 31.0299 11.2736 29.8755 10.1259" fill="white"/>
4
+ </svg>
src/resources/js/event-editor.js CHANGED
@@ -3,21 +3,146 @@ var tribe_events_event_editor = tribe_events_event_editor || {};
3
  /**
4
  * Implements behaviours that are specific to the event editor.
5
  */
6
- jQuery( function( $ ) {
7
- var obj = tribe_events_event_editor,
8
- $sticky_in_month_view_checkbox = $( 'input[name="EventShowInCalendar"]' ),
9
- $featured_event_checkbox = $( 'input[name="feature_event"]' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  /**
12
  * If the 'feature event' box is checked, automatically check the
13
  * sticky-in-month-view box also.
 
 
 
14
  */
15
- obj.auto_enable_sticky_field = function() {
16
  if ( $( this ).prop( 'checked' ) ) {
17
- $sticky_in_month_view_checkbox.prop( 'checked', true );
18
  }
19
  };
20
 
21
- $featured_event_checkbox.on( 'change', obj.auto_enable_sticky_field );
22
- $( obj ).trigger( 'event-editor-post-init.tribe' );
23
- } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /**
4
  * Implements behaviours that are specific to the event editor.
5
  */
6
+ ( function ( $, obj ) {
7
+ 'use strict';
8
+
9
+ /**
10
+ * Setup our selectors.
11
+ *
12
+ * @since 6.0.1
13
+ */
14
+ obj.selectors = {
15
+ sticky_in_month_view_checkbox: 'input[name="EventShowInCalendar"]',
16
+ featured_event_checkbox: 'input[name="feature_event"]',
17
+ organizer: {
18
+ area: '#event_tribe_organizer',
19
+ delete_button: '.tribe-delete-this',
20
+ add_button: '#event_tribe_organizer .tribe-add-post',
21
+ post_dropdown: '.linked-post-dropdown',
22
+ saved_organizers: '.saved-linked-post',
23
+ },
24
+ };
25
+
26
+ obj.organizer = {};
27
+
28
+ /**
29
+ * Controls logic for the Organizer delete button to display.
30
+ *
31
+ * If more than one organizer exists, display the delete button.
32
+ * If only one organizer exists, hide the delete button.
33
+ *
34
+ * @since 6.0.1
35
+ * @return void
36
+ */
37
+ obj.organizer.deleteButtonDisplayLogic = function () {
38
+
39
+ const $organizers = $( obj.selectors.organizer.area )
40
+ .find( obj.selectors.organizer.saved_organizers );
41
+
42
+ $( obj.selectors.organizer.area )
43
+ .find( obj.selectors.organizer.delete_button )
44
+ .each( function () {
45
+
46
+ // If you have more than one organizer then we display the delete button.
47
+ if ( $organizers.length > 1 ) {
48
+ $( this ).show();
49
+ return;
50
+ }
51
+
52
+ const $organizer_dropdown =
53
+ $( obj.selectors.organizer.area +
54
+ ' ' +
55
+ obj.selectors.organizer.post_dropdown );
56
+
57
+ //If this is running, it's because we only have one organizer.
58
+ obj.organizer.addButtonLogic( $organizer_dropdown.val() );
59
+
60
+ $( this ).hide();
61
+
62
+ } );
63
+
64
+ };
65
+
66
+ /**
67
+ * Logic to display, or hide the "Add Organizer" button.
68
+ *
69
+ * @since 6.0.1
70
+ *
71
+ * @param selectValue
72
+ * @return void
73
+ */
74
+ obj.organizer.addButtonLogic = function ( selectValue ) {
75
+ if ( selectValue !== '-1' ) {
76
+ $( obj.selectors.organizer.add_button ).show();
77
+ } else {
78
+ $( obj.selectors.organizer.add_button ).hide();
79
+ }
80
+ };
81
+ /**
82
+ * Trigger events for bind events.
83
+ *
84
+ * @since 6.0.1
85
+ */
86
+ obj.organizer.bindEvents = function () {
87
+
88
+ $( obj.selectors.organizer.area )
89
+ .on( 'change', obj.selectors.organizer.post_dropdown, function () {
90
+ obj.organizer.addButtonLogic( this.value );
91
+ obj.organizer.deleteButtonDisplayLogic();
92
+
93
+ } );
94
+
95
+ // Functions to run when the delete button is clicked.
96
+ $( obj.selectors.organizer.area )
97
+ .on( 'click', obj.selectors.organizer.delete_button, function () {
98
+ // We have to run this in a setTimeout because the original functionality uses a fade of 500ms.
99
+ // Therefore we use 525ms to run slightly after it is done.
100
+ setTimeout( function () {
101
+ obj.organizer.deleteButtonDisplayLogic();
102
+ }, 525 );
103
+
104
+ } );
105
+
106
+ };
107
 
108
  /**
109
  * If the 'feature event' box is checked, automatically check the
110
  * sticky-in-month-view box also.
111
+ *
112
+ * @since 6.0.1
113
+ *
114
  */
115
+ obj.auto_enable_sticky_field = function () {
116
  if ( $( this ).prop( 'checked' ) ) {
117
+ $( obj.selectors.sticky_in_month_view_checkbox ).prop( 'checked', true );
118
  }
119
  };
120
 
121
+ /**
122
+ * Bind featured events logic.
123
+ *
124
+ * @since 6.0.1
125
+ */
126
+ obj.bindFeaturedEvents = function () {
127
+ $( obj.selectors.featured_event_checkbox ).on( 'change', obj.auto_enable_sticky_field );
128
+ $( obj ).trigger( 'event-editor-post-init.tribe' );
129
+ };
130
+
131
+ /**
132
+ * Initialize
133
+ *
134
+ * @since 6.0.1
135
+ */
136
+ obj.init = function () {
137
+ // Hide the "Add Organizer" button by default.
138
+ $( obj.selectors.organizer.add_button ).hide();
139
+ // Run our delete button logic.
140
+ obj.organizer.deleteButtonDisplayLogic();
141
+ obj.organizer.bindEvents();
142
+ obj.bindFeaturedEvents();
143
+ };
144
+
145
+ // Init our main object.
146
+ obj.init();
147
+
148
+ } )( jQuery, tribe_events_event_editor );
src/resources/js/event-editor.min.js CHANGED
@@ -1 +1 @@
1
- var tribe_events_event_editor=tribe_events_event_editor||{};jQuery(function(e){var t=tribe_events_event_editor,n=e('input[name="EventShowInCalendar"]'),i=e('input[name="feature_event"]');t.auto_enable_sticky_field=function(){e(this).prop("checked")&&n.prop("checked",!0)},i.on("change",t.auto_enable_sticky_field),e(t).trigger("event-editor-post-init.tribe")});
1
+ var tribe_events_event_editor=tribe_events_event_editor||{};!function(e,t){"use strict";t.selectors={sticky_in_month_view_checkbox:'input[name="EventShowInCalendar"]',featured_event_checkbox:'input[name="feature_event"]',organizer:{area:"#event_tribe_organizer",delete_button:".tribe-delete-this",add_button:"#event_tribe_organizer .tribe-add-post",post_dropdown:".linked-post-dropdown",saved_organizers:".saved-linked-post"}},t.organizer={},t.organizer.deleteButtonDisplayLogic=function(){const n=e(t.selectors.organizer.area).find(t.selectors.organizer.saved_organizers);e(t.selectors.organizer.area).find(t.selectors.organizer.delete_button).each(function(){if(n.length>1)return void e(this).show();const o=e(t.selectors.organizer.area+" "+t.selectors.organizer.post_dropdown);t.organizer.addButtonLogic(o.val()),e(this).hide()})},t.organizer.addButtonLogic=function(n){"-1"!==n?e(t.selectors.organizer.add_button).show():e(t.selectors.organizer.add_button).hide()},t.organizer.bindEvents=function(){e(t.selectors.organizer.area).on("change",t.selectors.organizer.post_dropdown,function(){t.organizer.addButtonLogic(this.value),t.organizer.deleteButtonDisplayLogic()}),e(t.selectors.organizer.area).on("click",t.selectors.organizer.delete_button,function(){setTimeout(function(){t.organizer.deleteButtonDisplayLogic()},525)})},t.auto_enable_sticky_field=function(){e(this).prop("checked")&&e(t.selectors.sticky_in_month_view_checkbox).prop("checked",!0)},t.bindFeaturedEvents=function(){e(t.selectors.featured_event_checkbox).on("change",t.auto_enable_sticky_field),e(t).trigger("event-editor-post-init.tribe")},t.init=function(){e(t.selectors.organizer.add_button).hide(),t.organizer.deleteButtonDisplayLogic(),t.organizer.bindEvents(),t.bindFeaturedEvents()},t.init()}(jQuery,tribe_events_event_editor);
src/resources/js/views/datepicker.js CHANGED
@@ -642,6 +642,16 @@ tribe.events.views.datepicker = {};
642
  obj.options.beforeShowMonth = obj.filterMonthCells;
643
  obj.options.beforeShowYear = obj.filterYearCells;
644
 
 
 
 
 
 
 
 
 
 
 
645
  $input
646
  .bootstrapDatepicker( obj.options )
647
  .on( changeEvent, { container: $container }, changeHandler )
642
  obj.options.beforeShowMonth = obj.filterMonthCells;
643
  obj.options.beforeShowYear = obj.filterYearCells;
644
 
645
+ // A tweak for RTL languages.
646
+ if ( document.dir && document.dir === 'rtl' ) {
647
+ obj.options.rtl = true;
648
+ }
649
+
650
+ // ...and for document language.
651
+ if ( document.lang ) {
652
+ obj.options.language = document.lang;
653
+ }
654
+
655
  $input
656
  .bootstrapDatepicker( obj.options )
657
  .on( changeEvent, { container: $container }, changeHandler )
src/resources/js/views/manager.js CHANGED
@@ -601,6 +601,17 @@ tribe.events.views.manager = {};
601
  // Clean up the container and event listeners
602
  obj.cleanup( $container );
603
 
 
 
 
 
 
 
 
 
 
 
 
604
  // Replace the current container with the new Data.
605
  $container.replaceWith( $html );
606
  $container = $html;
@@ -608,6 +619,14 @@ tribe.events.views.manager = {};
608
  // Setup the container with the data received.
609
  obj.setup( 0, $container );
610
 
 
 
 
 
 
 
 
 
611
  // Update the global set of containers with all of the manager object.
612
  obj.selectContainers();
613
 
601
  // Clean up the container and event listeners
602
  obj.cleanup( $container );
603
 
604
+ /*
605
+ * Dispatch an event before the container is replaced; bound events are
606
+ * removed!
607
+ */
608
+ document.dispatchEvent(
609
+ new CustomEvent(
610
+ 'containerReplaceBefore.tribeEvents',
611
+ { detail: $container },
612
+ ),
613
+ );
614
+
615
  // Replace the current container with the new Data.
616
  $container.replaceWith( $html );
617
  $container = $html;
619
  // Setup the container with the data received.
620
  obj.setup( 0, $container );
621
 
622
+ // Dispatch an event after the container is replaced and set up.
623
+ document.dispatchEvent(
624
+ new CustomEvent(
625
+ 'containerReplaceAfter.tribeEvents',
626
+ { detail: $container },
627
+ ),
628
+ );
629
+
630
  // Update the global set of containers with all of the manager object.
631
  obj.selectContainers();
632
 
src/views/single-event.php CHANGED
@@ -18,7 +18,16 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  $events_label_singular = tribe_get_event_label_singular();
19
  $events_label_plural = tribe_get_event_label_plural();
20
 
21
- $event_id = get_the_ID();
 
 
 
 
 
 
 
 
 
22
 
23
  /**
24
  * Allows filtering of the single event template title classes.
18
  $events_label_singular = tribe_get_event_label_singular();
19
  $events_label_plural = tribe_get_event_label_plural();
20
 
21
+ $event_id = Tribe__Events__Main::postIdHelper( get_the_ID() );
22
+
23
+ /**
24
+ * Allows filtering of the event ID.
25
+ *
26
+ * @since 6.0.1
27
+ *
28
+ * @param int $event_id
29
+ */
30
+ $event_id = apply_filters( 'tec_events_single_event_id', $event_id );
31
 
32
  /**
33
  * Allows filtering of the single event template title classes.
the-events-calendar.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: The Events Calendar
4
  * Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
- * Version: 6.0.0.1
6
  * Author: The Events Calendar
7
  * Author URI: https://evnt.is/1x
8
  * Text Domain: the-events-calendar
2
  /**
3
  * Plugin Name: The Events Calendar
4
  * Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
+ * Version: 6.0.1
6
  * Author: The Events Calendar
7
  * Author URI: https://evnt.is/1x
8
  * Text Domain: the-events-calendar
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit047571bb9c5b6978ec6fb64db0b7588e::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitb894359d15008797e6ddab61567f70cd::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -57,6 +57,7 @@ return array(
57
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\End_Date_UTC' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/End_Date_UTC.php',
58
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Ignore_Validator' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Ignore_Validator.php',
59
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Integer_Key' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Integer_Key.php',
 
60
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Positive_Integer' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Positive_Integer.php',
61
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Present' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Present.php',
62
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Range_Dates' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Range_Dates.php',
@@ -155,6 +156,7 @@ return array(
155
  'Tribe\\Events\\Event_Status\\Template_Modifications' => $baseDir . '/src/Tribe/Event_Status/Template_Modifications.php',
156
  'Tribe\\Events\\I18n' => $baseDir . '/src/Tribe/I18n.php',
157
  'Tribe\\Events\\Integrations\\Beaver_Builder' => $baseDir . '/src/Tribe/Integrations/Beaver_Builder.php',
 
158
  'Tribe\\Events\\Integrations\\Fusion\\Service_Provider' => $baseDir . '/src/Tribe/Integrations/Fusion/Service_Provider.php',
159
  'Tribe\\Events\\Integrations\\Fusion\\Widget_Shortcode' => $baseDir . '/src/Tribe/Integrations/Fusion/Widget_Shortcode.php',
160
  'Tribe\\Events\\Integrations\\Hello_Elementor\\Service_Provider' => $baseDir . '/src/Tribe/Integrations/Hello_Elementor/Service_Provider.php',
57
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\End_Date_UTC' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/End_Date_UTC.php',
58
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Ignore_Validator' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Ignore_Validator.php',
59
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Integer_Key' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Integer_Key.php',
60
+ 'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Occurrence_Duration' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Occurrence_Duration.php',
61
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Positive_Integer' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Positive_Integer.php',
62
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Present' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Present.php',
63
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Range_Dates' => $baseDir . '/src/Events/Custom_Tables/V1/Models/Validators/Range_Dates.php',
156
  'Tribe\\Events\\Event_Status\\Template_Modifications' => $baseDir . '/src/Tribe/Event_Status/Template_Modifications.php',
157
  'Tribe\\Events\\I18n' => $baseDir . '/src/Tribe/I18n.php',
158
  'Tribe\\Events\\Integrations\\Beaver_Builder' => $baseDir . '/src/Tribe/Integrations/Beaver_Builder.php',
159
+ 'Tribe\\Events\\Integrations\\Divi\\Service_Provider' => $baseDir . '/src/Tribe/Integrations/Divi/Service_Provider.php',
160
  'Tribe\\Events\\Integrations\\Fusion\\Service_Provider' => $baseDir . '/src/Tribe/Integrations/Fusion/Service_Provider.php',
161
  'Tribe\\Events\\Integrations\\Fusion\\Widget_Shortcode' => $baseDir . '/src/Tribe/Integrations/Fusion/Widget_Shortcode.php',
162
  'Tribe\\Events\\Integrations\\Hello_Elementor\\Service_Provider' => $baseDir . '/src/Tribe/Integrations/Hello_Elementor/Service_Provider.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit047571bb9c5b6978ec6fb64db0b7588e
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit047571bb9c5b6978ec6fb64db0b7588e
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit047571bb9c5b6978ec6fb64db0b7588e', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit047571bb9c5b6978ec6fb64db0b7588e', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitb894359d15008797e6ddab61567f70cd
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitb894359d15008797e6ddab61567f70cd', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitb894359d15008797e6ddab61567f70cd', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInitb894359d15008797e6ddab61567f70cd::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -77,6 +77,7 @@ class ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e
77
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\End_Date_UTC' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/End_Date_UTC.php',
78
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Ignore_Validator' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Ignore_Validator.php',
79
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Integer_Key' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Integer_Key.php',
 
80
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Positive_Integer' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Positive_Integer.php',
81
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Present' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Present.php',
82
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Range_Dates' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Range_Dates.php',
@@ -175,6 +176,7 @@ class ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e
175
  'Tribe\\Events\\Event_Status\\Template_Modifications' => __DIR__ . '/../..' . '/src/Tribe/Event_Status/Template_Modifications.php',
176
  'Tribe\\Events\\I18n' => __DIR__ . '/../..' . '/src/Tribe/I18n.php',
177
  'Tribe\\Events\\Integrations\\Beaver_Builder' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Beaver_Builder.php',
 
178
  'Tribe\\Events\\Integrations\\Fusion\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Fusion/Service_Provider.php',
179
  'Tribe\\Events\\Integrations\\Fusion\\Widget_Shortcode' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Fusion/Widget_Shortcode.php',
180
  'Tribe\\Events\\Integrations\\Hello_Elementor\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Hello_Elementor/Service_Provider.php',
@@ -270,9 +272,9 @@ class ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e
270
  public static function getInitializer(ClassLoader $loader)
271
  {
272
  return \Closure::bind(function () use ($loader) {
273
- $loader->prefixLengthsPsr4 = ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e::$prefixLengthsPsr4;
274
- $loader->prefixDirsPsr4 = ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e::$prefixDirsPsr4;
275
- $loader->classMap = ComposerStaticInit047571bb9c5b6978ec6fb64db0b7588e::$classMap;
276
 
277
  }, null, ClassLoader::class);
278
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitb894359d15008797e6ddab61567f70cd
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
77
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\End_Date_UTC' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/End_Date_UTC.php',
78
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Ignore_Validator' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Ignore_Validator.php',
79
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Integer_Key' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Integer_Key.php',
80
+ 'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Occurrence_Duration' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Occurrence_Duration.php',
81
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Positive_Integer' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Positive_Integer.php',
82
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Present' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Present.php',
83
  'TEC\\Events\\Custom_Tables\\V1\\Models\\Validators\\Range_Dates' => __DIR__ . '/../..' . '/src/Events/Custom_Tables/V1/Models/Validators/Range_Dates.php',
176
  'Tribe\\Events\\Event_Status\\Template_Modifications' => __DIR__ . '/../..' . '/src/Tribe/Event_Status/Template_Modifications.php',
177
  'Tribe\\Events\\I18n' => __DIR__ . '/../..' . '/src/Tribe/I18n.php',
178
  'Tribe\\Events\\Integrations\\Beaver_Builder' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Beaver_Builder.php',
179
+ 'Tribe\\Events\\Integrations\\Divi\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Divi/Service_Provider.php',
180
  'Tribe\\Events\\Integrations\\Fusion\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Fusion/Service_Provider.php',
181
  'Tribe\\Events\\Integrations\\Fusion\\Widget_Shortcode' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Fusion/Widget_Shortcode.php',
182
  'Tribe\\Events\\Integrations\\Hello_Elementor\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Hello_Elementor/Service_Provider.php',
272
  public static function getInitializer(ClassLoader $loader)
273
  {
274
  return \Closure::bind(function () use ($loader) {
275
+ $loader->prefixLengthsPsr4 = ComposerStaticInitb894359d15008797e6ddab61567f70cd::$prefixLengthsPsr4;
276
+ $loader->prefixDirsPsr4 = ComposerStaticInitb894359d15008797e6ddab61567f70cd::$prefixDirsPsr4;
277
+ $loader->classMap = ComposerStaticInitb894359d15008797e6ddab61567f70cd::$classMap;
278
 
279
  }, null, ClassLoader::class);
280
  }
vendor/composer/installed.json CHANGED
@@ -1,17 +1,17 @@
1
  [
2
  {
3
  "name": "woocommerce/action-scheduler",
4
- "version": "3.4.2",
5
- "version_normalized": "3.4.2.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/woocommerce/action-scheduler.git",
9
- "reference": "7d8e830b6387410ccf11708194d3836f01cb2942"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/woocommerce/action-scheduler/zipball/7d8e830b6387410ccf11708194d3836f01cb2942",
14
- "reference": "7d8e830b6387410ccf11708194d3836f01cb2942",
15
  "shasum": ""
16
  },
17
  "require-dev": {
@@ -20,7 +20,7 @@
20
  "wp-cli/wp-cli": "~2.5.0",
21
  "yoast/phpunit-polyfills": "^1.0"
22
  },
23
- "time": "2022-06-08T15:46:07+00:00",
24
  "type": "wordpress-plugin",
25
  "extra": {
26
  "scripts-description": {
1
  [
2
  {
3
  "name": "woocommerce/action-scheduler",
4
+ "version": "3.5.0",
5
+ "version_normalized": "3.5.0.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/woocommerce/action-scheduler.git",
9
+ "reference": "2f013f99dbea83933431a10f2a92c3388545ea43"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/woocommerce/action-scheduler/zipball/2f013f99dbea83933431a10f2a92c3388545ea43",
14
+ "reference": "2f013f99dbea83933431a10f2a92c3388545ea43",
15
  "shasum": ""
16
  },
17
  "require-dev": {
20
  "wp-cli/wp-cli": "~2.5.0",
21
  "yoast/phpunit-polyfills": "^1.0"
22
  },
23
+ "time": "2022-08-25T20:43:08+00:00",
24
  "type": "wordpress-plugin",
25
  "extra": {
26
  "scripts-description": {
vendor/woocommerce/action-scheduler/action-scheduler.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: A robust scheduling library for use in WordPress plugins.
6
  * Author: Automattic
7
  * Author URI: https://automattic.com/
8
- * Version: 3.4.2
9
  * License: GPLv3
10
  *
11
  * Copyright 2019 Automattic, Inc. (https://automattic.com/contact/)
@@ -26,27 +26,27 @@
26
  * @package ActionScheduler
27
  */
28
 
29
- if ( ! function_exists( 'action_scheduler_register_3_dot_4_dot_0' ) && function_exists( 'add_action' ) ) {
30
 
31
  if ( ! class_exists( 'ActionScheduler_Versions', false ) ) {
32
  require_once __DIR__ . '/classes/ActionScheduler_Versions.php';
33
  add_action( 'plugins_loaded', array( 'ActionScheduler_Versions', 'initialize_latest_version' ), 1, 0 );
34
  }
35
 
36
- add_action( 'plugins_loaded', 'action_scheduler_register_3_dot_4_dot_0', 0, 0 );
37
 
38
  /**
39
  * Registers this version of Action Scheduler.
40
  */
41
- function action_scheduler_register_3_dot_4_dot_0() {
42
  $versions = ActionScheduler_Versions::instance();
43
- $versions->register( '3.4.0', 'action_scheduler_initialize_3_dot_4_dot_0' );
44
  }
45
 
46
  /**
47
  * Initializes this version of Action Scheduler.
48
  */
49
- function action_scheduler_initialize_3_dot_4_dot_0() {
50
  // A final safety check is required even here, because historic versions of Action Scheduler
51
  // followed a different pattern (in some unusual cases, we could reach this point and the
52
  // ActionScheduler class is already defined—so we need to guard against that).
@@ -58,7 +58,7 @@ if ( ! function_exists( 'action_scheduler_register_3_dot_4_dot_0' ) && function_
58
 
59
  // Support usage in themes - load this version if no plugin has loaded a version yet.
60
  if ( did_action( 'plugins_loaded' ) && ! doing_action( 'plugins_loaded' ) && ! class_exists( 'ActionScheduler', false ) ) {
61
- action_scheduler_initialize_3_dot_4_dot_0();
62
  do_action( 'action_scheduler_pre_theme_init' );
63
  ActionScheduler_Versions::initialize_latest_version();
64
  }
5
  * Description: A robust scheduling library for use in WordPress plugins.
6
  * Author: Automattic
7
  * Author URI: https://automattic.com/
8
+ * Version: 3.5.0
9
  * License: GPLv3
10
  *
11
  * Copyright 2019 Automattic, Inc. (https://automattic.com/contact/)
26
  * @package ActionScheduler
27
  */
28
 
29
+ if ( ! function_exists( 'action_scheduler_register_3_dot_5_dot_0' ) && function_exists( 'add_action' ) ) {
30
 
31
  if ( ! class_exists( 'ActionScheduler_Versions', false ) ) {
32
  require_once __DIR__ . '/classes/ActionScheduler_Versions.php';
33
  add_action( 'plugins_loaded', array( 'ActionScheduler_Versions', 'initialize_latest_version' ), 1, 0 );
34
  }
35
 
36
+ add_action( 'plugins_loaded', 'action_scheduler_register_3_dot_5_dot_0', 0, 0 );
37
 
38
  /**
39
  * Registers this version of Action Scheduler.
40
  */
41
+ function action_scheduler_register_3_dot_5_dot_0() {
42
  $versions = ActionScheduler_Versions::instance();
43
+ $versions->register( '3.5.0', 'action_scheduler_initialize_3_dot_5_dot_0' );
44
  }
45
 
46
  /**
47
  * Initializes this version of Action Scheduler.
48
  */
49
+ function action_scheduler_initialize_3_dot_5_dot_0() {
50
  // A final safety check is required even here, because historic versions of Action Scheduler
51
  // followed a different pattern (in some unusual cases, we could reach this point and the
52
  // ActionScheduler class is already defined—so we need to guard against that).
58
 
59
  // Support usage in themes - load this version if no plugin has loaded a version yet.
60
  if ( did_action( 'plugins_loaded' ) && ! doing_action( 'plugins_loaded' ) && ! class_exists( 'ActionScheduler', false ) ) {
61
+ action_scheduler_initialize_3_dot_5_dot_0();
62
  do_action( 'action_scheduler_pre_theme_init' );
63
  ActionScheduler_Versions::initialize_latest_version();
64
  }
vendor/woocommerce/action-scheduler/changelog.txt CHANGED
@@ -1,5 +1,13 @@
1
  *** Changelog ***
2
 
 
 
 
 
 
 
 
 
3
  = 3.4.2 - 2022-06-08 =
4
  * Fix - Change the include for better linting.
5
  * Fix - update: Added Action scheduler completed action hook.
1
  *** Changelog ***
2
 
3
+ = 3.5.0 - 2022-08-25 =
4
+ * Add - The active view link within the "Tools > Scheduled Actions" screen is now clickable.
5
+ * Add - A warning when there are past-due actions.
6
+ * Enhancement - Added the ability to schedule unique actions via an atomic operation.
7
+ * Enhancement - Improvements to cache invalidation when processing batches (when running on WordPress 6.0+).
8
+ * Enhancement - If a recurring action is found to be consistently failing, it will stop being rescheduled.
9
+ * Enhancement - Adds a new "Past Due" view to the scheduled actions list table.
10
+
11
  = 3.4.2 - 2022-06-08 =
12
  * Fix - Change the include for better linting.
13
  * Fix - update: Added Action scheduler completed action hook.
vendor/woocommerce/action-scheduler/classes/ActionScheduler_ActionFactory.php CHANGED
@@ -6,27 +6,29 @@
6
  class ActionScheduler_ActionFactory {
7
 
8
  /**
9
- * @param string $status The action's status in the data store
10
- * @param string $hook The hook to trigger when this action runs
11
- * @param array $args Args to pass to callbacks when the hook is triggered
12
- * @param ActionScheduler_Schedule $schedule The action's schedule
13
- * @param string $group A group to put the action in
14
  *
15
- * @return ActionScheduler_Action An instance of the stored action
 
 
 
 
 
 
16
  */
17
  public function get_stored_action( $status, $hook, array $args = array(), ActionScheduler_Schedule $schedule = null, $group = '' ) {
18
 
19
  switch ( $status ) {
20
- case ActionScheduler_Store::STATUS_PENDING :
21
  $action_class = 'ActionScheduler_Action';
22
  break;
23
- case ActionScheduler_Store::STATUS_CANCELED :
24
  $action_class = 'ActionScheduler_CanceledAction';
25
  if ( ! is_null( $schedule ) && ! is_a( $schedule, 'ActionScheduler_CanceledSchedule' ) && ! is_a( $schedule, 'ActionScheduler_NullSchedule' ) ) {
26
  $schedule = new ActionScheduler_CanceledSchedule( $schedule->get_date() );
27
  }
28
  break;
29
- default :
30
  $action_class = 'ActionScheduler_FinishedAction';
31
  break;
32
  }
@@ -57,76 +59,142 @@ class ActionScheduler_ActionFactory {
57
  * given priority in queue processing. This has the added advantage of making sure async actions can be
58
  * claimed by both the existing WP Cron and WP CLI runners, as well as a new async request runner.
59
  *
60
- * @param string $hook The hook to trigger when this action runs
61
- * @param array $args Args to pass when the hook is triggered
62
- * @param string $group A group to put the action in
63
  *
64
- * @return int The ID of the stored action
65
  */
66
  public function async( $hook, $args = array(), $group = '' ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  $schedule = new ActionScheduler_NullSchedule();
68
- $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
69
- return $this->store( $action );
70
  }
71
 
72
  /**
73
- * @param string $hook The hook to trigger when this action runs
74
- * @param array $args Args to pass when the hook is triggered
75
- * @param int $when Unix timestamp when the action will run
76
- * @param string $group A group to put the action in
77
  *
78
- * @return int The ID of the stored action
 
 
 
 
 
79
  */
80
  public function single( $hook, $args = array(), $when = null, $group = '' ) {
81
- $date = as_get_datetime_object( $when );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  $schedule = new ActionScheduler_SimpleSchedule( $date );
83
- $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
84
- return $this->store( $action );
85
  }
86
 
87
  /**
88
  * Create the first instance of an action recurring on a given interval.
89
  *
90
- * @param string $hook The hook to trigger when this action runs
91
- * @param array $args Args to pass when the hook is triggered
92
- * @param int $first Unix timestamp for the first run
93
- * @param int $interval Seconds between runs
94
- * @param string $group A group to put the action in
95
  *
96
- * @return int The ID of the stored action
97
  */
98
  public function recurring( $hook, $args = array(), $first = null, $interval = null, $group = '' ) {
99
- if ( empty($interval) ) {
100
- return $this->single( $hook, $args, $first, $group );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
- $date = as_get_datetime_object( $first );
103
  $schedule = new ActionScheduler_IntervalSchedule( $date, $interval );
104
- $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
105
- return $this->store( $action );
106
  }
107
 
108
  /**
109
  * Create the first instance of an action recurring on a Cron schedule.
110
  *
111
- * @param string $hook The hook to trigger when this action runs
112
- * @param array $args Args to pass when the hook is triggered
113
- * @param int $base_timestamp The first instance of the action will be scheduled
114
  * to run at a time calculated after this timestamp matching the cron
115
  * expression. This can be used to delay the first instance of the action.
116
- * @param int $schedule A cron definition string
117
- * @param string $group A group to put the action in
118
  *
119
- * @return int The ID of the stored action
120
  */
121
  public function cron( $hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '' ) {
122
- if ( empty($schedule) ) {
123
- return $this->single( $hook, $args, $base_timestamp, $group );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  }
125
- $date = as_get_datetime_object( $base_timestamp );
126
- $cron = CronExpression::factory( $schedule );
127
  $schedule = new ActionScheduler_CronSchedule( $date, $cron );
128
- $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
129
- return $this->store( $action );
130
  }
131
 
132
  /**
@@ -162,13 +230,15 @@ class ActionScheduler_ActionFactory {
162
  }
163
 
164
  $schedule_class = get_class( $schedule );
165
- $new_schedule = new $schedule( $next, $schedule->get_recurrence(), $schedule->get_first_date() );
166
- $new_action = new ActionScheduler_Action( $action->get_hook(), $action->get_args(), $new_schedule, $action->get_group() );
167
  return $this->store( $new_action );
168
  }
169
 
170
  /**
171
- * @param ActionScheduler_Action $action
 
 
172
  *
173
  * @return int The ID of the stored action
174
  */
@@ -176,4 +246,17 @@ class ActionScheduler_ActionFactory {
176
  $store = ActionScheduler_Store::instance();
177
  return $store->save_action( $action );
178
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  }
6
  class ActionScheduler_ActionFactory {
7
 
8
  /**
9
+ * Return stored actions for given params.
 
 
 
 
10
  *
11
+ * @param string $status The action's status in the data store.
12
+ * @param string $hook The hook to trigger when this action runs.
13
+ * @param array $args Args to pass to callbacks when the hook is triggered.
14
+ * @param ActionScheduler_Schedule $schedule The action's schedule.
15
+ * @param string $group A group to put the action in.
16
+ *
17
+ * @return ActionScheduler_Action An instance of the stored action.
18
  */
19
  public function get_stored_action( $status, $hook, array $args = array(), ActionScheduler_Schedule $schedule = null, $group = '' ) {
20
 
21
  switch ( $status ) {
22
+ case ActionScheduler_Store::STATUS_PENDING:
23
  $action_class = 'ActionScheduler_Action';
24
  break;
25
+ case ActionScheduler_Store::STATUS_CANCELED:
26
  $action_class = 'ActionScheduler_CanceledAction';
27
  if ( ! is_null( $schedule ) && ! is_a( $schedule, 'ActionScheduler_CanceledSchedule' ) && ! is_a( $schedule, 'ActionScheduler_NullSchedule' ) ) {
28
  $schedule = new ActionScheduler_CanceledSchedule( $schedule->get_date() );
29
  }
30
  break;
31
+ default:
32
  $action_class = 'ActionScheduler_FinishedAction';
33
  break;
34
  }
59
  * given priority in queue processing. This has the added advantage of making sure async actions can be
60
  * claimed by both the existing WP Cron and WP CLI runners, as well as a new async request runner.
61
  *
62
+ * @param string $hook The hook to trigger when this action runs.
63
+ * @param array $args Args to pass when the hook is triggered.
64
+ * @param string $group A group to put the action in.
65
  *
66
+ * @return int The ID of the stored action.
67
  */
68
  public function async( $hook, $args = array(), $group = '' ) {
69
+ return $this->async_unique( $hook, $args, $group, false );
70
+ }
71
+
72
+ /**
73
+ * Same as async, but also supports $unique param.
74
+ *
75
+ * @param string $hook The hook to trigger when this action runs.
76
+ * @param array $args Args to pass when the hook is triggered.
77
+ * @param string $group A group to put the action in.
78
+ * @param bool $unique Whether to ensure the action is unique.
79
+ *
80
+ * @return int The ID of the stored action.
81
+ */
82
+ public function async_unique( $hook, $args = array(), $group = '', $unique = true ) {
83
  $schedule = new ActionScheduler_NullSchedule();
84
+ $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
85
+ return $unique ? $this->store_unique_action( $action, $unique ) : $this->store( $action );
86
  }
87
 
88
  /**
89
+ * Create single action.
 
 
 
90
  *
91
+ * @param string $hook The hook to trigger when this action runs.
92
+ * @param array $args Args to pass when the hook is triggered.
93
+ * @param int $when Unix timestamp when the action will run.
94
+ * @param string $group A group to put the action in.
95
+ *
96
+ * @return int The ID of the stored action.
97
  */
98
  public function single( $hook, $args = array(), $when = null, $group = '' ) {
99
+ return $this->single_unique( $hook, $args, $when, $group, false );
100
+ }
101
+
102
+ /**
103
+ * Create single action only if there is no pending or running action with same name and params.
104
+ *
105
+ * @param string $hook The hook to trigger when this action runs.
106
+ * @param array $args Args to pass when the hook is triggered.
107
+ * @param int $when Unix timestamp when the action will run.
108
+ * @param string $group A group to put the action in.
109
+ * @param bool $unique Whether action scheduled should be unique.
110
+ *
111
+ * @return int The ID of the stored action.
112
+ */
113
+ public function single_unique( $hook, $args = array(), $when = null, $group = '', $unique = true ) {
114
+ $date = as_get_datetime_object( $when );
115
  $schedule = new ActionScheduler_SimpleSchedule( $date );
116
+ $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
117
+ return $unique ? $this->store_unique_action( $action ) : $this->store( $action );
118
  }
119
 
120
  /**
121
  * Create the first instance of an action recurring on a given interval.
122
  *
123
+ * @param string $hook The hook to trigger when this action runs.
124
+ * @param array $args Args to pass when the hook is triggered.
125
+ * @param int $first Unix timestamp for the first run.
126
+ * @param int $interval Seconds between runs.
127
+ * @param string $group A group to put the action in.
128
  *
129
+ * @return int The ID of the stored action.
130
  */
131
  public function recurring( $hook, $args = array(), $first = null, $interval = null, $group = '' ) {
132
+ return $this->recurring_unique( $hook, $args, $first, $interval, $group, false );
133
+ }
134
+
135
+ /**
136
+ * Create the first instance of an action recurring on a given interval only if there is no pending or running action with same name and params.
137
+ *
138
+ * @param string $hook The hook to trigger when this action runs.
139
+ * @param array $args Args to pass when the hook is triggered.
140
+ * @param int $first Unix timestamp for the first run.
141
+ * @param int $interval Seconds between runs.
142
+ * @param string $group A group to put the action in.
143
+ * @param bool $unique Whether action scheduled should be unique.
144
+ *
145
+ * @return int The ID of the stored action.
146
+ */
147
+ public function recurring_unique( $hook, $args = array(), $first = null, $interval = null, $group = '', $unique = true ) {
148
+ if ( empty( $interval ) ) {
149
+ return $this->single_unique( $hook, $unique, $args, $first, $group );
150
  }
151
+ $date = as_get_datetime_object( $first );
152
  $schedule = new ActionScheduler_IntervalSchedule( $date, $interval );
153
+ $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
154
+ return $unique ? $this->store_unique_action( $action ) : $this->store( $action );
155
  }
156
 
157
  /**
158
  * Create the first instance of an action recurring on a Cron schedule.
159
  *
160
+ * @param string $hook The hook to trigger when this action runs.
161
+ * @param array $args Args to pass when the hook is triggered.
162
+ * @param int $base_timestamp The first instance of the action will be scheduled
163
  * to run at a time calculated after this timestamp matching the cron
164
  * expression. This can be used to delay the first instance of the action.
165
+ * @param int $schedule A cron definition string.
166
+ * @param string $group A group to put the action in.
167
  *
168
+ * @return int The ID of the stored action.
169
  */
170
  public function cron( $hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '' ) {
171
+ return $this->cron_unique( $hook, $args, $base_timestamp, $schedule, $group, false );
172
+ }
173
+
174
+
175
+ /**
176
+ * Create the first instance of an action recurring on a Cron schedule only if there is no pending or running action with same name and params.
177
+ *
178
+ * @param string $hook The hook to trigger when this action runs.
179
+ * @param array $args Args to pass when the hook is triggered.
180
+ * @param int $base_timestamp The first instance of the action will be scheduled
181
+ * to run at a time calculated after this timestamp matching the cron
182
+ * expression. This can be used to delay the first instance of the action.
183
+ * @param int $schedule A cron definition string.
184
+ * @param string $group A group to put the action in.
185
+ * @param bool $unique Whether action scheduled should be unique.
186
+ *
187
+ * @return int The ID of the stored action.
188
+ **/
189
+ public function cron_unique( $hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '', $unique = true ) {
190
+ if ( empty( $schedule ) ) {
191
+ return $this->single_unique( $hook, $unique, $args, $base_timestamp, $group );
192
  }
193
+ $date = as_get_datetime_object( $base_timestamp );
194
+ $cron = CronExpression::factory( $schedule );
195
  $schedule = new ActionScheduler_CronSchedule( $date, $cron );
196
+ $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
197
+ return $unique ? $this->store_unique_action( $action ) : $this->store( $action );
198
  }
199
 
200
  /**
230
  }
231
 
232
  $schedule_class = get_class( $schedule );
233
+ $new_schedule = new $schedule( $next, $schedule->get_recurrence(), $schedule->get_first_date() );
234
+ $new_action = new ActionScheduler_Action( $action->get_hook(), $action->get_args(), $new_schedule, $action->get_group() );
235
  return $this->store( $new_action );
236
  }
237
 
238
  /**
239
+ * Save action to database.
240
+ *
241
+ * @param ActionScheduler_Action $action Action object to save.
242
  *
243
  * @return int The ID of the stored action
244
  */
246
  $store = ActionScheduler_Store::instance();
247
  return $store->save_action( $action );
248
  }
249
+
250
+ /**
251
+ * Store action if it's unique.
252
+ *
253
+ * @param ActionScheduler_Action $action Action object to store.
254
+ *
255
+ * @return int ID of the created action. Will be 0 if action was not created.
256
+ */
257
+ protected function store_unique_action( ActionScheduler_Action $action ) {
258
+ $store = ActionScheduler_Store::instance();
259
+ return method_exists( $store, 'save_unique_action' ) ?
260
+ $store->save_unique_action( $action ) : $store->save_action( $action );
261
+ }
262
  }
vendor/woocommerce/action-scheduler/classes/ActionScheduler_AdminView.php CHANGED
@@ -40,7 +40,7 @@ class ActionScheduler_AdminView extends ActionScheduler_AdminView_Deprecated {
40
  }
41
 
42
  add_action( 'admin_menu', array( $this, 'register_menu' ) );
43
-
44
  add_action( 'current_screen', array( $this, 'add_help_tabs' ) );
45
  }
46
  }
@@ -110,6 +110,96 @@ class ActionScheduler_AdminView extends ActionScheduler_AdminView_Deprecated {
110
  return $this->list_table;
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  /**
114
  * Provide more information about the screen and its data in the help tab.
115
  */
40
  }
41
 
42
  add_action( 'admin_menu', array( $this, 'register_menu' ) );
43
+ add_action( 'admin_notices', array( $this, 'maybe_check_pastdue_actions' ) );
44
  add_action( 'current_screen', array( $this, 'add_help_tabs' ) );
45
  }
46
  }
110
  return $this->list_table;
111
  }
112
 
113
+ /**
114
+ * Action: admin_notices
115
+ *
116
+ * Maybe check past-due actions, and print notice.
117
+ *
118
+ * @uses $this->check_pastdue_actions()
119
+ */
120
+ public function maybe_check_pastdue_actions() {
121
+
122
+ # Filter to prevent checking actions (ex: inappropriate user).
123
+ if ( ! apply_filters( 'action_scheduler_check_pastdue_actions', current_user_can( 'manage_options' ) ) ) {
124
+ return;
125
+ }
126
+
127
+ # Get last check transient.
128
+ $last_check = get_transient( 'action_scheduler_last_pastdue_actions_check' );
129
+
130
+ # If transient exists, we're within interval, so bail.
131
+ if ( ! empty( $last_check ) ) {
132
+ return;
133
+ }
134
+
135
+ # Perform the check.
136
+ $this->check_pastdue_actions();
137
+ }
138
+
139
+ /**
140
+ * Check past-due actions, and print notice.
141
+ *
142
+ * @todo update $link_url to "Past-due" filter when released (see issue #510, PR #511)
143
+ */
144
+ protected function check_pastdue_actions() {
145
+
146
+ # Set thresholds.
147
+ $threshold_seconds = ( int ) apply_filters( 'action_scheduler_pastdue_actions_seconds', DAY_IN_SECONDS );
148
+ $threshhold_min = ( int ) apply_filters( 'action_scheduler_pastdue_actions_min', 1 );
149
+
150
+ # Allow third-parties to preempt the default check logic.
151
+ $check = apply_filters( 'action_scheduler_pastdue_actions_check_pre', null );
152
+
153
+ # Scheduled actions query arguments.
154
+ $query_args = array(
155
+ 'date' => as_get_datetime_object( time() - $threshold_seconds ),
156
+ 'status' => ActionScheduler_Store::STATUS_PENDING,
157
+ 'per_page' => $threshhold_min,
158
+ );
159
+
160
+ # If no third-party preempted, run default check.
161
+ if ( is_null( $check ) ) {
162
+ $store = ActionScheduler_Store::instance();
163
+ $num_pastdue_actions = ( int ) $store->query_actions( $query_args, 'count' );
164
+
165
+ # Check if past-due actions count is greater than or equal to threshold.
166
+ $check = ( $num_pastdue_actions >= $threshhold_min );
167
+ $check = ( bool ) apply_filters( 'action_scheduler_pastdue_actions_check', $check, $num_pastdue_actions, $threshold_seconds, $threshhold_min );
168
+ }
169
+
170
+ # If check failed, set transient and abort.
171
+ if ( ! boolval( $check ) ) {
172
+ $interval = apply_filters( 'action_scheduler_pastdue_actions_check_interval', round( $threshold_seconds / 4 ), $threshold_seconds );
173
+ set_transient( 'action_scheduler_last_pastdue_actions_check', time(), $interval );
174
+
175
+ return;
176
+ }
177
+
178
+ $actions_url = add_query_arg( array(
179
+ 'page' => 'action-scheduler',
180
+ 'status' => 'past-due',
181
+ 'order' => 'asc',
182
+ ), admin_url( 'tools.php' ) );
183
+
184
+ # Print notice.
185
+ echo '<div class="notice notice-warning"><p>';
186
+ printf(
187
+ _n(
188
+ // translators: 1) is the number of affected actions, 2) is a link to an admin screen.
189
+ '<strong>Action Scheduler:</strong> %1$d <a href="%2$s">past-due action</a> found; something may be wrong. <a href="https://actionscheduler.org/faq/#my-site-has-past-due-actions-what-can-i-do" target="_blank">Read documentation &raquo;</a>',
190
+ '<strong>Action Scheduler:</strong> %1$d <a href="%2$s">past-due actions</a> found; something may be wrong. <a href="https://actionscheduler.org/faq/#my-site-has-past-due-actions-what-can-i-do" target="_blank">Read documentation &raquo;</a>',
191
+ $num_pastdue_actions,
192
+ 'action-scheduler'
193
+ ),
194
+ $num_pastdue_actions,
195
+ esc_attr( esc_url( $actions_url ) )
196
+ );
197
+ echo '</p></div>';
198
+
199
+ # Facilitate third-parties to evaluate and print notices.
200
+ do_action( 'action_scheduler_pastdue_actions_extra_notices', $query_args );
201
+ }
202
+
203
  /**
204
  * Provide more information about the screen and its data in the help tab.
205
  */
vendor/woocommerce/action-scheduler/classes/ActionScheduler_Exception.php CHANGED
@@ -6,6 +6,6 @@
6
  * Facilitates catching Exceptions unique to Action Scheduler.
7
  *
8
  * @package ActionScheduler
9
- * @since %VERSION%
10
  */
11
  interface ActionScheduler_Exception {}
6
  * Facilitates catching Exceptions unique to Action Scheduler.
7
  *
8
  * @package ActionScheduler
9
+ * @since 2.1.0
10
  */
11
  interface ActionScheduler_Exception {}
vendor/woocommerce/action-scheduler/classes/ActionScheduler_ListTable.php CHANGED
@@ -467,6 +467,10 @@ class ActionScheduler_ListTable extends ActionScheduler_Abstract_ListTable {
467
 
468
  $schedule_display_string = '';
469
 
 
 
 
 
470
  if ( ! $schedule->get_date() ) {
471
  return '0000-00-00 00:00:00';
472
  }
@@ -583,6 +587,16 @@ class ActionScheduler_ListTable extends ActionScheduler_Abstract_ListTable {
583
  'search' => $this->get_request_search_query(),
584
  );
585
 
 
 
 
 
 
 
 
 
 
 
586
  $this->items = array();
587
 
588
  $total_items = $this->store->query_actions( $query, 'count' );
@@ -623,7 +637,7 @@ class ActionScheduler_ListTable extends ActionScheduler_Abstract_ListTable {
623
  * Prints the available statuses so the user can click to filter.
624
  */
625
  protected function display_filter_by_status() {
626
- $this->status_counts = $this->store->action_counts();
627
  parent::display_filter_by_status();
628
  }
629
 
467
 
468
  $schedule_display_string = '';
469
 
470
+ if ( is_a( $schedule, 'ActionScheduler_NullSchedule' ) ) {
471
+ return __( 'async', 'action-scheduler' );
472
+ }
473
+
474
  if ( ! $schedule->get_date() ) {
475
  return '0000-00-00 00:00:00';
476
  }
587
  'search' => $this->get_request_search_query(),
588
  );
589
 
590
+ /**
591
+ * Change query arguments to query for past-due actions.
592
+ * Past-due actions have the 'pending' status and are in the past.
593
+ * This is needed because registering 'past-due' as a status is overkill.
594
+ */
595
+ if ( 'past-due' === $this->get_request_status() ) {
596
+ $query['status'] = ActionScheduler_Store::STATUS_PENDING;
597
+ $query['date'] = as_get_datetime_object();
598
+ }
599
+
600
  $this->items = array();
601
 
602
  $total_items = $this->store->query_actions( $query, 'count' );
637
  * Prints the available statuses so the user can click to filter.
638
  */
639
  protected function display_filter_by_status() {
640
+ $this->status_counts = $this->store->action_counts() + $this->store->extra_action_counts();
641
  parent::display_filter_by_status();
642
  }
643
 
vendor/woocommerce/action-scheduler/classes/ActionScheduler_QueueRunner.php CHANGED
@@ -173,15 +173,34 @@ class ActionScheduler_QueueRunner extends ActionScheduler_Abstract_QueueRunner {
173
  }
174
 
175
  /**
176
- * Running large batches can eat up memory, as WP adds data to its object cache.
177
  *
178
- * If using a persistent object store, this has the side effect of flushing that
179
- * as well, so this is disabled by default. To enable:
180
- *
181
- * add_filter( 'action_scheduler_queue_runner_flush_cache', '__return_true' );
182
  */
183
  protected function clear_caches() {
184
- if ( ! wp_using_ext_object_cache() || apply_filters( 'action_scheduler_queue_runner_flush_cache', false ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  wp_cache_flush();
186
  }
187
  }
173
  }
174
 
175
  /**
176
+ * Flush the cache if possible (intended for use after a batch of actions has been processed).
177
  *
178
+ * This is useful because running large batches can eat up memory and because invalid data can accrue in the
179
+ * runtime cache, which may lead to unexpected results.
 
 
180
  */
181
  protected function clear_caches() {
182
+ /*
183
+ * Calling wp_cache_flush_runtime() lets us clear the runtime cache without invalidating the external object
184
+ * cache, so we will always prefer this when it is available (but it was only introduced in WordPress 6.0).
185
+ */
186
+ if ( function_exists( 'wp_cache_flush_runtime' ) ) {
187
+ wp_cache_flush_runtime();
188
+ } elseif (
189
+ ! wp_using_ext_object_cache()
190
+ /**
191
+ * When an external object cache is in use, and when wp_cache_flush_runtime() is not available, then
192
+ * normally the cache will not be flushed after processing a batch of actions (to avoid a performance
193
+ * penalty for other processes).
194
+ *
195
+ * This filter makes it possible to override this behavior and always flush the cache, even if an external
196
+ * object cache is in use.
197
+ *
198
+ * @since 1.0
199
+ *
200
+ * @param bool $flush_cache If the cache should be flushed.
201
+ */
202
+ || apply_filters( 'action_scheduler_queue_runner_flush_cache', false )
203
+ ) {
204
  wp_cache_flush();
205
  }
206
  }
vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php CHANGED
@@ -683,7 +683,7 @@ abstract class ActionScheduler_Abstract_ListTable extends WP_List_Table {
683
  }
684
 
685
  if ( $status_name === $request_status || ( empty( $request_status ) && 'all' === $status_name ) ) {
686
- $status_list_item = '<li class="%1$s"><strong>%3$s</strong> (%4$d)</li>';
687
  } else {
688
  $status_list_item = '<li class="%1$s"><a href="%2$s">%3$s</a> (%4$d)</li>';
689
  }
683
  }
684
 
685
  if ( $status_name === $request_status || ( empty( $request_status ) && 'all' === $status_name ) ) {
686
+ $status_list_item = '<li class="%1$s"><a href="%2$s" class="current">%3$s</a> (%4$d)</li>';
687
  } else {
688
  $status_list_item = '<li class="%1$s"><a href="%2$s">%3$s</a> (%4$d)</li>';
689
  }
vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php CHANGED
@@ -86,6 +86,19 @@ abstract class ActionScheduler_Abstract_QueueRunner extends ActionScheduler_Abst
86
  * @param int $action_id
87
  */
88
  protected function schedule_next_instance( ActionScheduler_Action $action, $action_id ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  try {
90
  ActionScheduler::factory()->repeat( $action );
91
  } catch ( Exception $e ) {
@@ -93,6 +106,51 @@ abstract class ActionScheduler_Abstract_QueueRunner extends ActionScheduler_Abst
93
  }
94
  }
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  /**
97
  * Run the queue cleaner.
98
  *
86
  * @param int $action_id
87
  */
88
  protected function schedule_next_instance( ActionScheduler_Action $action, $action_id ) {
89
+ // If a recurring action has been consistently failing, we may wish to stop rescheduling it.
90
+ if (
91
+ ActionScheduler_Store::STATUS_FAILED === $this->store->get_status( $action_id )
92
+ && $this->recurring_action_is_consistently_failing( $action, $action_id )
93
+ ) {
94
+ ActionScheduler_Logger::instance()->log(
95
+ $action_id,
96
+ __( 'This action appears to be consistently failing. A new instance will not be scheduled.', 'action-scheduler' )
97
+ );
98
+
99
+ return;
100
+ }
101
+
102
  try {
103
  ActionScheduler::factory()->repeat( $action );
104
  } catch ( Exception $e ) {
106
  }
107
  }
108
 
109
+ /**
110
+ * Determine if the specified recurring action has been consistently failing.
111
+ *
112
+ * @param ActionScheduler_Action $action The recurring action to be rescheduled.
113
+ * @param int $action_id The ID of the recurring action.
114
+ *
115
+ * @return bool
116
+ */
117
+ private function recurring_action_is_consistently_failing( ActionScheduler_Action $action, $action_id ) {
118
+ /**
119
+ * Controls the failure threshold for recurring actions.
120
+ *
121
+ * Before rescheduling a recurring action, we look at its status. If it failed, we then check if all of the most
122
+ * recent actions (upto the threshold set by this filter) sharing the same hook have also failed: if they have,
123
+ * that is considered consistent failure and a new instance of the action will not be scheduled.
124
+ *
125
+ * @param int $failure_threshold Number of actions of the same hook to examine for failure. Defaults to 5.
126
+ */
127
+ $consistent_failure_threshold = (int) apply_filters( 'action_scheduler_recurring_action_failure_threshold', 5 );
128
+
129
+ // This query should find the earliest *failing* action (for the hook we are interested in) within our threshold.
130
+ $query_args = array(
131
+ 'hook' => $action->get_hook(),
132
+ 'status' => ActionScheduler_Store::STATUS_FAILED,
133
+ 'date' => date_create( 'now', timezone_open( 'UTC' ) )->format( 'Y-m-d H:i:s' ),
134
+ 'date_compare' => '<',
135
+ 'per_page' => 1,
136
+ 'offset' => $consistent_failure_threshold - 1
137
+ );
138
+
139
+ $first_failing_action_id = $this->store->query_actions( $query_args );
140
+
141
+ // If we didn't retrieve an action ID, then there haven't been enough failures for us to worry about.
142
+ if ( empty( $first_failing_action_id ) ) {
143
+ return false;
144
+ }
145
+
146
+ // Now let's fetch the first action (having the same hook) of *any status*ithin the same window.
147
+ unset( $query_args['status'] );
148
+ $first_action_id_with_the_same_hook = $this->store->query_actions( $query_args );
149
+
150
+ // If the IDs match, then actions for this hook must be consistently failing.
151
+ return $first_action_id_with_the_same_hook === $first_failing_action_id;
152
+ }
153
+
154
  /**
155
  * Run the queue cleaner.
156
  *
vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php CHANGED
@@ -76,7 +76,7 @@ abstract class ActionScheduler_Store extends ActionScheduler_Store_Deprecated {
76
  /**
77
  * Query for action count or list of action IDs.
78
  *
79
- * @since x.x.x $query['status'] accepts array of statuses instead of a single status.
80
  *
81
  * @param array $query {
82
  * Query filtering options.
@@ -104,7 +104,7 @@ abstract class ActionScheduler_Store extends ActionScheduler_Store_Deprecated {
104
  /**
105
  * Run query to get a single action ID.
106
  *
107
- * @since x.x.x
108
  *
109
  * @see ActionScheduler_Store::query_actions for $query arg usage but 'per_page' and 'offset' can't be used.
110
  *
@@ -131,6 +131,34 @@ abstract class ActionScheduler_Store extends ActionScheduler_Store_Deprecated {
131
  */
132
  abstract public function action_counts();
133
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  /**
135
  * @param string $action_id
136
  */
76
  /**
77
  * Query for action count or list of action IDs.
78
  *
79
+ * @since 3.3.0 $query['status'] accepts array of statuses instead of a single status.
80
  *
81
  * @param array $query {
82
  * Query filtering options.
104
  /**
105
  * Run query to get a single action ID.
106
  *
107
+ * @since 3.3.0
108
  *
109
  * @see ActionScheduler_Store::query_actions for $query arg usage but 'per_page' and 'offset' can't be used.
110
  *
131
  */
132
  abstract public function action_counts();
133
 
134
+ /**
135
+ * Get additional action counts.
136
+ *
137
+ * - add past-due actions
138
+ *
139
+ * @return array
140
+ */
141
+ public function extra_action_counts() {
142
+ $extra_actions = array();
143
+
144
+ $pastdue_action_counts = ( int ) $this->query_actions( array(
145
+ 'status' => self::STATUS_PENDING,
146
+ 'date' => as_get_datetime_object(),
147
+ ), 'count' );
148
+
149
+ if ( $pastdue_action_counts ) {
150
+ $extra_actions['past-due'] = $pastdue_action_counts;
151
+ }
152
+
153
+ /**
154
+ * Allows 3rd party code to add extra action counts (used in filters in the list table).
155
+ *
156
+ * @since 3.5.0
157
+ * @param $extra_actions array Array with format action_count_identifier => action count.
158
+ */
159
+ return apply_filters( 'action_scheduler_extra_action_counts', $extra_actions );
160
+ }
161
+
162
  /**
163
  * @param string $action_id
164
  */
vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_Action.php CHANGED
@@ -18,8 +18,29 @@ class ActionScheduler_Action {
18
  $this->set_group($group);
19
  }
20
 
 
 
 
 
 
 
 
 
 
21
  public function execute() {
22
- return do_action_ref_array( $this->get_hook(), array_values( $this->get_args() ) );
 
 
 
 
 
 
 
 
 
 
 
 
23
  }
24
 
25
  /**
18
  $this->set_group($group);
19
  }
20
 
21
+ /**
22
+ * Executes the action.
23
+ *
24
+ * If no callbacks are registered, an exception will be thrown and the action will not be
25
+ * fired. This is useful to help detect cases where the code responsible for setting up
26
+ * a scheduled action no longer exists.
27
+ *
28
+ * @throws Exception If no callbacks are registered for this action.
29
+ */
30
  public function execute() {
31
+ $hook = $this->get_hook();
32
+
33
+ if ( ! has_action( $hook ) ) {
34
+ throw new Exception(
35
+ sprintf(
36
+ /* translators: 1: action hook. */
37
+ __( 'Scheduled action for %1$s will not be executed as no callbacks are registered.', 'action-scheduler' ),
38
+ $hook
39
+ )
40
+ );
41
+ }
42
+
43
+ do_action_ref_array( $hook, array_values( $this->get_args() ) );
44
  }
45
 
46
  /**
vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php CHANGED
@@ -36,22 +36,48 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
36
  $table_maker->register_tables();
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  /**
40
  * Save an action.
41
  *
42
  * @param ActionScheduler_Action $action Action object.
43
- * @param DateTime $date Optional schedule date. Default null.
 
44
  *
45
  * @return int Action ID.
46
  * @throws RuntimeException Throws exception when saving the action fails.
47
  */
48
- public function save_action( ActionScheduler_Action $action, \DateTime $date = null ) {
49
- try {
50
 
 
51
  $this->validate_action( $action );
52
 
53
- /** @var \wpdb $wpdb */
54
- global $wpdb;
55
  $data = array(
56
  'hook' => $action->get_hook(),
57
  'status' => ( $action->is_finished() ? self::STATUS_COMPLETE : self::STATUS_PENDING ),
@@ -60,6 +86,7 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
60
  'schedule' => serialize( $action->get_schedule() ), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
61
  'group_id' => $this->get_group_id( $action->get_group() ),
62
  );
 
63
  $args = wp_json_encode( $action->get_args() );
64
  if ( strlen( $args ) <= static::$max_index_length ) {
65
  $data['args'] = $args;
@@ -68,13 +95,18 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
68
  $data['extended_args'] = $args;
69
  }
70
 
71
- $table_name = ! empty( $wpdb->actionscheduler_actions ) ? $wpdb->actionscheduler_actions : $wpdb->prefix . 'actionscheduler_actions';
72
- $wpdb->insert( $table_name, $data );
 
 
73
  $action_id = $wpdb->insert_id;
74
 
75
  if ( is_wp_error( $action_id ) ) {
76
  throw new \RuntimeException( $action_id->get_error_message() );
77
  } elseif ( empty( $action_id ) ) {
 
 
 
78
  throw new \RuntimeException( $wpdb->last_error ? $wpdb->last_error : __( 'Database error.', 'action-scheduler' ) );
79
  }
80
 
@@ -87,6 +119,103 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
87
  }
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  /**
91
  * Generate a hash from json_encoded $args using MD5 as this isn't for security.
92
  *
@@ -232,7 +361,7 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
232
  /**
233
  * Returns the SQL statement to query (or count) actions.
234
  *
235
- * @since x.x.x $query['status'] accepts array of statuses instead of a single status.
236
  *
237
  * @param array $query Filtering options.
238
  * @param string $select_or_count Whether the SQL should select and return the IDs or just the row count.
@@ -384,7 +513,7 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
384
  /**
385
  * Query for action count or list of action IDs.
386
  *
387
- * @since x.x.x $query['status'] accepts array of statuses instead of a single status.
388
  *
389
  * @see ActionScheduler_Store::query_actions for $query arg usage.
390
  *
@@ -670,7 +799,7 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
670
  /**
671
  * Sets the order-by clause used in the action claim query.
672
  *
673
- * @since x.x.x
674
  *
675
  * @param string $order_by_sql
676
  */
36
  $table_maker->register_tables();
37
  }
38
 
39
+ /**
40
+ * Save an action, checks if this is a unique action before actually saving.
41
+ *
42
+ * @param ActionScheduler_Action $action Action object.
43
+ * @param \DateTime $scheduled_date Optional schedule date. Default null.
44
+ *
45
+ * @return int Action ID.
46
+ * @throws RuntimeException Throws exception when saving the action fails.
47
+ */
48
+ public function save_unique_action( ActionScheduler_Action $action, \DateTime $scheduled_date = null ) {
49
+ return $this->save_action_to_db( $action, $scheduled_date, true );
50
+ }
51
+
52
+ /**
53
+ * Save an action. Can save duplicate action as well, prefer using `save_unique_action` instead.
54
+ *
55
+ * @param ActionScheduler_Action $action Action object.
56
+ * @param \DateTime $scheduled_date Optional schedule date. Default null.
57
+ *
58
+ * @return int Action ID.
59
+ * @throws RuntimeException Throws exception when saving the action fails.
60
+ */
61
+ public function save_action( ActionScheduler_Action $action, \DateTime $scheduled_date = null ) {
62
+ return $this->save_action_to_db( $action, $scheduled_date, false );
63
+ }
64
+
65
  /**
66
  * Save an action.
67
  *
68
  * @param ActionScheduler_Action $action Action object.
69
+ * @param ?DateTime $date Optional schedule date. Default null.
70
+ * @param bool $unique Whether the action should be unique.
71
  *
72
  * @return int Action ID.
73
  * @throws RuntimeException Throws exception when saving the action fails.
74
  */
75
+ private function save_action_to_db( ActionScheduler_Action $action, DateTime $date = null, $unique = false ) {
76
+ global $wpdb;
77
 
78
+ try {
79
  $this->validate_action( $action );
80
 
 
 
81
  $data = array(
82
  'hook' => $action->get_hook(),
83
  'status' => ( $action->is_finished() ? self::STATUS_COMPLETE : self::STATUS_PENDING ),
86
  'schedule' => serialize( $action->get_schedule() ), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
87
  'group_id' => $this->get_group_id( $action->get_group() ),
88
  );
89
+
90
  $args = wp_json_encode( $action->get_args() );
91
  if ( strlen( $args ) <= static::$max_index_length ) {
92
  $data['args'] = $args;
95
  $data['extended_args'] = $args;
96
  }
97
 
98
+ $insert_sql = $this->build_insert_sql( $data, $unique );
99
+
100
+ // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_sql should be already prepared.
101
+ $wpdb->query( $insert_sql );
102
  $action_id = $wpdb->insert_id;
103
 
104
  if ( is_wp_error( $action_id ) ) {
105
  throw new \RuntimeException( $action_id->get_error_message() );
106
  } elseif ( empty( $action_id ) ) {
107
+ if ( $unique ) {
108
+ return 0;
109
+ }
110
  throw new \RuntimeException( $wpdb->last_error ? $wpdb->last_error : __( 'Database error.', 'action-scheduler' ) );
111
  }
112
 
119
  }
120
  }
121
 
122
+ /**
123
+ * Helper function to build insert query.
124
+ *
125
+ * @param array $data Row data for action.
126
+ * @param bool $unique Whether the action should be unique.
127
+ *
128
+ * @return string Insert query.
129
+ */
130
+ private function build_insert_sql( array $data, $unique ) {
131
+ global $wpdb;
132
+ $columns = array_keys( $data );
133
+ $values = array_values( $data );
134
+ $placeholders = array_map( array( $this, 'get_placeholder_for_column' ), $columns );
135
+
136
+ $table_name = ! empty( $wpdb->actionscheduler_actions ) ? $wpdb->actionscheduler_actions : $wpdb->prefix . 'actionscheduler_actions';
137
+
138
+ $column_sql = '`' . implode( '`, `', $columns ) . '`';
139
+ $placeholder_sql = implode( ', ', $placeholders );
140
+ $where_clause = $this->build_where_clause_for_insert( $data, $table_name, $unique );
141
+ // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $column_sql and $where_clause are already prepared. $placeholder_sql is hardcoded.
142
+ $insert_query = $wpdb->prepare(
143
+ "
144
+ INSERT INTO $table_name ( $column_sql )
145
+ SELECT $placeholder_sql FROM DUAL
146
+ WHERE ( $where_clause ) IS NULL",
147
+ $values
148
+ );
149
+ // phpcs:enable
150
+
151
+ return $insert_query;
152
+ }
153
+
154
+ /**
155
+ * Helper method to build where clause for action insert statement.
156
+ *
157
+ * @param array $data Row data for action.
158
+ * @param string $table_name Action table name.
159
+ * @param bool $unique Where action should be unique.
160
+ *
161
+ * @return string Where clause to be used with insert.
162
+ */
163
+ private function build_where_clause_for_insert( $data, $table_name, $unique ) {
164
+ global $wpdb;
165
+
166
+ if ( ! $unique ) {
167
+ return 'SELECT NULL FROM DUAL';
168
+ }
169
+
170
+ $pending_statuses = array(
171
+ ActionScheduler_Store::STATUS_PENDING,
172
+ ActionScheduler_Store::STATUS_RUNNING,
173
+ );
174
+ $pending_status_placeholders = implode( ', ', array_fill( 0, count( $pending_statuses ), '%s' ) );
175
+ // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $pending_status_placeholders is hardcoded.
176
+ $where_clause = $wpdb->prepare(
177
+ "
178
+ SELECT action_id FROM $table_name
179
+ WHERE status IN ( $pending_status_placeholders )
180
+ AND hook = %s
181
+ AND `group_id` = %d
182
+ ",
183
+ array_merge(
184
+ $pending_statuses,
185
+ array(
186
+ $data['hook'],
187
+ $data['group_id'],
188
+ )
189
+ )
190
+ );
191
+ // phpcs:enable
192
+
193
+ return "$where_clause" . ' LIMIT 1';
194
+ }
195
+
196
+ /**
197
+ * Helper method to get $wpdb->prepare placeholder for a given column name.
198
+ *
199
+ * @param string $column_name Name of column in actions table.
200
+ *
201
+ * @return string Placeholder to use for given column.
202
+ */
203
+ private function get_placeholder_for_column( $column_name ) {
204
+ $string_columns = array(
205
+ 'hook',
206
+ 'status',
207
+ 'scheduled_date_gmt',
208
+ 'scheduled_date_local',
209
+ 'args',
210
+ 'schedule',
211
+ 'last_attempt_gmt',
212
+ 'last_attempt_local',
213
+ 'extended_args',
214
+ );
215
+
216
+ return in_array( $column_name, $string_columns ) ? '%s' : '%d';
217
+ }
218
+
219
  /**
220
  * Generate a hash from json_encoded $args using MD5 as this isn't for security.
221
  *
361
  /**
362
  * Returns the SQL statement to query (or count) actions.
363
  *
364
+ * @since 3.3.0 $query['status'] accepts array of statuses instead of a single status.
365
  *
366
  * @param array $query Filtering options.
367
  * @param string $select_or_count Whether the SQL should select and return the IDs or just the row count.
513
  /**
514
  * Query for action count or list of action IDs.
515
  *
516
+ * @since 3.3.0 $query['status'] accepts array of statuses instead of a single status.
517
  *
518
  * @see ActionScheduler_Store::query_actions for $query arg usage.
519
  *
799
  /**
800
  * Sets the order-by clause used in the action claim query.
801
  *
802
+ * @since 3.4.0
803
  *
804
  * @param string $order_by_sql
805
  */
vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore.php CHANGED
@@ -452,7 +452,7 @@ class ActionScheduler_wpPostStore extends ActionScheduler_Store {
452
  /**
453
  * Query for action count or list of action IDs.
454
  *
455
- * @since x.x.x $query['status'] accepts array of statuses instead of a single status.
456
  *
457
  * @see ActionScheduler_Store::query_actions for $query arg usage.
458
  *
452
  /**
453
  * Query for action count or list of action IDs.
454
  *
455
+ * @since 3.3.0 $query['status'] accepts array of statuses instead of a single status.
456
  *
457
  * @see ActionScheduler_Store::query_actions for $query arg usage.
458
  *
vendor/woocommerce/action-scheduler/functions.php CHANGED
@@ -1,7 +1,8 @@
1
  <?php
2
-
3
  /**
4
  * General API functions for scheduling actions
 
 
5
  */
6
 
7
  /**
@@ -10,57 +11,61 @@
10
  * @param string $hook The hook to trigger.
11
  * @param array $args Arguments to pass when the hook triggers.
12
  * @param string $group The group to assign this job to.
 
 
13
  * @return int The action ID.
14
  */
15
- function as_enqueue_async_action( $hook, $args = array(), $group = '' ) {
16
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
17
  return 0;
18
  }
19
- return ActionScheduler::factory()->async( $hook, $args, $group );
20
  }
21
 
22
  /**
23
  * Schedule an action to run one time
24
  *
25
- * @param int $timestamp When the job will run.
26
  * @param string $hook The hook to trigger.
27
- * @param array $args Arguments to pass when the hook triggers.
28
  * @param string $group The group to assign this job to.
 
29
  *
30
  * @return int The action ID.
31
  */
32
- function as_schedule_single_action( $timestamp, $hook, $args = array(), $group = '' ) {
33
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
34
  return 0;
35
  }
36
- return ActionScheduler::factory()->single( $hook, $args, $timestamp, $group );
37
  }
38
 
39
  /**
40
  * Schedule a recurring action
41
  *
42
- * @param int $timestamp When the first instance of the job will run.
43
- * @param int $interval_in_seconds How long to wait between runs.
44
  * @param string $hook The hook to trigger.
45
- * @param array $args Arguments to pass when the hook triggers.
46
  * @param string $group The group to assign this job to.
 
47
  *
48
  * @return int The action ID.
49
  */
50
- function as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook, $args = array(), $group = '' ) {
51
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
52
  return 0;
53
  }
54
- return ActionScheduler::factory()->recurring( $hook, $args, $timestamp, $interval_in_seconds, $group );
55
  }
56
 
57
  /**
58
  * Schedule an action that recurs on a cron-like schedule.
59
  *
60
- * @param int $base_timestamp The first instance of the action will be scheduled
61
- * to run at a time calculated after this timestamp matching the cron
62
- * expression. This can be used to delay the first instance of the action.
63
- * @param string $schedule A cron-link schedule string
64
  * @see http://en.wikipedia.org/wiki/Cron
65
  * * * * * * *
66
  * ┬ ┬ ┬ ┬ ┬ ┬
@@ -72,16 +77,17 @@ function as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook,
72
  * | +-------------------- hour (0 - 23)
73
  * +------------------------- min (0 - 59)
74
  * @param string $hook The hook to trigger.
75
- * @param array $args Arguments to pass when the hook triggers.
76
  * @param string $group The group to assign this job to.
 
77
  *
78
  * @return int The action ID.
79
  */
80
- function as_schedule_cron_action( $timestamp, $schedule, $hook, $args = array(), $group = '' ) {
81
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
82
  return 0;
83
  }
84
- return ActionScheduler::factory()->cron( $hook, $args, $timestamp, $schedule, $group );
85
  }
86
 
87
  /**
@@ -95,7 +101,7 @@ function as_schedule_cron_action( $timestamp, $schedule, $hook, $args = array(),
95
  * by this method also.
96
  *
97
  * @param string $hook The hook that the job will trigger.
98
- * @param array $args Args that would have been passed to the job.
99
  * @param string $group The group the job is assigned to.
100
  *
101
  * @return int|null The scheduled action ID if a scheduled action was found, or null if no matching action found.
@@ -141,7 +147,7 @@ function as_unschedule_action( $hook, $args = array(), $group = '' ) {
141
  * Cancel all occurrences of a scheduled action.
142
  *
143
  * @param string $hook The hook that the job will trigger.
144
- * @param array $args Args that would have been passed to the job.
145
  * @param string $group The group the job is assigned to.
146
  */
147
  function as_unschedule_all_actions( $hook, $args = array(), $group = '' ) {
@@ -172,9 +178,9 @@ function as_unschedule_all_actions( $hook, $args = array(), $group = '' ) {
172
  * returned. Or there may be no async, in-progress or pending action for this hook, in which case,
173
  * boolean false will be the return value.
174
  *
175
- * @param string $hook
176
- * @param array $args
177
- * @param string $group
178
  *
179
  * @return int|bool The timestamp for the next occurrence of a pending scheduled action, true for an async or in-progress action or false if there is no matching action.
180
  */
@@ -210,7 +216,7 @@ function as_next_scheduled_action( $hook, $args = null, $group = '' ) {
210
  $scheduled_date = $action->get_schedule()->get_date();
211
  if ( $scheduled_date ) {
212
  return (int) $scheduled_date->format( 'U' );
213
- } elseif ( null === $scheduled_date ) { // pending async action with NullSchedule
214
  return true;
215
  }
216
 
@@ -223,7 +229,7 @@ function as_next_scheduled_action( $hook, $args = null, $group = '' ) {
223
  * It's recommended to use this function when you need to know whether a specific action is currently scheduled
224
  * (pending or in-progress).
225
  *
226
- * @since x.x.x
227
  *
228
  * @param string $hook The hook of the action.
229
  * @param array $args Args that have been passed to the action. Null will matches any args.
@@ -237,10 +243,10 @@ function as_has_scheduled_action( $hook, $args = null, $group = '' ) {
237
  }
238
 
239
  $query_args = array(
240
- 'hook' => $hook,
241
- 'status' => array( ActionScheduler_Store::STATUS_RUNNING, ActionScheduler_Store::STATUS_PENDING ),
242
- 'group' => $group,
243
- 'orderby' => 'none',
244
  );
245
 
246
  if ( null !== $args ) {
@@ -249,26 +255,26 @@ function as_has_scheduled_action( $hook, $args = null, $group = '' ) {
249
 
250
  $action_id = ActionScheduler::store()->query_action( $query_args );
251
 
252
- return $action_id !== null;
253
  }
254
 
255
  /**
256
  * Find scheduled actions
257
  *
258
- * @param array $args Possible arguments, with their default values:
259
- * 'hook' => '' - the name of the action that will be triggered
260
- * 'args' => NULL - the args array that will be passed with the action
261
- * 'date' => NULL - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
262
- * 'date_compare' => '<=' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='
263
- * 'modified' => NULL - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
264
- * 'modified_compare' => '<=' - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='
265
- * 'group' => '' - the group the action belongs to
266
- * 'status' => '' - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
267
- * 'claimed' => NULL - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID
268
- * 'per_page' => 5 - Number of results to return
269
- * 'offset' => 0
270
- * 'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', 'date' or 'none'
271
- * 'order' => 'ASC'
272
  *
273
  * @param string $return_format OBJECT, ARRAY_A, or ids.
274
  *
@@ -279,25 +285,25 @@ function as_get_scheduled_actions( $args = array(), $return_format = OBJECT ) {
279
  return array();
280
  }
281
  $store = ActionScheduler::store();
282
- foreach ( array('date', 'modified') as $key ) {
283
- if ( isset($args[$key]) ) {
284
- $args[$key] = as_get_datetime_object($args[$key]);
285
  }
286
  }
287
  $ids = $store->query_actions( $args );
288
 
289
- if ( $return_format == 'ids' || $return_format == 'int' ) {
290
  return $ids;
291
  }
292
 
293
  $actions = array();
294
  foreach ( $ids as $action_id ) {
295
- $actions[$action_id] = $store->fetch_action( $action_id );
296
  }
297
 
298
- if ( $return_format == ARRAY_A ) {
299
  foreach ( $actions as $action_id => $action_object ) {
300
- $actions[$action_id] = get_object_vars($action_object);
301
  }
302
  }
303
 
@@ -316,7 +322,7 @@ function as_get_scheduled_actions( $args = array(), $return_format = OBJECT ) {
316
  * timezone when instantiating datetimes rather than leaving it up to
317
  * the PHP default.
318
  *
319
- * @param mixed $date_string A date/time string. Valid formats are explained in http://php.net/manual/en/datetime.formats.php.
320
  * @param string $timezone A timezone identifier, like UTC or Europe/Lisbon. The list of valid identifiers is available http://php.net/manual/en/timezones.php.
321
  *
322
  * @return ActionScheduler_DateTime
1
  <?php
 
2
  /**
3
  * General API functions for scheduling actions
4
+ *
5
+ * @package ActionScheduler.
6
  */
7
 
8
  /**
11
  * @param string $hook The hook to trigger.
12
  * @param array $args Arguments to pass when the hook triggers.
13
  * @param string $group The group to assign this job to.
14
+ * @param bool $unique Whether the action should be unique.
15
+ *
16
  * @return int The action ID.
17
  */
18
+ function as_enqueue_async_action( $hook, $args = array(), $group = '', $unique = false ) {
19
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
20
  return 0;
21
  }
22
+ return ActionScheduler::factory()->async_unique( $hook, $args, $group, $unique );
23
  }
24
 
25
  /**
26
  * Schedule an action to run one time
27
  *
28
+ * @param int $timestamp When the job will run.
29
  * @param string $hook The hook to trigger.
30
+ * @param array $args Arguments to pass when the hook triggers.
31
  * @param string $group The group to assign this job to.
32
+ * @param bool $unique Whether the action should be unique.
33
  *
34
  * @return int The action ID.
35
  */
36
+ function as_schedule_single_action( $timestamp, $hook, $args = array(), $group = '', $unique = false ) {
37
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
38
  return 0;
39
  }
40
+ return ActionScheduler::factory()->single_unique( $hook, $args, $timestamp, $group, $unique );
41
  }
42
 
43
  /**
44
  * Schedule a recurring action
45
  *
46
+ * @param int $timestamp When the first instance of the job will run.
47
+ * @param int $interval_in_seconds How long to wait between runs.
48
  * @param string $hook The hook to trigger.
49
+ * @param array $args Arguments to pass when the hook triggers.
50
  * @param string $group The group to assign this job to.
51
+ * @param bool $unique Whether the action should be unique.
52
  *
53
  * @return int The action ID.
54
  */
55
+ function as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook, $args = array(), $group = '', $unique = false ) {
56
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
57
  return 0;
58
  }
59
+ return ActionScheduler::factory()->recurring_unique( $hook, $args, $timestamp, $interval_in_seconds, $group, $unique );
60
  }
61
 
62
  /**
63
  * Schedule an action that recurs on a cron-like schedule.
64
  *
65
+ * @param int $timestamp The first instance of the action will be scheduled
66
+ * to run at a time calculated after this timestamp matching the cron
67
+ * expression. This can be used to delay the first instance of the action.
68
+ * @param string $schedule A cron-link schedule string.
69
  * @see http://en.wikipedia.org/wiki/Cron
70
  * * * * * * *
71
  * ┬ ┬ ┬ ┬ ┬ ┬
77
  * | +-------------------- hour (0 - 23)
78
  * +------------------------- min (0 - 59)
79
  * @param string $hook The hook to trigger.
80
+ * @param array $args Arguments to pass when the hook triggers.
81
  * @param string $group The group to assign this job to.
82
+ * @param bool $unique Whether the action should be unique.
83
  *
84
  * @return int The action ID.
85
  */
86
+ function as_schedule_cron_action( $timestamp, $schedule, $hook, $args = array(), $group = '', $unique = false ) {
87
  if ( ! ActionScheduler::is_initialized( __FUNCTION__ ) ) {
88
  return 0;
89
  }
90
+ return ActionScheduler::factory()->cron_unique( $hook, $args, $timestamp, $schedule, $group, $unique );
91
  }
92
 
93
  /**
101
  * by this method also.
102
  *
103
  * @param string $hook The hook that the job will trigger.
104
+ * @param array $args Args that would have been passed to the job.
105
  * @param string $group The group the job is assigned to.
106
  *
107
  * @return int|null The scheduled action ID if a scheduled action was found, or null if no matching action found.
147
  * Cancel all occurrences of a scheduled action.
148
  *
149
  * @param string $hook The hook that the job will trigger.
150
+ * @param array $args Args that would have been passed to the job.
151
  * @param string $group The group the job is assigned to.
152
  */
153
  function as_unschedule_all_actions( $hook, $args = array(), $group = '' ) {
178
  * returned. Or there may be no async, in-progress or pending action for this hook, in which case,
179
  * boolean false will be the return value.
180
  *
181
+ * @param string $hook Name of the hook to search for.
182
+ * @param array $args Arguments of the action to be searched.
183
+ * @param string $group Group of the action to be searched.
184
  *
185
  * @return int|bool The timestamp for the next occurrence of a pending scheduled action, true for an async or in-progress action or false if there is no matching action.
186
  */
216
  $scheduled_date = $action->get_schedule()->get_date();
217
  if ( $scheduled_date ) {
218
  return (int) $scheduled_date->format( 'U' );
219
+ } elseif ( null === $scheduled_date ) { // pending async action with NullSchedule.
220
  return true;
221
  }
222
 
229
  * It's recommended to use this function when you need to know whether a specific action is currently scheduled
230
  * (pending or in-progress).
231
  *
232
+ * @since 3.3.0
233
  *
234
  * @param string $hook The hook of the action.
235
  * @param array $args Args that have been passed to the action. Null will matches any args.
243
  }
244
 
245
  $query_args = array(
246
+ 'hook' => $hook,
247
+ 'status' => array( ActionScheduler_Store::STATUS_RUNNING, ActionScheduler_Store::STATUS_PENDING ),
248
+ 'group' => $group,
249
+ 'orderby' => 'none',
250
  );
251
 
252
  if ( null !== $args ) {
255
 
256
  $action_id = ActionScheduler::store()->query_action( $query_args );
257
 
258
+ return null !== $action_id;
259
  }
260
 
261
  /**
262
  * Find scheduled actions
263
  *
264
+ * @param array $args Possible arguments, with their default values.
265
+ * 'hook' => '' - the name of the action that will be triggered.
266
+ * 'args' => NULL - the args array that will be passed with the action.
267
+ * 'date' => NULL - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
268
+ * 'date_compare' => '<=' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='.
269
+ * 'modified' => NULL - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime(). Used in UTC timezone.
270
+ * 'modified_compare' => '<=' - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='.
271
+ * 'group' => '' - the group the action belongs to.
272
+ * 'status' => '' - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING.
273
+ * 'claimed' => NULL - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID.
274
+ * 'per_page' => 5 - Number of results to return.
275
+ * 'offset' => 0.
276
+ * 'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', 'date' or 'none'.
277
+ * 'order' => 'ASC'.
278
  *
279
  * @param string $return_format OBJECT, ARRAY_A, or ids.
280
  *
285
  return array();
286
  }
287
  $store = ActionScheduler::store();
288
+ foreach ( array( 'date', 'modified' ) as $key ) {
289
+ if ( isset( $args[ $key ] ) ) {
290
+ $args[ $key ] = as_get_datetime_object( $args[ $key ] );
291
  }
292
  }
293
  $ids = $store->query_actions( $args );
294
 
295
+ if ( 'ids' === $return_format || 'int' === $return_format ) {
296
  return $ids;
297
  }
298
 
299
  $actions = array();
300
  foreach ( $ids as $action_id ) {
301
+ $actions[ $action_id ] = $store->fetch_action( $action_id );
302
  }
303
 
304
+ if ( ARRAY_A == $return_format ) {
305
  foreach ( $actions as $action_id => $action_object ) {
306
+ $actions[ $action_id ] = get_object_vars( $action_object );
307
  }
308
  }
309
 
322
  * timezone when instantiating datetimes rather than leaving it up to
323
  * the PHP default.
324
  *
325
+ * @param mixed $date_string A date/time string. Valid formats are explained in http://php.net/manual/en/datetime.formats.php.
326
  * @param string $timezone A timezone identifier, like UTC or Europe/Lisbon. The list of valid identifiers is available http://php.net/manual/en/timezones.php.
327
  *
328
  * @return ActionScheduler_DateTime
vendor/woocommerce/action-scheduler/readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: Automattic, wpmuguru, claudiosanches, peterfabian1000, vedjain, jamosova, obliviousharmony, konamiman, sadowski, royho, barryhughes-1
3
  Tags: scheduler, cron
4
  Requires at least: 5.2
5
- Tested up to: 5.7
6
- Stable tag: 3.4.2
7
  License: GPLv3
8
  Requires PHP: 5.6
9
 
@@ -47,6 +47,14 @@ Collaboration is cool. We'd love to work with you to improve Action Scheduler. [
47
 
48
  == Changelog ==
49
 
 
 
 
 
 
 
 
 
50
  = 3.4.2 - 2022-06-08 =
51
  * Fix - Change the include for better linting.
52
  * Fix - update: Added Action scheduler completed action hook.
2
  Contributors: Automattic, wpmuguru, claudiosanches, peterfabian1000, vedjain, jamosova, obliviousharmony, konamiman, sadowski, royho, barryhughes-1
3
  Tags: scheduler, cron
4
  Requires at least: 5.2
5
+ Tested up to: 6.0
6
+ Stable tag: 3.5.0
7
  License: GPLv3
8
  Requires PHP: 5.6
9
 
47
 
48
  == Changelog ==
49
 
50
+ = 3.5.0 - 2022-08-25 =
51
+ * Add - The active view link within the "Tools > Scheduled Actions" screen is now clickable.
52
+ * Add - A warning when there are past-due actions.
53
+ * Enhancement - Added the ability to schedule unique actions via an atomic operation.
54
+ * Enhancement - Improvements to cache invalidation when processing batches (when running on WordPress 6.0+).
55
+ * Enhancement - If a recurring action is found to be consistently failing, it will stop being rescheduled.
56
+ * Enhancement - Adds a new "Past Due" view to the scheduled actions list table.
57
+
58
  = 3.4.2 - 2022-06-08 =
59
  * Fix - Change the include for better linting.
60
  * Fix - update: Added Action scheduler completed action hook.