WPtouch - Version 4.3

Version Description

Download this release

Release Info

Developer bravenewcode
Plugin Icon 128x128 WPtouch
Version 4.3
Comparing to
See all releases

Code changes from version 4.2.6 to 4.3

Files changed (61) hide show
  1. admin/css/wptouch-admin-4.css +9 -2
  2. admin/customizer/wptouch-customizer.js +4 -4
  3. admin/customizer/wptouch-customizer.php +29 -6
  4. admin/fontello/LICENSE.txt +1 -1
  5. admin/fontello/config.json +14 -0
  6. admin/fontello/css/fontello-codes.css +2 -1
  7. admin/fontello/css/fontello-embedded.css +8 -7
  8. admin/fontello/css/fontello-ie7-codes.css +2 -1
  9. admin/fontello/css/fontello-ie7.css +2 -1
  10. admin/fontello/css/fontello.css +9 -8
  11. admin/fontello/demo.html +8 -5
  12. admin/fontello/font/fontello.eot +0 -0
  13. admin/fontello/font/fontello.svg +2 -0
  14. admin/fontello/font/fontello.ttf +0 -0
  15. admin/fontello/font/fontello.woff +0 -0
  16. admin/fontello/font/fontello.woff2 +0 -0
  17. admin/js/wptouch-admin-4.js +1 -1
  18. admin/pages/wptouch-admin-general-settings.php +2 -2
  19. admin/settings/html/checkbox.php +6 -1
  20. admin/settings/html/list.php +5 -1
  21. admin/settings/html/multiline-comma.php +5 -1
  22. admin/settings/html/multiline-newline.php +5 -1
  23. admin/settings/html/plugin-compat-ajax.php +3 -0
  24. admin/settings/html/text.php +5 -1
  25. core/admin-load.php +5 -1
  26. core/admin-render.php +2 -1
  27. core/class-bncapi.php +1 -1
  28. core/class-cache-smash.php +23 -4
  29. core/class-wptouch-pro.php +3 -1
  30. core/menu-walkers.php +1 -1
  31. lang/wptouch.pot +232 -150
  32. readme.txt +6 -1
  33. themes/bauhaus/bauhaus-customizer.js +51 -5
  34. themes/bauhaus/default/bauhaus.js +98 -4
  35. themes/bauhaus/default/featured-slider.php +0 -18
  36. themes/bauhaus/default/functions.php +214 -10
  37. themes/bauhaus/default/header-bottom.php +0 -4
  38. themes/bauhaus/default/index.php +8 -31
  39. themes/bauhaus/default/layouts/carousel-post-loop.php +29 -0
  40. themes/bauhaus/default/layouts/carousel-view.php +38 -0
  41. themes/bauhaus/default/layouts/post-listing-view.php +32 -0
  42. themes/bauhaus/default/page-content.php +3 -3
  43. themes/bauhaus/default/post-loop.php +7 -6
  44. themes/bauhaus/default/related-posts.php +14 -17
  45. themes/bauhaus/default/single.php +4 -7
  46. themes/bauhaus/default/style.css +272 -220
  47. themes/bauhaus/readme.txt +19 -10
  48. themes/bauhaus/root-functions.php +264 -50
  49. themes/bauhaus/screenshot.png +0 -0
  50. themes/foundation/default/featured-posts.php +9 -0
  51. themes/foundation/modules/custom-posts/custom-posts.php +4 -1
  52. themes/foundation/modules/featured/featured.php +19 -19
  53. themes/foundation/modules/featured/wptouch-owl.js +6 -3
  54. themes/foundation/modules/flickity/flickity-wptouch.js +0 -0
  55. themes/foundation/modules/flickity/flickity.css +130 -0
  56. themes/foundation/modules/flickity/flickity.min.css +4 -0
  57. themes/foundation/modules/flickity/flickity.php +31 -0
  58. themes/foundation/modules/flickity/flickity.pkgd.js +4625 -0
  59. themes/foundation/modules/flickity/flickity.pkgd.min.js +13 -0
  60. themes/foundation/modules/slideout/slideout-helper.js +1 -8
  61. wptouch.php +2 -2
admin/css/wptouch-admin-4.css CHANGED
@@ -1,3 +1,5 @@
 
 
1
  /* @group Clearfix */
2
 
3
  .wptouch-clearfix:after {
@@ -167,7 +169,6 @@ a#preview-theme {
167
  float: right;
168
  }
169
 
170
-
171
  #wptouch-settings-area .wptouch-section .new,
172
  #wptouch-settings-area .wptouch-section .advanced,
173
  #wptouch-settings-area .wptouch-section .pro {
@@ -200,7 +201,6 @@ a#preview-theme {
200
  font-size: 11px;
201
  text-transform: uppercase;
202
  padding: 1px 4px;
203
- display: none;
204
  }
205
 
206
  #admin-spinner {
@@ -471,6 +471,13 @@ a#preview-theme {
471
  width: 20px;
472
  }
473
 
 
 
 
 
 
 
 
474
  /* @end */
475
 
476
  /* @end */
1
+ /* @override http://wptp3.local.com/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4.css?ver=a16b0b39889181577ded41b49cd80b1b */
2
+
3
  /* @group Clearfix */
4
 
5
  .wptouch-clearfix:after {
169
  float: right;
170
  }
171
 
 
172
  #wptouch-settings-area .wptouch-section .new,
173
  #wptouch-settings-area .wptouch-section .advanced,
174
  #wptouch-settings-area .wptouch-section .pro {
201
  font-size: 11px;
202
  text-transform: uppercase;
203
  padding: 1px 4px;
 
204
  }
205
 
206
  #admin-spinner {
471
  width: 20px;
472
  }
473
 
474
+ #wptouch-admin-menu ul li a.wptouch-addon-power-pack:before {
475
+ content: '\e824';
476
+ display: inline-block;
477
+ text-align: center;
478
+ width: 20px;
479
+ }
480
+
481
  /* @end */
482
 
483
  /* @end */
admin/customizer/wptouch-customizer.js CHANGED
@@ -21,9 +21,9 @@ function wptouchCustomizerDeviceToggles() {
21
  function wptouchCustomizerWindowMods(){
22
 
23
  // New free ad
24
- if ( WPtouchCustomizer.wptouch_is_pro == 'no' ) {
25
- html += '<div id="wptouch-pro-notice">Upgrade to WPtouch Pro and save $10 with coupon code <span>TOUCHUP10</span><a class="button button-primary" href="http://www.wptouch.com/go-pro/?utm_source=free_admin&utm_medium=website&utm_term=customizer&utm_campaign=customizer" target="_blank">Go Pro Today</a></div>';
26
- }
27
 
28
  jQuery( '.wp-full-overlay' ).append( html);
29
 
@@ -99,7 +99,7 @@ function wptouchCustomizerFoundationSettings(){
99
  });
100
 
101
  // Featured Slider on/off
102
- var featuredCheckbox = jQuery( '[id$=featured_enabled]' );
103
  featuredCheckbox.on( 'change wptouch.customizerReady', 'input', function(){
104
  if ( jQuery( this ).is( ':checked' ) ) {
105
  featuredCheckbox.nextAll( 'li' ).css( 'visibility', '' );
21
  function wptouchCustomizerWindowMods(){
22
 
23
  // New free ad
24
+ // if ( WPtouchCustomizer.wptouch_is_pro == 'no' ) {
25
+ // html += '<div id="wptouch-pro-notice">Upgrade to WPtouch Pro and save $10 with coupon code <span>TOUCHUP10</span><a class="button button-primary" href="http://www.wptouch.com/go-pro/?utm_source=free_admin&utm_medium=website&utm_term=customizer&utm_campaign=customizer" target="_blank">Go Pro Today</a></div>';
26
+ // }
27
 
28
  jQuery( '.wp-full-overlay' ).append( html);
29
 
99
  });
100
 
101
  // Featured Slider on/off
102
+ var featuredCheckbox = jQuery( '[id$=wptouch_featured_enabled]' );
103
  featuredCheckbox.on( 'change wptouch.customizerReady', 'input', function(){
104
  if ( jQuery( this ).is( ':checked' ) ) {
105
  featuredCheckbox.nextAll( 'li' ).css( 'visibility', '' );
admin/customizer/wptouch-customizer.php CHANGED
@@ -2,6 +2,9 @@
2
  global $wptouch_pro;
3
  $current_theme = $wptouch_pro->get_current_theme_info();
4
 
 
 
 
5
  if ( $current_theme && wptouch_admin_use_customizer() ) {
6
 
7
  add_action( 'admin_init', 'wptouch_initialize_customizer' );
@@ -27,6 +30,8 @@ if ( $current_theme && wptouch_admin_use_customizer() ) {
27
  // If we're in the customizer and we're editing the mobile theme...
28
  if ( wptouch_is_customizing_mobile() ) {
29
 
 
 
30
  add_filter( 'customize_previewable_devices', '__return_empty_array' );
31
 
32
  add_filter( 'validate_current_theme', 'wptouch_return_false' );
@@ -162,16 +167,17 @@ $merging_setting = false;
162
  function wptouch_customizer_merge_setting( $domain, $setting, $value ) {
163
  require_once( WPTOUCH_DIR . '/core/admin-load.php' );
164
 
165
- global $merging_setting;
166
  global $wptouch_pro;
167
  global $options_domains;
168
 
 
 
169
  if ( !$merging_setting ) {
170
  $merging_setting = true;
171
  $customizable_settings = wptouch_get_customizable_settings();
172
  $current_theme = $wptouch_pro->get_current_theme_info();
173
 
174
- wptouch_customizer_begin_theme_override();
175
  if ( isset( $customizable_settings[ $domain ] ) || $domain == $current_theme->base ) {
176
  if ( in_array( $domain, $options_domains ) ) {
177
  $option_array = get_option( 'wptouch_customizer_options_' . $domain );
@@ -185,10 +191,11 @@ function wptouch_customizer_merge_setting( $domain, $setting, $value ) {
185
  set_theme_mod( 'wptouch_' . $setting, $value );
186
  }
187
  }
188
- }
189
- wptouch_customizer_end_theme_override();
190
  $merging_setting = false;
191
  }
 
 
192
  }
193
 
194
  function wptouch_customizer_load_theme_js() {
@@ -450,7 +457,11 @@ function wptouch_customizer_setup( $wp_customize ) {
450
  $setting_use_name = 'wptouch_customizer_options_' . $setting->domain . '[' . str_replace( '[', '-----', str_replace( ']', '_____', $setting->name ) ) . ']';
451
  $wp_customize->add_setting( $setting_use_name, array_merge( array( 'type' => 'option' ), $setting_args ) );
452
  } else {
 
453
  $setting_use_name = 'wptouch_' . $setting->name;
 
 
 
454
  $wp_customize->add_setting( $setting_use_name, array_merge( array( 'type' => 'theme_mod' ), $setting_args ) );
455
  }
456
 
@@ -772,11 +783,23 @@ function wptouch_get_current_theme_name( $value=false ) {
772
  }
773
 
774
  function wptouch_customizer_begin_theme_override() {
775
- add_filter( 'pre_option_stylesheet', 'wptouch_get_current_theme_name', 50 );
 
 
 
 
 
 
776
  }
777
 
778
  function wptouch_customizer_end_theme_override() {
779
- remove_filter( 'pre_option_stylesheet', 'wptouch_get_current_theme_name', 50 );
 
 
 
 
 
 
780
  }
781
 
782
  function wptouch_customizer_port_image( $customizer_setting, $source_setting, $settings_domain = 'foundation' ) {
2
  global $wptouch_pro;
3
  $current_theme = $wptouch_pro->get_current_theme_info();
4
 
5
+ global $wptouch_queued_items;
6
+ $wptouch_queued_items = 0;
7
+
8
  if ( $current_theme && wptouch_admin_use_customizer() ) {
9
 
10
  add_action( 'admin_init', 'wptouch_initialize_customizer' );
30
  // If we're in the customizer and we're editing the mobile theme...
31
  if ( wptouch_is_customizing_mobile() ) {
32
 
33
+ wptouch_customizer_begin_theme_override();
34
+
35
  add_filter( 'customize_previewable_devices', '__return_empty_array' );
36
 
37
  add_filter( 'validate_current_theme', 'wptouch_return_false' );
167
  function wptouch_customizer_merge_setting( $domain, $setting, $value ) {
168
  require_once( WPTOUCH_DIR . '/core/admin-load.php' );
169
 
170
+ global $merging_setting;
171
  global $wptouch_pro;
172
  global $options_domains;
173
 
174
+ wptouch_customizer_begin_theme_override();
175
+
176
  if ( !$merging_setting ) {
177
  $merging_setting = true;
178
  $customizable_settings = wptouch_get_customizable_settings();
179
  $current_theme = $wptouch_pro->get_current_theme_info();
180
 
 
181
  if ( isset( $customizable_settings[ $domain ] ) || $domain == $current_theme->base ) {
182
  if ( in_array( $domain, $options_domains ) ) {
183
  $option_array = get_option( 'wptouch_customizer_options_' . $domain );
191
  set_theme_mod( 'wptouch_' . $setting, $value );
192
  }
193
  }
194
+ }
 
195
  $merging_setting = false;
196
  }
197
+
198
+ wptouch_customizer_end_theme_override();
199
  }
200
 
201
  function wptouch_customizer_load_theme_js() {
457
  $setting_use_name = 'wptouch_customizer_options_' . $setting->domain . '[' . str_replace( '[', '-----', str_replace( ']', '_____', $setting->name ) ) . ']';
458
  $wp_customize->add_setting( $setting_use_name, array_merge( array( 'type' => 'option' ), $setting_args ) );
459
  } else {
460
+
461
  $setting_use_name = 'wptouch_' . $setting->name;
462
+
463
+
464
+ $value = get_theme_mod( $setting_use_name );
465
  $wp_customize->add_setting( $setting_use_name, array_merge( array( 'type' => 'theme_mod' ), $setting_args ) );
466
  }
467
 
783
  }
784
 
785
  function wptouch_customizer_begin_theme_override() {
786
+ global $wptouch_queued_items;
787
+
788
+ if ( $wptouch_queued_items == 0 ) {
789
+ add_filter( 'pre_option_stylesheet', 'wptouch_get_current_theme_name', 50 );
790
+ }
791
+
792
+ $wptouch_queued_items++;
793
  }
794
 
795
  function wptouch_customizer_end_theme_override() {
796
+ global $wptouch_queued_items;
797
+
798
+ $wptouch_queued_items--;
799
+
800
+ if ( $wptouch_queued_items == 0 ) {
801
+ remove_filter( 'pre_option_stylesheet', 'wptouch_get_current_theme_name', 50 );
802
+ }
803
  }
804
 
805
  function wptouch_customizer_port_image( $customizer_setting, $source_setting, $settings_domain = 'foundation' ) {
admin/fontello/LICENSE.txt CHANGED
@@ -30,7 +30,7 @@ Font license info
30
 
31
  ## Font Awesome
32
 
33
- Copyright (C) 2012 by Dave Gandy
34
 
35
  Author: Dave Gandy
36
  License: SIL ()
30
 
31
  ## Font Awesome
32
 
33
+ Copyright (C) 2016 by Dave Gandy
34
 
35
  Author: Dave Gandy
36
  License: SIL ()
admin/fontello/config.json CHANGED
@@ -357,6 +357,20 @@
357
  "search": [
358
  "make-child"
359
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  }
361
  ]
362
  }
357
  "search": [
358
  "make-child"
359
  ]
360
+ },
361
+ {
362
+ "uid": "37e06eefe892f80708f85a33e4b4192d",
363
+ "css": "circular-speedometer",
364
+ "code": 59428,
365
+ "src": "custom_icons",
366
+ "selected": true,
367
+ "svg": {
368
+ "path": "M500 0C223.9 0 0 223.9 0 500S223.9 1000 500 1000 1000 776.1 1000 500 776.1 0 500 0ZM921.5 500C921.5 556.9 910.4 612.1 888.4 664.1 867.1 714.3 836.8 759.4 798.1 798.1 759.3 836.8 714.3 867.1 664.1 888.4 612.1 910.4 556.9 921.5 500 921.5S387.9 910.4 335.9 888.4C285.7 867.1 240.6 836.8 201.9 798.1S132.9 714.3 111.6 664.1C89.6 612.1 78.5 556.9 78.5 500S89.6 387.9 111.6 335.9C132.9 285.7 163.2 240.6 201.9 201.9 240.6 163.2 285.7 132.9 335.9 111.6 387.9 89.6 443.1 78.5 500 78.5S612.1 89.6 664.1 111.6C714.3 132.9 759.4 163.2 798.1 201.9 836.8 240.6 867.1 285.7 888.4 335.9 910.4 387.9 921.5 443.1 921.5 500ZM500 125.9C400.1 125.9 306.1 164.8 235.4 235.4 164.8 306.1 125.9 400.1 125.9 500S164.8 693.9 235.4 764.6C306.1 835.2 400.1 874.1 500 874.1S693.9 835.2 764.6 764.6C835.2 693.9 874.1 599.9 874.1 500S835.2 306.1 764.6 235.4C693.9 164.8 599.9 125.9 500 125.9ZM617.5 207L609.9 239.9 601.8 275 549.5 502.2 545.4 520.1C544.6 523.2 543.5 526.5 542 529.6 534.3 545.2 518.7 554.3 502.3 554.3 495.8 554.3 489.2 552.9 483 549.8 464.8 540.9 455.5 521.2 459 502.2 459.7 498.3 460.9 494.5 462.7 490.8L575.5 260.2 590 230.6 603.9 202.2C604.1 201.7 604.3 201.3 604.6 200.9 606.1 198.9 608.1 198.1 610.2 198.1 614.2 198.1 618.2 201.3 617.6 206.1 617.6 206.4 617.6 206.7 617.5 207ZM180.9 491.8C180.9 490.1 180.8 488.2 180.8 486.1 180.8 484 180.9 481.7 180.9 479.3 181 476.8 181 474.1 181.1 471.3 181.3 468.4 181.5 465.4 181.8 462.3 181.9 460.7 182 459 182.1 457.3 182.3 455.7 182.5 454 182.7 452.2 183.1 448.7 183.5 445 184.1 441.2 184.7 437.4 185.4 433.4 186.1 429.3 186.4 427.2 187 425.2 187.4 423.1 187.9 420.9 188.4 418.8 188.9 416.6 193.1 399.2 199.4 379.7 208.8 359.5 209.3 358.2 210 356.9 210.6 355.7 211.2 354.4 211.9 353.1 212.5 351.9 213.8 349.3 215.1 346.7 216.4 344.1 217.9 341.6 219.3 339 220.8 336.5 221.5 335.2 222.2 333.9 223 332.6 223.7 331.3 224.6 330 225.4 328.7 227 326.2 228.6 323.6 230.3 321 231.1 319.7 232 318.4 232.9 317.1 233.8 315.9 234.6 314.6 235.5 313.3 236.4 312 237.4 310.7 238.3 309.4L239.6 307.5 241.1 305.6C243 303.1 245 300.5 247 298L248.5 296C249 295.4 249.5 294.8 250.1 294.2 251.1 292.9 252.2 291.7 253.3 290.4 254.3 289.2 255.4 287.9 256.5 286.7L258.1 284.8C258.6 284.2 259.2 283.6 259.8 283 262.1 280.5 264.4 278.1 266.7 275.6L268.4 273.8 270.3 272C271.5 270.8 272.7 269.6 274 268.4 278.8 263.6 284.1 259.1 289.4 254.5 292 252.2 294.8 250.1 297.6 247.8 299 246.7 300.4 245.6 301.8 244.5 303.2 243.5 304.7 242.4 306.1 241.4 329.2 224.4 355.8 210.1 384.6 199.7 388.2 198.4 391.8 197.2 395.5 195.9 399.1 194.8 402.8 193.8 406.6 192.7L412.1 191.1 417.8 189.8 423.5 188.5C425.4 188 427.3 187.5 429.2 187.2 433 186.5 436.9 185.8 440.7 185.1 441.7 185 442.7 184.8 443.6 184.6L446.5 184.3 452.4 183.5 458.2 182.8C460.1 182.5 462.1 182.4 464.1 182.2L475.8 181.3C477.3 181.3 476.4 181.3 476.8 181.3L477.2 181.3 477.9 181.3 479.2 181.2 481.9 181.2 487.4 181 490.1 180.9 491.4 180.9C491.9 180.8 492.4 180.9 492.9 180.9L499.1 181 505.3 181.2 508.4 181.3C509.4 181.3 510.4 181.4 511.3 181.5 515.3 181.7 519.2 182 523.2 182.3 525.2 182.5 527.1 182.8 529.1 183L535 183.7 540.9 184.5 546.7 185.5C550.6 186.2 554.5 186.8 558.4 187.6 562.2 188.5 566.1 189.4 569.9 190.3 573 191 576.1 191.9 579.2 192.7L565.1 221.4 551.3 249.8C548.5 248.8 545.7 247.9 542.9 246.9 539.8 245.8 536.7 245 533.7 244.1L529 242.7 524.3 241.5 519.6 240.4C518 240 516.4 239.6 514.8 239.3 511.6 238.7 508.4 238.1 505.2 237.4 504.4 237.3 503.6 237.1 502.8 237L500.5 236.7 495.9 236 491.2 235.3C490.8 235.3 490.5 235.2 490 235.2L488.7 235.1 486 234.8 480.6 234.4 477.9 234.2 476.5 234.1 475.8 234 475.5 234C475.7 234 474.6 233.9 475.8 234L465.9 233.6C464.3 233.6 462.6 233.4 461 233.5L456 233.5 451 233.6 448.5 233.6C447.7 233.6 446.9 233.7 446.1 233.8 442.7 234 439.4 234.2 436.1 234.4 434.5 234.5 432.8 234.7 431.2 234.9L426.2 235.5 421.3 236 416.4 236.9C413.1 237.4 409.9 237.9 406.6 238.5 403.4 239.3 400.1 240 396.9 240.7 371.2 246.8 346.6 256.5 324.3 269.3 322.9 270.1 321.5 270.8 320.1 271.6 318.8 272.5 317.4 273.3 316.1 274.2 313.4 275.9 310.7 277.5 308 279.2 302.9 282.9 297.6 286.3 292.8 290.2 291.5 291.1 290.3 292.1 289.1 293L287.2 294.4 285.5 295.9C283.1 297.9 280.8 299.9 278.4 301.9 277.9 302.4 277.3 302.9 276.7 303.4L275 304.9C273.9 305.9 272.8 307 271.7 308 270.6 309 269.5 310.1 268.4 311.1 267.9 311.6 267.3 312.1 266.8 312.6L265.2 314.2C263.1 316.4 261 318.5 259 320.6L257.4 322.2 256 323.8C255 324.9 254.1 326 253.1 327.1 252.1 328.2 251.2 329.3 250.2 330.4 249.2 331.4 248.3 332.5 247.4 333.6 245.6 335.9 243.8 338.1 242 340.3 241.2 341.4 240.2 342.5 239.4 343.6 238.6 344.7 237.8 345.9 237 347 235.3 349.3 233.7 351.5 232.1 353.7 230.5 356 229.1 358.2 227.6 360.5 226.9 361.6 226.1 362.7 225.4 363.8 224.7 365 223.9 366.1 223.3 367.2 212.3 385.2 204.1 403.1 198.2 419.4 197.5 421.4 196.8 423.4 196.1 425.4 195.4 427.4 194.7 429.3 194.2 431.3 193 435.2 191.9 439 190.9 442.6 189.9 446.2 189.1 449.8 188.3 453.2 187.9 454.8 187.5 456.5 187.1 458.1 186.8 459.7 186.5 461.3 186.2 462.9 185.7 466 185.1 468.9 184.6 471.6 184.2 474.4 183.9 477 183.5 479.4 183.2 481.9 182.9 484.1 182.6 486.2 182.4 488.2 182.3 490.1 182.1 491.8 181.6 498.6 181.3 502.2 181.3 502.2 181.3 502.2 181.2 498.6 180.9 491.8ZM772.3 338.4C773.2 339.7 774 341 774.8 342.4 787.6 363.8 797.1 385 803.9 404.3 804.7 406.8 805.5 409.2 806.3 411.5 807.1 413.9 808 416.2 808.6 418.5 809.9 423.1 811.1 427.6 812.3 431.9 813.4 436.2 814.3 440.4 815.3 444.4 815.7 446.4 816.2 448.3 816.6 450.2 816.9 452.1 817.3 454 817.6 455.8 818.2 459.5 818.8 463 819.4 466.2 819.9 469.5 820.2 472.6 820.6 475.4 821 478.3 821.3 480.9 821.6 483.4 821.9 485.8 822 488 822.1 490 822.7 498 823 502.2 823 502.2H717.8C717.8 502.2 717.9 499.2 718.1 493.6 718.2 492.2 718.3 490.6 718.3 488.9 718.3 487.2 718.3 485.3 718.2 483.3 718.2 481.2 718.3 479 718.2 476.7 718 474.4 717.9 471.9 717.7 469.3 717.7 468 717.6 466.6 717.5 465.2 717.4 463.8 717.2 462.4 717.1 461 716.7 458.1 716.5 455.1 716 451.9 715.5 448.8 715 445.5 714.5 442.1 714.3 440.4 713.8 438.7 713.5 437 713.1 435.2 712.7 433.4 712.3 431.6 709.1 417.2 704.1 401.1 696.5 384.3 696.1 383.2 695.5 382.2 695 381.1 694.5 380.1 694 379 693.5 378 692.4 375.9 691.4 373.7 690.3 371.6 689.1 369.5 688 367.3 686.8 365.2 686.2 364.1 685.6 363 685 361.9 684.4 360.8 683.7 359.8 683.1 358.7 681.7 356.6 680.4 354.4 679.1 352.3 678.4 351.1 677.7 350.1 677 349 676.2 348 675.5 346.9 674.8 345.8 674 344.8 673.3 343.7 672.6 342.6L671.4 341 670.2 339.4C668.6 337.3 667 335.2 665.4 333L664.2 331.4C663.8 330.9 663.3 330.4 662.9 329.8 662 328.8 661.2 327.8 660.3 326.7 659.4 325.7 658.5 324.6 657.7 323.6L656.3 322C655.9 321.4 655.4 321 654.9 320.4 653.1 318.4 651.2 316.3 649.3 314.3L647.8 312.7 646.3 311.2C645.3 310.3 644.3 309.3 643.3 308.3 639.3 304.2 634.9 300.4 630.6 296.5 628.8 294.9 626.9 293.4 624.9 291.8L633.8 253.5 642.1 217.5C646.8 219.9 651.5 222.5 656.1 225.2 657.7 226.1 659.4 227.1 661 228 662.6 229 664.2 230.1 665.8 231.1 669 233.1 672.2 235.1 675.3 237.2 681.4 241.5 687.6 245.7 693.3 250.4 694.8 251.5 696.2 252.7 697.7 253.8L699.8 255.5 701.9 257.3C704.7 259.7 707.4 262 710.2 264.4 710.9 265 711.5 265.6 712.2 266.2L714.2 268C715.5 269.3 716.8 270.5 718.1 271.7 719.4 273 720.7 274.2 722 275.4 722.6 276 723.3 276.6 723.9 277.3L725.7 279.2C728.2 281.7 730.6 284.3 733 286.8L734.8 288.7 736.5 290.6C737.7 291.9 738.8 293.2 739.9 294.5 741.1 295.8 742.2 297.1 743.3 298.4 744.4 299.7 745.6 301 746.6 302.3 748.7 305 750.8 307.7 752.9 310.3 753.9 311.6 755 312.9 755.9 314.2 756.9 315.6 757.9 316.9 758.8 318.3 760.7 321 762.6 323.6 764.5 326.3 766.3 329 768 331.7 769.8 334.3 770.6 335.7 771.5 337 772.3 338.4Z",
369
+ "width": 1000
370
+ },
371
+ "search": [
372
+ "circular-speedometer"
373
+ ]
374
  }
375
  ]
376
  }
admin/fontello/css/fontello-codes.css CHANGED
@@ -34,4 +34,5 @@
34
  .icon-heart-broken:before { content: '\e820'; } /* '' */
35
  .icon-eye-off:before { content: '\e821'; } /* '' */
36
  .icon-flash:before { content: '\e822'; } /* '' */
37
- .icon-make-child:before { content: '\e823'; } /* '' */
 
34
  .icon-heart-broken:before { content: '\e820'; } /* '' */
35
  .icon-eye-off:before { content: '\e821'; } /* '' */
36
  .icon-flash:before { content: '\e822'; } /* '' */
37
+ .icon-make-child:before { content: '\e823'; } /* '' */
38
+ .icon-circular-speedometer:before { content: '\e824'; } /* '' */
admin/fontello/css/fontello-embedded.css CHANGED
@@ -1,15 +1,15 @@
1
  @font-face {
2
  font-family: 'fontello';
3
- src: url('../font/fontello.eot?21591609');
4
- src: url('../font/fontello.eot?21591609#iefix') format('embedded-opentype'),
5
- url('../font/fontello.svg?21591609#fontello') format('svg');
6
  font-weight: normal;
7
  font-style: normal;
8
  }
9
  @font-face {
10
  font-family: 'fontello';
11
- src: url('data:application/octet-stream;base64,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') format('woff'),
12
- url('data:application/octet-stream;base64,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RyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=') format('truetype');
13
  }
14
  /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
15
  /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
17
  @media screen and (-webkit-min-device-pixel-ratio:0) {
18
  @font-face {
19
  font-family: 'fontello';
20
- src: url('../font/fontello.svg?21591609#fontello') format('svg');
21
  }
22
  }
23
  */
@@ -87,4 +87,5 @@
87
  .icon-heart-broken:before { content: '\e820'; } /* '' */
88
  .icon-eye-off:before { content: '\e821'; } /* '' */
89
  .icon-flash:before { content: '\e822'; } /* '' */
90
- .icon-make-child:before { content: '\e823'; } /* '' */
 
1
  @font-face {
2
  font-family: 'fontello';
3
+ src: url('../font/fontello.eot?41042990');
4
+ src: url('../font/fontello.eot?41042990#iefix') format('embedded-opentype'),
5
+ url('../font/fontello.svg?41042990#fontello') format('svg');
6
  font-weight: normal;
7
  font-style: normal;
8
  }
9
  @font-face {
10
  font-family: 'fontello';
11
+ src: url('data:application/octet-stream;base64,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') format('woff'),
12
+ url('data:application/octet-stream;base64,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') format('truetype');
13
  }
14
  /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
15
  /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
17
  @media screen and (-webkit-min-device-pixel-ratio:0) {
18
  @font-face {
19
  font-family: 'fontello';
20
+ src: url('../font/fontello.svg?41042990#fontello') format('svg');
21
  }
22
  }
23
  */
87
  .icon-heart-broken:before { content: '\e820'; } /* '' */
88
  .icon-eye-off:before { content: '\e821'; } /* '' */
89
  .icon-flash:before { content: '\e822'; } /* '' */
90
+ .icon-make-child:before { content: '\e823'; } /* '' */
91
+ .icon-circular-speedometer:before { content: '\e824'; } /* '' */
admin/fontello/css/fontello-ie7-codes.css CHANGED
@@ -34,4 +34,5 @@
34
  .icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe820;&nbsp;'); }
35
  .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe821;&nbsp;'); }
36
  .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe822;&nbsp;'); }
37
- .icon-make-child { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe823;&nbsp;'); }
 
34
  .icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe820;&nbsp;'); }
35
  .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe821;&nbsp;'); }
36
  .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe822;&nbsp;'); }
37
+ .icon-make-child { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe823;&nbsp;'); }
38
+ .icon-circular-speedometer { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe824;&nbsp;'); }
admin/fontello/css/fontello-ie7.css CHANGED
@@ -45,4 +45,5 @@
45
  .icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe820;&nbsp;'); }
46
  .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe821;&nbsp;'); }
47
  .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe822;&nbsp;'); }
48
- .icon-make-child { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe823;&nbsp;'); }
 
45
  .icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe820;&nbsp;'); }
46
  .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe821;&nbsp;'); }
47
  .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe822;&nbsp;'); }
48
+ .icon-make-child { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe823;&nbsp;'); }
49
+ .icon-circular-speedometer { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe824;&nbsp;'); }
admin/fontello/css/fontello.css CHANGED
@@ -1,11 +1,11 @@
1
  @font-face {
2
  font-family: 'fontello';
3
- src: url('../font/fontello.eot?44554205');
4
- src: url('../font/fontello.eot?44554205#iefix') format('embedded-opentype'),
5
- url('../font/fontello.woff2?44554205') format('woff2'),
6
- url('../font/fontello.woff?44554205') format('woff'),
7
- url('../font/fontello.ttf?44554205') format('truetype'),
8
- url('../font/fontello.svg?44554205#fontello') format('svg');
9
  font-weight: normal;
10
  font-style: normal;
11
  }
@@ -15,7 +15,7 @@
15
  @media screen and (-webkit-min-device-pixel-ratio:0) {
16
  @font-face {
17
  font-family: 'fontello';
18
- src: url('../font/fontello.svg?44554205#fontello') format('svg');
19
  }
20
  }
21
  */
@@ -90,4 +90,5 @@
90
  .icon-heart-broken:before { content: '\e820'; } /* '' */
91
  .icon-eye-off:before { content: '\e821'; } /* '' */
92
  .icon-flash:before { content: '\e822'; } /* '' */
93
- .icon-make-child:before { content: '\e823'; } /* '' */
 
1
  @font-face {
2
  font-family: 'fontello';
3
+ src: url('../font/fontello.eot?5882372');
4
+ src: url('../font/fontello.eot?5882372#iefix') format('embedded-opentype'),
5
+ url('../font/fontello.woff2?5882372') format('woff2'),
6
+ url('../font/fontello.woff?5882372') format('woff'),
7
+ url('../font/fontello.ttf?5882372') format('truetype'),
8
+ url('../font/fontello.svg?5882372#fontello') format('svg');
9
  font-weight: normal;
10
  font-style: normal;
11
  }
15
  @media screen and (-webkit-min-device-pixel-ratio:0) {
16
  @font-face {
17
  font-family: 'fontello';
18
+ src: url('../font/fontello.svg?5882372#fontello') format('svg');
19
  }
20
  }
21
  */
90
  .icon-heart-broken:before { content: '\e820'; } /* '' */
91
  .icon-eye-off:before { content: '\e821'; } /* '' */
92
  .icon-flash:before { content: '\e822'; } /* '' */
93
+ .icon-make-child:before { content: '\e823'; } /* '' */
94
+ .icon-circular-speedometer:before { content: '\e824'; } /* '' */
admin/fontello/demo.html CHANGED
@@ -229,11 +229,11 @@ body {
229
  }
230
  @font-face {
231
  font-family: 'fontello';
232
- src: url('./font/fontello.eot?38093625');
233
- src: url('./font/fontello.eot?38093625#iefix') format('embedded-opentype'),
234
- url('./font/fontello.woff?38093625') format('woff'),
235
- url('./font/fontello.ttf?38093625') format('truetype'),
236
- url('./font/fontello.svg?38093625#fontello') format('svg');
237
  font-weight: normal;
238
  font-style: normal;
239
  }
@@ -354,6 +354,9 @@ body {
354
  <div title="Code: 0xe822" class="the-icons span3"><i class="demo-icon icon-flash">&#xe822;</i> <span class="i-name">icon-flash</span><span class="i-code">0xe822</span></div>
355
  <div title="Code: 0xe823" class="the-icons span3"><i class="demo-icon icon-make-child">&#xe823;</i> <span class="i-name">icon-make-child</span><span class="i-code">0xe823</span></div>
356
  </div>
 
 
 
357
  </div>
358
  <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
359
  </body>
229
  }
230
  @font-face {
231
  font-family: 'fontello';
232
+ src: url('./font/fontello.eot?41582587');
233
+ src: url('./font/fontello.eot?41582587#iefix') format('embedded-opentype'),
234
+ url('./font/fontello.woff?41582587') format('woff'),
235
+ url('./font/fontello.ttf?41582587') format('truetype'),
236
+ url('./font/fontello.svg?41582587#fontello') format('svg');
237
  font-weight: normal;
238
  font-style: normal;
239
  }
354
  <div title="Code: 0xe822" class="the-icons span3"><i class="demo-icon icon-flash">&#xe822;</i> <span class="i-name">icon-flash</span><span class="i-code">0xe822</span></div>
355
  <div title="Code: 0xe823" class="the-icons span3"><i class="demo-icon icon-make-child">&#xe823;</i> <span class="i-name">icon-make-child</span><span class="i-code">0xe823</span></div>
356
  </div>
357
+ <div class="row">
358
+ <div title="Code: 0xe824" class="the-icons span3"><i class="demo-icon icon-circular-speedometer">&#xe824;</i> <span class="i-name">icon-circular-speedometer</span><span class="i-code">0xe824</span></div>
359
+ </div>
360
  </div>
361
  <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
362
  </body>
admin/fontello/font/fontello.eot CHANGED
Binary file
admin/fontello/font/fontello.svg CHANGED
@@ -77,6 +77,8 @@
77
  <glyph glyph-name="flash" unicode="&#xe822;" d="M598 349q23-12 26-39t-16-45l-391-370q-14-14-35-14-28 0-43 24t-6 49l113 270-220 128q-22 12-25 38t15 45l391 370q11 14 35 14 21 0 37-16t15-36q0-13-5-23l-111-267z" horiz-adv-x="624" />
78
 
79
  <glyph glyph-name="make-child" unicode="&#xe823;" d="M987 596c-25 18-60 12-81-17-18-26-12-67 0-84 0 0 0 0-1-1-2-1-14-7-14-7-3-1-4-4-1-6l4-3a2 2 0 0 0 1-2c-9-13-82-117-114-164-7-8-5-1-5 4 7 38 16 83 18 94a2 2 0 0 0 2 1l5 0c3-1 5 1 3 4 0 0-3 13-4 15-1 1 0 1 0 1 20 4 54 28 60 59 6 36-14 64-45 70s-60-14-66-50c-6-31 17-65 35-75 0 0 0-1 0-2-2-2-10-13-10-13-3-2-2-4 1-5l6-1a2 2 0 0 0 1-2c-2-14-16-89-23-125 0-2-6-5-9-10-3-4-33-51-75-58h-102c-31 5-57 29-65 48-3 8-6 18-11 27l-77 173c-5 11-10 26-32 26h-165c-22 0-33-14-40-27l-78-171c-9-19-20-42-1-51s36-1 45 18l40 68s2 4 1 0c-5-28-47-165-47-165-3-17 8-32 26-32h42c3 0 3-2 3-2l8-221c0-28 9-43 31-43s31 15 31 43l8 222a2 2 0 0 0 2 1c2 0 8 0 10 0a2 2 0 0 0 1-1l9-222c0-28 9-43 31-43s31 15 31 43l8 221a3 3 0 0 0 3 2h45c18 0 30 15 26 32 0 0-41 143-45 168-1 6 43-72 43-72 7-15 22-13 29-23 14-22 31-44 48-54 28-17 29-10 31-34l0-17-9-69a9 9 0 0 1 4-9 3 3 0 0 0 3-4l-5-156c0-2 0-12 1-13a22 22 0 0 1 21-15 23 23 0 0 1 21 14c-1 0 21 152 24 152 4 0 25-152 25-152a23 23 0 0 1 20-14 22 22 0 0 1 21 15c0 1 1 11 0 13l-4 157a3 3 0 0 0 3 3 9 9 0 0 1 4 9l-9 64 0 22c2 24 3 17 31 34 28 17 58 74 59 81 1 9-3 13 0 17 20 29 121 173 131 187a2 2 0 0 0 2 0l4-3c3-2 5 0 5 3 0 0 2 13 2 15 0 2 1 2 1 2 20-6 61 2 79 28 21 29 15 64-11 82z m-688 124a98 98 0 1 0-99-98 98 98 0 0 0 99 98z m325-482a55 55 0 1 1-55 54 55 55 0 0 1 55-54z" horiz-adv-x="1000" />
 
 
80
  </font>
81
  </defs>
82
  </svg>
77
  <glyph glyph-name="flash" unicode="&#xe822;" d="M598 349q23-12 26-39t-16-45l-391-370q-14-14-35-14-28 0-43 24t-6 49l113 270-220 128q-22 12-25 38t15 45l391 370q11 14 35 14 21 0 37-16t15-36q0-13-5-23l-111-267z" horiz-adv-x="624" />
78
 
79
  <glyph glyph-name="make-child" unicode="&#xe823;" d="M987 596c-25 18-60 12-81-17-18-26-12-67 0-84 0 0 0 0-1-1-2-1-14-7-14-7-3-1-4-4-1-6l4-3a2 2 0 0 0 1-2c-9-13-82-117-114-164-7-8-5-1-5 4 7 38 16 83 18 94a2 2 0 0 0 2 1l5 0c3-1 5 1 3 4 0 0-3 13-4 15-1 1 0 1 0 1 20 4 54 28 60 59 6 36-14 64-45 70s-60-14-66-50c-6-31 17-65 35-75 0 0 0-1 0-2-2-2-10-13-10-13-3-2-2-4 1-5l6-1a2 2 0 0 0 1-2c-2-14-16-89-23-125 0-2-6-5-9-10-3-4-33-51-75-58h-102c-31 5-57 29-65 48-3 8-6 18-11 27l-77 173c-5 11-10 26-32 26h-165c-22 0-33-14-40-27l-78-171c-9-19-20-42-1-51s36-1 45 18l40 68s2 4 1 0c-5-28-47-165-47-165-3-17 8-32 26-32h42c3 0 3-2 3-2l8-221c0-28 9-43 31-43s31 15 31 43l8 222a2 2 0 0 0 2 1c2 0 8 0 10 0a2 2 0 0 0 1-1l9-222c0-28 9-43 31-43s31 15 31 43l8 221a3 3 0 0 0 3 2h45c18 0 30 15 26 32 0 0-41 143-45 168-1 6 43-72 43-72 7-15 22-13 29-23 14-22 31-44 48-54 28-17 29-10 31-34l0-17-9-69a9 9 0 0 1 4-9 3 3 0 0 0 3-4l-5-156c0-2 0-12 1-13a22 22 0 0 1 21-15 23 23 0 0 1 21 14c-1 0 21 152 24 152 4 0 25-152 25-152a23 23 0 0 1 20-14 22 22 0 0 1 21 15c0 1 1 11 0 13l-4 157a3 3 0 0 0 3 3 9 9 0 0 1 4 9l-9 64 0 22c2 24 3 17 31 34 28 17 58 74 59 81 1 9-3 13 0 17 20 29 121 173 131 187a2 2 0 0 0 2 0l4-3c3-2 5 0 5 3 0 0 2 13 2 15 0 2 1 2 1 2 20-6 61 2 79 28 21 29 15 64-11 82z m-688 124a98 98 0 1 0-99-98 98 98 0 0 0 99 98z m325-482a55 55 0 1 1-55 54 55 55 0 0 1 55-54z" horiz-adv-x="1000" />
80
+
81
+ <glyph glyph-name="circular-speedometer" unicode="&#xe824;" d="M500 850c-276 0-500-224-500-500s224-500 500-500 500 224 500 500-224 500-500 500z m422-500c0-57-12-112-34-164-21-50-51-95-90-134-39-39-84-69-134-90-52-22-107-34-164-34s-112 12-164 34c-50 21-95 51-134 90s-69 84-90 134c-22 52-33 107-33 164s11 112 33 164c21 50 51 95 90 134 39 39 84 69 134 90 52 22 107 34 164 34s112-12 164-34c50-21 95-51 134-90 39-39 69-84 90-134 22-52 34-107 34-164z m-422 374c-100 0-194-39-265-109-70-71-109-165-109-265s39-194 109-265c71-70 165-109 265-109s194 39 265 109c70 71 109 165 109 265s-39 194-109 265c-71 70-165 109-265 109z m118-81l-8-33-8-35-52-227-5-18c0-3-1-6-3-10-8-15-23-24-40-24-6 0-13 1-19 4-18 9-27 29-24 48 1 4 2 8 4 11l113 231 14 29 14 29c0 0 0 1 1 1 1 2 3 3 5 3 4 0 8-3 8-8 0 0 0-1 0-1z m-437-285c0 2 0 4 0 6 0 2 0 4 0 7 0 2 0 5 0 8 0 3 1 6 1 9 0 1 0 3 0 5 0 1 1 3 1 5 0 3 1 7 1 11 1 4 1 8 2 12 0 2 1 4 1 6 1 2 1 4 2 6 4 18 10 37 20 58 0 1 1 2 2 3 0 2 1 3 2 4 1 3 2 5 3 8 2 2 3 5 5 8 1 1 1 2 2 3 1 2 2 3 2 4 2 3 4 5 5 8 1 1 2 3 3 4 1 1 2 2 3 4 0 1 1 2 2 4l2 2 1 1c2 3 4 6 6 8l2 2c0 1 1 1 1 2 1 1 2 2 3 4 1 1 2 2 4 3l1 2c1 1 1 1 2 2 2 3 4 5 7 7l1 2 2 2c2 1 3 2 4 4 5 4 10 9 15 14 3 2 6 4 9 6 1 1 2 2 4 4 1 1 3 2 4 3 23 17 50 31 79 41 3 2 7 3 11 4 3 1 7 2 11 3l5 2 6 1 6 2c1 0 3 1 5 1 4 1 8 1 12 2 1 0 2 0 3 0l3 1 5 1 6 0c2 1 4 1 6 1l12 1c1 0 0 0 1 0l0 0 1 0 1 0 3 0 5 0 3 0 1 0c1 0 1 0 2 0l6 0 6 0 3 0c1 0 2 0 3 0 4-1 8-1 12-1 2 0 4-1 6-1l6-1 6 0 6-1c4-1 8-2 11-3 4 0 8-1 12-2 3-1 6-2 9-3l-14-28-14-29c-2 1-5 2-8 3-3 1-6 2-9 3l-5 1-5 2-4 1c-2 0-4 0-5 1-3 0-7 1-10 2-1 0-1 0-2 0l-2 0-5 1-5 1c0 0 0 0-1 0l-1 0-3 0-5 1-3 0-1 0-1 0 0 0c0 0-1 0 0 0l-10 0c-2 0-3 1-5 1l-5 0-5-1-2 0c-1 0-2 0-3 0-3 0-7 0-10 0-1 0-3-1-5-1l-5 0-5-1-5-1c-3 0-6-1-9-1-4-1-7-2-10-3-26-6-50-15-73-28-1-1-2-2-4-3-1 0-3-1-4-2-3-2-5-3-8-5-5-4-10-7-15-11-1-1-3-2-4-3l-2-1-1-2c-3-2-5-4-8-6 0 0-1-1-1-1l-2-2c-1-1-2-2-3-3-1-1-2-2-4-3 0-1-1-1-1-2l-2-1c-2-2-4-4-6-7l-2-1-1-2c-1-1-2-2-3-3-1-1-2-2-3-3-1-1-2-2-3-4-1-2-3-4-5-6-1-1-2-2-3-4 0-1-1-2-2-3-2-2-3-4-5-7-1-2-3-4-4-6-1-2-2-3-3-4 0-1-1-2-2-3-11-18-19-36-25-52 0-2-1-4-2-6-1-2-1-4-2-6-1-4-2-8-3-12-1-3-2-7-3-10 0-2 0-3-1-5 0-2 0-3-1-5 0-3-1-6-1-9-1-2-1-5-1-7-1-3-1-5-1-7-1-2-1-4-1-6 0-7-1-10-1-10 0 0 0 3 0 10z m591 154c1-2 2-3 3-4 13-22 22-43 29-62 1-3 2-5 2-7 1-3 2-5 3-7 1-5 2-10 3-14 1-4 2-8 3-12 1-2 1-4 2-6 0-2 0-4 1-6 0-3 1-7 1-10 1-3 1-7 2-9 0-3 0-6 1-8 0-3 0-5 0-7 1-8 1-12 1-12h-105c0 0 0 3 0 8 0 2 0 3 0 5 0 2 0 4 0 6 0 2 0 4 0 6 0 3 0 5 0 8 0 1 0 2 0 4-1 1-1 3-1 4 0 3 0 6-1 9 0 3-1 7-1 10-1 2-1 3-1 5-1 2-1 4-2 5-3 15-8 31-15 48-1 1-1 2-2 3 0 1-1 2-1 3-2 2-3 4-4 6-1 3-2 5-3 7-1 1-1 2-2 3-1 1-1 2-2 3-1 2-3 5-4 7-1 1-1 2-2 3-1 1-1 2-2 3-1 1-2 2-2 3l-2 2-1 2c-1 2-3 4-5 6l-1 2c0 0-1 1-1 1-1 1-2 2-3 3-1 1-1 2-2 3l-2 2c0 1-1 1-1 2-2 2-4 4-6 6l-1 1-2 2c-1 1-2 2-3 3-4 4-8 8-12 12-2 1-4 3-6 4l9 39 8 36c5-3 10-5 14-8 2-1 3-2 5-3 2-1 3-2 5-3 3-2 6-4 9-6 6-4 13-9 18-13 2-1 3-3 5-4l2-1 2-2c3-3 5-5 8-7 1-1 2-2 2-2l2-2c2-1 3-2 4-4 1-1 3-2 4-3 1-1 1-2 2-2l2-2c2-3 5-5 7-8l2-2 2-2c1-1 2-2 3-3 1-2 2-3 3-4 1-2 3-3 4-4 2-3 4-6 6-8 1-2 2-3 3-4 1-2 2-3 3-4 2-3 4-6 6-8 1-3 3-6 5-8 1-2 2-3 2-4z" horiz-adv-x="1000" />
82
  </font>
83
  </defs>
84
  </svg>
admin/fontello/font/fontello.ttf CHANGED
Binary file
admin/fontello/font/fontello.woff CHANGED
Binary file
admin/fontello/font/fontello.woff2 CHANGED
Binary file
admin/js/wptouch-admin-4.js CHANGED
@@ -825,7 +825,7 @@ function wptouchUpdateAll() {
825
 
826
  function wptouchAddPlaceholders(){
827
  jQuery( '#wptouch-settings-content input[type="text"]' ).not( '#license-settings-area input[type="text"]' ).each( function(){
828
- var placeholder = jQuery( this ).parents( 'li' ).find( 'span' ).text();
829
  jQuery( this ).attr( 'placeholder', placeholder );
830
  });
831
  }
825
 
826
  function wptouchAddPlaceholders(){
827
  jQuery( '#wptouch-settings-content input[type="text"]' ).not( '#license-settings-area input[type="text"]' ).each( function(){
828
+ var placeholder = jQuery( this ).parents( 'li' ).find( 'span' ).not( '.pro' ).text();
829
  jQuery( this ).attr( 'placeholder', placeholder );
830
  });
831
  }
admin/pages/wptouch-admin-general-settings.php CHANGED
@@ -2,7 +2,7 @@
2
  if ( !defined( 'FOUNDATION_SETTING_DOMAIN' ) ) {
3
  define( 'FOUNDATION_SETTING_DOMAIN', 'foundation' );
4
  }
5
- if ( !wptouch_is_controlled_network() || ( wptouch_is_controlled_network() && is_network_admin() ) ) {
6
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_updates_page' );
7
  }
8
 
@@ -696,4 +696,4 @@ function wptouch_render_addons( $page_options ) {
696
  function wptouch_render_addon_settings( $page_options ) {
697
  $page_options = apply_filters( 'wptouch_addon_options', $page_options );
698
  return $page_options;
699
- }
2
  if ( !defined( 'FOUNDATION_SETTING_DOMAIN' ) ) {
3
  define( 'FOUNDATION_SETTING_DOMAIN', 'foundation' );
4
  }
5
+ if ( ( !wptouch_is_controlled_network() || ( wptouch_is_controlled_network() && is_network_admin() ) ) && !defined( 'WPTOUCH_IS_FREE' ) ) {
6
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_updates_page' );
7
  }
8
 
696
  function wptouch_render_addon_settings( $page_options ) {
697
  $page_options = apply_filters( 'wptouch_addon_options', $page_options );
698
  return $page_options;
699
+ }
admin/settings/html/checkbox.php CHANGED
@@ -3,11 +3,16 @@
3
  <?php if ( wptouch_admin_is_setting_new() ) { ?>
4
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
5
  <?php } ?>
 
 
 
 
 
6
  <?php if ( wptouch_admin_setting_has_tooltip() ) { ?>
7
  <i class="wptouch-tooltip" title="<?php wptouch_admin_the_setting_tooltip(); ?>"></i>
8
  <?php } ?>
9
 
10
  <input type="hidden" name="hid-<?php wptouch_admin_the_encoded_setting_name(); ?>" value="hide" />
11
- <input type="checkbox" class="checkbox" name="<?php wptouch_admin_the_encoded_setting_name(); ?>" id="<?php wptouch_admin_the_setting_name(); ?>"<?php if ( wptouch_admin_is_setting_checked() ) echo " checked"; ?> />
12
  <label for="<?php wptouch_admin_the_setting_name(); ?>"></label>
13
  </div>
3
  <?php if ( wptouch_admin_is_setting_new() ) { ?>
4
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
5
  <?php } ?>
6
+
7
+ <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) { ?>
8
+ <span class="pro"><a href="<?php echo admin_url( 'admin.php?page=wptouch-admin-go-pro' ); ?>"><?php _e( 'Pro', 'wptouch-pro' ); ?></a></span>
9
+ <?php } ?>
10
+
11
  <?php if ( wptouch_admin_setting_has_tooltip() ) { ?>
12
  <i class="wptouch-tooltip" title="<?php wptouch_admin_the_setting_tooltip(); ?>"></i>
13
  <?php } ?>
14
 
15
  <input type="hidden" name="hid-<?php wptouch_admin_the_encoded_setting_name(); ?>" value="hide" />
16
+ <input type="checkbox" class="checkbox" name="<?php wptouch_admin_the_encoded_setting_name(); ?>" id="<?php wptouch_admin_the_setting_name(); ?>"<?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) echo ' disabled '; ?><?php if ( wptouch_admin_is_setting_checked() ) echo " checked"; ?> />
17
  <label for="<?php wptouch_admin_the_setting_name(); ?>"></label>
18
  </div>
admin/settings/html/list.php CHANGED
@@ -8,7 +8,11 @@
8
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
9
  <?php } ?>
10
 
11
- <select name="<?php wptouch_admin_the_encoded_setting_name(); ?>" id="<?php wptouch_admin_the_setting_name(); ?>" class="list">
 
 
 
 
12
  <?php while ( wptouch_admin_has_list_options() ) { ?>
13
  <?php wptouch_admin_the_list_option(); ?>
14
  <option value="<?php wptouch_admin_the_list_option_key(); ?>"<?php if ( wptouch_admin_is_list_option_selected() ) echo " selected"; ?>>
8
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
9
  <?php } ?>
10
 
11
+ <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) { ?>
12
+ <span class="pro"><a href="<?php echo admin_url( 'admin.php?page=wptouch-admin-go-pro' ); ?>"><?php _e( 'Pro', 'wptouch-pro' ); ?></a></span>
13
+ <?php } ?>
14
+
15
+ <select name="<?php wptouch_admin_the_encoded_setting_name(); ?>" id="<?php wptouch_admin_the_setting_name(); ?>" class="list"<?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) echo ' disabled '; ?>>
16
  <?php while ( wptouch_admin_has_list_options() ) { ?>
17
  <?php wptouch_admin_the_list_option(); ?>
18
  <option value="<?php wptouch_admin_the_list_option_key(); ?>"<?php if ( wptouch_admin_is_list_option_selected() ) echo " selected"; ?>>
admin/settings/html/multiline-comma.php CHANGED
@@ -9,8 +9,12 @@
9
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
10
  <?php } ?>
11
 
 
 
 
 
12
  <div class="input-wrap">
13
- <input type="text" class="add-entry" placeholder="" />
14
  <a href="#" class="add icon-plus-circled"></a>
15
  <textarea style="width:400px; height: 100px" id="<?php wptouch_admin_the_setting_name(); ?>" name="<?php wptouch_admin_the_encoded_setting_name(); ?>"><?php wptouch_admin_the_setting_value(); ?></textarea>
16
  </div>
9
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
10
  <?php } ?>
11
 
12
+ <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) { ?>
13
+ <span class="pro"><a href="<?php echo admin_url( 'admin.php?page=wptouch-admin-go-pro' ); ?>"><?php _e( 'Pro', 'wptouch-pro' ); ?></a></span>
14
+ <?php } ?>
15
+
16
  <div class="input-wrap">
17
+ <input type="text" class="add-entry" placeholder="" <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) echo ' disabled '; ?> />
18
  <a href="#" class="add icon-plus-circled"></a>
19
  <textarea style="width:400px; height: 100px" id="<?php wptouch_admin_the_setting_name(); ?>" name="<?php wptouch_admin_the_encoded_setting_name(); ?>"><?php wptouch_admin_the_setting_value(); ?></textarea>
20
  </div>
admin/settings/html/multiline-newline.php CHANGED
@@ -7,8 +7,12 @@
7
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
8
  <?php } ?>
9
 
 
 
 
 
10
  <div class="input-wrap">
11
- <input type="text" class="add-entry" placeholder="" /><a href="#" class="add icon-plus-circled"></a>
12
  <textarea style="width:400px; height: 100px" id="<?php wptouch_admin_the_setting_name(); ?>" name="<?php wptouch_admin_the_encoded_setting_name(); ?>"><?php wptouch_admin_the_setting_value(); ?></textarea>
13
  </div>
14
 
7
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
8
  <?php } ?>
9
 
10
+ <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) { ?>
11
+ <span class="pro"><a href="<?php echo admin_url( 'admin.php?page=wptouch-admin-go-pro' ); ?>"><?php _e( 'Pro', 'wptouch-pro' ); ?></a></span>
12
+ <?php } ?>
13
+
14
  <div class="input-wrap">
15
+ <input type="text" class="add-entry" placeholder="" <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) echo ' disabled '; ?> /><a href="#" class="add icon-plus-circled"></a>
16
  <textarea style="width:400px; height: 100px" id="<?php wptouch_admin_the_setting_name(); ?>" name="<?php wptouch_admin_the_encoded_setting_name(); ?>"><?php wptouch_admin_the_setting_value(); ?></textarea>
17
  </div>
18
 
admin/settings/html/plugin-compat-ajax.php CHANGED
@@ -10,6 +10,9 @@
10
  <?php echo sprintf( __( '%s', 'wptouch-pro' ), $friendly_name); ?>
11
  <input type="checkbox" class="checkbox" value="<?php echo $key; ?>" name="<?php echo wptouch_admin_get_manual_encoded_setting_name( 'compat', 'enabled_plugins' ); ?>[]" id="<?php echo $key; ?>"<?php if ( isset( $settings->enabled_plugins[ $key ] ) && $settings->enabled_plugins[ $key ] ) echo ' checked'; ?><?php if ( defined( 'WPTOUCH_IS_FREE' ) || ( is_plugin_active_for_network( WPTOUCH_PLUGIN_SLUG ) && !current_user_can( 'manage_network' ) ) ) echo ' disabled'; ?> />
12
  <label for="<?php echo $key; ?>"></label>
 
 
 
13
  </div>
14
  </li>
15
  <?php } ?>
10
  <?php echo sprintf( __( '%s', 'wptouch-pro' ), $friendly_name); ?>
11
  <input type="checkbox" class="checkbox" value="<?php echo $key; ?>" name="<?php echo wptouch_admin_get_manual_encoded_setting_name( 'compat', 'enabled_plugins' ); ?>[]" id="<?php echo $key; ?>"<?php if ( isset( $settings->enabled_plugins[ $key ] ) && $settings->enabled_plugins[ $key ] ) echo ' checked'; ?><?php if ( defined( 'WPTOUCH_IS_FREE' ) || ( is_plugin_active_for_network( WPTOUCH_PLUGIN_SLUG ) && !current_user_can( 'manage_network' ) ) ) echo ' disabled'; ?> />
12
  <label for="<?php echo $key; ?>"></label>
13
+ <?php if ( defined( 'WPTOUCH_IS_FREE' ) ) { ?>
14
+ <span class="pro"><?php _e( 'Pro', 'wptouch-pro' ); ?></span>
15
+ <?php } ?>
16
  </div>
17
  </li>
18
  <?php } ?>
admin/settings/html/text.php CHANGED
@@ -8,4 +8,8 @@
8
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
9
  <?php } ?>
10
 
11
- <input type="text" autocomplete="off" class="text" id="<?php wptouch_admin_the_setting_name(); ?>" name="<?php wptouch_admin_the_encoded_setting_name(); ?>" value="<?php wptouch_admin_the_setting_value(); ?>" placeholder="" />
 
 
 
 
8
  <span class="new">&nbsp;<?php _e( 'New', 'wptouch-pro' ); ?></span>
9
  <?php } ?>
10
 
11
+ <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) { ?>
12
+ <span class="pro"><a href="<?php echo admin_url( 'admin.php?page=wptouch-admin-go-pro' ); ?>"><?php _e( 'Pro', 'wptouch-pro' ); ?></a></span>
13
+ <?php } ?>
14
+
15
+ <input type="text" autocomplete="off" class="text" id="<?php wptouch_admin_the_setting_name(); ?>" name="<?php wptouch_admin_the_encoded_setting_name(); ?>" value="<?php wptouch_admin_the_setting_value(); ?>" placeholder="" <?php if ( wptouch_admin_is_setting_pro() && defined( 'WPTOUCH_IS_FREE' ) ) echo ' disabled '; ?> />
core/admin-load.php CHANGED
@@ -283,6 +283,10 @@ function wptouch_admin_render_custom_page( $slug = false ) {
283
  $panel_options = do_action( 'wptouch_admin_page_render_custom', $admin_panel_name );
284
  }
285
 
 
 
 
 
286
  function wptouch_section_has_visible_settings( $section ) {
287
  $viewable_settings = 0;
288
 
@@ -290,7 +294,7 @@ function wptouch_section_has_visible_settings( $section ) {
290
 
291
  if ( isset( $section->settings) && is_array( $section->settings ) && count( $section->settings ) ) {
292
  foreach( $section->settings as $setting ) {
293
- if ( !$setting->is_pro || !defined( 'WPTOUCH_IS_FREE' ) ) {
294
  // This setting is viewable
295
  $viewable_settings++;
296
  }
283
  $panel_options = do_action( 'wptouch_admin_page_render_custom', $admin_panel_name );
284
  }
285
 
286
+ function wptouch_should_show_setting( $setting ) {
287
+ return true;
288
+ }
289
+
290
  function wptouch_section_has_visible_settings( $section ) {
291
  $viewable_settings = 0;
292
 
294
 
295
  if ( isset( $section->settings) && is_array( $section->settings ) && count( $section->settings ) ) {
296
  foreach( $section->settings as $setting ) {
297
+ if ( wptouch_should_show_setting( $setting ) ) {
298
  // This setting is viewable
299
  $viewable_settings++;
300
  }
core/admin-render.php CHANGED
@@ -71,6 +71,7 @@
71
 
72
  <?php if ( defined( 'WPTOUCH_IS_FREE' ) ) { ?>
73
  <li><a href="#" class="setup-general-general<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-general-general' ) ) { echo ' active'; } ?>" data-page-slug="setup-general-general"><?php _e( 'General', 'wptouch-pro' ); ?></a></li>
 
74
  <li><a href="#" class="setup-devices<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-devices' ) ) { echo ' active'; } ?>" data-page-slug="setup-devices"><?php _e( 'Devices', 'wptouch-pro' ); ?></a></li>
75
  <li><a href="#" class="menu-icons-manage-icon-sets<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'menu-icons-manage-icon-sets' ) ) { echo ' active'; } ?>" data-page-slug="menu-icons-manage-icon-sets"><?php _e( 'Menu Settings', 'wptouch-pro' ); ?></a></li>
76
  <?php if ( wptouch_admin_use_customizer() ) { ?>
@@ -163,7 +164,7 @@
163
  <?php } ?>
164
  <ul class="padded">
165
  <?php foreach( $section->settings as $setting ) { ?>
166
- <?php if ( !$setting->is_pro || !defined( 'WPTOUCH_IS_FREE' ) ) { ?>
167
  <li class="wptouch-setting setting-<?php echo $setting->type; ?>" id="setting-<?php echo wptouch_convert_to_class_name( $setting->name ); ?>">
168
  <?php wptouch_admin_render_setting( $setting ); ?>
169
  </li>
71
 
72
  <?php if ( defined( 'WPTOUCH_IS_FREE' ) ) { ?>
73
  <li><a href="#" class="setup-general-general<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-general-general' ) ) { echo ' active'; } ?>" data-page-slug="setup-general-general"><?php _e( 'General', 'wptouch-pro' ); ?></a></li>
74
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'site-compat' ); ?> setup-compat<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-compat' ) ) { echo ' active'; } ?>" data-page-slug="setup-compat"><?php _e( 'Site Compatibility', 'wptouch-pro' ); ?></a></li>
75
  <li><a href="#" class="setup-devices<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-devices' ) ) { echo ' active'; } ?>" data-page-slug="setup-devices"><?php _e( 'Devices', 'wptouch-pro' ); ?></a></li>
76
  <li><a href="#" class="menu-icons-manage-icon-sets<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'menu-icons-manage-icon-sets' ) ) { echo ' active'; } ?>" data-page-slug="menu-icons-manage-icon-sets"><?php _e( 'Menu Settings', 'wptouch-pro' ); ?></a></li>
77
  <?php if ( wptouch_admin_use_customizer() ) { ?>
164
  <?php } ?>
165
  <ul class="padded">
166
  <?php foreach( $section->settings as $setting ) { ?>
167
+ <?php if ( wptouch_should_show_setting( $setting ) ) { ?>
168
  <li class="wptouch-setting setting-<?php echo $setting->type; ?>" id="setting-<?php echo wptouch_convert_to_class_name( $setting->name ); ?>">
169
  <?php wptouch_admin_render_setting( $setting ); ?>
170
  </li>
core/class-bncapi.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- define( 'BNC_API_VERSION', '5.1' );
4
  define( 'BNC_API_URL', 'http://api.wptouch.com/v/' . BNC_API_VERSION );
5
  define( 'BNC_API_TIMEOUT', 30 );
6
 
1
  <?php
2
 
3
+ define( 'BNC_API_VERSION', '5.2' );
4
  define( 'BNC_API_URL', 'http://api.wptouch.com/v/' . BNC_API_VERSION );
5
  define( 'BNC_API_TIMEOUT', 30 );
6
 
core/class-cache-smash.php CHANGED
@@ -93,12 +93,31 @@ class WPtouchCacheSmash {
93
 
94
  // Check W3
95
  if ( $this->is_w3_plugin_detected() ) {
96
- $w3_config = new W3_Config( true );
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  if ( $w3_config ) {
98
  // Check to see if the Page Cache is enabled
99
- if ( $w3_config->get_cache_option( 'pgcache.enabled' ) ) {
100
  // If it's enabled, we need to make sure the user agents have been updated
101
- $rejected_user_agents = $w3_config->get_cache_option( 'pgcache.reject.ua' );
 
 
 
 
 
 
102
  if ( !$this->find_in_array_no_case( 'iphone', $rejected_user_agents ) ) {
103
  $cache_configured = false;
104
  }
@@ -175,4 +194,4 @@ class WPtouchCacheSmash {
175
  public function should_disable_mobile_theme() {
176
  return $this->cache_plugin_detected && !$this->cache_plugin_configured;
177
  }
178
- }
93
 
94
  // Check W3
95
  if ( $this->is_w3_plugin_detected() ) {
96
+ if( version_compare( W3TC_VERSION, '0.9.5', ">=" ) ) {
97
+ $w3tc_095_or_greater = true;
98
+ }
99
+ else {
100
+ $w3tc_095_or_greater = false;
101
+ }
102
+
103
+ if ( $w3tc_095_or_greater ) {
104
+ $w3_config = new \W3TC\Config( true );
105
+ }
106
+ else {
107
+ $w3_config = new W3_Config( true );
108
+ }
109
+
110
  if ( $w3_config ) {
111
  // Check to see if the Page Cache is enabled
112
+ if ( ( $w3tc_095_or_greater && $w3_config->get( 'pgcache.enabled' ) ) || ( !$w3tc_095_or_greater && $w3_config->get_cache_option( 'pgcache.enabled' ) ) ) {
113
  // If it's enabled, we need to make sure the user agents have been updated
114
+ if ( $w3tc_095_or_greater ) {
115
+ $rejected_user_agents = $w3_config->get( 'pgcache.reject.ua' );
116
+ }
117
+ else {
118
+ $rejected_user_agents = $w3_config->get_cache_option( 'pgcache.reject.ua' );
119
+ }
120
+
121
  if ( !$this->find_in_array_no_case( 'iphone', $rejected_user_agents ) ) {
122
  $cache_configured = false;
123
  }
194
  public function should_disable_mobile_theme() {
195
  return $this->cache_plugin_detected && !$this->cache_plugin_configured;
196
  }
197
+ }
core/class-wptouch-pro.php CHANGED
@@ -760,7 +760,7 @@ class WPtouchProFour {
760
  }
761
 
762
  function set_cache_cookie() {
763
- if ( !is_admin() && function_exists( 'wptouch_cache_admin_bar' ) ) {
764
  global $wptouch_pro;
765
 
766
  $cookie_value = 'desktop';
@@ -775,6 +775,8 @@ class WPtouchProFour {
775
 
776
  if ( function_exists( 'wptouch_addon_should_cache_desktop' ) ) {
777
  $cache_desktop = wptouch_addon_should_cache_desktop();
 
 
778
  } else {
779
  $cache_desktop = false;
780
  }
760
  }
761
 
762
  function set_cache_cookie() {
763
+ if ( !is_admin() && ( function_exists( 'wptouch_cache_admin_bar' ) || function_exists( 'wptouch_power_pack_admin_bar') ) ) {
764
  global $wptouch_pro;
765
 
766
  $cookie_value = 'desktop';
775
 
776
  if ( function_exists( 'wptouch_addon_should_cache_desktop' ) ) {
777
  $cache_desktop = wptouch_addon_should_cache_desktop();
778
+ } else if ( function_exists( 'wptouch_power_pack_should_cache_desktop' ) ) {
779
+ $cache_desktop = wptouch_power_pack_should_cache_desktop();
780
  } else {
781
  $cache_desktop = false;
782
  }
core/menu-walkers.php CHANGED
@@ -694,4 +694,4 @@ class WPtouchProCategoryWalker extends Walker {
694
  $output .= "</li>\n";
695
  }
696
 
697
- }
694
  $output .= "</li>\n";
695
  }
696
 
697
+ }
lang/wptouch.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the WPtouch Mobile Plugin package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WPtouch Mobile Plugin 4.2.5\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wptouch\n"
7
- "POT-Creation-Date: 2016-09-02 14:52:56+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -12,15 +12,15 @@ msgstr ""
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
- #: admin/customizer/wptouch-customizer.php:579
16
  msgid "Device Orientation"
17
  msgstr ""
18
 
19
- #: admin/customizer/wptouch-customizer.php:606
20
  msgid "Switch to Mobile Theme"
21
  msgstr ""
22
 
23
- #: admin/customizer/wptouch-customizer.php:607
24
  msgid "Switch to Desktop Theme"
25
  msgstr ""
26
 
@@ -377,7 +377,7 @@ msgstr ""
377
  #: admin/pages/custom/wptouch-admin-wizard.php:179
378
  #: admin/settings/html/theme-browser-item-detail.php:52
379
  #: admin/settings/html/updates-available.php:35
380
- #: admin/settings/html/updates-available.php:71 core/class-wptouch-pro.php:965
381
  msgid "Download"
382
  msgstr ""
383
 
@@ -387,7 +387,7 @@ msgstr ""
387
  #: admin/settings/html/installed_icon_sets_ajax.php:13
388
  #: admin/settings/html/installed_icon_sets_ajax.php:26
389
  #: admin/settings/html/theme-browser-item.php:12
390
- #: core/class-wptouch-pro.php:964
391
  msgid "Installed"
392
  msgstr ""
393
 
@@ -805,7 +805,7 @@ msgstr ""
805
 
806
  #: admin/pages/wptouch-admin-general-settings.php:590
807
  #: admin/settings/html/installed_icon_sets_ajax.php:4
808
- #: core/class-wptouch-pro.php:2160 core/class-wptouch-pro.php:2161
809
  #: core/config.php:54
810
  msgid "Custom Icons"
811
  msgstr ""
@@ -814,8 +814,8 @@ msgstr ""
814
  msgid "WordPress Pages"
815
  msgstr ""
816
 
817
- #: admin/pages/wptouch-admin-general-settings.php:639 core/admin-render.php:77
818
- #: core/admin-render.php:108 core/config.php:93
819
  msgid "Customize Theme"
820
  msgstr ""
821
 
@@ -835,6 +835,14 @@ msgstr ""
835
  msgid "New"
836
  msgstr ""
837
 
 
 
 
 
 
 
 
 
838
  #: admin/settings/html/custom-latest-posts.php:1
839
  msgid "Posts page"
840
  msgstr ""
@@ -909,7 +917,7 @@ msgstr ""
909
  msgid "No extensions available"
910
  msgstr ""
911
 
912
- #: admin/settings/html/image-upload.php:7 core/class-wptouch-pro.php:957
913
  msgid "Upload Complete!"
914
  msgstr ""
915
 
@@ -928,13 +936,13 @@ msgid ""
928
  msgstr ""
929
 
930
  #: admin/settings/html/installed_icon_sets_ajax.php:25
931
- #: core/class-wptouch-pro.php:963
932
  msgid "Installing"
933
  msgstr ""
934
 
935
  #: admin/settings/html/installed_icon_sets_ajax.php:25
936
  #: admin/settings/html/theme-browser-item-detail.php:3
937
- #: core/admin-extensions.php:363 core/class-wptouch-pro.php:962
938
  msgid "Install"
939
  msgstr ""
940
 
@@ -957,11 +965,11 @@ msgid "You're using %s, which currently does not support tablets."
957
  msgstr ""
958
 
959
  #: admin/settings/html/plugin-compat-ajax.php:10
960
- #: themes/foundation/modules/custom-posts/custom-posts.php:180
961
  msgid "%s"
962
  msgstr ""
963
 
964
- #: admin/settings/html/plugin-compat-ajax.php:19
965
  msgid "No plugins activated to disable."
966
  msgstr ""
967
 
@@ -1146,7 +1154,7 @@ msgstr ""
1146
  msgid "Setup Wizard"
1147
  msgstr ""
1148
 
1149
- #: core/admin-menu.php:49 core/class-wptouch-pro.php:1632
1150
  msgid "Settings"
1151
  msgstr ""
1152
 
@@ -1196,45 +1204,46 @@ msgstr ""
1196
  msgid "Tools"
1197
  msgstr ""
1198
 
1199
- #: core/admin-render.php:73 core/admin-render.php:81 core/config.php:89
1200
  msgid "General"
1201
  msgstr ""
1202
 
1203
- #: core/admin-render.php:74 core/admin-render.php:89 core/config.php:91
 
 
 
 
 
1204
  #: core/multisite.php:267 core/multisite.php:360
1205
  msgid "Devices"
1206
  msgstr ""
1207
 
1208
- #: core/admin-render.php:75 core/admin-render.php:93 core/config.php:92
1209
  #: core/multisite.php:275 core/multisite.php:368
1210
  msgid "Menu Settings"
1211
  msgstr ""
1212
 
1213
- #: core/admin-render.php:85 core/multisite.php:259 core/multisite.php:352
1214
- msgid "Site Compatibility"
1215
- msgstr ""
1216
-
1217
- #: core/admin-render.php:100 core/admin-render.php:102
1218
- #: core/admin-render.php:140 core/config.php:95 core/multisite.php:283
1219
  #: core/multisite.php:376
1220
  msgid "Themes"
1221
  msgstr ""
1222
 
1223
- #: core/admin-render.php:105 themes/foundation/root-functions.php:9
1224
  msgid "Theme Settings"
1225
  msgstr ""
1226
 
1227
- #: core/admin-render.php:115 core/admin-render.php:117
1228
- #: core/admin-render.php:141 core/config.php:96 core/multisite.php:291
1229
  #: core/multisite.php:384
1230
  msgid "Extensions"
1231
  msgstr ""
1232
 
1233
- #: core/admin-render.php:138
1234
  msgid "Available for WPtouch Pro"
1235
  msgstr ""
1236
 
1237
- #: core/admin-render.php:189
1238
  msgid "Reset Settings"
1239
  msgstr ""
1240
 
@@ -1310,59 +1319,59 @@ msgid ""
1310
  "%s Please visit %sthis article%s for more information on how to fix it."
1311
  msgstr ""
1312
 
1313
- #: core/class-wptouch-pro.php:952
1314
  msgid ""
1315
  "This will reset all WPtouch Pro settings.\n"
1316
  "Are you sure?"
1317
  msgstr ""
1318
 
1319
- #: core/class-wptouch-pro.php:953
1320
  msgid ""
1321
  "This will reset all WPtouch Pro settings and delete the wptouch-data "
1322
  "folder.\n"
1323
  "Are you sure?"
1324
  msgstr ""
1325
 
1326
- #: core/class-wptouch-pro.php:954
1327
  msgid ""
1328
  "This will reset all WPtouch Pro settings, delete the wptouch-data folder, "
1329
  "and deactivate the plugin. Are you sure?"
1330
  msgstr ""
1331
 
1332
- #: core/class-wptouch-pro.php:955
1333
  msgid "The item failed to download for this reason: %reason%"
1334
  msgstr ""
1335
 
1336
- #: core/class-wptouch-pro.php:956
1337
  msgid "You are about to reset your license information. Proceed?"
1338
  msgstr ""
1339
 
1340
- #: core/class-wptouch-pro.php:958
1341
  msgid "Upload Failed: Not a valid image."
1342
  msgstr ""
1343
 
1344
- #: core/class-wptouch-pro.php:959
1345
  msgid ""
1346
  "WPtouch is saving settings. Please do not refresh the page while saving."
1347
  msgstr ""
1348
 
1349
- #: core/class-wptouch-pro.php:960
1350
  msgid "Install Themes"
1351
  msgstr ""
1352
 
1353
- #: core/class-wptouch-pro.php:961
1354
  msgid "Install Extensions"
1355
  msgstr ""
1356
 
1357
- #: core/class-wptouch-pro.php:1669
1358
  msgid "%s Changelog"
1359
  msgstr ""
1360
 
1361
- #: core/class-wptouch-pro.php:3086
1362
  msgid "Directory Problem"
1363
  msgstr ""
1364
 
1365
- #: core/class-wptouch-pro.php:3087
1366
  msgid "One or more required directories could not be created"
1367
  msgstr ""
1368
 
@@ -1693,11 +1702,30 @@ msgstr ""
1693
  msgid "Search"
1694
  msgstr ""
1695
 
1696
- #: themes/bauhaus/default/index.php:33 themes/foundation/default/index.php:33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1697
  msgid "newer posts"
1698
  msgstr ""
1699
 
1700
- #: themes/bauhaus/default/index.php:33 themes/foundation/default/index.php:33
 
1701
  msgid "older posts"
1702
  msgstr ""
1703
 
@@ -1721,10 +1749,6 @@ msgstr ""
1721
  msgid "Reply"
1722
  msgstr ""
1723
 
1724
- #: themes/bauhaus/default/post-loop.php:22
1725
- msgid "by"
1726
- msgstr ""
1727
-
1728
  #: themes/bauhaus/default/related-posts.php:4
1729
  #: themes/foundation/default/related-posts.php:4
1730
  msgid "Related"
@@ -1797,128 +1821,227 @@ msgstr ""
1797
  msgid "desktop"
1798
  msgstr ""
1799
 
1800
- #: themes/bauhaus/root-functions.php:130
1801
  msgid "Header Menu"
1802
  msgstr ""
1803
 
1804
- #: themes/bauhaus/root-functions.php:132
1805
  msgid "Choose a menu"
1806
  msgstr ""
1807
 
1808
- #: themes/bauhaus/root-functions.php:133
1809
  msgid "Main menu selection"
1810
  msgstr ""
1811
 
1812
- #: themes/bauhaus/root-functions.php:140
1813
  msgid "Theme background"
1814
  msgstr ""
1815
 
1816
- #: themes/bauhaus/root-functions.php:141
1817
  msgid "Header & Menu"
1818
  msgstr ""
1819
 
1820
- #: themes/bauhaus/root-functions.php:142
1821
  msgid "Links"
1822
  msgstr ""
1823
 
1824
- #: themes/bauhaus/root-functions.php:143
1825
  msgid "Post/Page Headers"
1826
  msgstr ""
1827
 
1828
- #: themes/bauhaus/root-functions.php:249
1829
  msgid "Menu animation style"
1830
  msgstr ""
1831
 
1832
- #: themes/bauhaus/root-functions.php:254
1833
  msgid "Off-canvas"
1834
  msgstr ""
1835
 
1836
- #: themes/bauhaus/root-functions.php:255
1837
  msgid "Drop-down"
1838
  msgstr ""
1839
 
1840
- #: themes/bauhaus/root-functions.php:263
1841
  msgid "Menu position"
1842
  msgstr ""
1843
 
1844
- #: themes/bauhaus/root-functions.php:268
1845
  msgid "Left side"
1846
  msgstr ""
1847
 
1848
- #: themes/bauhaus/root-functions.php:269
1849
  msgid "Right side"
1850
  msgstr ""
1851
 
1852
- #: themes/bauhaus/root-functions.php:277
1853
  msgid "Show search in header"
1854
  msgstr ""
1855
 
1856
- #: themes/bauhaus/root-functions.php:294
1857
  msgid "Post thumbnails"
1858
  msgstr ""
1859
 
1860
- #: themes/bauhaus/root-functions.php:299
1861
  msgid "No thumbnails"
1862
  msgstr ""
1863
 
1864
- #: themes/bauhaus/root-functions.php:300
1865
  msgid "Blog listing only"
1866
  msgstr ""
1867
 
1868
- #: themes/bauhaus/root-functions.php:301
1869
  msgid "Blog listing, single posts"
1870
  msgstr ""
1871
 
1872
- #: themes/bauhaus/root-functions.php:302
1873
  msgid "Blog listing, single posts & pages"
1874
  msgstr ""
1875
 
1876
- #: themes/bauhaus/root-functions.php:303
1877
  msgid "All (blog, single, pages, search & archive)"
1878
  msgstr ""
1879
 
1880
- #: themes/bauhaus/root-functions.php:311
1881
  msgid "Thumbnail Type"
1882
  msgstr ""
1883
 
1884
- #: themes/bauhaus/root-functions.php:316
1885
  msgid "Post featured images"
1886
  msgstr ""
1887
 
1888
- #: themes/bauhaus/root-functions.php:317
1889
  msgid "Post custom field"
1890
  msgstr ""
1891
 
1892
- #: themes/bauhaus/root-functions.php:325
1893
  msgid "Thumbnail custom field name"
1894
  msgstr ""
1895
 
1896
- #: themes/bauhaus/root-functions.php:336
1897
  msgid "Show post categories and tags"
1898
  msgstr ""
1899
 
1900
- #: themes/bauhaus/root-functions.php:347
1901
  msgid "Show post date"
1902
  msgstr ""
1903
 
1904
- #: themes/bauhaus/root-functions.php:358
1905
  msgid "Show post author"
1906
  msgstr ""
1907
 
1908
- #: themes/bauhaus/root-functions.php:369
1909
  msgid "Show comment bubbles on posts"
1910
  msgstr ""
1911
 
1912
- #: themes/bauhaus/root-functions.php:380
1913
  msgid "Use infinite scrolling for blog"
1914
  msgstr ""
1915
 
1916
- #: themes/bauhaus/root-functions.php:519
1917
- msgid "Featured Slider Page"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1918
  msgstr ""
1919
 
1920
- #: themes/bauhaus/root-functions.php:520
1921
- msgid "Choose which page should display the featured slider"
1922
  msgstr ""
1923
 
1924
  #: themes/foundation/default/formerror.php:6
@@ -1949,139 +2072,98 @@ msgstr ""
1949
  msgid "Loading"
1950
  msgstr ""
1951
 
1952
- #: themes/foundation/modules/custom-posts/custom-posts.php:160
1953
  msgid "Custom Post Support"
1954
  msgstr ""
1955
 
1956
- #: themes/foundation/modules/custom-posts/custom-posts.php:166
1957
  msgid "Enable custom post-type support"
1958
  msgstr ""
1959
 
1960
- #: themes/foundation/modules/custom-posts/custom-posts.php:193
1961
  msgid "Include custom post-type posts in blog index"
1962
  msgstr ""
1963
 
1964
- #: themes/foundation/modules/custom-posts/custom-posts.php:201
1965
  msgid "Custom Post Types"
1966
  msgstr ""
1967
 
1968
- #: themes/foundation/modules/custom-posts/custom-posts.php:207
1969
  msgid ""
1970
  "Select which custom post types WPtouch Pro should load when displaying your "
1971
  "site."
1972
  msgstr ""
1973
 
1974
  #: themes/foundation/modules/featured/featured.php:329
 
 
 
 
 
 
 
 
1975
  msgid "Featured slider style"
1976
  msgstr ""
1977
 
1978
- #: themes/foundation/modules/featured/featured.php:334
1979
  msgid "Enhanced"
1980
  msgstr ""
1981
 
1982
- #: themes/foundation/modules/featured/featured.php:335
1983
  msgid "Streamlined"
1984
  msgstr ""
1985
 
1986
- #: themes/foundation/modules/featured/featured.php:347
1987
  msgid "Slide transition Delay"
1988
  msgstr ""
1989
 
1990
- #: themes/foundation/modules/featured/featured.php:352
1991
  msgid "Long"
1992
  msgstr ""
1993
 
1994
- #: themes/foundation/modules/featured/featured.php:353
1995
  msgid "Normal"
1996
  msgstr ""
1997
 
1998
- #: themes/foundation/modules/featured/featured.php:354
1999
  msgid "Short"
2000
  msgstr ""
2001
 
2002
- #: themes/foundation/modules/featured/featured.php:360
2003
  msgid "Number of posts in slider"
2004
  msgstr ""
2005
 
2006
- #: themes/foundation/modules/featured/featured.php:373
2007
- msgid "Show # of comments"
2008
- msgstr ""
2009
-
2010
- #: themes/foundation/modules/featured/featured.php:381
2011
- msgid "Slide automatically"
2012
- msgstr ""
2013
-
2014
  #: themes/foundation/modules/featured/featured.php:389
2015
- msgid "Slides repeat"
2016
  msgstr ""
2017
 
2018
  #: themes/foundation/modules/featured/featured.php:397
2019
- msgid "Make images grayscale"
2020
  msgstr ""
2021
 
2022
  #: themes/foundation/modules/featured/featured.php:405
2023
- msgid "Slider posts also show in listings"
2024
  msgstr ""
2025
 
2026
  #: themes/foundation/modules/featured/featured.php:413
2027
- msgid "Posts to display"
2028
- msgstr ""
2029
-
2030
- #: themes/foundation/modules/featured/featured.php:418
2031
- msgid "Show latest posts"
2032
- msgstr ""
2033
-
2034
- #: themes/foundation/modules/featured/featured.php:419
2035
- msgid "Show posts from a specific tag"
2036
- msgstr ""
2037
-
2038
- #: themes/foundation/modules/featured/featured.php:420
2039
- msgid "Show posts from a specific category"
2040
  msgstr ""
2041
 
2042
  #: themes/foundation/modules/featured/featured.php:421
2043
- msgid "Show posts from a specific post type"
2044
- msgstr ""
2045
-
2046
- #: themes/foundation/modules/featured/featured.php:422
2047
- msgid "Show only specific posts or pages"
2048
- msgstr ""
2049
-
2050
- #: themes/foundation/modules/featured/featured.php:428
2051
- msgid "Only this tag"
2052
  msgstr ""
2053
 
2054
  #: themes/foundation/modules/featured/featured.php:429
2055
- #: themes/foundation/modules/featured/featured.php:438
2056
- msgid "Enter the tag/category slug name"
2057
- msgstr ""
2058
-
2059
- #: themes/foundation/modules/featured/featured.php:437
2060
- msgid "Only this category"
2061
- msgstr ""
2062
-
2063
- #: themes/foundation/modules/featured/featured.php:446
2064
- msgid "Comma-separated list of post/page IDs"
2065
- msgstr ""
2066
-
2067
- #: themes/foundation/modules/featured/featured.php:457
2068
- msgid "Only this post type"
2069
  msgstr ""
2070
 
2071
- #: themes/foundation/modules/featured/featured.php:467
2072
  msgid "Featured Slider"
2073
  msgstr ""
2074
 
2075
- #: themes/foundation/modules/featured/featured.php:474
2076
- msgid "Enable featured slider"
2077
- msgstr ""
2078
-
2079
- #: themes/foundation/modules/featured/featured.php:482
2080
- msgid "Show on blog"
2081
- msgstr ""
2082
-
2083
  #: themes/foundation/modules/featured/featured.php:490
2084
- msgid "Show on homepage"
2085
  msgstr ""
2086
 
2087
  #: themes/foundation/modules/google-fonts/google-fonts.php:21
2
  # This file is distributed under the same license as the WPtouch Mobile Plugin package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WPtouch Mobile Plugin 4.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wptouch\n"
7
+ "POT-Creation-Date: 2016-09-26 19:22:48+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
+ #: admin/customizer/wptouch-customizer.php:590
16
  msgid "Device Orientation"
17
  msgstr ""
18
 
19
+ #: admin/customizer/wptouch-customizer.php:617
20
  msgid "Switch to Mobile Theme"
21
  msgstr ""
22
 
23
+ #: admin/customizer/wptouch-customizer.php:618
24
  msgid "Switch to Desktop Theme"
25
  msgstr ""
26
 
377
  #: admin/pages/custom/wptouch-admin-wizard.php:179
378
  #: admin/settings/html/theme-browser-item-detail.php:52
379
  #: admin/settings/html/updates-available.php:35
380
+ #: admin/settings/html/updates-available.php:71 core/class-wptouch-pro.php:967
381
  msgid "Download"
382
  msgstr ""
383
 
387
  #: admin/settings/html/installed_icon_sets_ajax.php:13
388
  #: admin/settings/html/installed_icon_sets_ajax.php:26
389
  #: admin/settings/html/theme-browser-item.php:12
390
+ #: core/class-wptouch-pro.php:966
391
  msgid "Installed"
392
  msgstr ""
393
 
805
 
806
  #: admin/pages/wptouch-admin-general-settings.php:590
807
  #: admin/settings/html/installed_icon_sets_ajax.php:4
808
+ #: core/class-wptouch-pro.php:2162 core/class-wptouch-pro.php:2163
809
  #: core/config.php:54
810
  msgid "Custom Icons"
811
  msgstr ""
814
  msgid "WordPress Pages"
815
  msgstr ""
816
 
817
+ #: admin/pages/wptouch-admin-general-settings.php:639 core/admin-render.php:78
818
+ #: core/admin-render.php:109 core/config.php:93
819
  msgid "Customize Theme"
820
  msgstr ""
821
 
835
  msgid "New"
836
  msgstr ""
837
 
838
+ #: admin/settings/html/checkbox.php:8 admin/settings/html/list.php:12
839
+ #: admin/settings/html/multiline-comma.php:13
840
+ #: admin/settings/html/multiline-newline.php:11
841
+ #: admin/settings/html/plugin-compat-ajax.php:14
842
+ #: admin/settings/html/text.php:12
843
+ msgid "Pro"
844
+ msgstr ""
845
+
846
  #: admin/settings/html/custom-latest-posts.php:1
847
  msgid "Posts page"
848
  msgstr ""
917
  msgid "No extensions available"
918
  msgstr ""
919
 
920
+ #: admin/settings/html/image-upload.php:7 core/class-wptouch-pro.php:959
921
  msgid "Upload Complete!"
922
  msgstr ""
923
 
936
  msgstr ""
937
 
938
  #: admin/settings/html/installed_icon_sets_ajax.php:25
939
+ #: core/class-wptouch-pro.php:965
940
  msgid "Installing"
941
  msgstr ""
942
 
943
  #: admin/settings/html/installed_icon_sets_ajax.php:25
944
  #: admin/settings/html/theme-browser-item-detail.php:3
945
+ #: core/admin-extensions.php:363 core/class-wptouch-pro.php:964
946
  msgid "Install"
947
  msgstr ""
948
 
965
  msgstr ""
966
 
967
  #: admin/settings/html/plugin-compat-ajax.php:10
968
+ #: themes/foundation/modules/custom-posts/custom-posts.php:183
969
  msgid "%s"
970
  msgstr ""
971
 
972
+ #: admin/settings/html/plugin-compat-ajax.php:22
973
  msgid "No plugins activated to disable."
974
  msgstr ""
975
 
1154
  msgid "Setup Wizard"
1155
  msgstr ""
1156
 
1157
+ #: core/admin-menu.php:49 core/class-wptouch-pro.php:1634
1158
  msgid "Settings"
1159
  msgstr ""
1160
 
1204
  msgid "Tools"
1205
  msgstr ""
1206
 
1207
+ #: core/admin-render.php:73 core/admin-render.php:82 core/config.php:89
1208
  msgid "General"
1209
  msgstr ""
1210
 
1211
+ #: core/admin-render.php:74 core/admin-render.php:86 core/multisite.php:259
1212
+ #: core/multisite.php:352
1213
+ msgid "Site Compatibility"
1214
+ msgstr ""
1215
+
1216
+ #: core/admin-render.php:75 core/admin-render.php:90 core/config.php:91
1217
  #: core/multisite.php:267 core/multisite.php:360
1218
  msgid "Devices"
1219
  msgstr ""
1220
 
1221
+ #: core/admin-render.php:76 core/admin-render.php:94 core/config.php:92
1222
  #: core/multisite.php:275 core/multisite.php:368
1223
  msgid "Menu Settings"
1224
  msgstr ""
1225
 
1226
+ #: core/admin-render.php:101 core/admin-render.php:103
1227
+ #: core/admin-render.php:141 core/config.php:95 core/multisite.php:283
 
 
 
 
1228
  #: core/multisite.php:376
1229
  msgid "Themes"
1230
  msgstr ""
1231
 
1232
+ #: core/admin-render.php:106 themes/foundation/root-functions.php:9
1233
  msgid "Theme Settings"
1234
  msgstr ""
1235
 
1236
+ #: core/admin-render.php:116 core/admin-render.php:118
1237
+ #: core/admin-render.php:142 core/config.php:96 core/multisite.php:291
1238
  #: core/multisite.php:384
1239
  msgid "Extensions"
1240
  msgstr ""
1241
 
1242
+ #: core/admin-render.php:139
1243
  msgid "Available for WPtouch Pro"
1244
  msgstr ""
1245
 
1246
+ #: core/admin-render.php:190
1247
  msgid "Reset Settings"
1248
  msgstr ""
1249
 
1319
  "%s Please visit %sthis article%s for more information on how to fix it."
1320
  msgstr ""
1321
 
1322
+ #: core/class-wptouch-pro.php:954
1323
  msgid ""
1324
  "This will reset all WPtouch Pro settings.\n"
1325
  "Are you sure?"
1326
  msgstr ""
1327
 
1328
+ #: core/class-wptouch-pro.php:955
1329
  msgid ""
1330
  "This will reset all WPtouch Pro settings and delete the wptouch-data "
1331
  "folder.\n"
1332
  "Are you sure?"
1333
  msgstr ""
1334
 
1335
+ #: core/class-wptouch-pro.php:956
1336
  msgid ""
1337
  "This will reset all WPtouch Pro settings, delete the wptouch-data folder, "
1338
  "and deactivate the plugin. Are you sure?"
1339
  msgstr ""
1340
 
1341
+ #: core/class-wptouch-pro.php:957
1342
  msgid "The item failed to download for this reason: %reason%"
1343
  msgstr ""
1344
 
1345
+ #: core/class-wptouch-pro.php:958
1346
  msgid "You are about to reset your license information. Proceed?"
1347
  msgstr ""
1348
 
1349
+ #: core/class-wptouch-pro.php:960
1350
  msgid "Upload Failed: Not a valid image."
1351
  msgstr ""
1352
 
1353
+ #: core/class-wptouch-pro.php:961
1354
  msgid ""
1355
  "WPtouch is saving settings. Please do not refresh the page while saving."
1356
  msgstr ""
1357
 
1358
+ #: core/class-wptouch-pro.php:962
1359
  msgid "Install Themes"
1360
  msgstr ""
1361
 
1362
+ #: core/class-wptouch-pro.php:963
1363
  msgid "Install Extensions"
1364
  msgstr ""
1365
 
1366
+ #: core/class-wptouch-pro.php:1671
1367
  msgid "%s Changelog"
1368
  msgstr ""
1369
 
1370
+ #: core/class-wptouch-pro.php:3088
1371
  msgid "Directory Problem"
1372
  msgstr ""
1373
 
1374
+ #: core/class-wptouch-pro.php:3089
1375
  msgid "One or more required directories could not be created"
1376
  msgstr ""
1377
 
1702
  msgid "Search"
1703
  msgstr ""
1704
 
1705
+ #: themes/bauhaus/default/layouts/carousel-post-loop.php:16
1706
+ #: themes/bauhaus/default/post-loop.php:17
1707
+ msgid "by"
1708
+ msgstr ""
1709
+
1710
+ #: themes/bauhaus/default/layouts/carousel-view.php:6
1711
+ msgid "Latest"
1712
+ msgstr ""
1713
+
1714
+ #: themes/bauhaus/default/layouts/carousel-view.php:20
1715
+ msgid "Featured"
1716
+ msgstr ""
1717
+
1718
+ #: themes/bauhaus/default/layouts/carousel-view.php:25
1719
+ msgid "Popular"
1720
+ msgstr ""
1721
+
1722
+ #: themes/bauhaus/default/layouts/post-listing-view.php:29
1723
+ #: themes/foundation/default/index.php:33
1724
  msgid "newer posts"
1725
  msgstr ""
1726
 
1727
+ #: themes/bauhaus/default/layouts/post-listing-view.php:29
1728
+ #: themes/foundation/default/index.php:33
1729
  msgid "older posts"
1730
  msgstr ""
1731
 
1749
  msgid "Reply"
1750
  msgstr ""
1751
 
 
 
 
 
1752
  #: themes/bauhaus/default/related-posts.php:4
1753
  #: themes/foundation/default/related-posts.php:4
1754
  msgid "Related"
1821
  msgid "desktop"
1822
  msgstr ""
1823
 
1824
+ #: themes/bauhaus/root-functions.php:149
1825
  msgid "Header Menu"
1826
  msgstr ""
1827
 
1828
+ #: themes/bauhaus/root-functions.php:151
1829
  msgid "Choose a menu"
1830
  msgstr ""
1831
 
1832
+ #: themes/bauhaus/root-functions.php:152
1833
  msgid "Main menu selection"
1834
  msgstr ""
1835
 
1836
+ #: themes/bauhaus/root-functions.php:159
1837
  msgid "Theme background"
1838
  msgstr ""
1839
 
1840
+ #: themes/bauhaus/root-functions.php:160
1841
  msgid "Header & Menu"
1842
  msgstr ""
1843
 
1844
+ #: themes/bauhaus/root-functions.php:161
1845
  msgid "Links"
1846
  msgstr ""
1847
 
1848
+ #: themes/bauhaus/root-functions.php:162
1849
  msgid "Post/Page Headers"
1850
  msgstr ""
1851
 
1852
+ #: themes/bauhaus/root-functions.php:274
1853
  msgid "Menu animation style"
1854
  msgstr ""
1855
 
1856
+ #: themes/bauhaus/root-functions.php:279
1857
  msgid "Off-canvas"
1858
  msgstr ""
1859
 
1860
+ #: themes/bauhaus/root-functions.php:280
1861
  msgid "Drop-down"
1862
  msgstr ""
1863
 
1864
+ #: themes/bauhaus/root-functions.php:288
1865
  msgid "Menu position"
1866
  msgstr ""
1867
 
1868
+ #: themes/bauhaus/root-functions.php:293
1869
  msgid "Left side"
1870
  msgstr ""
1871
 
1872
+ #: themes/bauhaus/root-functions.php:294
1873
  msgid "Right side"
1874
  msgstr ""
1875
 
1876
+ #: themes/bauhaus/root-functions.php:302
1877
  msgid "Show search in header"
1878
  msgstr ""
1879
 
1880
+ #: themes/bauhaus/root-functions.php:319
1881
  msgid "Post thumbnails"
1882
  msgstr ""
1883
 
1884
+ #: themes/bauhaus/root-functions.php:324
1885
  msgid "No thumbnails"
1886
  msgstr ""
1887
 
1888
+ #: themes/bauhaus/root-functions.php:325
1889
  msgid "Blog listing only"
1890
  msgstr ""
1891
 
1892
+ #: themes/bauhaus/root-functions.php:326
1893
  msgid "Blog listing, single posts"
1894
  msgstr ""
1895
 
1896
+ #: themes/bauhaus/root-functions.php:327
1897
  msgid "Blog listing, single posts & pages"
1898
  msgstr ""
1899
 
1900
+ #: themes/bauhaus/root-functions.php:328
1901
  msgid "All (blog, single, pages, search & archive)"
1902
  msgstr ""
1903
 
1904
+ #: themes/bauhaus/root-functions.php:336
1905
  msgid "Thumbnail Type"
1906
  msgstr ""
1907
 
1908
+ #: themes/bauhaus/root-functions.php:341
1909
  msgid "Post featured images"
1910
  msgstr ""
1911
 
1912
+ #: themes/bauhaus/root-functions.php:342
1913
  msgid "Post custom field"
1914
  msgstr ""
1915
 
1916
+ #: themes/bauhaus/root-functions.php:350
1917
  msgid "Thumbnail custom field name"
1918
  msgstr ""
1919
 
1920
+ #: themes/bauhaus/root-functions.php:361
1921
  msgid "Show post categories and tags"
1922
  msgstr ""
1923
 
1924
+ #: themes/bauhaus/root-functions.php:372
1925
  msgid "Show post date"
1926
  msgstr ""
1927
 
1928
+ #: themes/bauhaus/root-functions.php:383
1929
  msgid "Show post author"
1930
  msgstr ""
1931
 
1932
+ #: themes/bauhaus/root-functions.php:394
1933
  msgid "Show comment bubbles on posts"
1934
  msgstr ""
1935
 
1936
+ #: themes/bauhaus/root-functions.php:405
1937
  msgid "Use infinite scrolling for blog"
1938
  msgstr ""
1939
 
1940
+ #: themes/bauhaus/root-functions.php:424
1941
+ msgid "Blog Appearance"
1942
+ msgstr ""
1943
+
1944
+ #: themes/bauhaus/root-functions.php:429
1945
+ msgid "List View"
1946
+ msgstr ""
1947
+
1948
+ #: themes/bauhaus/root-functions.php:430
1949
+ msgid "Carousel View"
1950
+ msgstr ""
1951
+
1952
+ #: themes/bauhaus/root-functions.php:436
1953
+ msgid "Show featured posts"
1954
+ msgstr ""
1955
+
1956
+ #: themes/bauhaus/root-functions.php:446
1957
+ msgid "Show slider nav bar"
1958
+ msgstr ""
1959
+
1960
+ #: themes/bauhaus/root-functions.php:456
1961
+ msgid "Autoplay"
1962
+ msgstr ""
1963
+
1964
+ #: themes/bauhaus/root-functions.php:466
1965
+ msgid "Show featured posts slider"
1966
+ msgstr ""
1967
+
1968
+ #: themes/bauhaus/root-functions.php:476
1969
+ msgid "Show popular posts slider"
1970
+ msgstr ""
1971
+
1972
+ #: themes/bauhaus/root-functions.php:486
1973
+ msgid "Max number of posts in popular slider"
1974
+ msgstr ""
1975
+
1976
+ #: themes/bauhaus/root-functions.php:503
1977
+ msgid "Max number of featured posts"
1978
+ msgstr ""
1979
+
1980
+ #: themes/bauhaus/root-functions.php:517
1981
+ msgid "Featured posts also show in latest posts"
1982
+ msgstr ""
1983
+
1984
+ #: themes/bauhaus/root-functions.php:527
1985
+ msgid "Featured posts to display"
1986
+ msgstr ""
1987
+
1988
+ #: themes/bauhaus/root-functions.php:532
1989
+ #: themes/foundation/modules/featured/featured.php:434
1990
+ msgid "Show latest posts"
1991
+ msgstr ""
1992
+
1993
+ #: themes/bauhaus/root-functions.php:533
1994
+ #: themes/foundation/modules/featured/featured.php:435
1995
+ msgid "Show posts from a specific tag"
1996
+ msgstr ""
1997
+
1998
+ #: themes/bauhaus/root-functions.php:534
1999
+ #: themes/foundation/modules/featured/featured.php:436
2000
+ msgid "Show posts from a specific category"
2001
+ msgstr ""
2002
+
2003
+ #: themes/bauhaus/root-functions.php:535
2004
+ #: themes/foundation/modules/featured/featured.php:437
2005
+ msgid "Show posts from a specific post type"
2006
+ msgstr ""
2007
+
2008
+ #: themes/bauhaus/root-functions.php:536
2009
+ #: themes/foundation/modules/featured/featured.php:438
2010
+ msgid "Show only specific posts or pages"
2011
+ msgstr ""
2012
+
2013
+ #: themes/bauhaus/root-functions.php:543
2014
+ #: themes/foundation/modules/featured/featured.php:444
2015
+ msgid "Only this tag"
2016
+ msgstr ""
2017
+
2018
+ #: themes/bauhaus/root-functions.php:544 themes/bauhaus/root-functions.php:554
2019
+ #: themes/foundation/modules/featured/featured.php:445
2020
+ #: themes/foundation/modules/featured/featured.php:454
2021
+ msgid "Enter the tag/category slug name"
2022
+ msgstr ""
2023
+
2024
+ #: themes/bauhaus/root-functions.php:553
2025
+ #: themes/foundation/modules/featured/featured.php:453
2026
+ msgid "Only this category"
2027
+ msgstr ""
2028
+
2029
+ #: themes/bauhaus/root-functions.php:563
2030
+ #: themes/foundation/modules/featured/featured.php:462
2031
+ msgid "Comma-separated list of post/page IDs"
2032
+ msgstr ""
2033
+
2034
+ #: themes/bauhaus/root-functions.php:576
2035
+ #: themes/foundation/modules/featured/featured.php:473
2036
+ msgid "Only this post type"
2037
+ msgstr ""
2038
+
2039
+ #: themes/bauhaus/root-functions.php:589
2040
+ msgid "Blog Featured Slider"
2041
  msgstr ""
2042
 
2043
+ #: themes/bauhaus/root-functions.php:599
2044
+ msgid "Blog Layout"
2045
  msgstr ""
2046
 
2047
  #: themes/foundation/default/formerror.php:6
2072
  msgid "Loading"
2073
  msgstr ""
2074
 
2075
+ #: themes/foundation/modules/custom-posts/custom-posts.php:163
2076
  msgid "Custom Post Support"
2077
  msgstr ""
2078
 
2079
+ #: themes/foundation/modules/custom-posts/custom-posts.php:169
2080
  msgid "Enable custom post-type support"
2081
  msgstr ""
2082
 
2083
+ #: themes/foundation/modules/custom-posts/custom-posts.php:196
2084
  msgid "Include custom post-type posts in blog index"
2085
  msgstr ""
2086
 
2087
+ #: themes/foundation/modules/custom-posts/custom-posts.php:204
2088
  msgid "Custom Post Types"
2089
  msgstr ""
2090
 
2091
+ #: themes/foundation/modules/custom-posts/custom-posts.php:210
2092
  msgid ""
2093
  "Select which custom post types WPtouch Pro should load when displaying your "
2094
  "site."
2095
  msgstr ""
2096
 
2097
  #: themes/foundation/modules/featured/featured.php:329
2098
+ msgid "Show on blog"
2099
+ msgstr ""
2100
+
2101
+ #: themes/foundation/modules/featured/featured.php:337
2102
+ msgid "Show on homepage"
2103
+ msgstr ""
2104
+
2105
+ #: themes/foundation/modules/featured/featured.php:345
2106
  msgid "Featured slider style"
2107
  msgstr ""
2108
 
2109
+ #: themes/foundation/modules/featured/featured.php:350
2110
  msgid "Enhanced"
2111
  msgstr ""
2112
 
2113
+ #: themes/foundation/modules/featured/featured.php:351
2114
  msgid "Streamlined"
2115
  msgstr ""
2116
 
2117
+ #: themes/foundation/modules/featured/featured.php:363
2118
  msgid "Slide transition Delay"
2119
  msgstr ""
2120
 
2121
+ #: themes/foundation/modules/featured/featured.php:368
2122
  msgid "Long"
2123
  msgstr ""
2124
 
2125
+ #: themes/foundation/modules/featured/featured.php:369
2126
  msgid "Normal"
2127
  msgstr ""
2128
 
2129
+ #: themes/foundation/modules/featured/featured.php:370
2130
  msgid "Short"
2131
  msgstr ""
2132
 
2133
+ #: themes/foundation/modules/featured/featured.php:376
2134
  msgid "Number of posts in slider"
2135
  msgstr ""
2136
 
 
 
 
 
 
 
 
 
2137
  #: themes/foundation/modules/featured/featured.php:389
2138
+ msgid "Show # of comments"
2139
  msgstr ""
2140
 
2141
  #: themes/foundation/modules/featured/featured.php:397
2142
+ msgid "Slide automatically"
2143
  msgstr ""
2144
 
2145
  #: themes/foundation/modules/featured/featured.php:405
2146
+ msgid "Slides repeat"
2147
  msgstr ""
2148
 
2149
  #: themes/foundation/modules/featured/featured.php:413
2150
+ msgid "Make images grayscale"
 
 
 
 
 
 
 
 
 
 
 
 
2151
  msgstr ""
2152
 
2153
  #: themes/foundation/modules/featured/featured.php:421
2154
+ msgid "Slider posts also show in listings"
 
 
 
 
 
 
 
 
2155
  msgstr ""
2156
 
2157
  #: themes/foundation/modules/featured/featured.php:429
2158
+ msgid "Posts to display"
 
 
 
 
 
 
 
 
 
 
 
 
 
2159
  msgstr ""
2160
 
2161
+ #: themes/foundation/modules/featured/featured.php:483
2162
  msgid "Featured Slider"
2163
  msgstr ""
2164
 
 
 
 
 
 
 
 
 
2165
  #: themes/foundation/modules/featured/featured.php:490
2166
+ msgid "Enable featured slider"
2167
  msgstr ""
2168
 
2169
  #: themes/foundation/modules/google-fonts/google-fonts.php:21
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: bravenewcode, duanestorey, dalemugford, adamdipardo
3
  Tags: wptouch, iphone, ipod, bravenewcode, mobile, mobile-friendly, android, blackberry, smartphone, responsive, design, mobile plugin, ios, mobile theme
4
  Requires at least: 4.2
5
- Stable tag: 4.2.6
6
  Tested up to: 4.6
7
  License: GPLv2
8
 
@@ -33,6 +33,11 @@ For more information visit [WPtouch.com](http://www.wptouch.com/?utm_campaign=wp
33
 
34
  == Changelog ==
35
 
 
 
 
 
 
36
  = Version 4.2.6 (September 16, 2016) =
37
 
38
  * Modified: Newsletter sign-up information
2
  Contributors: bravenewcode, duanestorey, dalemugford, adamdipardo
3
  Tags: wptouch, iphone, ipod, bravenewcode, mobile, mobile-friendly, android, blackberry, smartphone, responsive, design, mobile plugin, ios, mobile theme
4
  Requires at least: 4.2
5
+ Stable tag: 4.3
6
  Tested up to: 4.6
7
  License: GPLv2
8
 
33
 
34
  == Changelog ==
35
 
36
+ = Version 4.3 (September 26, 2016) =
37
+
38
+ * Added: Bauhaus 2. Updated Featured slider, may require you to set up your preferred settings again
39
+ * Fixed: Minor issues and a settings bug which could cause settings to appear unsaved in the Customizer
40
+
41
  = Version 4.2.6 (September 16, 2016) =
42
 
43
  * Modified: Newsletter sign-up information
themes/bauhaus/bauhaus-customizer.js CHANGED
@@ -1,7 +1,48 @@
1
  function doBauhausCustomizerReady() {
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  // Post thumbnails select
4
- jQuery( '[id$=_use_thumbnails]' ).on( 'change wptouch.customizerReady', 'select', function() {
5
  var thumbSetting = jQuery( '[id$=_thumbnail_type] *' );
6
 
7
  switch( jQuery( this ).val() ) {
@@ -16,17 +57,22 @@ function doBauhausCustomizerReady() {
16
 
17
  // Thumbnail Image
18
  var thumbnailSelect = jQuery( '[id$=_thumbnail_type]' );
19
-
20
- thumbnailSelect.on( 'change wptouch.customizerReady', 'select', function(){
21
  if ( jQuery( this ).val() == 'featured' ) {
22
  thumbnailSelect.next().find( '*' ).hide();
23
  } else {
24
  thumbnailSelect.next().find( '*' ).show();
25
  }
26
  });
 
 
 
 
 
27
 
28
- jQuery( '#accordion-section-foundation-web-theme-settings' ).find( 'select' ).trigger( 'wptouch.customizerReady' );
29
-
 
30
  }
31
 
32
  jQuery( window ).load( function() {
1
  function doBauhausCustomizerReady() {
2
 
3
+ // Post Listings Select
4
+ var postListingSelect = jQuery( 'select', '[id$=_post_listing_view]' );
5
+ // Popular Posts Checkbox
6
+ popularSetting = jQuery( 'input', '[id$=bauhaus_popular_enabled]' );
7
+
8
+ checkPostListingShowHide();
9
+
10
+ // check whether to show or hide all the various settings
11
+ function checkPostListingShowHide(){
12
+ postListingSelect.on( 'change wptouch.customizerReady', function(){
13
+ if ( jQuery( this ).val() != 'default' ) {
14
+ // Carousel view
15
+ jQuery( '[id$=bauhaus_featured_enabled]' ).hide();
16
+ jQuery( '[id$=post_listing_dots]' ).hide();
17
+ jQuery( '[id$=post_listing_autoplay]' ).hide();
18
+ jQuery( '[id$=bauhaus_featured_carousel_enabled]' ).show();
19
+ jQuery( '[id$=bauhaus_popular_enabled]' ).show();
20
+ } else {
21
+ jQuery( '[id$=bauhaus_featured_enabled]' ).show();
22
+ jQuery( '[id$=post_listing_dots]' ).show();
23
+ jQuery( '[id$=post_listing_autoplay]' ).show();
24
+ jQuery( '[id$=bauhaus_featured_carousel_enabled]' ).hide();
25
+ jQuery( '[id$=bauhaus_popular_enabled]' ).hide();
26
+ }
27
+ checkPopularShowHide();
28
+ });
29
+
30
+ popularSetting.on( 'change wptouch.customizerReady', function(){
31
+ checkPopularShowHide();
32
+ });
33
+ }
34
+
35
+ function checkPopularShowHide(){
36
+ if ( popularSetting.is( ':checked' ) && postListingSelect.val() == 'carousel' ) {
37
+ popularSetting.closest( 'li' ).next( 'li' ).show();
38
+ } else {
39
+ popularSetting.closest( 'li' ).next( 'li' ).hide();
40
+ }
41
+ }
42
+
43
+
44
  // Post thumbnails select
45
+ jQuery( '[id$=_use_thumbnails]' ).on( 'change wptouch.BauhausCustomizerReady', 'select', function() {
46
  var thumbSetting = jQuery( '[id$=_thumbnail_type] *' );
47
 
48
  switch( jQuery( this ).val() ) {
57
 
58
  // Thumbnail Image
59
  var thumbnailSelect = jQuery( '[id$=_thumbnail_type]' );
60
+ thumbnailSelect.on( 'change wptouch.BauhausCustomizerReady', 'select', function(){
 
61
  if ( jQuery( this ).val() == 'featured' ) {
62
  thumbnailSelect.next().find( '*' ).hide();
63
  } else {
64
  thumbnailSelect.next().find( '*' ).show();
65
  }
66
  });
67
+
68
+
69
+ if ( WPtouchCustomizer.wptouch_is_pro == 'no' ) {
70
+ postListingSelect.find( 'option[value=carousel]').attr( 'disabled','disabled' ).text( 'Carousel View (Pro Only)' );
71
+ }
72
 
73
+ // Fire a change to deal with Customizer controlof .change()
74
+ jQuery( '#customize-theme-controls' ).find( 'select' ).trigger( 'wptouch.customizerReady' );
75
+ jQuery( '#customize-theme-controls' ).find( 'input[type="checkbox"]' ).trigger( 'wptouch.BauhausCustomizerReady' );
76
  }
77
 
78
  jQuery( window ).load( function() {
themes/bauhaus/default/bauhaus.js CHANGED
@@ -10,14 +10,14 @@ function doBauhausReady() {
10
  bauhausVideoUnwrap();
11
  bauhausHandleSearch();
12
  bauhausHandlePostImgs();
 
13
  }
14
 
15
  // Spice up the appearance of Foundation's Featured Slider
16
  function bauhausSliderMods(){
17
  jQuery( '#slider a' ).each( function(){
18
- imgCloned = jQuery( this ).find( 'img' ).clone();
19
- jQuery( this ).append( imgCloned );
20
- imgCloned.addClass( 'clone' );
21
  jQuery( this ).find( 'p' ).not( 'p.featured-date' ).addClass( 'heading-font' );
22
  });
23
  }
@@ -89,4 +89,98 @@ function bauhausHandleSearch() {
89
  }
90
  }
91
 
92
- jQuery( document ).ready( function() { doBauhausReady(); } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  bauhausVideoUnwrap();
11
  bauhausHandleSearch();
12
  bauhausHandlePostImgs();
13
+ bauhausFlickity();
14
  }
15
 
16
  // Spice up the appearance of Foundation's Featured Slider
17
  function bauhausSliderMods(){
18
  jQuery( '#slider a' ).each( function(){
19
+ imgCloned = jQuery( this ).find( 'img' ).attr( 'src' );
20
+ jQuery( this ).append( '<img class="clone" src="'+imgCloned+'" alt="" />');
 
21
  jQuery( this ).find( 'p' ).not( 'p.featured-date' ).addClass( 'heading-font' );
22
  });
23
  }
89
  }
90
  }
91
 
92
+ function bauhausFlickity(){
93
+
94
+ jQuery( '.slider-latest-only .carousel' ).css({ 'height': jQuery( window ).height() });
95
+
96
+ var bauhausFriction = 0.32;
97
+ var bauhausAttraction = 0.06;
98
+ var bauhausThreshold = 15;
99
+
100
+
101
+ var recentCarousel = jQuery( '.recent-carousel' ).flickity({
102
+ friction: bauhausFriction,
103
+ selectedAttraction: bauhausAttraction,
104
+ dragThreshold: bauhausThreshold,
105
+ setGallerySize: false,
106
+ cellAlign: 'left',
107
+ wrapAround: false,
108
+ prevNextButtons: false,
109
+ pageDots: false,
110
+ imagesLoaded: true,
111
+ lazyLoad: 4
112
+ });
113
+
114
+ var carouselData = recentCarousel.data( 'flickity' );
115
+ recentCarousel.on( 'settle.flickity', function(){
116
+ // as we go along, load more
117
+ if ( carouselData.selectedIndex > carouselData.cells.length - 4 ) {
118
+ var loadMoreRecent = recentCarousel.attr( 'rel' );
119
+ jQuery.get( loadMoreRecent ).done( function( result ) {
120
+ if ( true ) {
121
+ items = jQuery( result ).find( '.recent-carousel .carousel-cell' );
122
+ recentCarousel.flickity( 'append', items );
123
+ newPageUrl = jQuery( result ).find( '.recent-carousel' ).attr( 'rel' );
124
+ recentCarousel.attr( 'rel', newPageUrl );
125
+ }
126
+ });
127
+ }
128
+ });
129
+
130
+ jQuery( '.featured-carousel' ).flickity({
131
+ friction: bauhausFriction,
132
+ selectedAttraction: bauhausAttraction,
133
+ dragThreshold: bauhausThreshold,
134
+ setGallerySize: false,
135
+ cellAlign: 'left',
136
+ freeScroll: false,
137
+ imagesLoaded: true,
138
+ wrapAround: false,
139
+ prevNextButtons: false,
140
+ pageDots: false,
141
+ lazyLoad: 1
142
+ });
143
+
144
+ jQuery( '.popular-carousel' ).flickity({
145
+ friction: bauhausFriction,
146
+ selectedAttraction: bauhausAttraction,
147
+ dragThreshold: bauhausThreshold,
148
+ setGallerySize: false,
149
+ cellAlign: 'left',
150
+ freeScroll: false,
151
+ imagesLoaded: true,
152
+ wrapAround: false,
153
+ prevNextButtons: false,
154
+ pageDots: false,
155
+ lazyLoad: 1
156
+ });
157
+
158
+ listCarousel = jQuery( '.list-view .list-carousel' );
159
+ showDots = false;
160
+ autoPlay = false;
161
+ if ( listCarousel.hasClass( 'dots' ) ) {
162
+ showDots = true;
163
+ }
164
+ if ( listCarousel.hasClass( 'autoplay' ) ) {
165
+ autoPlay = true;
166
+ }
167
+
168
+ jQuery( '.list-carousel' ).flickity({
169
+ friction: bauhausFriction,
170
+ selectedAttraction: bauhausAttraction,
171
+ dragThreshold: bauhausThreshold,
172
+ setGallerySize: false,
173
+ cellAlign: 'left',
174
+ freeScroll: false,
175
+ imagesLoaded: true,
176
+ wrapAround: false,
177
+ prevNextButtons: false,
178
+ autoPlay: autoPlay,
179
+ pageDots: showDots,
180
+ lazyLoad: 1
181
+ });
182
+
183
+ }
184
+
185
+
186
+ jQuery( document ).ready( function() { doBauhausReady(); } );
themes/bauhaus/default/featured-slider.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
- $settings = foundation_get_settings();
3
- ?>
4
- <?php
5
- $settings = foundation_get_settings();
6
- ?>
7
- <a href='<?php echo the_permalink(); ?>' class='needsclick'>
8
- <?php if ( $settings->featured_style == 'enhanced' && wptouch_get_comment_count() != 0 ) { ?>
9
- <div class='comments-number'><span><?php echo wptouch_get_comment_count(); ?></span></div>
10
- <?php } ?>
11
- <img src='<?php echo foundation_featured_get_image(); ?>' alt='<?php the_title(); ?>' / >
12
- <p class='featured-date'>
13
- <?php wptouch_the_time(); ?>
14
- <?php if ( $settings->featured_style == 'normal' && $settings->featured_comments ) { ?>
15
- &bull; <?php echo wptouch_get_comment_count() . ' comments'; ?></p>
16
- <?php } ?>
17
- <p class='featured-title'><?php the_title(); ?></p>
18
- </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
themes/bauhaus/default/functions.php CHANGED
@@ -2,7 +2,9 @@
2
 
3
  add_action( 'foundation_enqueue_scripts', 'bauhaus_enqueue_scripts' );
4
  add_filter( 'amp_should_show_featured_image_in_header', 'bauhaus_should_show_thumbnail' );
5
- add_filter( 'foundation_featured_show', 'bauhaus_show_featured_slider', 10, 2 );
 
 
6
 
7
  function bauhaus_enqueue_scripts() {
8
  wp_enqueue_script(
@@ -74,7 +76,7 @@ function bauhaus_should_show_search(){
74
  }
75
  }
76
 
77
- function bauhaus_should_show_comment_bubbles(){
78
  $settings = bauhaus_get_settings();
79
 
80
  if ( $settings->bauhaus_show_comment_bubbles ) {
@@ -94,17 +96,219 @@ function bauhaus_is_menu_position_default(){
94
  }
95
  }
96
 
97
- function bauhaus_show_featured_slider( $show_featured_slider, $featured_slider_enabled ) {
98
- if ( bauhaus_allow_featured_slider_override() ) {
99
- $settings = bauhaus_get_settings();
100
 
 
 
 
 
 
 
 
 
 
101
  global $post;
102
- if ( $settings->featured_slider_page !== false && $post->ID == $settings->featured_slider_page ) {
103
- $show_featured_slider = true;
104
- } elseif ( $settings->featured_slider_page == true ) {
105
- $show_featured_slider = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  }
 
 
107
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
 
109
- return $show_featured_slider;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  add_action( 'foundation_enqueue_scripts', 'bauhaus_enqueue_scripts' );
4
  add_filter( 'amp_should_show_featured_image_in_header', 'bauhaus_should_show_thumbnail' );
5
+ add_action( 'wp_loaded', 'bauhaus_featured_setup' );
6
+ global $bauhaus_featured_args;
7
+ global $bauhaus_featured_posts;
8
 
9
  function bauhaus_enqueue_scripts() {
10
  wp_enqueue_script(
76
  }
77
  }
78
 
79
+ function bauhaus_should_show_comments(){
80
  $settings = bauhaus_get_settings();
81
 
82
  if ( $settings->bauhaus_show_comment_bubbles ) {
96
  }
97
  }
98
 
99
+ function bauhaus_is_latest_only(){
100
+ $settings = bauhaus_get_settings();
 
101
 
102
+ if ( $settings->bauhaus_featured_carousel_enabled == false && $settings->bauhaus_popular_enabled == false ) {
103
+ return true;
104
+ } else {
105
+ return false;
106
+ }
107
+ }
108
+
109
+ function bauhaus_get_featured_image( $post = false ) {
110
+ if ( !$post ) {
111
  global $post;
112
+ }
113
+
114
+ $image = get_the_post_thumbnail( $post->ID, 'foundation-featured-image' );
115
+
116
+ if ( preg_match( '#src=\"(.*)\"#iU', $image, $matches ) ) {
117
+ $image = $matches[1];
118
+
119
+ $our_size = sprintf( "%d", WPTOUCH_FEATURED_SIZE );
120
+ if ( strpos( $image, $our_size ) === false ) {
121
+ // It's not our image, so just use the WP medium size
122
+ $image = get_the_post_thumbnail( $post->ID, 'large' );
123
+ if ( preg_match( '#src=\"(.*)\"#iU', $image, $matches ) ) {
124
+ $image = $matches[1];
125
+ }
126
+ }
127
+ }
128
+
129
+ return apply_filters( 'wptouch_get_post_thumbnail', $image );
130
+ }
131
+
132
+ function bauhaus_featured_setup() {
133
+ $settings = bauhaus_get_settings();
134
+ if ( wptouch_is_showing_mobile_theme_on_mobile_device() && !is_admin() ) {
135
+ if ( function_exists( 'add_theme_support' ) ) {
136
+ add_theme_support( 'post-thumbnails' );
137
+ }
138
+
139
+ global $bauhaus_featured_posts;
140
+ $settings = bauhaus_get_settings();
141
+ $args = bauhaus_featured_get_args();
142
+
143
+ $slides = bauhaus_featured_get_posts();
144
+
145
+ $slide_count = 0;
146
+ if ( $slides->post_count > 0 ) {
147
+ while ( $slides->have_posts() ) {//} && $slide_count < $args[ 'num' ] ) {
148
+ $slides->the_post();
149
+ $image = bauhaus_featured_has_image();
150
+ $slide_count++;
151
+ $bauhaus_featured_posts[] = get_the_ID();
152
+ }
153
  }
154
+
155
+ add_filter( 'parse_query', 'bauhaus_featured_modify_query' );
156
  }
157
+ }
158
+
159
+ function bauhaus_featured_modify_query( $query ) {
160
+ if ( $query->is_main_query() ) {
161
+ $settings = bauhaus_get_settings();
162
+
163
+ if ( bauhaus_is_latest_only() || $settings->bauhaus_featured_filter_posts ) {
164
+ return;
165
+ }
166
+
167
+ $should_modify_query = apply_filters(
168
+ 'bauhaus_featured_should_modify_query',
169
+ ( $query->is_single || $query->is_page || $query->is_feed || $query->is_search || $query->is_archive || $query->is_category ) == false,
170
+ $query
171
+ );
172
+
173
+ if ( $should_modify_query === false ) {
174
+ return;
175
+ }
176
+
177
+ global $bauhaus_featured_posts;
178
+
179
+ $post_array = array();
180
 
181
+ if ( is_array( $bauhaus_featured_posts ) && count( $bauhaus_featured_posts ) > 0 ) {
182
+ foreach( $bauhaus_featured_posts as $post_id ) {
183
+ $post_array[] = '-' . $post_id;
184
+ }
185
+ }
186
+
187
+ $query->query_vars[ 'post__not_in'] = $post_array;
188
+
189
+ return $query;
190
+ }
191
+ }
192
+
193
+ function bauhaus_featured_get_args() {
194
+ $settings = bauhaus_get_settings();
195
+ $max_posts = $settings->bauhaus_featured_max_number_of_posts;
196
+
197
+ global $bauhaus_featured_args;
198
+
199
+ $defaults = array(
200
+ 'type' => 'post',
201
+ 'num' => $max_posts,
202
+ 'before' => '',
203
+ 'after' => '',
204
+ 'max_search' => $max_posts * 1.5,
205
+ 'ignore_sticky_posts' => 1
206
+ );
207
+ // Parse defaults into arguments
208
+ return wp_parse_args( $bauhaus_featured_args, $defaults );
209
  }
210
+
211
+ function bauhaus_featured_get_posts() {
212
+ global $post;
213
+
214
+ $settings = bauhaus_get_settings();
215
+
216
+ $bauhaus_featured_posts = array();
217
+
218
+ $args = bauhaus_featured_get_args();
219
+
220
+ $new_posts = false;
221
+ switch( $settings->bauhaus_featured_type ) {
222
+ case 'tag':
223
+ $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => $args[ 'max_search' ], 'tag' => $settings->bauhaus_featured_tag, 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
224
+ break;
225
+ case 'category':
226
+ $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => $args[ 'max_search' ], 'category_name' => $settings->bauhaus_featured_category, 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
227
+ break;
228
+ case 'posts':
229
+ if ( function_exists( 'wptouch_custom_posts_add_to_search' ) ) {
230
+ $post_types = wptouch_custom_posts_add_to_search( array( 'post', 'page' ) );
231
+ } else {
232
+ $post_types = array( 'post', 'page' );
233
+ }
234
+ $post_ids = explode( ',', str_replace( ' ', '', $settings->bauhaus_featured_post_ids ) );
235
+ if ( is_array( $post_ids ) && count( $post_ids ) ) {
236
+ $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'post__in' => $post_ids, 'posts_per_page' => $args[ 'max_search' ], 'post_type' => $post_types, 'orderby' => 'post__in' , 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
237
+ }
238
+ break;
239
+ case 'post_type':
240
+ $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'post_type' => $settings->bauhaus_featured_post_type, 'posts_per_page' => $args[ 'max_search' ], 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
241
+ break;
242
+ case 'latest':
243
+ default:
244
+ $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => $args[ 'max_search' ], 'meta_query' => array( array( 'key' => '_thumbnail_id' ) ) ) );
245
+ break;
246
+ }
247
+
248
+ return $new_posts;
249
+ }
250
+
251
+ function bauhaus_featured_has_image( $post = false ) {
252
+ if ( !$post ) {
253
+ global $post;
254
+ }
255
+
256
+ $image = get_the_post_thumbnail( $post->ID, 'large' );
257
+
258
+ if ( $image ) {
259
+ return true;
260
+ } else {
261
+ return false;
262
+ }
263
+ }
264
+
265
+ function bauhaus_should_show_featured() {
266
+ $settings = bauhaus_get_settings();
267
+ $should_show = ( ( is_home() || is_front_page() ) && $settings->bauhaus_featured_enabled );
268
+
269
+ return apply_filters( 'bauhaus_featured_show', $should_show, $settings->bauhaus_featured_enabled );
270
+ }
271
+
272
+ function bauhaus_should_show_carousel_featured() {
273
+ $settings = bauhaus_get_settings();
274
+ $should_show = ( ( is_home() || is_front_page() ) && $settings->bauhaus_featured_carousel_enabled );
275
+
276
+ return apply_filters( 'bauhaus_featured_carousel_show', $should_show, $settings->bauhaus_featured_carousel_enabled );
277
+ }
278
+
279
+ function bauhaus_featured_slider() {
280
+ global $bauhaus_featured_posts;
281
+ $settings = bauhaus_get_settings();
282
+ $args = bauhaus_featured_get_args();
283
+ $classes = [];
284
+ if ( $settings->bauhaus_post_listing_autoplay ) {
285
+ $classes[] = 'autoplay';
286
+ }
287
+
288
+ if ( $settings->bauhaus_post_listing_dots ) {
289
+ $classes[] = 'dots';
290
+ }
291
+
292
+ if ( function_exists( 'wptouch_custom_posts_add_to_search' ) ) {
293
+ $post_types = wptouch_custom_posts_add_to_search( array( 'post', 'page' ) );
294
+ } else {
295
+ $post_types = array( 'post', 'page' );
296
+ }
297
+
298
+ $slides = new WP_Query( array( 'ignore_sticky_posts' => 1, 'post__in' => $bauhaus_featured_posts, 'post_type' => $post_types, 'posts_per_page' => $settings->bauhaus_featured_max_number_of_posts ) );
299
+
300
+ if ( $slides->post_count > 0 ) {
301
+
302
+ echo '<div class="carousel list-carousel ' . implode( ' ', $classes ) .'">';
303
+
304
+ while ( $slides->have_posts() ) {
305
+ $slides->the_post();
306
+ echo '<div class="carousel-cell">';
307
+ get_template_part( 'layouts/carousel-post-loop' );
308
+ echo '</div>';
309
+ }
310
+
311
+ echo '</div>';
312
+
313
+ }
314
+ }
themes/bauhaus/default/header-bottom.php CHANGED
@@ -55,10 +55,6 @@
55
 
56
  <?php do_action( 'wptouch_advertising_top' ); ?>
57
 
58
- <?php if ( function_exists( 'foundation_featured_slider' ) ) { ?>
59
- <?php foundation_featured_slider(); ?>
60
- <?php } ?>
61
-
62
  <?php if ( is_archive() ) { ?>
63
  <div class="post-page-head-area bauhaus">
64
  <?php wptouch_fdn_archive_title_text(); ?>
55
 
56
  <?php do_action( 'wptouch_advertising_top' ); ?>
57
 
 
 
 
 
58
  <?php if ( is_archive() ) { ?>
59
  <div class="post-page-head-area bauhaus">
60
  <?php wptouch_fdn_archive_title_text(); ?>
themes/bauhaus/default/index.php CHANGED
@@ -1,39 +1,16 @@
1
  <?php get_header(); ?>
2
 
3
- <div id="content">
4
-
5
- <?php if ( wptouch_have_posts() ) while ( wptouch_have_posts() ) { ?>
6
- <?php wptouch_the_post(); ?>
7
- <div class="<?php wptouch_post_classes(); ?>">
8
- <?php get_template_part( 'post-loop' ); ?>
9
- </div> <!-- post classes -->
10
- <?php } else { ?>
11
- <!-- no posts -->
12
  <?php } ?>
13
 
14
- <?php if ( foundation_is_theme_using_module( 'infinite-scroll' ) ) { ?>
15
-
16
- <?php if ( get_next_posts_link() ) { ?>
17
- <!-- hidden in css, needed to add js -->
18
- <a class="infinite-link" href="#" rel="<?php echo get_next_posts_page_link(); ?>"></a>
19
- <?php } ?>
20
-
21
- <?php } elseif ( foundation_is_theme_using_module( 'load-more' ) ) { ?>
22
-
23
- <!-- show the load more if we have more posts/pages -->
24
- <?php if ( get_next_posts_link() ) { ?>
25
- <a class="load-more-link tappable no-ajax" href="javascript:return false;" rel="<?php echo get_next_posts_page_link(); ?>">
26
- <?php wptouch_fdn_archive_load_more_text(); ?>&hellip;
27
- </a>
28
- <?php } ?>
29
-
30
- <?php } else { ?>
31
-
32
- <div class="posts-nav">
33
- <?php posts_nav_link( ' | ', '&lsaquo; ' . __( 'newer posts', 'wptouch-pro' ), __( 'older posts', 'wptouch-pro' ) . ' &rsaquo;' ); ?>
34
- </div>
35
 
36
- <?php } ?>
 
 
 
 
37
 
38
  </div><!-- #content -->
39
 
1
  <?php get_header(); ?>
2
 
3
+ <?php if ( !bauhaus_if_carousel_view_enabled() && bauhaus_should_show_featured() ) { ?>
4
+ <?php bauhaus_featured_slider(); ?>
 
 
 
 
 
 
 
5
  <?php } ?>
6
 
7
+ <div id="content">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
+ <?php if ( bauhaus_if_carousel_view_enabled() ) {
10
+ get_template_part( '/layouts/carousel-view' );
11
+ } else {
12
+ get_template_part( '/layouts/post-listing-view' );
13
+ } ?>
14
 
15
  </div><!-- #content -->
16
 
themes/bauhaus/default/layouts/carousel-post-loop.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- post loop -->
2
+ <div rel="<?php wptouch_the_permalink(); ?>">
3
+
4
+ <a href="<?php wptouch_the_permalink(); ?>" class="needsclick">
5
+ <img data-flickity-lazyload="<?php echo bauhaus_get_featured_image(); ?>" alt="<?php the_title(); ?>" />
6
+ </a>
7
+
8
+ <?php if ( bauhaus_should_show_date() || bauhaus_should_show_author() || bauhaus_should_show_comments() ) { ?>
9
+ <span class="post-meta body-font">
10
+
11
+ <?php if ( bauhaus_should_show_date() ) { ?>
12
+ <?php wptouch_the_time(); ?>
13
+ <?php } ?>
14
+
15
+ <?php if ( bauhaus_should_show_author() ) { ?>
16
+ <?php if ( bauhaus_should_show_date() ) echo '&bull;'; ?> <?php _e( 'by', 'wptouch-pro' ); ?> <?php the_author(); ?>
17
+ <?php } ?>
18
+
19
+ <?php if ( wptouch_get_comment_count() > 0 && ( comments_open() || bauhaus_should_show_comments() ) ) { ?>
20
+ <?php if ( bauhaus_should_show_date() || bauhaus_should_show_author() ) echo '<br />'; ?> <?php comments_number( 'no comments', '1 comment', '% comments' ); ?>
21
+ <?php } ?>
22
+ </span>
23
+ <?php } ?>
24
+
25
+ <a href="<?php wptouch_the_permalink(); ?>" class="needsclick">
26
+ <h2 class="post-title heading-font"><?php the_title(); ?></h2>
27
+ </a>
28
+
29
+ </div>
themes/bauhaus/default/layouts/carousel-view.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php $settings = bauhaus_get_settings(); ?>
2
+
3
+ <div class="flickity-view">
4
+
5
+ <?php if ( !bauhaus_is_latest_only() ) { ?>
6
+ <h2><?php _e( 'Latest', 'wptouch-pro' ); ?></h2>
7
+ <?php } ?>
8
+
9
+ <div rel="<?php echo get_next_posts_page_link(); ?>" class="carousel recent-carousel">
10
+ <?php if ( wptouch_have_posts() ) while ( wptouch_have_posts() ) { wptouch_the_post(); ?>
11
+ <?php if ( wptouch_has_post_thumbnail() ) { ?>
12
+ <div class="carousel-cell">
13
+ <?php get_template_part( 'layouts/carousel-post-loop' ); ?>
14
+ </div>
15
+ <?php } ?>
16
+ <?php } ?>
17
+ </div>
18
+
19
+ <?php if ( bauhaus_should_show_carousel_featured() ) { ?>
20
+ <h2><?php _e( 'Featured', 'wptouch-pro' ); ?></h2>
21
+ <?php bauhaus_featured_slider(); ?>
22
+ <?php } ?>
23
+
24
+ <?php if ( bauhaus_if_popular_enabled() ) { $max_pop_posts = $settings->bauhaus_popular_max_number_of_posts; ?>
25
+ <h2><?php _e( 'Popular', 'wptouch-pro' ); ?></h2>
26
+
27
+ <div class="carousel popular-carousel">
28
+ <?php $popular = new WP_Query( array( 'ignore_sticky_posts' => 1, 'orderby' => 'comment_count', 'posts_per_page' => $max_pop_posts, 'meta_query' => array( array('key' => '_thumbnail_id') ) ) ); ?>
29
+ <?php if ( $popular->have_posts() ) while ( $popular->have_posts() ) : $popular->the_post(); ?>
30
+ <div class="carousel-cell">
31
+ <?php get_template_part( 'layouts/carousel-post-loop' ); ?>
32
+ </div>
33
+ <?php endwhile; ?>
34
+ <?php wp_reset_postdata(); ?>
35
+ </div>
36
+ <?php } ?>
37
+
38
+ </div>
themes/bauhaus/default/layouts/post-listing-view.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if ( wptouch_have_posts() ) while ( wptouch_have_posts() ) { ?>
2
+ <?php wptouch_the_post(); ?>
3
+ <div class="<?php wptouch_post_classes(); ?>">
4
+ <?php get_template_part( 'post-loop' ); ?>
5
+ </div> <!-- post classes -->
6
+ <?php } else { ?>
7
+ <!-- no posts -->
8
+ <?php } ?>
9
+
10
+ <?php if ( foundation_is_theme_using_module( 'infinite-scroll' ) ) { ?>
11
+
12
+ <?php if ( get_next_posts_link() ) { ?>
13
+ <!-- hidden in css, needed to add js -->
14
+ <a class="infinite-link" href="#" rel="<?php echo get_next_posts_page_link(); ?>"></a>
15
+ <?php } ?>
16
+
17
+ <?php } elseif ( foundation_is_theme_using_module( 'load-more' ) ) { ?>
18
+
19
+ <!-- show the load more if we have more posts/pages -->
20
+ <?php if ( get_next_posts_link() ) { ?>
21
+ <a class="load-more-link tappable no-ajax" href="javascript:return false;" rel="<?php echo get_next_posts_page_link(); ?>">
22
+ <?php wptouch_fdn_archive_load_more_text(); ?>&hellip;
23
+ </a>
24
+ <?php } ?>
25
+
26
+ <?php } else { ?>
27
+
28
+ <div class="posts-nav">
29
+ <?php posts_nav_link( ' | ', '&lsaquo; ' . __( 'newer posts', 'wptouch-pro' ), __( 'older posts', 'wptouch-pro' ) . ' &rsaquo;' ); ?>
30
+ </div>
31
+
32
+ <?php } ?>
themes/bauhaus/default/page-content.php CHANGED
@@ -1,13 +1,13 @@
1
  <div class="<?php wptouch_post_classes(); ?>">
2
  <div class="post-page-head-area bauhaus">
3
  <h2 class="post-title heading-font"><?php the_title(); ?></h2>
4
- </div>
5
- <div class="post-page-content">
6
  <?php if ( bauhaus_should_show_thumbnail() && wptouch_has_post_thumbnail() ) { ?>
7
  <div class="post-page-thumbnail">
8
  <?php the_post_thumbnail('large', array( 'class' => 'post-thumbnail wp-post-image' ) ); ?>
9
  </div>
10
  <?php } ?>
11
- <?php wptouch_the_content() ; ?>
 
 
12
  </div>
13
  </div>
1
  <div class="<?php wptouch_post_classes(); ?>">
2
  <div class="post-page-head-area bauhaus">
3
  <h2 class="post-title heading-font"><?php the_title(); ?></h2>
 
 
4
  <?php if ( bauhaus_should_show_thumbnail() && wptouch_has_post_thumbnail() ) { ?>
5
  <div class="post-page-thumbnail">
6
  <?php the_post_thumbnail('large', array( 'class' => 'post-thumbnail wp-post-image' ) ); ?>
7
  </div>
8
  <?php } ?>
9
+ </div>
10
+ <div class="post-page-content">
11
+ <?php wptouch_the_content(); ?>
12
  </div>
13
  </div>
themes/bauhaus/default/post-loop.php CHANGED
@@ -1,11 +1,6 @@
1
  <!-- post loop -->
2
  <a href="<?php wptouch_the_permalink(); ?>" class="loop-link tappable clearfix <?php if ( !bauhaus_should_show_thumbnail() ) { echo 'no-thumbs'; } ?>">
3
 
4
- <?php if ( wptouch_get_comment_count() > 0 && ( comments_open() || wptouch_have_comments() ) ) { ?>
5
- <div class="comments">
6
- <span><?php wptouch_the_comment_count(); ?></span>
7
- </div>
8
- <?php } ?>
9
  <?php if ( bauhaus_should_show_thumbnail() && wptouch_has_post_thumbnail() ) { ?>
10
  <img src="<?php wptouch_the_post_thumbnail( 'thumbnail' ); ?>" alt="thumbnail" class="post-thumbnail wp-post-image" />
11
  <?php } else if ( bauhaus_should_show_thumbnail() && !wptouch_has_post_thumbnail() ) { ?>
@@ -16,7 +11,7 @@
16
  <?php } ?>
17
 
18
  <?php if ( bauhaus_should_show_date() || bauhaus_should_show_author() ) { ?>
19
- <span class="post-date-author body-font">
20
  <?php if ( bauhaus_should_show_date() ) { wptouch_the_time(); } ?>
21
  <?php if ( bauhaus_should_show_author() ) { ?>
22
  <?php if ( bauhaus_should_show_date() ) echo '&bull;'; ?> <?php _e( 'by', 'wptouch-pro' ); ?> <?php the_author(); ?>
@@ -25,6 +20,12 @@
25
  <?php } ?>
26
 
27
  <h2 class="post-title heading-font"><?php the_title(); ?></h2>
 
 
 
 
 
 
28
 
29
  <?php if ( wptouch_should_load_rtl() ) { ?>
30
  <i class="arrow wptouch-icon-angle-left"></i>
1
  <!-- post loop -->
2
  <a href="<?php wptouch_the_permalink(); ?>" class="loop-link tappable clearfix <?php if ( !bauhaus_should_show_thumbnail() ) { echo 'no-thumbs'; } ?>">
3
 
 
 
 
 
 
4
  <?php if ( bauhaus_should_show_thumbnail() && wptouch_has_post_thumbnail() ) { ?>
5
  <img src="<?php wptouch_the_post_thumbnail( 'thumbnail' ); ?>" alt="thumbnail" class="post-thumbnail wp-post-image" />
6
  <?php } else if ( bauhaus_should_show_thumbnail() && !wptouch_has_post_thumbnail() ) { ?>
11
  <?php } ?>
12
 
13
  <?php if ( bauhaus_should_show_date() || bauhaus_should_show_author() ) { ?>
14
+ <span class="post-meta body-font">
15
  <?php if ( bauhaus_should_show_date() ) { wptouch_the_time(); } ?>
16
  <?php if ( bauhaus_should_show_author() ) { ?>
17
  <?php if ( bauhaus_should_show_date() ) echo '&bull;'; ?> <?php _e( 'by', 'wptouch-pro' ); ?> <?php the_author(); ?>
20
  <?php } ?>
21
 
22
  <h2 class="post-title heading-font"><?php the_title(); ?></h2>
23
+
24
+ <?php if ( comments_open() || wptouch_have_comments() ) { ?>
25
+ <div class="post-meta comments">
26
+ <?php comments_number( 'no comments', 'one comment', '% comments' ); ?>
27
+ </div>
28
+ <?php } ?>
29
 
30
  <?php if ( wptouch_should_load_rtl() ) { ?>
31
  <i class="arrow wptouch-icon-angle-left"></i>
themes/bauhaus/default/related-posts.php CHANGED
@@ -5,23 +5,20 @@
5
  <ul class="related">
6
  <?php $related_posts = wptouch_related_posts(); ?>
7
  <?php foreach( $related_posts as $related_post ) { ?>
8
- <li class="<?php if ( $related_post->thumbnail != '' ) echo 'has-thumb'; ?><?php if ( $related_post->excerpt == '' ) { echo ' no-excerpt'; } ?>">
9
- <?php
10
- if ( $related_post->thumbnail != '' ) {
11
- echo $related_post->thumbnail;
12
- } else {
13
- ?>
14
- <div class="date-circle">
15
- <span class="month"><?php echo $related_post->month; ?></span>
16
- <span class="day"><?php echo $related_post->day; ?></span>
17
- </div>
18
- <?php
19
- }
20
- ?>
21
- <strong><a href="<?php echo $related_post->link; ?>"><?php echo $related_post->title; ?></a></strong>
22
- <p><?php echo $related_post->excerpt; ?></p>
23
- </li>
24
- <?php } ?>
25
  </ul>
26
  </div>
27
  <?php } ?>
5
  <ul class="related">
6
  <?php $related_posts = wptouch_related_posts(); ?>
7
  <?php foreach( $related_posts as $related_post ) { ?>
8
+ <li class="<?php if ( $related_post->thumbnail != '' ) echo 'has-thumb'; ?><?php if ( $related_post->excerpt == '' ) { echo ' no-excerpt'; } ?>">
9
+ <?php if ( $related_post->thumbnail != '' ) { ?>
10
+ <?php echo $related_post->thumbnail; ?>
11
+ <?php } ?>
12
+ <div class="date-circle">
13
+ <span class="month"><?php echo $related_post->month; ?></span>
14
+ <span class="day"><?php echo $related_post->day; ?></span>
15
+ </div>
16
+ <strong>
17
+ <a href="<?php echo $related_post->link; ?>"><?php echo $related_post->title; ?></a>
18
+ </strong>
19
+ <p><?php echo $related_post->excerpt; ?></p>
20
+ </li>
21
+ <?php } // each related post ?>
 
 
 
22
  </ul>
23
  </div>
24
  <?php } ?>
themes/bauhaus/default/single.php CHANGED
@@ -11,7 +11,7 @@
11
  <?php if ( bauhaus_should_show_date() ) { ?>
12
  <?php wptouch_the_time(); ?>
13
  <?php } ?>
14
- <?php if ( bauhaus_should_show_comment_bubbles() ) { ?>
15
  <?php if ( bauhaus_should_show_date() && ( comments_open() || wptouch_have_comments() ) ) echo '&bull;'; ?>
16
  <?php if ( comments_open() || wptouch_have_comments() ) comments_number( __( 'no comments', 'wptouch-pro' ), __( '1 comment', 'wptouch-pro' ), __( '% comments', 'wptouch-pro' ) ); ?>
17
  <?php } ?>
@@ -20,14 +20,14 @@
20
  <?php if ( bauhaus_should_show_author() ) { ?>
21
  <span class="post-author"><?php the_author(); ?></span>
22
  <?php } ?>
23
- </div>
24
-
25
- <div class="post-page-content">
26
  <?php if ( bauhaus_should_show_thumbnail() && wptouch_has_post_thumbnail() ) { ?>
27
  <div class="post-page-thumbnail">
28
  <?php the_post_thumbnail('large', array( 'class' => 'post-thumbnail wp-post-image' ) ); ?>
29
  </div>
30
  <?php } ?>
 
 
 
31
  <?php wptouch_the_content(); ?>
32
  <?php if ( bauhaus_should_show_taxonomy() ) { ?>
33
  <?php if ( wptouch_has_categories() || wptouch_has_tags() ) { ?>
@@ -40,9 +40,6 @@
40
  <?php } ?>
41
  </div>
42
  <?php } ?>
43
-
44
- <?php if ( wptouch_has_tags() ) { ?>
45
- <?php } ?>
46
  <?php } ?>
47
  </div>
48
  </div>
11
  <?php if ( bauhaus_should_show_date() ) { ?>
12
  <?php wptouch_the_time(); ?>
13
  <?php } ?>
14
+ <?php if ( bauhaus_should_show_comments() ) { ?>
15
  <?php if ( bauhaus_should_show_date() && ( comments_open() || wptouch_have_comments() ) ) echo '&bull;'; ?>
16
  <?php if ( comments_open() || wptouch_have_comments() ) comments_number( __( 'no comments', 'wptouch-pro' ), __( '1 comment', 'wptouch-pro' ), __( '% comments', 'wptouch-pro' ) ); ?>
17
  <?php } ?>
20
  <?php if ( bauhaus_should_show_author() ) { ?>
21
  <span class="post-author"><?php the_author(); ?></span>
22
  <?php } ?>
 
 
 
23
  <?php if ( bauhaus_should_show_thumbnail() && wptouch_has_post_thumbnail() ) { ?>
24
  <div class="post-page-thumbnail">
25
  <?php the_post_thumbnail('large', array( 'class' => 'post-thumbnail wp-post-image' ) ); ?>
26
  </div>
27
  <?php } ?>
28
+ </div>
29
+
30
+ <div class="post-page-content">
31
  <?php wptouch_the_content(); ?>
32
  <?php if ( bauhaus_should_show_taxonomy() ) { ?>
33
  <?php if ( wptouch_has_categories() || wptouch_has_tags() ) { ?>
40
  <?php } ?>
41
  </div>
42
  <?php } ?>
 
 
 
43
  <?php } ?>
44
  </div>
45
  </div>
themes/bauhaus/default/style.css CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  /* Bauhaus CSS */
2
 
3
  /*
@@ -11,7 +16,15 @@ body {
11
  }
12
 
13
  h1, h2, h3, h4, h5, h6 {
14
- letter-spacing: -1px;
 
 
 
 
 
 
 
 
15
  }
16
 
17
  .page-wrapper {
@@ -23,7 +36,6 @@ h1, h2, h3, h4, h5, h6 {
23
 
24
  header a, header div {
25
  color: rgba(0,0,0,.9);
26
- text-shadow: rgba(255,255,255,.2) 0px 1px 0px;
27
  }
28
 
29
  header {
@@ -129,16 +141,17 @@ header img {
129
  #wptouch-search-inner {
130
  background-color: rgba(0,0,0,.1);
131
  text-align: center;
132
- padding: 3px;
133
  }
134
 
135
  #wptouch-search-inner input[type="text"] {
136
- width: 65%;
137
  -webkit-appearance: none;
138
- border: 1px solid rgba(0,0,0,.3);
139
  padding: 4px;
140
  background-color: rgba(255,255,255,.9);
141
  font-size: 90%;
 
 
142
  }
143
 
144
  #wptouch-search-inner input[type="text"]:focus {
@@ -146,8 +159,9 @@ header img {
146
  }
147
 
148
  #wptouch-search-inner input[type="submit"] {
 
149
  border: 1px solid rgba(0,0,0,.2);
150
- padding: 2px 10px 4px;
151
  -webkit-appearance: none;
152
  background-color: rgba(255,255,255,.1);
153
  color: rgba(0,0,0,.8);
@@ -158,11 +172,11 @@ header img {
158
  #search-dropper {
159
  overflow: hidden;
160
  max-height: 0;
161
- -webkit-transition: max-height 400ms ease;
162
  }
163
 
164
  #search-dropper.toggled {
165
- max-height: 50px;
166
  }
167
 
168
  .touched {
@@ -170,176 +184,102 @@ header img {
170
  }
171
 
172
  .page-wrapper .wptouch-custom-showcase {
173
- margin: 0 0 -3px;
174
  }
175
 
176
  /* @end */
177
 
178
- /* @group Slider */
179
 
180
- /* @group Normal */
181
 
182
- #slider.normal a p.featured-date {
183
- font-size: 80%;
184
- display: block;
185
- text-align: center;
186
- text-shadow: none;
187
- text-transform: uppercase;
188
- top: 50%;
189
- color: rgba(255,255,255,.6);
190
- height: 130px;
191
- margin-top: -65px;
192
  }
193
 
194
- #slider.normal p.heading-font {
195
- text-align: center;
196
- font-size: 24px;
197
- line-height: 32px;
198
- top: 50%;
199
- height: 84px;
200
- margin: -42px auto 0;
201
- display: block;
202
- display: -webkit-box;
203
- max-width: 90%;
204
- overflow: hidden;
205
- text-overflow: ellipsis;
206
- -ms-text-overflow: ellipsis;
207
- -webkit-line-clamp: 3;
208
- -webkit-box-orient: vertical;
209
- vertical-align: middle;
210
  }
211
 
212
- #slider.normal img {
213
- opacity: .8;
214
- -webkit-filter: blur(1px);
215
  }
216
 
217
-
218
-
219
- /* @end */
220
-
221
- /* @group Enhanced Slider */
222
-
223
- #slider.enhanced a p.featured-date {
224
- color: #999;
225
- font-size: 80%;
226
- top: 15px;
227
- display: block;
228
- text-align: left;
229
- left: 110px;
230
- text-shadow: none;
231
- text-transform: uppercase;
232
  }
233
 
234
- #slider.enhanced a p.heading-font {
235
- position: absolute;
236
- top: 30px;
237
- left: 110px;
238
- text-align: left;
239
- text-shadow: rgba(0,0,0,.2) 0px 1px 0px;
240
- letter-spacing: -1px;
241
- font-weight: normal;
242
  overflow: hidden;
243
- -o-text-overflow: ellipsis;
244
- -ms-text-overflow: ellipsis;
245
- text-overflow: ellipsis;
246
- -webkit-box-orient: vertical;
247
- -moz-box-orient: vertical;
248
- -ms-box-orient: vertical;
249
- box-orient: vertical;
250
- display: -webkit-box;
251
- -webkit-line-clamp: 4;
252
- padding-right: 5%;
253
- margin: 3px 0 0;
254
- font-size: 160%;
255
- line-height: 115%;
256
- height: 4.2em;
257
- word-wrap: break-word;
258
- }
259
 
260
- .landscape #slider.enhanced a p.heading-font, .landscape #slider.enhanced a p.featured-date {
261
- left: 160px;
262
- }
263
-
264
- #slider.enhanced.comments .comments-number {
265
- display: block;
266
  position: absolute;
267
- z-index: 1;
268
- top: 5px;
269
- left: 80px;
270
- text-align: center;
271
- width: 18px;
272
- }
273
-
274
- #slider.enhanced.comments .comments-number span {
275
- color: white;
276
- z-index: 3;
277
- position: relative;
278
- font-size: 95%;
279
- font-weight: bold;
280
- margin-left: -25%;
281
- top: 10px;
282
  }
283
 
284
- #slider.enhanced.comments .comments-number:after {
285
- content: "\e812";
286
- display: block;
287
- font: 36px 'wptouch-icons', sans-serif;
288
  position: absolute;
289
- top: 0;
290
- left: -65%;
291
- }
292
-
293
- #slider.enhanced img {
294
- -webkit-filter: blur(2px) saturate(200%);
295
- opacity: .2;
 
 
 
 
 
 
296
  }
297
 
298
- #slider.enhanced img.clone {
299
- width: 210px;
300
- height: 210px;
301
  position: absolute;
302
- top: 5px;
303
- left: -70px;
304
- -webkit-filter: none;
305
- opacity: 1;
306
- }
307
-
308
- /* @end */
309
-
310
- #slider {
311
- background: rgba(0,0,0,.85);
312
- text-shadow: rgba(0,0,0,.1) 0px 1px 1px;
313
- }
314
-
315
- #slider .owl-item {
316
- height: 220px;
317
- overflow: hidden;
318
- }
319
-
320
- #slider p {
321
- background: none;
322
- }
323
-
324
- .owl-dots {
325
  right: 0;
326
  left: 0;
327
- height: 20px;
328
- top: 190px;
329
  }
330
 
331
- .landscape .owl-dots {
332
- top: 240px;
333
- }
334
 
335
- #slider.grayscale img {
336
- -webkit-filter: saturate(100%) grayscale(1) contrast(1.1);
337
- }
338
 
339
  /* @end */
340
 
341
- /* @group Post Loop */
342
-
343
  .loop-link {
344
  display: block;
345
  position: relative;
@@ -356,34 +296,38 @@ header img {
356
  margin-top: -18px;
357
  }
358
 
359
- .loop-link .post-date-author {
360
  color: rgba(0,0,0,.5);
361
  display: block;
362
  font-size: 70%;
363
- margin-left: 50px;
364
  padding-top: 10px;
365
  text-transform: uppercase;
366
  }
367
 
 
 
 
 
368
  #content .loop-link h2 {
369
  display: inline-block;
370
- width: 60%;
371
  font-size: 130%;
372
  line-height: 130%;
373
- margin: 0;
374
  padding-bottom: 10px;
375
  overflow: hidden;
376
  font-weight: normal;
377
  font-style: normal;
 
378
  }
379
 
380
  .loop-link img.post-thumbnail {
381
  width: 64px;
382
  height: 64px;
383
  margin: 12px 10px 0;
384
- float: left;
385
  z-index: 1;
386
- position: relative;
387
  }
388
 
389
  .loop-link .date-circle,
@@ -448,58 +392,164 @@ header img {
448
  left: 40px;
449
  }
450
 
451
- .no-thumbs.loop-link .post-date-author, #content .no-thumbs.loop-link h2 {
452
  margin-left: 40px;
453
  }
454
 
455
- /* @group Comment Bubble */
 
 
456
 
457
- .loop-link .comments {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  position: absolute;
459
- z-index: 2;
460
- top: 5px;
461
- left: 58px;
462
- text-align: center;
463
- width: 18px;
 
 
 
 
 
 
 
 
 
 
 
 
464
  }
465
 
466
- .no-thumbs.loop-link .comments {
467
- top: 20px;
468
- left: 10px;
 
469
  }
470
 
471
- .loop-link .comments span {
472
- color: white;
 
 
 
 
 
 
 
 
 
473
  z-index: 3;
 
 
 
 
 
 
 
 
 
 
 
 
 
474
  position: relative;
475
- font-size: 70%;
476
- font-weight: bold;
477
- vertical-align: -5px;
478
  }
479
 
480
- .loop-link .comments:after {
481
- content: "\e812";
482
- display: block;
483
- font: 30px 'wptouch-icons', sans-serif;
484
  position: absolute;
 
485
  left: 50%;
486
- margin-left: -15px;
487
- top: 0;
 
 
 
 
 
 
488
  }
489
 
490
- .no-thumbs.loop-link .comments:after {
491
- -o-transform: scaleX(-1);
492
- -webkit-transform: scaleX(-1);
493
- -ms-transform: scaleX(-1);
494
- -moz-transform: scaleX(-1);
495
- transform: scaleX(-1);
496
- -webkit-filter: FlipH;
497
- filter: FlipH;
498
- -ms-filter: "FlipH";
499
  }
500
 
 
 
 
 
 
 
 
 
 
 
 
501
  /* @end */
502
 
 
 
503
  /* @end */
504
 
505
  /* @group Single */
@@ -676,7 +726,8 @@ header img {
676
 
677
  .post-page-head-area .post-date-comments, .post-page-head-area .post-author {
678
  font-size: 75%;
679
- color: rgba(0,0,0,.5);
 
680
  margin-right: 10px;
681
  margin-left: 10px;
682
  }
@@ -690,17 +741,35 @@ header img {
690
  }
691
 
692
  .post-page-head-area.bauhaus {
693
- background-image: -webkit-gradient(radial, 50% 0%,0,50% 0%,500, from(rgba(0, 0, 0,0)), to(rgba(255, 255, 255, 0.50)));
694
  text-align: center;
695
- padding-top: 10px;
696
- padding-bottom: 10px;
697
- text-shadow: rgba(255,255,255,.3) 0px 1px 0px;
698
  overflow: hidden;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
699
  }
700
 
701
  .post-page-head-area.bauhaus h2.post-title {
702
- color: rgba(0,0,0,.7);
703
- letter-spacing: -2px;
704
  font-size: 180%;
705
  font-weight: normal;
706
  margin: 0 !important;
@@ -716,7 +785,11 @@ header img {
716
  }
717
 
718
  .post-page-content .wptouch-showcase {
719
- padding: 0;
 
 
 
 
720
  }
721
 
722
  .top-content-showcase .wptouch-showcase,
@@ -921,21 +994,6 @@ form#commentform button#submit {
921
 
922
  /* @end */
923
 
924
- /* @group Login Fly-In */
925
-
926
- .dark-post-head .wptouch-login-wrap, .dark-post-head .wptouch-login-wrap a {
927
- color: rgba(255,255,255,.8);
928
- text-shadow: rgba(0,0,0,.2) 0 -1px 0;
929
- }
930
-
931
- .dark-post-head .wptouch-login-wrap #wp-submit {
932
- color: rgba(255,255,255,.8);
933
- border: 1px solid rgba(0,0,0,.2);
934
- background-color: rgba(0,0,0,.1);
935
- }
936
-
937
- /* @end */
938
-
939
  /* @group Footer */
940
 
941
  .load-more-link, .load-more-comments-wrap a {
@@ -1033,7 +1091,7 @@ form#commentform button#submit {
1033
 
1034
  /* @group Dark */
1035
 
1036
- .dark-body .loop-link .post-date-author {
1037
  color: rgba(255,255,255,.4);
1038
  }
1039
 
@@ -1052,7 +1110,6 @@ form#commentform button#submit {
1052
 
1053
  .dark-header header a, .dark-header header div {
1054
  color: rgba(255,255,255,.9);
1055
- text-shadow: rgba(0,0,0,.2) 0px -1px 0px;
1056
  }
1057
 
1058
  .dark-body .post-page-content, .dark-body .footer, .dark-body .back-to-top {
@@ -1070,17 +1127,12 @@ form#commentform button#submit {
1070
  }
1071
 
1072
  .dark-post-head .post-page-head-area h2.post-title, .dark-post-head .post-page-head-area select, .dark-post-head .post-page-head-area .archive-text {
1073
- color: rgba(255,255,255,.8);
1074
- text-shadow: rgba(0,0,0,.2) 0px -1px 0px;
1075
  }
1076
 
1077
  .dark-post-head .post-page-head-area .post-date-comments, .dark-post-head .post-page-head-area .post-author {
1078
- color: rgba(255,255,255,.6);
1079
- text-shadow: rgba(0,0,0,.1) 0px -1px 0px;
1080
- }
1081
-
1082
- .dark-post-head .post-page-head-area {
1083
- background-image: -webkit-gradient(radial, 50% 0%,0,50% 0%,500, from(rgba(255, 255, 255, 0.20)), to(rgba(0, 0, 0,0)));
1084
  }
1085
 
1086
  .dark-body #comments {
@@ -1153,12 +1205,11 @@ form#commentform button#submit {
1153
  font-size: 70%;
1154
  }
1155
 
1156
-
1157
-
1158
  /* @end */
1159
 
1160
 
1161
  /* @group Polylang language menu compat */
 
1162
  .wptouch-menu li.lang-item span {
1163
  border: none;
1164
  box-shadow: none;
@@ -1177,4 +1228,5 @@ form#commentform button#submit {
1177
  content: '';
1178
  border: none;
1179
  }
1180
- /* @end* /
 
1
+ /* @override
2
+ http://wptp3.local.com/wp-content/wptouch-data/themes/bauhaus/default/style.css?ver=a16b0b39889181577ded41b49cd80b1b
3
+ http://wptp3.local.com/wp-content/plugins/wptouch/themes/bauhaus/default/style.css?ver=a16b0b39889181577ded41b49cd80b1b
4
+ */
5
+
6
  /* Bauhaus CSS */
7
 
8
  /*
16
  }
17
 
18
  h1, h2, h3, h4, h5, h6 {
19
+ letter-spacing: -.02em;
20
+ }
21
+
22
+ h1, h2, h3 {
23
+ font-weight: 300;
24
+ }
25
+
26
+ h4, h5, h6 {
27
+ font-weight: 400;
28
  }
29
 
30
  .page-wrapper {
36
 
37
  header a, header div {
38
  color: rgba(0,0,0,.9);
 
39
  }
40
 
41
  header {
141
  #wptouch-search-inner {
142
  background-color: rgba(0,0,0,.1);
143
  text-align: center;
144
+ padding: 5px;
145
  }
146
 
147
  #wptouch-search-inner input[type="text"] {
148
+ width: 70%;
149
  -webkit-appearance: none;
 
150
  padding: 4px;
151
  background-color: rgba(255,255,255,.9);
152
  font-size: 90%;
153
+ border-style: none;
154
+ border-radius: 2px;
155
  }
156
 
157
  #wptouch-search-inner input[type="text"]:focus {
159
  }
160
 
161
  #wptouch-search-inner input[type="submit"] {
162
+ border-radius: 2px;
163
  border: 1px solid rgba(0,0,0,.2);
164
+ padding: 1px 10px 4px;
165
  -webkit-appearance: none;
166
  background-color: rgba(255,255,255,.1);
167
  color: rgba(0,0,0,.8);
172
  #search-dropper {
173
  overflow: hidden;
174
  max-height: 0;
175
+ -webkit-transition: max-height 330ms ease-in-out;
176
  }
177
 
178
  #search-dropper.toggled {
179
+ max-height: 60px;
180
  }
181
 
182
  .touched {
184
  }
185
 
186
  .page-wrapper .wptouch-custom-showcase {
187
+ margin: -1px auto -10px;
188
  }
189
 
190
  /* @end */
191
 
192
+ /* @group Post Listing View */
193
 
194
+ /* @group Slider */
195
 
196
+ .list-view .flickity-page-dots {
197
+ margin-bottom: 35px;
 
 
 
 
 
 
 
 
198
  }
199
 
200
+ .list-view .flickity-page-dots .dot {
201
+ width: 15px;
202
+ height: 2px;
203
+ margin-right: 0;
204
+ margin-left: 0;
205
+ border-radius: 0px;
206
+ background-color: #fff;
207
+ opacity: 0.4;
 
 
 
 
 
 
 
 
208
  }
209
 
210
+ .list-view .flickity-page-dots .dot.is-selected {
211
+ opacity: 1;
 
212
  }
213
 
214
+ .list-view .carousel.list-carousel {
215
+ box-shadow: inset rgba(0,0,0,.1) 0px 0px 24px;
216
+ height: 220px;
217
+ margin-top: 0px;
218
+ margin-bottom: 0px;
 
 
 
 
 
 
 
 
 
 
219
  }
220
 
221
+ .list-view .list-carousel .carousel-cell {
222
+ height: 100%;
223
+ width: 100%;
224
+ max-width: none !important;
 
 
 
 
225
  overflow: hidden;
226
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
228
+ .list-view .list-carousel .carousel-cell img {
 
 
 
 
 
229
  position: absolute;
230
+ top: 50%;
231
+ left: 50%;
232
+ -webkit-transform: translateX(-50%) translateY(-50%);
233
+ transform: translateX(-50%) translateY(-50%);
234
+ min-width: 120%;
235
+ max-width: 120%;
236
+ min-height: 100%;
237
+ width: auto;
238
+ height: auto;
239
+ z-index: -1;
240
+ overflow: hidden;
 
 
 
 
241
  }
242
 
243
+ .list-view .carousel.list-carousel h2 {
244
+ text-shadow: rgba(0,0,0,.6) 0px 0px 10px;
 
 
245
  position: absolute;
246
+ bottom: 35%;
247
+ font-size: 180%;
248
+ font-weight: 600;
249
+ width: 90%;
250
+ color: #fff;
251
+ text-align: center;
252
+ margin-left: auto;
253
+ margin-right: auto;
254
+ overflow : hidden;
255
+ text-overflow: ellipsis;
256
+ left: 0;
257
+ right: 0;
258
+ line-height: 150%;
259
  }
260
 
261
+ .list-view .list-carousel .post-meta {
262
+ text-shadow: rgba(0,0,0,.6) 0px 0px 10px;
 
263
  position: absolute;
264
+ font-size: 75%;
265
+ font-weight: 600;
266
+ display: inline-block;
267
+ bottom: 25%;
268
+ z-index: 1;
269
+ color: #fff;
270
+ margin-left: auto;
271
+ margin-right: auto;
272
+ width: 90%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  right: 0;
274
  left: 0;
275
+ text-transform: uppercase;
276
+ text-align: center;
277
  }
278
 
 
 
 
279
 
 
 
 
280
 
281
  /* @end */
282
 
 
 
283
  .loop-link {
284
  display: block;
285
  position: relative;
296
  margin-top: -18px;
297
  }
298
 
299
+ .loop-link .post-meta {
300
  color: rgba(0,0,0,.5);
301
  display: block;
302
  font-size: 70%;
303
+ margin-left: 88px;
304
  padding-top: 10px;
305
  text-transform: uppercase;
306
  }
307
 
308
+ .loop-link .post-meta.comments {
309
+ margin-left: 88px;
310
+ }
311
+
312
  #content .loop-link h2 {
313
  display: inline-block;
314
+ width: 65%;
315
  font-size: 130%;
316
  line-height: 130%;
317
+ margin: 0 0 0 4px;
318
  padding-bottom: 10px;
319
  overflow: hidden;
320
  font-weight: normal;
321
  font-style: normal;
322
+ padding-top: 10px;
323
  }
324
 
325
  .loop-link img.post-thumbnail {
326
  width: 64px;
327
  height: 64px;
328
  margin: 12px 10px 0;
 
329
  z-index: 1;
330
+ float: left;
331
  }
332
 
333
  .loop-link .date-circle,
392
  left: 40px;
393
  }
394
 
395
+ .no-thumbs.loop-link .post-meta, #content .no-thumbs.loop-link h2 {
396
  margin-left: 40px;
397
  }
398
 
399
+ /* @end */
400
+
401
+ /* @group Carousel View */
402
 
403
+ .flickity-view > h2 {
404
+ font-weight: normal;
405
+ padding-left: 15px;
406
+ }
407
+
408
+ .carousel {
409
+ height: 350px;
410
+ margin-top: 20px;
411
+ margin-bottom: 40px;
412
+ }
413
+
414
+ .carousel-cell {
415
+ height: 100%;
416
+ width: 90%;
417
+ max-width: 400px;
418
+ }
419
+
420
+ /* My Comment */
421
+
422
+ .carousel-cell img {
423
+ height: auto;
424
+ min-height: 100%;
425
+ width: 92%;
426
+ min-width: 92%;
427
+ padding: 0;
428
+ margin: 0 0 0 20px;
429
+ }
430
+
431
+ .carousel-cell a {
432
+ max-height: 230px;
433
+ overflow: hidden;
434
+ display: block;
435
+ }
436
+
437
+ .carousel h2 {
438
+ letter-spacing: -.02em;
439
+ display: -webkit-box;
440
+ width: 85%;
441
+ margin-left: 20px;
442
+ overflow : hidden;
443
+ text-overflow: ellipsis;
444
+ -webkit-line-clamp: 2;
445
+ -webkit-box-orient: vertical;
446
+ }
447
+
448
+ .carousel .post-meta {
449
+ text-transform: capitalize;
450
+ font-size: 80%;
451
+ display: inline-block;
452
+ margin-left: 20px;
453
+ margin-top: 5px;
454
+ }
455
+
456
+ /* @group Latest Only */
457
+
458
+ .slider-latest-only.blog .wptouch-showcase {
459
+ -webkit-backdrop-filter: blur(5px);
460
  position: absolute;
461
+ top: 55px;
462
+ z-index: 1;
463
+ left: 0;
464
+ right: 0;
465
+ background-color: rgba(0,0,0,.3);
466
+ min-height: auto !important;
467
+ height: 50px;
468
+ margin-bottom: 0;
469
+ }
470
+
471
+ .slider-latest-only.blog.wptouch-multiads .wptouch-showcase {
472
+ height: auto;
473
+ margin-top: -1px;
474
+ padding-top: 20px;
475
+ }
476
+
477
+ .slider-latest-only.blog .wptouch-showcase iframe {
478
  }
479
 
480
+ .slider-latest-only.blog header {
481
+ background-color: rgba(0,0,0,.2) !important;
482
+ -webkit-backdrop-filter: blur(20px) saturate(150%) !important;
483
+ margin-bottom: -54px;
484
  }
485
 
486
+ .slider-latest-only.blog header h1, .slider-latest-only.blog header > .tappable {
487
+ color: #fff !important;
488
+
489
+ }
490
+
491
+ .slider-latest-only.blog #search-dropper {
492
+ background-color: rgba(0,0,0,.2) !important;
493
+ -webkit-backdrop-filter: blur(20px) saturate(150%) !important;
494
+ position: fixed;
495
+ position: -webkit-sticky;
496
+ top: 54px;
497
  z-index: 3;
498
+ right: 0;
499
+ left: 0;
500
+ }
501
+
502
+ .slider-latest-only.blog .carousel {
503
+ margin: 0px auto;
504
+ }
505
+
506
+
507
+ .slider-latest-only.blog .carousel-cell {
508
+ height: 100%;
509
+ width: 100%;
510
+ max-width: none !important;
511
  position: relative;
512
+ overflow:hidden;
 
 
513
  }
514
 
515
+ .slider-latest-only.blog .carousel-cell img {
 
 
 
516
  position: absolute;
517
+ top: 50%;
518
  left: 50%;
519
+ -webkit-transform: translateX(-50%) translateY(-50%);
520
+ transform: translateX(-50%) translateY(-50%);
521
+ min-width: 200%;
522
+ min-height: 100%;
523
+ width: auto;
524
+ height: auto;
525
+ z-index: -1;
526
+ overflow: hidden;
527
  }
528
 
529
+ .slider-latest-only.blog .carousel h2 {
530
+ text-shadow: rgba(0,0,0,.6) 0px 0px 10px;
531
+ position: absolute;
532
+ bottom: 130px;
533
+ font-size: 220%;
534
+ width: 90%;
535
+ color: #fff;
 
 
536
  }
537
 
538
+ .slider-latest-only.blog .carousel .post-meta {
539
+ text-shadow: rgba(0,0,0,.6) 0px 0px 6px;
540
+ color: #fff;
541
+ position: absolute;
542
+ bottom: 80px;
543
+ font-size: 90%;
544
+ text-transform: uppercase;
545
+ }
546
+
547
+
548
+
549
  /* @end */
550
 
551
+
552
+
553
  /* @end */
554
 
555
  /* @group Single */
726
 
727
  .post-page-head-area .post-date-comments, .post-page-head-area .post-author {
728
  font-size: 75%;
729
+ color: rgba(0,0,0,.8);
730
+ font-weight: 600;
731
  margin-right: 10px;
732
  margin-left: 10px;
733
  }
741
  }
742
 
743
  .post-page-head-area.bauhaus {
 
744
  text-align: center;
745
+ padding-top: 40px;
746
+ padding-bottom: 40px;
 
747
  overflow: hidden;
748
+ text-shadow: none;
749
+ text-transform: capitalize;
750
+ position: relative;
751
+ overflow: hidden;
752
+ z-index: 0;
753
+ }
754
+
755
+ .post-page-head-area.bauhaus .post-page-thumbnail {
756
+ position: absolute;
757
+ top: 50%;
758
+ left: 50%;
759
+ -webkit-transform: translateX(-50%) translateY(-50%);
760
+ transform: translateX(-50%) translateY(-50%);
761
+ min-width: 200%;
762
+ min-height: 100%;
763
+ width: auto;
764
+ height: auto;
765
+ z-index: -1;
766
+ overflow: hidden;
767
+ opacity: .4;
768
  }
769
 
770
  .post-page-head-area.bauhaus h2.post-title {
771
+ color: rgba(0,0,0,.8);
772
+ letter-spacing: -.02em;
773
  font-size: 180%;
774
  font-weight: normal;
775
  margin: 0 !important;
785
  }
786
 
787
  .post-page-content .wptouch-showcase {
788
+ padding: 15px 0;
789
+ margin-right: auto !important;
790
+ display: block;
791
+ clear: both;
792
+ margin-left: 0px !important;
793
  }
794
 
795
  .top-content-showcase .wptouch-showcase,
994
 
995
  /* @end */
996
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
997
  /* @group Footer */
998
 
999
  .load-more-link, .load-more-comments-wrap a {
1091
 
1092
  /* @group Dark */
1093
 
1094
+ .dark-body .loop-link .post-meta {
1095
  color: rgba(255,255,255,.4);
1096
  }
1097
 
1110
 
1111
  .dark-header header a, .dark-header header div {
1112
  color: rgba(255,255,255,.9);
 
1113
  }
1114
 
1115
  .dark-body .post-page-content, .dark-body .footer, .dark-body .back-to-top {
1127
  }
1128
 
1129
  .dark-post-head .post-page-head-area h2.post-title, .dark-post-head .post-page-head-area select, .dark-post-head .post-page-head-area .archive-text {
1130
+ color: rgba(255,255,255,.9);
 
1131
  }
1132
 
1133
  .dark-post-head .post-page-head-area .post-date-comments, .dark-post-head .post-page-head-area .post-author {
1134
+ color: rgba(255,255,255,.75);
1135
+ text-shadow: rgba(0,0,0,.6) 0px 0px 10px;
 
 
 
 
1136
  }
1137
 
1138
  .dark-body #comments {
1205
  font-size: 70%;
1206
  }
1207
 
 
 
1208
  /* @end */
1209
 
1210
 
1211
  /* @group Polylang language menu compat */
1212
+
1213
  .wptouch-menu li.lang-item span {
1214
  border: none;
1215
  box-shadow: none;
1228
  content: '';
1229
  border: none;
1230
  }
1231
+
1232
+ /* @end */
themes/bauhaus/readme.txt CHANGED
@@ -2,27 +2,36 @@ Theme Name: Bauhaus
2
  Theme URI: http://www.wptouch.com/themes/bauhaus
3
  Author: BraveNewCode Inc.
4
  Description: Clean, modern, functional design. Great for all types of WordPress sites.
5
- Version: 1.7
6
- Depends on: 4.1.6
7
  Framework: 2.0
8
  Tags: smartphone
9
 
10
  == Long Description ==
11
 
12
- Bauhaus is one of our more flexible themes, and is designed to easily take on the look and feel of your branding. Setting the logo, color and type to match your desktop theme is easy. Lightweight and retina-ready, Bauhaus features flat design and a clean interface, along with intuitive navigation for visitors.
13
 
14
  == Screenshots ==
15
 
16
- 1. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/1.jpg
17
- 2. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.jpg
18
- 3. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/3.jpg
19
- 4. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/4.jpg
20
- 5. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/5.jpg
21
- 6. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/6.jpg
22
- 7. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/7.jpg
 
 
23
 
24
  == Changelog ==
25
 
 
 
 
 
 
 
 
26
  = Version 1.7 =
27
 
28
  * Added: Frosted header support in iOS for Web App Mode
2
  Theme URI: http://www.wptouch.com/themes/bauhaus
3
  Author: BraveNewCode Inc.
4
  Description: Clean, modern, functional design. Great for all types of WordPress sites.
5
+ Version: 2.0
6
+ Depends on: 4.3
7
  Framework: 2.0
8
  Tags: smartphone
9
 
10
  == Long Description ==
11
 
12
+ Bauhaus is one of our more flexible themes, and is designed to easily take on the look and feel of your branding. Setting the logo, color and type to match your desktop theme is easy. Lightweight and retina-ready, Bauhaus features flat design and a clean interface, along with intuitive navigation for visitors. New in version 2.0 is the ability to choose different layouts for the blog appearance, including list and carousel views.
13
 
14
  == Screenshots ==
15
 
16
+ 1. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/1.jpg
17
+ 2. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/2.jpg
18
+ 3. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/3.jpg
19
+ 4. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/4.jpg
20
+ 5. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/5.jpg
21
+ 6. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/6.jpg
22
+ 7. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/7.jpg
23
+ 8. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/8.jpg
24
+ 9. http://wptouch-pro-4.s3.amazonaws.com/screenshots/bauhaus/2.0/9.jpg
25
 
26
  == Changelog ==
27
 
28
+ = Version 2.0 =
29
+
30
+ * New: Refreshed look and feel for Bauhaus
31
+ * New: Layouts! — switch between post listings and a multi-carousel view, or showcase your posts in a full-height carousel view
32
+ * Fixed: Minor theme issues reported by customers
33
+ * Changed: Featured slider settings may need to be reset— major changes under the hood required changes to the way featured entires are loaded
34
+
35
  = Version 1.7 =
36
 
37
  * Added: Frosted header support in iOS for Web App Mode
themes/bauhaus/root-functions.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- define( 'BAUHAUS_THEME_VERSION', '1.7' );
4
  define( 'BAUHAUS_SETTING_DOMAIN', 'bauhaus' );
5
  define( 'BAUHAUS_DIR', wptouch_get_bloginfo( 'theme_root_directory' ) );
6
  define( 'BAUHAUS_URL', wptouch_get_bloginfo( 'theme_parent_url' ) );
@@ -15,8 +15,8 @@ add_action( 'wp_head', 'bauhaus_add_frosted_header_wam', 100 );
15
  // Bauhaus filters
16
  add_filter( 'wptouch_registered_setting_domains', 'bauhaus_setting_domain' );
17
  add_filter( 'wptouch_setting_defaults_bauhaus', 'bauhaus_setting_defaults' );
 
18
  add_filter( 'wptouch_setting_defaults_foundation', 'bauhaus_foundation_setting_defaults' );
19
- add_filter( 'wptouch_featured_slider_settings', 'bauhaus_featured_slider_settings' );
20
 
21
  add_filter( 'wptouch_body_classes', 'bauhaus_body_classes' );
22
  add_filter( 'wptouch_post_classes', 'bauhaus_post_classes' );
@@ -25,7 +25,7 @@ add_filter( 'wptouch_theme_color', 'bauhaus_theme_color' );
25
 
26
  // Bauhaus GUI Settings
27
  add_filter( 'foundation_settings_header', 'bauhaus_header_settings' );
28
- add_filter( 'foundation_settings_blog', 'bauhaus_blog_settings' );
29
  add_filter( 'wptouch_post_footer', 'bauhaus_footer_version' );
30
 
31
  add_filter( 'wptouch_has_post_thumbnail', 'bauhaus_handle_has_thumbnail' );
@@ -34,8 +34,6 @@ add_filter( 'wptouch_get_post_thumbnail', 'bauhaus_handle_get_thumbnail' );
34
  add_filter( 'post_thumbnail_html', 'bauhaus_handle_thumbnail_html', 10, 5 );
35
  add_filter( 'wptouch_setting_version_compare', 'bauhaus_setting_version_compare', 10, 2 );
36
 
37
- add_filter( 'foundation_featured_use_swipe', '__return_false' );
38
-
39
  function bauhaus_setting_domain( $domain ) {
40
  $domain[] = BAUHAUS_SETTING_DOMAIN;
41
  return $domain;
@@ -63,12 +61,11 @@ function bauhaus_setting_defaults( $settings ) {
63
  $settings->bauhaus_menu_style = 'off-canvas';
64
  $settings->bauhaus_menu_position = 'left-side';
65
 
66
-
67
  // Theme colors
68
- $settings->bauhaus_background_color = '#f9f9f8';
69
- $settings->bauhaus_header_color = '#2d353f';
70
- $settings->bauhaus_link_color = '#0376a8';
71
- $settings->bauhaus_post_page_header_color = '#4ad6a7';
72
 
73
  // Blog
74
  $settings->bauhaus_show_taxonomy = false;
@@ -82,7 +79,29 @@ function bauhaus_setting_defaults( $settings ) {
82
  $settings->bauhaus_thumbnail_type = 'featured';
83
  $settings->bauhaus_thumbnail_custom_field = '';
84
 
85
- $settings->featured_slider_page = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
  return $settings;
88
  }
@@ -105,11 +124,11 @@ function bauhaus_theme_init() {
105
  'media',
106
  'sharing',
107
  'social-links',
108
- 'featured',
109
  'login',
 
110
  // Modules w/o settings
111
  'menu',
112
- 'owlcarousel',
113
  'spinjs',
114
  'tappable',
115
  'fastclick',
@@ -138,7 +157,7 @@ function bauhaus_theme_init() {
138
  // Example of how to register theme colors
139
  // (Name, element to add color to, element to add background-color to, settings domain, luma threshold, luma class root – light-*, dark-* )
140
  foundation_register_theme_color( 'bauhaus_background_color', __( 'Theme background', 'wptouch-pro' ), '', '.page-wrapper', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING, 150, 'body' );
141
- foundation_register_theme_color( 'bauhaus_header_color', __( 'Header & Menu', 'wptouch-pro' ),'', 'body, header, .wptouch-menu, .pushit, #search-dropper, .date-circle', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING, 150, 'header' );
142
  foundation_register_theme_color( 'bauhaus_link_color', __( 'Links', 'wptouch-pro' ), '.content-wrap a, #slider a p:after', '.dots li.active, #switch .active', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING );
143
  foundation_register_theme_color( 'bauhaus_post_page_header_color', __( 'Post/Page Headers', 'wptouch-pro' ), '', '.bauhaus, form#commentform button#submit', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING, 150, 'post-head' );
144
 
@@ -192,10 +211,9 @@ function bauhaus_register_fonts() {
192
  }
193
 
194
  function bauhaus_add_frosted_header_wam(){
195
-
196
  $settings = bauhaus_get_settings();
197
  $color = 'rgba(' . wptouch_hex_to_rgb( $settings->bauhaus_header_color, true ) . ',.88)';
198
- echo "<style>.ios7.web-app-mode.has-fixed header{ background-color: " . $color . " !important;}</style>";
199
  }
200
 
201
  function bauhaus_body_classes( $classes ) {
@@ -213,12 +231,20 @@ function bauhaus_body_classes( $classes ) {
213
  $classes[] = 'off-canvas';
214
  }
215
 
 
 
 
 
 
 
 
 
216
  return $classes;
217
  }
218
 
219
  function bauhaus_post_classes( $classes ) {
220
  $settings = bauhaus_get_settings();
221
-
222
  if ( $settings->bauhaus_use_thumbnails != 'none' ) {
223
  $classes[] = 'show-thumbs';
224
  } else {
@@ -240,7 +266,6 @@ function bauhaus_enqueue_customizer_script() {
240
  }
241
 
242
  // Admin Settings
243
-
244
  function bauhaus_header_settings( $header_settings ) {
245
 
246
  $header_settings[] = wptouch_add_pro_setting(
@@ -388,6 +413,201 @@ function bauhaus_blog_settings( $blog_settings ) {
388
  return $blog_settings;
389
  }
390
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
  function bauhaus_handle_has_thumbnail( $does_have_it ) {
392
  $settings = bauhaus_get_settings();
393
 
@@ -466,68 +686,62 @@ function bauhaus_if_off_canvas_enabled(){
466
  }
467
  }
468
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
469
  add_filter( 'wptouch_amp_header_color', 'bauhaus_amp_header_color' );
 
470
  function bauhaus_amp_header_color( $color ) {
471
  $settings = bauhaus_get_settings();
472
  return $settings->bauhaus_header_color;
473
  }
474
 
475
  add_filter( 'wptouch_amp_link_color', 'bauhaus_amp_link_color' );
 
476
  function bauhaus_amp_link_color( $color ) {
477
  $settings = bauhaus_get_settings();
478
  return $settings->bauhaus_link_color;
479
  }
480
 
481
  add_filter( 'wptouch_amp_show_author', 'bauhaus_amp_show_author' );
 
482
  function bauhaus_amp_show_author() {
483
  $settings = bauhaus_get_settings();
484
  return $settings->bauhaus_show_author;
485
  }
486
 
487
  add_filter( 'wptouch_amp_show_date', 'bauhaus_amp_show_date' );
 
488
  function bauhaus_amp_show_date() {
489
  $settings = bauhaus_get_settings();
490
  return $settings->bauhaus_show_date;
491
  }
492
 
493
  add_filter( 'wptouch_amp_show_taxonomy', 'bauhaus_amp_show_taxonomy' );
 
494
  function bauhaus_amp_show_taxonomy() {
495
  $settings = bauhaus_get_settings();
496
  return $settings->bauhaus_show_taxonomy;
497
  }
498
 
499
- function bauhaus_get_page_list() {
500
- $contents = get_pages();
501
- $pages = array( 'Select&hellip;' );
502
- foreach ( $contents as $page ) {
503
- $pages[ $page->ID ] = $page->post_title;
504
- }
505
- return $pages;
506
- }
507
-
508
- function bauhaus_allow_featured_slider_override() {
509
- $settings = wptouch_get_settings();
510
- $foundation_settings = foundation_get_settings();
511
- return $settings->homepage_landing != 'none' && $settings->homepage_landing != $foundation_settings->latest_posts_page;
512
- }
513
-
514
- function bauhaus_featured_slider_settings( $featured_slider_settings ) {
515
- if ( bauhaus_allow_featured_slider_override() ) {
516
- $featured_slider_settings[] = wptouch_add_pro_setting(
517
- 'list',
518
- 'featured_slider_page',
519
- __( 'Featured Slider Page', 'wptouch-pro' ),
520
- __( 'Choose which page should display the featured slider', 'wptouch-pro' ),
521
- WPTOUCH_SETTING_BASIC,
522
- '4.1.15',
523
- bauhaus_get_page_list()
524
- );
525
- }
526
-
527
- return $featured_slider_settings;
528
- }
529
-
530
  function bauhaus_theme_color() {
531
  $settings = bauhaus_get_settings();
532
  return $settings->bauhaus_header_color;
533
- }
1
  <?php
2
 
3
+ define( 'BAUHAUS_THEME_VERSION', '2.0' );
4
  define( 'BAUHAUS_SETTING_DOMAIN', 'bauhaus' );
5
  define( 'BAUHAUS_DIR', wptouch_get_bloginfo( 'theme_root_directory' ) );
6
  define( 'BAUHAUS_URL', wptouch_get_bloginfo( 'theme_parent_url' ) );
15
  // Bauhaus filters
16
  add_filter( 'wptouch_registered_setting_domains', 'bauhaus_setting_domain' );
17
  add_filter( 'wptouch_setting_defaults_bauhaus', 'bauhaus_setting_defaults' );
18
+ add_filter( 'foundation_settings_blog', 'bauhaus_blog_settings' );
19
  add_filter( 'wptouch_setting_defaults_foundation', 'bauhaus_foundation_setting_defaults' );
 
20
 
21
  add_filter( 'wptouch_body_classes', 'bauhaus_body_classes' );
22
  add_filter( 'wptouch_post_classes', 'bauhaus_post_classes' );
25
 
26
  // Bauhaus GUI Settings
27
  add_filter( 'foundation_settings_header', 'bauhaus_header_settings' );
28
+ add_filter( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'bauhaus_render_theme_settings' );
29
  add_filter( 'wptouch_post_footer', 'bauhaus_footer_version' );
30
 
31
  add_filter( 'wptouch_has_post_thumbnail', 'bauhaus_handle_has_thumbnail' );
34
  add_filter( 'post_thumbnail_html', 'bauhaus_handle_thumbnail_html', 10, 5 );
35
  add_filter( 'wptouch_setting_version_compare', 'bauhaus_setting_version_compare', 10, 2 );
36
 
 
 
37
  function bauhaus_setting_domain( $domain ) {
38
  $domain[] = BAUHAUS_SETTING_DOMAIN;
39
  return $domain;
61
  $settings->bauhaus_menu_style = 'off-canvas';
62
  $settings->bauhaus_menu_position = 'left-side';
63
 
 
64
  // Theme colors
65
+ $settings->bauhaus_background_color = '#edede7';
66
+ $settings->bauhaus_header_color = '#037add';
67
+ $settings->bauhaus_link_color = '#037add';
68
+ $settings->bauhaus_post_page_header_color = '#e8a21c';
69
 
70
  // Blog
71
  $settings->bauhaus_show_taxonomy = false;
79
  $settings->bauhaus_thumbnail_type = 'featured';
80
  $settings->bauhaus_thumbnail_custom_field = '';
81
 
82
+ // Global Featured Posts Settings
83
+ $settings->bauhaus_featured_comments = false;
84
+ $settings->bauhaus_featured_type = 'latest';
85
+ $settings->bauhaus_featured_tag = '';
86
+ $settings->bauhaus_featured_category = '';
87
+ $settings->bauhaus_featured_post_type = '';
88
+ $settings->bauhaus_featured_post_ids = '';
89
+ $settings->bauhaus_featured_max_number_of_posts = '5';
90
+ $settings->bauhaus_featured_filter_posts = true;
91
+
92
+ $settings->bauhaus_post_listing_view = 'default';
93
+
94
+ // Post Listings -----
95
+ $settings->bauhaus_featured_enabled = true;
96
+ $settings->bauhaus_post_listing_autoplay = false;
97
+ $settings->bauhaus_post_listing_dots = true;
98
+
99
+ // Carousel View -----
100
+ // Featured Posts
101
+ $settings->bauhaus_featured_carousel_enabled = true;
102
+ // Popular Posts
103
+ $settings->bauhaus_popular_enabled = true;
104
+ $settings->bauhaus_popular_max_number_of_posts = '5';
105
 
106
  return $settings;
107
  }
124
  'media',
125
  'sharing',
126
  'social-links',
 
127
  'login',
128
+ // 'featured-posts',
129
  // Modules w/o settings
130
  'menu',
131
+ 'flickity',
132
  'spinjs',
133
  'tappable',
134
  'fastclick',
157
  // Example of how to register theme colors
158
  // (Name, element to add color to, element to add background-color to, settings domain, luma threshold, luma class root – light-*, dark-* )
159
  foundation_register_theme_color( 'bauhaus_background_color', __( 'Theme background', 'wptouch-pro' ), '', '.page-wrapper', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING, 150, 'body' );
160
+ foundation_register_theme_color( 'bauhaus_header_color', __( 'Header & Menu', 'wptouch-pro' ),'', 'body, header, .wptouch-menu, .pushit, #search-dropper, .date-circle, .list-view .list-carousel', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING, 150, 'header' );
161
  foundation_register_theme_color( 'bauhaus_link_color', __( 'Links', 'wptouch-pro' ), '.content-wrap a, #slider a p:after', '.dots li.active, #switch .active', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING );
162
  foundation_register_theme_color( 'bauhaus_post_page_header_color', __( 'Post/Page Headers', 'wptouch-pro' ), '', '.bauhaus, form#commentform button#submit', BAUHAUS_SETTING_DOMAIN, WPTOUCH_PRO_LIVE_PREVIEW_SETTING, 150, 'post-head' );
163
 
211
  }
212
 
213
  function bauhaus_add_frosted_header_wam(){
 
214
  $settings = bauhaus_get_settings();
215
  $color = 'rgba(' . wptouch_hex_to_rgb( $settings->bauhaus_header_color, true ) . ',.88)';
216
+ echo "<style>.ios7.web-app-mode.has-fixed header{ background-color: " . $color . ";}</style>";
217
  }
218
 
219
  function bauhaus_body_classes( $classes ) {
231
  $classes[] = 'off-canvas';
232
  }
233
 
234
+ if ( $settings->bauhaus_post_listing_view == 'default' ) {
235
+ $classes[] = 'list-view';
236
+ }
237
+
238
+ if ( $settings->bauhaus_post_listing_view == 'carousel' && $settings->bauhaus_featured_carousel_enabled == false && $settings->bauhaus_popular_enabled == false ) {
239
+ $classes[] = 'slider-latest-only';
240
+ }
241
+
242
  return $classes;
243
  }
244
 
245
  function bauhaus_post_classes( $classes ) {
246
  $settings = bauhaus_get_settings();
247
+
248
  if ( $settings->bauhaus_use_thumbnails != 'none' ) {
249
  $classes[] = 'show-thumbs';
250
  } else {
266
  }
267
 
268
  // Admin Settings
 
269
  function bauhaus_header_settings( $header_settings ) {
270
 
271
  $header_settings[] = wptouch_add_pro_setting(
413
  return $blog_settings;
414
  }
415
 
416
+ function bauhaus_render_theme_settings( $page_options ) {
417
+
418
+ global $wptouch_pro;
419
+
420
+ $bauhaus_settings = array(
421
+ wptouch_add_setting(
422
+ 'list',
423
+ 'bauhaus_post_listing_view',
424
+ __( 'Blog Appearance', 'wptouch-pro' ),
425
+ false,
426
+ WPTOUCH_SETTING_BASIC,
427
+ '2.0',
428
+ array(
429
+ 'default' => __( 'List View', 'wptouch-pro' ),
430
+ 'carousel' => __( 'Carousel View', 'wptouch-pro' )
431
+ )
432
+ ),
433
+ wptouch_add_setting(
434
+ 'checkbox',
435
+ 'bauhaus_featured_enabled',
436
+ __( 'Show featured posts', 'wptouch-pro' ),
437
+ false,
438
+ WPTOUCH_SETTING_BASIC,
439
+ '2.0',
440
+ false,
441
+ BAUHAUS_SETTING_DOMAIN
442
+ ),
443
+ wptouch_add_setting(
444
+ 'checkbox',
445
+ 'bauhaus_post_listing_dots',
446
+ __( 'Show slider nav bar', 'wptouch-pro' ),
447
+ false,
448
+ WPTOUCH_SETTING_BASIC,
449
+ '2.0',
450
+ false,
451
+ BAUHAUS_SETTING_DOMAIN
452
+ ),
453
+ wptouch_add_setting(
454
+ 'checkbox',
455
+ 'bauhaus_post_listing_autoplay',
456
+ __( 'Autoplay', 'wptouch-pro' ),
457
+ false,
458
+ WPTOUCH_SETTING_BASIC,
459
+ '2.0',
460
+ false,
461
+ BAUHAUS_SETTING_DOMAIN
462
+ ),
463
+ wptouch_add_setting(
464
+ 'checkbox',
465
+ 'bauhaus_featured_carousel_enabled',
466
+ __( 'Show featured posts slider', 'wptouch-pro' ),
467
+ false,
468
+ WPTOUCH_SETTING_BASIC,
469
+ '2.0',
470
+ false,
471
+ BAUHAUS_SETTING_DOMAIN
472
+ ),
473
+ wptouch_add_setting(
474
+ 'checkbox',
475
+ 'bauhaus_popular_enabled',
476
+ __( 'Show popular posts slider', 'wptouch-pro' ),
477
+ false,
478
+ WPTOUCH_SETTING_BASIC,
479
+ '2.0',
480
+ false,
481
+ BAUHAUS_SETTING_DOMAIN
482
+ ),
483
+ wptouch_add_setting(
484
+ 'range',
485
+ 'bauhaus_popular_max_number_of_posts',
486
+ __( 'Max number of posts in popular slider', 'wptouch-pro' ),
487
+ false,
488
+ WPTOUCH_SETTING_BASIC,
489
+ '2.0',
490
+ array(
491
+ 'min' => 5,
492
+ 'max' => 12,
493
+ 'step' => 1
494
+ ),
495
+ BAUHAUS_SETTING_DOMAIN
496
+ )
497
+ );
498
+
499
+ $bauhaus_featured_settings = array(
500
+ wptouch_add_setting(
501
+ 'range',
502
+ 'bauhaus_featured_max_number_of_posts',
503
+ __( 'Max number of featured posts', 'wptouch-pro' ),
504
+ false,
505
+ WPTOUCH_SETTING_BASIC,
506
+ '2.0',
507
+ array(
508
+ 'min' => 5,
509
+ 'max' => 12,
510
+ 'step' => 1
511
+ ),
512
+ BAUHAUS_SETTING_DOMAIN
513
+ ),
514
+ wptouch_add_setting(
515
+ 'checkbox',
516
+ 'bauhaus_featured_filter_posts',
517
+ __( 'Featured posts also show in latest posts', 'wptouch-pro' ),
518
+ false,
519
+ WPTOUCH_SETTING_BASIC,
520
+ '2.0',
521
+ false,
522
+ BAUHAUS_SETTING_DOMAIN
523
+ ),
524
+ wptouch_add_setting(
525
+ 'list',
526
+ 'bauhaus_featured_type',
527
+ __( 'Featured posts to display', 'wptouch-pro' ),
528
+ false,
529
+ WPTOUCH_SETTING_BASIC,
530
+ '2.0',
531
+ array(
532
+ 'latest' => __( 'Show latest posts', 'wptouch-pro' ),
533
+ 'tag' => __( 'Show posts from a specific tag', 'wptouch-pro' ),
534
+ 'category' => __( 'Show posts from a specific category', 'wptouch-pro' ),
535
+ 'post_type' => __( 'Show posts from a specific post type', 'wptouch-pro' ),
536
+ 'posts' => __( 'Show only specific posts or pages', 'wptouch-pro' )
537
+ ),
538
+ BAUHAUS_SETTING_DOMAIN
539
+ ),
540
+ wptouch_add_setting(
541
+ 'text',
542
+ 'bauhaus_featured_tag',
543
+ __( 'Only this tag', 'wptouch-pro' ),
544
+ __( 'Enter the tag/category slug name', 'wptouch-pro' ),
545
+ WPTOUCH_SETTING_BASIC,
546
+ '2.0',
547
+ false,
548
+ BAUHAUS_SETTING_DOMAIN
549
+ ),
550
+ wptouch_add_setting(
551
+ 'text',
552
+ 'bauhaus_featured_category',
553
+ __( 'Only this category', 'wptouch-pro' ),
554
+ __( 'Enter the tag/category slug name', 'wptouch-pro' ),
555
+ WPTOUCH_SETTING_BASIC,
556
+ '2.0',
557
+ false,
558
+ BAUHAUS_SETTING_DOMAIN
559
+ ),
560
+ wptouch_add_setting(
561
+ 'text',
562
+ 'bauhaus_featured_post_ids',
563
+ __( 'Comma-separated list of post/page IDs', 'wptouch-pro' ),
564
+ false,
565
+ WPTOUCH_SETTING_BASIC,
566
+ '2.0',
567
+ false,
568
+ BAUHAUS_SETTING_DOMAIN
569
+ )
570
+ );
571
+
572
+ if ( function_exists( 'wptouch_custom_posts_get_list' ) ) {
573
+ $bauhaus_featured_post_type = wptouch_add_pro_setting(
574
+ 'list',
575
+ 'bauhaus_featured_post_type',
576
+ __( 'Only this post type', 'wptouch-pro' ),
577
+ false,
578
+ WPTOUCH_SETTING_BASIC,
579
+ '2.0',
580
+ array_merge( array( 'Select Post Type' ), wptouch_custom_posts_get_list() ),
581
+ BAUHAUS_SETTING_DOMAIN
582
+ );
583
+
584
+ array_push( $bauhaus_featured_settings, $bauhaus_featured_post_type );
585
+ }
586
+
587
+ wptouch_add_page_section(
588
+ FOUNDATION_PAGE_GENERAL,
589
+ __( 'Blog Featured Slider', 'wptouch-pro' ),
590
+ 'featured-slider',
591
+ $bauhaus_featured_settings,
592
+ $page_options,
593
+ BAUHAUS_SETTING_DOMAIN,
594
+ true
595
+ );
596
+
597
+ wptouch_add_page_section(
598
+ FOUNDATION_PAGE_GENERAL,
599
+ __( 'Blog Layout', 'wptouch-pro' ),
600
+ 'post-view',
601
+ $bauhaus_settings,
602
+ $page_options,
603
+ BAUHAUS_SETTING_DOMAIN,
604
+ true
605
+ );
606
+
607
+
608
+ return $page_options;
609
+ }
610
+
611
  function bauhaus_handle_has_thumbnail( $does_have_it ) {
612
  $settings = bauhaus_get_settings();
613
 
686
  }
687
  }
688
 
689
+ function bauhaus_if_carousel_view_enabled(){
690
+ $settings = bauhaus_get_settings();
691
+
692
+ if ( $settings->bauhaus_post_listing_view == 'carousel' ) {
693
+ return true;
694
+ }
695
+
696
+ return false;
697
+ }
698
+
699
+ function bauhaus_if_popular_enabled(){
700
+ $settings = bauhaus_get_settings();
701
+
702
+ if ( $settings->bauhaus_post_listing_view == 'carousel' && $settings->bauhaus_popular_enabled ) {
703
+ return true;
704
+ }
705
+
706
+ return false;
707
+ }
708
+
709
  add_filter( 'wptouch_amp_header_color', 'bauhaus_amp_header_color' );
710
+
711
  function bauhaus_amp_header_color( $color ) {
712
  $settings = bauhaus_get_settings();
713
  return $settings->bauhaus_header_color;
714
  }
715
 
716
  add_filter( 'wptouch_amp_link_color', 'bauhaus_amp_link_color' );
717
+
718
  function bauhaus_amp_link_color( $color ) {
719
  $settings = bauhaus_get_settings();
720
  return $settings->bauhaus_link_color;
721
  }
722
 
723
  add_filter( 'wptouch_amp_show_author', 'bauhaus_amp_show_author' );
724
+
725
  function bauhaus_amp_show_author() {
726
  $settings = bauhaus_get_settings();
727
  return $settings->bauhaus_show_author;
728
  }
729
 
730
  add_filter( 'wptouch_amp_show_date', 'bauhaus_amp_show_date' );
731
+
732
  function bauhaus_amp_show_date() {
733
  $settings = bauhaus_get_settings();
734
  return $settings->bauhaus_show_date;
735
  }
736
 
737
  add_filter( 'wptouch_amp_show_taxonomy', 'bauhaus_amp_show_taxonomy' );
738
+
739
  function bauhaus_amp_show_taxonomy() {
740
  $settings = bauhaus_get_settings();
741
  return $settings->bauhaus_show_taxonomy;
742
  }
743
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
744
  function bauhaus_theme_color() {
745
  $settings = bauhaus_get_settings();
746
  return $settings->bauhaus_header_color;
747
+ }
themes/bauhaus/screenshot.png CHANGED
Binary file
themes/foundation/default/featured-posts.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $settings = foundation_get_settings();
3
+ ?>
4
+ <a href='<?php echo the_permalink(); ?>' class='needsclick'>
5
+ <div class='comments-number'><span><?php echo wptouch_get_comment_count(); ?></span></div>
6
+ <img src='<?php echo foundation_featured_get_image(); ?>' alt='<?php the_title(); ?>' / >
7
+ <p class='featured-date'><?php wptouch_the_time(); ?></p>
8
+ <p class='featured-title'><span><?php the_title(); ?></span></p>
9
+ </a>
themes/foundation/modules/custom-posts/custom-posts.php CHANGED
@@ -5,12 +5,15 @@ add_action( 'init', 'wptouch_register_theme_custom_post_types', 999 );
5
  add_filter( 'wptouch_modify_setting__foundation__enabled_custom_post_types', 'wptouch_serialize_custom_post_types', 1 );
6
 
7
  add_filter( 'wptouch_setting_defaults_foundation', 'wptouch_custom_posts_default_settings' );
8
- add_filter( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'wptouch_custom_posts_render_theme_settings' );
9
  add_filter( 'foundation_search_post_types', 'wptouch_custom_posts_add_to_search' );
10
  add_filter( 'wptouch_mobile_content_post_types', 'wptouch_custom_posts_add_to_search' );
11
  add_filter( 'pre_get_posts', 'wptouch_custom_posts_pre_get_posts' );
12
  add_filter( 'wptouch_foundation_search_post_type_text', 'wptouch_custom_posts_get_post_type_name' );
13
 
 
 
 
 
14
  function wptouch_serialize_custom_post_types( $setting ) {
15
  // Function is fed the custom post type object as loaded by WordPress at render time; serialize it for pass-through as a field value.
16
  return addslashes( serialize( $setting ) );
5
  add_filter( 'wptouch_modify_setting__foundation__enabled_custom_post_types', 'wptouch_serialize_custom_post_types', 1 );
6
 
7
  add_filter( 'wptouch_setting_defaults_foundation', 'wptouch_custom_posts_default_settings' );
 
8
  add_filter( 'foundation_search_post_types', 'wptouch_custom_posts_add_to_search' );
9
  add_filter( 'wptouch_mobile_content_post_types', 'wptouch_custom_posts_add_to_search' );
10
  add_filter( 'pre_get_posts', 'wptouch_custom_posts_pre_get_posts' );
11
  add_filter( 'wptouch_foundation_search_post_type_text', 'wptouch_custom_posts_get_post_type_name' );
12
 
13
+ if ( !defined('WPTOUCH_IS_FREE') ) {
14
+ add_filter( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'wptouch_custom_posts_render_theme_settings' );
15
+ }
16
+
17
  function wptouch_serialize_custom_post_types( $setting ) {
18
  // Function is fed the custom post type object as loaded by WordPress at render time; serialize it for pass-through as a field value.
19
  return addslashes( serialize( $setting ) );
themes/foundation/modules/featured/featured.php CHANGED
@@ -323,6 +323,22 @@ function foundation_featured_settings( $page_options ) {
323
 
324
  if ( $wptouch_pro->get_current_theme() == 'bauhaus' || ( $wptouch_pro->is_child_theme() && $wptouch_pro->get_parent_theme_info()->base == 'bauhaus' ) ) {
325
  $featured_enhanced_setting = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  wptouch_add_setting(
327
  'list',
328
  'featured_style',
@@ -334,7 +350,7 @@ function foundation_featured_settings( $page_options ) {
334
  'enhanced' => __( 'Enhanced', 'wptouch-pro' ),
335
  'streamlined' => __( 'Streamlined', 'wptouch-pro' )
336
  )
337
- )
338
  );
339
  } else {
340
  $featured_enhanced_setting = array();
@@ -363,7 +379,7 @@ function foundation_featured_settings( $page_options ) {
363
  '2.0',
364
  array(
365
  'min' => 1,
366
- 'max' => 10,
367
  'step' => 1
368
  )
369
  ),
@@ -475,22 +491,6 @@ function foundation_featured_settings( $page_options ) {
475
  false,
476
  WPTOUCH_SETTING_BASIC,
477
  '2.0'
478
- ),
479
- wptouch_add_setting(
480
- 'checkbox',
481
- 'featured_blog',
482
- __( 'Show on blog', 'wptouch-pro' ),
483
- false,
484
- WPTOUCH_SETTING_BASIC,
485
- '2.0'
486
- ),
487
- wptouch_add_setting(
488
- 'checkbox',
489
- 'featured_homepage',
490
- __( 'Show on homepage', 'wptouch-pro' ),
491
- false,
492
- WPTOUCH_SETTING_BASIC,
493
- '2.0'
494
  )
495
  ),
496
  $featured_enhanced_setting,
@@ -504,4 +504,4 @@ function foundation_featured_settings( $page_options ) {
504
  );
505
 
506
  return $page_options;
507
- }
323
 
324
  if ( $wptouch_pro->get_current_theme() == 'bauhaus' || ( $wptouch_pro->is_child_theme() && $wptouch_pro->get_parent_theme_info()->base == 'bauhaus' ) ) {
325
  $featured_enhanced_setting = array(
326
+ wptouch_add_setting(
327
+ 'checkbox',
328
+ 'featured_blog',
329
+ __( 'Show on blog', 'wptouch-pro' ),
330
+ false,
331
+ WPTOUCH_SETTING_BASIC,
332
+ '2.0'
333
+ ),
334
+ wptouch_add_setting(
335
+ 'checkbox',
336
+ 'featured_homepage',
337
+ __( 'Show on homepage', 'wptouch-pro' ),
338
+ false,
339
+ WPTOUCH_SETTING_BASIC,
340
+ '2.0'
341
+ ),
342
  wptouch_add_setting(
343
  'list',
344
  'featured_style',
350
  'enhanced' => __( 'Enhanced', 'wptouch-pro' ),
351
  'streamlined' => __( 'Streamlined', 'wptouch-pro' )
352
  )
353
+ ),
354
  );
355
  } else {
356
  $featured_enhanced_setting = array();
379
  '2.0',
380
  array(
381
  'min' => 1,
382
+ 'max' => 15,
383
  'step' => 1
384
  )
385
  ),
491
  false,
492
  WPTOUCH_SETTING_BASIC,
493
  '2.0'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
494
  )
495
  ),
496
  $featured_enhanced_setting,
504
  );
505
 
506
  return $page_options;
507
+ }
themes/foundation/modules/featured/wptouch-owl.js CHANGED
@@ -17,14 +17,17 @@ function doOwlFeatured() {
17
  autoplayTimeout = false;
18
  }
19
 
20
- jQuery( '.owl-carousel' ).owlCarousel({
21
  rtl: use_rtl,
22
  nav: false,
23
  items: 1,
24
  loop: loop,
 
25
  autoplay: autoplay,
26
  autoplayTimeout: autoplayTimeout
27
- });
 
 
28
  }
29
  }
30
 
@@ -32,4 +35,4 @@ jQuery( document ).ready( function() {
32
  if ( jQuery( '#slider' ).length ) {
33
  doOwlFeatured();
34
  }
35
- });
17
  autoplayTimeout = false;
18
  }
19
 
20
+ var carouselOptions = {
21
  rtl: use_rtl,
22
  nav: false,
23
  items: 1,
24
  loop: loop,
25
+ // lazyLoad : true,
26
  autoplay: autoplay,
27
  autoplayTimeout: autoplayTimeout
28
+ }
29
+
30
+ jQuery( '.owl-carousel' ).owlCarousel( carouselOptions );
31
  }
32
  }
33
 
35
  if ( jQuery( '#slider' ).length ) {
36
  doOwlFeatured();
37
  }
38
+ });
themes/foundation/modules/flickity/flickity-wptouch.js ADDED
File without changes
themes/foundation/modules/flickity/flickity.css ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! Flickity v2.0.2
2
+ http://flickity.metafizzy.co
3
+ ---------------------------------------------- */
4
+
5
+ .flickity-enabled {
6
+ position: relative;
7
+ }
8
+
9
+ .flickity-enabled:focus { outline: none; }
10
+
11
+ .flickity-viewport {
12
+ overflow: hidden;
13
+ position: relative;
14
+ height: 100%;
15
+ }
16
+
17
+ .flickity-slider {
18
+ position: absolute;
19
+ width: 100%;
20
+ height: 100%;
21
+ }
22
+
23
+ /* draggable */
24
+
25
+ .flickity-enabled.is-draggable {
26
+ -webkit-tap-highlight-color: transparent;
27
+ tap-highlight-color: transparent;
28
+ -webkit-user-select: none;
29
+ -moz-user-select: none;
30
+ -ms-user-select: none;
31
+ user-select: none;
32
+ }
33
+
34
+ .flickity-enabled.is-draggable .flickity-viewport {
35
+ cursor: move;
36
+ cursor: -webkit-grab;
37
+ cursor: grab;
38
+ }
39
+
40
+ .flickity-enabled.is-draggable .flickity-viewport.is-pointer-down {
41
+ cursor: -webkit-grabbing;
42
+ cursor: grabbing;
43
+ }
44
+
45
+ /* ---- previous/next buttons ---- */
46
+
47
+ .flickity-prev-next-button {
48
+ position: absolute;
49
+ top: 50%;
50
+ width: 44px;
51
+ height: 44px;
52
+ border: none;
53
+ border-radius: 50%;
54
+ background: white;
55
+ background: hsla(0, 0%, 100%, 0.75);
56
+ cursor: pointer;
57
+ /* vertically center */
58
+ -webkit-transform: translateY(-50%);
59
+ transform: translateY(-50%);
60
+ }
61
+
62
+ .flickity-prev-next-button:hover { background: white; }
63
+
64
+ .flickity-prev-next-button:focus {
65
+ outline: none;
66
+ box-shadow: 0 0 0 5px #09F;
67
+ }
68
+
69
+ .flickity-prev-next-button:active {
70
+ opacity: 0.6;
71
+ }
72
+
73
+ .flickity-prev-next-button.previous { left: 10px; }
74
+ .flickity-prev-next-button.next { right: 10px; }
75
+ /* right to left */
76
+ .flickity-rtl .flickity-prev-next-button.previous {
77
+ left: auto;
78
+ right: 10px;
79
+ }
80
+ .flickity-rtl .flickity-prev-next-button.next {
81
+ right: auto;
82
+ left: 10px;
83
+ }
84
+
85
+ .flickity-prev-next-button:disabled {
86
+ opacity: 0.3;
87
+ cursor: auto;
88
+ }
89
+
90
+ .flickity-prev-next-button svg {
91
+ position: absolute;
92
+ left: 20%;
93
+ top: 20%;
94
+ width: 60%;
95
+ height: 60%;
96
+ }
97
+
98
+ .flickity-prev-next-button .arrow {
99
+ fill: #333;
100
+ }
101
+
102
+ /* ---- page dots ---- */
103
+
104
+ .flickity-page-dots {
105
+ position: absolute;
106
+ width: 100%;
107
+ bottom: -25px;
108
+ padding: 0;
109
+ margin: 0;
110
+ list-style: none;
111
+ text-align: center;
112
+ line-height: 1;
113
+ }
114
+
115
+ .flickity-rtl .flickity-page-dots { direction: rtl; }
116
+
117
+ .flickity-page-dots .dot {
118
+ display: inline-block;
119
+ width: 10px;
120
+ height: 10px;
121
+ margin: 0 8px;
122
+ background: #333;
123
+ border-radius: 50%;
124
+ opacity: 0.25;
125
+ cursor: pointer;
126
+ }
127
+
128
+ .flickity-page-dots .dot.is-selected {
129
+ opacity: 1;
130
+ }
themes/foundation/modules/flickity/flickity.min.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! Flickity v2.0.2
2
+ http://flickity.metafizzy.co
3
+ ---------------------------------------------- */
4
+ .flickity-enabled{position:relative}.flickity-enabled:focus{outline:0}.flickity-viewport{overflow:hidden;position:relative;height:100%}.flickity-slider{position:absolute;width:100%;height:100%}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:-webkit-grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:-webkit-grabbing;cursor:grabbing}.flickity-prev-next-button{position:absolute;top:50%;width:44px;height:44px;border:none;border-radius:50%;background:#fff;background:hsla(0,0%,100%,.75);cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.flickity-prev-next-button:hover{background:#fff}.flickity-prev-next-button:focus{outline:0;box-shadow:0 0 0 5px #09F}.flickity-prev-next-button:active{opacity:.6}.flickity-prev-next-button.previous{left:10px}.flickity-prev-next-button.next{right:10px}.flickity-rtl .flickity-prev-next-button.previous{left:auto;right:10px}.flickity-rtl .flickity-prev-next-button.next{right:auto;left:10px}.flickity-prev-next-button:disabled{opacity:.3;cursor:auto}.flickity-prev-next-button svg{position:absolute;left:20%;top:20%;width:60%;height:60%}.flickity-prev-next-button .arrow{fill:#333}.flickity-page-dots{position:absolute;width:100%;bottom:-25px;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{display:inline-block;width:10px;height:10px;margin:0 8px;background:#333;border-radius:50%;opacity:.25;cursor:pointer}.flickity-page-dots .dot.is-selected{opacity:1}
themes/foundation/modules/flickity/flickity.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ add_action( 'foundation_module_init_mobile', 'foundation_flickity_init' );
4
+
5
+ function foundation_flickity_init() {
6
+
7
+ wp_enqueue_style(
8
+ 'foundation_flickity_css',
9
+ foundation_get_base_module_url() . '/flickity/flickity.min.css',
10
+ '',
11
+ md5( FOUNDATION_VERSION ),
12
+ 'screen'
13
+ );
14
+
15
+ wp_enqueue_script(
16
+ 'foundation_flickity',
17
+ foundation_get_base_module_url() . '/flickity/flickity.pkgd.min.js',
18
+ array( 'jquery' ),
19
+ md5( FOUNDATION_VERSION ),
20
+ true
21
+ );
22
+
23
+ wp_enqueue_script(
24
+ 'foundation_flickity_wptouch',
25
+ foundation_get_base_module_url() . '/flickity/flickity-wptouch.js',
26
+ array( 'foundation_flickity' ),
27
+ md5( FOUNDATION_VERSION ),
28
+ true
29
+ );
30
+
31
+ }
themes/foundation/modules/flickity/flickity.pkgd.js ADDED
@@ -0,0 +1,4625 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Flickity PACKAGED v2.0.2
3
+ * Touch, responsive, flickable carousels
4
+ *
5
+ * Licensed GPLv3 for open source use
6
+ * or Flickity Commercial License for commercial use
7
+ *
8
+ * http://flickity.metafizzy.co
9
+ * Copyright 2016 Metafizzy
10
+ */
11
+
12
+ /**
13
+ * Bridget makes jQuery widgets
14
+ * v2.0.0
15
+ * MIT license
16
+ */
17
+
18
+ /* jshint browser: true, strict: true, undef: true, unused: true */
19
+
20
+ ( function( window, factory ) {
21
+ 'use strict';
22
+ /* globals define: false, module: false, require: false */
23
+
24
+ if ( typeof define == 'function' && define.amd ) {
25
+ // AMD
26
+ define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {
27
+ factory( window, jQuery );
28
+ });
29
+ } else if ( typeof module == 'object' && module.exports ) {
30
+ // CommonJS
31
+ module.exports = factory(
32
+ window,
33
+ require('jquery')
34
+ );
35
+ } else {
36
+ // browser global
37
+ window.jQueryBridget = factory(
38
+ window,
39
+ window.jQuery
40
+ );
41
+ }
42
+
43
+ }( window, function factory( window, jQuery ) {
44
+ 'use strict';
45
+
46
+ // ----- utils ----- //
47
+
48
+ var arraySlice = Array.prototype.slice;
49
+
50
+ // helper function for logging errors
51
+ // $.error breaks jQuery chaining
52
+ var console = window.console;
53
+ var logError = typeof console == 'undefined' ? function() {} :
54
+ function( message ) {
55
+ console.error( message );
56
+ };
57
+
58
+ // ----- jQueryBridget ----- //
59
+
60
+ function jQueryBridget( namespace, PluginClass, $ ) {
61
+ $ = $ || jQuery || window.jQuery;
62
+ if ( !$ ) {
63
+ return;
64
+ }
65
+
66
+ // add option method -> $().plugin('option', {...})
67
+ if ( !PluginClass.prototype.option ) {
68
+ // option setter
69
+ PluginClass.prototype.option = function( opts ) {
70
+ // bail out if not an object
71
+ if ( !$.isPlainObject( opts ) ){
72
+ return;
73
+ }
74
+ this.options = $.extend( true, this.options, opts );
75
+ };
76
+ }
77
+
78
+ // make jQuery plugin
79
+ $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {
80
+ if ( typeof arg0 == 'string' ) {
81
+ // method call $().plugin( 'methodName', { options } )
82
+ // shift arguments by 1
83
+ var args = arraySlice.call( arguments, 1 );
84
+ return methodCall( this, arg0, args );
85
+ }
86
+ // just $().plugin({ options })
87
+ plainCall( this, arg0 );
88
+ return this;
89
+ };
90
+
91
+ // $().plugin('methodName')
92
+ function methodCall( $elems, methodName, args ) {
93
+ var returnValue;
94
+ var pluginMethodStr = '$().' + namespace + '("' + methodName + '")';
95
+
96
+ $elems.each( function( i, elem ) {
97
+ // get instance
98
+ var instance = $.data( elem, namespace );
99
+ if ( !instance ) {
100
+ logError( namespace + ' not initialized. Cannot call methods, i.e. ' +
101
+ pluginMethodStr );
102
+ return;
103
+ }
104
+
105
+ var method = instance[ methodName ];
106
+ if ( !method || methodName.charAt(0) == '_' ) {
107
+ logError( pluginMethodStr + ' is not a valid method' );
108
+ return;
109
+ }
110
+
111
+ // apply method, get return value
112
+ var value = method.apply( instance, args );
113
+ // set return value if value is returned, use only first value
114
+ returnValue = returnValue === undefined ? value : returnValue;
115
+ });
116
+
117
+ return returnValue !== undefined ? returnValue : $elems;
118
+ }
119
+
120
+ function plainCall( $elems, options ) {
121
+ $elems.each( function( i, elem ) {
122
+ var instance = $.data( elem, namespace );
123
+ if ( instance ) {
124
+ // set options & init
125
+ instance.option( options );
126
+ instance._init();
127
+ } else {
128
+ // initialize new instance
129
+ instance = new PluginClass( elem, options );
130
+ $.data( elem, namespace, instance );
131
+ }
132
+ });
133
+ }
134
+
135
+ updateJQuery( $ );
136
+
137
+ }
138
+
139
+ // ----- updateJQuery ----- //
140
+
141
+ // set $.bridget for v1 backwards compatibility
142
+ function updateJQuery( $ ) {
143
+ if ( !$ || ( $ && $.bridget ) ) {
144
+ return;
145
+ }
146
+ $.bridget = jQueryBridget;
147
+ }
148
+
149
+ updateJQuery( jQuery || window.jQuery );
150
+
151
+ // ----- ----- //
152
+
153
+ return jQueryBridget;
154
+
155
+ }));
156
+
157
+ /**
158
+ * EvEmitter v1.0.3
159
+ * Lil' event emitter
160
+ * MIT License
161
+ */
162
+
163
+ /* jshint unused: true, undef: true, strict: true */
164
+
165
+ ( function( global, factory ) {
166
+ // universal module definition
167
+ /* jshint strict: false */ /* globals define, module, window */
168
+ if ( typeof define == 'function' && define.amd ) {
169
+ // AMD - RequireJS
170
+ define( 'ev-emitter/ev-emitter',factory );
171
+ } else if ( typeof module == 'object' && module.exports ) {
172
+ // CommonJS - Browserify, Webpack
173
+ module.exports = factory();
174
+ } else {
175
+ // Browser globals
176
+ global.EvEmitter = factory();
177
+ }
178
+
179
+ }( typeof window != 'undefined' ? window : this, function() {
180
+
181
+
182
+
183
+ function EvEmitter() {}
184
+
185
+ var proto = EvEmitter.prototype;
186
+
187
+ proto.on = function( eventName, listener ) {
188
+ if ( !eventName || !listener ) {
189
+ return;
190
+ }
191
+ // set events hash
192
+ var events = this._events = this._events || {};
193
+ // set listeners array
194
+ var listeners = events[ eventName ] = events[ eventName ] || [];
195
+ // only add once
196
+ if ( listeners.indexOf( listener ) == -1 ) {
197
+ listeners.push( listener );
198
+ }
199
+
200
+ return this;
201
+ };
202
+
203
+ proto.once = function( eventName, listener ) {
204
+ if ( !eventName || !listener ) {
205
+ return;
206
+ }
207
+ // add event
208
+ this.on( eventName, listener );
209
+ // set once flag
210
+ // set onceEvents hash
211
+ var onceEvents = this._onceEvents = this._onceEvents || {};
212
+ // set onceListeners object
213
+ var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
214
+ // set flag
215
+ onceListeners[ listener ] = true;
216
+
217
+ return this;
218
+ };
219
+
220
+ proto.off = function( eventName, listener ) {
221
+ var listeners = this._events && this._events[ eventName ];
222
+ if ( !listeners || !listeners.length ) {
223
+ return;
224
+ }
225
+ var index = listeners.indexOf( listener );
226
+ if ( index != -1 ) {
227
+ listeners.splice( index, 1 );
228
+ }
229
+
230
+ return this;
231
+ };
232
+
233
+ proto.emitEvent = function( eventName, args ) {
234
+ var listeners = this._events && this._events[ eventName ];
235
+ if ( !listeners || !listeners.length ) {
236
+ return;
237
+ }
238
+ var i = 0;
239
+ var listener = listeners[i];
240
+ args = args || [];
241
+ // once stuff
242
+ var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
243
+
244
+ while ( listener ) {
245
+ var isOnce = onceListeners && onceListeners[ listener ];
246
+ if ( isOnce ) {
247
+ // remove listener
248
+ // remove before trigger to prevent recursion
249
+ this.off( eventName, listener );
250
+ // unset once flag
251
+ delete onceListeners[ listener ];
252
+ }
253
+ // trigger listener
254
+ listener.apply( this, args );
255
+ // get next listener
256
+ i += isOnce ? 0 : 1;
257
+ listener = listeners[i];
258
+ }
259
+
260
+ return this;
261
+ };
262
+
263
+ return EvEmitter;
264
+
265
+ }));
266
+
267
+ /*!
268
+ * getSize v2.0.2
269
+ * measure size of elements
270
+ * MIT license
271
+ */
272
+
273
+ /*jshint browser: true, strict: true, undef: true, unused: true */
274
+ /*global define: false, module: false, console: false */
275
+
276
+ ( function( window, factory ) {
277
+ 'use strict';
278
+
279
+ if ( typeof define == 'function' && define.amd ) {
280
+ // AMD
281
+ define( 'get-size/get-size',[],function() {
282
+ return factory();
283
+ });
284
+ } else if ( typeof module == 'object' && module.exports ) {
285
+ // CommonJS
286
+ module.exports = factory();
287
+ } else {
288
+ // browser global
289
+ window.getSize = factory();
290
+ }
291
+
292
+ })( window, function factory() {
293
+ 'use strict';
294
+
295
+ // -------------------------- helpers -------------------------- //
296
+
297
+ // get a number from a string, not a percentage
298
+ function getStyleSize( value ) {
299
+ var num = parseFloat( value );
300
+ // not a percent like '100%', and a number
301
+ var isValid = value.indexOf('%') == -1 && !isNaN( num );
302
+ return isValid && num;
303
+ }
304
+
305
+ function noop() {}
306
+
307
+ var logError = typeof console == 'undefined' ? noop :
308
+ function( message ) {
309
+ console.error( message );
310
+ };
311
+
312
+ // -------------------------- measurements -------------------------- //
313
+
314
+ var measurements = [
315
+ 'paddingLeft',
316
+ 'paddingRight',
317
+ 'paddingTop',
318
+ 'paddingBottom',
319
+ 'marginLeft',
320
+ 'marginRight',
321
+ 'marginTop',
322
+ 'marginBottom',
323
+ 'borderLeftWidth',
324
+ 'borderRightWidth',
325
+ 'borderTopWidth',
326
+ 'borderBottomWidth'
327
+ ];
328
+
329
+ var measurementsLength = measurements.length;
330
+
331
+ function getZeroSize() {
332
+ var size = {
333
+ width: 0,
334
+ height: 0,
335
+ innerWidth: 0,
336
+ innerHeight: 0,
337
+ outerWidth: 0,
338
+ outerHeight: 0
339
+ };
340
+ for ( var i=0; i < measurementsLength; i++ ) {
341
+ var measurement = measurements[i];
342
+ size[ measurement ] = 0;
343
+ }
344
+ return size;
345
+ }
346
+
347
+ // -------------------------- getStyle -------------------------- //
348
+
349
+ /**
350
+ * getStyle, get style of element, check for Firefox bug
351
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=548397
352
+ */
353
+ function getStyle( elem ) {
354
+ var style = getComputedStyle( elem );
355
+ if ( !style ) {
356
+ logError( 'Style returned ' + style +
357
+ '. Are you running this code in a hidden iframe on Firefox? ' +
358
+ 'See http://bit.ly/getsizebug1' );
359
+ }
360
+ return style;
361
+ }
362
+
363
+ // -------------------------- setup -------------------------- //
364
+
365
+ var isSetup = false;
366
+
367
+ var isBoxSizeOuter;
368
+
369
+ /**
370
+ * setup
371
+ * check isBoxSizerOuter
372
+ * do on first getSize() rather than on page load for Firefox bug
373
+ */
374
+ function setup() {
375
+ // setup once
376
+ if ( isSetup ) {
377
+ return;
378
+ }
379
+ isSetup = true;
380
+
381
+ // -------------------------- box sizing -------------------------- //
382
+
383
+ /**
384
+ * WebKit measures the outer-width on style.width on border-box elems
385
+ * IE & Firefox<29 measures the inner-width
386
+ */
387
+ var div = document.createElement('div');
388
+ div.style.width = '200px';
389
+ div.style.padding = '1px 2px 3px 4px';
390
+ div.style.borderStyle = 'solid';
391
+ div.style.borderWidth = '1px 2px 3px 4px';
392
+ div.style.boxSizing = 'border-box';
393
+
394
+ var body = document.body || document.documentElement;
395
+ body.appendChild( div );
396
+ var style = getStyle( div );
397
+
398
+ getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200;
399
+ body.removeChild( div );
400
+
401
+ }
402
+
403
+ // -------------------------- getSize -------------------------- //
404
+
405
+ function getSize( elem ) {
406
+ setup();
407
+
408
+ // use querySeletor if elem is string
409
+ if ( typeof elem == 'string' ) {
410
+ elem = document.querySelector( elem );
411
+ }
412
+
413
+ // do not proceed on non-objects
414
+ if ( !elem || typeof elem != 'object' || !elem.nodeType ) {
415
+ return;
416
+ }
417
+
418
+ var style = getStyle( elem );
419
+
420
+ // if hidden, everything is 0
421
+ if ( style.display == 'none' ) {
422
+ return getZeroSize();
423
+ }
424
+
425
+ var size = {};
426
+ size.width = elem.offsetWidth;
427
+ size.height = elem.offsetHeight;
428
+
429
+ var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';
430
+
431
+ // get all measurements
432
+ for ( var i=0; i < measurementsLength; i++ ) {
433
+ var measurement = measurements[i];
434
+ var value = style[ measurement ];
435
+ var num = parseFloat( value );
436
+ // any 'auto', 'medium' value will be 0
437
+ size[ measurement ] = !isNaN( num ) ? num : 0;
438
+ }
439
+
440
+ var paddingWidth = size.paddingLeft + size.paddingRight;
441
+ var paddingHeight = size.paddingTop + size.paddingBottom;
442
+ var marginWidth = size.marginLeft + size.marginRight;
443
+ var marginHeight = size.marginTop + size.marginBottom;
444
+ var borderWidth = size.borderLeftWidth + size.borderRightWidth;
445
+ var borderHeight = size.borderTopWidth + size.borderBottomWidth;
446
+
447
+ var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
448
+
449
+ // overwrite width and height if we can get it from style
450
+ var styleWidth = getStyleSize( style.width );
451
+ if ( styleWidth !== false ) {
452
+ size.width = styleWidth +
453
+ // add padding and border unless it's already including it
454
+ ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );
455
+ }
456
+
457
+ var styleHeight = getStyleSize( style.height );
458
+ if ( styleHeight !== false ) {
459
+ size.height = styleHeight +
460
+ // add padding and border unless it's already including it
461
+ ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );
462
+ }
463
+
464
+ size.innerWidth = size.width - ( paddingWidth + borderWidth );
465
+ size.innerHeight = size.height - ( paddingHeight + borderHeight );
466
+
467
+ size.outerWidth = size.width + marginWidth;
468
+ size.outerHeight = size.height + marginHeight;
469
+
470
+ return size;
471
+ }
472
+
473
+ return getSize;
474
+
475
+ });
476
+
477
+ /**
478
+ * matchesSelector v2.0.1
479
+ * matchesSelector( element, '.selector' )
480
+ * MIT license
481
+ */
482
+
483
+ /*jshint browser: true, strict: true, undef: true, unused: true */
484
+
485
+ ( function( window, factory ) {
486
+ /*global define: false, module: false */
487
+ 'use strict';
488
+ // universal module definition
489
+ if ( typeof define == 'function' && define.amd ) {
490
+ // AMD
491
+ define( 'desandro-matches-selector/matches-selector',factory );
492
+ } else if ( typeof module == 'object' && module.exports ) {
493
+ // CommonJS
494
+ module.exports = factory();
495
+ } else {
496
+ // browser global
497
+ window.matchesSelector = factory();
498
+ }
499
+
500
+ }( window, function factory() {
501
+ 'use strict';
502
+
503
+ var matchesMethod = ( function() {
504
+ var ElemProto = Element.prototype;
505
+ // check for the standard method name first
506
+ if ( ElemProto.matches ) {
507
+ return 'matches';
508
+ }
509
+ // check un-prefixed
510
+ if ( ElemProto.matchesSelector ) {
511
+ return 'matchesSelector';
512
+ }
513
+ // check vendor prefixes
514
+ var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];
515
+
516
+ for ( var i=0; i < prefixes.length; i++ ) {
517
+ var prefix = prefixes[i];
518
+ var method = prefix + 'MatchesSelector';
519
+ if ( ElemProto[ method ] ) {
520
+ return method;
521
+ }
522
+ }
523
+ })();
524
+
525
+ return function matchesSelector( elem, selector ) {
526
+ return elem[ matchesMethod ]( selector );
527
+ };
528
+
529
+ }));
530
+
531
+ /**
532
+ * Fizzy UI utils v2.0.2
533
+ * MIT license
534
+ */
535
+
536
+ /*jshint browser: true, undef: true, unused: true, strict: true */
537
+
538
+ ( function( window, factory ) {
539
+ // universal module definition
540
+ /*jshint strict: false */ /*globals define, module, require */
541
+
542
+ if ( typeof define == 'function' && define.amd ) {
543
+ // AMD
544
+ define( 'fizzy-ui-utils/utils',[
545
+ 'desandro-matches-selector/matches-selector'
546
+ ], function( matchesSelector ) {
547
+ return factory( window, matchesSelector );
548
+ });
549
+ } else if ( typeof module == 'object' && module.exports ) {
550
+ // CommonJS
551
+ module.exports = factory(
552
+ window,
553
+ require('desandro-matches-selector')
554
+ );
555
+ } else {
556
+ // browser global
557
+ window.fizzyUIUtils = factory(
558
+ window,
559
+ window.matchesSelector
560
+ );
561
+ }
562
+
563
+ }( window, function factory( window, matchesSelector ) {
564
+
565
+
566
+
567
+ var utils = {};
568
+
569
+ // ----- extend ----- //
570
+
571
+ // extends objects
572
+ utils.extend = function( a, b ) {
573
+ for ( var prop in b ) {
574
+ a[ prop ] = b[ prop ];
575
+ }
576
+ return a;
577
+ };
578
+
579
+ // ----- modulo ----- //
580
+
581
+ utils.modulo = function( num, div ) {
582
+ return ( ( num % div ) + div ) % div;
583
+ };
584
+
585
+ // ----- makeArray ----- //
586
+
587
+ // turn element or nodeList into an array
588
+ utils.makeArray = function( obj ) {
589
+ var ary = [];
590
+ if ( Array.isArray( obj ) ) {
591
+ // use object if already an array
592
+ ary = obj;
593
+ } else if ( obj && typeof obj.length == 'number' ) {
594
+ // convert nodeList to array
595
+ for ( var i=0; i < obj.length; i++ ) {
596
+ ary.push( obj[i] );
597
+ }
598
+ } else {
599
+ // array of single index
600
+ ary.push( obj );
601
+ }
602
+ return ary;
603
+ };
604
+
605
+ // ----- removeFrom ----- //
606
+
607
+ utils.removeFrom = function( ary, obj ) {
608
+ var index = ary.indexOf( obj );
609
+ if ( index != -1 ) {
610
+ ary.splice( index, 1 );
611
+ }
612
+ };
613
+
614
+ // ----- getParent ----- //
615
+
616
+ utils.getParent = function( elem, selector ) {
617
+ while ( elem != document.body ) {
618
+ elem = elem.parentNode;
619
+ if ( matchesSelector( elem, selector ) ) {
620
+ return elem;
621
+ }
622
+ }
623
+ };
624
+
625
+ // ----- getQueryElement ----- //
626
+
627
+ // use element as selector string
628
+ utils.getQueryElement = function( elem ) {
629
+ if ( typeof elem == 'string' ) {
630
+ return document.querySelector( elem );
631
+ }
632
+ return elem;
633
+ };
634
+
635
+ // ----- handleEvent ----- //
636
+
637
+ // enable .ontype to trigger from .addEventListener( elem, 'type' )
638
+ utils.handleEvent = function( event ) {
639
+ var method = 'on' + event.type;
640
+ if ( this[ method ] ) {
641
+ this[ method ]( event );
642
+ }
643
+ };
644
+
645
+ // ----- filterFindElements ----- //
646
+
647
+ utils.filterFindElements = function( elems, selector ) {
648
+ // make array of elems
649
+ elems = utils.makeArray( elems );
650
+ var ffElems = [];
651
+
652
+ elems.forEach( function( elem ) {
653
+ // check that elem is an actual element
654
+ if ( !( elem instanceof HTMLElement ) ) {
655
+ return;
656
+ }
657
+ // add elem if no selector
658
+ if ( !selector ) {
659
+ ffElems.push( elem );
660
+ return;
661
+ }
662
+ // filter & find items if we have a selector
663
+ // filter
664
+ if ( matchesSelector( elem, selector ) ) {
665
+ ffElems.push( elem );
666
+ }
667
+ // find children
668
+ var childElems = elem.querySelectorAll( selector );
669
+ // concat childElems to filterFound array
670
+ for ( var i=0; i < childElems.length; i++ ) {
671
+ ffElems.push( childElems[i] );
672
+ }
673
+ });
674
+
675
+ return ffElems;
676
+ };
677
+
678
+ // ----- debounceMethod ----- //
679
+
680
+ utils.debounceMethod = function( _class, methodName, threshold ) {
681
+ // original method
682
+ var method = _class.prototype[ methodName ];
683
+ var timeoutName = methodName + 'Timeout';
684
+
685
+ _class.prototype[ methodName ] = function() {
686
+ var timeout = this[ timeoutName ];
687
+ if ( timeout ) {
688
+ clearTimeout( timeout );
689
+ }
690
+ var args = arguments;
691
+
692
+ var _this = this;
693
+ this[ timeoutName ] = setTimeout( function() {
694
+ method.apply( _this, args );
695
+ delete _this[ timeoutName ];
696
+ }, threshold || 100 );
697
+ };
698
+ };
699
+
700
+ // ----- docReady ----- //
701
+
702
+ utils.docReady = function( callback ) {
703
+ var readyState = document.readyState;
704
+ if ( readyState == 'complete' || readyState == 'interactive' ) {
705
+ callback();
706
+ } else {
707
+ document.addEventListener( 'DOMContentLoaded', callback );
708
+ }
709
+ };
710
+
711
+ // ----- htmlInit ----- //
712
+
713
+ // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/
714
+ utils.toDashed = function( str ) {
715
+ return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {
716
+ return $1 + '-' + $2;
717
+ }).toLowerCase();
718
+ };
719
+
720
+ var console = window.console;
721
+ /**
722
+ * allow user to initialize classes via [data-namespace] or .js-namespace class
723
+ * htmlInit( Widget, 'widgetName' )
724
+ * options are parsed from data-namespace-options
725
+ */
726
+ utils.htmlInit = function( WidgetClass, namespace ) {
727
+ utils.docReady( function() {
728
+ var dashedNamespace = utils.toDashed( namespace );
729
+ var dataAttr = 'data-' + dashedNamespace;
730
+ var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );
731
+ var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );
732
+ var elems = utils.makeArray( dataAttrElems )
733
+ .concat( utils.makeArray( jsDashElems ) );
734
+ var dataOptionsAttr = dataAttr + '-options';
735
+ var jQuery = window.jQuery;
736
+
737
+ elems.forEach( function( elem ) {
738
+ var attr = elem.getAttribute( dataAttr ) ||
739
+ elem.getAttribute( dataOptionsAttr );
740
+ var options;
741
+ try {
742
+ options = attr && JSON.parse( attr );
743
+ } catch ( error ) {
744
+ // log error, do not initialize
745
+ if ( console ) {
746
+ console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +
747
+ ': ' + error );
748
+ }
749
+ return;
750
+ }
751
+ // initialize
752
+ var instance = new WidgetClass( elem, options );
753
+ // make available via $().data('layoutname')
754
+ if ( jQuery ) {
755
+ jQuery.data( elem, namespace, instance );
756
+ }
757
+ });
758
+
759
+ });
760
+ };
761
+
762
+ // ----- ----- //
763
+
764
+ return utils;
765
+
766
+ }));
767
+
768
+ // Flickity.Cell
769
+ ( function( window, factory ) {
770
+ // universal module definition
771
+ /* jshint strict: false */
772
+ if ( typeof define == 'function' && define.amd ) {
773
+ // AMD
774
+ define( 'flickity/js/cell',[
775
+ 'get-size/get-size'
776
+ ], function( getSize ) {
777
+ return factory( window, getSize );
778
+ });
779
+ } else if ( typeof module == 'object' && module.exports ) {
780
+ // CommonJS
781
+ module.exports = factory(
782
+ window,
783
+ require('get-size')
784
+ );
785
+ } else {
786
+ // browser global
787
+ window.Flickity = window.Flickity || {};
788
+ window.Flickity.Cell = factory(
789
+ window,
790
+ window.getSize
791
+ );
792
+ }
793
+
794
+ }( window, function factory( window, getSize ) {
795
+
796
+
797
+
798
+ function Cell( elem, parent ) {
799
+ this.element = elem;
800
+ this.parent = parent;
801
+
802
+ this.create();
803
+ }
804
+
805
+ var proto = Cell.prototype;
806
+
807
+ proto.create = function() {
808
+ this.element.style.position = 'absolute';
809
+ this.x = 0;
810
+ this.shift = 0;
811
+ };
812
+
813
+ proto.destroy = function() {
814
+ // reset style
815
+ this.element.style.position = '';
816
+ var side = this.parent.originSide;
817
+ this.element.style[ side ] = '';
818
+ };
819
+
820
+ proto.getSize = function() {
821
+ this.size = getSize( this.element );
822
+ };
823
+
824
+ proto.setPosition = function( x ) {
825
+ this.x = x;
826
+ this.updateTarget();
827
+ this.renderPosition( x );
828
+ };
829
+
830
+ // setDefaultTarget v1 method, backwards compatibility, remove in v3
831
+ proto.updateTarget = proto.setDefaultTarget = function() {
832
+ var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';
833
+ this.target = this.x + this.size[ marginProperty ] +
834
+ this.size.width * this.parent.cellAlign;
835
+ };
836
+
837
+ proto.renderPosition = function( x ) {
838
+ // render position of cell with in slider
839
+ var side = this.parent.originSide;
840
+ this.element.style[ side ] = this.parent.getPositionValue( x );
841
+ };
842
+
843
+ /**
844
+ * @param {Integer} factor - 0, 1, or -1
845
+ **/
846
+ proto.wrapShift = function( shift ) {
847
+ this.shift = shift;
848
+ this.renderPosition( this.x + this.parent.slideableWidth * shift );
849
+ };
850
+
851
+ proto.remove = function() {
852
+ this.element.parentNode.removeChild( this.element );
853
+ };
854
+
855
+ return Cell;
856
+
857
+ }));
858
+
859
+ // slide
860
+ ( function( window, factory ) {
861
+ // universal module definition
862
+ /* jshint strict: false */
863
+ if ( typeof define == 'function' && define.amd ) {
864
+ // AMD
865
+ define( 'flickity/js/slide',factory );
866
+ } else if ( typeof module == 'object' && module.exports ) {
867
+ // CommonJS
868
+ module.exports = factory();
869
+ } else {
870
+ // browser global
871
+ window.Flickity = window.Flickity || {};
872
+ window.Flickity.Slide = factory();
873
+ }
874
+
875
+ }( window, function factory() {
876
+ 'use strict';
877
+
878
+ function Slide( parent ) {
879
+ this.parent = parent;
880
+ this.isOriginLeft = parent.originSide == 'left';
881
+ this.cells = [];
882
+ this.outerWidth = 0;
883
+ this.height = 0;
884
+ }
885
+
886
+ var proto = Slide.prototype;
887
+
888
+ proto.addCell = function( cell ) {
889
+ this.cells.push( cell );
890
+ this.outerWidth += cell.size.outerWidth;
891
+ this.height = Math.max( cell.size.outerHeight, this.height );
892
+ // first cell stuff
893
+ if ( this.cells.length == 1 ) {
894
+ this.x = cell.x; // x comes from first cell
895
+ var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';
896
+ this.firstMargin = cell.size[ beginMargin ];
897
+ }
898
+ };
899
+
900
+ proto.updateTarget = function() {
901
+ var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';
902
+ var lastCell = this.getLastCell();
903
+ var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;
904
+ var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );
905
+ this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;
906
+ };
907
+
908
+ proto.getLastCell = function() {
909
+ return this.cells[ this.cells.length - 1 ];
910
+ };
911
+
912
+ proto.select = function() {
913
+ this.changeSelectedClass('add');
914
+ };
915
+
916
+ proto.unselect = function() {
917
+ this.changeSelectedClass('remove');
918
+ };
919
+
920
+ proto.changeSelectedClass = function( method ) {
921
+ this.cells.forEach( function( cell ) {
922
+ cell.element.classList[ method ]('is-selected');
923
+ });
924
+ };
925
+
926
+ proto.getCellElements = function() {
927
+ return this.cells.map( function( cell ) {
928
+ return cell.element;
929
+ });
930
+ };
931
+
932
+ return Slide;
933
+
934
+ }));
935
+
936
+ // animate
937
+ ( function( window, factory ) {
938
+ // universal module definition
939
+ /* jshint strict: false */
940
+ if ( typeof define == 'function' && define.amd ) {
941
+ // AMD
942
+ define( 'flickity/js/animate',[
943
+ 'fizzy-ui-utils/utils'
944
+ ], function( utils ) {
945
+ return factory( window, utils );
946
+ });
947
+ } else if ( typeof module == 'object' && module.exports ) {
948
+ // CommonJS
949
+ module.exports = factory(
950
+ window,
951
+ require('fizzy-ui-utils')
952
+ );
953
+ } else {
954
+ // browser global
955
+ window.Flickity = window.Flickity || {};
956
+ window.Flickity.animatePrototype = factory(
957
+ window,
958
+ window.fizzyUIUtils
959
+ );
960
+ }
961
+
962
+ }( window, function factory( window, utils ) {
963
+
964
+
965
+
966
+ // -------------------------- requestAnimationFrame -------------------------- //
967
+
968
+ // get rAF, prefixed, if present
969
+ var requestAnimationFrame = window.requestAnimationFrame ||
970
+ window.webkitRequestAnimationFrame;
971
+
972
+ // fallback to setTimeout
973
+ var lastTime = 0;
974
+ if ( !requestAnimationFrame ) {
975
+ requestAnimationFrame = function( callback ) {
976
+ var currTime = new Date().getTime();
977
+ var timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );
978
+ var id = setTimeout( callback, timeToCall );
979
+ lastTime = currTime + timeToCall;
980
+ return id;
981
+ };
982
+ }
983
+
984
+ // -------------------------- animate -------------------------- //
985
+
986
+ var proto = {};
987
+
988
+ proto.startAnimation = function() {
989
+ if ( this.isAnimating ) {
990
+ return;
991
+ }
992
+
993
+ this.isAnimating = true;
994
+ this.restingFrames = 0;
995
+ this.animate();
996
+ };
997
+
998
+ proto.animate = function() {
999
+ this.applyDragForce();
1000
+ this.applySelectedAttraction();
1001
+
1002
+ var previousX = this.x;
1003
+
1004
+ this.integratePhysics();
1005
+ this.positionSlider();
1006
+ this.settle( previousX );
1007
+ // animate next frame
1008
+ if ( this.isAnimating ) {
1009
+ var _this = this;
1010
+ requestAnimationFrame( function animateFrame() {
1011
+ _this.animate();
1012
+ });
1013
+ }
1014
+ };
1015
+
1016
+
1017
+ var transformProperty = ( function () {
1018
+ var style = document.documentElement.style;
1019
+ if ( typeof style.transform == 'string' ) {
1020
+ return 'transform';
1021
+ }
1022
+ return 'WebkitTransform';
1023
+ })();
1024
+
1025
+ proto.positionSlider = function() {
1026
+ var x = this.x;
1027
+ // wrap position around
1028
+ if ( this.options.wrapAround && this.cells.length > 1 ) {
1029
+ x = utils.modulo( x, this.slideableWidth );
1030
+ x = x - this.slideableWidth;
1031
+ this.shiftWrapCells( x );
1032
+ }
1033
+
1034
+ x = x + this.cursorPosition;
1035
+ // reverse if right-to-left and using transform
1036
+ x = this.options.rightToLeft && transformProperty ? -x : x;
1037
+ var value = this.getPositionValue( x );
1038
+ // use 3D tranforms for hardware acceleration on iOS
1039
+ // but use 2D when settled, for better font-rendering
1040
+ this.slider.style[ transformProperty ] = this.isAnimating ?
1041
+ 'translate3d(' + value + ',0,0)' : 'translateX(' + value + ')';
1042
+
1043
+ // scroll event
1044
+ var firstSlide = this.slides[0];
1045
+ if ( firstSlide ) {
1046
+ var positionX = -this.x - firstSlide.target;
1047
+ var progress = positionX / this.slidesWidth;
1048
+ this.dispatchEvent( 'scroll', null, [ progress, positionX ] );
1049
+ }
1050
+ };
1051
+
1052
+ proto.positionSliderAtSelected = function() {
1053
+ if ( !this.cells.length ) {
1054
+ return;
1055
+ }
1056
+ this.x = -this.selectedSlide.target;
1057
+ this.positionSlider();
1058
+ };
1059
+
1060
+ proto.getPositionValue = function( position ) {
1061
+ if ( this.options.percentPosition ) {
1062
+ // percent position, round to 2 digits, like 12.34%
1063
+ return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';
1064
+ } else {
1065
+ // pixel positioning
1066
+ return Math.round( position ) + 'px';
1067
+ }
1068
+ };
1069
+
1070
+ proto.settle = function( previousX ) {
1071
+ // keep track of frames where x hasn't moved
1072
+ if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {
1073
+ this.restingFrames++;
1074
+ }
1075
+ // stop animating if resting for 3 or more frames
1076
+ if ( this.restingFrames > 2 ) {
1077
+ this.isAnimating = false;
1078
+ delete this.isFreeScrolling;
1079
+ // render position with translateX when settled
1080
+ this.positionSlider();
1081
+ this.dispatchEvent('settle');
1082
+ }
1083
+ };
1084
+
1085
+ proto.shiftWrapCells = function( x ) {
1086
+ // shift before cells
1087
+ var beforeGap = this.cursorPosition + x;
1088
+ this._shiftCells( this.beforeShiftCells, beforeGap, -1 );
1089
+ // shift after cells
1090
+ var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );
1091
+ this._shiftCells( this.afterShiftCells, afterGap, 1 );
1092
+ };
1093
+
1094
+ proto._shiftCells = function( cells, gap, shift ) {
1095
+ for ( var i=0; i < cells.length; i++ ) {
1096
+ var cell = cells[i];
1097
+ var cellShift = gap > 0 ? shift : 0;
1098
+ cell.wrapShift( cellShift );
1099
+ gap -= cell.size.outerWidth;
1100
+ }
1101
+ };
1102
+
1103
+ proto._unshiftCells = function( cells ) {
1104
+ if ( !cells || !cells.length ) {
1105
+ return;
1106
+ }
1107
+ for ( var i=0; i < cells.length; i++ ) {
1108
+ cells[i].wrapShift( 0 );
1109
+ }
1110
+ };
1111
+
1112
+ // -------------------------- physics -------------------------- //
1113
+
1114
+ proto.integratePhysics = function() {
1115
+ this.x += this.velocity;
1116
+ this.velocity *= this.getFrictionFactor();
1117
+ };
1118
+
1119
+ proto.applyForce = function( force ) {
1120
+ this.velocity += force;
1121
+ };
1122
+
1123
+ proto.getFrictionFactor = function() {
1124
+ return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];
1125
+ };
1126
+
1127
+ proto.getRestingPosition = function() {
1128
+ // my thanks to Steven Wittens, who simplified this math greatly
1129
+ return this.x + this.velocity / ( 1 - this.getFrictionFactor() );
1130
+ };
1131
+
1132
+ proto.applyDragForce = function() {
1133
+ if ( !this.isPointerDown ) {
1134
+ return;
1135
+ }
1136
+ // change the position to drag position by applying force
1137
+ var dragVelocity = this.dragX - this.x;
1138
+ var dragForce = dragVelocity - this.velocity;
1139
+ this.applyForce( dragForce );
1140
+ };
1141
+
1142
+ proto.applySelectedAttraction = function() {
1143
+ // do not attract if pointer down or no cells
1144
+ if ( this.isPointerDown || this.isFreeScrolling || !this.cells.length ) {
1145
+ return;
1146
+ }
1147
+ var distance = this.selectedSlide.target * -1 - this.x;
1148
+ var force = distance * this.options.selectedAttraction;
1149
+ this.applyForce( force );
1150
+ };
1151
+
1152
+ return proto;
1153
+
1154
+ }));
1155
+
1156
+ // Flickity main
1157
+ ( function( window, factory ) {
1158
+ // universal module definition
1159
+ /* jshint strict: false */
1160
+ if ( typeof define == 'function' && define.amd ) {
1161
+ // AMD
1162
+ define( 'flickity/js/flickity',[
1163
+ 'ev-emitter/ev-emitter',
1164
+ 'get-size/get-size',
1165
+ 'fizzy-ui-utils/utils',
1166
+ './cell',
1167
+ './slide',
1168
+ './animate'
1169
+ ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {
1170
+ return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );
1171
+ });
1172
+ } else if ( typeof module == 'object' && module.exports ) {
1173
+ // CommonJS
1174
+ module.exports = factory(
1175
+ window,
1176
+ require('ev-emitter'),
1177
+ require('get-size'),
1178
+ require('fizzy-ui-utils'),
1179
+ require('./cell'),
1180
+ require('./slide'),
1181
+ require('./animate')
1182
+ );
1183
+ } else {
1184
+ // browser global
1185
+ var _Flickity = window.Flickity;
1186
+
1187
+ window.Flickity = factory(
1188
+ window,
1189
+ window.EvEmitter,
1190
+ window.getSize,
1191
+ window.fizzyUIUtils,
1192
+ _Flickity.Cell,
1193
+ _Flickity.Slide,
1194
+ _Flickity.animatePrototype
1195
+ );
1196
+ }
1197
+
1198
+ }( window, function factory( window, EvEmitter, getSize,
1199
+ utils, Cell, Slide, animatePrototype ) {
1200
+
1201
+
1202
+
1203
+ // vars
1204
+ var jQuery = window.jQuery;
1205
+ var getComputedStyle = window.getComputedStyle;
1206
+ var console = window.console;
1207
+
1208
+ function moveElements( elems, toElem ) {
1209
+ elems = utils.makeArray( elems );
1210
+ while ( elems.length ) {
1211
+ toElem.appendChild( elems.shift() );
1212
+ }
1213
+ }
1214
+
1215
+ // -------------------------- Flickity -------------------------- //
1216
+
1217
+ // globally unique identifiers
1218
+ var GUID = 0;
1219
+ // internal store of all Flickity intances
1220
+ var instances = {};
1221
+
1222
+ function Flickity( element, options ) {
1223
+ var queryElement = utils.getQueryElement( element );
1224
+ if ( !queryElement ) {
1225
+ if ( console ) {
1226
+ console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );
1227
+ }
1228
+ return;
1229
+ }
1230
+ this.element = queryElement;
1231
+ // add jQuery
1232
+ if ( jQuery ) {
1233
+ this.$element = jQuery( this.element );
1234
+ }
1235
+ // options
1236
+ this.options = utils.extend( {}, this.constructor.defaults );
1237
+ this.option( options );
1238
+
1239
+ // kick things off
1240
+ this._create();
1241
+ }
1242
+
1243
+ Flickity.defaults = {
1244
+ accessibility: true,
1245
+ // adaptiveHeight: false,
1246
+ cellAlign: 'center',
1247
+ // cellSelector: undefined,
1248
+ // contain: false,
1249
+ freeScrollFriction: 0.075, // friction when free-scrolling
1250
+ friction: 0.28, // friction when selecting
1251
+ namespaceJQueryEvents: true,
1252
+ // initialIndex: 0,
1253
+ percentPosition: true,
1254
+ resize: true,
1255
+ selectedAttraction: 0.025,
1256
+ setGallerySize: true
1257
+ // watchCSS: false,
1258
+ // wrapAround: false
1259
+ };
1260
+
1261
+ // hash of methods triggered on _create()
1262
+ Flickity.createMethods = [];
1263
+
1264
+ var proto = Flickity.prototype;
1265
+ // inherit EventEmitter
1266
+ utils.extend( proto, EvEmitter.prototype );
1267
+
1268
+ proto._create = function() {
1269
+ // add id for Flickity.data
1270
+ var id = this.guid = ++GUID;
1271
+ this.element.flickityGUID = id; // expando
1272
+ instances[ id ] = this; // associate via id
1273
+ // initial properties
1274
+ this.selectedIndex = 0;
1275
+ // how many frames slider has been in same position
1276
+ this.restingFrames = 0;
1277
+ // initial physics properties
1278
+ this.x = 0;
1279
+ this.velocity = 0;
1280
+ this.originSide = this.options.rightToLeft ? 'right' : 'left';
1281
+ // create viewport & slider
1282
+ this.viewport = document.createElement('div');
1283
+ this.viewport.className = 'flickity-viewport';
1284
+ this._createSlider();
1285
+
1286
+ if ( this.options.resize || this.options.watchCSS ) {
1287
+ window.addEventListener( 'resize', this );
1288
+ }
1289
+
1290
+ Flickity.createMethods.forEach( function( method ) {
1291
+ this[ method ]();
1292
+ }, this );
1293
+
1294
+ if ( this.options.watchCSS ) {
1295
+ this.watchCSS();
1296
+ } else {
1297
+ this.activate();
1298
+ }
1299
+
1300
+ };
1301
+
1302
+ /**
1303
+ * set options
1304
+ * @param {Object} opts
1305
+ */
1306
+ proto.option = function( opts ) {
1307
+ utils.extend( this.options, opts );
1308
+ };
1309
+
1310
+ proto.activate = function() {
1311
+ if ( this.isActive ) {
1312
+ return;
1313
+ }
1314
+ this.isActive = true;
1315
+ this.element.classList.add('flickity-enabled');
1316
+ if ( this.options.rightToLeft ) {
1317
+ this.element.classList.add('flickity-rtl');
1318
+ }
1319
+
1320
+ this.getSize();
1321
+ // move initial cell elements so they can be loaded as cells
1322
+ var cellElems = this._filterFindCellElements( this.element.children );
1323
+ moveElements( cellElems, this.slider );
1324
+ this.viewport.appendChild( this.slider );
1325
+ this.element.appendChild( this.viewport );
1326
+ // get cells from children
1327
+ this.reloadCells();
1328
+
1329
+ if ( this.options.accessibility ) {
1330
+ // allow element to focusable
1331
+ this.element.tabIndex = 0;
1332
+ // listen for key presses
1333
+ this.element.addEventListener( 'keydown', this );
1334
+ }
1335
+
1336
+ this.emitEvent('activate');
1337
+
1338
+ var index;
1339
+ var initialIndex = this.options.initialIndex;
1340
+ if ( this.isInitActivated ) {
1341
+ index = this.selectedIndex;
1342
+ } else if ( initialIndex !== undefined ) {
1343
+ index = this.cells[ initialIndex ] ? initialIndex : 0;
1344
+ } else {
1345
+ index = 0;
1346
+ }
1347
+ // select instantly
1348
+ this.select( index, false, true );
1349
+ // flag for initial activation, for using initialIndex
1350
+ this.isInitActivated = true;
1351
+ };
1352
+
1353
+ // slider positions the cells
1354
+ proto._createSlider = function() {
1355
+ // slider element does all the positioning
1356
+ var slider = document.createElement('div');
1357
+ slider.className = 'flickity-slider';
1358
+ slider.style[ this.originSide ] = 0;
1359
+ this.slider = slider;
1360
+ };
1361
+
1362
+ proto._filterFindCellElements = function( elems ) {
1363
+ return utils.filterFindElements( elems, this.options.cellSelector );
1364
+ };
1365
+
1366
+ // goes through all children
1367
+ proto.reloadCells = function() {
1368
+ // collection of item elements
1369
+ this.cells = this._makeCells( this.slider.children );
1370
+ this.positionCells();
1371
+ this._getWrapShiftCells();
1372
+ this.setGallerySize();
1373
+ };
1374
+
1375
+ /**
1376
+ * turn elements into Flickity.Cells
1377
+ * @param {Array or NodeList or HTMLElement} elems
1378
+ * @returns {Array} items - collection of new Flickity Cells
1379
+ */
1380
+ proto._makeCells = function( elems ) {
1381
+ var cellElems = this._filterFindCellElements( elems );
1382
+
1383
+ // create new Flickity for collection
1384
+ var cells = cellElems.map( function( cellElem ) {
1385
+ return new Cell( cellElem, this );
1386
+ }, this );
1387
+
1388
+ return cells;
1389
+ };
1390
+
1391
+ proto.getLastCell = function() {
1392
+ return this.cells[ this.cells.length - 1 ];
1393
+ };
1394
+
1395
+ proto.getLastSlide = function() {
1396
+ return this.slides[ this.slides.length - 1 ];
1397
+ };
1398
+
1399
+ // positions all cells
1400
+ proto.positionCells = function() {
1401
+ // size all cells
1402
+ this._sizeCells( this.cells );
1403
+ // position all cells
1404
+ this._positionCells( 0 );
1405
+ };
1406
+
1407
+ /**
1408
+ * position certain cells
1409
+ * @param {Integer} index - which cell to start with
1410
+ */
1411
+ proto._positionCells = function( index ) {
1412
+ index = index || 0;
1413
+ // also measure maxCellHeight
1414
+ // start 0 if positioning all cells
1415
+ this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;
1416
+ var cellX = 0;
1417
+ // get cellX
1418
+ if ( index > 0 ) {
1419
+ var startCell = this.cells[ index - 1 ];
1420
+ cellX = startCell.x + startCell.size.outerWidth;
1421
+ }
1422
+ var len = this.cells.length;
1423
+ for ( var i=index; i < len; i++ ) {
1424
+ var cell = this.cells[i];
1425
+ cell.setPosition( cellX );
1426
+ cellX += cell.size.outerWidth;
1427
+ this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );
1428
+ }
1429
+ // keep track of cellX for wrap-around
1430
+ this.slideableWidth = cellX;
1431
+ // slides
1432
+ this.updateSlides();
1433
+ // contain slides target
1434
+ this._containSlides();
1435
+ // update slidesWidth
1436
+ this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;
1437
+ };
1438
+
1439
+ /**
1440
+ * cell.getSize() on multiple cells
1441
+ * @param {Array} cells
1442
+ */
1443
+ proto._sizeCells = function( cells ) {
1444
+ cells.forEach( function( cell ) {
1445
+ cell.getSize();
1446
+ });
1447
+ };
1448
+
1449
+ // -------------------------- -------------------------- //
1450
+
1451
+ proto.updateSlides = function() {
1452
+ this.slides = [];
1453
+ if ( !this.cells.length ) {
1454
+ return;
1455
+ }
1456
+
1457
+ var slide = new Slide( this );
1458
+ this.slides.push( slide );
1459
+ var isOriginLeft = this.originSide == 'left';
1460
+ var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';
1461
+
1462
+ var canCellFit = this._getCanCellFit();
1463
+
1464
+ this.cells.forEach( function( cell, i ) {
1465
+ // just add cell if first cell in slide
1466
+ if ( !slide.cells.length ) {
1467
+ slide.addCell( cell );
1468
+ return;
1469
+ }
1470
+
1471
+ var slideWidth = ( slide.outerWidth - slide.firstMargin ) +
1472
+ ( cell.size.outerWidth - cell.size[ nextMargin ] );
1473
+
1474
+ if ( canCellFit.call( this, i, slideWidth ) ) {
1475
+ slide.addCell( cell );
1476
+ } else {
1477
+ // doesn't fit, new slide
1478
+ slide.updateTarget();
1479
+
1480
+ slide = new Slide( this );
1481
+ this.slides.push( slide );
1482
+ slide.addCell( cell );
1483
+ }
1484
+ }, this );
1485
+ // last slide
1486
+ slide.updateTarget();
1487
+ // update .selectedSlide
1488
+ this.updateSelectedSlide();
1489
+ };
1490
+
1491
+ proto._getCanCellFit = function() {
1492
+ var groupCells = this.options.groupCells;
1493
+ if ( !groupCells ) {
1494
+ return function() {
1495
+ return false;
1496
+ };
1497
+ } else if ( typeof groupCells == 'number' ) {
1498
+ // group by number. 3 -> [0,1,2], [3,4,5], ...
1499
+ var number = parseInt( groupCells, 10 );
1500
+ return function( i ) {
1501
+ return ( i % number ) !== 0;
1502
+ };
1503
+ }
1504
+ // default, group by width of slide
1505
+ // parse '75%
1506
+ var percentMatch = typeof groupCells == 'string' &&
1507
+ groupCells.match(/^(\d+)%$/);
1508
+ var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;
1509
+ return function( i, slideWidth ) {
1510
+ return slideWidth <= ( this.size.innerWidth + 1 ) * percent;
1511
+ };
1512
+ };
1513
+
1514
+ // alias _init for jQuery plugin .flickity()
1515
+ proto._init =
1516
+ proto.reposition = function() {
1517
+ this.positionCells();
1518
+ this.positionSliderAtSelected();
1519
+ };
1520
+
1521
+ proto.getSize = function() {
1522
+ this.size = getSize( this.element );
1523
+ this.setCellAlign();
1524
+ this.cursorPosition = this.size.innerWidth * this.cellAlign;
1525
+ };
1526
+
1527
+ var cellAlignShorthands = {
1528
+ // cell align, then based on origin side
1529
+ center: {
1530
+ left: 0.5,
1531
+ right: 0.5
1532
+ },
1533
+ left: {
1534
+ left: 0,
1535
+ right: 1
1536
+ },
1537
+ right: {
1538
+ right: 0,
1539
+ left: 1
1540
+ }
1541
+ };
1542
+
1543
+ proto.setCellAlign = function() {
1544
+ var shorthand = cellAlignShorthands[ this.options.cellAlign ];
1545
+ this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;
1546
+ };
1547
+
1548
+ proto.setGallerySize = function() {
1549
+ if ( this.options.setGallerySize ) {
1550
+ var height = this.options.adaptiveHeight && this.selectedSlide ?
1551
+ this.selectedSlide.height : this.maxCellHeight;
1552
+ this.viewport.style.height = height + 'px';
1553
+ }
1554
+ };
1555
+
1556
+ proto._getWrapShiftCells = function() {
1557
+ // only for wrap-around
1558
+ if ( !this.options.wrapAround ) {
1559
+ return;
1560
+ }
1561
+ // unshift previous cells
1562
+ this._unshiftCells( this.beforeShiftCells );
1563
+ this._unshiftCells( this.afterShiftCells );
1564
+ // get before cells
1565
+ // initial gap
1566
+ var gapX = this.cursorPosition;
1567
+ var cellIndex = this.cells.length - 1;
1568
+ this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );
1569
+ // get after cells
1570
+ // ending gap between last cell and end of gallery viewport
1571
+ gapX = this.size.innerWidth - this.cursorPosition;
1572
+ // start cloning at first cell, working forwards
1573
+ this.afterShiftCells = this._getGapCells( gapX, 0, 1 );
1574
+ };
1575
+
1576
+ proto._getGapCells = function( gapX, cellIndex, increment ) {
1577
+ // keep adding cells until the cover the initial gap
1578
+ var cells = [];
1579
+ while ( gapX > 0 ) {
1580
+ var cell = this.cells[ cellIndex ];
1581
+ if ( !cell ) {
1582
+ break;
1583
+ }
1584
+ cells.push( cell );
1585
+ cellIndex += increment;
1586
+ gapX -= cell.size.outerWidth;
1587
+ }
1588
+ return cells;
1589
+ };
1590
+
1591
+ // ----- contain ----- //
1592
+
1593
+ // contain cell targets so no excess sliding
1594
+ proto._containSlides = function() {
1595
+ if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {
1596
+ return;
1597
+ }
1598
+ var isRightToLeft = this.options.rightToLeft;
1599
+ var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';
1600
+ var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';
1601
+ var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];
1602
+ // content is less than gallery size
1603
+ var isContentSmaller = contentWidth < this.size.innerWidth;
1604
+ // bounds
1605
+ var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];
1606
+ var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );
1607
+ // contain each cell target
1608
+ this.slides.forEach( function( slide ) {
1609
+ if ( isContentSmaller ) {
1610
+ // all cells fit inside gallery
1611
+ slide.target = contentWidth * this.cellAlign;
1612
+ } else {
1613
+ // contain to bounds
1614
+ slide.target = Math.max( slide.target, beginBound );
1615
+ slide.target = Math.min( slide.target, endBound );
1616
+ }
1617
+ }, this );
1618
+ };
1619
+
1620
+ // ----- ----- //
1621
+
1622
+ /**
1623
+ * emits events via eventEmitter and jQuery events
1624
+ * @param {String} type - name of event
1625
+ * @param {Event} event - original event
1626
+ * @param {Array} args - extra arguments
1627
+ */
1628
+ proto.dispatchEvent = function( type, event, args ) {
1629
+ var emitArgs = event ? [ event ].concat( args ) : args;
1630
+ this.emitEvent( type, emitArgs );
1631
+
1632
+ if ( jQuery && this.$element ) {
1633
+ // default trigger with type if no event
1634
+ type += this.options.namespaceJQueryEvents ? '.flickity' : '';
1635
+ var $event = type;
1636
+ if ( event ) {
1637
+ // create jQuery event
1638
+ var jQEvent = jQuery.Event( event );
1639
+ jQEvent.type = type;
1640
+ $event = jQEvent;
1641
+ }
1642
+ this.$element.trigger( $event, args );
1643
+ }
1644
+ };
1645
+
1646
+ // -------------------------- select -------------------------- //
1647
+
1648
+ /**
1649
+ * @param {Integer} index - index of the slide
1650
+ * @param {Boolean} isWrap - will wrap-around to last/first if at the end
1651
+ * @param {Boolean} isInstant - will immediately set position at selected cell
1652
+ */
1653
+ proto.select = function( index, isWrap, isInstant ) {
1654
+ if ( !this.isActive ) {
1655
+ return;
1656
+ }
1657
+ index = parseInt( index, 10 );
1658
+ this._wrapSelect( index );
1659
+
1660
+ if ( this.options.wrapAround || isWrap ) {
1661
+ index = utils.modulo( index, this.slides.length );
1662
+ }
1663
+ // bail if invalid index
1664
+ if ( !this.slides[ index ] ) {
1665
+ return;
1666
+ }
1667
+ this.selectedIndex = index;
1668
+ this.updateSelectedSlide();
1669
+ if ( isInstant ) {
1670
+ this.positionSliderAtSelected();
1671
+ } else {
1672
+ this.startAnimation();
1673
+ }
1674
+ if ( this.options.adaptiveHeight ) {
1675
+ this.setGallerySize();
1676
+ }
1677
+
1678
+ this.dispatchEvent('select');
1679
+ // old v1 event name, remove in v3
1680
+ this.dispatchEvent('cellSelect');
1681
+ };
1682
+
1683
+ // wraps position for wrapAround, to move to closest slide. #113
1684
+ proto._wrapSelect = function( index ) {
1685
+ var len = this.slides.length;
1686
+ var isWrapping = this.options.wrapAround && len > 1;
1687
+ if ( !isWrapping ) {
1688
+ return index;
1689
+ }
1690
+ var wrapIndex = utils.modulo( index, len );
1691
+ // go to shortest
1692
+ var delta = Math.abs( wrapIndex - this.selectedIndex );
1693
+ var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );
1694
+ var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );
1695
+ if ( !this.isDragSelect && backWrapDelta < delta ) {
1696
+ index += len;
1697
+ } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {
1698
+ index -= len;
1699
+ }
1700
+ // wrap position so slider is within normal area
1701
+ if ( index < 0 ) {
1702
+ this.x -= this.slideableWidth;
1703
+ } else if ( index >= len ) {
1704
+ this.x += this.slideableWidth;
1705
+ }
1706
+ };
1707
+
1708
+ proto.previous = function( isWrap, isInstant ) {
1709
+ this.select( this.selectedIndex - 1, isWrap, isInstant );
1710
+ };
1711
+
1712
+ proto.next = function( isWrap, isInstant ) {
1713
+ this.select( this.selectedIndex + 1, isWrap, isInstant );
1714
+ };
1715
+
1716
+ proto.updateSelectedSlide = function() {
1717
+ var slide = this.slides[ this.selectedIndex ];
1718
+ // selectedIndex could be outside of slides, if triggered before resize()
1719
+ if ( !slide ) {
1720
+ return;
1721
+ }
1722
+ // unselect previous selected slide
1723
+ this.unselectSelectedSlide();
1724
+ // update new selected slide
1725
+ this.selectedSlide = slide;
1726
+ slide.select();
1727
+ this.selectedCells = slide.cells;
1728
+ this.selectedElements = slide.getCellElements();
1729
+ // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility
1730
+ // Remove in v3?
1731
+ this.selectedCell = slide.cells[0];
1732
+ this.selectedElement = this.selectedElements[0];
1733
+ };
1734
+
1735
+ proto.unselectSelectedSlide = function() {
1736
+ if ( this.selectedSlide ) {
1737
+ this.selectedSlide.unselect();
1738
+ }
1739
+ };
1740
+
1741
+ /**
1742
+ * select slide from number or cell element
1743
+ * @param {Element or Number} elem
1744
+ */
1745
+ proto.selectCell = function( value, isWrap, isInstant ) {
1746
+ // get cell
1747
+ var cell;
1748
+ if ( typeof value == 'number' ) {
1749
+ cell = this.cells[ value ];
1750
+ } else {
1751
+ // use string as selector
1752
+ if ( typeof value == 'string' ) {
1753
+ value = this.element.querySelector( value );
1754
+ }
1755
+ // get cell from element
1756
+ cell = this.getCell( value );
1757
+ }
1758
+ // select slide that has cell
1759
+ for ( var i=0; cell && i < this.slides.length; i++ ) {
1760
+ var slide = this.slides[i];
1761
+ var index = slide.cells.indexOf( cell );
1762
+ if ( index != -1 ) {
1763
+ this.select( i, isWrap, isInstant );
1764
+ return;
1765
+ }
1766
+ }
1767
+ };
1768
+
1769
+ // -------------------------- get cells -------------------------- //
1770
+
1771
+ /**
1772
+ * get Flickity.Cell, given an Element
1773
+ * @param {Element} elem
1774
+ * @returns {Flickity.Cell} item
1775
+ */
1776
+ proto.getCell = function( elem ) {
1777
+ // loop through cells to get the one that matches
1778
+ for ( var i=0; i < this.cells.length; i++ ) {
1779
+ var cell = this.cells[i];
1780
+ if ( cell.element == elem ) {
1781
+ return cell;
1782
+ }
1783
+ }
1784
+ };
1785
+
1786
+ /**
1787
+ * get collection of Flickity.Cells, given Elements
1788
+ * @param {Element, Array, NodeList} elems
1789
+ * @returns {Array} cells - Flickity.Cells
1790
+ */
1791
+ proto.getCells = function( elems ) {
1792
+ elems = utils.makeArray( elems );
1793
+ var cells = [];
1794
+ elems.forEach( function( elem ) {
1795
+ var cell = this.getCell( elem );
1796
+ if ( cell ) {
1797
+ cells.push( cell );
1798
+ }
1799
+ }, this );
1800
+ return cells;
1801
+ };
1802
+
1803
+ /**
1804
+ * get cell elements
1805
+ * @returns {Array} cellElems
1806
+ */
1807
+ proto.getCellElements = function() {
1808
+ return this.cells.map( function( cell ) {
1809
+ return cell.element;
1810
+ });
1811
+ };
1812
+
1813
+ /**
1814
+ * get parent cell from an element
1815
+ * @param {Element} elem
1816
+ * @returns {Flickit.Cell} cell
1817
+ */
1818
+ proto.getParentCell = function( elem ) {
1819
+ // first check if elem is cell
1820
+ var cell = this.getCell( elem );
1821
+ if ( cell ) {
1822
+ return cell;
1823
+ }
1824
+ // try to get parent cell elem
1825
+ elem = utils.getParent( elem, '.flickity-slider > *' );
1826
+ return this.getCell( elem );
1827
+ };
1828
+
1829
+ /**
1830
+ * get cells adjacent to a slide
1831
+ * @param {Integer} adjCount - number of adjacent slides
1832
+ * @param {Integer} index - index of slide to start
1833
+ * @returns {Array} cells - array of Flickity.Cells
1834
+ */
1835
+ proto.getAdjacentCellElements = function( adjCount, index ) {
1836
+ if ( !adjCount ) {
1837
+ return this.selectedSlide.getCellElements();
1838
+ }
1839
+ index = index === undefined ? this.selectedIndex : index;
1840
+
1841
+ var len = this.slides.length;
1842
+ if ( 1 + ( adjCount * 2 ) >= len ) {
1843
+ return this.getCellElements();
1844
+ }
1845
+
1846
+ var cellElems = [];
1847
+ for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {
1848
+ var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;
1849
+ var slide = this.slides[ slideIndex ];
1850
+ if ( slide ) {
1851
+ cellElems = cellElems.concat( slide.getCellElements() );
1852
+ }
1853
+ }
1854
+ return cellElems;
1855
+ };
1856
+
1857
+ // -------------------------- events -------------------------- //
1858
+
1859
+ proto.uiChange = function() {
1860
+ this.emitEvent('uiChange');
1861
+ };
1862
+
1863
+ proto.childUIPointerDown = function( event ) {
1864
+ this.emitEvent( 'childUIPointerDown', [ event ] );
1865
+ };
1866
+
1867
+ // ----- resize ----- //
1868
+
1869
+ proto.onresize = function() {
1870
+ this.watchCSS();
1871
+ this.resize();
1872
+ };
1873
+
1874
+ utils.debounceMethod( Flickity, 'onresize', 150 );
1875
+
1876
+ proto.resize = function() {
1877
+ if ( !this.isActive ) {
1878
+ return;
1879
+ }
1880
+ this.getSize();
1881
+ // wrap values
1882
+ if ( this.options.wrapAround ) {
1883
+ this.x = utils.modulo( this.x, this.slideableWidth );
1884
+ }
1885
+ this.positionCells();
1886
+ this._getWrapShiftCells();
1887
+ this.setGallerySize();
1888
+ this.emitEvent('resize');
1889
+ // update selected index for group slides, instant
1890
+ // TODO: position can be lost between groups of various numbers
1891
+ var selectedElement = this.selectedElements && this.selectedElements[0];
1892
+ this.selectCell( selectedElement, false, true );
1893
+ };
1894
+
1895
+ // watches the :after property, activates/deactivates
1896
+ proto.watchCSS = function() {
1897
+ var watchOption = this.options.watchCSS;
1898
+ if ( !watchOption ) {
1899
+ return;
1900
+ }
1901
+
1902
+ var afterContent = getComputedStyle( this.element, ':after' ).content;
1903
+ // activate if :after { content: 'flickity' }
1904
+ if ( afterContent.indexOf('flickity') != -1 ) {
1905
+ this.activate();
1906
+ } else {
1907
+ this.deactivate();
1908
+ }
1909
+ };
1910
+
1911
+ // ----- keydown ----- //
1912
+
1913
+ // go previous/next if left/right keys pressed
1914
+ proto.onkeydown = function( event ) {
1915
+ // only work if element is in focus
1916
+ if ( !this.options.accessibility ||
1917
+ ( document.activeElement && document.activeElement != this.element ) ) {
1918
+ return;
1919
+ }
1920
+
1921
+ if ( event.keyCode == 37 ) {
1922
+ // go left
1923
+ var leftMethod = this.options.rightToLeft ? 'next' : 'previous';
1924
+ this.uiChange();
1925
+ this[ leftMethod ]();
1926
+ } else if ( event.keyCode == 39 ) {
1927
+ // go right
1928
+ var rightMethod = this.options.rightToLeft ? 'previous' : 'next';
1929
+ this.uiChange();
1930
+ this[ rightMethod ]();
1931
+ }
1932
+ };
1933
+
1934
+ // -------------------------- destroy -------------------------- //
1935
+
1936
+ // deactivate all Flickity functionality, but keep stuff available
1937
+ proto.deactivate = function() {
1938
+ if ( !this.isActive ) {
1939
+ return;
1940
+ }
1941
+ this.element.classList.remove('flickity-enabled');
1942
+ this.element.classList.remove('flickity-rtl');
1943
+ // destroy cells
1944
+ this.cells.forEach( function( cell ) {
1945
+ cell.destroy();
1946
+ });
1947
+ this.unselectSelectedSlide();
1948
+ this.element.removeChild( this.viewport );
1949
+ // move child elements back into element
1950
+ moveElements( this.slider.children, this.element );
1951
+ if ( this.options.accessibility ) {
1952
+ this.element.removeAttribute('tabIndex');
1953
+ this.element.removeEventListener( 'keydown', this );
1954
+ }
1955
+ // set flags
1956
+ this.isActive = false;
1957
+ this.emitEvent('deactivate');
1958
+ };
1959
+
1960
+ proto.destroy = function() {
1961
+ this.deactivate();
1962
+ window.removeEventListener( 'resize', this );
1963
+ this.emitEvent('destroy');
1964
+ if ( jQuery && this.$element ) {
1965
+ jQuery.removeData( this.element, 'flickity' );
1966
+ }
1967
+ delete this.element.flickityGUID;
1968
+ delete instances[ this.guid ];
1969
+ };
1970
+
1971
+ // -------------------------- prototype -------------------------- //
1972
+
1973
+ utils.extend( proto, animatePrototype );
1974
+
1975
+ // -------------------------- extras -------------------------- //
1976
+
1977
+ /**
1978
+ * get Flickity instance from element
1979
+ * @param {Element} elem
1980
+ * @returns {Flickity}
1981
+ */
1982
+ Flickity.data = function( elem ) {
1983
+ elem = utils.getQueryElement( elem );
1984
+ var id = elem && elem.flickityGUID;
1985
+ return id && instances[ id ];
1986
+ };
1987
+
1988
+ utils.htmlInit( Flickity, 'flickity' );
1989
+
1990
+ if ( jQuery && jQuery.bridget ) {
1991
+ jQuery.bridget( 'flickity', Flickity );
1992
+ }
1993
+
1994
+ Flickity.Cell = Cell;
1995
+
1996
+ return Flickity;
1997
+
1998
+ }));
1999
+
2000
+ /*!
2001
+ * Unipointer v2.1.0
2002
+ * base class for doing one thing with pointer event
2003
+ * MIT license
2004
+ */
2005
+
2006
+ /*jshint browser: true, undef: true, unused: true, strict: true */
2007
+
2008
+ ( function( window, factory ) {
2009
+ // universal module definition
2010
+ /* jshint strict: false */ /*global define, module, require */
2011
+ if ( typeof define == 'function' && define.amd ) {
2012
+ // AMD
2013
+ define( 'unipointer/unipointer',[
2014
+ 'ev-emitter/ev-emitter'
2015
+ ], function( EvEmitter ) {
2016
+ return factory( window, EvEmitter );
2017
+ });
2018
+ } else if ( typeof module == 'object' && module.exports ) {
2019
+ // CommonJS
2020
+ module.exports = factory(
2021
+ window,
2022
+ require('ev-emitter')
2023
+ );
2024
+ } else {
2025
+ // browser global
2026
+ window.Unipointer = factory(
2027
+ window,
2028
+ window.EvEmitter
2029
+ );
2030
+ }
2031
+
2032
+ }( window, function factory( window, EvEmitter ) {
2033
+
2034
+
2035
+
2036
+ function noop() {}
2037
+
2038
+ function Unipointer() {}
2039
+
2040
+ // inherit EvEmitter
2041
+ var proto = Unipointer.prototype = Object.create( EvEmitter.prototype );
2042
+
2043
+ proto.bindStartEvent = function( elem ) {
2044
+ this._bindStartEvent( elem, true );
2045
+ };
2046
+
2047
+ proto.unbindStartEvent = function( elem ) {
2048
+ this._bindStartEvent( elem, false );
2049
+ };
2050
+
2051
+ /**
2052
+ * works as unbinder, as you can ._bindStart( false ) to unbind
2053
+ * @param {Boolean} isBind - will unbind if falsey
2054
+ */
2055
+ proto._bindStartEvent = function( elem, isBind ) {
2056
+ // munge isBind, default to true
2057
+ isBind = isBind === undefined ? true : !!isBind;
2058
+ var bindMethod = isBind ? 'addEventListener' : 'removeEventListener';
2059
+
2060
+ if ( window.navigator.pointerEnabled ) {
2061
+ // W3C Pointer Events, IE11. See https://coderwall.com/p/mfreca
2062
+ elem[ bindMethod ]( 'pointerdown', this );
2063
+ } else if ( window.navigator.msPointerEnabled ) {
2064
+ // IE10 Pointer Events
2065
+ elem[ bindMethod ]( 'MSPointerDown', this );
2066
+ } else {
2067
+ // listen for both, for devices like Chrome Pixel
2068
+ elem[ bindMethod ]( 'mousedown', this );
2069
+ elem[ bindMethod ]( 'touchstart', this );
2070
+ }
2071
+ };
2072
+
2073
+ // trigger handler methods for events
2074
+ proto.handleEvent = function( event ) {
2075
+ var method = 'on' + event.type;
2076
+ if ( this[ method ] ) {
2077
+ this[ method ]( event );
2078
+ }
2079
+ };
2080
+
2081
+ // returns the touch that we're keeping track of
2082
+ proto.getTouch = function( touches ) {
2083
+ for ( var i=0; i < touches.length; i++ ) {
2084
+ var touch = touches[i];
2085
+ if ( touch.identifier == this.pointerIdentifier ) {
2086
+ return touch;
2087
+ }
2088
+ }
2089
+ };
2090
+
2091
+ // ----- start event ----- //
2092
+
2093
+ proto.onmousedown = function( event ) {
2094
+ // dismiss clicks from right or middle buttons
2095
+ var button = event.button;
2096
+ if ( button && ( button !== 0 && button !== 1 ) ) {
2097
+ return;
2098
+ }
2099
+ this._pointerDown( event, event );
2100
+ };
2101
+
2102
+ proto.ontouchstart = function( event ) {
2103
+ this._pointerDown( event, event.changedTouches[0] );
2104
+ };
2105
+
2106
+ proto.onMSPointerDown =
2107
+ proto.onpointerdown = function( event ) {
2108
+ this._pointerDown( event, event );
2109
+ };
2110
+
2111
+ /**
2112
+ * pointer start
2113
+ * @param {Event} event
2114
+ * @param {Event or Touch} pointer
2115
+ */
2116
+ proto._pointerDown = function( event, pointer ) {
2117
+ // dismiss other pointers
2118
+ if ( this.isPointerDown ) {
2119
+ return;
2120
+ }
2121
+
2122
+ this.isPointerDown = true;
2123
+ // save pointer identifier to match up touch events
2124
+ this.pointerIdentifier = pointer.pointerId !== undefined ?
2125
+ // pointerId for pointer events, touch.indentifier for touch events
2126
+ pointer.pointerId : pointer.identifier;
2127
+
2128
+ this.pointerDown( event, pointer );
2129
+ };
2130
+
2131
+ proto.pointerDown = function( event, pointer ) {
2132
+ this._bindPostStartEvents( event );
2133
+ this.emitEvent( 'pointerDown', [ event, pointer ] );
2134
+ };
2135
+
2136
+ // hash of events to be bound after start event
2137
+ var postStartEvents = {
2138
+ mousedown: [ 'mousemove', 'mouseup' ],
2139
+ touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],
2140
+ pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],
2141
+ MSPointerDown: [ 'MSPointerMove', 'MSPointerUp', 'MSPointerCancel' ]
2142
+ };
2143
+
2144
+ proto._bindPostStartEvents = function( event ) {
2145
+ if ( !event ) {
2146
+ return;
2147
+ }
2148
+ // get proper events to match start event
2149
+ var events = postStartEvents[ event.type ];
2150
+ // bind events to node
2151
+ events.forEach( function( eventName ) {
2152
+ window.addEventListener( eventName, this );
2153
+ }, this );
2154
+ // save these arguments
2155
+ this._boundPointerEvents = events;
2156
+ };
2157
+
2158
+ proto._unbindPostStartEvents = function() {
2159
+ // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)
2160
+ if ( !this._boundPointerEvents ) {
2161
+ return;
2162
+ }
2163
+ this._boundPointerEvents.forEach( function( eventName ) {
2164
+ window.removeEventListener( eventName, this );
2165
+ }, this );
2166
+
2167
+ delete this._boundPointerEvents;
2168
+ };
2169
+
2170
+ // ----- move event ----- //
2171
+
2172
+ proto.onmousemove = function( event ) {
2173
+ this._pointerMove( event, event );
2174
+ };
2175
+
2176
+ proto.onMSPointerMove =
2177
+ proto.onpointermove = function( event ) {
2178
+ if ( event.pointerId == this.pointerIdentifier ) {
2179
+ this._pointerMove( event, event );
2180
+ }
2181
+ };
2182
+
2183
+ proto.ontouchmove = function( event ) {
2184
+ var touch = this.getTouch( event.changedTouches );
2185
+ if ( touch ) {
2186
+ this._pointerMove( event, touch );
2187
+ }
2188
+ };
2189
+
2190
+ /**
2191
+ * pointer move
2192
+ * @param {Event} event
2193
+ * @param {Event or Touch} pointer
2194
+ * @private
2195
+ */
2196
+ proto._pointerMove = function( event, pointer ) {
2197
+ this.pointerMove( event, pointer );
2198
+ };
2199
+
2200
+ // public
2201
+ proto.pointerMove = function( event, pointer ) {
2202
+ this.emitEvent( 'pointerMove', [ event, pointer ] );
2203
+ };
2204
+
2205
+ // ----- end event ----- //
2206
+
2207
+
2208
+ proto.onmouseup = function( event ) {
2209
+ this._pointerUp( event, event );
2210
+ };
2211
+
2212
+ proto.onMSPointerUp =
2213
+ proto.onpointerup = function( event ) {
2214
+ if ( event.pointerId == this.pointerIdentifier ) {
2215
+ this._pointerUp( event, event );
2216
+ }
2217
+ };
2218
+
2219
+ proto.ontouchend = function( event ) {
2220
+ var touch = this.getTouch( event.changedTouches );
2221
+ if ( touch ) {
2222
+ this._pointerUp( event, touch );
2223
+ }
2224
+ };
2225
+
2226
+ /**
2227
+ * pointer up
2228
+ * @param {Event} event
2229
+ * @param {Event or Touch} pointer
2230
+ * @private
2231
+ */
2232
+ proto._pointerUp = function( event, pointer ) {
2233
+ this._pointerDone();
2234
+ this.pointerUp( event, pointer );
2235
+ };
2236
+
2237
+ // public
2238
+ proto.pointerUp = function( event, pointer ) {
2239
+ this.emitEvent( 'pointerUp', [ event, pointer ] );
2240
+ };
2241
+
2242
+ // ----- pointer done ----- //
2243
+
2244
+ // triggered on pointer up & pointer cancel
2245
+ proto._pointerDone = function() {
2246
+ // reset properties
2247
+ this.isPointerDown = false;
2248
+ delete this.pointerIdentifier;
2249
+ // remove events
2250
+ this._unbindPostStartEvents();
2251
+ this.pointerDone();
2252
+ };
2253
+
2254
+ proto.pointerDone = noop;
2255
+
2256
+ // ----- pointer cancel ----- //
2257
+
2258
+ proto.onMSPointerCancel =
2259
+ proto.onpointercancel = function( event ) {
2260
+ if ( event.pointerId == this.pointerIdentifier ) {
2261
+ this._pointerCancel( event, event );
2262
+ }
2263
+ };
2264
+
2265
+ proto.ontouchcancel = function( event ) {
2266
+ var touch = this.getTouch( event.changedTouches );
2267
+ if ( touch ) {
2268
+ this._pointerCancel( event, touch );
2269
+ }
2270
+ };
2271
+
2272
+ /**
2273
+ * pointer cancel
2274
+ * @param {Event} event
2275
+ * @param {Event or Touch} pointer
2276
+ * @private
2277
+ */
2278
+ proto._pointerCancel = function( event, pointer ) {
2279
+ this._pointerDone();
2280
+ this.pointerCancel( event, pointer );
2281
+ };
2282
+
2283
+ // public
2284
+ proto.pointerCancel = function( event, pointer ) {
2285
+ this.emitEvent( 'pointerCancel', [ event, pointer ] );
2286
+ };
2287
+
2288
+ // ----- ----- //
2289
+
2290
+ // utility function for getting x/y coords from event
2291
+ Unipointer.getPointerPoint = function( pointer ) {
2292
+ return {
2293
+ x: pointer.pageX,
2294
+ y: pointer.pageY
2295
+ };
2296
+ };
2297
+
2298
+ // ----- ----- //
2299
+
2300
+ return Unipointer;
2301
+
2302
+ }));
2303
+
2304
+ /*!
2305
+ * Unidragger v2.1.0
2306
+ * Draggable base class
2307
+ * MIT license
2308
+ */
2309
+
2310
+ /*jshint browser: true, unused: true, undef: true, strict: true */
2311
+
2312
+ ( function( window, factory ) {
2313
+ // universal module definition
2314
+ /*jshint strict: false */ /*globals define, module, require */
2315
+
2316
+ if ( typeof define == 'function' && define.amd ) {
2317
+ // AMD
2318
+ define( 'unidragger/unidragger',[
2319
+ 'unipointer/unipointer'
2320
+ ], function( Unipointer ) {
2321
+ return factory( window, Unipointer );
2322
+ });
2323
+ } else if ( typeof module == 'object' && module.exports ) {
2324
+ // CommonJS
2325
+ module.exports = factory(
2326
+ window,
2327
+ require('unipointer')
2328
+ );
2329
+ } else {
2330
+ // browser global
2331
+ window.Unidragger = factory(
2332
+ window,
2333
+ window.Unipointer
2334
+ );
2335
+ }
2336
+
2337
+ }( window, function factory( window, Unipointer ) {
2338
+
2339
+
2340
+
2341
+ // ----- ----- //
2342
+
2343
+ function noop() {}
2344
+
2345
+ // -------------------------- Unidragger -------------------------- //
2346
+
2347
+ function Unidragger() {}
2348
+
2349
+ // inherit Unipointer & EvEmitter
2350
+ var proto = Unidragger.prototype = Object.create( Unipointer.prototype );
2351
+
2352
+ // ----- bind start ----- //
2353
+
2354
+ proto.bindHandles = function() {
2355
+ this._bindHandles( true );
2356
+ };
2357
+
2358
+ proto.unbindHandles = function() {
2359
+ this._bindHandles( false );
2360
+ };
2361
+
2362
+ var navigator = window.navigator;
2363
+ /**
2364
+ * works as unbinder, as you can .bindHandles( false ) to unbind
2365
+ * @param {Boolean} isBind - will unbind if falsey
2366
+ */
2367
+ proto._bindHandles = function( isBind ) {
2368
+ // munge isBind, default to true
2369
+ isBind = isBind === undefined ? true : !!isBind;
2370
+ // extra bind logic
2371
+ var binderExtra;
2372
+ if ( navigator.pointerEnabled ) {
2373
+ binderExtra = function( handle ) {
2374
+ // disable scrolling on the element
2375
+ handle.style.touchAction = isBind ? 'none' : '';
2376
+ };
2377
+ } else if ( navigator.msPointerEnabled ) {
2378
+ binderExtra = function( handle ) {
2379
+ // disable scrolling on the element
2380
+ handle.style.msTouchAction = isBind ? 'none' : '';
2381
+ };
2382
+ } else {
2383
+ binderExtra = noop;
2384
+ }
2385
+ // bind each handle
2386
+ var bindMethod = isBind ? 'addEventListener' : 'removeEventListener';
2387
+ for ( var i=0; i < this.handles.length; i++ ) {
2388
+ var handle = this.handles[i];
2389
+ this._bindStartEvent( handle, isBind );
2390
+ binderExtra( handle );
2391
+ handle[ bindMethod ]( 'click', this );
2392
+ }
2393
+ };
2394
+
2395
+ // ----- start event ----- //
2396
+
2397
+ /**
2398
+ * pointer start
2399
+ * @param {Event} event
2400
+ * @param {Event or Touch} pointer
2401
+ */
2402
+ proto.pointerDown = function( event, pointer ) {
2403
+ // dismiss range sliders
2404
+ if ( event.target.nodeName == 'INPUT' && event.target.type == 'range' ) {
2405
+ // reset pointerDown logic
2406
+ this.isPointerDown = false;
2407
+ delete this.pointerIdentifier;
2408
+ return;
2409
+ }
2410
+
2411
+ this._dragPointerDown( event, pointer );
2412
+ // kludge to blur focused inputs in dragger
2413
+ var focused = document.activeElement;
2414
+ if ( focused && focused.blur ) {
2415
+ focused.blur();
2416
+ }
2417
+ // bind move and end events
2418
+ this._bindPostStartEvents( event );
2419
+ this.emitEvent( 'pointerDown', [ event, pointer ] );
2420
+ };
2421
+
2422
+ // base pointer down logic
2423
+ proto._dragPointerDown = function( event, pointer ) {
2424
+ // track to see when dragging starts
2425
+ this.pointerDownPoint = Unipointer.getPointerPoint( pointer );
2426
+
2427
+ var canPreventDefault = this.canPreventDefaultOnPointerDown( event, pointer );
2428
+ if ( canPreventDefault ) {
2429
+ event.preventDefault();
2430
+ }
2431
+ };
2432
+
2433
+ // overwriteable method so Flickity can prevent for scrolling
2434
+ proto.canPreventDefaultOnPointerDown = function( event ) {
2435
+ // prevent default, unless touchstart or <select>
2436
+ return event.target.nodeName != 'SELECT';
2437
+ };
2438
+
2439
+ // ----- move event ----- //
2440
+
2441
+ /**
2442
+ * drag move
2443
+ * @param {Event} event
2444
+ * @param {Event or Touch} pointer
2445
+ */
2446
+ proto.pointerMove = function( event, pointer ) {
2447
+ var moveVector = this._dragPointerMove( event, pointer );
2448
+ this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );
2449
+ this._dragMove( event, pointer, moveVector );
2450
+ };
2451
+
2452
+ // base pointer move logic
2453
+ proto._dragPointerMove = function( event, pointer ) {
2454
+ var movePoint = Unipointer.getPointerPoint( pointer );
2455
+ var moveVector = {
2456
+ x: movePoint.x - this.pointerDownPoint.x,
2457
+ y: movePoint.y - this.pointerDownPoint.y
2458
+ };
2459
+ // start drag if pointer has moved far enough to start drag
2460
+ if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {
2461
+ this._dragStart( event, pointer );
2462
+ }
2463
+ return moveVector;
2464
+ };
2465
+
2466
+ // condition if pointer has moved far enough to start drag
2467
+ proto.hasDragStarted = function( moveVector ) {
2468
+ return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;
2469
+ };
2470
+
2471
+
2472
+ // ----- end event ----- //
2473
+
2474
+ /**
2475
+ * pointer up
2476
+ * @param {Event} event
2477
+ * @param {Event or Touch} pointer
2478
+ */
2479
+ proto.pointerUp = function( event, pointer ) {
2480
+ this.emitEvent( 'pointerUp', [ event, pointer ] );
2481
+ this._dragPointerUp( event, pointer );
2482
+ };
2483
+
2484
+ proto._dragPointerUp = function( event, pointer ) {
2485
+ if ( this.isDragging ) {
2486
+ this._dragEnd( event, pointer );
2487
+ } else {
2488
+ // pointer didn't move enough for drag to start
2489
+ this._staticClick( event, pointer );
2490
+ }
2491
+ };
2492
+
2493
+ // -------------------------- drag -------------------------- //
2494
+
2495
+ // dragStart
2496
+ proto._dragStart = function( event, pointer ) {
2497
+ this.isDragging = true;
2498
+ this.dragStartPoint = Unipointer.getPointerPoint( pointer );
2499
+ // prevent clicks
2500
+ this.isPreventingClicks = true;
2501
+
2502
+ this.dragStart( event, pointer );
2503
+ };
2504
+
2505
+ proto.dragStart = function( event, pointer ) {
2506
+ this.emitEvent( 'dragStart', [ event, pointer ] );
2507
+ };
2508
+
2509
+ // dragMove
2510
+ proto._dragMove = function( event, pointer, moveVector ) {
2511
+ // do not drag if not dragging yet
2512
+ if ( !this.isDragging ) {
2513
+ return;
2514
+ }
2515
+
2516
+ this.dragMove( event, pointer, moveVector );
2517
+ };
2518
+
2519
+ proto.dragMove = function( event, pointer, moveVector ) {
2520
+ event.preventDefault();
2521
+ this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );
2522
+ };
2523
+
2524
+ // dragEnd
2525
+ proto._dragEnd = function( event, pointer ) {
2526
+ // set flags
2527
+ this.isDragging = false;
2528
+ // re-enable clicking async
2529
+ setTimeout( function() {
2530
+ delete this.isPreventingClicks;
2531
+ }.bind( this ) );
2532
+
2533
+ this.dragEnd( event, pointer );
2534
+ };
2535
+
2536
+ proto.dragEnd = function( event, pointer ) {
2537
+ this.emitEvent( 'dragEnd', [ event, pointer ] );
2538
+ };
2539
+
2540
+ // ----- onclick ----- //
2541
+
2542
+ // handle all clicks and prevent clicks when dragging
2543
+ proto.onclick = function( event ) {
2544
+ if ( this.isPreventingClicks ) {
2545
+ event.preventDefault();
2546
+ }
2547
+ };
2548
+
2549
+ // ----- staticClick ----- //
2550
+
2551
+ // triggered after pointer down & up with no/tiny movement
2552
+ proto._staticClick = function( event, pointer ) {
2553
+ // ignore emulated mouse up clicks
2554
+ if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {
2555
+ return;
2556
+ }
2557
+
2558
+ // allow click in <input>s and <textarea>s
2559
+ var nodeName = event.target.nodeName;
2560
+ if ( nodeName == 'INPUT' || nodeName == 'TEXTAREA' ) {
2561
+ event.target.focus();
2562
+ }
2563
+ this.staticClick( event, pointer );
2564
+
2565
+ // set flag for emulated clicks 300ms after touchend
2566
+ if ( event.type != 'mouseup' ) {
2567
+ this.isIgnoringMouseUp = true;
2568
+ // reset flag after 300ms
2569
+ setTimeout( function() {
2570
+ delete this.isIgnoringMouseUp;
2571
+ }.bind( this ), 400 );
2572
+ }
2573
+ };
2574
+
2575
+ proto.staticClick = function( event, pointer ) {
2576
+ this.emitEvent( 'staticClick', [ event, pointer ] );
2577
+ };
2578
+
2579
+ // ----- utils ----- //
2580
+
2581
+ Unidragger.getPointerPoint = Unipointer.getPointerPoint;
2582
+
2583
+ // ----- ----- //
2584
+
2585
+ return Unidragger;
2586
+
2587
+ }));
2588
+
2589
+ // drag
2590
+ ( function( window, factory ) {
2591
+ // universal module definition
2592
+ /* jshint strict: false */
2593
+ if ( typeof define == 'function' && define.amd ) {
2594
+ // AMD
2595
+ define( 'flickity/js/drag',[
2596
+ './flickity',
2597
+ 'unidragger/unidragger',
2598
+ 'fizzy-ui-utils/utils'
2599
+ ], function( Flickity, Unidragger, utils ) {
2600
+ return factory( window, Flickity, Unidragger, utils );
2601
+ });
2602
+ } else if ( typeof module == 'object' && module.exports ) {
2603
+ // CommonJS
2604
+ module.exports = factory(
2605
+ window,
2606
+ require('./flickity'),
2607
+ require('unidragger'),
2608
+ require('fizzy-ui-utils')
2609
+ );
2610
+ } else {
2611
+ // browser global
2612
+ window.Flickity = factory(
2613
+ window,
2614
+ window.Flickity,
2615
+ window.Unidragger,
2616
+ window.fizzyUIUtils
2617
+ );
2618
+ }
2619
+
2620
+ }( window, function factory( window, Flickity, Unidragger, utils ) {
2621
+
2622
+
2623
+
2624
+ // ----- defaults ----- //
2625
+
2626
+ utils.extend( Flickity.defaults, {
2627
+ draggable: true,
2628
+ dragThreshold: 3,
2629
+ });
2630
+
2631
+ // ----- create ----- //
2632
+
2633
+ Flickity.createMethods.push('_createDrag');
2634
+
2635
+ // -------------------------- drag prototype -------------------------- //
2636
+
2637
+ var proto = Flickity.prototype;
2638
+ utils.extend( proto, Unidragger.prototype );
2639
+
2640
+ // -------------------------- -------------------------- //
2641
+
2642
+ proto._createDrag = function() {
2643
+ this.on( 'activate', this.bindDrag );
2644
+ this.on( 'uiChange', this._uiChangeDrag );
2645
+ this.on( 'childUIPointerDown', this._childUIPointerDownDrag );
2646
+ this.on( 'deactivate', this.unbindDrag );
2647
+ };
2648
+
2649
+ proto.bindDrag = function() {
2650
+ if ( !this.options.draggable || this.isDragBound ) {
2651
+ return;
2652
+ }
2653
+ this.element.classList.add('is-draggable');
2654
+ this.handles = [ this.viewport ];
2655
+ this.bindHandles();
2656
+ this.isDragBound = true;
2657
+ };
2658
+
2659
+ proto.unbindDrag = function() {
2660
+ if ( !this.isDragBound ) {
2661
+ return;
2662
+ }
2663
+ this.element.classList.remove('is-draggable');
2664
+ this.unbindHandles();
2665
+ delete this.isDragBound;
2666
+ };
2667
+
2668
+ proto._uiChangeDrag = function() {
2669
+ delete this.isFreeScrolling;
2670
+ };
2671
+
2672
+ proto._childUIPointerDownDrag = function( event ) {
2673
+ event.preventDefault();
2674
+ this.pointerDownFocus( event );
2675
+ };
2676
+
2677
+ // -------------------------- pointer events -------------------------- //
2678
+
2679
+ // nodes that have text fields
2680
+ var cursorNodes = {
2681
+ TEXTAREA: true,
2682
+ INPUT: true,
2683
+ };
2684
+
2685
+ // input types that do not have text fields
2686
+ var clickTypes = {
2687
+ radio: true,
2688
+ checkbox: true,
2689
+ button: true,
2690
+ submit: true,
2691
+ image: true,
2692
+ file: true,
2693
+ };
2694
+
2695
+ proto.pointerDown = function( event, pointer ) {
2696
+ // dismiss inputs with text fields. #404
2697
+ var isCursorInput = cursorNodes[ event.target.nodeName ] &&
2698
+ !clickTypes[ event.target.type ];
2699
+ if ( isCursorInput ) {
2700
+ // reset pointerDown logic
2701
+ this.isPointerDown = false;
2702
+ delete this.pointerIdentifier;
2703
+ return;
2704
+ }
2705
+
2706
+ this._dragPointerDown( event, pointer );
2707
+
2708
+ // kludge to blur focused inputs in dragger
2709
+ var focused = document.activeElement;
2710
+ if ( focused && focused.blur && focused != this.element &&
2711
+ // do not blur body for IE9 & 10, #117
2712
+ focused != document.body ) {
2713
+ focused.blur();
2714
+ }
2715
+ this.pointerDownFocus( event );
2716
+ // stop if it was moving
2717
+ this.dragX = this.x;
2718
+ this.viewport.classList.add('is-pointer-down');
2719
+ // bind move and end events
2720
+ this._bindPostStartEvents( event );
2721
+ // track scrolling
2722
+ this.pointerDownScroll = getScrollPosition();
2723
+ window.addEventListener( 'scroll', this );
2724
+
2725
+ this.dispatchEvent( 'pointerDown', event, [ pointer ] );
2726
+ };
2727
+
2728
+ var touchStartEvents = {
2729
+ touchstart: true,
2730
+ MSPointerDown: true
2731
+ };
2732
+
2733
+ var focusNodes = {
2734
+ INPUT: true,
2735
+ SELECT: true
2736
+ };
2737
+
2738
+ proto.pointerDownFocus = function( event ) {
2739
+ // focus element, if not touch, and its not an input or select
2740
+ if ( !this.options.accessibility || touchStartEvents[ event.type ] ||
2741
+ focusNodes[ event.target.nodeName ] ) {
2742
+ return;
2743
+ }
2744
+ var prevScrollY = window.pageYOffset;
2745
+ this.element.focus();
2746
+ // hack to fix scroll jump after focus, #76
2747
+ if ( window.pageYOffset != prevScrollY ) {
2748
+ window.scrollTo( window.pageXOffset, prevScrollY );
2749
+ }
2750
+ };
2751
+
2752
+ proto.canPreventDefaultOnPointerDown = function( event ) {
2753
+ // prevent default, unless touchstart or <select>
2754
+ var isTouchstart = event.type == 'touchstart';
2755
+ var targetNodeName = event.target.nodeName;
2756
+ return !isTouchstart && targetNodeName != 'SELECT';
2757
+ };
2758
+
2759
+ // ----- move ----- //
2760
+
2761
+ proto.hasDragStarted = function( moveVector ) {
2762
+ return Math.abs( moveVector.x ) > this.options.dragThreshold;
2763
+ };
2764
+
2765
+ // ----- up ----- //
2766
+
2767
+ proto.pointerUp = function( event, pointer ) {
2768
+ delete this.isTouchScrolling;
2769
+ this.viewport.classList.remove('is-pointer-down');
2770
+ this.dispatchEvent( 'pointerUp', event, [ pointer ] );
2771
+ this._dragPointerUp( event, pointer );
2772
+ };
2773
+
2774
+ proto.pointerDone = function() {
2775
+ window.removeEventListener( 'scroll', this );
2776
+ delete this.pointerDownScroll;
2777
+ };
2778
+
2779
+ // -------------------------- dragging -------------------------- //
2780
+
2781
+ proto.dragStart = function( event, pointer ) {
2782
+ this.dragStartPosition = this.x;
2783
+ this.startAnimation();
2784
+ this.dispatchEvent( 'dragStart', event, [ pointer ] );
2785
+ };
2786
+
2787
+ proto.pointerMove = function( event, pointer ) {
2788
+ var moveVector = this._dragPointerMove( event, pointer );
2789
+ this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );
2790
+ this._dragMove( event, pointer, moveVector );
2791
+ };
2792
+
2793
+ proto.dragMove = function( event, pointer, moveVector ) {
2794
+ event.preventDefault();
2795
+
2796
+ this.previousDragX = this.dragX;
2797
+ // reverse if right-to-left
2798
+ var direction = this.options.rightToLeft ? -1 : 1;
2799
+ var dragX = this.dragStartPosition + moveVector.x * direction;
2800
+
2801
+ if ( !this.options.wrapAround && this.slides.length ) {
2802
+ // slow drag
2803
+ var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );
2804
+ dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;
2805
+ var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );
2806
+ dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;
2807
+ }
2808
+
2809
+ this.dragX = dragX;
2810
+
2811
+ this.dragMoveTime = new Date();
2812
+ this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );
2813
+ };
2814
+
2815
+ proto.dragEnd = function( event, pointer ) {
2816
+ if ( this.options.freeScroll ) {
2817
+ this.isFreeScrolling = true;
2818
+ }
2819
+ // set selectedIndex based on where flick will end up
2820
+ var index = this.dragEndRestingSelect();
2821
+
2822
+ if ( this.options.freeScroll && !this.options.wrapAround ) {
2823
+ // if free-scroll & not wrap around
2824
+ // do not free-scroll if going outside of bounding slides
2825
+ // so bounding slides can attract slider, and keep it in bounds
2826
+ var restingX = this.getRestingPosition();
2827
+ this.isFreeScrolling = -restingX > this.slides[0].target &&
2828
+ -restingX < this.getLastSlide().target;
2829
+ } else if ( !this.options.freeScroll && index == this.selectedIndex ) {
2830
+ // boost selection if selected index has not changed
2831
+ index += this.dragEndBoostSelect();
2832
+ }
2833
+ delete this.previousDragX;
2834
+ // apply selection
2835
+ // TODO refactor this, selecting here feels weird
2836
+ // HACK, set flag so dragging stays in correct direction
2837
+ this.isDragSelect = this.options.wrapAround;
2838
+ this.select( index );
2839
+ delete this.isDragSelect;
2840
+ this.dispatchEvent( 'dragEnd', event, [ pointer ] );
2841
+ };
2842
+
2843
+ proto.dragEndRestingSelect = function() {
2844
+ var restingX = this.getRestingPosition();
2845
+ // how far away from selected slide
2846
+ var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );
2847
+ // get closet resting going up and going down
2848
+ var positiveResting = this._getClosestResting( restingX, distance, 1 );
2849
+ var negativeResting = this._getClosestResting( restingX, distance, -1 );
2850
+ // use closer resting for wrap-around
2851
+ var index = positiveResting.distance < negativeResting.distance ?
2852
+ positiveResting.index : negativeResting.index;
2853
+ return index;
2854
+ };
2855
+
2856
+ /**
2857
+ * given resting X and distance to selected cell
2858
+ * get the distance and index of the closest cell
2859
+ * @param {Number} restingX - estimated post-flick resting position
2860
+ * @param {Number} distance - distance to selected cell
2861
+ * @param {Integer} increment - +1 or -1, going up or down
2862
+ * @returns {Object} - { distance: {Number}, index: {Integer} }
2863
+ */
2864
+ proto._getClosestResting = function( restingX, distance, increment ) {
2865
+ var index = this.selectedIndex;
2866
+ var minDistance = Infinity;
2867
+ var condition = this.options.contain && !this.options.wrapAround ?
2868
+ // if contain, keep going if distance is equal to minDistance
2869
+ function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };
2870
+ while ( condition( distance, minDistance ) ) {
2871
+ // measure distance to next cell
2872
+ index += increment;
2873
+ minDistance = distance;
2874
+ distance = this.getSlideDistance( -restingX, index );
2875
+ if ( distance === null ) {
2876
+ break;
2877
+ }
2878
+ distance = Math.abs( distance );
2879
+ }
2880
+ return {
2881
+ distance: minDistance,
2882
+ // selected was previous index
2883
+ index: index - increment
2884
+ };
2885
+ };
2886
+
2887
+ /**
2888
+ * measure distance between x and a slide target
2889
+ * @param {Number} x
2890
+ * @param {Integer} index - slide index
2891
+ */
2892
+ proto.getSlideDistance = function( x, index ) {
2893
+ var len = this.slides.length;
2894
+ // wrap around if at least 2 slides
2895
+ var isWrapAround = this.options.wrapAround && len > 1;
2896
+ var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;
2897
+ var slide = this.slides[ slideIndex ];
2898
+ if ( !slide ) {
2899
+ return null;
2900
+ }
2901
+ // add distance for wrap-around slides
2902
+ var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;
2903
+ return x - ( slide.target + wrap );
2904
+ };
2905
+
2906
+ proto.dragEndBoostSelect = function() {
2907
+ // do not boost if no previousDragX or dragMoveTime
2908
+ if ( this.previousDragX === undefined || !this.dragMoveTime ||
2909
+ // or if drag was held for 100 ms
2910
+ new Date() - this.dragMoveTime > 100 ) {
2911
+ return 0;
2912
+ }
2913
+
2914
+ var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );
2915
+ var delta = this.previousDragX - this.dragX;
2916
+ if ( distance > 0 && delta > 0 ) {
2917
+ // boost to next if moving towards the right, and positive velocity
2918
+ return 1;
2919
+ } else if ( distance < 0 && delta < 0 ) {
2920
+ // boost to previous if moving towards the left, and negative velocity
2921
+ return -1;
2922
+ }
2923
+ return 0;
2924
+ };
2925
+
2926
+ // ----- staticClick ----- //
2927
+
2928
+ proto.staticClick = function( event, pointer ) {
2929
+ // get clickedCell, if cell was clicked
2930
+ var clickedCell = this.getParentCell( event.target );
2931
+ var cellElem = clickedCell && clickedCell.element;
2932
+ var cellIndex = clickedCell && this.cells.indexOf( clickedCell );
2933
+ this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );
2934
+ };
2935
+
2936
+ // ----- scroll ----- //
2937
+
2938
+ proto.onscroll = function() {
2939
+ var scroll = getScrollPosition();
2940
+ var scrollMoveX = this.pointerDownScroll.x - scroll.x;
2941
+ var scrollMoveY = this.pointerDownScroll.y - scroll.y;
2942
+ // cancel click/tap if scroll is too much
2943
+ if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {
2944
+ this._pointerDone();
2945
+ }
2946
+ };
2947
+
2948
+ // ----- utils ----- //
2949
+
2950
+ function getScrollPosition() {
2951
+ return {
2952
+ x: window.pageXOffset,
2953
+ y: window.pageYOffset
2954
+ };
2955
+ }
2956
+
2957
+ // ----- ----- //
2958
+
2959
+ return Flickity;
2960
+
2961
+ }));
2962
+
2963
+ /*!
2964
+ * Tap listener v2.0.0
2965
+ * listens to taps
2966
+ * MIT license
2967
+ */
2968
+
2969
+ /*jshint browser: true, unused: true, undef: true, strict: true */
2970
+
2971
+ ( function( window, factory ) {
2972
+ // universal module definition
2973
+ /*jshint strict: false*/ /*globals define, module, require */
2974
+
2975
+ if ( typeof define == 'function' && define.amd ) {
2976
+ // AMD
2977
+ define( 'tap-listener/tap-listener',[
2978
+ 'unipointer/unipointer'
2979
+ ], function( Unipointer ) {
2980
+ return factory( window, Unipointer );
2981
+ });
2982
+ } else if ( typeof module == 'object' && module.exports ) {
2983
+ // CommonJS
2984
+ module.exports = factory(
2985
+ window,
2986
+ require('unipointer')
2987
+ );
2988
+ } else {
2989
+ // browser global
2990
+ window.TapListener = factory(
2991
+ window,
2992
+ window.Unipointer
2993
+ );
2994
+ }
2995
+
2996
+ }( window, function factory( window, Unipointer ) {
2997
+
2998
+
2999
+
3000
+ // -------------------------- TapListener -------------------------- //
3001
+
3002
+ function TapListener( elem ) {
3003
+ this.bindTap( elem );
3004
+ }
3005
+
3006
+ // inherit Unipointer & EventEmitter
3007
+ var proto = TapListener.prototype = Object.create( Unipointer.prototype );
3008
+
3009
+ /**
3010
+ * bind tap event to element
3011
+ * @param {Element} elem
3012
+ */
3013
+ proto.bindTap = function( elem ) {
3014
+ if ( !elem ) {
3015
+ return;
3016
+ }
3017
+ this.unbindTap();
3018
+ this.tapElement = elem;
3019
+ this._bindStartEvent( elem, true );
3020
+ };
3021
+
3022
+ proto.unbindTap = function() {
3023
+ if ( !this.tapElement ) {
3024
+ return;
3025
+ }
3026
+ this._bindStartEvent( this.tapElement, true );
3027
+ delete this.tapElement;
3028
+ };
3029
+
3030
+ /**
3031
+ * pointer up
3032
+ * @param {Event} event
3033
+ * @param {Event or Touch} pointer
3034
+ */
3035
+ proto.pointerUp = function( event, pointer ) {
3036
+ // ignore emulated mouse up clicks
3037
+ if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {
3038
+ return;
3039
+ }
3040
+
3041
+ var pointerPoint = Unipointer.getPointerPoint( pointer );
3042
+ var boundingRect = this.tapElement.getBoundingClientRect();
3043
+ var scrollX = window.pageXOffset;
3044
+ var scrollY = window.pageYOffset;
3045
+ // calculate if pointer is inside tapElement
3046
+ var isInside = pointerPoint.x >= boundingRect.left + scrollX &&
3047
+ pointerPoint.x <= boundingRect.right + scrollX &&
3048
+ pointerPoint.y >= boundingRect.top + scrollY &&
3049
+ pointerPoint.y <= boundingRect.bottom + scrollY;
3050
+ // trigger callback if pointer is inside element
3051
+ if ( isInside ) {
3052
+ this.emitEvent( 'tap', [ event, pointer ] );
3053
+ }
3054
+
3055
+ // set flag for emulated clicks 300ms after touchend
3056
+ if ( event.type != 'mouseup' ) {
3057
+ this.isIgnoringMouseUp = true;
3058
+ // reset flag after 300ms
3059
+ var _this = this;
3060
+ setTimeout( function() {
3061
+ delete _this.isIgnoringMouseUp;
3062
+ }, 400 );
3063
+ }
3064
+ };
3065
+
3066
+ proto.destroy = function() {
3067
+ this.pointerDone();
3068
+ this.unbindTap();
3069
+ };
3070
+
3071
+ // ----- ----- //
3072
+
3073
+ return TapListener;
3074
+
3075
+ }));
3076
+
3077
+ // prev/next buttons
3078
+ ( function( window, factory ) {
3079
+ // universal module definition
3080
+ /* jshint strict: false */
3081
+ if ( typeof define == 'function' && define.amd ) {
3082
+ // AMD
3083
+ define( 'flickity/js/prev-next-button',[
3084
+ './flickity',
3085
+ 'tap-listener/tap-listener',
3086
+ 'fizzy-ui-utils/utils'
3087
+ ], function( Flickity, TapListener, utils ) {
3088
+ return factory( window, Flickity, TapListener, utils );
3089
+ });
3090
+ } else if ( typeof module == 'object' && module.exports ) {
3091
+ // CommonJS
3092
+ module.exports = factory(
3093
+ window,
3094
+ require('./flickity'),
3095
+ require('tap-listener'),
3096
+ require('fizzy-ui-utils')
3097
+ );
3098
+ } else {
3099
+ // browser global
3100
+ factory(
3101
+ window,
3102
+ window.Flickity,
3103
+ window.TapListener,
3104
+ window.fizzyUIUtils
3105
+ );
3106
+ }
3107
+
3108
+ }( window, function factory( window, Flickity, TapListener, utils ) {
3109
+ 'use strict';
3110
+
3111
+ var svgURI = 'http://www.w3.org/2000/svg';
3112
+
3113
+ // -------------------------- PrevNextButton -------------------------- //
3114
+
3115
+ function PrevNextButton( direction, parent ) {
3116
+ this.direction = direction;
3117
+ this.parent = parent;
3118
+ this._create();
3119
+ }
3120
+
3121
+ PrevNextButton.prototype = new TapListener();
3122
+
3123
+ PrevNextButton.prototype._create = function() {
3124
+ // properties
3125
+ this.isEnabled = true;
3126
+ this.isPrevious = this.direction == -1;
3127
+ var leftDirection = this.parent.options.rightToLeft ? 1 : -1;
3128
+ this.isLeft = this.direction == leftDirection;
3129
+
3130
+ var element = this.element = document.createElement('button');
3131
+ element.className = 'flickity-prev-next-button';
3132
+ element.className += this.isPrevious ? ' previous' : ' next';
3133
+ // prevent button from submitting form http://stackoverflow.com/a/10836076/182183
3134
+ element.setAttribute( 'type', 'button' );
3135
+ // init as disabled
3136
+ this.disable();
3137
+
3138
+ element.setAttribute( 'aria-label', this.isPrevious ? 'previous' : 'next' );
3139
+
3140
+ // create arrow
3141
+ var svg = this.createSVG();
3142
+ element.appendChild( svg );
3143
+ // update on select
3144
+ this.parent.on( 'select', function() {
3145
+ this.update();
3146
+ }.bind( this ));
3147
+ // tap
3148
+ this.on( 'tap', this.onTap );
3149
+ // pointerDown
3150
+ this.on( 'pointerDown', function onPointerDown( button, event ) {
3151
+ this.parent.childUIPointerDown( event );
3152
+ }.bind( this ));
3153
+ };
3154
+
3155
+ PrevNextButton.prototype.activate = function() {
3156
+ this.bindTap( this.element );
3157
+ // click events from keyboard
3158
+ this.element.addEventListener( 'click', this );
3159
+ // add to DOM
3160
+ this.parent.element.appendChild( this.element );
3161
+ };
3162
+
3163
+ PrevNextButton.prototype.deactivate = function() {
3164
+ // remove from DOM
3165
+ this.parent.element.removeChild( this.element );
3166
+ // do regular TapListener destroy
3167
+ TapListener.prototype.destroy.call( this );
3168
+ // click events from keyboard
3169
+ this.element.removeEventListener( 'click', this );
3170
+ };
3171
+
3172
+ PrevNextButton.prototype.createSVG = function() {
3173
+ var svg = document.createElementNS( svgURI, 'svg');
3174
+ svg.setAttribute( 'viewBox', '0 0 100 100' );
3175
+ var path = document.createElementNS( svgURI, 'path');
3176
+ var pathMovements = getArrowMovements( this.parent.options.arrowShape );
3177
+ path.setAttribute( 'd', pathMovements );
3178
+ path.setAttribute( 'class', 'arrow' );
3179
+ // rotate arrow
3180
+ if ( !this.isLeft ) {
3181
+ path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );
3182
+ }
3183
+ svg.appendChild( path );
3184
+ return svg;
3185
+ };
3186
+
3187
+ // get SVG path movmement
3188
+ function getArrowMovements( shape ) {
3189
+ // use shape as movement if string
3190
+ if ( typeof shape == 'string' ) {
3191
+ return shape;
3192
+ }
3193
+ // create movement string
3194
+ return 'M ' + shape.x0 + ',50' +
3195
+ ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +
3196
+ ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +
3197
+ ' L ' + shape.x3 + ',50 ' +
3198
+ ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +
3199
+ ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +
3200
+ ' Z';
3201
+ }
3202
+
3203
+ PrevNextButton.prototype.onTap = function() {
3204
+ if ( !this.isEnabled ) {
3205
+ return;
3206
+ }
3207
+ this.parent.uiChange();
3208
+ var method = this.isPrevious ? 'previous' : 'next';
3209
+ this.parent[ method ]();
3210
+ };
3211
+
3212
+ PrevNextButton.prototype.handleEvent = utils.handleEvent;
3213
+
3214
+ PrevNextButton.prototype.onclick = function() {
3215
+ // only allow clicks from keyboard
3216
+ var focused = document.activeElement;
3217
+ if ( focused && focused == this.element ) {
3218
+ this.onTap();
3219
+ }
3220
+ };
3221
+
3222
+ // ----- ----- //
3223
+
3224
+ PrevNextButton.prototype.enable = function() {
3225
+ if ( this.isEnabled ) {
3226
+ return;
3227
+ }
3228
+ this.element.disabled = false;
3229
+ this.isEnabled = true;
3230
+ };
3231
+
3232
+ PrevNextButton.prototype.disable = function() {
3233
+ if ( !this.isEnabled ) {
3234
+ return;
3235
+ }
3236
+ this.element.disabled = true;
3237
+ this.isEnabled = false;
3238
+ };
3239
+
3240
+ PrevNextButton.prototype.update = function() {
3241
+ // index of first or last slide, if previous or next
3242
+ var slides = this.parent.slides;
3243
+ // enable is wrapAround and at least 2 slides
3244
+ if ( this.parent.options.wrapAround && slides.length > 1 ) {
3245
+ this.enable();
3246
+ return;
3247
+ }
3248
+ var lastIndex = slides.length ? slides.length - 1 : 0;
3249
+ var boundIndex = this.isPrevious ? 0 : lastIndex;
3250
+ var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';
3251
+ this[ method ]();
3252
+ };
3253
+
3254
+ PrevNextButton.prototype.destroy = function() {
3255
+ this.deactivate();
3256
+ };
3257
+
3258
+ // -------------------------- Flickity prototype -------------------------- //
3259
+
3260
+ utils.extend( Flickity.defaults, {
3261
+ prevNextButtons: true,
3262
+ arrowShape: {
3263
+ x0: 10,
3264
+ x1: 60, y1: 50,
3265
+ x2: 70, y2: 40,
3266
+ x3: 30
3267
+ }
3268
+ });
3269
+
3270
+ Flickity.createMethods.push('_createPrevNextButtons');
3271
+ var proto = Flickity.prototype;
3272
+
3273
+ proto._createPrevNextButtons = function() {
3274
+ if ( !this.options.prevNextButtons ) {
3275
+ return;
3276
+ }
3277
+
3278
+ this.prevButton = new PrevNextButton( -1, this );
3279
+ this.nextButton = new PrevNextButton( 1, this );
3280
+
3281
+ this.on( 'activate', this.activatePrevNextButtons );
3282
+ };
3283
+
3284
+ proto.activatePrevNextButtons = function() {
3285
+ this.prevButton.activate();
3286
+ this.nextButton.activate();
3287
+ this.on( 'deactivate', this.deactivatePrevNextButtons );
3288
+ };
3289
+
3290
+ proto.deactivatePrevNextButtons = function() {
3291
+ this.prevButton.deactivate();
3292
+ this.nextButton.deactivate();
3293
+ this.off( 'deactivate', this.deactivatePrevNextButtons );
3294
+ };
3295
+
3296
+ // -------------------------- -------------------------- //
3297
+
3298
+ Flickity.PrevNextButton = PrevNextButton;
3299
+
3300
+ return Flickity;
3301
+
3302
+ }));
3303
+
3304
+ // page dots
3305
+ ( function( window, factory ) {
3306
+ // universal module definition
3307
+ /* jshint strict: false */
3308
+ if ( typeof define == 'function' && define.amd ) {
3309
+ // AMD
3310
+ define( 'flickity/js/page-dots',[
3311
+ './flickity',
3312
+ 'tap-listener/tap-listener',
3313
+ 'fizzy-ui-utils/utils'
3314
+ ], function( Flickity, TapListener, utils ) {
3315
+ return factory( window, Flickity, TapListener, utils );
3316
+ });
3317
+ } else if ( typeof module == 'object' && module.exports ) {
3318
+ // CommonJS
3319
+ module.exports = factory(
3320
+ window,
3321
+ require('./flickity'),
3322
+ require('tap-listener'),
3323
+ require('fizzy-ui-utils')
3324
+ );
3325
+ } else {
3326
+ // browser global
3327
+ factory(
3328
+ window,
3329
+ window.Flickity,
3330
+ window.TapListener,
3331
+ window.fizzyUIUtils
3332
+ );
3333
+ }
3334
+
3335
+ }( window, function factory( window, Flickity, TapListener, utils ) {
3336
+
3337
+ // -------------------------- PageDots -------------------------- //
3338
+
3339
+
3340
+
3341
+ function PageDots( parent ) {
3342
+ this.parent = parent;
3343
+ this._create();
3344
+ }
3345
+
3346
+ PageDots.prototype = new TapListener();
3347
+
3348
+ PageDots.prototype._create = function() {
3349
+ // create holder element
3350
+ this.holder = document.createElement('ol');
3351
+ this.holder.className = 'flickity-page-dots';
3352
+ // create dots, array of elements
3353
+ this.dots = [];
3354
+ // tap
3355
+ this.on( 'tap', this.onTap );
3356
+
3357
+ };
3358
+
3359
+ PageDots.prototype.activate = function() {
3360
+ this.setDots();
3361
+ this.bindTap( this.holder );
3362
+ // add to DOM
3363
+ this.parent.element.appendChild( this.holder );
3364
+ };
3365
+
3366
+ PageDots.prototype.deactivate = function() {
3367
+ // remove from DOM
3368
+ this.parent.element.removeChild( this.holder );
3369
+ TapListener.prototype.destroy.call( this );
3370
+ };
3371
+
3372
+ PageDots.prototype.setDots = function() {
3373
+ // get difference between number of slides and number of dots
3374
+ var delta = this.parent.slides.length - this.dots.length;
3375
+ if ( delta > 0 ) {
3376
+ this.addDots( delta );
3377
+ } else if ( delta < 0 ) {
3378
+ this.removeDots( -delta );
3379
+ }
3380
+ };
3381
+
3382
+ PageDots.prototype.addDots = function( count ) {
3383
+ var fragment = document.createDocumentFragment();
3384
+ var newDots = [];
3385
+ while ( count ) {
3386
+ var dot = document.createElement('li');
3387
+ dot.className = 'dot';
3388
+ fragment.appendChild( dot );
3389
+ newDots.push( dot );
3390
+ count--;
3391
+ }
3392
+ this.holder.appendChild( fragment );
3393
+ this.dots = this.dots.concat( newDots );
3394
+ };
3395
+
3396
+ PageDots.prototype.removeDots = function( count ) {
3397
+ // remove from this.dots collection
3398
+ var removeDots = this.dots.splice( this.dots.length - count, count );
3399
+ // remove from DOM
3400
+ removeDots.forEach( function( dot ) {
3401
+ this.holder.removeChild( dot );
3402
+ }, this );
3403
+ };
3404
+
3405
+ PageDots.prototype.updateSelected = function() {
3406
+ // remove selected class on previous
3407
+ if ( this.selectedDot ) {
3408
+ this.selectedDot.className = 'dot';
3409
+ }
3410
+ // don't proceed if no dots
3411
+ if ( !this.dots.length ) {
3412
+ return;
3413
+ }
3414
+ this.selectedDot = this.dots[ this.parent.selectedIndex ];
3415
+ this.selectedDot.className = 'dot is-selected';
3416
+ };
3417
+
3418
+ PageDots.prototype.onTap = function( event ) {
3419
+ var target = event.target;
3420
+ // only care about dot clicks
3421
+ if ( target.nodeName != 'LI' ) {
3422
+ return;
3423
+ }
3424
+
3425
+ this.parent.uiChange();
3426
+ var index = this.dots.indexOf( target );
3427
+ this.parent.select( index );
3428
+ };
3429
+
3430
+ PageDots.prototype.destroy = function() {
3431
+ this.deactivate();
3432
+ };
3433
+
3434
+ Flickity.PageDots = PageDots;
3435
+
3436
+ // -------------------------- Flickity -------------------------- //
3437
+
3438
+ utils.extend( Flickity.defaults, {
3439
+ pageDots: true
3440
+ });
3441
+
3442
+ Flickity.createMethods.push('_createPageDots');
3443
+
3444
+ var proto = Flickity.prototype;
3445
+
3446
+ proto._createPageDots = function() {
3447
+ if ( !this.options.pageDots ) {
3448
+ return;
3449
+ }
3450
+ this.pageDots = new PageDots( this );
3451
+ // events
3452
+ this.on( 'activate', this.activatePageDots );
3453
+ this.on( 'select', this.updateSelectedPageDots );
3454
+ this.on( 'cellChange', this.updatePageDots );
3455
+ this.on( 'resize', this.updatePageDots );
3456
+ this.on( 'deactivate', this.deactivatePageDots );
3457
+
3458
+ this.pageDots.on( 'pointerDown', function( button, event ) {
3459
+ this.childUIPointerDown( event );
3460
+ }.bind( this ));
3461
+ };
3462
+
3463
+ proto.activatePageDots = function() {
3464
+ this.pageDots.activate();
3465
+ };
3466
+
3467
+ proto.updateSelectedPageDots = function() {
3468
+ this.pageDots.updateSelected();
3469
+ };
3470
+
3471
+ proto.updatePageDots = function() {
3472
+ this.pageDots.setDots();
3473
+ };
3474
+
3475
+ proto.deactivatePageDots = function() {
3476
+ this.pageDots.deactivate();
3477
+ };
3478
+
3479
+ // ----- ----- //
3480
+
3481
+ Flickity.PageDots = PageDots;
3482
+
3483
+ return Flickity;
3484
+
3485
+ }));
3486
+
3487
+ // player & autoPlay
3488
+ ( function( window, factory ) {
3489
+ // universal module definition
3490
+ /* jshint strict: false */
3491
+ if ( typeof define == 'function' && define.amd ) {
3492
+ // AMD
3493
+ define( 'flickity/js/player',[
3494
+ 'ev-emitter/ev-emitter',
3495
+ 'fizzy-ui-utils/utils',
3496
+ './flickity'
3497
+ ], function( EvEmitter, utils, Flickity ) {
3498
+ return factory( EvEmitter, utils, Flickity );
3499
+ });
3500
+ } else if ( typeof module == 'object' && module.exports ) {
3501
+ // CommonJS
3502
+ module.exports = factory(
3503
+ require('ev-emitter'),
3504
+ require('fizzy-ui-utils'),
3505
+ require('./flickity')
3506
+ );
3507
+ } else {
3508
+ // browser global
3509
+ factory(
3510
+ window.EvEmitter,
3511
+ window.fizzyUIUtils,
3512
+ window.Flickity
3513
+ );
3514
+ }
3515
+
3516
+ }( window, function factory( EvEmitter, utils, Flickity ) {
3517
+
3518
+
3519
+
3520
+ // -------------------------- Page Visibility -------------------------- //
3521
+ // https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API
3522
+
3523
+ var hiddenProperty, visibilityEvent;
3524
+ if ( 'hidden' in document ) {
3525
+ hiddenProperty = 'hidden';
3526
+ visibilityEvent = 'visibilitychange';
3527
+ } else if ( 'webkitHidden' in document ) {
3528
+ hiddenProperty = 'webkitHidden';
3529
+ visibilityEvent = 'webkitvisibilitychange';
3530
+ }
3531
+
3532
+ // -------------------------- Player -------------------------- //
3533
+
3534
+ function Player( parent ) {
3535
+ this.parent = parent;
3536
+ this.state = 'stopped';
3537
+ // visibility change event handler
3538
+ if ( visibilityEvent ) {
3539
+ this.onVisibilityChange = function() {
3540
+ this.visibilityChange();
3541
+ }.bind( this );
3542
+ this.onVisibilityPlay = function() {
3543
+ this.visibilityPlay();
3544
+ }.bind( this );
3545
+ }
3546
+ }
3547
+
3548
+ Player.prototype = Object.create( EvEmitter.prototype );
3549
+
3550
+ // start play
3551
+ Player.prototype.play = function() {
3552
+ if ( this.state == 'playing' ) {
3553
+ return;
3554
+ }
3555
+ // do not play if page is hidden, start playing when page is visible
3556
+ var isPageHidden = document[ hiddenProperty ];
3557
+ if ( visibilityEvent && isPageHidden ) {
3558
+ document.addEventListener( visibilityEvent, this.onVisibilityPlay );
3559
+ return;
3560
+ }
3561
+
3562
+ this.state = 'playing';
3563
+ // listen to visibility change
3564
+ if ( visibilityEvent ) {
3565
+ document.addEventListener( visibilityEvent, this.onVisibilityChange );
3566
+ }
3567
+ // start ticking
3568
+ this.tick();
3569
+ };
3570
+
3571
+ Player.prototype.tick = function() {
3572
+ // do not tick if not playing
3573
+ if ( this.state != 'playing' ) {
3574
+ return;
3575
+ }
3576
+
3577
+ var time = this.parent.options.autoPlay;
3578
+ // default to 3 seconds
3579
+ time = typeof time == 'number' ? time : 3000;
3580
+ var _this = this;
3581
+ // HACK: reset ticks if stopped and started within interval
3582
+ this.clear();
3583
+ this.timeout = setTimeout( function() {
3584
+ _this.parent.next( true );
3585
+ _this.tick();
3586
+ }, time );
3587
+ };
3588
+
3589
+ Player.prototype.stop = function() {
3590
+ this.state = 'stopped';
3591
+ this.clear();
3592
+ // remove visibility change event
3593
+ if ( visibilityEvent ) {
3594
+ document.removeEventListener( visibilityEvent, this.onVisibilityChange );
3595
+ }
3596
+ };
3597
+
3598
+ Player.prototype.clear = function() {
3599
+ clearTimeout( this.timeout );
3600
+ };
3601
+
3602
+ Player.prototype.pause = function() {
3603
+ if ( this.state == 'playing' ) {
3604
+ this.state = 'paused';
3605
+ this.clear();
3606
+ }
3607
+ };
3608
+
3609
+ Player.prototype.unpause = function() {
3610
+ // re-start play if paused
3611
+ if ( this.state == 'paused' ) {
3612
+ this.play();
3613
+ }
3614
+ };
3615
+
3616
+ // pause if page visibility is hidden, unpause if visible
3617
+ Player.prototype.visibilityChange = function() {
3618
+ var isPageHidden = document[ hiddenProperty ];
3619
+ this[ isPageHidden ? 'pause' : 'unpause' ]();
3620
+ };
3621
+
3622
+ Player.prototype.visibilityPlay = function() {
3623
+ this.play();
3624
+ document.removeEventListener( visibilityEvent, this.onVisibilityPlay );
3625
+ };
3626
+
3627
+ // -------------------------- Flickity -------------------------- //
3628
+
3629
+ utils.extend( Flickity.defaults, {
3630
+ pauseAutoPlayOnHover: true
3631
+ });
3632
+
3633
+ Flickity.createMethods.push('_createPlayer');
3634
+ var proto = Flickity.prototype;
3635
+
3636
+ proto._createPlayer = function() {
3637
+ this.player = new Player( this );
3638
+
3639
+ this.on( 'activate', this.activatePlayer );
3640
+ this.on( 'uiChange', this.stopPlayer );
3641
+ this.on( 'pointerDown', this.stopPlayer );
3642
+ this.on( 'deactivate', this.deactivatePlayer );
3643
+ };
3644
+
3645
+ proto.activatePlayer = function() {
3646
+ if ( !this.options.autoPlay ) {
3647
+ return;
3648
+ }
3649
+ this.player.play();
3650
+ this.element.addEventListener( 'mouseenter', this );
3651
+ };
3652
+
3653
+ // Player API, don't hate the ... thanks I know where the door is
3654
+
3655
+ proto.playPlayer = function() {
3656
+ this.player.play();
3657
+ };
3658
+
3659
+ proto.stopPlayer = function() {
3660
+ this.player.stop();
3661
+ };
3662
+
3663
+ proto.pausePlayer = function() {
3664
+ this.player.pause();
3665
+ };
3666
+
3667
+ proto.unpausePlayer = function() {
3668
+ this.player.unpause();
3669
+ };
3670
+
3671
+ proto.deactivatePlayer = function() {
3672
+ this.player.stop();
3673
+ this.element.removeEventListener( 'mouseenter', this );
3674
+ };
3675
+
3676
+ // ----- mouseenter/leave ----- //
3677
+
3678
+ // pause auto-play on hover
3679
+ proto.onmouseenter = function() {
3680
+ if ( !this.options.pauseAutoPlayOnHover ) {
3681
+ return;
3682
+ }
3683
+ this.player.pause();
3684
+ this.element.addEventListener( 'mouseleave', this );
3685
+ };
3686
+
3687
+ // resume auto-play on hover off
3688
+ proto.onmouseleave = function() {
3689
+ this.player.unpause();
3690
+ this.element.removeEventListener( 'mouseleave', this );
3691
+ };
3692
+
3693
+ // ----- ----- //
3694
+
3695
+ Flickity.Player = Player;
3696
+
3697
+ return Flickity;
3698
+
3699
+ }));
3700
+
3701
+ // add, remove cell
3702
+ ( function( window, factory ) {
3703
+ // universal module definition
3704
+ /* jshint strict: false */
3705
+ if ( typeof define == 'function' && define.amd ) {
3706
+ // AMD
3707
+ define( 'flickity/js/add-remove-cell',[
3708
+ './flickity',
3709
+ 'fizzy-ui-utils/utils'
3710
+ ], function( Flickity, utils ) {
3711
+ return factory( window, Flickity, utils );
3712
+ });
3713
+ } else if ( typeof module == 'object' && module.exports ) {
3714
+ // CommonJS
3715
+ module.exports = factory(
3716
+ window,
3717
+ require('./flickity'),
3718
+ require('fizzy-ui-utils')
3719
+ );
3720
+ } else {
3721
+ // browser global
3722
+ factory(
3723
+ window,
3724
+ window.Flickity,
3725
+ window.fizzyUIUtils
3726
+ );
3727
+ }
3728
+
3729
+ }( window, function factory( window, Flickity, utils ) {
3730
+
3731
+
3732
+
3733
+ // append cells to a document fragment
3734
+ function getCellsFragment( cells ) {
3735
+ var fragment = document.createDocumentFragment();
3736
+ cells.forEach( function( cell ) {
3737
+ fragment.appendChild( cell.element );
3738
+ });
3739
+ return fragment;
3740
+ }
3741
+
3742
+ // -------------------------- add/remove cell prototype -------------------------- //
3743
+
3744
+ var proto = Flickity.prototype;
3745
+
3746
+ /**
3747
+ * Insert, prepend, or append cells
3748
+ * @param {Element, Array, NodeList} elems
3749
+ * @param {Integer} index
3750
+ */
3751
+ proto.insert = function( elems, index ) {
3752
+ var cells = this._makeCells( elems );
3753
+ if ( !cells || !cells.length ) {
3754
+ return;
3755
+ }
3756
+ var len = this.cells.length;
3757
+ // default to append
3758
+ index = index === undefined ? len : index;
3759
+ // add cells with document fragment
3760
+ var fragment = getCellsFragment( cells );
3761
+ // append to slider
3762
+ var isAppend = index == len;
3763
+ if ( isAppend ) {
3764
+ this.slider.appendChild( fragment );
3765
+ } else {
3766
+ var insertCellElement = this.cells[ index ].element;
3767
+ this.slider.insertBefore( fragment, insertCellElement );
3768
+ }
3769
+ // add to this.cells
3770
+ if ( index === 0 ) {
3771
+ // prepend, add to start
3772
+ this.cells = cells.concat( this.cells );
3773
+ } else if ( isAppend ) {
3774
+ // append, add to end
3775
+ this.cells = this.cells.concat( cells );
3776
+ } else {
3777
+ // insert in this.cells
3778
+ var endCells = this.cells.splice( index, len - index );
3779
+ this.cells = this.cells.concat( cells ).concat( endCells );
3780
+ }
3781
+
3782
+ this._sizeCells( cells );
3783
+
3784
+ var selectedIndexDelta = index > this.selectedIndex ? 0 : cells.length;
3785
+ this._cellAddedRemoved( index, selectedIndexDelta );
3786
+ };
3787
+
3788
+ proto.append = function( elems ) {
3789
+ this.insert( elems, this.cells.length );
3790
+ };
3791
+
3792
+ proto.prepend = function( elems ) {
3793
+ this.insert( elems, 0 );
3794
+ };
3795
+
3796
+ /**
3797
+ * Remove cells
3798
+ * @param {Element, Array, NodeList} elems
3799
+ */
3800
+ proto.remove = function( elems ) {
3801
+ var cells = this.getCells( elems );
3802
+ var selectedIndexDelta = 0;
3803
+ var len = cells.length;
3804
+ var i, cell;
3805
+ // calculate selectedIndexDelta, easier if done in seperate loop
3806
+ for ( i=0; i < len; i++ ) {
3807
+ cell = cells[i];
3808
+ var wasBefore = this.cells.indexOf( cell ) < this.selectedIndex;
3809
+ selectedIndexDelta -= wasBefore ? 1 : 0;
3810
+ }
3811
+
3812
+ for ( i=0; i < len; i++ ) {
3813
+ cell = cells[i];
3814
+ cell.remove();
3815
+ // remove item from collection
3816
+ utils.removeFrom( this.cells, cell );
3817
+ }
3818
+
3819
+ if ( cells.length ) {
3820
+ // update stuff
3821
+ this._cellAddedRemoved( 0, selectedIndexDelta );
3822
+ }
3823
+ };
3824
+
3825
+ // updates when cells are added or removed
3826
+ proto._cellAddedRemoved = function( changedCellIndex, selectedIndexDelta ) {
3827
+ // TODO this math isn't perfect with grouped slides
3828
+ selectedIndexDelta = selectedIndexDelta || 0;
3829
+ this.selectedIndex += selectedIndexDelta;
3830
+ this.selectedIndex = Math.max( 0, Math.min( this.slides.length - 1, this.selectedIndex ) );
3831
+
3832
+ this.cellChange( changedCellIndex, true );
3833
+ // backwards compatibility
3834
+ this.emitEvent( 'cellAddedRemoved', [ changedCellIndex, selectedIndexDelta ] );
3835
+ };
3836
+
3837
+ /**
3838
+ * logic to be run after a cell's size changes
3839
+ * @param {Element} elem - cell's element
3840
+ */
3841
+ proto.cellSizeChange = function( elem ) {
3842
+ var cell = this.getCell( elem );
3843
+ if ( !cell ) {
3844
+ return;
3845
+ }
3846
+ cell.getSize();
3847
+
3848
+ var index = this.cells.indexOf( cell );
3849
+ this.cellChange( index );
3850
+ };
3851
+
3852
+ /**
3853
+ * logic any time a cell is changed: added, removed, or size changed
3854
+ * @param {Integer} changedCellIndex - index of the changed cell, optional
3855
+ */
3856
+ proto.cellChange = function( changedCellIndex, isPositioningSlider ) {
3857
+ var prevSlideableWidth = this.slideableWidth;
3858
+ this._positionCells( changedCellIndex );
3859
+ this._getWrapShiftCells();
3860
+ this.setGallerySize();
3861
+ this.emitEvent( 'cellChange', [ changedCellIndex ] );
3862
+ // position slider
3863
+ if ( this.options.freeScroll ) {
3864
+ // shift x by change in slideableWidth
3865
+ // TODO fix position shifts when prepending w/ freeScroll
3866
+ var deltaX = prevSlideableWidth - this.slideableWidth;
3867
+ this.x += deltaX * this.cellAlign;
3868
+ this.positionSlider();
3869
+ } else {
3870
+ // do not position slider after lazy load
3871
+ if ( isPositioningSlider ) {
3872
+ this.positionSliderAtSelected();
3873
+ }
3874
+ this.select( this.selectedIndex );
3875
+ }
3876
+ };
3877
+
3878
+ // ----- ----- //
3879
+
3880
+ return Flickity;
3881
+
3882
+ }));
3883
+
3884
+ // lazyload
3885
+ ( function( window, factory ) {
3886
+ // universal module definition
3887
+ /* jshint strict: false */
3888
+ if ( typeof define == 'function' && define.amd ) {
3889
+ // AMD
3890
+ define( 'flickity/js/lazyload',[
3891
+ './flickity',
3892
+ 'fizzy-ui-utils/utils'
3893
+ ], function( Flickity, utils ) {
3894
+ return factory( window, Flickity, utils );
3895
+ });
3896
+ } else if ( typeof module == 'object' && module.exports ) {
3897
+ // CommonJS
3898
+ module.exports = factory(
3899
+ window,
3900
+ require('./flickity'),
3901
+ require('fizzy-ui-utils')
3902
+ );
3903
+ } else {
3904
+ // browser global
3905
+ factory(
3906
+ window,
3907
+ window.Flickity,
3908
+ window.fizzyUIUtils
3909
+ );
3910
+ }
3911
+
3912
+ }( window, function factory( window, Flickity, utils ) {
3913
+ 'use strict';
3914
+
3915
+ Flickity.createMethods.push('_createLazyload');
3916
+ var proto = Flickity.prototype;
3917
+
3918
+ proto._createLazyload = function() {
3919
+ this.on( 'select', this.lazyLoad );
3920
+ };
3921
+
3922
+ proto.lazyLoad = function() {
3923
+ var lazyLoad = this.options.lazyLoad;
3924
+ if ( !lazyLoad ) {
3925
+ return;
3926
+ }
3927
+ // get adjacent cells, use lazyLoad option for adjacent count
3928
+ var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;
3929
+ var cellElems = this.getAdjacentCellElements( adjCount );
3930
+ // get lazy images in those cells
3931
+ var lazyImages = [];
3932
+ cellElems.forEach( function( cellElem ) {
3933
+ var lazyCellImages = getCellLazyImages( cellElem );
3934
+ lazyImages = lazyImages.concat( lazyCellImages );
3935
+ });
3936
+ // load lazy images
3937
+ lazyImages.forEach( function( img ) {
3938
+ new LazyLoader( img, this );
3939
+ }, this );
3940
+ };
3941
+
3942
+ function getCellLazyImages( cellElem ) {
3943
+ // check if cell element is lazy image
3944
+ if ( cellElem.nodeName == 'IMG' &&
3945
+ cellElem.getAttribute('data-flickity-lazyload') ) {
3946
+ return [ cellElem ];
3947
+ }
3948
+ // select lazy images in cell
3949
+ var imgs = cellElem.querySelectorAll('img[data-flickity-lazyload]');
3950
+ return utils.makeArray( imgs );
3951
+ }
3952
+
3953
+ // -------------------------- LazyLoader -------------------------- //
3954
+
3955
+ /**
3956
+ * class to handle loading images
3957
+ */
3958
+ function LazyLoader( img, flickity ) {
3959
+ this.img = img;
3960
+ this.flickity = flickity;
3961
+ this.load();
3962
+ }
3963
+
3964
+ LazyLoader.prototype.handleEvent = utils.handleEvent;
3965
+
3966
+ LazyLoader.prototype.load = function() {
3967
+ this.img.addEventListener( 'load', this );
3968
+ this.img.addEventListener( 'error', this );
3969
+ // load image
3970
+ this.img.src = this.img.getAttribute('data-flickity-lazyload');
3971
+ // remove attr
3972
+ this.img.removeAttribute('data-flickity-lazyload');
3973
+ };
3974
+
3975
+ LazyLoader.prototype.onload = function( event ) {
3976
+ this.complete( event, 'flickity-lazyloaded' );
3977
+ };
3978
+
3979
+ LazyLoader.prototype.onerror = function( event ) {
3980
+ this.complete( event, 'flickity-lazyerror' );
3981
+ };
3982
+
3983
+ LazyLoader.prototype.complete = function( event, className ) {
3984
+ // unbind events
3985
+ this.img.removeEventListener( 'load', this );
3986
+ this.img.removeEventListener( 'error', this );
3987
+
3988
+ var cell = this.flickity.getParentCell( this.img );
3989
+ var cellElem = cell && cell.element;
3990
+ this.flickity.cellSizeChange( cellElem );
3991
+
3992
+ this.img.classList.add( className );
3993
+ this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );
3994
+ };
3995
+
3996
+ // ----- ----- //
3997
+
3998
+ Flickity.LazyLoader = LazyLoader;
3999
+
4000
+ return Flickity;
4001
+
4002
+ }));
4003
+
4004
+ /*!
4005
+ * Flickity v2.0.2
4006
+ * Touch, responsive, flickable carousels
4007
+ *
4008
+ * Licensed GPLv3 for open source use
4009
+ * or Flickity Commercial License for commercial use
4010
+ *
4011
+ * http://flickity.metafizzy.co
4012
+ * Copyright 2016 Metafizzy
4013
+ */
4014
+
4015
+ ( function( window, factory ) {
4016
+ // universal module definition
4017
+ /* jshint strict: false */
4018
+ if ( typeof define == 'function' && define.amd ) {
4019
+ // AMD
4020
+ define( 'flickity/js/index',[
4021
+ './flickity',
4022
+ './drag',
4023
+ './prev-next-button',
4024
+ './page-dots',
4025
+ './player',
4026
+ './add-remove-cell',
4027
+ './lazyload'
4028
+ ], factory );
4029
+ } else if ( typeof module == 'object' && module.exports ) {
4030
+ // CommonJS
4031
+ module.exports = factory(
4032
+ require('./flickity'),
4033
+ require('./drag'),
4034
+ require('./prev-next-button'),
4035
+ require('./page-dots'),
4036
+ require('./player'),
4037
+ require('./add-remove-cell'),
4038
+ require('./lazyload')
4039
+ );
4040
+ }
4041
+
4042
+ })( window, function factory( Flickity ) {
4043
+ /*jshint strict: false*/
4044
+ return Flickity;
4045
+ });
4046
+
4047
+ /*!
4048
+ * Flickity asNavFor v2.0.0
4049
+ * enable asNavFor for Flickity
4050
+ */
4051
+
4052
+ /*jshint browser: true, undef: true, unused: true, strict: true*/
4053
+
4054
+ ( function( window, factory ) {
4055
+ // universal module definition
4056
+ /*jshint strict: false */ /*globals define, module, require */
4057
+ if ( typeof define == 'function' && define.amd ) {
4058
+ // AMD
4059
+ define( 'flickity-as-nav-for/as-nav-for',[
4060
+ 'flickity/js/index',
4061
+ 'fizzy-ui-utils/utils'
4062
+ ], function( classie, Flickity, utils ) {
4063
+ return factory( window, classie, Flickity, utils );
4064
+ });
4065
+ } else if ( typeof module == 'object' && module.exports ) {
4066
+ // CommonJS
4067
+ module.exports = factory(
4068
+ window,
4069
+ require('flickity'),
4070
+ require('fizzy-ui-utils')
4071
+ );
4072
+ } else {
4073
+ // browser global
4074
+ window.Flickity = factory(
4075
+ window,
4076
+ window.Flickity,
4077
+ window.fizzyUIUtils
4078
+ );
4079
+ }
4080
+
4081
+ }( window, function factory( window, Flickity, utils ) {
4082
+
4083
+
4084
+
4085
+ // -------------------------- asNavFor prototype -------------------------- //
4086
+
4087
+ // Flickity.defaults.asNavFor = null;
4088
+
4089
+ Flickity.createMethods.push('_createAsNavFor');
4090
+
4091
+ var proto = Flickity.prototype;
4092
+
4093
+ proto._createAsNavFor = function() {
4094
+ this.on( 'activate', this.activateAsNavFor );
4095
+ this.on( 'deactivate', this.deactivateAsNavFor );
4096
+ this.on( 'destroy', this.destroyAsNavFor );
4097
+
4098
+ var asNavForOption = this.options.asNavFor;
4099
+ if ( !asNavForOption ) {
4100
+ return;
4101
+ }
4102
+ // HACK do async, give time for other flickity to be initalized
4103
+ var _this = this;
4104
+ setTimeout( function initNavCompanion() {
4105
+ _this.setNavCompanion( asNavForOption );
4106
+ });
4107
+ };
4108
+
4109
+ proto.setNavCompanion = function( elem ) {
4110
+ elem = utils.getQueryElement( elem );
4111
+ var companion = Flickity.data( elem );
4112
+ // stop if no companion or companion is self
4113
+ if ( !companion || companion == this ) {
4114
+ return;
4115
+ }
4116
+
4117
+ this.navCompanion = companion;
4118
+ // companion select
4119
+ var _this = this;
4120
+ this.onNavCompanionSelect = function() {
4121
+ _this.navCompanionSelect();
4122
+ };
4123
+ companion.on( 'select', this.onNavCompanionSelect );
4124
+ // click
4125
+ this.on( 'staticClick', this.onNavStaticClick );
4126
+
4127
+ this.navCompanionSelect();
4128
+ };
4129
+
4130
+ proto.navCompanionSelect = function() {
4131
+ if ( !this.navCompanion ) {
4132
+ return;
4133
+ }
4134
+ // select slide that matches first cell of slide
4135
+ var selectedCell = this.navCompanion.selectedCells[0];
4136
+ var cellIndex = this.navCompanion.cells.indexOf( selectedCell );
4137
+ this.selectCell( cellIndex );
4138
+ // set nav selected class
4139
+ this.removeNavSelectedElements();
4140
+ // stop if companion has more cells than this one
4141
+ if ( cellIndex >= this.cells.length ) {
4142
+ return;
4143
+ }
4144
+ this.navSelectedElements = this.slides[ this.selectedIndex ].getCellElements();
4145
+ this.changeNavSelectedClass('add');
4146
+ };
4147
+
4148
+ proto.changeNavSelectedClass = function( method ) {
4149
+ this.navSelectedElements.forEach( function( navElem ) {
4150
+ navElem.classList[ method ]('is-nav-selected');
4151
+ });
4152
+ };
4153
+
4154
+ proto.activateAsNavFor = function() {
4155
+ this.navCompanionSelect();
4156
+ };
4157
+
4158
+ proto.removeNavSelectedElements = function() {
4159
+ if ( !this.navSelectedElements ) {
4160
+ return;
4161
+ }
4162
+ this.changeNavSelectedClass('remove');
4163
+ delete this.navSelectedElements;
4164
+ };
4165
+
4166
+ proto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {
4167
+ if ( typeof cellIndex == 'number' ) {
4168
+ this.navCompanion.selectCell( cellIndex );
4169
+ }
4170
+ };
4171
+
4172
+ proto.deactivateAsNavFor = function() {
4173
+ this.removeNavSelectedElements();
4174
+ };
4175
+
4176
+ proto.destroyAsNavFor = function() {
4177
+ if ( !this.navCompanion ) {
4178
+ return;
4179
+ }
4180
+ this.navCompanion.off( 'select', this.onNavCompanionSelect );
4181
+ this.off( 'staticClick', this.onNavStaticClick );
4182
+ delete this.navCompanion;
4183
+ };
4184
+
4185
+ // ----- ----- //
4186
+
4187
+ return Flickity;
4188
+
4189
+ }));
4190
+
4191
+ /*!
4192
+ * imagesLoaded v4.1.0
4193
+ * JavaScript is all like "You images are done yet or what?"
4194
+ * MIT License
4195
+ */
4196
+
4197
+ ( function( window, factory ) { 'use strict';
4198
+ // universal module definition
4199
+
4200
+ /*global define: false, module: false, require: false */
4201
+
4202
+ if ( typeof define == 'function' && define.amd ) {
4203
+ // AMD
4204
+ define( 'imagesloaded/imagesloaded',[
4205
+ 'ev-emitter/ev-emitter'
4206
+ ], function( EvEmitter ) {
4207
+ return factory( window, EvEmitter );
4208
+ });
4209
+ } else if ( typeof module == 'object' && module.exports ) {
4210
+ // CommonJS
4211
+ module.exports = factory(
4212
+ window,
4213
+ require('ev-emitter')
4214
+ );
4215
+ } else {
4216
+ // browser global
4217
+ window.imagesLoaded = factory(
4218
+ window,
4219
+ window.EvEmitter
4220
+ );
4221
+ }
4222
+
4223
+ })( window,
4224
+
4225
+ // -------------------------- factory -------------------------- //
4226
+
4227
+ function factory( window, EvEmitter ) {
4228
+
4229
+
4230
+
4231
+ var $ = window.jQuery;
4232
+ var console = window.console;
4233
+
4234
+ // -------------------------- helpers -------------------------- //
4235
+
4236
+ // extend objects
4237
+ function extend( a, b ) {
4238
+ for ( var prop in b ) {
4239
+ a[ prop ] = b[ prop ];
4240
+ }
4241
+ return a;
4242
+ }
4243
+
4244
+ // turn element or nodeList into an array
4245
+ function makeArray( obj ) {
4246
+ var ary = [];
4247
+ if ( Array.isArray( obj ) ) {
4248
+ // use object if already an array
4249
+ ary = obj;
4250
+ } else if ( typeof obj.length == 'number' ) {
4251
+ // convert nodeList to array
4252
+ for ( var i=0; i < obj.length; i++ ) {
4253
+ ary.push( obj[i] );
4254
+ }
4255
+ } else {
4256
+ // array of single index
4257
+ ary.push( obj );
4258
+ }
4259
+ return ary;
4260
+ }
4261
+
4262
+ // -------------------------- imagesLoaded -------------------------- //
4263
+
4264
+ /**
4265
+ * @param {Array, Element, NodeList, String} elem
4266
+ * @param {Object or Function} options - if function, use as callback
4267
+ * @param {Function} onAlways - callback function
4268
+ */
4269
+ function ImagesLoaded( elem, options, onAlways ) {
4270
+ // coerce ImagesLoaded() without new, to be new ImagesLoaded()
4271
+ if ( !( this instanceof ImagesLoaded ) ) {
4272
+ return new ImagesLoaded( elem, options, onAlways );
4273
+ }
4274
+ // use elem as selector string
4275
+ if ( typeof elem == 'string' ) {
4276
+ elem = document.querySelectorAll( elem );
4277
+ }
4278
+
4279
+ this.elements = makeArray( elem );
4280
+ this.options = extend( {}, this.options );
4281
+
4282
+ if ( typeof options == 'function' ) {
4283
+ onAlways = options;
4284
+ } else {
4285
+ extend( this.options, options );
4286
+ }
4287
+
4288
+ if ( onAlways ) {
4289
+ this.on( 'always', onAlways );
4290
+ }
4291
+
4292
+ this.getImages();
4293
+
4294
+ if ( $ ) {
4295
+ // add jQuery Deferred object
4296
+ this.jqDeferred = new $.Deferred();
4297
+ }
4298
+
4299
+ // HACK check async to allow time to bind listeners
4300
+ setTimeout( function() {
4301
+ this.check();
4302
+ }.bind( this ));
4303
+ }
4304
+
4305
+ ImagesLoaded.prototype = Object.create( EvEmitter.prototype );
4306
+
4307
+ ImagesLoaded.prototype.options = {};
4308
+
4309
+ ImagesLoaded.prototype.getImages = function() {
4310
+ this.images = [];
4311
+
4312
+ // filter & find items if we have an item selector
4313
+ this.elements.forEach( this.addElementImages, this );
4314
+ };
4315
+
4316
+ /**
4317
+ * @param {Node} element
4318
+ */
4319
+ ImagesLoaded.prototype.addElementImages = function( elem ) {
4320
+ // filter siblings
4321
+ if ( elem.nodeName == 'IMG' ) {
4322
+ this.addImage( elem );
4323
+ }
4324
+ // get background image on element
4325
+ if ( this.options.background === true ) {
4326
+ this.addElementBackgroundImages( elem );
4327
+ }
4328
+
4329
+ // find children
4330
+ // no non-element nodes, #143
4331
+ var nodeType = elem.nodeType;
4332
+ if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
4333
+ return;
4334
+ }
4335
+ var childImgs = elem.querySelectorAll('img');
4336
+ // concat childElems to filterFound array
4337
+ for ( var i=0; i < childImgs.length; i++ ) {
4338
+ var img = childImgs[i];
4339
+ this.addImage( img );
4340
+ }
4341
+
4342
+ // get child background images
4343
+ if ( typeof this.options.background == 'string' ) {
4344
+ var children = elem.querySelectorAll( this.options.background );
4345
+ for ( i=0; i < children.length; i++ ) {
4346
+ var child = children[i];
4347
+ this.addElementBackgroundImages( child );
4348
+ }
4349
+ }
4350
+ };
4351
+
4352
+ var elementNodeTypes = {
4353
+ 1: true,
4354
+ 9: true,
4355
+ 11: true
4356
+ };
4357
+
4358
+ ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
4359
+ var style = getComputedStyle( elem );
4360
+ if ( !style ) {
4361
+ // Firefox returns null if in a hidden iframe https://bugzil.la/548397
4362
+ return;
4363
+ }
4364
+ // get url inside url("...")
4365
+ var reURL = /url\((['"])?(.*?)\1\)/gi;
4366
+ var matches = reURL.exec( style.backgroundImage );
4367
+ while ( matches !== null ) {
4368
+ var url = matches && matches[2];
4369
+ if ( url ) {
4370
+ this.addBackground( url, elem );
4371
+ }
4372
+ matches = reURL.exec( style.backgroundImage );
4373
+ }
4374
+ };
4375
+
4376
+ /**
4377
+ * @param {Image} img
4378
+ */
4379
+ ImagesLoaded.prototype.addImage = function( img ) {
4380
+ var loadingImage = new LoadingImage( img );
4381
+ this.images.push( loadingImage );
4382
+ };
4383
+
4384
+ ImagesLoaded.prototype.addBackground = function( url, elem ) {
4385
+ var background = new Background( url, elem );
4386
+ this.images.push( background );
4387
+ };
4388
+
4389
+ ImagesLoaded.prototype.check = function() {
4390
+ var _this = this;
4391
+ this.progressedCount = 0;
4392
+ this.hasAnyBroken = false;
4393
+ // complete if no images
4394
+ if ( !this.images.length ) {
4395
+ this.complete();
4396
+ return;
4397
+ }
4398
+
4399
+ function onProgress( image, elem, message ) {
4400
+ // HACK - Chrome triggers event before object properties have changed. #83
4401
+ setTimeout( function() {
4402
+ _this.progress( image, elem, message );
4403
+ });
4404
+ }
4405
+
4406
+ this.images.forEach( function( loadingImage ) {
4407
+ loadingImage.once( 'progress', onProgress );
4408
+ loadingImage.check();
4409
+ });
4410
+ };
4411
+
4412
+ ImagesLoaded.prototype.progress = function( image, elem, message ) {
4413
+ this.progressedCount++;
4414
+ this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
4415
+ // progress event
4416
+ this.emitEvent( 'progress', [ this, image, elem ] );
4417
+ if ( this.jqDeferred && this.jqDeferred.notify ) {
4418
+ this.jqDeferred.notify( this, image );
4419
+ }
4420
+ // check if completed
4421
+ if ( this.progressedCount == this.images.length ) {
4422
+ this.complete();
4423
+ }
4424
+
4425
+ if ( this.options.debug && console ) {
4426
+ console.log( 'progress: ' + message, image, elem );
4427
+ }
4428
+ };
4429
+
4430
+ ImagesLoaded.prototype.complete = function() {
4431
+ var eventName = this.hasAnyBroken ? 'fail' : 'done';
4432
+ this.isComplete = true;
4433
+ this.emitEvent( eventName, [ this ] );
4434
+ this.emitEvent( 'always', [ this ] );
4435
+ if ( this.jqDeferred ) {
4436
+ var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
4437
+ this.jqDeferred[ jqMethod ]( this );
4438
+ }
4439
+ };
4440
+
4441
+ // -------------------------- -------------------------- //
4442
+
4443
+ function LoadingImage( img ) {
4444
+ this.img = img;
4445
+ }
4446
+
4447
+ LoadingImage.prototype = Object.create( EvEmitter.prototype );
4448
+
4449
+ LoadingImage.prototype.check = function() {
4450
+ // If complete is true and browser supports natural sizes,
4451
+ // try to check for image status manually.
4452
+ var isComplete = this.getIsImageComplete();
4453
+ if ( isComplete ) {
4454
+ // report based on naturalWidth
4455
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
4456
+ return;
4457
+ }
4458
+
4459
+ // If none of the checks above matched, simulate loading on detached element.
4460
+ this.proxyImage = new Image();
4461
+ this.proxyImage.addEventListener( 'load', this );
4462
+ this.proxyImage.addEventListener( 'error', this );
4463
+ // bind to image as well for Firefox. #191
4464
+ this.img.addEventListener( 'load', this );
4465
+ this.img.addEventListener( 'error', this );
4466
+ this.proxyImage.src = this.img.src;
4467
+ };
4468
+
4469
+ LoadingImage.prototype.getIsImageComplete = function() {
4470
+ return this.img.complete && this.img.naturalWidth !== undefined;
4471
+ };
4472
+
4473
+ LoadingImage.prototype.confirm = function( isLoaded, message ) {
4474
+ this.isLoaded = isLoaded;
4475
+ this.emitEvent( 'progress', [ this, this.img, message ] );
4476
+ };
4477
+
4478
+ // ----- events ----- //
4479
+
4480
+ // trigger specified handler for event type
4481
+ LoadingImage.prototype.handleEvent = function( event ) {
4482
+ var method = 'on' + event.type;
4483
+ if ( this[ method ] ) {
4484
+ this[ method ]( event );
4485
+ }
4486
+ };
4487
+
4488
+ LoadingImage.prototype.onload = function() {
4489
+ this.confirm( true, 'onload' );
4490
+ this.unbindEvents();
4491
+ };
4492
+
4493
+ LoadingImage.prototype.onerror = function() {
4494
+ this.confirm( false, 'onerror' );
4495
+ this.unbindEvents();
4496
+ };
4497
+
4498
+ LoadingImage.prototype.unbindEvents = function() {
4499
+ this.proxyImage.removeEventListener( 'load', this );
4500
+ this.proxyImage.removeEventListener( 'error', this );
4501
+ this.img.removeEventListener( 'load', this );
4502
+ this.img.removeEventListener( 'error', this );
4503
+ };
4504
+
4505
+ // -------------------------- Background -------------------------- //
4506
+
4507
+ function Background( url, element ) {
4508
+ this.url = url;
4509
+ this.element = element;
4510
+ this.img = new Image();
4511
+ }
4512
+
4513
+ // inherit LoadingImage prototype
4514
+ Background.prototype = Object.create( LoadingImage.prototype );
4515
+
4516
+ Background.prototype.check = function() {
4517
+ this.img.addEventListener( 'load', this );
4518
+ this.img.addEventListener( 'error', this );
4519
+ this.img.src = this.url;
4520
+ // check if image is already complete
4521
+ var isComplete = this.getIsImageComplete();
4522
+ if ( isComplete ) {
4523
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
4524
+ this.unbindEvents();
4525
+ }
4526
+ };
4527
+
4528
+ Background.prototype.unbindEvents = function() {
4529
+ this.img.removeEventListener( 'load', this );
4530
+ this.img.removeEventListener( 'error', this );
4531
+ };
4532
+
4533
+ Background.prototype.confirm = function( isLoaded, message ) {
4534
+ this.isLoaded = isLoaded;
4535
+ this.emitEvent( 'progress', [ this, this.element, message ] );
4536
+ };
4537
+
4538
+ // -------------------------- jQuery -------------------------- //
4539
+
4540
+ ImagesLoaded.makeJQueryPlugin = function( jQuery ) {
4541
+ jQuery = jQuery || window.jQuery;
4542
+ if ( !jQuery ) {
4543
+ return;
4544
+ }
4545
+ // set local variable
4546
+ $ = jQuery;
4547
+ // $().imagesLoaded()
4548
+ $.fn.imagesLoaded = function( options, callback ) {
4549
+ var instance = new ImagesLoaded( this, options, callback );
4550
+ return instance.jqDeferred.promise( $(this) );
4551
+ };
4552
+ };
4553
+ // try making plugin
4554
+ ImagesLoaded.makeJQueryPlugin();
4555
+
4556
+ // -------------------------- -------------------------- //
4557
+
4558
+ return ImagesLoaded;
4559
+
4560
+ });
4561
+
4562
+ /*!
4563
+ * Flickity imagesLoaded v2.0.0
4564
+ * enables imagesLoaded option for Flickity
4565
+ */
4566
+
4567
+ /*jshint browser: true, strict: true, undef: true, unused: true */
4568
+
4569
+ ( function( window, factory ) {
4570
+ // universal module definition
4571
+ /*jshint strict: false */ /*globals define, module, require */
4572
+ if ( typeof define == 'function' && define.amd ) {
4573
+ // AMD
4574
+ define( [
4575
+ 'flickity/js/index',
4576
+ 'imagesloaded/imagesloaded'
4577
+ ], function( Flickity, imagesLoaded ) {
4578
+ return factory( window, Flickity, imagesLoaded );
4579
+ });
4580
+ } else if ( typeof module == 'object' && module.exports ) {
4581
+ // CommonJS
4582
+ module.exports = factory(
4583
+ window,
4584
+ require('flickity'),
4585
+ require('imagesloaded')
4586
+ );
4587
+ } else {
4588
+ // browser global
4589
+ window.Flickity = factory(
4590
+ window,
4591
+ window.Flickity,
4592
+ window.imagesLoaded
4593
+ );
4594
+ }
4595
+
4596
+ }( window, function factory( window, Flickity, imagesLoaded ) {
4597
+ 'use strict';
4598
+
4599
+ Flickity.createMethods.push('_createImagesLoaded');
4600
+
4601
+ var proto = Flickity.prototype;
4602
+
4603
+ proto._createImagesLoaded = function() {
4604
+ this.on( 'activate', this.imagesLoaded );
4605
+ };
4606
+
4607
+ proto.imagesLoaded = function() {
4608
+ if ( !this.options.imagesLoaded ) {
4609
+ return;
4610
+ }
4611
+ var _this = this;
4612
+ function onImagesLoadedProgress( instance, image ) {
4613
+ var cell = _this.getParentCell( image.img );
4614
+ _this.cellSizeChange( cell && cell.element );
4615
+ if ( !_this.options.freeScroll ) {
4616
+ _this.positionSliderAtSelected();
4617
+ }
4618
+ }
4619
+ imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );
4620
+ };
4621
+
4622
+ return Flickity;
4623
+
4624
+ }));
4625
+
themes/foundation/modules/flickity/flickity.pkgd.min.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Flickity PACKAGED v2.0.2
3
+ * Touch, responsive, flickable carousels
4
+ *
5
+ * Licensed GPLv3 for open source use
6
+ * or Flickity Commercial License for commercial use
7
+ *
8
+ * http://flickity.metafizzy.co
9
+ * Copyright 2016 Metafizzy
10
+ */
11
+
12
+ !function(t,e){"use strict";"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,o,a){function h(t,e,n){var s,o="$()."+i+'("'+e+'")';return t.each(function(t,h){var l=a.data(h,i);if(!l)return void r(i+" not initialized. Cannot call methods, i.e. "+o);var c=l[e];if(!c||"_"==e.charAt(0))return void r(o+" is not a valid method");var d=c.apply(l,n);s=void 0===s?d:s}),void 0!==s?s:t}function l(t,e){t.each(function(t,n){var s=a.data(n,i);s?(s.option(e),s._init()):(s=new o(n,e),a.data(n,i,s))})}a=a||e||t.jQuery,a&&(o.prototype.option||(o.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=s.call(arguments,1);return h(this,t,e)}return l(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var s=Array.prototype.slice,o=t.console,r="undefined"==typeof o?function(){}:function(t){o.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return n.indexOf(e)==-1&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return n!=-1&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=0,s=i[n];e=e||[];for(var o=this._onceEvents&&this._onceEvents[t];s;){var r=o&&o[s];r&&(this.off(t,s),delete o[s]),s.apply(this,e),n+=r?0:1,s=i[n]}return this}},t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("get-size/get-size",[],function(){return e()}):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=t.indexOf("%")==-1&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;e<l;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),e}function s(){if(!c){c=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var s=n(e);o.isBoxSizeOuter=r=200==t(s.width),i.removeChild(e)}}function o(e){if(s(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var o=n(e);if("none"==o.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var c=a.isBorderBox="border-box"==o.boxSizing,d=0;d<l;d++){var u=h[d],f=o[u],p=parseFloat(f);a[u]=isNaN(p)?0:p}var v=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,m=a.marginLeft+a.marginRight,y=a.marginTop+a.marginBottom,S=a.borderLeftWidth+a.borderRightWidth,E=a.borderTopWidth+a.borderBottomWidth,b=c&&r,x=t(o.width);x!==!1&&(a.width=x+(b?0:v+S));var C=t(o.height);return C!==!1&&(a.height=C+(b?0:g+E)),a.innerWidth=a.width-(v+S),a.innerHeight=a.height-(g+E),a.outerWidth=a.width+m,a.outerHeight=a.height+y,a}}var r,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],l=h.length,c=!1;return o}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],s=n+"MatchesSelector";if(t[s])return s}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e},i.makeArray=function(t){var e=[];if(Array.isArray(t))e=t;else if(t&&"number"==typeof t.length)for(var i=0;i<t.length;i++)e.push(t[i]);else e.push(t);return e},i.removeFrom=function(t,e){var i=t.indexOf(e);i!=-1&&t.splice(i,1)},i.getParent=function(t,i){for(;t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var s=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void s.push(t);e(t,n)&&s.push(t);for(var i=t.querySelectorAll(n),o=0;o<i.length;o++)s.push(i[o])}}),s},i.debounceMethod=function(t,e,i){var n=t.prototype[e],s=e+"Timeout";t.prototype[e]=function(){var t=this[s];t&&clearTimeout(t);var e=arguments,o=this;this[s]=setTimeout(function(){n.apply(o,e),delete o[s]},i||100)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?t():document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var n=t.console;return i.htmlInit=function(e,s){i.docReady(function(){var o=i.toDashed(s),r="data-"+o,a=document.querySelectorAll("["+r+"]"),h=document.querySelectorAll(".js-"+o),l=i.makeArray(a).concat(i.makeArray(h)),c=r+"-options",d=t.jQuery;l.forEach(function(t){var i,o=t.getAttribute(r)||t.getAttribute(c);try{i=o&&JSON.parse(o)}catch(a){return void(n&&n.error("Error parsing "+r+" on "+t.className+": "+a))}var h=new e(t,i);d&&d.data(t,s,h)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/cell",["get-size/get-size"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("get-size")):(t.Flickity=t.Flickity||{},t.Flickity.Cell=e(t,t.getSize))}(window,function(t,e){function i(t,e){this.element=t,this.parent=e,this.create()}var n=i.prototype;return n.create=function(){this.element.style.position="absolute",this.x=0,this.shift=0},n.destroy=function(){this.element.style.position="";var t=this.parent.originSide;this.element.style[t]=""},n.getSize=function(){this.size=e(this.element)},n.setPosition=function(t){this.x=t,this.updateTarget(),this.renderPosition(t)},n.updateTarget=n.setDefaultTarget=function(){var t="left"==this.parent.originSide?"marginLeft":"marginRight";this.target=this.x+this.size[t]+this.size.width*this.parent.cellAlign},n.renderPosition=function(t){var e=this.parent.originSide;this.element.style[e]=this.parent.getPositionValue(t)},n.wrapShift=function(t){this.shift=t,this.renderPosition(this.x+this.parent.slideableWidth*t)},n.remove=function(){this.element.parentNode.removeChild(this.element)},i}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/slide",e):"object"==typeof module&&module.exports?module.exports=e():(t.Flickity=t.Flickity||{},t.Flickity.Slide=e())}(window,function(){"use strict";function t(t){this.parent=t,this.isOriginLeft="left"==t.originSide,this.cells=[],this.outerWidth=0,this.height=0}var e=t.prototype;return e.addCell=function(t){if(this.cells.push(t),this.outerWidth+=t.size.outerWidth,this.height=Math.max(t.size.outerHeight,this.height),1==this.cells.length){this.x=t.x;var e=this.isOriginLeft?"marginLeft":"marginRight";this.firstMargin=t.size[e]}},e.updateTarget=function(){var t=this.isOriginLeft?"marginRight":"marginLeft",e=this.getLastCell(),i=e?e.size[t]:0,n=this.outerWidth-(this.firstMargin+i);this.target=this.x+this.firstMargin+n*this.parent.cellAlign},e.getLastCell=function(){return this.cells[this.cells.length-1]},e.select=function(){this.changeSelectedClass("add")},e.unselect=function(){this.changeSelectedClass("remove")},e.changeSelectedClass=function(t){this.cells.forEach(function(e){e.element.classList[t]("is-selected")})},e.getCellElements=function(){return this.cells.map(function(t){return t.element})},t}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/animate",["fizzy-ui-utils/utils"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("fizzy-ui-utils")):(t.Flickity=t.Flickity||{},t.Flickity.animatePrototype=e(t,t.fizzyUIUtils))}(window,function(t,e){var i=t.requestAnimationFrame||t.webkitRequestAnimationFrame,n=0;i||(i=function(t){var e=(new Date).getTime(),i=Math.max(0,16-(e-n)),s=setTimeout(t,i);return n=e+i,s});var s={};s.startAnimation=function(){this.isAnimating||(this.isAnimating=!0,this.restingFrames=0,this.animate())},s.animate=function(){this.applyDragForce(),this.applySelectedAttraction();var t=this.x;if(this.integratePhysics(),this.positionSlider(),this.settle(t),this.isAnimating){var e=this;i(function(){e.animate()})}};var o=function(){var t=document.documentElement.style;return"string"==typeof t.transform?"transform":"WebkitTransform"}();return s.positionSlider=function(){var t=this.x;this.options.wrapAround&&this.cells.length>1&&(t=e.modulo(t,this.slideableWidth),t-=this.slideableWidth,this.shiftWrapCells(t)),t+=this.cursorPosition,t=this.options.rightToLeft&&o?-t:t;var i=this.getPositionValue(t);this.slider.style[o]=this.isAnimating?"translate3d("+i+",0,0)":"translateX("+i+")";var n=this.slides[0];if(n){var s=-this.x-n.target,r=s/this.slidesWidth;this.dispatchEvent("scroll",null,[r,s])}},s.positionSliderAtSelected=function(){this.cells.length&&(this.x=-this.selectedSlide.target,this.positionSlider())},s.getPositionValue=function(t){return this.options.percentPosition?.01*Math.round(t/this.size.innerWidth*1e4)+"%":Math.round(t)+"px"},s.settle=function(t){this.isPointerDown||Math.round(100*this.x)!=Math.round(100*t)||this.restingFrames++,this.restingFrames>2&&(this.isAnimating=!1,delete this.isFreeScrolling,this.positionSlider(),this.dispatchEvent("settle"))},s.shiftWrapCells=function(t){var e=this.cursorPosition+t;this._shiftCells(this.beforeShiftCells,e,-1);var i=this.size.innerWidth-(t+this.slideableWidth+this.cursorPosition);this._shiftCells(this.afterShiftCells,i,1)},s._shiftCells=function(t,e,i){for(var n=0;n<t.length;n++){var s=t[n],o=e>0?i:0;s.wrapShift(o),e-=s.size.outerWidth}},s._unshiftCells=function(t){if(t&&t.length)for(var e=0;e<t.length;e++)t[e].wrapShift(0)},s.integratePhysics=function(){this.x+=this.velocity,this.velocity*=this.getFrictionFactor()},s.applyForce=function(t){this.velocity+=t},s.getFrictionFactor=function(){return 1-this.options[this.isFreeScrolling?"freeScrollFriction":"friction"]},s.getRestingPosition=function(){return this.x+this.velocity/(1-this.getFrictionFactor())},s.applyDragForce=function(){if(this.isPointerDown){var t=this.dragX-this.x,e=t-this.velocity;this.applyForce(e)}},s.applySelectedAttraction=function(){if(!this.isPointerDown&&!this.isFreeScrolling&&this.cells.length){var t=this.selectedSlide.target*-1-this.x,e=t*this.options.selectedAttraction;this.applyForce(e)}},s}),function(t,e){if("function"==typeof define&&define.amd)define("flickity/js/flickity",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./cell","./slide","./animate"],function(i,n,s,o,r,a){return e(t,i,n,s,o,r,a)});else if("object"==typeof module&&module.exports)module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./cell"),require("./slide"),require("./animate"));else{var i=t.Flickity;t.Flickity=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,i.Cell,i.Slide,i.animatePrototype)}}(window,function(t,e,i,n,s,o,r){function a(t,e){for(t=n.makeArray(t);t.length;)e.appendChild(t.shift())}function h(t,e){var i=n.getQueryElement(t);return i?(this.element=i,l&&(this.$element=l(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e),void this._create()):void(d&&d.error("Bad element for Flickity: "+(i||t)))}var l=t.jQuery,c=t.getComputedStyle,d=t.console,u=0,f={};h.defaults={accessibility:!0,cellAlign:"center",freeScrollFriction:.075,friction:.28,namespaceJQueryEvents:!0,percentPosition:!0,resize:!0,selectedAttraction:.025,setGallerySize:!0},h.createMethods=[];var p=h.prototype;n.extend(p,e.prototype),p._create=function(){var e=this.guid=++u;this.element.flickityGUID=e,f[e]=this,this.selectedIndex=0,this.restingFrames=0,this.x=0,this.velocity=0,this.originSide=this.options.rightToLeft?"right":"left",this.viewport=document.createElement("div"),this.viewport.className="flickity-viewport",this._createSlider(),(this.options.resize||this.options.watchCSS)&&t.addEventListener("resize",this),h.createMethods.forEach(function(t){this[t]()},this),this.options.watchCSS?this.watchCSS():this.activate()},p.option=function(t){n.extend(this.options,t)},p.activate=function(){if(!this.isActive){this.isActive=!0,this.element.classList.add("flickity-enabled"),this.options.rightToLeft&&this.element.classList.add("flickity-rtl"),this.getSize();var t=this._filterFindCellElements(this.element.children);a(t,this.slider),this.viewport.appendChild(this.slider),this.element.appendChild(this.viewport),this.reloadCells(),this.options.accessibility&&(this.element.tabIndex=0,this.element.addEventListener("keydown",this)),this.emitEvent("activate");var e,i=this.options.initialIndex;e=this.isInitActivated?this.selectedIndex:void 0!==i&&this.cells[i]?i:0,this.select(e,!1,!0),this.isInitActivated=!0}},p._createSlider=function(){var t=document.createElement("div");t.className="flickity-slider",t.style[this.originSide]=0,this.slider=t},p._filterFindCellElements=function(t){return n.filterFindElements(t,this.options.cellSelector)},p.reloadCells=function(){this.cells=this._makeCells(this.slider.children),this.positionCells(),this._getWrapShiftCells(),this.setGallerySize()},p._makeCells=function(t){var e=this._filterFindCellElements(t),i=e.map(function(t){return new s(t,this)},this);return i},p.getLastCell=function(){return this.cells[this.cells.length-1]},p.getLastSlide=function(){return this.slides[this.slides.length-1]},p.positionCells=function(){this._sizeCells(this.cells),this._positionCells(0)},p._positionCells=function(t){t=t||0,this.maxCellHeight=t?this.maxCellHeight||0:0;var e=0;if(t>0){var i=this.cells[t-1];e=i.x+i.size.outerWidth}for(var n=this.cells.length,s=t;s<n;s++){var o=this.cells[s];o.setPosition(e),e+=o.size.outerWidth,this.maxCellHeight=Math.max(o.size.outerHeight,this.maxCellHeight)}this.slideableWidth=e,this.updateSlides(),this._containSlides(),this.slidesWidth=n?this.getLastSlide().target-this.slides[0].target:0},p._sizeCells=function(t){t.forEach(function(t){t.getSize()})},p.updateSlides=function(){if(this.slides=[],this.cells.length){var t=new o(this);this.slides.push(t);var e="left"==this.originSide,i=e?"marginRight":"marginLeft",n=this._getCanCellFit();this.cells.forEach(function(e,s){if(!t.cells.length)return void t.addCell(e);var r=t.outerWidth-t.firstMargin+(e.size.outerWidth-e.size[i]);n.call(this,s,r)?t.addCell(e):(t.updateTarget(),t=new o(this),this.slides.push(t),t.addCell(e))},this),t.updateTarget(),this.updateSelectedSlide()}},p._getCanCellFit=function(){var t=this.options.groupCells;if(!t)return function(){return!1};if("number"==typeof t){var e=parseInt(t,10);return function(t){return t%e!==0}}var i="string"==typeof t&&t.match(/^(\d+)%$/),n=i?parseInt(i[1],10)/100:1;return function(t,e){return e<=(this.size.innerWidth+1)*n}},p._init=p.reposition=function(){this.positionCells(),this.positionSliderAtSelected()},p.getSize=function(){this.size=i(this.element),this.setCellAlign(),this.cursorPosition=this.size.innerWidth*this.cellAlign};var v={center:{left:.5,right:.5},left:{left:0,right:1},right:{right:0,left:1}};return p.setCellAlign=function(){var t=v[this.options.cellAlign];this.cellAlign=t?t[this.originSide]:this.options.cellAlign},p.setGallerySize=function(){if(this.options.setGallerySize){var t=this.options.adaptiveHeight&&this.selectedSlide?this.selectedSlide.height:this.maxCellHeight;this.viewport.style.height=t+"px"}},p._getWrapShiftCells=function(){if(this.options.wrapAround){this._unshiftCells(this.beforeShiftCells),this._unshiftCells(this.afterShiftCells);var t=this.cursorPosition,e=this.cells.length-1;this.beforeShiftCells=this._getGapCells(t,e,-1),t=this.size.innerWidth-this.cursorPosition,this.afterShiftCells=this._getGapCells(t,0,1)}},p._getGapCells=function(t,e,i){for(var n=[];t>0;){var s=this.cells[e];if(!s)break;n.push(s),e+=i,t-=s.size.outerWidth}return n},p._containSlides=function(){if(this.options.contain&&!this.options.wrapAround&&this.cells.length){var t=this.options.rightToLeft,e=t?"marginRight":"marginLeft",i=t?"marginLeft":"marginRight",n=this.slideableWidth-this.getLastCell().size[i],s=n<this.size.innerWidth,o=this.cursorPosition+this.cells[0].size[e],r=n-this.size.innerWidth*(1-this.cellAlign);this.slides.forEach(function(t){s?t.target=n*this.cellAlign:(t.target=Math.max(t.target,o),t.target=Math.min(t.target,r))},this)}},p.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),l&&this.$element){t+=this.options.namespaceJQueryEvents?".flickity":"";var s=t;if(e){var o=l.Event(e);o.type=t,s=o}this.$element.trigger(s,i)}},p.select=function(t,e,i){this.isActive&&(t=parseInt(t,10),this._wrapSelect(t),(this.options.wrapAround||e)&&(t=n.modulo(t,this.slides.length)),this.slides[t]&&(this.selectedIndex=t,this.updateSelectedSlide(),i?this.positionSliderAtSelected():this.startAnimation(),this.options.adaptiveHeight&&this.setGallerySize(),this.dispatchEvent("select"),this.dispatchEvent("cellSelect")))},p._wrapSelect=function(t){var e=this.slides.length,i=this.options.wrapAround&&e>1;if(!i)return t;var s=n.modulo(t,e),o=Math.abs(s-this.selectedIndex),r=Math.abs(s+e-this.selectedIndex),a=Math.abs(s-e-this.selectedIndex);!this.isDragSelect&&r<o?t+=e:!this.isDragSelect&&a<o&&(t-=e),t<0?this.x-=this.slideableWidth:t>=e&&(this.x+=this.slideableWidth)},p.previous=function(t,u){this.select(this.selectedIndex-1,t,u)},p.next=function(t,u){this.select(this.selectedIndex+1,t,u)},p.updateSelectedSlide=function(){var t=this.slides[this.selectedIndex];t&&(this.unselectSelectedSlide(),this.selectedSlide=t,t.select(),this.selectedCells=t.cells,this.selectedElements=t.getCellElements(),this.selectedCell=t.cells[0],this.selectedElement=this.selectedElements[0])},p.unselectSelectedSlide=function(){this.selectedSlide&&this.selectedSlide.unselect()},p.selectCell=function(t,e,i){var n;"number"==typeof t?n=this.cells[t]:("string"==typeof t&&(t=this.element.querySelector(t)),n=this.getCell(t));for(var s=0;n&&s<this.slides.length;s++){var o=this.slides[s],r=o.cells.indexOf(n);if(r!=-1)return void this.select(s,e,i)}},p.getCell=function(t){for(var e=0;e<this.cells.length;e++){var i=this.cells[e];if(i.element==t)return i}},p.getCells=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getCell(t);i&&e.push(i)},this),e},p.getCellElements=function(){return this.cells.map(function(t){return t.element})},p.getParentCell=function(t){var e=this.getCell(t);return e?e:(t=n.getParent(t,".flickity-slider > *"),this.getCell(t))},p.getAdjacentCellElements=function(t,e){if(!t)return this.selectedSlide.getCellElements();e=void 0===e?this.selectedIndex:e;var i=this.slides.length;if(1+2*t>=i)return this.getCellElements();for(var s=[],o=e-t;o<=e+t;o++){var r=this.options.wrapAround?n.modulo(o,i):o,a=this.slides[r];a&&(s=s.concat(a.getCellElements()))}return s},p.uiChange=function(){this.emitEvent("uiChange")},p.childUIPointerDown=function(t){this.emitEvent("childUIPointerDown",[t])},p.onresize=function(){this.watchCSS(),this.resize()},n.debounceMethod(h,"onresize",150),p.resize=function(){if(this.isActive){this.getSize(),this.options.wrapAround&&(this.x=n.modulo(this.x,this.slideableWidth)),this.positionCells(),this._getWrapShiftCells(),this.setGallerySize(),this.emitEvent("resize");var t=this.selectedElements&&this.selectedElements[0];this.selectCell(t,!1,!0)}},p.watchCSS=function(){var t=this.options.watchCSS;if(t){var e=c(this.element,":after").content;e.indexOf("flickity")!=-1?this.activate():this.deactivate()}},p.onkeydown=function(t){if(this.options.accessibility&&(!document.activeElement||document.activeElement==this.element))if(37==t.keyCode){var e=this.options.rightToLeft?"next":"previous";this.uiChange(),this[e]()}else if(39==t.keyCode){var i=this.options.rightToLeft?"previous":"next";this.uiChange(),this[i]()}},p.deactivate=function(){this.isActive&&(this.element.classList.remove("flickity-enabled"),this.element.classList.remove("flickity-rtl"),this.cells.forEach(function(t){t.destroy()}),this.unselectSelectedSlide(),this.element.removeChild(this.viewport),a(this.slider.children,this.element),this.options.accessibility&&(this.element.removeAttribute("tabIndex"),this.element.removeEventListener("keydown",this)),this.isActive=!1,this.emitEvent("deactivate"))},p.destroy=function(){this.deactivate(),t.removeEventListener("resize",this),this.emitEvent("destroy"),l&&this.$element&&l.removeData(this.element,"flickity"),delete this.element.flickityGUID,delete f[this.guid]},n.extend(p,r),h.data=function(t){t=n.getQueryElement(t);var e=t&&t.flickityGUID;return e&&f[e]},n.htmlInit(h,"flickity"),l&&l.bridget&&l.bridget("flickity",h),h.Cell=s,h}),function(t,e){"function"==typeof define&&define.amd?define("unipointer/unipointer",["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.Unipointer=e(t,t.EvEmitter)}(window,function(t,e){function i(){}function n(){}var s=n.prototype=Object.create(e.prototype);s.bindStartEvent=function(t){this._bindStartEvent(t,!0)},s.unbindStartEvent=function(t){this._bindStartEvent(t,!1)},s._bindStartEvent=function(e,i){i=void 0===i||!!i;var n=i?"addEventListener":"removeEventListener";t.navigator.pointerEnabled?e[n]("pointerdown",this):t.navigator.msPointerEnabled?e[n]("MSPointerDown",this):(e[n]("mousedown",this),e[n]("touchstart",this))},s.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},s.getTouch=function(t){for(var e=0;e<t.length;e++){var i=t[e];if(i.identifier==this.pointerIdentifier)return i}},s.onmousedown=function(t){var e=t.button;e&&0!==e&&1!==e||this._pointerDown(t,t)},s.ontouchstart=function(t){this._pointerDown(t,t.changedTouches[0])},s.onMSPointerDown=s.onpointerdown=function(t){this._pointerDown(t,t)},s._pointerDown=function(t,e){this.isPointerDown||(this.isPointerDown=!0,this.pointerIdentifier=void 0!==e.pointerId?e.pointerId:e.identifier,this.pointerDown(t,e))},s.pointerDown=function(t,e){this._bindPostStartEvents(t),this.emitEvent("pointerDown",[t,e])};var o={mousedown:["mousemove","mouseup"],touchstart:["touchmove","touchend","touchcancel"],pointerdown:["pointermove","pointerup","pointercancel"],MSPointerDown:["MSPointerMove","MSPointerUp","MSPointerCancel"]};return s._bindPostStartEvents=function(e){if(e){var i=o[e.type];i.forEach(function(e){t.addEventListener(e,this)},this),this._boundPointerEvents=i}},s._unbindPostStartEvents=function(){this._boundPointerEvents&&(this._boundPointerEvents.forEach(function(e){t.removeEventListener(e,this)},this),delete this._boundPointerEvents)},s.onmousemove=function(t){this._pointerMove(t,t)},s.onMSPointerMove=s.onpointermove=function(t){t.pointerId==this.pointerIdentifier&&this._pointerMove(t,t)},s.ontouchmove=function(t){var e=this.getTouch(t.changedTouches);e&&this._pointerMove(t,e)},s._pointerMove=function(t,e){this.pointerMove(t,e)},s.pointerMove=function(t,e){this.emitEvent("pointerMove",[t,e])},s.onmouseup=function(t){this._pointerUp(t,t)},s.onMSPointerUp=s.onpointerup=function(t){t.pointerId==this.pointerIdentifier&&this._pointerUp(t,t)},s.ontouchend=function(t){var e=this.getTouch(t.changedTouches);e&&this._pointerUp(t,e)},s._pointerUp=function(t,e){this._pointerDone(),this.pointerUp(t,e)},s.pointerUp=function(t,e){this.emitEvent("pointerUp",[t,e])},s._pointerDone=function(){this.isPointerDown=!1,delete this.pointerIdentifier,this._unbindPostStartEvents(),this.pointerDone()},s.pointerDone=i,s.onMSPointerCancel=s.onpointercancel=function(t){t.pointerId==this.pointerIdentifier&&this._pointerCancel(t,t)},s.ontouchcancel=function(t){var e=this.getTouch(t.changedTouches);e&&this._pointerCancel(t,e)},s._pointerCancel=function(t,e){this._pointerDone(),this.pointerCancel(t,e)},s.pointerCancel=function(t,e){this.emitEvent("pointerCancel",[t,e])},n.getPointerPoint=function(t){return{x:t.pageX,y:t.pageY}},n}),function(t,e){"function"==typeof define&&define.amd?define("unidragger/unidragger",["unipointer/unipointer"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("unipointer")):t.Unidragger=e(t,t.Unipointer)}(window,function(t,e){function i(){}function n(){}var s=n.prototype=Object.create(e.prototype);s.bindHandles=function(){this._bindHandles(!0)},s.unbindHandles=function(){this._bindHandles(!1)};var o=t.navigator;return s._bindHandles=function(t){t=void 0===t||!!t;var e;e=o.pointerEnabled?function(e){e.style.touchAction=t?"none":""}:o.msPointerEnabled?function(e){e.style.msTouchAction=t?"none":""}:i;for(var n=t?"addEventListener":"removeEventListener",s=0;s<this.handles.length;s++){var r=this.handles[s];this._bindStartEvent(r,t),e(r),r[n]("click",this)}},s.pointerDown=function(t,e){if("INPUT"==t.target.nodeName&&"range"==t.target.type)return this.isPointerDown=!1,void delete this.pointerIdentifier;this._dragPointerDown(t,e);var i=document.activeElement;i&&i.blur&&i.blur(),this._bindPostStartEvents(t),this.emitEvent("pointerDown",[t,e])},s._dragPointerDown=function(t,i){this.pointerDownPoint=e.getPointerPoint(i);var n=this.canPreventDefaultOnPointerDown(t,i);n&&t.preventDefault()},s.canPreventDefaultOnPointerDown=function(t){return"SELECT"!=t.target.nodeName},s.pointerMove=function(t,e){var i=this._dragPointerMove(t,e);this.emitEvent("pointerMove",[t,e,i]),this._dragMove(t,e,i)},s._dragPointerMove=function(t,i){var n=e.getPointerPoint(i),s={x:n.x-this.pointerDownPoint.x,y:n.y-this.pointerDownPoint.y};return!this.isDragging&&this.hasDragStarted(s)&&this._dragStart(t,i),s},s.hasDragStarted=function(t){return Math.abs(t.x)>3||Math.abs(t.y)>3},s.pointerUp=function(t,e){this.emitEvent("pointerUp",[t,e]),this._dragPointerUp(t,e)},s._dragPointerUp=function(t,e){this.isDragging?this._dragEnd(t,e):this._staticClick(t,e)},s._dragStart=function(t,i){this.isDragging=!0,this.dragStartPoint=e.getPointerPoint(i),this.isPreventingClicks=!0,this.dragStart(t,i)},s.dragStart=function(t,e){this.emitEvent("dragStart",[t,e])},s._dragMove=function(t,e,i){this.isDragging&&this.dragMove(t,e,i)},s.dragMove=function(t,e,i){t.preventDefault(),this.emitEvent("dragMove",[t,e,i])},s._dragEnd=function(t,e){this.isDragging=!1,setTimeout(function(){delete this.isPreventingClicks}.bind(this)),this.dragEnd(t,e)},s.dragEnd=function(t,e){this.emitEvent("dragEnd",[t,e])},s.onclick=function(t){this.isPreventingClicks&&t.preventDefault()},s._staticClick=function(t,e){if(!this.isIgnoringMouseUp||"mouseup"!=t.type){var i=t.target.nodeName;"INPUT"!=i&&"TEXTAREA"!=i||t.target.focus(),this.staticClick(t,e),"mouseup"!=t.type&&(this.isIgnoringMouseUp=!0,setTimeout(function(){delete this.isIgnoringMouseUp}.bind(this),400))}},s.staticClick=function(t,e){this.emitEvent("staticClick",[t,e])},n.getPointerPoint=e.getPointerPoint,n}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/drag",["./flickity","unidragger/unidragger","fizzy-ui-utils/utils"],function(i,n,s){return e(t,i,n,s)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./flickity"),require("unidragger"),require("fizzy-ui-utils")):t.Flickity=e(t,t.Flickity,t.Unidragger,t.fizzyUIUtils)}(window,function(t,e,i,n){function s(){return{x:t.pageXOffset,y:t.pageYOffset}}n.extend(e.defaults,{draggable:!0,dragThreshold:3}),e.createMethods.push("_createDrag");var o=e.prototype;n.extend(o,i.prototype),o._createDrag=function(){this.on("activate",this.bindDrag),this.on("uiChange",this._uiChangeDrag),this.on("childUIPointerDown",this._childUIPointerDownDrag),this.on("deactivate",this.unbindDrag)},o.bindDrag=function(){this.options.draggable&&!this.isDragBound&&(this.element.classList.add("is-draggable"),this.handles=[this.viewport],this.bindHandles(),this.isDragBound=!0)},o.unbindDrag=function(){this.isDragBound&&(this.element.classList.remove("is-draggable"),this.unbindHandles(),delete this.isDragBound)},o._uiChangeDrag=function(){delete this.isFreeScrolling},o._childUIPointerDownDrag=function(t){t.preventDefault(),this.pointerDownFocus(t)};var r={TEXTAREA:!0,INPUT:!0},a={radio:!0,checkbox:!0,button:!0,submit:!0,image:!0,file:!0};o.pointerDown=function(e,i){var n=r[e.target.nodeName]&&!a[e.target.type];if(n)return this.isPointerDown=!1,void delete this.pointerIdentifier;this._dragPointerDown(e,i);var o=document.activeElement;o&&o.blur&&o!=this.element&&o!=document.body&&o.blur(),this.pointerDownFocus(e),this.dragX=this.x,this.viewport.classList.add("is-pointer-down"),this._bindPostStartEvents(e),this.pointerDownScroll=s(),t.addEventListener("scroll",this),this.dispatchEvent("pointerDown",e,[i])};var h={touchstart:!0,MSPointerDown:!0},l={INPUT:!0,SELECT:!0};return o.pointerDownFocus=function(e){if(this.options.accessibility&&!h[e.type]&&!l[e.target.nodeName]){var i=t.pageYOffset;this.element.focus(),t.pageYOffset!=i&&t.scrollTo(t.pageXOffset,i)}},o.canPreventDefaultOnPointerDown=function(t){var e="touchstart"==t.type,i=t.target.nodeName;return!e&&"SELECT"!=i},o.hasDragStarted=function(t){return Math.abs(t.x)>this.options.dragThreshold},o.pointerUp=function(t,e){delete this.isTouchScrolling,this.viewport.classList.remove("is-pointer-down"),this.dispatchEvent("pointerUp",t,[e]),this._dragPointerUp(t,e)},o.pointerDone=function(){t.removeEventListener("scroll",this),delete this.pointerDownScroll},o.dragStart=function(t,e){this.dragStartPosition=this.x,this.startAnimation(),this.dispatchEvent("dragStart",t,[e])},o.pointerMove=function(t,e){var i=this._dragPointerMove(t,e);this.dispatchEvent("pointerMove",t,[e,i]),this._dragMove(t,e,i)},o.dragMove=function(t,e,i){t.preventDefault(),this.previousDragX=this.dragX;var n=this.options.rightToLeft?-1:1,s=this.dragStartPosition+i.x*n;if(!this.options.wrapAround&&this.slides.length){var o=Math.max(-this.slides[0].target,this.dragStartPosition);s=s>o?.5*(s+o):s;var r=Math.min(-this.getLastSlide().target,this.dragStartPosition);s=s<r?.5*(s+r):s}this.dragX=s,this.dragMoveTime=new Date,this.dispatchEvent("dragMove",t,[e,i])},o.dragEnd=function(t,e){this.options.freeScroll&&(this.isFreeScrolling=!0);var i=this.dragEndRestingSelect();if(this.options.freeScroll&&!this.options.wrapAround){var n=this.getRestingPosition();this.isFreeScrolling=-n>this.slides[0].target&&-n<this.getLastSlide().target}else this.options.freeScroll||i!=this.selectedIndex||(i+=this.dragEndBoostSelect());delete this.previousDragX,this.isDragSelect=this.options.wrapAround,this.select(i),delete this.isDragSelect,this.dispatchEvent("dragEnd",t,[e])},o.dragEndRestingSelect=function(){var t=this.getRestingPosition(),e=Math.abs(this.getSlideDistance(-t,this.selectedIndex)),i=this._getClosestResting(t,e,1),n=this._getClosestResting(t,e,-1),s=i.distance<n.distance?i.index:n.index;return s},o._getClosestResting=function(t,e,i){
13
+ for(var n=this.selectedIndex,s=1/0,o=this.options.contain&&!this.options.wrapAround?function(t,e){return t<=e}:function(t,e){return t<e};o(e,s)&&(n+=i,s=e,e=this.getSlideDistance(-t,n),null!==e);)e=Math.abs(e);return{distance:s,index:n-i}},o.getSlideDistance=function(t,e){var i=this.slides.length,s=this.options.wrapAround&&i>1,o=s?n.modulo(e,i):e,r=this.slides[o];if(!r)return null;var a=s?this.slideableWidth*Math.floor(e/i):0;return t-(r.target+a)},o.dragEndBoostSelect=function(){if(void 0===this.previousDragX||!this.dragMoveTime||new Date-this.dragMoveTime>100)return 0;var t=this.getSlideDistance(-this.dragX,this.selectedIndex),e=this.previousDragX-this.dragX;return t>0&&e>0?1:t<0&&e<0?-1:0},o.staticClick=function(t,e){var i=this.getParentCell(t.target),n=i&&i.element,s=i&&this.cells.indexOf(i);this.dispatchEvent("staticClick",t,[e,n,s])},o.onscroll=function(){var t=s(),e=this.pointerDownScroll.x-t.x,i=this.pointerDownScroll.y-t.y;(Math.abs(e)>3||Math.abs(i)>3)&&this._pointerDone()},e}),function(t,e){"function"==typeof define&&define.amd?define("tap-listener/tap-listener",["unipointer/unipointer"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("unipointer")):t.TapListener=e(t,t.Unipointer)}(window,function(t,e){function i(t){this.bindTap(t)}var n=i.prototype=Object.create(e.prototype);return n.bindTap=function(t){t&&(this.unbindTap(),this.tapElement=t,this._bindStartEvent(t,!0))},n.unbindTap=function(){this.tapElement&&(this._bindStartEvent(this.tapElement,!0),delete this.tapElement)},n.pointerUp=function(i,n){if(!this.isIgnoringMouseUp||"mouseup"!=i.type){var s=e.getPointerPoint(n),o=this.tapElement.getBoundingClientRect(),r=t.pageXOffset,a=t.pageYOffset,h=s.x>=o.left+r&&s.x<=o.right+r&&s.y>=o.top+a&&s.y<=o.bottom+a;if(h&&this.emitEvent("tap",[i,n]),"mouseup"!=i.type){this.isIgnoringMouseUp=!0;var l=this;setTimeout(function(){delete l.isIgnoringMouseUp},400)}}},n.destroy=function(){this.pointerDone(),this.unbindTap()},i}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/prev-next-button",["./flickity","tap-listener/tap-listener","fizzy-ui-utils/utils"],function(i,n,s){return e(t,i,n,s)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./flickity"),require("tap-listener"),require("fizzy-ui-utils")):e(t,t.Flickity,t.TapListener,t.fizzyUIUtils)}(window,function(t,e,i,n){"use strict";function s(t,e){this.direction=t,this.parent=e,this._create()}function o(t){return"string"==typeof t?t:"M "+t.x0+",50 L "+t.x1+","+(t.y1+50)+" L "+t.x2+","+(t.y2+50)+" L "+t.x3+",50 L "+t.x2+","+(50-t.y2)+" L "+t.x1+","+(50-t.y1)+" Z"}var r="http://www.w3.org/2000/svg";s.prototype=new i,s.prototype._create=function(){this.isEnabled=!0,this.isPrevious=this.direction==-1;var t=this.parent.options.rightToLeft?1:-1;this.isLeft=this.direction==t;var e=this.element=document.createElement("button");e.className="flickity-prev-next-button",e.className+=this.isPrevious?" previous":" next",e.setAttribute("type","button"),this.disable(),e.setAttribute("aria-label",this.isPrevious?"previous":"next");var i=this.createSVG();e.appendChild(i),this.parent.on("select",function(){this.update()}.bind(this)),this.on("tap",this.onTap),this.on("pointerDown",function(t,e){this.parent.childUIPointerDown(e)}.bind(this))},s.prototype.activate=function(){this.bindTap(this.element),this.element.addEventListener("click",this),this.parent.element.appendChild(this.element)},s.prototype.deactivate=function(){this.parent.element.removeChild(this.element),i.prototype.destroy.call(this),this.element.removeEventListener("click",this)},s.prototype.createSVG=function(){var t=document.createElementNS(r,"svg");t.setAttribute("viewBox","0 0 100 100");var e=document.createElementNS(r,"path"),i=o(this.parent.options.arrowShape);return e.setAttribute("d",i),e.setAttribute("class","arrow"),this.isLeft||e.setAttribute("transform","translate(100, 100) rotate(180) "),t.appendChild(e),t},s.prototype.onTap=function(){if(this.isEnabled){this.parent.uiChange();var t=this.isPrevious?"previous":"next";this.parent[t]()}},s.prototype.handleEvent=n.handleEvent,s.prototype.onclick=function(){var t=document.activeElement;t&&t==this.element&&this.onTap()},s.prototype.enable=function(){this.isEnabled||(this.element.disabled=!1,this.isEnabled=!0)},s.prototype.disable=function(){this.isEnabled&&(this.element.disabled=!0,this.isEnabled=!1)},s.prototype.update=function(){var t=this.parent.slides;if(this.parent.options.wrapAround&&t.length>1)return void this.enable();var e=t.length?t.length-1:0,i=this.isPrevious?0:e,n=this.parent.selectedIndex==i?"disable":"enable";this[n]()},s.prototype.destroy=function(){this.deactivate()},n.extend(e.defaults,{prevNextButtons:!0,arrowShape:{x0:10,x1:60,y1:50,x2:70,y2:40,x3:30}}),e.createMethods.push("_createPrevNextButtons");var a=e.prototype;return a._createPrevNextButtons=function(){this.options.prevNextButtons&&(this.prevButton=new s((-1),this),this.nextButton=new s(1,this),this.on("activate",this.activatePrevNextButtons))},a.activatePrevNextButtons=function(){this.prevButton.activate(),this.nextButton.activate(),this.on("deactivate",this.deactivatePrevNextButtons)},a.deactivatePrevNextButtons=function(){this.prevButton.deactivate(),this.nextButton.deactivate(),this.off("deactivate",this.deactivatePrevNextButtons)},e.PrevNextButton=s,e}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/page-dots",["./flickity","tap-listener/tap-listener","fizzy-ui-utils/utils"],function(i,n,s){return e(t,i,n,s)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./flickity"),require("tap-listener"),require("fizzy-ui-utils")):e(t,t.Flickity,t.TapListener,t.fizzyUIUtils)}(window,function(t,e,i,n){function s(t){this.parent=t,this._create()}s.prototype=new i,s.prototype._create=function(){this.holder=document.createElement("ol"),this.holder.className="flickity-page-dots",this.dots=[],this.on("tap",this.onTap)},s.prototype.activate=function(){this.setDots(),this.bindTap(this.holder),this.parent.element.appendChild(this.holder)},s.prototype.deactivate=function(){this.parent.element.removeChild(this.holder),i.prototype.destroy.call(this)},s.prototype.setDots=function(){var t=this.parent.slides.length-this.dots.length;t>0?this.addDots(t):t<0&&this.removeDots(-t)},s.prototype.addDots=function(t){for(var e=document.createDocumentFragment(),i=[];t;){var n=document.createElement("li");n.className="dot",e.appendChild(n),i.push(n),t--}this.holder.appendChild(e),this.dots=this.dots.concat(i)},s.prototype.removeDots=function(t){var e=this.dots.splice(this.dots.length-t,t);e.forEach(function(t){this.holder.removeChild(t)},this)},s.prototype.updateSelected=function(){this.selectedDot&&(this.selectedDot.className="dot"),this.dots.length&&(this.selectedDot=this.dots[this.parent.selectedIndex],this.selectedDot.className="dot is-selected")},s.prototype.onTap=function(t){var e=t.target;if("LI"==e.nodeName){this.parent.uiChange();var i=this.dots.indexOf(e);this.parent.select(i)}},s.prototype.destroy=function(){this.deactivate()},e.PageDots=s,n.extend(e.defaults,{pageDots:!0}),e.createMethods.push("_createPageDots");var o=e.prototype;return o._createPageDots=function(){this.options.pageDots&&(this.pageDots=new s(this),this.on("activate",this.activatePageDots),this.on("select",this.updateSelectedPageDots),this.on("cellChange",this.updatePageDots),this.on("resize",this.updatePageDots),this.on("deactivate",this.deactivatePageDots),this.pageDots.on("pointerDown",function(t,e){this.childUIPointerDown(e)}.bind(this)))},o.activatePageDots=function(){this.pageDots.activate()},o.updateSelectedPageDots=function(){this.pageDots.updateSelected()},o.updatePageDots=function(){this.pageDots.setDots()},o.deactivatePageDots=function(){this.pageDots.deactivate()},e.PageDots=s,e}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/player",["ev-emitter/ev-emitter","fizzy-ui-utils/utils","./flickity"],function(t,i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("fizzy-ui-utils"),require("./flickity")):e(t.EvEmitter,t.fizzyUIUtils,t.Flickity)}(window,function(t,e,i){function n(t){this.parent=t,this.state="stopped",o&&(this.onVisibilityChange=function(){this.visibilityChange()}.bind(this),this.onVisibilityPlay=function(){this.visibilityPlay()}.bind(this))}var s,o;"hidden"in document?(s="hidden",o="visibilitychange"):"webkitHidden"in document&&(s="webkitHidden",o="webkitvisibilitychange"),n.prototype=Object.create(t.prototype),n.prototype.play=function(){if("playing"!=this.state){var t=document[s];if(o&&t)return void document.addEventListener(o,this.onVisibilityPlay);this.state="playing",o&&document.addEventListener(o,this.onVisibilityChange),this.tick()}},n.prototype.tick=function(){if("playing"==this.state){var t=this.parent.options.autoPlay;t="number"==typeof t?t:3e3;var e=this;this.clear(),this.timeout=setTimeout(function(){e.parent.next(!0),e.tick()},t)}},n.prototype.stop=function(){this.state="stopped",this.clear(),o&&document.removeEventListener(o,this.onVisibilityChange)},n.prototype.clear=function(){clearTimeout(this.timeout)},n.prototype.pause=function(){"playing"==this.state&&(this.state="paused",this.clear())},n.prototype.unpause=function(){"paused"==this.state&&this.play()},n.prototype.visibilityChange=function(){var t=document[s];this[t?"pause":"unpause"]()},n.prototype.visibilityPlay=function(){this.play(),document.removeEventListener(o,this.onVisibilityPlay)},e.extend(i.defaults,{pauseAutoPlayOnHover:!0}),i.createMethods.push("_createPlayer");var r=i.prototype;return r._createPlayer=function(){this.player=new n(this),this.on("activate",this.activatePlayer),this.on("uiChange",this.stopPlayer),this.on("pointerDown",this.stopPlayer),this.on("deactivate",this.deactivatePlayer)},r.activatePlayer=function(){this.options.autoPlay&&(this.player.play(),this.element.addEventListener("mouseenter",this))},r.playPlayer=function(){this.player.play()},r.stopPlayer=function(){this.player.stop()},r.pausePlayer=function(){this.player.pause()},r.unpausePlayer=function(){this.player.unpause()},r.deactivatePlayer=function(){this.player.stop(),this.element.removeEventListener("mouseenter",this)},r.onmouseenter=function(){this.options.pauseAutoPlayOnHover&&(this.player.pause(),this.element.addEventListener("mouseleave",this))},r.onmouseleave=function(){this.player.unpause(),this.element.removeEventListener("mouseleave",this)},i.Player=n,i}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/add-remove-cell",["./flickity","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./flickity"),require("fizzy-ui-utils")):e(t,t.Flickity,t.fizzyUIUtils)}(window,function(t,e,i){function n(t){var e=document.createDocumentFragment();return t.forEach(function(t){e.appendChild(t.element)}),e}var s=e.prototype;return s.insert=function(t,e){var i=this._makeCells(t);if(i&&i.length){var s=this.cells.length;e=void 0===e?s:e;var o=n(i),r=e==s;if(r)this.slider.appendChild(o);else{var a=this.cells[e].element;this.slider.insertBefore(o,a)}if(0===e)this.cells=i.concat(this.cells);else if(r)this.cells=this.cells.concat(i);else{var h=this.cells.splice(e,s-e);this.cells=this.cells.concat(i).concat(h)}this._sizeCells(i);var l=e>this.selectedIndex?0:i.length;this._cellAddedRemoved(e,l)}},s.append=function(t){this.insert(t,this.cells.length)},s.prepend=function(t){this.insert(t,0)},s.remove=function(t){var e,n,s=this.getCells(t),o=0,r=s.length;for(e=0;e<r;e++){n=s[e];var a=this.cells.indexOf(n)<this.selectedIndex;o-=a?1:0}for(e=0;e<r;e++)n=s[e],n.remove(),i.removeFrom(this.cells,n);s.length&&this._cellAddedRemoved(0,o)},s._cellAddedRemoved=function(t,e){e=e||0,this.selectedIndex+=e,this.selectedIndex=Math.max(0,Math.min(this.slides.length-1,this.selectedIndex)),this.cellChange(t,!0),this.emitEvent("cellAddedRemoved",[t,e])},s.cellSizeChange=function(t){var e=this.getCell(t);if(e){e.getSize();var i=this.cells.indexOf(e);this.cellChange(i)}},s.cellChange=function(t,e){var i=this.slideableWidth;if(this._positionCells(t),this._getWrapShiftCells(),this.setGallerySize(),this.emitEvent("cellChange",[t]),this.options.freeScroll){var n=i-this.slideableWidth;this.x+=n*this.cellAlign,this.positionSlider()}else e&&this.positionSliderAtSelected(),this.select(this.selectedIndex)},e}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/lazyload",["./flickity","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./flickity"),require("fizzy-ui-utils")):e(t,t.Flickity,t.fizzyUIUtils)}(window,function(t,e,i){"use strict";function n(t){if("IMG"==t.nodeName&&t.getAttribute("data-flickity-lazyload"))return[t];var e=t.querySelectorAll("img[data-flickity-lazyload]");return i.makeArray(e)}function s(t,e){this.img=t,this.flickity=e,this.load()}e.createMethods.push("_createLazyload");var o=e.prototype;return o._createLazyload=function(){this.on("select",this.lazyLoad)},o.lazyLoad=function(){var t=this.options.lazyLoad;if(t){var e="number"==typeof t?t:0,i=this.getAdjacentCellElements(e),o=[];i.forEach(function(t){var e=n(t);o=o.concat(e)}),o.forEach(function(t){new s(t,this)},this)}},s.prototype.handleEvent=i.handleEvent,s.prototype.load=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.img.getAttribute("data-flickity-lazyload"),this.img.removeAttribute("data-flickity-lazyload")},s.prototype.onload=function(t){this.complete(t,"flickity-lazyloaded")},s.prototype.onerror=function(t){this.complete(t,"flickity-lazyerror")},s.prototype.complete=function(t,e){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this);var i=this.flickity.getParentCell(this.img),n=i&&i.element;this.flickity.cellSizeChange(n),this.img.classList.add(e),this.flickity.dispatchEvent("lazyLoad",t,n)},e.LazyLoader=s,e}),function(t,e){"function"==typeof define&&define.amd?define("flickity/js/index",["./flickity","./drag","./prev-next-button","./page-dots","./player","./add-remove-cell","./lazyload"],e):"object"==typeof module&&module.exports&&(module.exports=e(require("./flickity"),require("./drag"),require("./prev-next-button"),require("./page-dots"),require("./player"),require("./add-remove-cell"),require("./lazyload")))}(window,function(t){return t}),function(t,e){"function"==typeof define&&define.amd?define("flickity-as-nav-for/as-nav-for",["flickity/js/index","fizzy-ui-utils/utils"],function(i,n,s){return e(t,i,n,s)}):"object"==typeof module&&module.exports?module.exports=e(t,require("flickity"),require("fizzy-ui-utils")):t.Flickity=e(t,t.Flickity,t.fizzyUIUtils)}(window,function(t,e,i){e.createMethods.push("_createAsNavFor");var n=e.prototype;return n._createAsNavFor=function(){this.on("activate",this.activateAsNavFor),this.on("deactivate",this.deactivateAsNavFor),this.on("destroy",this.destroyAsNavFor);var t=this.options.asNavFor;if(t){var e=this;setTimeout(function(){e.setNavCompanion(t)})}},n.setNavCompanion=function(t){t=i.getQueryElement(t);var n=e.data(t);if(n&&n!=this){this.navCompanion=n;var s=this;this.onNavCompanionSelect=function(){s.navCompanionSelect()},n.on("select",this.onNavCompanionSelect),this.on("staticClick",this.onNavStaticClick),this.navCompanionSelect()}},n.navCompanionSelect=function(){if(this.navCompanion){var t=this.navCompanion.selectedCells[0],e=this.navCompanion.cells.indexOf(t);this.selectCell(e),this.removeNavSelectedElements(),e>=this.cells.length||(this.navSelectedElements=this.slides[this.selectedIndex].getCellElements(),this.changeNavSelectedClass("add"))}},n.changeNavSelectedClass=function(t){this.navSelectedElements.forEach(function(e){e.classList[t]("is-nav-selected")})},n.activateAsNavFor=function(){this.navCompanionSelect()},n.removeNavSelectedElements=function(){this.navSelectedElements&&(this.changeNavSelectedClass("remove"),delete this.navSelectedElements)},n.onNavStaticClick=function(t,e,i,n){"number"==typeof n&&this.navCompanion.selectCell(n)},n.deactivateAsNavFor=function(){this.removeNavSelectedElements()},n.destroyAsNavFor=function(){this.navCompanion&&(this.navCompanion.off("select",this.onNavCompanionSelect),this.off("staticClick",this.onNavStaticClick),delete this.navCompanion)},e}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("imagesloaded/imagesloaded",["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}(window,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}function n(t){var e=[];if(Array.isArray(t))e=t;else if("number"==typeof t.length)for(var i=0;i<t.length;i++)e.push(t[i]);else e.push(t);return e}function s(t,e,o){return this instanceof s?("string"==typeof t&&(t=document.querySelectorAll(t)),this.elements=n(t),this.options=i({},this.options),"function"==typeof e?o=e:i(this.options,e),o&&this.on("always",o),this.getImages(),a&&(this.jqDeferred=new a.Deferred),void setTimeout(function(){this.check()}.bind(this))):new s(t,e,o)}function o(t){this.img=t}function r(t,e){this.url=t,this.element=e,this.img=new Image}var a=t.jQuery,h=t.console;s.prototype=Object.create(e.prototype),s.prototype.options={},s.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},s.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),this.options.background===!0&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&l[e]){for(var i=t.querySelectorAll("img"),n=0;n<i.length;n++){var s=i[n];this.addImage(s)}if("string"==typeof this.options.background){var o=t.querySelectorAll(this.options.background);for(n=0;n<o.length;n++){var r=o[n];this.addElementBackgroundImages(r)}}}};var l={1:!0,9:!0,11:!0};return s.prototype.addElementBackgroundImages=function(t){var e=getComputedStyle(t);if(e)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(e.backgroundImage);null!==n;){var s=n&&n[2];s&&this.addBackground(s,t),n=i.exec(e.backgroundImage)}},s.prototype.addImage=function(t){var e=new o(t);this.images.push(e)},s.prototype.addBackground=function(t,e){var i=new r(t,e);this.images.push(i)},s.prototype.check=function(){function t(t,i,n){setTimeout(function(){e.progress(t,i,n)})}var e=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(e){e.once("progress",t),e.check()}):void this.complete()},s.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&h&&h.log("progress: "+i,t,e)},s.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){var e=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[e](this)}},o.prototype=Object.create(e.prototype),o.prototype.check=function(){var t=this.getIsImageComplete();return t?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},o.prototype.getIsImageComplete=function(){return this.img.complete&&void 0!==this.img.naturalWidth},o.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.img,e])},o.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},o.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},o.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},o.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},r.prototype=Object.create(o.prototype),r.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var t=this.getIsImageComplete();t&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},r.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},r.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},s.makeJQueryPlugin=function(e){e=e||t.jQuery,e&&(a=e,a.fn.imagesLoaded=function(t,e){var i=new s(this,t,e);return i.jqDeferred.promise(a(this))})},s.makeJQueryPlugin(),s}),function(t,e){"function"==typeof define&&define.amd?define(["flickity/js/index","imagesloaded/imagesloaded"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("flickity"),require("imagesloaded")):t.Flickity=e(t,t.Flickity,t.imagesLoaded)}(window,function(t,e,i){"use strict";e.createMethods.push("_createImagesLoaded");var n=e.prototype;return n._createImagesLoaded=function(){this.on("activate",this.imagesLoaded)},n.imagesLoaded=function(){function t(t,i){var n=e.getParentCell(i.img);e.cellSizeChange(n&&n.element),e.options.freeScroll||e.positionSliderAtSelected()}if(this.options.imagesLoaded){var e=this;i(this.slider).on("progress",t)}},e});
themes/foundation/modules/slideout/slideout-helper.js CHANGED
@@ -31,14 +31,7 @@ jQuery(function(){
31
  slideout.close();
32
  }
33
  }
34
- });
35
-
36
- if ( deviceHasTouchSupport() ) {
37
- jQuery( '.page-wrapper' ).one('touchend', function( e ) {
38
- e.preventDefault();
39
- e.stopImmediatePropagation();
40
- });
41
- }
42
  });
43
 
44
  // special handling of left and right menus
31
  slideout.close();
32
  }
33
  }
34
+ });
 
 
 
 
 
 
 
35
  });
36
 
37
  // special handling of left and right menus
wptouch.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: WPtouch Mobile Plugin
4
  Plugin URI: http://www.wptouch.com/
5
- Version: 4.2.6
6
  Description: Make a beautiful mobile-friendly version of your website with just a few clicks
7
  Author: BraveNewCode Inc.
8
  Author URI: http://www.bravenewcode.com/
@@ -14,7 +14,7 @@
14
 
15
  function wptouch_create_four_object() {
16
  if ( !defined( 'WPTOUCH_IS_PRO' ) ) {
17
- define( 'WPTOUCH_VERSION', '4.2.6' );
18
 
19
  define( 'WPTOUCH_BASE_NAME', basename( __FILE__, '.php' ) . '.php' );
20
  define( 'WPTOUCH_DIR', WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . basename( __FILE__, '.php' ) );
2
  /*
3
  Plugin Name: WPtouch Mobile Plugin
4
  Plugin URI: http://www.wptouch.com/
5
+ Version: 4.3
6
  Description: Make a beautiful mobile-friendly version of your website with just a few clicks
7
  Author: BraveNewCode Inc.
8
  Author URI: http://www.bravenewcode.com/
14
 
15
  function wptouch_create_four_object() {
16
  if ( !defined( 'WPTOUCH_IS_PRO' ) ) {
17
+ define( 'WPTOUCH_VERSION', '4.3' );
18
 
19
  define( 'WPTOUCH_BASE_NAME', basename( __FILE__, '.php' ) . '.php' );
20
  define( 'WPTOUCH_DIR', WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . basename( __FILE__, '.php' ) );