Elementor Essential Addons - Version 2.4.0

Version Description

  • Data Table element added
  • Filterable Gallery added
  • Few minor bug fixed and improvements
Download this release

Release Info

Developer re_enter_rupok
Plugin Icon 128x128 Elementor Essential Addons
Version 2.4.0
Comparing to
See all releases

Code changes from version 2.3.1 to 2.4.0

admin/assets/images/gift-icon.png ADDED
Binary file
admin/settings.php CHANGED
@@ -14,7 +14,7 @@ class Eael_Admin_Settings {
14
  * @var array
15
  * @since 2.3.0
16
  */
17
- public $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'img-comparison', 'instagram-gallery', 'interactive-promo', 'lightbox', 'post-block', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonial-slider', 'testimonials', 'testimonials', 'weforms', 'static-product', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'flip-carousel', 'interactive-cards', 'ninja-form', 'gravity-form', 'caldera-form', 'wisdom_registered_setting', 'twitter-feed', 'facebook-feed', 'twitter-feed-carousel', 'facebook-feed-carousel' ];
18
 
19
  /**
20
  * Will Contain All Components Default Values
@@ -327,6 +327,24 @@ class Eael_Admin_Settings {
327
  </div>
328
  </td>
329
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  </table>
331
  </div>
332
  <div class="col-full">
@@ -496,6 +514,18 @@ class Eael_Admin_Settings {
496
  <label for="facebook-feed-carousel" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
497
  </div>
498
  </td>
 
 
 
 
 
 
 
 
 
 
 
 
499
  </tr>
500
  </table>
501
  <div class="eael-save-btn-wrap">
@@ -582,6 +612,8 @@ class Eael_Admin_Settings {
582
  'caldera-form' => intval( $settings['gravity-form'] ? 1 : 0 ),
583
  'twitter-feed' => intval( $settings['twitter-feed'] ? 1 : 0 ),
584
  'facebook-feed' => intval( $settings['facebook-feed'] ? 1 : 0 ),
 
 
585
  'wisdom_registered_setting' => 1,
586
  );
587
  update_option( 'eael_save_settings', $this->eael_settings );
14
  * @var array
15
  * @since 2.3.0
16
  */
17
+ public $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'img-comparison', 'instagram-gallery', 'interactive-promo', 'lightbox', 'post-block', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonial-slider', 'testimonials', 'testimonials', 'weforms', 'static-product', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'flip-carousel', 'interactive-cards', 'ninja-form', 'gravity-form', 'caldera-form', 'wisdom_registered_setting', 'twitter-feed', 'facebook-feed', 'twitter-feed-carousel', 'facebook-feed-carousel', 'data-table', 'filter-gallery', 'dynamic-filter-gallery' ];
18
 
19
  /**
20
  * Will Contain All Components Default Values
327
  </div>
328
  </td>
329
  </tr>
330
+ <tr>
331
+ <td>
332
+ <div class="eael-checkbox">
333
+ <p class="title"><?php _e( 'Data Table', 'essential-addons-elementor' ) ?></p>
334
+ <p class="desc"><?php _e( 'Activate / Deactivate Data Table', 'essential-addons-elementor' ); ?></p>
335
+ <input type="checkbox" id="data-table" name="data-table" <?php checked( 1, $this->eael_get_settings['data-table'], true ); ?> >
336
+ <label for="data-table"></label>
337
+ </div>
338
+ </td>
339
+ <td>
340
+ <div class="eael-checkbox">
341
+ <p class="title"><?php _e( 'Filterable Gallery', 'essential-addons-elementor' ) ?></p>
342
+ <p class="desc"><?php _e( 'Activate / Deactivate Filterable Gallery', 'essential-addons-elementor' ); ?></p>
343
+ <input type="checkbox" id="filter-gallery" name="filter-gallery" <?php checked( 1, $this->eael_get_settings['filter-gallery'], true ); ?> >
344
+ <label for="filter-gallery"></label>
345
+ </div>
346
+ </td>
347
+ </tr>
348
  </table>
349
  </div>
350
  <div class="col-full">
514
  <label for="facebook-feed-carousel" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
515
  </div>
516
  </td>
517
+ <td>
518
+ <div class="eael-checkbox">
519
+ <p class="title">
520
+ <?php _e( 'Dynamic Filter Gallery', 'essential-addons-elementor' ) ?>
521
+ </p>
522
+ <p class="desc">
523
+ <?php _e( 'Activate / Deactivate Dynamic Filter Gallery', 'essential-addons-elementor' ); ?>
524
+ </p>
525
+ <input type="checkbox" id="dynamic-filter-gallery" name="dynamic-filter-gallery" disabled>
526
+ <label for="dynamic-filter-gallery" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
527
+ </div>
528
+ </td>
529
  </tr>
530
  </table>
531
  <div class="eael-save-btn-wrap">
612
  'caldera-form' => intval( $settings['gravity-form'] ? 1 : 0 ),
613
  'twitter-feed' => intval( $settings['twitter-feed'] ? 1 : 0 ),
614
  'facebook-feed' => intval( $settings['facebook-feed'] ? 1 : 0 ),
615
+ 'data-table' => intval( $settings['data-table'] ? 1 : 0 ),
616
+ 'filter-gallery' => intval( $settings['filter-gallery'] ? 1 : 0 ),
617
  'wisdom_registered_setting' => 1,
618
  );
619
  update_option( 'eael_save_settings', $this->eael_settings );
assets/css/essential-addons-editor.css CHANGED
@@ -22,6 +22,7 @@
22
  .elementor-control-eael_pricing_table_style_pro_alert .elementor-control-title,
23
  .elementor-control-eael_section_countdown_style_pro_alert .elementor-control-title,
24
  .elementor-control-eael_fancy_text_style_pro_alert .elementor-control-title,
 
25
  .elementor-control-eael_team_members_preset_pro_alert .elementor-control-title {
26
  color: #f54;
27
  }
22
  .elementor-control-eael_pricing_table_style_pro_alert .elementor-control-title,
23
  .elementor-control-eael_section_countdown_style_pro_alert .elementor-control-title,
24
  .elementor-control-eael_fancy_text_style_pro_alert .elementor-control-title,
25
+ .elementor-control-eael_section_data_table_enabled_pro_alert .elementor-control-title,
26
  .elementor-control-eael_team_members_preset_pro_alert .elementor-control-title {
27
  color: #f54;
28
  }
assets/css/essential-addons-elementor.css CHANGED
@@ -3102,4 +3102,806 @@ h2.eael-elements-flip-box-heading {
3102
  .eael-facebook-feed-container.masonry-view .eael-social-feed-element {
3103
  width: 100% !important;
3104
  }
3105
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3102
  .eael-facebook-feed-container.masonry-view .eael-social-feed-element {
3103
  width: 100% !important;
3104
  }
3105
+ }
3106
+
3107
+ /**
3108
+ * Data Table
3109
+ */
3110
+
3111
+ /* General Style */
3112
+ .eael-data-table-wrap {}
3113
+ .eael-data-table-wrap .eael-data-tables_wrapper {
3114
+ display: flex;
3115
+ flex-flow: row wrap;
3116
+ justify-content: flex-start;
3117
+ width: 100%;
3118
+ }
3119
+ .eael-data-table-wrap .eael-data-tables_filter,
3120
+ .eael-data-table-wrap .eael-data-tables_length,
3121
+ .eael-data-table-wrap .eael-data-tables_info,
3122
+ .eael-data-table-wrap .eael-data-tables_paginate {
3123
+ flex-grow: 1;
3124
+ flex-basis: 50%;
3125
+ }
3126
+ .eael-data-table-wrap .eael-data-tables_filter,
3127
+ .eael-data-table-wrap .eael-data-tables_paginate {
3128
+ text-align: right;
3129
+ }
3130
+ .eael-data-table-wrap .eael-data-tables_length select {
3131
+ width: auto;
3132
+ max-width: 120px;
3133
+ height: 40px;
3134
+ border: 1px solid rgba( 0,0,0,0.09 );
3135
+ outline: 0;
3136
+ margin-left: 10px;
3137
+ margin-right: 10px;
3138
+ }
3139
+ .eael-data-table-wrap .eael-data-tables_paginate .paginate_button {
3140
+ padding: 10px 15px;
3141
+ background: #f2f2f2;
3142
+ margin-right: 2px;
3143
+ cursor: pointer;
3144
+ transition: all .3s;
3145
+ }
3146
+ .eael-data-table-wrap .eael-data-tables_paginate .paginate_button:hover,
3147
+ .eael-data-table-wrap .eael-data-tables_paginate .paginate_button.current {
3148
+ color: #fff;
3149
+ background: #4a4893;
3150
+ }
3151
+ .eael-data-table-wrap .eael-data-tables_paginate .paginate_button.previous {}
3152
+ .eael-data-table-wrap .eael-data-tables_paginate .paginate_button.next {}
3153
+ .eael-data-table-wrap .eael-data-tables_paginate .paginate_button.disabled {
3154
+ cursor: no-drop;
3155
+ background: #f2f2f2;
3156
+ opacity: .5;
3157
+ color: #888;
3158
+ }
3159
+ .eael-data-table-wrap .eael-data-tables_info,
3160
+ .eael-data-table-wrap .eael-data-tables_length label,
3161
+ .eael-data-table-wrap .eael-data-tables_filter label {
3162
+ font-weight: 700;
3163
+ }
3164
+ .eael-data-table-wrap .eael-data-tables_filter label input[type="search"] {
3165
+ height: 40px;
3166
+ border: 1px solid rgba( 0,0,0,0.09 );
3167
+ outline: 0;
3168
+ padding: 10px;
3169
+ margin-left: 10px;
3170
+ }
3171
+ table.eael-data-table thead .sorting,
3172
+ table.eael-data-table thead .sorting_desc,
3173
+ table.eael-data-table thead .sorting_asc {
3174
+ position: relative;
3175
+ z-index: 0;
3176
+ outline: 0;
3177
+ cursor: pointer;
3178
+ }
3179
+ table.eael-data-table thead .sorting:after,
3180
+ table.eael-data-table thead .sorting_desc:after,
3181
+ table.eael-data-table thead .sorting_asc:after {
3182
+ position: absolute;
3183
+ top: 50%;
3184
+ right: 10px;
3185
+ font-family: 'FontAwesome';
3186
+ color: #fff;
3187
+ z-index: 1;
3188
+ transform: translateY(-50%);
3189
+ }
3190
+ table.eael-data-table thead .sorting:after {
3191
+ content: "\f0dc";
3192
+ }
3193
+ table.eael-data-table thead .headerSortDown:after {
3194
+ content: "\f0dd";
3195
+ }
3196
+ table.eael-data-table thead .headerSortUp:after {
3197
+ content: "\f0de";
3198
+ }
3199
+ .data-header-icon {
3200
+ margin-right: 10px;
3201
+ }
3202
+ /* Table style */
3203
+ .eael-data-table {
3204
+ width: 100%;
3205
+ height: auto;
3206
+ border-collapse: collapse;
3207
+ margin: 0px;
3208
+ }
3209
+ .eael-data-table thead {}
3210
+ .eael-data-table thead tr {
3211
+ text-align: left;
3212
+ }
3213
+ .eael-data-table thead tr th,
3214
+ .eael-data-table thead tr th:first-child {
3215
+ padding: 20px 15px;
3216
+ background: #4a4893;
3217
+ font-size: 16px;
3218
+ font-weight: 600;
3219
+ font-family: 'Montserrat', sans-serif;
3220
+ line-height: 1;
3221
+ color: #fff;
3222
+ border-right: 1px solid rgba( 0,0,0,.1 );
3223
+ }
3224
+ .eael-data-table thead tr th:last-child {
3225
+ border: 0px;
3226
+ }
3227
+ .eael-data-table tbody {}
3228
+ .eael-data-table tbody tr {
3229
+
3230
+ }
3231
+ .eael-data-table tbody tr.even {
3232
+ transition: background 0.4s ease-in-out;
3233
+ }
3234
+ .eael-data-table tbody tr.odd {
3235
+ background: rgba( 242,242,242,0.5 );
3236
+ transition: background 0.2s ease-in-out;
3237
+ }
3238
+ .eael-data-table tbody tr.even:hover,
3239
+ .eael-data-table tbody tr.odd:hover {
3240
+ background: rgba( 242,242,242,0.7 );
3241
+ }
3242
+ .eael-data-table tbody tr.even:last-child,
3243
+ .eael-data-table tbody tr.odd:last-child {
3244
+ border-bottom: 1px solid rgba( 0,0,0,0.09 );
3245
+ }
3246
+ .eael-data-table tbody tr td,
3247
+ .eael-data-table tbody tr td:first-child {
3248
+ padding: 20px 15px;
3249
+ font-size: 14px;
3250
+ font-family: 'Montserrat', sans-serif;
3251
+ line-height: 1;
3252
+ border-right: 1px solid rgba( 0,0,0,0.06 );
3253
+ }
3254
+ .eael-data-table tbody tr td:last-child {
3255
+ border-right: 0px;
3256
+ }
3257
+
3258
+ table.eael-data-table thead .sorting_disabled.sorting:after {
3259
+ display: none;
3260
+ }
3261
+ /* Edidtor related */
3262
+ .eael-hide-elements .eael-data-tables_info {
3263
+ display: none;
3264
+ }
3265
+ .eael-dt-th-align-left .eael-data-table thead tr th,
3266
+ .eael-dt-td-align-left .eael-data-table tbody tr td {
3267
+ text-align: left;
3268
+ }
3269
+ .eael-dt-th-align-right .eael-data-table thead tr th,
3270
+ .eael-dt-td-align-right .eael-data-table tbody tr td {
3271
+ text-align: right;
3272
+ padding-right: 30px;
3273
+ }
3274
+ .eael-dt-th-align-center .eael-data-table thead tr th,
3275
+ .eael-dt-td-align-center .eael-data-table tbody tr td {
3276
+ text-align: center;
3277
+ }
3278
+ .eael-data-table-th-img {
3279
+ display: inline-block;
3280
+ margin: 0px;
3281
+ line-height: 1;
3282
+
3283
+ }
3284
+ table.eael-data-table thead .sorting:after,
3285
+ table.eael-data-table thead .sorting_desc:after,
3286
+ table.eael-data-table thead .sorting_asc:after {
3287
+ display: none;
3288
+ }
3289
+ /**
3290
+ * Magnific Popup
3291
+ */
3292
+ /* Magnific Popup CSS */
3293
+ .mfp-bg {
3294
+ top: 0;
3295
+ left: 0;
3296
+ width: 100%;
3297
+ height: 100%;
3298
+ z-index: 1042;
3299
+ overflow: hidden;
3300
+ position: fixed;
3301
+ background: #0b0b0b;
3302
+ opacity: 0.8; }
3303
+
3304
+ .mfp-wrap {
3305
+ top: 0;
3306
+ left: 0;
3307
+ width: 100%;
3308
+ height: 100%;
3309
+ z-index: 1043;
3310
+ position: fixed;
3311
+ outline: none !important;
3312
+ -webkit-backface-visibility: hidden; }
3313
+
3314
+ .mfp-container {
3315
+ text-align: center;
3316
+ position: absolute;
3317
+ width: 100%;
3318
+ height: 100%;
3319
+ left: 0;
3320
+ top: 0;
3321
+ padding: 0 8px;
3322
+ box-sizing: border-box; }
3323
+
3324
+ .mfp-container:before {
3325
+ content: '';
3326
+ display: inline-block;
3327
+ height: 100%;
3328
+ vertical-align: middle; }
3329
+
3330
+ .mfp-align-top .mfp-container:before {
3331
+ display: none; }
3332
+
3333
+ .mfp-content {
3334
+ position: relative;
3335
+ display: inline-block;
3336
+ vertical-align: middle;
3337
+ margin: 0 auto;
3338
+ text-align: left;
3339
+ z-index: 1045; }
3340
+
3341
+ .mfp-inline-holder .mfp-content,
3342
+ .mfp-ajax-holder .mfp-content {
3343
+ width: 100%;
3344
+ cursor: auto; }
3345
+
3346
+ .mfp-ajax-cur {
3347
+ cursor: progress; }
3348
+
3349
+ .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
3350
+ cursor: -moz-zoom-out;
3351
+ cursor: -webkit-zoom-out;
3352
+ cursor: zoom-out; }
3353
+
3354
+ .mfp-zoom {
3355
+ cursor: pointer;
3356
+ cursor: -webkit-zoom-in;
3357
+ cursor: -moz-zoom-in;
3358
+ cursor: zoom-in; }
3359
+
3360
+ .mfp-auto-cursor .mfp-content {
3361
+ cursor: auto; }
3362
+
3363
+ .mfp-close,
3364
+ .mfp-arrow,
3365
+ .mfp-preloader,
3366
+ .mfp-counter {
3367
+ -webkit-user-select: none;
3368
+ -moz-user-select: none;
3369
+ user-select: none; }
3370
+
3371
+ .mfp-loading.mfp-figure {
3372
+ display: none; }
3373
+
3374
+ .mfp-hide {
3375
+ display: none !important; }
3376
+
3377
+ .mfp-preloader {
3378
+ color: #CCC;
3379
+ position: absolute;
3380
+ top: 50%;
3381
+ width: auto;
3382
+ text-align: center;
3383
+ margin-top: -0.8em;
3384
+ left: 8px;
3385
+ right: 8px;
3386
+ z-index: 1044; }
3387
+ .mfp-preloader a {
3388
+ color: #CCC; }
3389
+ .mfp-preloader a:hover {
3390
+ color: #FFF; }
3391
+
3392
+ .mfp-s-ready .mfp-preloader {
3393
+ display: none; }
3394
+
3395
+ .mfp-s-error .mfp-content {
3396
+ display: none; }
3397
+
3398
+ button.mfp-close,
3399
+ button.mfp-arrow {
3400
+ overflow: visible;
3401
+ cursor: pointer;
3402
+ background: transparent;
3403
+ border: 0;
3404
+ -webkit-appearance: none;
3405
+ display: block;
3406
+ outline: none;
3407
+ padding: 0;
3408
+ z-index: 1046;
3409
+ box-shadow: none;
3410
+ touch-action: manipulation; }
3411
+
3412
+ button::-moz-focus-inner {
3413
+ padding: 0;
3414
+ border: 0; }
3415
+
3416
+ .mfp-close {
3417
+ width: 44px;
3418
+ height: 44px;
3419
+ line-height: 44px;
3420
+ position: absolute;
3421
+ right: 0;
3422
+ top: 0;
3423
+ text-decoration: none;
3424
+ text-align: center;
3425
+ opacity: 0.65;
3426
+ padding: 0 0 18px 10px;
3427
+ color: #FFF;
3428
+ font-style: normal;
3429
+ font-size: 28px;
3430
+ font-family: Arial, Baskerville, monospace; }
3431
+ .mfp-close:hover,
3432
+ .mfp-close:focus {
3433
+ opacity: 1; }
3434
+ .mfp-close:active {
3435
+ top: 1px; }
3436
+
3437
+ .mfp-close-btn-in .mfp-close {
3438
+ color: #333; }
3439
+
3440
+ .mfp-image-holder .mfp-close,
3441
+ .mfp-iframe-holder .mfp-close {
3442
+ color: #FFF;
3443
+ right: -6px;
3444
+ text-align: right;
3445
+ padding-right: 6px;
3446
+ width: 100%; }
3447
+
3448
+ .mfp-counter {
3449
+ position: absolute;
3450
+ top: 0;
3451
+ right: 0;
3452
+ color: #CCC;
3453
+ font-size: 12px;
3454
+ line-height: 18px;
3455
+ white-space: nowrap; }
3456
+
3457
+ .mfp-arrow {
3458
+ position: absolute;
3459
+ opacity: 0.65;
3460
+ margin: 0;
3461
+ top: 50%;
3462
+ margin-top: -55px;
3463
+ padding: 0;
3464
+ width: 90px;
3465
+ height: 110px;
3466
+ -webkit-tap-highlight-color: transparent; }
3467
+ .mfp-arrow:active {
3468
+ margin-top: -54px; }
3469
+ .mfp-arrow:hover,
3470
+ .mfp-arrow:focus {
3471
+ opacity: 1; }
3472
+ .mfp-arrow:before,
3473
+ .mfp-arrow:after {
3474
+ content: '';
3475
+ display: block;
3476
+ width: 0;
3477
+ height: 0;
3478
+ position: absolute;
3479
+ left: 0;
3480
+ top: 0;
3481
+ margin-top: 35px;
3482
+ margin-left: 35px;
3483
+ border: medium inset transparent; }
3484
+ .mfp-arrow:after {
3485
+ border-top-width: 13px;
3486
+ border-bottom-width: 13px;
3487
+ top: 8px; }
3488
+ .mfp-arrow:before {
3489
+ border-top-width: 21px;
3490
+ border-bottom-width: 21px;
3491
+ opacity: 0.7; }
3492
+
3493
+ .mfp-arrow-left {
3494
+ left: 0; }
3495
+ .mfp-arrow-left:after {
3496
+ border-right: 17px solid #FFF;
3497
+ margin-left: 31px; }
3498
+ .mfp-arrow-left:before {
3499
+ margin-left: 25px;
3500
+ border-right: 27px solid #3F3F3F; }
3501
+
3502
+ .mfp-arrow-right {
3503
+ right: 0; }
3504
+ .mfp-arrow-right:after {
3505
+ border-left: 17px solid #FFF;
3506
+ margin-left: 39px; }
3507
+ .mfp-arrow-right:before {
3508
+ border-left: 27px solid #3F3F3F; }
3509
+
3510
+ .mfp-iframe-holder {
3511
+ padding-top: 40px;
3512
+ padding-bottom: 40px; }
3513
+ .mfp-iframe-holder .mfp-content {
3514
+ line-height: 0;
3515
+ width: 100%;
3516
+ max-width: 900px; }
3517
+ .mfp-iframe-holder .mfp-close {
3518
+ top: -40px; }
3519
+
3520
+ .mfp-iframe-scaler {
3521
+ width: 100%;
3522
+ height: 0;
3523
+ overflow: hidden;
3524
+ padding-top: 56.25%; }
3525
+ .mfp-iframe-scaler iframe {
3526
+ position: absolute;
3527
+ display: block;
3528
+ top: 0;
3529
+ left: 0;
3530
+ width: 100%;
3531
+ height: 100%;
3532
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
3533
+ background: #000; }
3534
+
3535
+ /* Main image in popup */
3536
+ img.mfp-img {
3537
+ width: auto;
3538
+ max-width: 100%;
3539
+ height: auto;
3540
+ display: block;
3541
+ line-height: 0;
3542
+ box-sizing: border-box;
3543
+ padding: 40px 0 40px;
3544
+ margin: 0 auto; }
3545
+
3546
+ /* The shadow behind the image */
3547
+ .mfp-figure {
3548
+ line-height: 0; }
3549
+ .mfp-figure:after {
3550
+ content: '';
3551
+ position: absolute;
3552
+ left: 0;
3553
+ top: 40px;
3554
+ bottom: 40px;
3555
+ display: block;
3556
+ right: 0;
3557
+ width: auto;
3558
+ height: auto;
3559
+ z-index: -1;
3560
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
3561
+ background: #444; }
3562
+ .mfp-figure small {
3563
+ color: #BDBDBD;
3564
+ display: block;
3565
+ font-size: 12px;
3566
+ line-height: 14px; }
3567
+ .mfp-figure figure {
3568
+ margin: 0; }
3569
+
3570
+ .mfp-bottom-bar {
3571
+ margin-top: -36px;
3572
+ position: absolute;
3573
+ top: 100%;
3574
+ left: 0;
3575
+ width: 100%;
3576
+ cursor: auto; }
3577
+
3578
+ .mfp-title {
3579
+ text-align: left;
3580
+ line-height: 18px;
3581
+ color: #F3F3F3;
3582
+ word-wrap: break-word;
3583
+ padding-right: 36px; }
3584
+
3585
+ .mfp-image-holder .mfp-content {
3586
+ max-width: 100%; }
3587
+
3588
+ .mfp-gallery .mfp-image-holder .mfp-figure {
3589
+ cursor: pointer; }
3590
+
3591
+ @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
3592
+ /**
3593
+ * Remove all paddings around the image on small screen
3594
+ */
3595
+ .mfp-img-mobile .mfp-image-holder {
3596
+ padding-left: 0;
3597
+ padding-right: 0; }
3598
+ .mfp-img-mobile img.mfp-img {
3599
+ padding: 0; }
3600
+ .mfp-img-mobile .mfp-figure:after {
3601
+ top: 0;
3602
+ bottom: 0; }
3603
+ .mfp-img-mobile .mfp-figure small {
3604
+ display: inline;
3605
+ margin-left: 5px; }
3606
+ .mfp-img-mobile .mfp-bottom-bar {
3607
+ background: rgba(0, 0, 0, 0.6);
3608
+ bottom: 0;
3609
+ margin: 0;
3610
+ top: auto;
3611
+ padding: 3px 5px;
3612
+ position: fixed;
3613
+ box-sizing: border-box; }
3614
+ .mfp-img-mobile .mfp-bottom-bar:empty {
3615
+ padding: 0; }
3616
+ .mfp-img-mobile .mfp-counter {
3617
+ right: 5px;
3618
+ top: 3px; }
3619
+ .mfp-img-mobile .mfp-close {
3620
+ top: 0;
3621
+ right: 0;
3622
+ width: 35px;
3623
+ height: 35px;
3624
+ line-height: 35px;
3625
+ background: rgba(0, 0, 0, 0.6);
3626
+ position: fixed;
3627
+ text-align: center;
3628
+ padding: 0; } }
3629
+
3630
+ @media all and (max-width: 900px) {
3631
+ .mfp-arrow {
3632
+ -webkit-transform: scale(0.75);
3633
+ transform: scale(0.75); }
3634
+ .mfp-arrow-left {
3635
+ -webkit-transform-origin: 0;
3636
+ transform-origin: 0; }
3637
+ .mfp-arrow-right {
3638
+ -webkit-transform-origin: 100%;
3639
+ transform-origin: 100%; }
3640
+ .mfp-container {
3641
+ padding-left: 6px;
3642
+ padding-right: 6px; }
3643
+ }
3644
+
3645
+ .eael-filter-gallery-control {
3646
+ width: 100%;
3647
+ }
3648
+ .eael-filter-gallery-control ul {
3649
+ margin: 0px 0px 20px 0px;
3650
+ padding: 0px;
3651
+ }
3652
+ .eael-filter-gallery-control {
3653
+ display: flex;
3654
+ flex-flow: 1 1 auto;
3655
+ align-items: center;
3656
+ justify-content: center;
3657
+ flex-flow: row wrap;
3658
+ padding: 0px;
3659
+ margin: 0px;
3660
+ }
3661
+ .eael-filter-gallery-control ul li {
3662
+ list-style: none;
3663
+ font-size: 24px;
3664
+ display: inline-block;
3665
+ }
3666
+ .eael-filter-gallery-control ul li a.control {
3667
+ font-family: 'Montserrat', sans-serif;
3668
+ font-size: 16px;
3669
+ font-weight: 600;
3670
+ padding: 10px 25px;
3671
+ margin: 10px 6px;
3672
+ }
3673
+ .eael-filter-gallery-container {
3674
+ text-align: justify;
3675
+ font-size: 0.1px;
3676
+ }
3677
+ .eael-filter-gallery-container:after {
3678
+ content: '';
3679
+ display: inline-block;
3680
+ width: 100%;
3681
+ }
3682
+ .eael-filter-gallery-container .item {
3683
+ display: inline-block;
3684
+ vertical-align: top;
3685
+ }
3686
+ .eael-filter-gallery-container .item {
3687
+ background-size: cover;
3688
+ background-position: center;
3689
+ background-repeat: no-repeat;
3690
+ margin-bottom: 1rem;
3691
+ position: relative;
3692
+ overflow: hidden;
3693
+ }
3694
+ .eael-filter-gallery-container:not(.eael-cards) .item:before {
3695
+ content: '';
3696
+ display: inline-block;
3697
+ padding-top: 56.25%;
3698
+ }
3699
+ .eael-filter-gallery-container .item .caption {
3700
+ position: absolute;
3701
+ display: flex;
3702
+ flex-flow: 1 1 100%;
3703
+ align-items: center;
3704
+ justify-content: center;
3705
+ z-index: 10;
3706
+ top: 0px;
3707
+ left: 0px;
3708
+ right: 0px;
3709
+ bottom: 0px;
3710
+ transition: transform .4s;
3711
+ }
3712
+ .eael-filter-gallery-container.eael-cards .item .caption {
3713
+ display: none;
3714
+ }
3715
+ .eael-filter-gallery-container.eael-cards .item .item-img .caption {
3716
+ position: absolute;
3717
+ display: flex;
3718
+ flex-flow: 1 1 100%;
3719
+ align-items: center;
3720
+ justify-content: center;
3721
+ z-index: 10;
3722
+ top: 0px;
3723
+ left: 0px;
3724
+ right: 0px;
3725
+ bottom: 0px;
3726
+ transition: transform .4s;
3727
+ }
3728
+ /* Caption Animation */
3729
+ .eael-filter-gallery-container .item .caption.eael-zoom-in,
3730
+ .eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-zoom-in {
3731
+ transform: scale(0);
3732
+ }
3733
+ .eael-filter-gallery-container .item:hover .caption.eael-zoom-in,
3734
+ .eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-zoom-in {
3735
+ transform: scale(1);
3736
+ }
3737
+ .eael-filter-gallery-container .item .caption.eael-slide-left,
3738
+ .eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-left {
3739
+ transform: translateX(-100%);
3740
+ }
3741
+ .eael-filter-gallery-container .item:hover .caption.eael-slide-left,
3742
+ .eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-left {
3743
+ transform: translateX(0%);
3744
+ }
3745
+ .eael-filter-gallery-container .item .caption.eael-slide-right,
3746
+ .eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-right {
3747
+ transform: translateX(100%);
3748
+ }
3749
+ .eael-filter-gallery-container .item:hover .caption.eael-slide-right,
3750
+ .eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-right {
3751
+ transform: translateX(0%);
3752
+ }
3753
+ .eael-filter-gallery-container .item .caption.eael-slide-top,
3754
+ .eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-top {
3755
+ transform: translateY(-100%);
3756
+ }
3757
+ .eael-filter-gallery-container .item:hover .caption.eael-slide-top,
3758
+ .eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-top {
3759
+ transform: translateY(0%);
3760
+ }
3761
+ .eael-filter-gallery-container .item .caption.eael-slide-bottom,
3762
+ .eael-filter-gallery-container.eael-cards .item .item-img .caption.eael-slide-bottom {
3763
+ transform: translateY(100%);
3764
+ }
3765
+ .eael-filter-gallery-container .item:hover .caption.eael-slide-bottom,
3766
+ .eael-filter-gallery-container.eael-cards .item:hover .item-img .caption.eael-slide-bottom {
3767
+ transform: translateY(0%);
3768
+ }
3769
+ /*-----------------------------------------------------------*/
3770
+ .eael-filter-gallery-container .item .caption a {
3771
+ display: inline-block;
3772
+ width: 50px;
3773
+ height: 50px;
3774
+ text-align: center;
3775
+ line-height: 50px;
3776
+ border-radius: 50%;
3777
+ margin: 0 5px;
3778
+ font-size: 20px;
3779
+ cursor: pointer;
3780
+ transition: .3s;
3781
+ }
3782
+ .eael-filter-gallery-container .item .caption a:nth-child(1),
3783
+ .eael-container .item .caption a:nth-child(2) {
3784
+ transition: .6s;
3785
+ opacity: 0;
3786
+ }
3787
+ .eael-filter-gallery-container .item .caption a:nth-child(1) {
3788
+ transform: translateY(-100%);
3789
+ }
3790
+ .eael-filter-gallery-container .item .caption a:nth-child(2) {
3791
+ transform: translateY(100%);
3792
+ }
3793
+ .eael-filter-gallery-container .item .caption:hover a:nth-child(1),
3794
+ .eael-filter-gallery-container .item .caption:hover a:nth-child(2) {
3795
+ transform: translateY(0%);
3796
+ opacity: 1;
3797
+ }
3798
+ .eael-filter-gallery-container .item .caption .eael-popup-link {
3799
+ outline: 0;
3800
+ }
3801
+
3802
+ /* Filter Gallery Card Style */
3803
+ .eael-filter-gallery-container.eael-cards .item:before {
3804
+ padding-top: 0px;
3805
+ }
3806
+ .eael-filter-gallery-container.eael-cards .item-img {
3807
+ position: relative;
3808
+ background-repeat: no-repeat;
3809
+ background-position: center;
3810
+ background-size: cover;
3811
+ height: 220px;
3812
+ z-index: 0;
3813
+ overflow: hidden;
3814
+ }
3815
+ .eael-filter-gallery-container.eael-cards .item-content {
3816
+ padding: 15px;
3817
+ }
3818
+ .eael-filter-gallery-container.eael-cards .item-content .title,
3819
+ .eael-filter-gallery-container.eael-cards .item-content .title a {
3820
+ font-size: 18px;
3821
+ line-height: 1;
3822
+ margin-bottom: 0px;
3823
+ transition: .3s;
3824
+ }
3825
+ .eael-filter-gallery-container.eael-cards .item-content p {
3826
+ font-size: 14px;
3827
+ line-height: 26px;
3828
+ }
3829
+
3830
+ /* Grid Breakpoints */
3831
+
3832
+ /* Mobile */
3833
+ @media screen and (max-width: 480px) {
3834
+ .eael-filter-gallery-container .item {
3835
+ width: 100%;
3836
+ }
3837
+
3838
+ }
3839
+
3840
+ /* Landscape Mobile */
3841
+ @media only screen and (min-width: 481px) and (max-width: 767px) {
3842
+ .eael-filter-gallery-container .item {
3843
+ width: calc(100%/2 - (((2 - 1) * 1rem) / 2));
3844
+ }
3845
+ }
3846
+
3847
+ /* iPad */
3848
+ @media only screen and (min-width: 768px) and (max-width:1024px) {
3849
+ .eael-filter-gallery-container .item {
3850
+ width: calc(100%/3 - (((3 - 1) * 1rem) / 3));
3851
+ }
3852
+ }
3853
+ @media screen and (min-width: 1025px) {
3854
+ .eael-col-1 .item {
3855
+ width: 100%;
3856
+ }
3857
+ .eael-col-2 .item {
3858
+ width: calc(( 100% / 2 ) - 10px );
3859
+ }
3860
+ .eael-col-3 .item {
3861
+ width: calc(( 100% / 3 ) - 10px );
3862
+ }
3863
+ .eael-col-4 .item {
3864
+ width: calc(( 100% / 4 ) - 10px );
3865
+ }
3866
+ .eael-col-5 .item {
3867
+ width: calc(( 100% / 5 ) - 10px );
3868
+ }
3869
+ .eael-tiles .item {
3870
+ margin-bottom: 0px;
3871
+ }
3872
+ .eael-tiles.eael-col-1 .item {
3873
+ width: 100%;
3874
+ }
3875
+ .eael-tiles.eael-col-2 .item {
3876
+ width: 50%;
3877
+ float: left;
3878
+ }
3879
+ .eael-tiles.eael-col-3 .item {
3880
+ width: 33.33%;
3881
+ float: left;
3882
+ }
3883
+ .eael-tiles.eael-col-4 .item {
3884
+ width: 25%;
3885
+ float: left;
3886
+ }
3887
+ .eael-tiles.eael-col-5 .item {
3888
+ width: 20%;
3889
+ float: left;
3890
+ }
3891
+ }
3892
+
3893
+ /* Editor Specific Style */
3894
+ .eael-fg-content-align-left .eael-cards .item .item-content {
3895
+ text-align: left;
3896
+ }
3897
+ .eael-fg-content-align-center .eael-cards .item .item-content {
3898
+ text-align: center;
3899
+ }
3900
+ .eael-fg-content-align-right .eael-cards .item .item-content {
3901
+ text-align: right;
3902
+ }
3903
+
3904
+ /* Magnific Gallery Fix */
3905
+ .dialog-widget {
3906
+ display: none !important;
3907
+ }
assets/img/flexia-preview.jpg ADDED
Binary file
assets/js/jquery.magnific-popup.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! Magnific Popup - v1.1.0 - 2016-02-20
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2016 Dmitry Semenov; */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});
assets/js/mixitup.min.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**!
2
+ * MixItUp v3.2.2
3
+ * A high-performance, dependency-free library for animated filtering, sorting and more
4
+ * Build 20a1a182-d7bd-4c8f-807d-b888e325e44d
5
+ *
6
+ * @copyright Copyright 2014-2017 KunkaLabs Limited.
7
+ * @author KunkaLabs Limited.
8
+ * @link https://www.kunkalabs.com/mixitup/
9
+ *
10
+ * @license Commercial use requires a commercial license.
11
+ * https://www.kunkalabs.com/mixitup/licenses/
12
+ *
13
+ * Non-commercial use permitted under same terms as CC BY-NC 3.0 license.
14
+ * http://creativecommons.org/licenses/by-nc/3.0/
15
+ */
16
+ !function(t){"use strict";var e=null,n=null;!function(){var e=["webkit","moz","o","ms"],n=t.document.createElement("div"),a=-1;for(a=0;a<e.length&&!t.requestAnimationFrame;a++)t.requestAnimationFrame=t[e[a]+"RequestAnimationFrame"];"undefined"==typeof n.nextElementSibling&&Object.defineProperty(t.Element.prototype,"nextElementSibling",{get:function(){for(var t=this.nextSibling;t;){if(1===t.nodeType)return t;t=t.nextSibling}return null}}),function(t){t.matches=t.matches||t.machesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector||function(t){return Array.prototype.indexOf.call(this.parentElement.querySelectorAll(t),this)>-1}}(t.Element.prototype),Object.keys||(Object.keys=function(){var t=Object.prototype.hasOwnProperty,e=!1,n=[],a=-1;return e=!{toString:null}.propertyIsEnumerable("toString"),n=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],a=n.length,function(i){var o=[],r="",s=-1;if("object"!=typeof i&&("function"!=typeof i||null===i))throw new TypeError("Object.keys called on non-object");for(r in i)t.call(i,r)&&o.push(r);if(e)for(s=0;s<a;s++)t.call(i,n[s])&&o.push(n[s]);return o}}()),Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),"function"!=typeof Object.create&&(Object.create=function(t){var e=function(){};return function(n,a){if(n!==Object(n)&&null!==n)throw TypeError("Argument must be an object, or null");e.prototype=n||{};var i=new e;return e.prototype=null,a!==t&&Object.defineProperties(i,a),null===n&&(i.__proto__=null),i}}()),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}),Array.prototype.indexOf||(Array.prototype.indexOf=function(t){var e,n,a,i;if(null===this)throw new TypeError;if(a=Object(this),i=a.length>>>0,0===i)return-1;if(e=0,arguments.length>1&&(e=Number(arguments[1]),e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e)))),e>=i)return-1;for(n=e>=0?e:Math.max(i-Math.abs(e),0);n<i;n++)if(n in a&&a[n]===t)return n;return-1}),Function.prototype.bind||(Function.prototype.bind=function(t){var e,n,a,i;if("function"!=typeof this)throw new TypeError;return e=Array.prototype.slice.call(arguments,1),n=this,a=function(){},i=function(){return n.apply(this instanceof a?this:t,e.concat(Array.prototype.slice.call(arguments)))},this.prototype&&(a.prototype=this.prototype),i.prototype=new a,i}),t.Element.prototype.dispatchEvent||(t.Element.prototype.dispatchEvent=function(t){try{return this.fireEvent("on"+t.type,t)}catch(e){}})}(),e=function(a,i,o){var r=null,s=!1,l=null,c=null,u=null,f=null,h=[],d="",m=[],g=-1;if(u=o||t.document,(s=arguments[3])&&(s="boolean"==typeof s),"string"==typeof a)m=u.querySelectorAll(a);else if(a&&"object"==typeof a&&n.isElement(a,u))m=[a];else{if(!a||"object"!=typeof a||!a.length)throw new Error(e.messages.errorFactoryInvalidContainer());m=a}if(m.length<1)throw new Error(e.messages.errorFactoryContainerNotFound());for(g=0;(r=m[g])&&(!(g>0)||s);g++)r.id?d=r.id:(d="MixItUp"+n.randomHex(),r.id=d),e.instances[d]instanceof e.Mixer?(l=e.instances[d],(!i||i&&i.debug&&i.debug.showWarnings!==!1)&&console.warn(e.messages.warningFactoryPreexistingInstance())):(l=new e.Mixer,l.attach(r,u,d,i),e.instances[d]=l),c=new e.Facade(l),i&&i.debug&&i.debug.enable?h.push(l):h.push(c);return f=s?new e.Collection(h):h[0]},e.use=function(t){e.Base.prototype.callActions.call(e,"beforeUse",arguments),"function"==typeof t&&"mixitup-extension"===t.TYPE?"undefined"==typeof e.extensions[t.NAME]&&(t(e),e.extensions[t.NAME]=t):t.fn&&t.fn.jquery&&(e.libraries.$=t),e.Base.prototype.callActions.call(e,"afterUse",arguments)},e.instances={},e.extensions={},e.libraries={},n={hasClass:function(t,e){return!!t.className.match(new RegExp("(\\s|^)"+e+"(\\s|$)"))},addClass:function(t,e){this.hasClass(t,e)||(t.className+=t.className?" "+e:e)},removeClass:function(t,e){if(this.hasClass(t,e)){var n=new RegExp("(\\s|^)"+e+"(\\s|$)");t.className=t.className.replace(n," ").trim()}},extend:function(t,e,n,a){var i=[],o="",r=-1;n=n||!1,a=a||!1;try{if(Array.isArray(e))for(r=0;r<e.length;r++)i.push(r);else e&&(i=Object.keys(e));for(r=0;r<i.length;r++)o=i[r],!n||"object"!=typeof e[o]||this.isElement(e[o])?t[o]=e[o]:Array.isArray(e[o])?(t[o]||(t[o]=[]),this.extend(t[o],e[o],n,a)):(t[o]||(t[o]={}),this.extend(t[o],e[o],n,a))}catch(s){if(!a)throw s;this.handleExtendError(s,t)}return t},handleExtendError:function(t,n){var a=/property "?(\w*)"?[,:] object/i,i=null,o="",r="",s="",l="",c="",u=-1,f=-1;if(t instanceof TypeError&&(i=a.exec(t.message))){o=i[1];for(c in n){for(f=0;f<o.length&&o.charAt(f)===c.charAt(f);)f++;f>u&&(u=f,l=c)}throw u>1&&(s=e.messages.errorConfigInvalidPropertySuggestion({probableMatch:l})),r=e.messages.errorConfigInvalidProperty({erroneous:o,suggestion:s}),new TypeError(r)}throw t},template:function(t){for(var e=/\${([\w]*)}/g,n={},a=null;a=e.exec(t);)n[a[1]]=new RegExp("\\${"+a[1]+"}","g");return function(e){var a="",i=t;e=e||{};for(a in n)i=i.replace(n[a],"undefined"!=typeof e[a]?e[a]:"");return i}},on:function(e,n,a,i){e&&(e.addEventListener?e.addEventListener(n,a,i):e.attachEvent&&(e["e"+n+a]=a,e[n+a]=function(){e["e"+n+a](t.event)},e.attachEvent("on"+n,e[n+a])))},off:function(t,e,n){t&&(t.removeEventListener?t.removeEventListener(e,n,!1):t.detachEvent&&(t.detachEvent("on"+e,t[e+n]),t[e+n]=null))},getCustomEvent:function(e,n,a){var i=null;return a=a||t.document,"function"==typeof t.CustomEvent?i=new t.CustomEvent(e,{detail:n,bubbles:!0,cancelable:!0}):"function"==typeof a.createEvent?(i=a.createEvent("CustomEvent"),i.initCustomEvent(e,!0,!0,n)):(i=a.createEventObject(),i.type=e,i.returnValue=!1,i.cancelBubble=!1,i.detail=n),i},getOriginalEvent:function(t){return t.touches&&t.touches.length?t.touches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t},index:function(t,e){for(var n=0;null!==(t=t.previousElementSibling);)e&&!t.matches(e)||++n;return n},camelCase:function(t){return t.toLowerCase().replace(/([_-][a-z])/g,function(t){return t.toUpperCase().replace(/[_-]/,"")})},pascalCase:function(t){return(t=this.camelCase(t)).charAt(0).toUpperCase()+t.slice(1)},dashCase:function(t){return t.replace(/([A-Z])/g,"-$1").replace(/^-/,"").toLowerCase()},isElement:function(e,n){return n=n||t.document,!!(t.HTMLElement&&e instanceof t.HTMLElement)||(!!(n.defaultView&&n.defaultView.HTMLElement&&e instanceof n.defaultView.HTMLElement)||null!==e&&1===e.nodeType&&"string"==typeof e.nodeName)},createElement:function(e,n){var a=null,i=null;for(n=n||t.document,a=n.createDocumentFragment(),i=n.createElement("div"),i.innerHTML=e.trim();i.firstChild;)a.appendChild(i.firstChild);return a},removeWhitespace:function(t){for(var e;t&&"#text"===t.nodeName;)e=t,t=t.previousSibling,e.parentElement&&e.parentElement.removeChild(e)},isEqualArray:function(t,e){var n=t.length;if(n!==e.length)return!1;for(;n--;)if(t[n]!==e[n])return!1;return!0},deepEquals:function(t,e){var n;if("object"==typeof t&&t&&"object"==typeof e&&e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(n in t)if(!e.hasOwnProperty(n)||!this.deepEquals(t[n],e[n]))return!1}else if(t!==e)return!1;return!0},arrayShuffle:function(t){for(var e=t.slice(),n=e.length,a=n,i=-1,o=[];a--;)i=~~(Math.random()*n),o=e[a],e[a]=e[i],e[i]=o;return e},arrayFromList:function(t){var e,n;try{return Array.prototype.slice.call(t)}catch(a){for(e=[],n=0;n<t.length;n++)e.push(t[n]);return e}},debounce:function(t,e,n){var a;return function(){var i=this,o=arguments,r=n&&!a,s=null;s=function(){a=null,n||t.apply(i,o)},clearTimeout(a),a=setTimeout(s,e),r&&t.apply(i,o)}},position:function(t){for(var e=0,n=0,a=t;t;)e-=t.scrollLeft,n-=t.scrollTop,t===a&&(e+=t.offsetLeft,n+=t.offsetTop,a=t.offsetParent),t=t.parentElement;return{x:e,y:n}},getHypotenuse:function(t,e){var n=t.x-e.x,a=t.y-e.y;return n=n<0?n*-1:n,a=a<0?a*-1:a,Math.sqrt(Math.pow(n,2)+Math.pow(a,2))},getIntersectionRatio:function(t,e){var n=t.width*t.height,a=-1,i=-1,o=-1,r=-1;return a=Math.max(0,Math.min(t.left+t.width,e.left+e.width)-Math.max(t.left,e.left)),i=Math.max(0,Math.min(t.top+t.height,e.top+e.height)-Math.max(t.top,e.top)),o=i*a,r=o/n},closestParent:function(e,n,a,i){var o=e.parentNode;if(i=i||t.document,a&&e.matches(n))return e;for(;o&&o!=i.body;){if(o.matches&&o.matches(n))return o;if(!o.parentNode)return null;o=o.parentNode}return null},children:function(e,n,a){var i=[],o="";return a=a||t.doc,e&&(e.id||(o="Temp"+this.randomHexKey(),e.id=o),i=a.querySelectorAll("#"+e.id+" > "+n),o&&e.removeAttribute("id")),i},clean:function(t){var e=[],n=-1;for(n=0;n<t.length;n++)""!==t[n]&&e.push(t[n]);return e},defer:function(n){var a=null,i=null,o=null;return i=new this.Deferred,e.features.has.promises?i.promise=new Promise(function(t,e){i.resolve=t,i.reject=e}):(o=t.jQuery||n.$)&&"function"==typeof o.Deferred?(a=o.Deferred(),i.promise=a.promise(),i.resolve=a.resolve,i.reject=a.reject):t.console&&console.warn(e.messages.warningNoPromiseImplementation()),i},all:function(n,a){var i=null;return e.features.has.promises?Promise.all(n):(i=t.jQuery||a.$)&&"function"==typeof i.when?i.when.apply(i,n).done(function(){return arguments}):(t.console&&console.warn(e.messages.warningNoPromiseImplementation()),[])},getPrefix:function(t,e,a){var i=-1,o="";if(n.dashCase(e)in t.style)return"";for(i=0;o=a[i];i++)if(o+e in t.style)return o.toLowerCase();return"unsupported"},randomHex:function(){return("00000"+(16777216*Math.random()<<0).toString(16)).substr(-6).toUpperCase()},getDocumentState:function(e){return e="object"==typeof e.body?e:t.document,{scrollTop:t.pageYOffset,scrollLeft:t.pageXOffset,docHeight:e.documentElement.scrollHeight,docWidth:e.documentElement.scrollWidth,viewportHeight:e.documentElement.clientHeight,viewportWidth:e.documentElement.clientWidth}},bind:function(t,e){return function(){return e.apply(t,arguments)}},isVisible:function(e){var n=null;return!!e.offsetParent||(n=t.getComputedStyle(e),"fixed"===n.position&&"hidden"!==n.visibility&&"0"!==n.opacity)},seal:function(t){"function"==typeof Object.seal&&Object.seal(t)},freeze:function(t){"function"==typeof Object.freeze&&Object.freeze(t)},compareVersions:function(t,e){var n=t.split("."),a=e.split("."),i=-1,o=-1,r=-1;for(r=0;r<n.length;r++){if(i=parseInt(n[r].replace(/[^\d.]/g,"")),o=parseInt(a[r].replace(/[^\d.]/g,"")||0),o<i)return!1;if(o>i)return!0}return!0},Deferred:function(){this.promise=null,this.resolve=null,this.reject=null,this.id=n.randomHex()},isEmptyObject:function(t){var e="";if("function"==typeof Object.keys)return 0===Object.keys(t).length;for(e in t)if(t.hasOwnProperty(e))return!1;return!0},getClassname:function(t,e,n){var a="";return a+=t.block,a.length&&(a+=t.delineatorElement),a+=t["element"+this.pascalCase(e)],n?(a.length&&(a+=t.delineatorModifier),a+=n):a},getProperty:function(t,e){var n=e.split("."),a=null,i="",o=0;if(!e)return t;for(a=function(t){return t?t[i]:null};o<n.length;)i=n[o],t=a(t),o++;return"undefined"!=typeof t?t:null}},e.h=n,e.Base=function(){},e.Base.prototype={constructor:e.Base,callActions:function(t,e){var a=this,i=a.constructor.actions[t],o="";if(i&&!n.isEmptyObject(i))for(o in i)i[o].apply(a,e)},callFilters:function(t,e,a){var i=this,o=i.constructor.filters[t],r=e,s="";if(!o||n.isEmptyObject(o))return r;a=a||[];for(s in o)a=n.arrayFromList(a),a.unshift(r),r=o[s].apply(i,a);return r}},e.BaseStatic=function(){this.actions={},this.filters={},this.extend=function(t){n.extend(this.prototype,t)},this.registerAction=function(t,e,n){(this.actions[t]=this.actions[t]||{})[e]=n},this.registerFilter=function(t,e,n){(this.filters[t]=this.filters[t]||{})[e]=n}},e.Features=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.boxSizingPrefix="",this.transformPrefix="",this.transitionPrefix="",this.boxSizingPrefix="",this.transformProp="",this.transformRule="",this.transitionProp="",this.perspectiveProp="",this.perspectiveOriginProp="",this.has=new e.Has,this.canary=null,this.BOX_SIZING_PROP="boxSizing",this.TRANSITION_PROP="transition",this.TRANSFORM_PROP="transform",this.PERSPECTIVE_PROP="perspective",this.PERSPECTIVE_ORIGIN_PROP="perspectiveOrigin",this.VENDORS=["Webkit","moz","O","ms"],this.TWEENABLE=["opacity","width","height","marginRight","marginBottom","x","y","scale","translateX","translateY","translateZ","rotateX","rotateY","rotateZ"],this.callActions("afterConstruct")},e.BaseStatic.call(e.Features),e.Features.prototype=Object.create(e.Base.prototype),n.extend(e.Features.prototype,{constructor:e.Features,init:function(){var t=this;t.callActions("beforeInit",arguments),t.canary=document.createElement("div"),t.setPrefixes(),t.runTests(),t.callActions("beforeInit",arguments)},runTests:function(){var e=this;e.callActions("beforeRunTests",arguments),e.has.promises="function"==typeof t.Promise,e.has.transitions="unsupported"!==e.transitionPrefix,e.callActions("afterRunTests",arguments),n.freeze(e.has)},setPrefixes:function(){var t=this;t.callActions("beforeSetPrefixes",arguments),t.transitionPrefix=n.getPrefix(t.canary,"Transition",t.VENDORS),t.transformPrefix=n.getPrefix(t.canary,"Transform",t.VENDORS),t.boxSizingPrefix=n.getPrefix(t.canary,"BoxSizing",t.VENDORS),t.boxSizingProp=t.boxSizingPrefix?t.boxSizingPrefix+n.pascalCase(t.BOX_SIZING_PROP):t.BOX_SIZING_PROP,t.transitionProp=t.transitionPrefix?t.transitionPrefix+n.pascalCase(t.TRANSITION_PROP):t.TRANSITION_PROP,t.transformProp=t.transformPrefix?t.transformPrefix+n.pascalCase(t.TRANSFORM_PROP):t.TRANSFORM_PROP,t.transformRule=t.transformPrefix?"-"+t.transformPrefix+"-"+t.TRANSFORM_PROP:t.TRANSFORM_PROP,t.perspectiveProp=t.transformPrefix?t.transformPrefix+n.pascalCase(t.PERSPECTIVE_PROP):t.PERSPECTIVE_PROP,t.perspectiveOriginProp=t.transformPrefix?t.transformPrefix+n.pascalCase(t.PERSPECTIVE_ORIGIN_PROP):t.PERSPECTIVE_ORIGIN_PROP,t.callActions("afterSetPrefixes",arguments)}}),e.Has=function(){this.transitions=!1,this.promises=!1,n.seal(this)},e.features=new e.Features,e.features.init(),e.ConfigAnimation=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.enable=!0,this.effects="fade scale",this.effectsIn="",this.effectsOut="",this.duration=600,this.easing="ease",this.applyPerspective=!0,this.perspectiveDistance="3000px",this.perspectiveOrigin="50% 50%",this.queue=!0,this.queueLimit=3,this.animateResizeContainer=!0,this.animateResizeTargets=!1,this.staggerSequence=null,this.reverseOut=!1,this.nudge=!0,this.clampHeight=!0,this.clampWidth=!0,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigAnimation),e.ConfigAnimation.prototype=Object.create(e.Base.prototype),e.ConfigAnimation.prototype.constructor=e.ConfigAnimation,e.ConfigBehavior=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.liveSort=!1,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigBehavior),e.ConfigBehavior.prototype=Object.create(e.Base.prototype),e.ConfigBehavior.prototype.constructor=e.ConfigBehavior,e.ConfigCallbacks=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.onMixStart=null,this.onMixBusy=null,this.onMixEnd=null,this.onMixFail=null,this.onMixClick=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigCallbacks),e.ConfigCallbacks.prototype=Object.create(e.Base.prototype),e.ConfigCallbacks.prototype.constructor=e.ConfigCallbacks,e.ConfigControls=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.enable=!0,this.live=!1,this.scope="global",this.toggleLogic="or",this.toggleDefault="all",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigControls),e.ConfigControls.prototype=Object.create(e.Base.prototype),e.ConfigControls.prototype.constructor=e.ConfigControls,e.ConfigClassNames=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.block="mixitup",this.elementContainer="container",this.elementFilter="control",this.elementSort="control",this.elementMultimix="control",this.elementToggle="control",this.modifierActive="active",this.modifierDisabled="disabled",this.modifierFailed="failed",this.delineatorElement="-",this.delineatorModifier="-",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigClassNames),e.ConfigClassNames.prototype=Object.create(e.Base.prototype),e.ConfigClassNames.prototype.constructor=e.ConfigClassNames,e.ConfigData=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.uidKey="",this.dirtyCheck=!1,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigData),e.ConfigData.prototype=Object.create(e.Base.prototype),e.ConfigData.prototype.constructor=e.ConfigData,e.ConfigDebug=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.enable=!1,this.showWarnings=!0,this.fauxAsync=!1,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigDebug),e.ConfigDebug.prototype=Object.create(e.Base.prototype),e.ConfigDebug.prototype.constructor=e.ConfigDebug,e.ConfigLayout=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.allowNestedTargets=!0,this.containerClassName="",this.siblingBefore=null,this.siblingAfter=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigLayout),e.ConfigLayout.prototype=Object.create(e.Base.prototype),e.ConfigLayout.prototype.constructor=e.ConfigLayout,e.ConfigLoad=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.filter="all",this.sort="default:asc",this.dataset=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigLoad),e.ConfigLoad.prototype=Object.create(e.Base.prototype),e.ConfigLoad.prototype.constructor=e.ConfigLoad,e.ConfigSelectors=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.target=".mix",this.control="",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigSelectors),e.ConfigSelectors.prototype=Object.create(e.Base.prototype),e.ConfigSelectors.prototype.constructor=e.ConfigSelectors,e.ConfigRender=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.target=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigRender),e.ConfigRender.prototype=Object.create(e.Base.prototype),e.ConfigRender.prototype.constructor=e.ConfigRender,e.ConfigTemplates=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.ConfigTemplates),e.ConfigTemplates.prototype=Object.create(e.Base.prototype),e.ConfigTemplates.prototype.constructor=e.ConfigTemplates,e.Config=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.animation=new e.ConfigAnimation,this.behavior=new e.ConfigBehavior,this.callbacks=new e.ConfigCallbacks,this.controls=new e.ConfigControls,this.classNames=new e.ConfigClassNames,this.data=new e.ConfigData,this.debug=new e.ConfigDebug,this.layout=new e.ConfigLayout,this.load=new e.ConfigLoad,this.selectors=new e.ConfigSelectors,this.render=new e.ConfigRender,this.templates=new e.ConfigTemplates,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.Config),e.Config.prototype=Object.create(e.Base.prototype),e.Config.prototype.constructor=e.Config,e.MixerDom=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.document=null,this.body=null,this.container=null,this.parent=null,this.targets=[],this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.MixerDom),e.MixerDom.prototype=Object.create(e.Base.prototype),e.MixerDom.prototype.constructor=e.MixerDom,e.UiClassNames=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.base="",this.active="",this.disabled="",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.UiClassNames),e.UiClassNames.prototype=Object.create(e.Base.prototype),e.UiClassNames.prototype.constructor=e.UiClassNames,e.CommandDataset=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.dataset=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.CommandDataset),e.CommandDataset.prototype=Object.create(e.Base.prototype),e.CommandDataset.prototype.constructor=e.CommandDataset,e.CommandMultimix=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.filter=null,this.sort=null,this.insert=null,this.remove=null,this.changeLayout=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.CommandMultimix),e.CommandMultimix.prototype=Object.create(e.Base.prototype),e.CommandMultimix.prototype.constructor=e.CommandMultimix,e.CommandFilter=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.selector="",this.collection=null,this.action="show",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.CommandFilter),e.CommandFilter.prototype=Object.create(e.Base.prototype),e.CommandFilter.prototype.constructor=e.CommandFilter,e.CommandSort=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.sortString="",this.attribute="",this.order="asc",this.collection=null,this.next=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.CommandSort),e.CommandSort.prototype=Object.create(e.Base.prototype),e.CommandSort.prototype.constructor=e.CommandSort,e.CommandInsert=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.index=0,this.collection=[],this.position="before",this.sibling=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.CommandInsert),e.CommandInsert.prototype=Object.create(e.Base.prototype),e.CommandInsert.prototype.constructor=e.CommandInsert,e.CommandRemove=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.targets=[],this.collection=[],this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.CommandRemove),e.CommandRemove.prototype=Object.create(e.Base.prototype),e.CommandRemove.prototype.constructor=e.CommandRemove,e.CommandChangeLayout=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.containerClassName="",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.CommandChangeLayout),e.CommandChangeLayout.prototype=Object.create(e.Base.prototype),e.CommandChangeLayout.prototype.constructor=e.CommandChangeLayout,e.ControlDefinition=function(t,a,i,o){e.Base.call(this),this.callActions("beforeConstruct"),this.type=t,this.selector=a,this.live=i||!1,this.parent=o||"",this.callActions("afterConstruct"),n.freeze(this),n.seal(this)},e.BaseStatic.call(e.ControlDefinition),e.ControlDefinition.prototype=Object.create(e.Base.prototype),e.ControlDefinition.prototype.constructor=e.ControlDefinition,e.controlDefinitions=[],e.controlDefinitions.push(new e.ControlDefinition("multimix","[data-filter][data-sort]")),e.controlDefinitions.push(new e.ControlDefinition("filter","[data-filter]")),e.controlDefinitions.push(new e.ControlDefinition("sort","[data-sort]")),e.controlDefinitions.push(new e.ControlDefinition("toggle","[data-toggle]")),e.Control=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.el=null,this.selector="",this.bound=[],this.pending=-1,this.type="",this.status="inactive",this.filter="",this.sort="",this.canDisable=!1,this.handler=null,this.classNames=new e.UiClassNames,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.Control),e.Control.prototype=Object.create(e.Base.prototype),n.extend(e.Control.prototype,{constructor:e.Control,init:function(t,n,a){var i=this;if(this.callActions("beforeInit",arguments),i.el=t,i.type=n,i.selector=a,i.selector)i.status="live";else switch(i.canDisable="boolean"==typeof i.el.disable,i.type){case"filter":i.filter=i.el.getAttribute("data-filter");break;case"toggle":i.filter=i.el.getAttribute("data-toggle");break;case"sort":i.sort=i.el.getAttribute("data-sort");break;case"multimix":i.filter=i.el.getAttribute("data-filter"),i.sort=i.el.getAttribute("data-sort")}i.bindClick(),e.controls.push(i),this.callActions("afterInit",arguments)},isBound:function(t){var e=this,n=!1;return this.callActions("beforeIsBound",arguments),n=e.bound.indexOf(t)>-1,e.callFilters("afterIsBound",n,arguments)},addBinding:function(t){var e=this;this.callActions("beforeAddBinding",arguments),e.isBound()||e.bound.push(t),this.callActions("afterAddBinding",arguments)},removeBinding:function(t){var n=this,a=-1;this.callActions("beforeRemoveBinding",arguments),(a=n.bound.indexOf(t))>-1&&n.bound.splice(a,1),n.bound.length<1&&(n.unbindClick(),a=e.controls.indexOf(n),e.controls.splice(a,1),"active"===n.status&&n.renderStatus(n.el,"inactive")),this.callActions("afterRemoveBinding",arguments)},bindClick:function(){var t=this;this.callActions("beforeBindClick",arguments),t.handler=function(e){t.handleClick(e)},n.on(t.el,"click",t.handler),this.callActions("afterBindClick",arguments)},unbindClick:function(){var t=this;this.callActions("beforeUnbindClick",arguments),n.off(t.el,"click",t.handler),t.handler=null,this.callActions("afterUnbindClick",arguments)},handleClick:function(t){var a=this,i=null,o=null,r=!1,s=void 0,l={},c=null,u=[],f=-1;if(this.callActions("beforeHandleClick",arguments),this.pending=0,o=a.bound[0],i=a.selector?n.closestParent(t.target,o.config.selectors.control+a.selector,!0,o.dom.document):a.el,!i)return void a.callActions("afterHandleClick",arguments);switch(a.type){case"filter":l.filter=a.filter||i.getAttribute("data-filter");break;case"sort":l.sort=a.sort||i.getAttribute("data-sort");break;case"multimix":l.filter=a.filter||i.getAttribute("data-filter"),l.sort=a.sort||i.getAttribute("data-sort");break;case"toggle":l.filter=a.filter||i.getAttribute("data-toggle"),r="live"===a.status?n.hasClass(i,a.classNames.active):"active"===a.status}for(f=0;f<a.bound.length;f++)c=new e.CommandMultimix,n.extend(c,l),u.push(c);for(u=a.callFilters("commandsHandleClick",u,arguments),a.pending=a.bound.length,f=0;o=a.bound[f];f++)l=u[f],l&&(o.lastClicked||(o.lastClicked=i),e.events.fire("mixClick",o.dom.container,{state:o.state,instance:o,originalEvent:t,control:o.lastClicked},o.dom.document),"function"==typeof o.config.callbacks.onMixClick&&(s=o.config.callbacks.onMixClick.call(o.lastClicked,o.state,t,o),s===!1)||("toggle"===a.type?r?o.toggleOff(l.filter):o.toggleOn(l.filter):o.multimix(l)));this.callActions("afterHandleClick",arguments)},update:function(t,n){var a=this,i=new e.CommandMultimix;a.callActions("beforeUpdate",arguments),a.pending--,a.pending=Math.max(0,a.pending),a.pending>0||("live"===a.status?a.updateLive(t,n):(i.sort=a.sort,i.filter=a.filter,a.callFilters("actionsUpdate",i,arguments),a.parseStatusChange(a.el,t,i,n)),a.callActions("afterUpdate",arguments))},updateLive:function(t,n){var a=this,i=null,o=null,r=null,s=-1;if(a.callActions("beforeUpdateLive",arguments),a.el){for(i=a.el.querySelectorAll(a.selector),s=0;r=i[s];s++){switch(o=new e.CommandMultimix,a.type){case"filter":o.filter=r.getAttribute("data-filter");break;case"sort":o.sort=r.getAttribute("data-sort");break;case"multimix":o.filter=r.getAttribute("data-filter"),o.sort=r.getAttribute("data-sort");break;case"toggle":o.filter=r.getAttribute("data-toggle")}o=a.callFilters("actionsUpdateLive",o,arguments),a.parseStatusChange(r,t,o,n)}a.callActions("afterUpdateLive",arguments)}},parseStatusChange:function(t,e,n,a){var i=this,o="",r="",s=-1;switch(i.callActions("beforeParseStatusChange",arguments),i.type){case"filter":e.filter===n.filter?i.renderStatus(t,"active"):i.renderStatus(t,"inactive");break;case"multimix":e.sort===n.sort&&e.filter===n.filter?i.renderStatus(t,"active"):i.renderStatus(t,"inactive");break;case"sort":e.sort.match(/:asc/g)&&(o=e.sort.replace(/:asc/g,"")),e.sort===n.sort||o===n.sort?i.renderStatus(t,"active"):i.renderStatus(t,"inactive");break;case"toggle":for(a.length<1&&i.renderStatus(t,"inactive"),e.filter===n.filter&&i.renderStatus(t,"active"),s=0;s<a.length;s++){if(r=a[s],r===n.filter){i.renderStatus(t,"active");break}i.renderStatus(t,"inactive")}}i.callActions("afterParseStatusChange",arguments)},renderStatus:function(t,e){var a=this;switch(a.callActions("beforeRenderStatus",arguments),e){case"active":n.addClass(t,a.classNames.active),n.removeClass(t,a.classNames.disabled),a.canDisable&&(a.el.disabled=!1);break;case"inactive":n.removeClass(t,a.classNames.active),n.removeClass(t,a.classNames.disabled),a.canDisable&&(a.el.disabled=!1);break;case"disabled":a.canDisable&&(a.el.disabled=!0),n.addClass(t,a.classNames.disabled),n.removeClass(t,a.classNames.active)}"live"!==a.status&&(a.status=e),a.callActions("afterRenderStatus",arguments)}}),e.controls=[],e.StyleData=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.x=0,this.y=0,this.top=0,this.right=0,this.bottom=0,this.left=0,this.width=0,this.height=0,this.marginRight=0,this.marginBottom=0,this.opacity=0,this.scale=new e.TransformData,this.translateX=new e.TransformData,this.translateY=new e.TransformData,this.translateZ=new e.TransformData,this.rotateX=new e.TransformData,this.rotateY=new e.TransformData,this.rotateZ=new e.TransformData,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.StyleData),e.StyleData.prototype=Object.create(e.Base.prototype),e.StyleData.prototype.constructor=e.StyleData,e.TransformData=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.value=0,this.unit="",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.TransformData),e.TransformData.prototype=Object.create(e.Base.prototype),e.TransformData.prototype.constructor=e.TransformData,e.TransformDefaults=function(){e.StyleData.apply(this),this.callActions("beforeConstruct"),this.scale.value=.01,this.scale.unit="",this.translateX.value=20,this.translateX.unit="px",this.translateY.value=20,this.translateY.unit="px",this.translateZ.value=20,this.translateZ.unit="px",this.rotateX.value=90,this.rotateX.unit="deg",this.rotateY.value=90,this.rotateY.unit="deg",this.rotateX.value=90,this.rotateX.unit="deg",this.rotateZ.value=180,this.rotateZ.unit="deg",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.TransformDefaults),e.TransformDefaults.prototype=Object.create(e.StyleData.prototype),e.TransformDefaults.prototype.constructor=e.TransformDefaults,e.transformDefaults=new e.TransformDefaults,e.EventDetail=function(){this.state=null,this.futureState=null,this.instance=null,this.originalEvent=null},e.Events=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.mixStart=null,this.mixBusy=null,this.mixEnd=null,this.mixFail=null,this.mixClick=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.Events),e.Events.prototype=Object.create(e.Base.prototype),e.Events.prototype.constructor=e.Events,e.Events.prototype.fire=function(t,a,i,o){var r=this,s=null,l=new e.EventDetail;if(r.callActions("beforeFire",arguments),"undefined"==typeof r[t])throw new Error('Event type "'+t+'" not found.');l.state=new e.State,n.extend(l.state,i.state),i.futureState&&(l.futureState=new e.State,n.extend(l.futureState,i.futureState)),l.instance=i.instance,i.originalEvent&&(l.originalEvent=i.originalEvent),s=n.getCustomEvent(t,l,o),r.callFilters("eventFire",s,arguments),a.dispatchEvent(s)},e.events=new e.Events,e.QueueItem=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.args=[],this.instruction=null,this.triggerElement=null,this.deferred=null,this.isToggling=!1,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.QueueItem),e.QueueItem.prototype=Object.create(e.Base.prototype),e.QueueItem.prototype.constructor=e.QueueItem,e.Mixer=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.config=new e.Config,this.id="",this.isBusy=!1,this.isToggling=!1,this.incPadding=!0,this.controls=[],this.targets=[],this.origOrder=[],this.cache={},this.toggleArray=[],this.targetsMoved=0,this.targetsImmovable=0,this.targetsBound=0,this.targetsDone=0,this.staggerDuration=0,this.effectsIn=null,this.effectsOut=null,this.transformIn=[],this.transformOut=[],this.queue=[],this.state=null,this.lastOperation=null,
17
+ this.lastClicked=null,this.userCallback=null,this.userDeferred=null,this.dom=new e.MixerDom,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.Mixer),e.Mixer.prototype=Object.create(e.Base.prototype),n.extend(e.Mixer.prototype,{constructor:e.Mixer,attach:function(a,i,o,r){var s=this,l=null,c=-1;for(s.callActions("beforeAttach",arguments),s.id=o,r&&n.extend(s.config,r,!0,!0),s.sanitizeConfig(),s.cacheDom(a,i),s.config.layout.containerClassName&&n.addClass(s.dom.container,s.config.layout.containerClassName),e.features.has.transitions||(s.config.animation.enable=!1),"undefined"==typeof t.console&&(s.config.debug.showWarnings=!1),s.config.data.uidKey&&(s.config.controls.enable=!1),s.indexTargets(),s.state=s.getInitialState(),c=0;l=s.lastOperation.toHide[c];c++)l.hide();s.config.controls.enable&&(s.initControls(),s.buildToggleArray(null,s.state),s.updateControls({filter:s.state.activeFilter,sort:s.state.activeSort})),s.parseEffects(),s.callActions("afterAttach",arguments)},sanitizeConfig:function(){var t=this;t.callActions("beforeSanitizeConfig",arguments),t.config.controls.scope=t.config.controls.scope.toLowerCase().trim(),t.config.controls.toggleLogic=t.config.controls.toggleLogic.toLowerCase().trim(),t.config.controls.toggleDefault=t.config.controls.toggleDefault.toLowerCase().trim(),t.config.animation.effects=t.config.animation.effects.trim(),t.callActions("afterSanitizeConfig",arguments)},getInitialState:function(){var t=this,n=new e.State,a=new e.Operation;if(t.callActions("beforeGetInitialState",arguments),n.activeContainerClassName=t.config.layout.containerClassName,t.config.load.dataset){if(!t.config.data.uidKey||"string"!=typeof t.config.data.uidKey)throw new TypeError(e.messages.errorConfigDataUidKeyNotSet());a.startDataset=a.newDataset=n.activeDataset=t.config.load.dataset.slice(),a.startContainerClassName=a.newContainerClassName=n.activeContainerClassName,a.show=t.targets.slice(),n=t.callFilters("stateGetInitialState",n,arguments)}else n.activeFilter=t.parseFilterArgs([t.config.load.filter]).command,n.activeSort=t.parseSortArgs([t.config.load.sort]).command,n.totalTargets=t.targets.length,n=t.callFilters("stateGetInitialState",n,arguments),n.activeSort.collection||n.activeSort.attribute||"random"===n.activeSort.order||"desc"===n.activeSort.order?(a.newSort=n.activeSort,t.sortOperation(a),t.printSort(!1,a),t.targets=a.newOrder):a.startOrder=a.newOrder=t.targets,a.startFilter=a.newFilter=n.activeFilter,a.startSort=a.newSort=n.activeSort,a.startContainerClassName=a.newContainerClassName=n.activeContainerClassName,"all"===a.newFilter.selector?a.newFilter.selector=t.config.selectors.target:"none"===a.newFilter.selector&&(a.newFilter.selector="");return a=t.callFilters("operationGetInitialState",a,[n]),t.lastOperation=a,a.newFilter&&t.filterOperation(a),n=t.buildState(a)},cacheDom:function(t,e){var n=this;n.callActions("beforeCacheDom",arguments),n.dom.document=e,n.dom.body=n.dom.document.querySelector("body"),n.dom.container=t,n.dom.parent=t,n.callActions("afterCacheDom",arguments)},indexTargets:function(){var t=this,a=null,i=null,o=null,r=-1;if(t.callActions("beforeIndexTargets",arguments),t.dom.targets=t.config.layout.allowNestedTargets?t.dom.container.querySelectorAll(t.config.selectors.target):n.children(t.dom.container,t.config.selectors.target,t.dom.document),t.dom.targets=n.arrayFromList(t.dom.targets),t.targets=[],(o=t.config.load.dataset)&&o.length!==t.dom.targets.length)throw new Error(e.messages.errorDatasetPrerenderedMismatch());if(t.dom.targets.length){for(r=0;i=t.dom.targets[r];r++)a=new e.Target,a.init(i,t,o?o[r]:void 0),a.isInDom=!0,t.targets.push(a);t.dom.parent=t.dom.targets[0].parentElement===t.dom.container?t.dom.container:t.dom.targets[0].parentElement}t.origOrder=t.targets,t.callActions("afterIndexTargets",arguments)},initControls:function(){var t=this,n="",a=null,i=null,o=null,r=null,s=null,l=-1,c=-1;switch(t.callActions("beforeInitControls",arguments),t.config.controls.scope){case"local":o=t.dom.container;break;case"global":o=t.dom.document;break;default:throw new Error(e.messages.errorConfigInvalidControlsScope())}for(l=0;n=e.controlDefinitions[l];l++)if(t.config.controls.live||n.live){if(n.parent){if(r=t.dom[n.parent],!r||r.length<0)continue;"number"!=typeof r.length&&(r=[r])}else r=[o];for(c=0;i=r[c];c++)s=t.getControl(i,n.type,n.selector),t.controls.push(s)}else for(a=o.querySelectorAll(t.config.selectors.control+n.selector),c=0;i=a[c];c++)s=t.getControl(i,n.type,""),s&&t.controls.push(s);t.callActions("afterInitControls",arguments)},getControl:function(t,a,i){var o=this,r=null,s=-1;if(o.callActions("beforeGetControl",arguments),!i)for(s=0;r=e.controls[s];s++){if(r.el===t&&r.isBound(o))return o.callFilters("controlGetControl",null,arguments);if(r.el===t&&r.type===a&&r.selector===i)return r.addBinding(o),o.callFilters("controlGetControl",r,arguments)}return r=new e.Control,r.init(t,a,i),r.classNames.base=n.getClassname(o.config.classNames,a),r.classNames.active=n.getClassname(o.config.classNames,a,o.config.classNames.modifierActive),r.classNames.disabled=n.getClassname(o.config.classNames,a,o.config.classNames.modifierDisabled),r.addBinding(o),o.callFilters("controlGetControl",r,arguments)},getToggleSelector:function(){var t=this,e="or"===t.config.controls.toggleLogic?", ":"",a="";return t.callActions("beforeGetToggleSelector",arguments),t.toggleArray=n.clean(t.toggleArray),a=t.toggleArray.join(e),""===a&&(a=t.config.controls.toggleDefault),t.callFilters("selectorGetToggleSelector",a,arguments)},buildToggleArray:function(t,e){var a=this,i="";if(a.callActions("beforeBuildToggleArray",arguments),t&&t.filter)i=t.filter.selector.replace(/\s/g,"");else{if(!e)return;i=e.activeFilter.selector.replace(/\s/g,"")}i!==a.config.selectors.target&&"all"!==i||(i=""),"or"===a.config.controls.toggleLogic?a.toggleArray=i.split(","):a.toggleArray=a.splitCompoundSelector(i),a.toggleArray=n.clean(a.toggleArray),a.callActions("afterBuildToggleArray",arguments)},splitCompoundSelector:function(t){var e=t.split(/([\.\[])/g),n=[],a="",i=-1;for(""===e[0]&&e.shift(),i=0;i<e.length;i++)i%2===0&&(a=""),a+=e[i],i%2!==0&&n.push(a);return n},updateControls:function(t){var a=this,i=null,o=new e.CommandMultimix,r=-1;for(a.callActions("beforeUpdateControls",arguments),t.filter?o.filter=t.filter.selector:o.filter=a.state.activeFilter.selector,t.sort?o.sort=a.buildSortString(t.sort):o.sort=a.buildSortString(a.state.activeSort),o.filter===a.config.selectors.target&&(o.filter="all"),""===o.filter&&(o.filter="none"),n.freeze(o),r=0;i=a.controls[r];r++)i.update(o,a.toggleArray);a.callActions("afterUpdateControls",arguments)},buildSortString:function(t){var e=this,n="";return n+=t.sortString,t.next&&(n+=" "+e.buildSortString(t.next)),n},insertTargets:function(t,a){var i=this,o=null,r=-1,s=null,l=null,c=null,u=-1;if(i.callActions("beforeInsertTargets",arguments),"undefined"==typeof t.index&&(t.index=0),o=i.getNextSibling(t.index,t.sibling,t.position),s=i.dom.document.createDocumentFragment(),r=o?n.index(o,i.config.selectors.target):i.targets.length,t.collection){for(u=0;c=t.collection[u];u++){if(i.dom.targets.indexOf(c)>-1)throw new Error(e.messages.errorInsertPreexistingElement());c.style.display="none",s.appendChild(c),s.appendChild(i.dom.document.createTextNode(" ")),n.isElement(c,i.dom.document)&&c.matches(i.config.selectors.target)&&(l=new e.Target,l.init(c,i),l.isInDom=!0,i.targets.splice(r,0,l),r++)}i.dom.parent.insertBefore(s,o)}a.startOrder=i.origOrder=i.targets,i.callActions("afterInsertTargets",arguments)},getNextSibling:function(t,e,n){var a=this,i=null;return t=Math.max(t,0),e&&"before"===n?i=e:e&&"after"===n?i=e.nextElementSibling||null:a.targets.length>0&&"undefined"!=typeof t?i=t<a.targets.length||!a.targets.length?a.targets[t].dom.el:a.targets[a.targets.length-1].dom.el.nextElementSibling:0===a.targets.length&&a.dom.parent.children.length>0&&(a.config.layout.siblingAfter?i=a.config.layout.siblingAfter:a.config.layout.siblingBefore?i=a.config.layout.siblingBefore.nextElementSibling:a.dom.parent.children[0]),a.callFilters("elementGetNextSibling",i,arguments)},filterOperation:function(t){var e=this,n=!1,a=-1,i="",o=null,r=-1;for(e.callActions("beforeFilterOperation",arguments),i=t.newFilter.action,r=0;o=t.newOrder[r];r++)n=t.newFilter.collection?t.newFilter.collection.indexOf(o.dom.el)>-1:""!==t.newFilter.selector&&o.dom.el.matches(t.newFilter.selector),e.evaluateHideShow(n,o,i,t);if(t.toRemove.length)for(r=0;o=t.show[r];r++)t.toRemove.indexOf(o)>-1&&(t.show.splice(r,1),(a=t.toShow.indexOf(o))>-1&&t.toShow.splice(a,1),t.toHide.push(o),t.hide.push(o),r--);t.matching=t.show.slice(),0===t.show.length&&""!==t.newFilter.selector&&0!==e.targets.length&&(t.hasFailed=!0),e.callActions("afterFilterOperation",arguments)},evaluateHideShow:function(t,e,n,a){var i=this;i.callActions("beforeEvaluateHideShow",arguments),t===!0&&"show"===n||t===!1&&"hide"===n?(a.show.push(e),!e.isShown&&a.toShow.push(e)):(a.hide.push(e),e.isShown&&a.toHide.push(e)),i.callActions("afterEvaluateHideShow",arguments)},sortOperation:function(t){var e=this;e.callActions("beforeSortOperation",arguments),t.startOrder=e.targets,t.newSort.collection?t.newOrder=t.newSort.collection:"random"===t.newSort.order?t.newOrder=n.arrayShuffle(t.startOrder):""===t.newSort.attribute?(t.newOrder=e.origOrder.slice(),"desc"===t.newSort.order&&t.newOrder.reverse()):(t.newOrder=t.startOrder.slice(),t.newOrder.sort(function(n,a){return e.compare(n,a,t.newSort)})),n.isEqualArray(t.newOrder,t.startOrder)&&(t.willSort=!1),e.callActions("afterSortOperation",arguments)},compare:function(t,e,n){var a=this,i=n.order,o=a.getAttributeValue(t,n.attribute),r=a.getAttributeValue(e,n.attribute);return isNaN(1*o)||isNaN(1*r)?(o=o.toLowerCase(),r=r.toLowerCase()):(o=1*o,r=1*r),o<r?"asc"===i?-1:1:o>r?"asc"===i?1:-1:o===r&&n.next?a.compare(t,e,n.next):0},getAttributeValue:function(t,n){var a=this,i="";return i=t.dom.el.getAttribute("data-"+n),null===i&&a.config.debug.showWarnings&&console.warn(e.messages.warningInconsistentSortingAttributes({attribute:"data-"+n})),a.callFilters("valueGetAttributeValue",i||0,arguments)},printSort:function(e,a){var i=this,o=e?a.newOrder:a.startOrder,r=e?a.startOrder:a.newOrder,s=o.length?o[o.length-1].dom.el.nextElementSibling:null,l=t.document.createDocumentFragment(),c=null,u=null,f=null,h=-1;for(i.callActions("beforePrintSort",arguments),h=0;u=o[h];h++)f=u.dom.el,"absolute"!==f.style.position&&(n.removeWhitespace(f.previousSibling),f.parentElement.removeChild(f));for(c=s?s.previousSibling:i.dom.parent.lastChild,c&&"#text"===c.nodeName&&n.removeWhitespace(c),h=0;u=r[h];h++)f=u.dom.el,n.isElement(l.lastChild)&&l.appendChild(t.document.createTextNode(" ")),l.appendChild(f);i.dom.parent.firstChild&&i.dom.parent.firstChild!==s&&l.insertBefore(t.document.createTextNode(" "),l.childNodes[0]),s?(l.appendChild(t.document.createTextNode(" ")),i.dom.parent.insertBefore(l,s)):i.dom.parent.appendChild(l),i.callActions("afterPrintSort",arguments)},parseSortString:function(t,a){var i=this,o=t.split(" "),r=a,s=[],l=-1;for(l=0;l<o.length;l++){switch(s=o[l].split(":"),r.sortString=o[l],r.attribute=n.dashCase(s[0]),r.order=s[1]||"asc",r.attribute){case"default":r.attribute="";break;case"random":r.attribute="",r.order="random"}if(!r.attribute||"random"===r.order)break;l<o.length-1&&(r.next=new e.CommandSort,n.freeze(r),r=r.next)}return i.callFilters("commandsParseSort",a,arguments)},parseEffects:function(){var t=this,n="",a=t.config.animation.effectsIn||t.config.animation.effects,i=t.config.animation.effectsOut||t.config.animation.effects;t.callActions("beforeParseEffects",arguments),t.effectsIn=new e.StyleData,t.effectsOut=new e.StyleData,t.transformIn=[],t.transformOut=[],t.effectsIn.opacity=t.effectsOut.opacity=1,t.parseEffect("fade",a,t.effectsIn,t.transformIn),t.parseEffect("fade",i,t.effectsOut,t.transformOut,!0);for(n in e.transformDefaults)e.transformDefaults[n]instanceof e.TransformData&&(t.parseEffect(n,a,t.effectsIn,t.transformIn),t.parseEffect(n,i,t.effectsOut,t.transformOut,!0));t.parseEffect("stagger",a,t.effectsIn,t.transformIn),t.parseEffect("stagger",i,t.effectsOut,t.transformOut,!0),t.callActions("afterParseEffects",arguments)},parseEffect:function(t,n,a,i,o){var r=this,s=/\(([^)]+)\)/,l=-1,c="",u=[],f="",h=["%","px","em","rem","vh","vw","deg"],d="",m=-1;if(r.callActions("beforeParseEffect",arguments),"string"!=typeof n)throw new TypeError(e.messages.errorConfigInvalidAnimationEffects());if(n.indexOf(t)<0)return void("stagger"===t&&(r.staggerDuration=0));switch(l=n.indexOf(t+"("),l>-1&&(c=n.substring(l),u=s.exec(c),f=u[1]),t){case"fade":a.opacity=f?parseFloat(f):0;break;case"stagger":r.staggerDuration=f?parseFloat(f):100;break;default:if(o&&r.config.animation.reverseOut&&"scale"!==t?a[t].value=(f?parseFloat(f):e.transformDefaults[t].value)*-1:a[t].value=f?parseFloat(f):e.transformDefaults[t].value,f){for(m=0;d=h[m];m++)if(f.indexOf(d)>-1){a[t].unit=d;break}}else a[t].unit=e.transformDefaults[t].unit;i.push(t+"("+a[t].value+a[t].unit+")")}r.callActions("afterParseEffect",arguments)},buildState:function(t){var n=this,a=new e.State,i=null,o=-1;for(n.callActions("beforeBuildState",arguments),o=0;i=n.targets[o];o++)(!t.toRemove.length||t.toRemove.indexOf(i)<0)&&a.targets.push(i.dom.el);for(o=0;i=t.matching[o];o++)a.matching.push(i.dom.el);for(o=0;i=t.show[o];o++)a.show.push(i.dom.el);for(o=0;i=t.hide[o];o++)(!t.toRemove.length||t.toRemove.indexOf(i)<0)&&a.hide.push(i.dom.el);return a.id=n.id,a.container=n.dom.container,a.activeFilter=t.newFilter,a.activeSort=t.newSort,a.activeDataset=t.newDataset,a.activeContainerClassName=t.newContainerClassName,a.hasFailed=t.hasFailed,a.totalTargets=n.targets.length,a.totalShow=t.show.length,a.totalHide=t.hide.length,a.totalMatching=t.matching.length,a.triggerElement=t.triggerElement,n.callFilters("stateBuildState",a,arguments)},goMix:function(a,i){var o=this,r=null;return o.callActions("beforeGoMix",arguments),o.config.animation.duration&&o.config.animation.effects&&n.isVisible(o.dom.container)||(a=!1),i.toShow.length||i.toHide.length||i.willSort||i.willChangeLayout||(a=!1),i.startState.show.length||i.show.length||(a=!1),e.events.fire("mixStart",o.dom.container,{state:i.startState,futureState:i.newState,instance:o},o.dom.document),"function"==typeof o.config.callbacks.onMixStart&&o.config.callbacks.onMixStart.call(o.dom.container,i.startState,i.newState,o),n.removeClass(o.dom.container,n.getClassname(o.config.classNames,"container",o.config.classNames.modifierFailed)),r=o.userDeferred?o.userDeferred:o.userDeferred=n.defer(e.libraries),o.isBusy=!0,a&&e.features.has.transitions?(t.pageYOffset!==i.docState.scrollTop&&t.scrollTo(i.docState.scrollLeft,i.docState.scrollTop),o.config.animation.applyPerspective&&(o.dom.parent.style[e.features.perspectiveProp]=o.config.animation.perspectiveDistance,o.dom.parent.style[e.features.perspectiveOriginProp]=o.config.animation.perspectiveOrigin),o.config.animation.animateResizeContainer&&i.startHeight!==i.newHeight&&i.viewportDeltaY!==i.startHeight-i.newHeight&&(o.dom.parent.style.height=i.startHeight+"px"),o.config.animation.animateResizeContainer&&i.startWidth!==i.newWidth&&i.viewportDeltaX!==i.startWidth-i.newWidth&&(o.dom.parent.style.width=i.startWidth+"px"),i.startHeight===i.newHeight&&(o.dom.parent.style.height=i.startHeight+"px"),i.startWidth===i.newWidth&&(o.dom.parent.style.width=i.startWidth+"px"),i.startHeight===i.newHeight&&i.startWidth===i.newWidth&&(o.dom.parent.style.overflow="hidden"),requestAnimationFrame(function(){o.moveTargets(i)}),o.callFilters("promiseGoMix",r.promise,arguments)):(o.config.debug.fauxAsync?setTimeout(function(){o.cleanUp(i)},o.config.animation.duration):o.cleanUp(i),o.callFilters("promiseGoMix",r.promise,arguments))},getStartMixData:function(n){var a=this,i=t.getComputedStyle(a.dom.parent),o=a.dom.parent.getBoundingClientRect(),r=null,s={},l=-1,c=i[e.features.boxSizingProp];for(a.incPadding="border-box"===c,a.callActions("beforeGetStartMixData",arguments),l=0;r=n.show[l];l++)s=r.getPosData(),n.showPosData[l]={startPosData:s};for(l=0;r=n.toHide[l];l++)s=r.getPosData(),n.toHidePosData[l]={startPosData:s};n.startX=o.left,n.startY=o.top,n.startHeight=a.incPadding?o.height:o.height-parseFloat(i.paddingTop)-parseFloat(i.paddingBottom)-parseFloat(i.borderTop)-parseFloat(i.borderBottom),n.startWidth=a.incPadding?o.width:o.width-parseFloat(i.paddingLeft)-parseFloat(i.paddingRight)-parseFloat(i.borderLeft)-parseFloat(i.borderRight),a.callActions("afterGetStartMixData",arguments)},setInter:function(t){var e=this,a=null,i=-1;for(e.callActions("beforeSetInter",arguments),e.config.animation.clampHeight&&(e.dom.parent.style.height=t.startHeight+"px",e.dom.parent.style.overflow="hidden"),e.config.animation.clampWidth&&(e.dom.parent.style.width=t.startWidth+"px",e.dom.parent.style.overflow="hidden"),i=0;a=t.toShow[i];i++)a.show();t.willChangeLayout&&(n.removeClass(e.dom.container,t.startContainerClassName),n.addClass(e.dom.container,t.newContainerClassName)),e.callActions("afterSetInter",arguments)},getInterMixData:function(t){var e=this,n=null,a=-1;for(e.callActions("beforeGetInterMixData",arguments),a=0;n=t.show[a];a++)t.showPosData[a].interPosData=n.getPosData();for(a=0;n=t.toHide[a];a++)t.toHidePosData[a].interPosData=n.getPosData();e.callActions("afterGetInterMixData",arguments)},setFinal:function(t){var e=this,n=null,a=-1;for(e.callActions("beforeSetFinal",arguments),t.willSort&&e.printSort(!1,t),a=0;n=t.toHide[a];a++)n.hide();e.callActions("afterSetFinal",arguments)},getFinalMixData:function(e){var a=this,i=null,o=null,r=null,s=-1;for(a.callActions("beforeGetFinalMixData",arguments),s=0;r=e.show[s];s++)e.showPosData[s].finalPosData=r.getPosData();for(s=0;r=e.toHide[s];s++)e.toHidePosData[s].finalPosData=r.getPosData();for((a.config.animation.clampHeight||a.config.animation.clampWidth)&&(a.dom.parent.style.height=a.dom.parent.style.width=a.dom.parent.style.overflow=""),a.incPadding||(i=t.getComputedStyle(a.dom.parent)),o=a.dom.parent.getBoundingClientRect(),e.newX=o.left,e.newY=o.top,e.newHeight=a.incPadding?o.height:o.height-parseFloat(i.paddingTop)-parseFloat(i.paddingBottom)-parseFloat(i.borderTop)-parseFloat(i.borderBottom),e.newWidth=a.incPadding?o.width:o.width-parseFloat(i.paddingLeft)-parseFloat(i.paddingRight)-parseFloat(i.borderLeft)-parseFloat(i.borderRight),e.viewportDeltaX=e.docState.viewportWidth-this.dom.document.documentElement.clientWidth,e.viewportDeltaY=e.docState.viewportHeight-this.dom.document.documentElement.clientHeight,e.willSort&&a.printSort(!0,e),s=0;r=e.toShow[s];s++)r.hide();for(s=0;r=e.toHide[s];s++)r.show();e.willChangeLayout&&(n.removeClass(a.dom.container,e.newContainerClassName),n.addClass(a.dom.container,a.config.layout.containerClassName)),a.callActions("afterGetFinalMixData",arguments)},getTweenData:function(t){var n=this,a=null,i=null,o=Object.getOwnPropertyNames(n.effectsIn),r="",s=null,l=-1,c=-1,u=-1,f=-1;for(n.callActions("beforeGetTweenData",arguments),u=0;a=t.show[u];u++)for(i=t.showPosData[u],i.posIn=new e.StyleData,i.posOut=new e.StyleData,i.tweenData=new e.StyleData,a.isShown?(i.posIn.x=i.startPosData.x-i.interPosData.x,i.posIn.y=i.startPosData.y-i.interPosData.y):i.posIn.x=i.posIn.y=0,i.posOut.x=i.finalPosData.x-i.interPosData.x,i.posOut.y=i.finalPosData.y-i.interPosData.y,i.posIn.opacity=a.isShown?1:n.effectsIn.opacity,i.posOut.opacity=1,i.tweenData.opacity=i.posOut.opacity-i.posIn.opacity,a.isShown||n.config.animation.nudge||(i.posIn.x=i.posOut.x,i.posIn.y=i.posOut.y),i.tweenData.x=i.posOut.x-i.posIn.x,i.tweenData.y=i.posOut.y-i.posIn.y,n.config.animation.animateResizeTargets&&(i.posIn.width=i.startPosData.width,i.posIn.height=i.startPosData.height,l=(i.startPosData.width||i.finalPosData.width)-i.interPosData.width,i.posIn.marginRight=i.startPosData.marginRight-l,c=(i.startPosData.height||i.finalPosData.height)-i.interPosData.height,i.posIn.marginBottom=i.startPosData.marginBottom-c,i.posOut.width=i.finalPosData.width,i.posOut.height=i.finalPosData.height,l=(i.finalPosData.width||i.startPosData.width)-i.interPosData.width,i.posOut.marginRight=i.finalPosData.marginRight-l,c=(i.finalPosData.height||i.startPosData.height)-i.interPosData.height,i.posOut.marginBottom=i.finalPosData.marginBottom-c,i.tweenData.width=i.posOut.width-i.posIn.width,i.tweenData.height=i.posOut.height-i.posIn.height,i.tweenData.marginRight=i.posOut.marginRight-i.posIn.marginRight,i.tweenData.marginBottom=i.posOut.marginBottom-i.posIn.marginBottom),f=0;r=o[f];f++)s=n.effectsIn[r],s instanceof e.TransformData&&s.value&&(i.posIn[r].value=s.value,i.posOut[r].value=0,i.tweenData[r].value=i.posOut[r].value-i.posIn[r].value,i.posIn[r].unit=i.posOut[r].unit=i.tweenData[r].unit=s.unit);for(u=0;a=t.toHide[u];u++)for(i=t.toHidePosData[u],i.posIn=new e.StyleData,i.posOut=new e.StyleData,i.tweenData=new e.StyleData,i.posIn.x=a.isShown?i.startPosData.x-i.interPosData.x:0,i.posIn.y=a.isShown?i.startPosData.y-i.interPosData.y:0,i.posOut.x=n.config.animation.nudge?0:i.posIn.x,i.posOut.y=n.config.animation.nudge?0:i.posIn.y,i.tweenData.x=i.posOut.x-i.posIn.x,i.tweenData.y=i.posOut.y-i.posIn.y,n.config.animation.animateResizeTargets&&(i.posIn.width=i.startPosData.width,i.posIn.height=i.startPosData.height,l=i.startPosData.width-i.interPosData.width,i.posIn.marginRight=i.startPosData.marginRight-l,c=i.startPosData.height-i.interPosData.height,i.posIn.marginBottom=i.startPosData.marginBottom-c),i.posIn.opacity=1,i.posOut.opacity=n.effectsOut.opacity,i.tweenData.opacity=i.posOut.opacity-i.posIn.opacity,f=0;r=o[f];f++)s=n.effectsOut[r],s instanceof e.TransformData&&s.value&&(i.posIn[r].value=0,i.posOut[r].value=s.value,i.tweenData[r].value=i.posOut[r].value-i.posIn[r].value,i.posIn[r].unit=i.posOut[r].unit=i.tweenData[r].unit=s.unit);n.callActions("afterGetTweenData",arguments)},moveTargets:function(t){var a=this,i=null,o=null,r=null,s="",l=!1,c=-1,u=-1,f=a.checkProgress.bind(a);for(a.callActions("beforeMoveTargets",arguments),u=0;i=t.show[u];u++)o=new e.IMoveData,r=t.showPosData[u],s=i.isShown?"none":"show",l=a.willTransition(s,t.hasEffect,r.posIn,r.posOut),l&&c++,i.show(),o.posIn=r.posIn,o.posOut=r.posOut,o.statusChange=s,o.staggerIndex=c,o.operation=t,o.callback=l?f:null,i.move(o);for(u=0;i=t.toHide[u];u++)r=t.toHidePosData[u],o=new e.IMoveData,s="hide",l=a.willTransition(s,r.posIn,r.posOut),o.posIn=r.posIn,o.posOut=r.posOut,o.statusChange=s,o.staggerIndex=u,o.operation=t,o.callback=l?f:null,i.move(o);a.config.animation.animateResizeContainer&&(a.dom.parent.style[e.features.transitionProp]="height "+a.config.animation.duration+"ms ease, width "+a.config.animation.duration+"ms ease ",requestAnimationFrame(function(){t.startHeight!==t.newHeight&&t.viewportDeltaY!==t.startHeight-t.newHeight&&(a.dom.parent.style.height=t.newHeight+"px"),t.startWidth!==t.newWidth&&t.viewportDeltaX!==t.startWidth-t.newWidth&&(a.dom.parent.style.width=t.newWidth+"px")})),t.willChangeLayout&&(n.removeClass(a.dom.container,a.config.layout.ContainerClassName),n.addClass(a.dom.container,t.newContainerClassName)),a.callActions("afterMoveTargets",arguments)},hasEffect:function(){var t=this,e=["scale","translateX","translateY","translateZ","rotateX","rotateY","rotateZ"],n="",a=null,i=!1,o=-1,r=-1;if(1!==t.effectsIn.opacity)return t.callFilters("resultHasEffect",!0,arguments);for(r=0;n=e[r];r++)if(a=t.effectsIn[n],o="undefined"!==a.value?a.value:a,0!==o){i=!0;break}return t.callFilters("resultHasEffect",i,arguments)},willTransition:function(t,e,a,i){var o=this,r=!1;return r=!!n.isVisible(o.dom.container)&&(!!("none"!==t&&e||a.x!==i.x||a.y!==i.y)||!!o.config.animation.animateResizeTargets&&(a.width!==i.width||a.height!==i.height||a.marginRight!==i.marginRight||a.marginTop!==i.marginTop)),o.callFilters("resultWillTransition",r,arguments)},checkProgress:function(t){var e=this;e.targetsDone++,e.targetsBound===e.targetsDone&&e.cleanUp(t)},cleanUp:function(t){var a=this,i=null,o=null,r=null,s=null,l=-1;for(a.callActions("beforeCleanUp",arguments),a.targetsMoved=a.targetsImmovable=a.targetsBound=a.targetsDone=0,l=0;i=t.show[l];l++)i.cleanUp(),i.show();for(l=0;i=t.toHide[l];l++)i.cleanUp(),i.hide();if(t.willSort&&a.printSort(!1,t),a.dom.parent.style[e.features.transitionProp]=a.dom.parent.style.height=a.dom.parent.style.width=a.dom.parent.style.overflow=a.dom.parent.style[e.features.perspectiveProp]=a.dom.parent.style[e.features.perspectiveOriginProp]="",t.willChangeLayout&&(n.removeClass(a.dom.container,t.startContainerClassName),n.addClass(a.dom.container,t.newContainerClassName)),t.toRemove.length){for(l=0;i=a.targets[l];l++)t.toRemove.indexOf(i)>-1&&((o=i.dom.el.previousSibling)&&"#text"===o.nodeName&&(r=i.dom.el.nextSibling)&&"#text"===r.nodeName&&n.removeWhitespace(o),t.willSort||a.dom.parent.removeChild(i.dom.el),a.targets.splice(l,1),i.isInDom=!1,l--);a.origOrder=a.targets}t.willSort&&(a.targets=t.newOrder),a.state=t.newState,a.lastOperation=t,a.dom.targets=a.state.targets,e.events.fire("mixEnd",a.dom.container,{state:a.state,instance:a},a.dom.document),"function"==typeof a.config.callbacks.onMixEnd&&a.config.callbacks.onMixEnd.call(a.dom.container,a.state,a),t.hasFailed&&(e.events.fire("mixFail",a.dom.container,{state:a.state,instance:a},a.dom.document),"function"==typeof a.config.callbacks.onMixFail&&a.config.callbacks.onMixFail.call(a.dom.container,a.state,a),n.addClass(a.dom.container,n.getClassname(a.config.classNames,"container",a.config.classNames.modifierFailed))),"function"==typeof a.userCallback&&a.userCallback.call(a.dom.container,a.state,a),"function"==typeof a.userDeferred.resolve&&a.userDeferred.resolve(a.state),a.userCallback=null,a.userDeferred=null,a.lastClicked=null,a.isToggling=!1,a.isBusy=!1,a.queue.length&&(a.callActions("beforeReadQueueCleanUp",arguments),s=a.queue.shift(),a.userDeferred=s.deferred,a.isToggling=s.isToggling,a.lastClicked=s.triggerElement,s.instruction.command instanceof e.CommandMultimix?a.multimix.apply(a,s.args):a.dataset.apply(a,s.args)),a.callActions("afterCleanUp",arguments)},parseMultimixArgs:function(t){var a=this,i=new e.UserInstruction,o=null,r=-1;for(i.animate=a.config.animation.enable,i.command=new e.CommandMultimix,r=0;r<t.length;r++)o=t[r],null!==o&&("object"==typeof o?n.extend(i.command,o):"boolean"==typeof o?i.animate=o:"function"==typeof o&&(i.callback=o));return!i.command.insert||i.command.insert instanceof e.CommandInsert||(i.command.insert=a.parseInsertArgs([i.command.insert]).command),!i.command.remove||i.command.remove instanceof e.CommandRemove||(i.command.remove=a.parseRemoveArgs([i.command.remove]).command),!i.command.filter||i.command.filter instanceof e.CommandFilter||(i.command.filter=a.parseFilterArgs([i.command.filter]).command),!i.command.sort||i.command.sort instanceof e.CommandSort||(i.command.sort=a.parseSortArgs([i.command.sort]).command),!i.command.changeLayout||i.command.changeLayout instanceof e.CommandChangeLayout||(i.command.changeLayout=a.parseChangeLayoutArgs([i.command.changeLayout]).command),i=a.callFilters("instructionParseMultimixArgs",i,arguments),n.freeze(i),i},parseFilterArgs:function(t){var a=this,i=new e.UserInstruction,o=null,r=-1;for(i.animate=a.config.animation.enable,i.command=new e.CommandFilter,r=0;r<t.length;r++)o=t[r],"string"==typeof o?i.command.selector=o:null===o?i.command.collection=[]:"object"==typeof o&&n.isElement(o,a.dom.document)?i.command.collection=[o]:"object"==typeof o&&"undefined"!=typeof o.length?i.command.collection=n.arrayFromList(o):"object"==typeof o?n.extend(i.command,o):"boolean"==typeof o?i.animate=o:"function"==typeof o&&(i.callback=o);if(i.command.selector&&i.command.collection)throw new Error(e.messages.errorFilterInvalidArguments());return i=a.callFilters("instructionParseFilterArgs",i,arguments),n.freeze(i),i},parseSortArgs:function(t){var a=this,i=new e.UserInstruction,o=null,r="",s=-1;for(i.animate=a.config.animation.enable,i.command=new e.CommandSort,s=0;s<t.length;s++)if(o=t[s],null!==o)switch(typeof o){case"string":r=o;break;case"object":o.length&&(i.command.collection=n.arrayFromList(o));break;case"boolean":i.animate=o;break;case"function":i.callback=o}return r&&(i.command=a.parseSortString(r,i.command)),i=a.callFilters("instructionParseSortArgs",i,arguments),n.freeze(i),i},parseInsertArgs:function(t){var a=this,i=new e.UserInstruction,o=null,r=-1;for(i.animate=a.config.animation.enable,i.command=new e.CommandInsert,r=0;r<t.length;r++)o=t[r],null!==o&&("number"==typeof o?i.command.index=o:"string"==typeof o&&["before","after"].indexOf(o)>-1?i.command.position=o:"string"==typeof o?i.command.collection=n.arrayFromList(n.createElement(o).childNodes):"object"==typeof o&&n.isElement(o,a.dom.document)?i.command.collection.length?i.command.sibling=o:i.command.collection=[o]:"object"==typeof o&&o.length?i.command.collection.length?i.command.sibling=o[0]:i.command.collection=o:"object"==typeof o&&o.childNodes&&o.childNodes.length?i.command.collection.length?i.command.sibling=o.childNodes[0]:i.command.collection=n.arrayFromList(o.childNodes):"object"==typeof o?n.extend(i.command,o):"boolean"==typeof o?i.animate=o:"function"==typeof o&&(i.callback=o));if(i.command.index&&i.command.sibling)throw new Error(e.messages.errorInsertInvalidArguments());return!i.command.collection.length&&a.config.debug.showWarnings&&console.warn(e.messages.warningInsertNoElements()),i=a.callFilters("instructionParseInsertArgs",i,arguments),n.freeze(i),i},parseRemoveArgs:function(t){var a=this,i=new e.UserInstruction,o=null,r=null,s=-1;for(i.animate=a.config.animation.enable,i.command=new e.CommandRemove,s=0;s<t.length;s++)if(r=t[s],null!==r)switch(typeof r){case"number":a.targets[r]&&(i.command.targets[0]=a.targets[r]);break;case"string":i.command.collection=n.arrayFromList(a.dom.parent.querySelectorAll(r));break;case"object":r&&r.length?i.command.collection=r:n.isElement(r,a.dom.document)?i.command.collection=[r]:n.extend(i.command,r);break;case"boolean":i.animate=r;break;case"function":i.callback=r}if(i.command.collection.length)for(s=0;o=a.targets[s];s++)i.command.collection.indexOf(o.dom.el)>-1&&i.command.targets.push(o);return!i.command.targets.length&&a.config.debug.showWarnings&&console.warn(e.messages.warningRemoveNoElements()),n.freeze(i),i},parseDatasetArgs:function(t){var a=this,i=new e.UserInstruction,o=null,r=-1;for(i.animate=a.config.animation.enable,i.command=new e.CommandDataset,r=0;r<t.length;r++)if(o=t[r],null!==o)switch(typeof o){case"object":Array.isArray(o)||"number"==typeof o.length?i.command.dataset=o:n.extend(i.command,o);break;case"boolean":i.animate=o;break;case"function":i.callback=o}return n.freeze(i),i},parseChangeLayoutArgs:function(t){var a=this,i=new e.UserInstruction,o=null,r=-1;for(i.animate=a.config.animation.enable,i.command=new e.CommandChangeLayout,r=0;r<t.length;r++)if(o=t[r],null!==o)switch(typeof o){case"string":i.command.containerClassName=o;break;case"object":n.extend(i.command,o);break;case"boolean":i.animate=o;break;case"function":i.callback=o}return n.freeze(i),i},queueMix:function(t){var a=this,i=null,o="";return a.callActions("beforeQueueMix",arguments),i=n.defer(e.libraries),a.config.animation.queue&&a.queue.length<a.config.animation.queueLimit?(t.deferred=i,a.queue.push(t),a.config.controls.enable&&(a.isToggling?(a.buildToggleArray(t.instruction.command),o=a.getToggleSelector(),a.updateControls({filter:{selector:o}})):a.updateControls(t.instruction.command))):(a.config.debug.showWarnings&&console.warn(e.messages.warningMultimixInstanceQueueFull()),i.resolve(a.state),e.events.fire("mixBusy",a.dom.container,{state:a.state,instance:a},a.dom.document),"function"==typeof a.config.callbacks.onMixBusy&&a.config.callbacks.onMixBusy.call(a.dom.container,a.state,a)),a.callFilters("promiseQueueMix",i.promise,arguments)},getDataOperation:function(t){var a=this,i=new e.Operation,o=[];if(i=a.callFilters("operationUnmappedGetDataOperation",i,arguments),a.dom.targets.length&&!(o=a.state.activeDataset||[]).length)throw new Error(e.messages.errorDatasetNotSet());
18
+ return i.id=n.randomHex(),i.startState=a.state,i.startDataset=o,i.newDataset=t.slice(),a.diffDatasets(i),i.startOrder=a.targets,i.newOrder=i.show,a.config.animation.enable&&(a.getStartMixData(i),a.setInter(i),i.docState=n.getDocumentState(a.dom.document),a.getInterMixData(i),a.setFinal(i),a.getFinalMixData(i),a.parseEffects(),i.hasEffect=a.hasEffect(),a.getTweenData(i)),a.targets=i.show.slice(),i.newState=a.buildState(i),Array.prototype.push.apply(a.targets,i.toRemove),i=a.callFilters("operationMappedGetDataOperation",i,arguments)},diffDatasets:function(t){var a=this,i=[],o=[],r=[],s=null,l=null,c=null,u=null,f=null,h={},d="",m=-1;for(a.callActions("beforeDiffDatasets",arguments),m=0;s=t.newDataset[m];m++){if("undefined"==typeof(d=s[a.config.data.uidKey])||d.toString().length<1)throw new TypeError(e.messages.errorDatasetInvalidUidKey({uidKey:a.config.data.uidKey}));if(h[d])throw new Error(e.messages.errorDatasetDuplicateUid({uid:d}));h[d]=!0,(l=a.cache[d])instanceof e.Target?(a.config.data.dirtyCheck&&!n.deepEquals(s,l.data)&&(c=l.render(s),l.data=s,c!==l.dom.el&&(l.isInDom&&(l.unbindEvents(),a.dom.parent.replaceChild(c,l.dom.el)),l.isShown||(c.style.display="none"),l.dom.el=c,l.isInDom&&l.bindEvents())),c=l.dom.el):(l=new e.Target,l.init(null,a,s),l.hide()),l.isInDom?(f=l.dom.el.nextElementSibling,o.push(d),u&&(u.lastElementChild&&u.appendChild(a.dom.document.createTextNode(" ")),a.insertDatasetFrag(u,l.dom.el,r),u=null)):(u||(u=a.dom.document.createDocumentFragment()),u.lastElementChild&&u.appendChild(a.dom.document.createTextNode(" ")),u.appendChild(l.dom.el),l.isInDom=!0,l.unbindEvents(),l.bindEvents(),l.hide(),t.toShow.push(l),r.push(l)),t.show.push(l)}for(u&&(f=f||a.config.layout.siblingAfter,f&&u.appendChild(a.dom.document.createTextNode(" ")),a.insertDatasetFrag(u,f,r)),m=0;s=t.startDataset[m];m++)d=s[a.config.data.uidKey],l=a.cache[d],t.show.indexOf(l)<0?(t.hide.push(l),t.toHide.push(l),t.toRemove.push(l)):i.push(d);n.isEqualArray(i,o)||(t.willSort=!0),a.callActions("afterDiffDatasets",arguments)},insertDatasetFrag:function(t,e,n){var a=this,i=e?Array.from(a.dom.parent.children).indexOf(e):a.targets.length;for(a.dom.parent.insertBefore(t,e);n.length;)a.targets.splice(i,0,n.shift()),i++},willSort:function(t,e){var n=this,a=!1;return a=!!(n.config.behavior.liveSort||"random"===t.order||t.attribute!==e.attribute||t.order!==e.order||t.collection!==e.collection||null===t.next&&e.next||t.next&&null===e.next)||!(!t.next||!e.next)&&n.willSort(t.next,e.next),n.callFilters("resultWillSort",a,arguments)},show:function(){var t=this;return t.filter("all")},hide:function(){var t=this;return t.filter("none")},isMixing:function(){var t=this;return t.isBusy},filter:function(){var t=this,e=t.parseFilterArgs(arguments);return t.multimix({filter:e.command},e.animate,e.callback)},toggleOn:function(){var t=this,e=t.parseFilterArgs(arguments),n=e.command.selector,a="";return t.isToggling=!0,t.toggleArray.indexOf(n)<0&&t.toggleArray.push(n),a=t.getToggleSelector(),t.multimix({filter:a},e.animate,e.callback)},toggleOff:function(){var t=this,e=t.parseFilterArgs(arguments),n=e.command.selector,a=t.toggleArray.indexOf(n),i="";return t.isToggling=!0,a>-1&&t.toggleArray.splice(a,1),i=t.getToggleSelector(),t.multimix({filter:i},e.animate,e.callback)},sort:function(){var t=this,e=t.parseSortArgs(arguments);return t.multimix({sort:e.command},e.animate,e.callback)},changeLayout:function(){var t=this,e=t.parseChangeLayoutArgs(arguments);return t.multimix({changeLayout:e.command},e.animate,e.callback)},dataset:function(){var t=this,n=t.parseDatasetArgs(arguments),a=null,i=null,o=!1;return t.callActions("beforeDataset",arguments),t.isBusy?(i=new e.QueueItem,i.args=arguments,i.instruction=n,t.queueMix(i)):(n.callback&&(t.userCallback=n.callback),o=n.animate^t.config.animation.enable?n.animate:t.config.animation.enable,a=t.getDataOperation(n.command.dataset),t.goMix(o,a))},multimix:function(){var t=this,n=null,a=!1,i=null,o=t.parseMultimixArgs(arguments);return t.callActions("beforeMultimix",arguments),t.isBusy?(i=new e.QueueItem,i.args=arguments,i.instruction=o,i.triggerElement=t.lastClicked,i.isToggling=t.isToggling,t.queueMix(i)):(n=t.getOperation(o.command),t.config.controls.enable&&(o.command.filter&&!t.isToggling&&(t.toggleArray.length=0,t.buildToggleArray(n.command)),t.queue.length<1&&t.updateControls(n.command)),o.callback&&(t.userCallback=o.callback),a=o.animate^t.config.animation.enable?o.animate:t.config.animation.enable,t.callFilters("operationMultimix",n,arguments),t.goMix(a,n))},getOperation:function(t){var a=this,i=t.sort,o=t.filter,r=t.changeLayout,s=t.remove,l=t.insert,c=new e.Operation;return c=a.callFilters("operationUnmappedGetOperation",c,arguments),c.id=n.randomHex(),c.command=t,c.startState=a.state,c.triggerElement=a.lastClicked,a.isBusy?(a.config.debug.showWarnings&&console.warn(e.messages.warningGetOperationInstanceBusy()),null):(l&&a.insertTargets(l,c),s&&(c.toRemove=s.targets),c.startSort=c.newSort=c.startState.activeSort,c.startOrder=c.newOrder=a.targets,i&&(c.startSort=c.startState.activeSort,c.newSort=i,c.willSort=a.willSort(i,c.startState.activeSort),c.willSort&&a.sortOperation(c)),c.startFilter=c.startState.activeFilter,o?c.newFilter=o:c.newFilter=n.extend(new e.CommandFilter,c.startFilter),"all"===c.newFilter.selector?c.newFilter.selector=a.config.selectors.target:"none"===c.newFilter.selector&&(c.newFilter.selector=""),a.filterOperation(c),c.startContainerClassName=c.startState.activeContainerClassName,r?(c.newContainerClassName=r.containerClassName,c.newContainerClassName!==c.startContainerClassName&&(c.willChangeLayout=!0)):c.newContainerClassName=c.startContainerClassName,a.config.animation.enable&&(a.getStartMixData(c),a.setInter(c),c.docState=n.getDocumentState(a.dom.document),a.getInterMixData(c),a.setFinal(c),a.getFinalMixData(c),a.parseEffects(),c.hasEffect=a.hasEffect(),a.getTweenData(c)),c.willSort&&(a.targets=c.newOrder),c.newState=a.buildState(c),a.callFilters("operationMappedGetOperation",c,arguments))},tween:function(t,e){var n=null,a=null,i=-1,o=-1;for(e=Math.min(e,1),e=Math.max(e,0),o=0;n=t.show[o];o++)a=t.showPosData[o],n.applyTween(a,e);for(o=0;n=t.hide[o];o++)n.isShown&&n.hide(),(i=t.toHide.indexOf(n))>-1&&(a=t.toHidePosData[i],n.isShown||n.show(),n.applyTween(a,e))},insert:function(){var t=this,e=t.parseInsertArgs(arguments);return t.multimix({insert:e.command},e.animate,e.callback)},insertBefore:function(){var t=this,e=t.parseInsertArgs(arguments);return t.insert(e.command.collection,"before",e.command.sibling,e.animate,e.callback)},insertAfter:function(){var t=this,e=t.parseInsertArgs(arguments);return t.insert(e.command.collection,"after",e.command.sibling,e.animate,e.callback)},prepend:function(){var t=this,e=t.parseInsertArgs(arguments);return t.insert(0,e.command.collection,e.animate,e.callback)},append:function(){var t=this,e=t.parseInsertArgs(arguments);return t.insert(t.state.totalTargets,e.command.collection,e.animate,e.callback)},remove:function(){var t=this,e=t.parseRemoveArgs(arguments);return t.multimix({remove:e.command},e.animate,e.callback)},getConfig:function(t){var e=this,a=null;return a=t?n.getProperty(e.config,t):e.config,e.callFilters("valueGetConfig",a,arguments)},configure:function(t){var e=this;e.callActions("beforeConfigure",arguments),n.extend(e.config,t,!0,!0),e.callActions("afterConfigure",arguments)},getState:function(){var t=this,a=null;return a=new e.State,n.extend(a,t.state),n.freeze(a),t.callFilters("stateGetState",a,arguments)},forceRefresh:function(){var t=this;t.indexTargets()},forceRender:function(){var t=this,e=null,n=null,a="";for(a in t.cache)e=t.cache[a],n=e.render(e.data),n!==e.dom.el&&(e.isInDom&&(e.unbindEvents(),t.dom.parent.replaceChild(n,e.dom.el)),e.isShown||(n.style.display="none"),e.dom.el=n,e.isInDom&&e.bindEvents());t.state=t.buildState(t.lastOperation)},destroy:function(t){var n=this,a=null,i=null,o=0;for(n.callActions("beforeDestroy",arguments),o=0;a=n.controls[o];o++)a.removeBinding(n);for(o=0;i=n.targets[o];o++)t&&i.show(),i.unbindEvents();n.dom.container.id.match(/^MixItUp/)&&n.dom.container.removeAttribute("id"),delete e.instances[n.id],n.callActions("afterDestroy",arguments)}}),e.IMoveData=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.posIn=null,this.posOut=null,this.operation=null,this.callback=null,this.statusChange="",this.duration=-1,this.staggerIndex=-1,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.IMoveData),e.IMoveData.prototype=Object.create(e.Base.prototype),e.IMoveData.prototype.constructor=e.IMoveData,e.TargetDom=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.el=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.TargetDom),e.TargetDom.prototype=Object.create(e.Base.prototype),e.TargetDom.prototype.constructor=e.TargetDom,e.Target=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.id="",this.sortString="",this.mixer=null,this.callback=null,this.isShown=!1,this.isBound=!1,this.isExcluded=!1,this.isInDom=!1,this.handler=null,this.operation=null,this.data=null,this.dom=new e.TargetDom,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.Target),e.Target.prototype=Object.create(e.Base.prototype),n.extend(e.Target.prototype,{constructor:e.Target,init:function(t,n,a){var i=this,o="";if(i.callActions("beforeInit",arguments),i.mixer=n,t||(t=i.render(a)),i.cacheDom(t),i.bindEvents(),"none"!==i.dom.el.style.display&&(i.isShown=!0),a&&n.config.data.uidKey){if("undefined"==typeof(o=a[n.config.data.uidKey])||o.toString().length<1)throw new TypeError(e.messages.errorDatasetInvalidUidKey({uidKey:n.config.data.uidKey}));i.id=o,i.data=a,n.cache[o]=i}i.callActions("afterInit",arguments)},render:function(t){var a=this,i=null,o=null,r=null,s="";if(a.callActions("beforeRender",arguments),i=a.callFilters("renderRender",a.mixer.config.render.target,arguments),"function"!=typeof i)throw new TypeError(e.messages.errorDatasetRendererNotSet());return s=i(t),s&&"object"==typeof s&&n.isElement(s)?o=s:"string"==typeof s&&(r=document.createElement("div"),r.innerHTML=s,o=r.firstElementChild),a.callFilters("elRender",o,arguments)},cacheDom:function(t){var e=this;e.callActions("beforeCacheDom",arguments),e.dom.el=t,e.callActions("afterCacheDom",arguments)},getSortString:function(t){var e=this,n=e.dom.el.getAttribute("data-"+t)||"";e.callActions("beforeGetSortString",arguments),n=isNaN(1*n)?n.toLowerCase():1*n,e.sortString=n,e.callActions("afterGetSortString",arguments)},show:function(){var t=this;t.callActions("beforeShow",arguments),t.isShown||(t.dom.el.style.display="",t.isShown=!0),t.callActions("afterShow",arguments)},hide:function(){var t=this;t.callActions("beforeHide",arguments),t.isShown&&(t.dom.el.style.display="none",t.isShown=!1),t.callActions("afterHide",arguments)},move:function(t){var e=this;e.callActions("beforeMove",arguments),e.isExcluded||e.mixer.targetsMoved++,e.applyStylesIn(t),requestAnimationFrame(function(){e.applyStylesOut(t)}),e.callActions("afterMove",arguments)},applyTween:function(t,n){var a=this,i="",o=null,r=t.posIn,s=[],l=new e.StyleData,c=-1;for(a.callActions("beforeApplyTween",arguments),l.x=r.x,l.y=r.y,0===n?a.hide():a.isShown||a.show(),c=0;i=e.features.TWEENABLE[c];c++)if(o=t.tweenData[i],"x"===i){if(!o)continue;l.x=r.x+o*n}else if("y"===i){if(!o)continue;l.y=r.y+o*n}else if(o instanceof e.TransformData){if(!o.value)continue;l[i].value=r[i].value+o.value*n,l[i].unit=o.unit,s.push(i+"("+l[i].value+o.unit+")")}else{if(!o)continue;l[i]=r[i]+o*n,a.dom.el.style[i]=l[i]}(l.x||l.y)&&s.unshift("translate("+l.x+"px, "+l.y+"px)"),s.length&&(a.dom.el.style[e.features.transformProp]=s.join(" ")),a.callActions("afterApplyTween",arguments)},applyStylesIn:function(t){var n=this,a=t.posIn,i=1!==n.mixer.effectsIn.opacity,o=[];n.callActions("beforeApplyStylesIn",arguments),o.push("translate("+a.x+"px, "+a.y+"px)"),n.mixer.config.animation.animateResizeTargets&&("show"!==t.statusChange&&(n.dom.el.style.width=a.width+"px",n.dom.el.style.height=a.height+"px"),n.dom.el.style.marginRight=a.marginRight+"px",n.dom.el.style.marginBottom=a.marginBottom+"px"),i&&(n.dom.el.style.opacity=a.opacity),"show"===t.statusChange&&(o=o.concat(n.mixer.transformIn)),n.dom.el.style[e.features.transformProp]=o.join(" "),n.callActions("afterApplyStylesIn",arguments)},applyStylesOut:function(t){var n=this,a=[],i=[],o=n.mixer.config.animation.animateResizeTargets,r="undefined"!=typeof n.mixer.effectsIn.opacity;if(n.callActions("beforeApplyStylesOut",arguments),a.push(n.writeTransitionRule(e.features.transformRule,t.staggerIndex)),"none"!==t.statusChange&&a.push(n.writeTransitionRule("opacity",t.staggerIndex,t.duration)),o&&(a.push(n.writeTransitionRule("width",t.staggerIndex,t.duration)),a.push(n.writeTransitionRule("height",t.staggerIndex,t.duration)),a.push(n.writeTransitionRule("margin",t.staggerIndex,t.duration))),!t.callback)return n.mixer.targetsImmovable++,void(n.mixer.targetsMoved===n.mixer.targetsImmovable&&n.mixer.cleanUp(t.operation));switch(n.operation=t.operation,n.callback=t.callback,!n.isExcluded&&n.mixer.targetsBound++,n.isBound=!0,n.applyTransition(a),o&&t.posOut.width>0&&t.posOut.height>0&&(n.dom.el.style.width=t.posOut.width+"px",n.dom.el.style.height=t.posOut.height+"px",n.dom.el.style.marginRight=t.posOut.marginRight+"px",n.dom.el.style.marginBottom=t.posOut.marginBottom+"px"),n.mixer.config.animation.nudge||"hide"!==t.statusChange||i.push("translate("+t.posOut.x+"px, "+t.posOut.y+"px)"),t.statusChange){case"hide":r&&(n.dom.el.style.opacity=n.mixer.effectsOut.opacity),i=i.concat(n.mixer.transformOut);break;case"show":r&&(n.dom.el.style.opacity=1)}(n.mixer.config.animation.nudge||!n.mixer.config.animation.nudge&&"hide"!==t.statusChange)&&i.push("translate("+t.posOut.x+"px, "+t.posOut.y+"px)"),n.dom.el.style[e.features.transformProp]=i.join(" "),n.callActions("afterApplyStylesOut",arguments)},writeTransitionRule:function(t,e,n){var a=this,i=a.getDelay(e),o="";return o=t+" "+(n>0?n:a.mixer.config.animation.duration)+"ms "+i+"ms "+("opacity"===t?"linear":a.mixer.config.animation.easing),a.callFilters("ruleWriteTransitionRule",o,arguments)},getDelay:function(t){var e=this,n=-1;return"function"==typeof e.mixer.config.animation.staggerSequence&&(t=e.mixer.config.animation.staggerSequence.call(e,t,e.state)),n=e.mixer.staggerDuration?t*e.mixer.staggerDuration:0,e.callFilters("delayGetDelay",n,arguments)},applyTransition:function(t){var n=this,a=t.join(", ");n.callActions("beforeApplyTransition",arguments),n.dom.el.style[e.features.transitionProp]=a,n.callActions("afterApplyTransition",arguments)},handleTransitionEnd:function(t){var e=this,n=t.propertyName,a=e.mixer.config.animation.animateResizeTargets;e.callActions("beforeHandleTransitionEnd",arguments),e.isBound&&t.target.matches(e.mixer.config.selectors.target)&&(n.indexOf("transform")>-1||n.indexOf("opacity")>-1||a&&n.indexOf("height")>-1||a&&n.indexOf("width")>-1||a&&n.indexOf("margin")>-1)&&(e.callback.call(e,e.operation),e.isBound=!1,e.callback=null,e.operation=null),e.callActions("afterHandleTransitionEnd",arguments)},eventBus:function(t){var e=this;switch(e.callActions("beforeEventBus",arguments),t.type){case"webkitTransitionEnd":case"transitionend":e.handleTransitionEnd(t)}e.callActions("afterEventBus",arguments)},unbindEvents:function(){var t=this;t.callActions("beforeUnbindEvents",arguments),n.off(t.dom.el,"webkitTransitionEnd",t.handler),n.off(t.dom.el,"transitionend",t.handler),t.callActions("afterUnbindEvents",arguments)},bindEvents:function(){var t=this,a="";t.callActions("beforeBindEvents",arguments),a="webkit"===e.features.transitionPrefix?"webkitTransitionEnd":"transitionend",t.handler=function(e){return t.eventBus(e)},n.on(t.dom.el,a,t.handler),t.callActions("afterBindEvents",arguments)},getPosData:function(n){var a=this,i={},o=null,r=new e.StyleData;return a.callActions("beforeGetPosData",arguments),r.x=a.dom.el.offsetLeft,r.y=a.dom.el.offsetTop,(a.mixer.config.animation.animateResizeTargets||n)&&(o=a.dom.el.getBoundingClientRect(),r.top=o.top,r.right=o.right,r.bottom=o.bottom,r.left=o.left,r.width=o.width,r.height=o.height),a.mixer.config.animation.animateResizeTargets&&(i=t.getComputedStyle(a.dom.el),r.marginBottom=parseFloat(i.marginBottom),r.marginRight=parseFloat(i.marginRight)),a.callFilters("posDataGetPosData",r,arguments)},cleanUp:function(){var t=this;t.callActions("beforeCleanUp",arguments),t.dom.el.style[e.features.transformProp]="",t.dom.el.style[e.features.transitionProp]="",t.dom.el.style.opacity="",t.mixer.config.animation.animateResizeTargets&&(t.dom.el.style.width="",t.dom.el.style.height="",t.dom.el.style.marginRight="",t.dom.el.style.marginBottom=""),t.callActions("afterCleanUp",arguments)}}),e.Collection=function(t){var e=null,a=-1;for(this.callActions("beforeConstruct"),a=0;e=t[a];a++)this[a]=e;this.length=t.length,this.callActions("afterConstruct"),n.freeze(this)},e.BaseStatic.call(e.Collection),e.Collection.prototype=Object.create(e.Base.prototype),n.extend(e.Collection.prototype,{constructor:e.Collection,mixitup:function(t){var a=this,i=null,o=Array.prototype.slice.call(arguments),r=[],s=-1;for(this.callActions("beforeMixitup"),o.shift(),s=0;i=a[s];s++)r.push(i[t].apply(i,o));return a.callFilters("promiseMixitup",n.all(r,e.libraries),arguments)}}),e.Operation=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.id="",this.args=[],this.command=null,this.showPosData=[],this.toHidePosData=[],this.startState=null,this.newState=null,this.docState=null,this.willSort=!1,this.willChangeLayout=!1,this.hasEffect=!1,this.hasFailed=!1,this.triggerElement=null,this.show=[],this.hide=[],this.matching=[],this.toShow=[],this.toHide=[],this.toMove=[],this.toRemove=[],this.startOrder=[],this.newOrder=[],this.startSort=null,this.newSort=null,this.startFilter=null,this.newFilter=null,this.startDataset=null,this.newDataset=null,this.viewportDeltaX=0,this.viewportDeltaY=0,this.startX=0,this.startY=0,this.startHeight=0,this.startWidth=0,this.newX=0,this.newY=0,this.newHeight=0,this.newWidth=0,this.startContainerClassName="",this.startDisplay="",this.newContainerClassName="",this.newDisplay="",this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.Operation),e.Operation.prototype=Object.create(e.Base.prototype),e.Operation.prototype.constructor=e.Operation,e.State=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.id="",this.activeFilter=null,this.activeSort=null,this.activeContainerClassName="",this.container=null,this.targets=[],this.hide=[],this.show=[],this.matching=[],this.totalTargets=-1,this.totalShow=-1,this.totalHide=-1,this.totalMatching=-1,this.hasFailed=!1,this.triggerElement=null,this.activeDataset=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.State),e.State.prototype=Object.create(e.Base.prototype),e.State.prototype.constructor=e.State,e.UserInstruction=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.command={},this.animate=!1,this.callback=null,this.callActions("afterConstruct"),n.seal(this)},e.BaseStatic.call(e.UserInstruction),e.UserInstruction.prototype=Object.create(e.Base.prototype),e.UserInstruction.prototype.constructor=e.UserInstruction,e.Messages=function(){e.Base.call(this),this.callActions("beforeConstruct"),this.ERROR_FACTORY_INVALID_CONTAINER="[MixItUp] An invalid selector or element reference was passed to the mixitup factory function",this.ERROR_FACTORY_CONTAINER_NOT_FOUND="[MixItUp] The provided selector yielded no container element",this.ERROR_CONFIG_INVALID_ANIMATION_EFFECTS="[MixItUp] Invalid value for `animation.effects`",this.ERROR_CONFIG_INVALID_CONTROLS_SCOPE="[MixItUp] Invalid value for `controls.scope`",this.ERROR_CONFIG_INVALID_PROPERTY='[MixitUp] Invalid configuration object property "${erroneous}"${suggestion}',this.ERROR_CONFIG_INVALID_PROPERTY_SUGGESTION='. Did you mean "${probableMatch}"?',this.ERROR_CONFIG_DATA_UID_KEY_NOT_SET="[MixItUp] To use the dataset API, a UID key must be specified using `data.uidKey`",this.ERROR_DATASET_INVALID_UID_KEY='[MixItUp] The specified UID key "${uidKey}" is not present on one or more dataset items',this.ERROR_DATASET_DUPLICATE_UID='[MixItUp] The UID "${uid}" was found on two or more dataset items. UIDs must be unique.',this.ERROR_INSERT_INVALID_ARGUMENTS="[MixItUp] Please provider either an index or a sibling and position to insert, not both",this.ERROR_INSERT_PREEXISTING_ELEMENT="[MixItUp] An element to be inserted already exists in the container",this.ERROR_FILTER_INVALID_ARGUMENTS="[MixItUp] Please provide either a selector or collection `.filter()`, not both",this.ERROR_DATASET_NOT_SET="[MixItUp] To use the dataset API with pre-rendered targets, a starting dataset must be set using `load.dataset`",this.ERROR_DATASET_PRERENDERED_MISMATCH="[MixItUp] `load.dataset` does not match pre-rendered targets",this.ERROR_DATASET_RENDERER_NOT_SET="[MixItUp] To insert an element via the dataset API, a target renderer function must be provided to `render.target`",this.WARNING_FACTORY_PREEXISTING_INSTANCE="[MixItUp] WARNING: This element already has an active MixItUp instance. The provided configuration object will be ignored. If you wish to perform additional methods on this instance, please create a reference.",this.WARNING_INSERT_NO_ELEMENTS="[MixItUp] WARNING: No valid elements were passed to `.insert()`",this.WARNING_REMOVE_NO_ELEMENTS="[MixItUp] WARNING: No valid elements were passed to `.remove()`",this.WARNING_MULTIMIX_INSTANCE_QUEUE_FULL="[MixItUp] WARNING: An operation was requested but the MixItUp instance was busy. The operation was rejected because the queue is full or queuing is disabled.",this.WARNING_GET_OPERATION_INSTANCE_BUSY="[MixItUp] WARNING: Operations can be be created while the MixItUp instance is busy.",this.WARNING_NO_PROMISE_IMPLEMENTATION="[MixItUp] WARNING: No Promise implementations could be found. If you wish to use promises with MixItUp please install an ES6 Promise polyfill.",this.WARNING_INCONSISTENT_SORTING_ATTRIBUTES='[MixItUp] WARNING: The requested sorting data attribute "${attribute}" was not present on one or more target elements which may product unexpected sort output',this.callActions("afterConstruct"),this.compileTemplates(),n.seal(this)},e.BaseStatic.call(e.Messages),e.Messages.prototype=Object.create(e.Base.prototype),e.Messages.prototype.constructor=e.Messages,e.Messages.prototype.compileTemplates=function(){var t="",e="";for(t in this)"string"==typeof(e=this[t])&&(this[n.camelCase(t)]=n.template(e))},e.messages=new e.Messages,e.Facade=function(t){e.Base.call(this),this.callActions("beforeConstruct",arguments),this.configure=t.configure.bind(t),this.show=t.show.bind(t),this.hide=t.hide.bind(t),this.filter=t.filter.bind(t),this.toggleOn=t.toggleOn.bind(t),this.toggleOff=t.toggleOff.bind(t),this.sort=t.sort.bind(t),this.changeLayout=t.changeLayout.bind(t),this.multimix=t.multimix.bind(t),this.dataset=t.dataset.bind(t),this.tween=t.tween.bind(t),this.insert=t.insert.bind(t),this.insertBefore=t.insertBefore.bind(t),this.insertAfter=t.insertAfter.bind(t),this.prepend=t.prepend.bind(t),this.append=t.append.bind(t),this.remove=t.remove.bind(t),this.destroy=t.destroy.bind(t),this.forceRefresh=t.forceRefresh.bind(t),this.forceRender=t.forceRender.bind(t),this.isMixing=t.isMixing.bind(t),this.getOperation=t.getOperation.bind(t),this.getConfig=t.getConfig.bind(t),this.getState=t.getState.bind(t),this.callActions("afterConstruct",arguments),n.freeze(this),n.seal(this)},e.BaseStatic.call(e.Facade),e.Facade.prototype=Object.create(e.Base.prototype),e.Facade.prototype.constructor=e.Facade,"object"==typeof exports&&"object"==typeof module?module.exports=e:"function"==typeof define&&define.amd?define(function(){return e}):"undefined"!=typeof t.mixitup&&"function"==typeof t.mixitup||(t.mixitup=e),e.BaseStatic.call(e.constructor),e.NAME="mixitup",e.CORE_VERSION="3.2.2"}(window);
elements/data-table/data-table.php ADDED
@@ -0,0 +1,666 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Elementor;
3
+
4
+ if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
5
+
6
+ class Widget_Eael_Data_Table extends Widget_Base {
7
+ public $unique_id = null;
8
+ public function get_name() {
9
+ return 'eael-data-table';
10
+ }
11
+
12
+ public function get_title() {
13
+ return esc_html__( 'EA Data Table', 'essential-addons-elementor' );
14
+ }
15
+
16
+ public function get_icon() {
17
+ return 'eicon-table';
18
+ }
19
+
20
+ public function get_categories() {
21
+ return [ 'essential-addons-elementor' ];
22
+ }
23
+
24
+ protected function _register_controls() {
25
+
26
+ /**
27
+ * Data Table Header
28
+ */
29
+ $this->start_controls_section(
30
+ 'eael_section_data_table_header',
31
+ [
32
+ 'label' => esc_html__( 'Header', 'essential-addons-elementor' )
33
+ ]
34
+ );
35
+
36
+ $this->add_control(
37
+ 'eael_section_data_table_enabled',
38
+ [
39
+ 'label' => __( 'Enable Table Sorting', 'essential-addons-elementor' ),
40
+ 'type' => Controls_Manager::SWITCHER,
41
+ 'default' => 'true',
42
+ 'label_on' => esc_html__( 'Yes', 'essential-addons-elementor' ),
43
+ 'label_off' => esc_html__( 'No', 'essential-addons-elementor' ),
44
+ 'return_value' => 'true',
45
+ ]
46
+ );
47
+
48
+ $this->add_control(
49
+ 'eael_section_data_table_enabled_pro_alert',
50
+ [
51
+ 'label' => esc_html__( 'Only available in pro version!', 'essential-addons-elementor' ),
52
+ 'type' => Controls_Manager::HEADING,
53
+ 'condition' => [
54
+ 'eael_section_data_table_enabled' => 'true',
55
+ ]
56
+ ]
57
+ );
58
+
59
+ $this->add_control(
60
+ 'eael_data_table_header_cols_data',
61
+ [
62
+ 'type' => Controls_Manager::REPEATER,
63
+ 'seperator' => 'before',
64
+ 'default' => [
65
+ [ 'eael_data_table_header_col' => 'Table Header' ],
66
+ [ 'eael_data_table_header_col' => 'Table Header' ],
67
+ [ 'eael_data_table_header_col' => 'Table Header' ],
68
+ [ 'eael_data_table_header_col' => 'Table Header' ],
69
+ ],
70
+ 'fields' => [
71
+ [
72
+ 'name' => 'eael_data_table_header_col',
73
+ 'label' => esc_html__( 'Column Name', 'essential-addons-elementor' ),
74
+ 'default' => 'Table Header',
75
+ 'type' => Controls_Manager::TEXT,
76
+ 'label_block' => false,
77
+ ],
78
+ [
79
+ 'name' => 'eael_data_table_header_col_icon_enabled',
80
+ 'label' => esc_html__( 'Enable Header Icon', 'essential-addons-elementor' ),
81
+ 'type' => Controls_Manager::SWITCHER,
82
+ 'label_on' => __( 'yes', 'essential-addons-elementor' ),
83
+ 'label_off' => __( 'no', 'essential-addons-elementor' ),
84
+ 'default' => 'false',
85
+ 'return_value' => 'true',
86
+ ],
87
+ [
88
+ 'name' => 'eael_data_table_header_col_icon',
89
+ 'label' => esc_html__( 'Icon', 'essential-addons-elementor' ),
90
+ 'type' => Controls_Manager::ICON,
91
+ 'default' => '',
92
+ 'condition' => [
93
+ 'eael_data_table_header_col_icon_enabled' => 'true'
94
+ ]
95
+ ],
96
+ [
97
+ 'name' => 'eael_data_table_header_col_img_enabled',
98
+ 'label' => esc_html__( 'Enable Header Image', 'essential-addons-elementor' ),
99
+ 'type' => Controls_Manager::SWITCHER,
100
+ 'label_on' => __( 'yes', 'essential-addons-elementor' ),
101
+ 'label_off' => __( 'no', 'essential-addons-elementor' ),
102
+ 'default' => 'false',
103
+ 'return_value' => 'true',
104
+ ],
105
+ [
106
+ 'name' => 'eael_data_table_header_col_img',
107
+ 'label' => esc_html__( 'Image', 'essential-addons-elementor' ),
108
+ 'type' => Controls_Manager::MEDIA,
109
+ 'default' => [
110
+ 'url' => Utils::get_placeholder_image_src(),
111
+ ],
112
+ 'condition' => [
113
+ 'eael_data_table_header_col_img_enabled' => 'true',
114
+ ]
115
+ ],
116
+ [
117
+ 'name' => 'eael_data_table_header_col_img_size',
118
+ 'label' => esc_html__( 'Image Size(px)', 'essential-addons-elementor' ),
119
+ 'default' => '25',
120
+ 'type' => Controls_Manager::TEXT,
121
+ 'label_block' => false,
122
+ 'condition' => [
123
+ 'eael_data_table_header_col_img_enabled' => 'true',
124
+ ]
125
+ ],
126
+
127
+ ],
128
+ 'title_field' => '{{eael_data_table_header_col}}',
129
+ ]
130
+ );
131
+
132
+ $this->end_controls_section();
133
+
134
+ /**
135
+ * Data Table Content
136
+ */
137
+ $this->start_controls_section(
138
+ 'eael_section_data_table_cotnent',
139
+ [
140
+ 'label' => esc_html__( 'Content', 'essential-addons-elementor' )
141
+ ]
142
+ );
143
+
144
+ $this->add_control(
145
+ 'eael_data_table_content_rows',
146
+ [
147
+ 'type' => Controls_Manager::REPEATER,
148
+ 'seperator' => 'before',
149
+ 'default' => [
150
+ [ 'eael_data_table_content_row_type' => 'row' ],
151
+ [ 'eael_data_table_content_row_type' => 'col' ],
152
+ [ 'eael_data_table_content_row_type' => 'col' ],
153
+ [ 'eael_data_table_content_row_type' => 'col' ],
154
+ [ 'eael_data_table_content_row_type' => 'col' ],
155
+ ],
156
+ 'fields' => [
157
+ [
158
+ 'name' => 'eael_data_table_content_row_type',
159
+ 'label' => esc_html__( 'Row Type', 'essential-addons-elementor' ),
160
+ 'type' => Controls_Manager::SELECT,
161
+ 'default' => 'row',
162
+ 'label_block' => false,
163
+ 'options' => [
164
+ 'row' => esc_html__( 'Row', 'essential-addons-elementor' ),
165
+ 'col' => esc_html__( 'Column', 'essential-addons-elementor' ),
166
+ ]
167
+ ],
168
+ [
169
+ 'name' => 'eael_data_table_content_row_title',
170
+ 'label' => esc_html__( 'Cell Text', 'essential-addons-elementor' ),
171
+ 'type' => Controls_Manager::TEXTAREA,
172
+ 'label_block' => false,
173
+ 'default' => esc_html__( 'Content', 'essential-addons-elementor' ),
174
+ 'condition' => [
175
+ 'eael_data_table_content_row_type' => 'col'
176
+ ]
177
+ ],
178
+ [
179
+ 'name' => 'eael_data_table_content_row_title_link',
180
+ 'label' => esc_html__( 'Link', 'essential-addons-elementor' ),
181
+ 'type' => Controls_Manager::URL,
182
+ 'label_block' => true,
183
+ 'default' => [
184
+ 'url' => '',
185
+ 'is_external' => '',
186
+ ],
187
+ 'show_external' => true,
188
+ 'separator' => 'before',
189
+ 'condition' => [
190
+ 'eael_data_table_content_row_type' => 'col'
191
+ ]
192
+ ]
193
+ ],
194
+ 'title_field' => '{{eael_data_table_content_row_type}}::{{eael_data_table_content_row_title}}',
195
+ ]
196
+ );
197
+
198
+ $this->end_controls_section();
199
+
200
+ /**
201
+ * -------------------------------------------
202
+ * Tab Style (Data Table Style)
203
+ * -------------------------------------------
204
+ */
205
+ $this->start_controls_section(
206
+ 'eael_section_data_table_style_settings',
207
+ [
208
+ 'label' => esc_html__( 'General Style', 'essential-addons-elementor' ),
209
+ 'tab' => Controls_Manager::TAB_STYLE
210
+ ]
211
+ );
212
+
213
+ $this->add_control(
214
+ 'eael_data_table_bg_color',
215
+ [
216
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
217
+ 'type' => Controls_Manager::COLOR,
218
+ 'default' => '',
219
+ 'selectors' => [
220
+ '{{WRAPPER}} .eael-data-table-wrap' => 'background-color: {{VALUE}};',
221
+ ],
222
+ ]
223
+ );
224
+
225
+ $this->add_responsive_control(
226
+ 'eael_data_table_container_padding',
227
+ [
228
+ 'label' => esc_html__( 'Padding', 'essential-addons-elementor' ),
229
+ 'type' => Controls_Manager::DIMENSIONS,
230
+ 'size_units' => [ 'px', 'em', '%' ],
231
+ 'selectors' => [
232
+ '{{WRAPPER}} .eael-data-table-wrap' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
233
+ ],
234
+ ]
235
+ );
236
+
237
+ $this->add_responsive_control(
238
+ 'eael_data_table_container_margin',
239
+ [
240
+ 'label' => esc_html__( 'Margin', 'essential-addons-elementor' ),
241
+ 'type' => Controls_Manager::DIMENSIONS,
242
+ 'size_units' => [ 'px', 'em', '%' ],
243
+ 'selectors' => [
244
+ '{{WRAPPER}} .eael-data-table-wrap' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
245
+ ],
246
+ ]
247
+ );
248
+
249
+ $this->add_group_control(
250
+ Group_Control_Border::get_type(),
251
+ [
252
+ 'name' => 'eael_data_table_border',
253
+ 'label' => esc_html__( 'Border', 'essential-addons-elementor' ),
254
+ 'selector' => '{{WRAPPER}} .eael-data-table-wrap',
255
+ ]
256
+ );
257
+
258
+ $this->add_control(
259
+ 'eael_data_table_border_radius',
260
+ [
261
+ 'label' => esc_html__( 'Border Radius', 'essential-addons-elementor' ),
262
+ 'type' => Controls_Manager::SLIDER,
263
+ 'range' => [
264
+ 'px' => [
265
+ 'max' => 50,
266
+ ],
267
+ ],
268
+ 'selectors' => [
269
+ '{{WRAPPER}} .eael-data-table-wrap' => 'border-radius: {{SIZE}}px;',
270
+ ],
271
+ ]
272
+ );
273
+
274
+ $this->add_responsive_control(
275
+ 'eael_data_table_th_padding',
276
+ [
277
+ 'label' => esc_html__( 'Table Header Padding', 'essential-addons-elementor' ),
278
+ 'type' => Controls_Manager::DIMENSIONS,
279
+ 'size_units' => [ 'px', 'em', '%' ],
280
+ 'selectors' => [
281
+ '{{WRAPPER}} .eael-data-table thead tr th' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
282
+ ],
283
+ ]
284
+ );
285
+
286
+ $this->add_responsive_control(
287
+ 'eael_data_table_td_padding',
288
+ [
289
+ 'label' => esc_html__( 'Table Data Padding', 'essential-addons-elementor' ),
290
+ 'type' => Controls_Manager::DIMENSIONS,
291
+ 'size_units' => [ 'px', 'em', '%' ],
292
+ 'selectors' => [
293
+ '{{WRAPPER}} .eael-data-table tbody tr td' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
294
+ ],
295
+ ]
296
+ );
297
+
298
+ $this->add_group_control(
299
+ Group_Control_Box_Shadow::get_type(),
300
+ [
301
+ 'name' => 'eael_data_table_shadow',
302
+ 'selector' => '{{WRAPPER}} .eael-data-table-wrap',
303
+ ]
304
+ );
305
+
306
+ $this->end_controls_section();
307
+
308
+ /**
309
+ * -------------------------------------------
310
+ * Tab Style (Data Table Header Style)
311
+ * -------------------------------------------
312
+ */
313
+ $this->start_controls_section(
314
+ 'eael_section_data_table_title_style_settings',
315
+ [
316
+ 'label' => esc_html__( 'Header Style', 'essential-addons-elementor' ),
317
+ 'tab' => Controls_Manager::TAB_STYLE
318
+ ]
319
+ );
320
+
321
+
322
+ $this->add_control(
323
+ 'eael_section_data_table_header_radius',
324
+ [
325
+ 'label' => esc_html__( 'Header Border Radius', 'essential-addons-elementor' ),
326
+ 'type' => Controls_Manager::SLIDER,
327
+ 'default' => [
328
+ 'size' => 7,
329
+ ],
330
+ 'range' => [
331
+ 'px' => [
332
+ 'max' => 50,
333
+ ],
334
+ ],
335
+ 'selectors' => [
336
+ '{{WRAPPER}} .eael-data-table thead tr th:first-child' => 'border-radius: {{SIZE}}px 0px 0px 0px;',
337
+ '{{WRAPPER}} .eael-data-table thead tr th:last-child' => 'border-radius: 0px {{SIZE}}px 0px 0px;',
338
+ ],
339
+ ]
340
+ );
341
+
342
+ $this->add_control(
343
+ 'eael_data_table_header_title_color',
344
+ [
345
+ 'label' => esc_html__( 'Color', 'essential-addons-elementor' ),
346
+ 'type' => Controls_Manager::COLOR,
347
+ 'default' => '#fff',
348
+ 'selectors' => [
349
+ '{{WRAPPER}} .eael-data-table thead tr th' => 'color: {{VALUE}};',
350
+ '{{WRAPPER}} table.dataTable thead .sorting:after' => 'color: {{VALUE}};',
351
+ '{{WRAPPER}} table.dataTable thead .sorting_asc:after' => 'color: {{VALUE}};',
352
+ '{{WRAPPER}} table.dataTable thead .sorting_desc:after' => 'color: {{VALUE}};',
353
+ ],
354
+ ]
355
+ );
356
+
357
+ $this->add_control(
358
+ 'eael_data_table_header_title_bg_color',
359
+ [
360
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
361
+ 'type' => Controls_Manager::COLOR,
362
+ 'default' => '#4a4893',
363
+ 'selectors' => [
364
+ '{{WRAPPER}} .eael-data-table thead tr th' => 'background-color: {{VALUE}};',
365
+ ],
366
+ ]
367
+ );
368
+
369
+ $this->add_group_control(
370
+ Group_Control_Typography::get_type(),
371
+ [
372
+ 'name' => 'eael_data_table_header_title_typography',
373
+ 'selector' => '{{WRAPPER}} .eael-data-table thead tr th',
374
+ ]
375
+ );
376
+
377
+ $this->add_responsive_control(
378
+ 'eael_data_table_header_title_alignment',
379
+ [
380
+ 'label' => esc_html__( 'Title Alignment', 'essential-addons-elementor' ),
381
+ 'type' => Controls_Manager::CHOOSE,
382
+ 'label_block' => true,
383
+ 'options' => [
384
+ 'left' => [
385
+ 'title' => esc_html__( 'Left', 'essential-addons-elementor' ),
386
+ 'icon' => 'fa fa-align-left',
387
+ ],
388
+ 'center' => [
389
+ 'title' => esc_html__( 'Center', 'essential-addons-elementor' ),
390
+ 'icon' => 'fa fa-align-center',
391
+ ],
392
+ 'right' => [
393
+ 'title' => esc_html__( 'Right', 'essential-addons-elementor' ),
394
+ 'icon' => 'fa fa-align-right',
395
+ ],
396
+ ],
397
+ 'default' => 'left',
398
+ 'prefix_class' => 'eael-dt-th-align-',
399
+ ]
400
+ );
401
+
402
+ $this->end_controls_section();
403
+
404
+ /**
405
+ * -------------------------------------------
406
+ * Tab Style (Data Table Content Style)
407
+ * -------------------------------------------
408
+ */
409
+ $this->start_controls_section(
410
+ 'eael_section_data_table_content_style_settings',
411
+ [
412
+ 'label' => esc_html__( 'Content Style', 'essential-addons-elementor' ),
413
+ 'tab' => Controls_Manager::TAB_STYLE
414
+ ]
415
+ );
416
+
417
+ $this->add_control(
418
+ 'eael_data_table_content_color_odd',
419
+ [
420
+ 'label' => esc_html__( 'Color ( Odd Row )', 'essential-addons-elementor' ),
421
+ 'type' => Controls_Manager::COLOR,
422
+ 'default' => '#6d7882',
423
+ 'selectors' => [
424
+ '{{WRAPPER}} .eael-data-table tbody > tr:nth-child(2n) td' => 'color: {{VALUE}};',
425
+ ],
426
+ ]
427
+ );
428
+
429
+ $this->add_control(
430
+ 'eael_data_table_content_bg_odd_color',
431
+ [
432
+ 'label' => esc_html__( 'Background Color (Odd Row)', 'essential-addons-elementor' ),
433
+ 'type' => Controls_Manager::COLOR,
434
+ 'default' => '',
435
+ 'selectors' => [
436
+ '{{WRAPPER}} .eael-data-table tbody > tr:nth-child(2n) td' => 'background-color: {{VALUE}};',
437
+ ],
438
+ ]
439
+ );
440
+
441
+ $this->add_control(
442
+ 'eael_data_table_content_color_even',
443
+ [
444
+ 'label' => esc_html__( 'Color ( Even Row )', 'essential-addons-elementor' ),
445
+ 'type' => Controls_Manager::COLOR,
446
+ 'default' => '#6d7882',
447
+ 'selectors' => [
448
+ '{{WRAPPER}} .eael-data-table tbody > tr:nth-child(2n+1) td' => 'color: {{VALUE}};',
449
+ ],
450
+ ]
451
+ );
452
+
453
+ $this->add_control(
454
+ 'eael_data_table_content_bg_even_color',
455
+ [
456
+ 'label' => esc_html__( 'Background Color (Even Row)', 'essential-addons-elementor' ),
457
+ 'type' => Controls_Manager::COLOR,
458
+ 'default' => '',
459
+ 'selectors' => [
460
+ '{{WRAPPER}} .eael-data-table tbody > tr:nth-child(2n+1) td' => 'background-color: {{VALUE}};',
461
+ ],
462
+ ]
463
+ );
464
+
465
+ $this->add_group_control(
466
+ Group_Control_Typography::get_type(),
467
+ [
468
+ 'name' => 'eael_data_table_content_typography',
469
+ 'selector' => '{{WRAPPER}} .eael-data-table tbody tr td',
470
+ ]
471
+ );
472
+
473
+ $this->add_control(
474
+ 'eael_data_table_content_link_typo',
475
+ [
476
+ 'label' => esc_html__( 'Link Color', 'essential-addons-elementor' ),
477
+ 'type' => Controls_Manager::HEADING,
478
+ ]
479
+ );
480
+
481
+ /* Table Content Link */
482
+ $this->start_controls_tabs( 'eael_data_table_link_tabs' );
483
+
484
+ // Normal State Tab
485
+ $this->start_controls_tab( 'eael_data_table_link_normal', [ 'label' => esc_html__( 'Normal', 'essential-addons-elementor' ) ] );
486
+
487
+ $this->add_control(
488
+ 'eael_data_table_link_normal_text_color',
489
+ [
490
+ 'label' => esc_html__( 'Text Color', 'essential-addons-elementor' ),
491
+ 'type' => Controls_Manager::COLOR,
492
+ 'default' => '#c15959',
493
+ 'selectors' => [
494
+ '{{WRAPPER}} .eael-data-table-wrap table td a' => 'color: {{VALUE}};',
495
+ ],
496
+ ]
497
+ );
498
+
499
+ $this->end_controls_tab();
500
+
501
+ // Hover State Tab
502
+ $this->start_controls_tab( 'eael_data_table_link_hover', [ 'label' => esc_html__( 'Hover', 'essential-addons-elementor' ) ] );
503
+
504
+ $this->add_control(
505
+ 'eael_data_table_link_hover_text_color',
506
+ [
507
+ 'label' => esc_html__( 'Text Color', 'essential-addons-elementor' ),
508
+ 'type' => Controls_Manager::COLOR,
509
+ 'default' => '#6d7882',
510
+ 'selectors' => [
511
+ '{{WRAPPER}} .eael-data-table-wrap table td a:hover' => 'color: {{VALUE}};',
512
+ ],
513
+ ]
514
+ );
515
+
516
+ $this->end_controls_tab();
517
+
518
+ $this->end_controls_tabs();
519
+
520
+ $this->add_responsive_control(
521
+ 'eael_data_table_content_alignment',
522
+ [
523
+ 'label' => esc_html__( 'Content Alignment', 'essential-addons-elementor' ),
524
+ 'type' => Controls_Manager::CHOOSE,
525
+ 'label_block' => true,
526
+ 'options' => [
527
+ 'left' => [
528
+ 'title' => esc_html__( 'Left', 'essential-addons-elementor' ),
529
+ 'icon' => 'fa fa-align-left',
530
+ ],
531
+ 'center' => [
532
+ 'title' => esc_html__( 'Center', 'essential-addons-elementor' ),
533
+ 'icon' => 'fa fa-align-center',
534
+ ],
535
+ 'right' => [
536
+ 'title' => esc_html__( 'Right', 'essential-addons-elementor' ),
537
+ 'icon' => 'fa fa-align-right',
538
+ ],
539
+ ],
540
+ 'default' => 'left',
541
+ 'prefix_class' => 'eael-dt-td-align-',
542
+ ]
543
+ );
544
+
545
+ $this->end_controls_section();
546
+
547
+ $this->start_controls_section(
548
+ 'eael_section_pro',
549
+ [
550
+ 'label' => __( 'Go Premium for More Features', 'essential-addons-elementor' )
551
+ ]
552
+ );
553
+
554
+ $this->add_control(
555
+ 'eael_control_get_pro',
556
+ [
557
+ 'label' => __( 'Unlock more possibilities', 'essential-addons-elementor' ),
558
+ 'type' => Controls_Manager::CHOOSE,
559
+ 'options' => [
560
+ '1' => [
561
+ 'title' => __( '', 'essential-addons-elementor' ),
562
+ 'icon' => 'fa fa-unlock-alt',
563
+ ],
564
+ ],
565
+ 'default' => '1',
566
+ 'description' => '<span class="pro-feature"> Get the <a href="https://essential-addons.com/elementor/buy.php" target="_blank">Pro version</a> for more stunning elements and customization options.</span>'
567
+ ]
568
+ );
569
+
570
+ $this->end_controls_section();
571
+
572
+ }
573
+
574
+
575
+ protected function render( ) {
576
+
577
+ $settings = $this->get_settings();
578
+
579
+ $table_tr = [];
580
+ $table_td = [];
581
+
582
+ // Storing Data table content values
583
+ foreach( $settings['eael_data_table_content_rows'] as $content_row ) {
584
+
585
+ $row_id = rand(10, 1000);
586
+ if( $content_row['eael_data_table_content_row_type'] == 'row' ) {
587
+ $table_tr[] = [
588
+ 'id' => $row_id,
589
+ 'type' => $content_row['eael_data_table_content_row_type'],
590
+ ];
591
+
592
+ }
593
+ if( $content_row['eael_data_table_content_row_type'] == 'col' ) {
594
+ $target = $content_row['eael_data_table_content_row_title_link']['is_external'] ? 'target="_blank"' : '';
595
+ $nofollow = $content_row['eael_data_table_content_row_title_link']['nofollow'] ? 'rel="nofollow"' : '';
596
+
597
+ $table_tr_keys = array_keys( $table_tr );
598
+ $last_key = end( $table_tr_keys );
599
+
600
+ $table_td[] = [
601
+ 'row_id' => $table_tr[$last_key]['id'],
602
+ 'type' => $content_row['eael_data_table_content_row_type'],
603
+ 'title' => $content_row['eael_data_table_content_row_title'],
604
+ 'link_url' => $content_row['eael_data_table_content_row_title_link']['url'],
605
+ 'link_target' => $target,
606
+ 'nofollow' => $nofollow
607
+ ];
608
+ }
609
+ }
610
+
611
+ $table_th_count = count($settings['eael_data_table_header_cols_data']);
612
+ ?>
613
+ <div class="eael-data-table-wrap">
614
+ <table id="eael-data-table-<?php echo $this->get_id(); ?>" class="tablesorter eael-data-table">
615
+ <thead>
616
+ <tr class="table-header">
617
+ <?php foreach( $settings['eael_data_table_header_cols_data'] as $header_title ) : ?>
618
+ <th class="sorting">
619
+ <?php if( $header_title['eael_data_table_header_col_icon_enabled'] == 'true' ) : ?>
620
+ <i class="data-header-icon <?php echo esc_attr( $header_title['eael_data_table_header_col_icon'] ); ?>"></i>
621
+ <?php endif; ?>
622
+ <?php if( $header_title['eael_data_table_header_col_img_enabled'] == 'true' ) : ?>
623
+ <img src="<?php echo esc_url( $header_title['eael_data_table_header_col_img']['url'] ) ?>" class="eael-data-table-th-img" style="width:<?php echo $header_title['eael_data_table_header_col_img_size'] ?>px" alt="<?php echo esc_attr( $header_title['eael_data_table_header_col'] ); ?>">
624
+ <?php endif; ?>
625
+ <?php echo esc_html__( $header_title['eael_data_table_header_col'], 'essential-addons-elementor' ); ?>
626
+ </th>
627
+ <?php endforeach; ?>
628
+ </tr>
629
+ </thead>
630
+ <tbody>
631
+ <?php for( $i = 0; $i < count( $table_tr ); $i++ ) : ?>
632
+ <tr>
633
+ <?php
634
+ for( $j = 0; $j < count( $table_td ); $j++ ) {
635
+ if( $table_tr[$i]['id'] == $table_td[$j]['row_id'] ) {
636
+ ?>
637
+ <?php if( !empty( $table_td[$j]['link_url'] ) ) : ?>
638
+ <td>
639
+ <a href="<?php echo esc_attr( $table_td[$j]['link_url'] ); ?>" <?php echo $table_td[$j]['link_target'] ?> <?php echo $table_td[$j]['nofollow'] ?>><?php echo $table_td[$j]['title']; ?></a>
640
+ </td>
641
+ <?php else: ?>
642
+ <td><?php echo $table_td[$j]['title']; ?></td>
643
+ <?php endif; ?>
644
+ <?php
645
+ }
646
+ }
647
+ ?>
648
+ </tr>
649
+ <?php endfor; ?>
650
+ </tbody>
651
+ </table>
652
+ </div>
653
+ <?php
654
+ }
655
+
656
+ protected function content_template() {
657
+
658
+ ?>
659
+
660
+
661
+ <?php
662
+ }
663
+ }
664
+
665
+
666
+ Plugin::instance()->widgets_manager->register_widget_type( new Widget_Eael_Data_Table() );
elements/filterable-gallery/filterable-gallery.php ADDED
@@ -0,0 +1,1029 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Elementor;
3
+
4
+ if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
5
+
6
+ class Widget_Eael_Filterable_Gallery extends Widget_Base {
7
+
8
+ public function get_name() {
9
+ return 'eael-filterable-gallery';
10
+ }
11
+
12
+ public function get_title() {
13
+ return esc_html__( 'EA Filterable Gallery', 'essential-addons-elementor' );
14
+ }
15
+
16
+ public function get_icon() {
17
+ return 'eicon-gallery-grid';
18
+ }
19
+
20
+ public function get_categories() {
21
+ return [ 'essential-addons-elementor' ];
22
+ }
23
+
24
+ protected function _register_controls() {
25
+ /**
26
+ * Filter Gallery Settings
27
+ */
28
+ $this->start_controls_section(
29
+ 'eael_section_fg_settings',
30
+ [
31
+ 'label' => esc_html__( 'Filterable Gallery Settings', 'essential-addons-elementor' )
32
+ ]
33
+ );
34
+
35
+ $this->add_control(
36
+ 'eael_fg_filter_duration',
37
+ [
38
+ 'label' => esc_html__( 'Animation Duration (ms)', 'essential-addons-elementor' ),
39
+ 'type' => Controls_Manager::TEXT,
40
+ 'label_block' => false,
41
+ 'default' => 500,
42
+ ]
43
+ );
44
+
45
+ $this->add_control(
46
+ 'eael_fg_filter_animation_style',
47
+ [
48
+ 'label' => esc_html__( 'Animation Style', 'essential-addons-elementor' ),
49
+ 'type' => Controls_Manager::SELECT,
50
+ 'default' => 'default',
51
+ 'options' => [
52
+ 'default' => esc_html__( 'Default', 'essential-addons-elementor' ),
53
+ 'effect-in' => esc_html__( 'Fade In', 'essential-addons-elementor' ),
54
+ 'effect-out' => esc_html__( 'Fade Out', 'essential-addons-elementor' ),
55
+ ],
56
+ ]
57
+ );
58
+
59
+ $this->add_control(
60
+ 'eael_fg_columns',
61
+ [
62
+ 'label' => esc_html__( 'Number of Columns', 'essential-addons-elementor' ),
63
+ 'type' => Controls_Manager::SELECT,
64
+ 'default' => 'eael-col-3',
65
+ 'options' => [
66
+ 'eael-col-1' => esc_html__( 'Single Column', 'essential-addons-elementor' ),
67
+ 'eael-col-2' => esc_html__( 'Two Columns', 'essential-addons-elementor' ),
68
+ 'eael-col-3' => esc_html__( 'Three Columns', 'essential-addons-elementor' ),
69
+ 'eael-col-4' => esc_html__( 'Four Columns', 'essential-addons-elementor' ),
70
+ 'eael-col-5' => esc_html__( 'Five Columns', 'essential-addons-elementor' ),
71
+ ],
72
+ ]
73
+ );
74
+
75
+ $this->add_control(
76
+ 'eael_fg_grid_style',
77
+ [
78
+ 'label' => esc_html__( 'Grid Style', 'essential-addons-elementor' ),
79
+ 'type' => Controls_Manager::SELECT,
80
+ 'default' => 'eael-hoverer',
81
+ 'options' => [
82
+ 'eael-hoverer' => esc_html__( 'Hoverer', 'essential-addons-elementor' ),
83
+ 'eael-tiles' => esc_html__( 'Tiles', 'essential-addons-elementor' ),
84
+ 'eael-cards' => esc_html__( 'Cards', 'essential-addons-elementor' ),
85
+ ],
86
+ ]
87
+ );
88
+
89
+ $this->add_control(
90
+ 'eael_fg_grid_hover_style',
91
+ [
92
+ 'label' => esc_html__( 'Hover Style', 'essential-addons-elementor' ),
93
+ 'type' => Controls_Manager::SELECT,
94
+ 'default' => 'eael-zoom-in',
95
+ 'options' => [
96
+ 'eael-zoom-in' => esc_html__( 'Zoom In', 'essential-addons-elementor' ),
97
+ 'eael-slide-left' => esc_html__( 'Slide In Left', 'essential-addons-elementor' ),
98
+ 'eael-slide-right' => esc_html__( 'Slide In Right', 'essential-addons-elementor' ),
99
+ 'eael-slide-top' => esc_html__( 'Slide In Top', 'essential-addons-elementor' ),
100
+ 'eael-slide-bottom' => esc_html__( 'Slide In Bottom', 'essential-addons-elementor' ),
101
+ ],
102
+ ]
103
+ );
104
+
105
+ $this->add_control(
106
+ 'eael_section_fg_zoom_icon',
107
+ [
108
+ 'label' => esc_html__( 'Zoom Icon', 'essential-addons-elementor' ),
109
+ 'type' => Controls_Manager::ICON,
110
+ 'default' => 'fa fa-search-plus',
111
+ ]
112
+ );
113
+
114
+ $this->add_control(
115
+ 'eael_section_fg_link_icon',
116
+ [
117
+ 'label' => esc_html__( 'Link Icon', 'essential-addons-elementor' ),
118
+ 'type' => Controls_Manager::ICON,
119
+ 'default' => 'fa fa-link',
120
+ ]
121
+ );
122
+
123
+ $this->end_controls_section();
124
+
125
+ /**
126
+ * Filter Gallery Control Settings
127
+ */
128
+ $this->start_controls_section(
129
+ 'eael_section_fg_control_settings',
130
+ [
131
+ 'label' => esc_html__( 'Gallery Control Settings', 'essential-addons-elementor' )
132
+ ]
133
+ );
134
+
135
+ $this->add_control(
136
+ 'eael_fg_controls',
137
+ [
138
+ 'type' => Controls_Manager::REPEATER,
139
+ 'seperator' => 'before',
140
+ 'default' => [
141
+ [ 'eael_fg_control' => 'Item' ],
142
+ ],
143
+ 'fields' => [
144
+ [
145
+ 'name' => 'eael_fg_control',
146
+ 'label' => esc_html__( 'List Item', 'essential-addons-elementor' ),
147
+ 'type' => Controls_Manager::TEXT,
148
+ 'label_block' => true,
149
+ 'default' => esc_html__( 'Item', 'essential-addons-elementor' )
150
+ ],
151
+ ],
152
+ 'title_field' => '{{eael_fg_control}}',
153
+ ]
154
+ );
155
+
156
+ $this->end_controls_section();
157
+
158
+ /**
159
+ * Filter Gallery Grid Settings
160
+ */
161
+ $this->start_controls_section(
162
+ 'eael_section_fg_grid_settings',
163
+ [
164
+ 'label' => esc_html__( 'Gallery Item Settings', 'essential-addons-elementor' )
165
+ ]
166
+ );
167
+
168
+ $this->add_control(
169
+ 'eael_fg_gallery_items',
170
+ [
171
+ 'type' => Controls_Manager::REPEATER,
172
+ 'seperator' => 'before',
173
+ 'default' => [
174
+ [ 'eael_fg_gallery_item_name' => 'Gallery Item Name' ],
175
+ [ 'eael_fg_gallery_item_name' => 'Gallery Item Name' ],
176
+ [ 'eael_fg_gallery_item_name' => 'Gallery Item Name' ],
177
+ [ 'eael_fg_gallery_item_name' => 'Gallery Item Name' ],
178
+ [ 'eael_fg_gallery_item_name' => 'Gallery Item Name' ],
179
+ [ 'eael_fg_gallery_item_name' => 'Gallery Item Name' ],
180
+ ],
181
+ 'fields' => [
182
+ [
183
+ 'name' => 'eael_fg_gallery_item_name',
184
+ 'label' => esc_html__( 'Item Name', 'essential-addons-elementor' ),
185
+ 'type' => Controls_Manager::TEXT,
186
+ 'label_block' => true,
187
+ 'default' => esc_html__( 'Gallery item name', 'essential-addons-elementor' )
188
+ ],
189
+ [
190
+ 'name' => 'eael_fg_gallery_item_content',
191
+ 'label' => esc_html__( 'Item Content', 'essential-addons-elementor' ),
192
+ 'type' => Controls_Manager::TEXTAREA,
193
+ 'label_block' => true,
194
+ 'default' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem, provident.', 'essential-addons-elementor' ),
195
+ ],
196
+ [
197
+ 'name' => 'eael_fg_gallery_control_name',
198
+ 'label' => esc_html__( 'Control Name', 'essential-addons-elementor' ),
199
+ 'type' => Controls_Manager::TEXT,
200
+ 'label_block' => true,
201
+ 'description' => esc_html__( 'User the gallery control name form Control Settings. use the exact name that matches with its associate name.', 'essential-addons-elementor' )
202
+ ],
203
+ [
204
+ 'name' => 'eael_fg_gallery_img',
205
+ 'label' => esc_html__( 'Image', 'essential-addons-elementor' ),
206
+ 'type' => Controls_Manager::MEDIA,
207
+ 'default' => [
208
+ 'url' => ESSENTIAL_ADDONS_EL_URL . 'assets/img/flexia-preview.jpg',
209
+ ],
210
+ ],
211
+ [
212
+ 'name' => 'eael_fg_gallery_link',
213
+ 'label' => __( 'Gallery Link?', 'essential-addons-elementor' ),
214
+ 'type' => Controls_Manager::SWITCHER,
215
+ 'default' => 'true',
216
+ 'label_on' => esc_html__( 'Yes', 'essential-addons-elementor' ),
217
+ 'label_off' => esc_html__( 'No', 'essential-addons-elementor' ),
218
+ 'return_value' => 'true',
219
+ ],
220
+ [
221
+ 'name' => 'eael_fg_gallery_img_link',
222
+ 'type' => Controls_Manager::URL,
223
+ 'label_block' => true,
224
+ 'default' => [
225
+ 'url' => '#',
226
+ 'is_external' => '',
227
+ ],
228
+ 'show_external' => true,
229
+ 'condition' => [
230
+ 'eael_fg_gallery_link' => 'true'
231
+ ]
232
+ ]
233
+ ],
234
+ 'title_field' => '{{eael_fg_gallery_item_name}}',
235
+ ]
236
+ );
237
+
238
+ $this->end_controls_section();
239
+
240
+ /**
241
+ * Filter Gallery Grid Settings
242
+ */
243
+ $this->start_controls_section(
244
+ 'eael_section_fg_popup_settings',
245
+ [
246
+ 'label' => esc_html__( 'Popup Settings', 'essential-addons-elementor' )
247
+ ]
248
+ );
249
+
250
+ $this->add_control(
251
+ 'eael_fg_show_popup',
252
+ [
253
+ 'label' => __( 'Show Popup', 'essential-addons-elementor' ),
254
+ 'type' => Controls_Manager::SWITCHER,
255
+ 'default' => 'true',
256
+ 'label_on' => esc_html__( 'Yes', 'essential-addons-elementor' ),
257
+ 'label_off' => esc_html__( 'No', 'essential-addons-elementor' ),
258
+ 'return_value' => 'true',
259
+ ]
260
+ );
261
+
262
+ $this->add_control(
263
+ 'eael_fg_show_popup_gallery',
264
+ [
265
+ 'label' => __( 'Show Popup Gallery', 'essential-addons-elementor' ),
266
+ 'type' => Controls_Manager::SWITCHER,
267
+ 'default' => 'true',
268
+ 'label_on' => esc_html__( 'Yes', 'essential-addons-elementor' ),
269
+ 'label_off' => esc_html__( 'No', 'essential-addons-elementor' ),
270
+ 'return_value' => 'true',
271
+ 'condition' => [
272
+ 'eael_fg_show_popup' => 'true'
273
+ ]
274
+ ]
275
+ );
276
+
277
+ $this->end_controls_section();
278
+
279
+ /**
280
+ * -------------------------------------------
281
+ * Tab Style (Filterable Gallery Style)
282
+ * -------------------------------------------
283
+ */
284
+ $this->start_controls_section(
285
+ 'eael_section_fg_style_settings',
286
+ [
287
+ 'label' => esc_html__( 'General Style', 'essential-addons-elementor' ),
288
+ 'tab' => Controls_Manager::TAB_STYLE
289
+ ]
290
+ );
291
+
292
+ $this->add_control(
293
+ 'eael_fg_bg_color',
294
+ [
295
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
296
+ 'type' => Controls_Manager::COLOR,
297
+ 'default' => '#fff',
298
+ 'selectors' => [
299
+ '{{WRAPPER}} .eael-filter-gallery-wrapper' => 'background-color: {{VALUE}};',
300
+ ],
301
+ ]
302
+ );
303
+
304
+ $this->add_responsive_control(
305
+ 'eael_fg_container_padding',
306
+ [
307
+ 'label' => esc_html__( 'Padding', 'essential-addons-elementor' ),
308
+ 'type' => Controls_Manager::DIMENSIONS,
309
+ 'size_units' => [ 'px', 'em', '%' ],
310
+ 'selectors' => [
311
+ '{{WRAPPER}} .eael-filter-gallery-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
312
+ ],
313
+ ]
314
+ );
315
+
316
+ $this->add_responsive_control(
317
+ 'eael_fg_container_margin',
318
+ [
319
+ 'label' => esc_html__( 'Margin', 'essential-addons-elementor' ),
320
+ 'type' => Controls_Manager::DIMENSIONS,
321
+ 'size_units' => [ 'px', 'em', '%' ],
322
+ 'selectors' => [
323
+ '{{WRAPPER}} .eael-filter-gallery-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
324
+ ],
325
+ ]
326
+ );
327
+
328
+ $this->add_group_control(
329
+ Group_Control_Border::get_type(),
330
+ [
331
+ 'name' => 'eael_fg_border',
332
+ 'label' => esc_html__( 'Border', 'essential-addons-elementor' ),
333
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-wrapper',
334
+ ]
335
+ );
336
+
337
+ $this->add_control(
338
+ 'eael_fg_border_radius',
339
+ [
340
+ 'label' => esc_html__( 'Border Radius', 'essential-addons-elementor' ),
341
+ 'type' => Controls_Manager::SLIDER,
342
+ 'default' => [
343
+ 'size' => 0,
344
+ ],
345
+ 'range' => [
346
+ 'px' => [
347
+ 'max' => 500,
348
+ ],
349
+ ],
350
+ 'selectors' => [
351
+ '{{WRAPPER}} .eael-filter-gallery-wrapper' => 'border-radius: {{SIZE}}px;',
352
+ ],
353
+ ]
354
+ );
355
+
356
+ $this->add_group_control(
357
+ Group_Control_Box_Shadow::get_type(),
358
+ [
359
+ 'name' => 'eael_fg_shadow',
360
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-wrapper',
361
+ ]
362
+ );
363
+
364
+ $this->end_controls_section();
365
+
366
+ /**
367
+ * -------------------------------------------
368
+ * Tab Style (Filterable Gallery Control Style)
369
+ * -------------------------------------------
370
+ */
371
+ $this->start_controls_section(
372
+ 'eael_section_fg_control_style_settings',
373
+ [
374
+ 'label' => esc_html__( 'Control Style', 'essential-addons-elementor' ),
375
+ 'tab' => Controls_Manager::TAB_STYLE
376
+ ]
377
+ );
378
+ $this->add_responsive_control(
379
+ 'eael_fg_control_padding',
380
+ [
381
+ 'label' => esc_html__( 'Padding', 'essential-addons-elementor' ),
382
+ 'type' => Controls_Manager::DIMENSIONS,
383
+ 'size_units' => [ 'px', 'em', '%' ],
384
+ 'selectors' => [
385
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
386
+ ],
387
+ ]
388
+ );
389
+
390
+ $this->add_responsive_control(
391
+ 'eael_fg_control_margin',
392
+ [
393
+ 'label' => esc_html__( 'Margin', 'essential-addons-elementor' ),
394
+ 'type' => Controls_Manager::DIMENSIONS,
395
+ 'size_units' => [ 'px', 'em', '%' ],
396
+ 'selectors' => [
397
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
398
+ ],
399
+ ]
400
+ );
401
+ $this->add_group_control(
402
+ Group_Control_Typography::get_type(),
403
+ [
404
+ 'name' => 'eael_fg_control_typography',
405
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-control ul li a.control',
406
+ ]
407
+ );
408
+ // Tabs
409
+ $this->start_controls_tabs( 'eael_fg_control_tabs' );
410
+
411
+ // Normal State Tab
412
+ $this->start_controls_tab( 'eael_fg_control_normal', [ 'label' => esc_html__( 'Normal', 'essential-addons-elementor' ) ] );
413
+
414
+ $this->add_control(
415
+ 'eael_fg_control_normal_text_color',
416
+ [
417
+ 'label' => esc_html__( 'Text Color', 'essential-addons-elementor' ),
418
+ 'type' => Controls_Manager::COLOR,
419
+ 'default' => '#444',
420
+ 'selectors' => [
421
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control' => 'color: {{VALUE}};',
422
+ ],
423
+ ]
424
+ );
425
+
426
+ $this->add_control(
427
+ 'eael_fg_control_normal_bg_color',
428
+ [
429
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
430
+ 'type' => Controls_Manager::COLOR,
431
+ 'default' => '',
432
+ 'selectors' => [
433
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control' => 'background: {{VALUE}};',
434
+ ],
435
+ ]
436
+ );
437
+
438
+ $this->add_group_control(
439
+ Group_Control_Border::get_type(),
440
+ [
441
+ 'name' => 'eael_fg_control_normal_border',
442
+ 'label' => esc_html__( 'Border', 'essential-addons-elementor' ),
443
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-control ul li > a.control',
444
+ ]
445
+ );
446
+
447
+ $this->add_control(
448
+ 'eael_fg_control_normal_border_radius',
449
+ [
450
+ 'label' => esc_html__( 'Border Radius', 'essential-addons-elementor' ),
451
+ 'type' => Controls_Manager::SLIDER,
452
+ 'default' => [
453
+ 'size' => 20
454
+ ],
455
+ 'range' => [
456
+ 'px' => [
457
+ 'max' => 30,
458
+ ],
459
+ ],
460
+ 'selectors' => [
461
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control' => 'border-radius: {{SIZE}}px;',
462
+ ],
463
+ ]
464
+ );
465
+
466
+ $this->add_group_control(
467
+ Group_Control_Box_Shadow::get_type(),
468
+ [
469
+ 'name' => 'eael_fg_control_shadow',
470
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-control ul li a.control',
471
+ 'separator' => 'before'
472
+ ]
473
+ );
474
+
475
+ $this->end_controls_tab();
476
+
477
+ // Active State Tab
478
+ $this->start_controls_tab( 'eael_cta_btn_hover', [ 'label' => esc_html__( 'Active', 'essential-addons-elementor' ) ] );
479
+
480
+ $this->add_control(
481
+ 'eael_fg_control_active_text_color',
482
+ [
483
+ 'label' => esc_html__( 'Text Color', 'essential-addons-elementor' ),
484
+ 'type' => Controls_Manager::COLOR,
485
+ 'default' => '#fff',
486
+ 'selectors' => [
487
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control.mixitup-control-active' => 'color: {{VALUE}};',
488
+ ],
489
+ ]
490
+ );
491
+
492
+ $this->add_control(
493
+ 'eael_fg_control_active_bg_color',
494
+ [
495
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
496
+ 'type' => Controls_Manager::COLOR,
497
+ 'default' => '#3F51B5',
498
+ 'selectors' => [
499
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control.mixitup-control-active' => 'background: {{VALUE}};',
500
+ ],
501
+ ]
502
+ );
503
+
504
+ $this->add_group_control(
505
+ Group_Control_Border::get_type(),
506
+ [
507
+ 'name' => 'eael_fg_control_active_border',
508
+ 'label' => esc_html__( 'Border', 'essential-addons-elementor' ),
509
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-control ul li > a.control.mixitup-control-active',
510
+ ]
511
+ );
512
+
513
+ $this->add_control(
514
+ 'eael_fg_control_active_border_radius',
515
+ [
516
+ 'label' => esc_html__( 'Border Radius', 'essential-addons-elementor' ),
517
+ 'type' => Controls_Manager::SLIDER,
518
+ 'default' => [
519
+ 'size' => 20
520
+ ],
521
+ 'range' => [
522
+ 'px' => [
523
+ 'max' => 30,
524
+ ],
525
+ ],
526
+ 'selectors' => [
527
+ '{{WRAPPER}} .eael-filter-gallery-control ul li a.control.mixitup-control-active' => 'border-radius: {{SIZE}}px;',
528
+ ],
529
+ ]
530
+ );
531
+
532
+ $this->add_group_control(
533
+ Group_Control_Box_Shadow::get_type(),
534
+ [
535
+ 'name' => 'eael_fg_control_active_shadow',
536
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-control ul li a.control.mixitup-control-active',
537
+ 'separator' => 'before'
538
+ ]
539
+ );
540
+
541
+ $this->end_controls_tab();
542
+
543
+ $this->end_controls_tabs();
544
+
545
+
546
+
547
+ $this->end_controls_section();
548
+
549
+
550
+
551
+ $this->end_controls_section();
552
+
553
+ /**
554
+ * -------------------------------------------
555
+ * Tab Style (Filterable Gallery Item Style)
556
+ * -------------------------------------------
557
+ */
558
+ $this->start_controls_section(
559
+ 'eael_section_fg_item_style_settings',
560
+ [
561
+ 'label' => esc_html__( 'Item Style', 'essential-addons-elementor' ),
562
+ 'tab' => Controls_Manager::TAB_STYLE
563
+ ]
564
+ );
565
+
566
+ $this->add_responsive_control(
567
+ 'eael_fg_item_container_padding',
568
+ [
569
+ 'label' => esc_html__( 'Padding', 'essential-addons-elementor' ),
570
+ 'type' => Controls_Manager::DIMENSIONS,
571
+ 'size_units' => [ 'px', 'em', '%' ],
572
+ 'selectors' => [
573
+ '{{WRAPPER}} .eael-filter-gallery-container .item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
574
+ ],
575
+ ]
576
+ );
577
+
578
+ $this->add_responsive_control(
579
+ 'eael_fg_item_container_margin',
580
+ [
581
+ 'label' => esc_html__( 'Margin', 'essential-addons-elementor' ),
582
+ 'type' => Controls_Manager::DIMENSIONS,
583
+ 'size_units' => [ 'px', 'em', '%' ],
584
+ 'selectors' => [
585
+ '{{WRAPPER}} .eael-filter-gallery-container .item' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
586
+ ],
587
+ ]
588
+ );
589
+
590
+ $this->add_group_control(
591
+ Group_Control_Border::get_type(),
592
+ [
593
+ 'name' => 'eael_fg_item_border',
594
+ 'label' => esc_html__( 'Border', 'essential-addons-elementor' ),
595
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container .item',
596
+ ]
597
+ );
598
+
599
+ $this->add_control(
600
+ 'eael_fg_item_border_radius',
601
+ [
602
+ 'label' => esc_html__( 'Border Radius', 'essential-addons-elementor' ),
603
+ 'type' => Controls_Manager::SLIDER,
604
+ 'default' => [
605
+ 'size' => 0,
606
+ ],
607
+ 'range' => [
608
+ 'px' => [
609
+ 'max' => 500,
610
+ ],
611
+ ],
612
+ 'selectors' => [
613
+ '{{WRAPPER}} .eael-filter-gallery-container .item' => 'border-radius: {{SIZE}}px;',
614
+ ],
615
+ ]
616
+ );
617
+
618
+ $this->add_group_control(
619
+ Group_Control_Box_Shadow::get_type(),
620
+ [
621
+ 'name' => 'eael_fg_item_shadow',
622
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container .item',
623
+ ]
624
+ );
625
+
626
+ $this->end_controls_section();
627
+ /**
628
+ * -------------------------------------------
629
+ * Tab Style (Filterable Gallery Item Caption Style)
630
+ * -------------------------------------------
631
+ */
632
+ $this->start_controls_section(
633
+ 'eael_section_fg_item_cap_style_settings',
634
+ [
635
+ 'label' => esc_html__( 'Item Caption Style', 'essential-addons-elementor' ),
636
+ 'tab' => Controls_Manager::TAB_STYLE
637
+ ]
638
+ );
639
+
640
+ $this->add_control(
641
+ 'eael_fg_item_cap_bg_color',
642
+ [
643
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
644
+ 'type' => Controls_Manager::COLOR,
645
+ 'default' => 'rgba(0,0,0,0.7)',
646
+ 'selectors' => [
647
+ '{{WRAPPER}} .eael-filter-gallery-container .item .caption' => 'background-color: {{VALUE}};',
648
+ ],
649
+ ]
650
+ );
651
+
652
+ $this->add_responsive_control(
653
+ 'eael_fg_item_cap_container_padding',
654
+ [
655
+ 'label' => esc_html__( 'Padding', 'essential-addons-elementor' ),
656
+ 'type' => Controls_Manager::DIMENSIONS,
657
+ 'size_units' => [ 'px', 'em', '%' ],
658
+ 'selectors' => [
659
+ '{{WRAPPER}} .eael-filter-gallery-container .item .caption' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
660
+ ],
661
+ ]
662
+ );
663
+
664
+ $this->add_group_control(
665
+ Group_Control_Border::get_type(),
666
+ [
667
+ 'name' => 'eael_fg_item_cap_border',
668
+ 'label' => esc_html__( 'Border', 'essential-addons-elementor' ),
669
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container .item .caption',
670
+ ]
671
+ );
672
+
673
+ $this->add_group_control(
674
+ Group_Control_Box_Shadow::get_type(),
675
+ [
676
+ 'name' => 'eael_fg_item_cap_shadow',
677
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container .item .caption',
678
+ ]
679
+ );
680
+
681
+ $this->add_control(
682
+ 'eael_fg_item_caption_hover_icon',
683
+ [
684
+ 'label' => esc_html__( 'Hover Icon', 'essential-addons-elementor' ),
685
+ 'type' => Controls_Manager::HEADING,
686
+ 'separator' => 'before'
687
+ ]
688
+ );
689
+
690
+ $this->add_control(
691
+ 'eael_fg_item_icon_bg_color',
692
+ [
693
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
694
+ 'type' => Controls_Manager::COLOR,
695
+ 'default' => '#ff622a',
696
+ 'selectors' => [
697
+ '{{WRAPPER}} .eael-filter-gallery-container .item .caption a' => 'background: {{VALUE}};',
698
+ ],
699
+ ]
700
+ );
701
+
702
+ $this->add_control(
703
+ 'eael_fg_item_icon_color',
704
+ [
705
+ 'label' => esc_html__( 'Color', 'essential-addons-elementor' ),
706
+ 'type' => Controls_Manager::COLOR,
707
+ 'default' => '#fff',
708
+ 'selectors' => [
709
+ '{{WRAPPER}} .eael-filter-gallery-container .item .caption a' => 'color: {{VALUE}};',
710
+ ],
711
+ ]
712
+ );
713
+
714
+ $this->end_controls_section();
715
+
716
+ /**
717
+ * -------------------------------------------
718
+ * Tab Style (Filterable Gallery Item Content Style)
719
+ * -------------------------------------------
720
+ */
721
+ $this->start_controls_section(
722
+ 'eael_section_fg_item_content_style_settings',
723
+ [
724
+ 'label' => esc_html__( 'Item Content Style', 'essential-addons-elementor' ),
725
+ 'tab' => Controls_Manager::TAB_STYLE,
726
+ 'condition' => [
727
+ 'eael_fg_grid_style' => 'eael-cards'
728
+ ]
729
+ ]
730
+ );
731
+
732
+ $this->add_control(
733
+ 'eael_fg_item_content_bg_color',
734
+ [
735
+ 'label' => esc_html__( 'Background Color', 'essential-addons-elementor' ),
736
+ 'type' => Controls_Manager::COLOR,
737
+ 'default' => '#f9f9f9',
738
+ 'selectors' => [
739
+ '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content' => 'background-color: {{VALUE}};',
740
+ ],
741
+ ]
742
+ );
743
+
744
+ $this->add_responsive_control(
745
+ 'eael_fg_item_content_container_padding',
746
+ [
747
+ 'label' => esc_html__( 'Padding', 'essential-addons-elementor' ),
748
+ 'type' => Controls_Manager::DIMENSIONS,
749
+ 'size_units' => [ 'px', 'em', '%' ],
750
+ 'selectors' => [
751
+ '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
752
+ ],
753
+ ]
754
+ );
755
+
756
+ $this->add_group_control(
757
+ Group_Control_Border::get_type(),
758
+ [
759
+ 'name' => 'eael_fg_item_content_border',
760
+ 'label' => esc_html__( 'Border', 'essential-addons-elementor' ),
761
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content',
762
+ ]
763
+ );
764
+
765
+ $this->add_group_control(
766
+ Group_Control_Box_Shadow::get_type(),
767
+ [
768
+ 'name' => 'eael_fg_item_content_shadow',
769
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content',
770
+ ]
771
+ );
772
+
773
+ $this->add_control(
774
+ 'eael_fg_item_content_title_typography_settings',
775
+ [
776
+ 'label' => esc_html__( 'Title Typography', 'essential-addons-elementor' ),
777
+ 'type' => Controls_Manager::HEADING,
778
+ 'separator' => 'before'
779
+ ]
780
+ );
781
+
782
+ $this->add_control(
783
+ 'eael_fg_item_content_title_color',
784
+ [
785
+ 'label' => esc_html__( 'Color', 'essential-addons-elementor' ),
786
+ 'type' => Controls_Manager::COLOR,
787
+ 'default' => '#303133',
788
+ 'selectors' => [
789
+ '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content .title a' => 'color: {{VALUE}};',
790
+ ],
791
+ ]
792
+ );
793
+
794
+ $this->add_control(
795
+ 'eael_fg_item_content_title_hover_color',
796
+ [
797
+ 'label' => esc_html__( 'Hover Color', 'essential-addons-elementor' ),
798
+ 'type' => Controls_Manager::COLOR,
799
+ 'default' => '#23527c',
800
+ 'selectors' => [
801
+ '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content .title a:hover' => 'color: {{VALUE}};',
802
+ ],
803
+ ]
804
+ );
805
+
806
+ $this->add_group_control(
807
+ Group_Control_Typography::get_type(),
808
+ [
809
+ 'name' => 'eael_fg_item_content_title_typography',
810
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content .title a',
811
+ ]
812
+ );
813
+
814
+ $this->add_control(
815
+ 'eael_fg_item_content_text_typography_settings',
816
+ [
817
+ 'label' => esc_html__( 'Content Typography', 'essential-addons-elementor' ),
818
+ 'type' => Controls_Manager::HEADING,
819
+ 'separator' => 'before'
820
+ ]
821
+ );
822
+
823
+ $this->add_control(
824
+ 'eael_fg_item_content_text_color',
825
+ [
826
+ 'label' => esc_html__( 'Color', 'essential-addons-elementor' ),
827
+ 'type' => Controls_Manager::COLOR,
828
+ 'default' => '#444',
829
+ 'selectors' => [
830
+ '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content p' => 'color: {{VALUE}};',
831
+ ],
832
+ ]
833
+ );
834
+
835
+ $this->add_group_control(
836
+ Group_Control_Typography::get_type(),
837
+ [
838
+ 'name' => 'eael_fg_item_content_text_typography',
839
+ 'selector' => '{{WRAPPER}} .eael-filter-gallery-container.eael-cards .item-content p',
840
+ ]
841
+ );
842
+
843
+ $this->add_responsive_control(
844
+ 'eael_fg_item_content_alignment',
845
+ [
846
+ 'label' => esc_html__( 'Content Alignment', 'essential-addons-elementor' ),
847
+ 'type' => Controls_Manager::CHOOSE,
848
+ 'label_block' => true,
849
+ 'separator' => 'before',
850
+ 'options' => [
851
+ 'left' => [
852
+ 'title' => esc_html__( 'Left', 'essential-addons-elementor' ),
853
+ 'icon' => 'fa fa-align-left',
854
+ ],
855
+ 'center' => [
856
+ 'title' => esc_html__( 'Center', 'essential-addons-elementor' ),
857
+ 'icon' => 'fa fa-align-center',
858
+ ],
859
+ 'right' => [
860
+ 'title' => esc_html__( 'Right', 'essential-addons-elementor' ),
861
+ 'icon' => 'fa fa-align-right',
862
+ ],
863
+ ],
864
+ 'default' => 'left',
865
+ 'prefix_class' => 'eael-fg-content-align-',
866
+ ]
867
+ );
868
+
869
+ $this->end_controls_section();
870
+
871
+ $this->start_controls_section(
872
+ 'eael_section_pro',
873
+ [
874
+ 'label' => __( 'Go Premium for More Features', 'essential-addons-elementor' )
875
+ ]
876
+ );
877
+
878
+ $this->add_control(
879
+ 'eael_control_get_pro',
880
+ [
881
+ 'label' => __( 'Unlock more possibilities', 'essential-addons-elementor' ),
882
+ 'type' => Controls_Manager::CHOOSE,
883
+ 'options' => [
884
+ '1' => [
885
+ 'title' => __( '', 'essential-addons-elementor' ),
886
+ 'icon' => 'fa fa-unlock-alt',
887
+ ],
888
+ ],
889
+ 'default' => '1',
890
+ 'description' => '<span class="pro-feature"> Get the <a href="https://essential-addons.com/elementor/buy.php" target="_blank">Pro version</a> for more stunning elements and customization options.</span>'
891
+ ]
892
+ );
893
+
894
+ $this->end_controls_section();
895
+ }
896
+
897
+ public function sorter_class( $string ) {
898
+ $sorter_class = strtolower( $string );
899
+ $sorter_class = preg_replace( '/[^a-z0-9_\s-]/', "", $sorter_class );
900
+ $sorter_class = preg_replace("/[\s-]+/", " ", $sorter_class);
901
+ $sorter_class = preg_replace("/[\s_]/", "-", $sorter_class);
902
+
903
+ return $sorter_class;
904
+ }
905
+
906
+ protected function render( ) {
907
+
908
+ $settings = $this->get_settings();
909
+
910
+ if( $settings['eael_fg_filter_animation_style'] == 'default' ) {
911
+ $fg_animation = 'fade translateZ(-100px)';
912
+ }elseif( $settings['eael_fg_filter_animation_style'] == 'effect-in' ) {
913
+ $fg_animation = 'fade translateY(-100%)';
914
+ }elseif( $settings['eael_fg_filter_animation_style'] == 'effect-out' ) {
915
+ $fg_animation = 'fade translateY(-100%)';
916
+ }
917
+
918
+ ?>
919
+ <div id="eael-filter-gallery-wrapper-<?php echo esc_attr( $this->get_id() ); ?>" class="eael-filter-gallery-wrapper">
920
+ <div class="eael-filter-gallery-control">
921
+ <ul>
922
+ <li><a href="javascript:;" class="control" data-filter="all">All</a></li>
923
+ <?php foreach( $settings['eael_fg_controls'] as $control ) : ?>
924
+ <?php $sorter_filter = $this->sorter_class( $control['eael_fg_control'] ); ?>
925
+ <li><a href="javascript:;" class="control" data-filter=".<?php echo esc_attr( $sorter_filter ); ?>-<?php echo esc_attr( $this->get_id() ); ?>"><?php echo $control['eael_fg_control']; ?></a></li>
926
+ <?php endforeach; ?>
927
+ </ul>
928
+ </div>
929
+ <?php if( $settings['eael_fg_grid_style'] == 'eael-hoverer' || $settings['eael_fg_grid_style'] == 'eael-tiles' ) : ?>
930
+ <div class="eael-filter-gallery-container <?php echo esc_attr( $settings['eael_fg_grid_style'] ); ?> <?php echo esc_attr( $settings['eael_fg_columns'] ); ?>" data-ref="mixitup-container-<?php echo esc_attr( $this->get_id() ); ?>">
931
+ <?php foreach( $settings['eael_fg_gallery_items'] as $gallery ) : ?>
932
+ <?php $sorter_class = $this->sorter_class( $gallery['eael_fg_gallery_control_name'] ); ?>
933
+ <div class="item <?php echo esc_attr( $sorter_class ) ?>-<?php echo esc_attr( $this->get_id() ); ?>" data-ref="mixitup-target-<?php echo esc_attr( $this->get_id() ); ?>" data-item-bg="<?php echo esc_attr( $gallery['eael_fg_gallery_img']['url'] ); ?>">
934
+ <div class="caption <?php echo esc_attr( $settings['eael_fg_grid_hover_style'] ); ?> ">
935
+ <?php if( 'true' == $settings['eael_fg_show_popup'] ) : ?>
936
+ <a href="<?php echo esc_attr( $gallery['eael_fg_gallery_img']['url'] ); ?>" class="eael-popup-link"><i class="<?php echo esc_attr( $settings['eael_section_fg_zoom_icon'] ); ?>"></i></a>
937
+ <?php endif; ?>
938
+ <?php if( 'true' == $gallery['eael_fg_gallery_link'] ) :
939
+ $eael_gallery_link = $gallery['eael_fg_gallery_img_link']['url'];
940
+ $target = $gallery['eael_fg_gallery_img_link']['is_external'] ? 'target="_blank"' : '';
941
+ $nofollow = $gallery['eael_fg_gallery_img_link']['nofollow'] ? 'rel="nofollow"' : '';
942
+ ?>
943
+ <a href="<?php echo esc_url( $eael_gallery_link ); ?>" <?php echo $target; ?> <?php echo $nofollow; ?> ><i class="<?php echo esc_attr( $settings['eael_section_fg_link_icon'] ); ?>"></i></a>
944
+ <?php endif; ?>
945
+ </div>
946
+ </div>
947
+ <?php endforeach; ?>
948
+ </div>
949
+ <?php elseif( $settings['eael_fg_grid_style'] == 'eael-cards' ) : ?>
950
+ <div class="eael-filter-gallery-container <?php echo esc_attr( $settings['eael_fg_grid_style'] ); ?> <?php echo esc_attr( $settings['eael_fg_columns'] ); ?>" data-ref="mixitup-container-<?php echo esc_attr( $this->get_id() ); ?>">
951
+ <?php foreach( $settings['eael_fg_gallery_items'] as $gallery ) : ?>
952
+ <?php $sorter_class = $this->sorter_class( $gallery['eael_fg_gallery_control_name'] ); ?>
953
+ <div class="item <?php echo esc_attr( $sorter_class ) ?>-<?php echo esc_attr( $this->get_id() ); ?>" data-ref="mixitup-target-<?php echo esc_attr( $this->get_id() ); ?>">
954
+ <div class="item-img" style="background-image:url('<?php echo esc_attr( $gallery['eael_fg_gallery_img']['url'] ); ?>')">
955
+ <div class="caption <?php echo esc_attr( $settings['eael_fg_grid_hover_style'] ); ?> ">
956
+ <?php if( 'true' == $settings['eael_fg_show_popup'] ) : ?>
957
+ <a href="<?php echo esc_url( $gallery['eael_fg_gallery_img']['url'] ); ?>" class="eael-popup-link"><i class="<?php echo esc_attr( $settings['eael_section_fg_zoom_icon'] ); ?>"></i></a>
958
+ <?php endif; ?>
959
+ <?php if( 'true' == $gallery['eael_fg_gallery_link'] ) :
960
+ $eael_gallery_link = $gallery['eael_fg_gallery_img_link']['url'];
961
+ $target = $gallery['eael_fg_gallery_img_link']['is_external'] ? 'target="_blank"' : '';
962
+ $nofollow = $gallery['eael_fg_gallery_img_link']['nofollow'] ? 'rel="nofollow"' : '';
963
+ ?>
964
+ <a href="<?php echo esc_url( $eael_gallery_link ); ?>" <?php echo $target; ?> <?php echo $nofollow; ?> ><i class="<?php echo esc_attr( $settings['eael_section_fg_link_icon'] ); ?>"></i></a>
965
+ <?php endif; ?>
966
+ </div>
967
+ </div>
968
+ <div class="item-content">
969
+ <h2 class="title"><a href="<?php echo esc_url( $gallery['eael_fg_gallery_img']['url'] ); ?>" <?php echo $target; ?> <?php echo $nofollow; ?>><?php esc_html_e( $gallery['eael_fg_gallery_item_name'], 'essential-addons-elementor' ); ?></a></h2>
970
+ <p><?php echo $gallery['eael_fg_gallery_item_content']; ?></p>
971
+ </div>
972
+ </div>
973
+ <?php endforeach; ?>
974
+ </div>
975
+ <?php endif; ?>
976
+ </div>
977
+ <script>
978
+ jQuery(document).ready( function($) {
979
+
980
+ var containerEl = document.querySelector('#eael-filter-gallery-wrapper-<?php echo esc_attr( $this->get_id() ); ?>');
981
+ var mixer = mixitup(containerEl, {
982
+ controls: {
983
+ scope: 'local'
984
+ },
985
+ selectors: {
986
+ target: '[data-ref~="mixitup-target-<?php echo esc_attr( $this->get_id() ); ?>"]'
987
+ },
988
+ animation: {
989
+ enable: true,
990
+ duration: '<?php if( !empty( $settings['eael_fg_filter_duration'] ) ) : echo $settings['eael_fg_filter_duration']; else: echo '500'; endif; ?>',
991
+ effects: '<?php echo $fg_animation; ?>',
992
+ easing: 'cubic-bezier(0.245, 0.045, 0.955, 1)',
993
+ }
994
+ });
995
+
996
+ // Set Background Image
997
+ <?php if( $settings['eael_fg_grid_style'] == 'eael-hoverer' || $settings['eael_fg_grid_style'] == 'eael-tiles' ) : ?>
998
+ var postColumn = $( '.eael-filter-gallery-container .item' );
999
+ postColumn.each( function() {
1000
+ let dataBg = $(this).attr( 'data-item-bg' );
1001
+ $(this).css( 'background-image', 'url( '+ dataBg +' )' );
1002
+ } );
1003
+ <?php endif; ?>
1004
+ // Magnific Popup
1005
+ <?php if( 'true' == $settings['eael_fg_show_popup'] ) : ?>
1006
+ $('#eael-filter-gallery-wrapper-<?php echo esc_attr( $this->get_id() ); ?> .eael-popup-link').magnificPopup({
1007
+ type: 'image',
1008
+ gallery:{
1009
+ enabled: <?php if( 'true' == $settings['eael_fg_show_popup_gallery'] ) : echo 'true'; else: echo 'false'; endif; ?>
1010
+ }
1011
+ });
1012
+ <?php endif; ?>
1013
+
1014
+ });
1015
+ </script>
1016
+ <?php
1017
+ }
1018
+
1019
+ protected function content_template() {
1020
+
1021
+ ?>
1022
+
1023
+
1024
+ <?php
1025
+ }
1026
+ }
1027
+
1028
+
1029
+ Plugin::instance()->widgets_manager->register_widget_type( new Widget_Eael_Filterable_Gallery() );
essential_adons_elementor.php CHANGED
@@ -4,8 +4,8 @@
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: Codetic
7
- * Version: 2.3.1
8
- * Author URI: http://www.codetic.net
9
  *
10
  * Text Domain: essential-addons-elementor
11
  */
@@ -23,7 +23,7 @@ require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
23
 
24
  function add_eael_elements(){
25
 
26
- $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'img-comparison', 'instagram-gallery', 'interactive-promo', 'lightbox', 'post-block', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonial-slider', 'testimonials', 'testimonials', 'weforms', 'static-product', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'flip-carousel', 'interactive-cards', 'ninja-form', 'gravity-form', 'caldera-form', 'wisdom_registered_setting', 'twitter-feed', 'facebook-feed' ];
27
  $eael_default_settings = array_fill_keys( $eael_default_keys, true );
28
 
29
  $is_component_active = get_option( 'eael_save_settings', $eael_default_settings );
@@ -92,10 +92,15 @@ function add_eael_elements(){
92
  if( $is_component_active['twitter-feed'] ) {
93
  require_once ESSENTIAL_ADDONS_EL_PATH.'elements/twitter-feed/twitter-feed.php';
94
  }
95
-
96
  if( $is_component_active['facebook-feed'] ) {
97
  require_once ESSENTIAL_ADDONS_EL_PATH.'elements/facebook-feed/facebook-feed.php';
98
  }
 
 
 
 
 
 
99
  }
100
  add_action('elementor/widgets/widgets_registered','add_eael_elements');
101
 
@@ -125,6 +130,11 @@ function essential_addons_el_enqueue(){
125
  wp_enqueue_script('essential_addons_elementor-socialfeed-js',ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/jquery.socialfeed.js', array('jquery'),'1.0', true);
126
  }
127
 
 
 
 
 
 
128
  }
129
  add_action( 'wp_enqueue_scripts', 'essential_addons_el_enqueue' );
130
 
@@ -172,12 +182,12 @@ function eael_redirect() {
172
 
173
  // Optional usage tracker
174
 
175
- if( ! class_exists( 'Plugin_Usage_Tracker') ) {
176
  require_once dirname( __FILE__ ) . '/includes/class-plugin-usage-tracker.php';
177
  }
178
  if( ! function_exists( 'essential_addons_elementor_lite_start_plugin_tracking' ) ) {
179
  function essential_addons_elementor_lite_start_plugin_tracking() {
180
- $wisdom = new Plugin_Usage_Tracker(
181
  __FILE__,
182
  'https://wpdeveloper.net',
183
  array(),
@@ -189,6 +199,7 @@ if( ! function_exists( 'essential_addons_elementor_lite_start_plugin_tracking' )
189
  essential_addons_elementor_lite_start_plugin_tracking();
190
  }
191
 
 
192
  // admin notice
193
 
194
  add_action('admin_notices', 'eael_admin_notice');
@@ -199,9 +210,10 @@ if ( current_user_can( 'install_plugins' ) )
199
  global $current_user ;
200
  $user_id = $current_user->ID;
201
  /* Check that the user hasn't already clicked to ignore the message */
202
- if ( ! get_user_meta($user_id, 'eael_ignore_notice231') ) {
203
  echo '<div class="eael-admin-notice updated"><p>';
204
- printf(__('We love to have you in our <strong>Essential Addons</strong> family. <span class="dashicons dashicons-heart" style="color: #f00;"></span> Show your love by leaving a review and encourage for more features. <a href="https://wpdeveloper.net/review-essential-addons-elementor" target="_blank" style="text-decoration: none;"><span class="dashicons dashicons-smiley"></span> Leave a Review</a>
 
205
   <a href="%1$s" style="text-decoration: none; margin-left: 10px;"><span class="dashicons dashicons-dismiss"></span> No Thanks</a>'), admin_url( 'admin.php?page=eael-settings&eael_nag_ignore=0' ));
206
  echo "</p></div>";
207
  }
@@ -215,6 +227,6 @@ function eael_nag_ignore() {
215
  $user_id = $current_user->ID;
216
  /* If user clicks to ignore the notice, add that to their user meta */
217
  if ( isset($_GET['eael_nag_ignore']) && '0' == $_GET['eael_nag_ignore'] ) {
218
- add_user_meta($user_id, 'eael_ignore_notice231', 'true', true);
219
  }
220
  }
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: Codetic
7
+ * Version: 2.4.0
8
+ * Author URI: https://www.codetic.net
9
  *
10
  * Text Domain: essential-addons-elementor
11
  */
23
 
24
  function add_eael_elements(){
25
 
26
+ $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'img-comparison', 'instagram-gallery', 'interactive-promo', 'lightbox', 'post-block', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonial-slider', 'testimonials', 'testimonials', 'weforms', 'static-product', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'flip-carousel', 'interactive-cards', 'ninja-form', 'gravity-form', 'caldera-form', 'wisdom_registered_setting', 'twitter-feed', 'facebook-feed', 'data-table', 'filter-gallery' ];
27
  $eael_default_settings = array_fill_keys( $eael_default_keys, true );
28
 
29
  $is_component_active = get_option( 'eael_save_settings', $eael_default_settings );
92
  if( $is_component_active['twitter-feed'] ) {
93
  require_once ESSENTIAL_ADDONS_EL_PATH.'elements/twitter-feed/twitter-feed.php';
94
  }
 
95
  if( $is_component_active['facebook-feed'] ) {
96
  require_once ESSENTIAL_ADDONS_EL_PATH.'elements/facebook-feed/facebook-feed.php';
97
  }
98
+ if( $is_component_active['data-table'] ) {
99
+ require_once ESSENTIAL_ADDONS_EL_PATH.'elements/data-table/data-table.php';
100
+ }
101
+ if( $is_component_active['filter-gallery'] ) {
102
+ require_once ESSENTIAL_ADDONS_EL_PATH.'elements/filterable-gallery/filterable-gallery.php';
103
+ }
104
  }
105
  add_action('elementor/widgets/widgets_registered','add_eael_elements');
106
 
130
  wp_enqueue_script('essential_addons_elementor-socialfeed-js',ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/jquery.socialfeed.js', array('jquery'),'1.0', true);
131
  }
132
 
133
+ if( $is_component_active['filter-gallery'] ) {
134
+ wp_enqueue_script('essential_addons_mixitup-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/mixitup.min.js', array('jquery'),'1.0', true);
135
+ wp_enqueue_script('essential_addons_magnific-popup-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/jquery.magnific-popup.min.js', array('jquery'),'1.0', true);
136
+ }
137
+
138
  }
139
  add_action( 'wp_enqueue_scripts', 'essential_addons_el_enqueue' );
140
 
182
 
183
  // Optional usage tracker
184
 
185
+ if( ! class_exists( 'Eael_Plugin_Usage_Tracker') ) {
186
  require_once dirname( __FILE__ ) . '/includes/class-plugin-usage-tracker.php';
187
  }
188
  if( ! function_exists( 'essential_addons_elementor_lite_start_plugin_tracking' ) ) {
189
  function essential_addons_elementor_lite_start_plugin_tracking() {
190
+ $wisdom = new Eael_Plugin_Usage_Tracker(
191
  __FILE__,
192
  'https://wpdeveloper.net',
193
  array(),
199
  essential_addons_elementor_lite_start_plugin_tracking();
200
  }
201
 
202
+
203
  // admin notice
204
 
205
  add_action('admin_notices', 'eael_admin_notice');
210
  global $current_user ;
211
  $user_id = $current_user->ID;
212
  /* Check that the user hasn't already clicked to ignore the message */
213
+ if ( ! get_user_meta($user_id, 'eael_ignore_notice240') ) {
214
  echo '<div class="eael-admin-notice updated"><p>';
215
+ echo '<img style="width: 15px; padding-right: 6px; float: left" src="' . plugins_url( '/', __FILE__ ).'admin/assets/images/gift-icon.png'. '" > ';
216
+ printf(__('<strong>Happy New Year!!</strong> Enjoy <strong>25&#37;</strong> discount on <strong>Essential Addons for Elementor Pro.</strong> Use the coupon <strong>"NewYear"</strong><a href="https://wpdeveloper.net/in/upgrade-essential-addons-elementor" target="_blank" style="text-decoration: none;"><span class="dashicons dashicons-tickets-alt" style="margin-top: -1px;margin-left: 10px;"></span> Grab the Deal</a>
217
   <a href="%1$s" style="text-decoration: none; margin-left: 10px;"><span class="dashicons dashicons-dismiss"></span> No Thanks</a>'), admin_url( 'admin.php?page=eael-settings&eael_nag_ignore=0' ));
218
  echo "</p></div>";
219
  }
227
  $user_id = $current_user->ID;
228
  /* If user clicks to ignore the notice, add that to their user meta */
229
  if ( isset($_GET['eael_nag_ignore']) && '0' == $_GET['eael_nag_ignore'] ) {
230
+ add_user_meta($user_id, 'eael_ignore_notice240', 'true', true);
231
  }
232
  }
includes/class-plugin-usage-tracker.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * This is the class that sends all the data back to the home site
4
  * It also handles opting in and deactivation
5
- * @version 1.1.1
6
  */
7
 
8
  // Exit if accessed directly
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
12
 
13
- if( ! class_exists( 'Plugin_Usage_Tracker') ) {
14
 
15
- class Plugin_Usage_Tracker {
16
 
17
- private $wisdom_version = '1.1.1';
18
  private $home_url = '';
19
  private $plugin_file = '';
20
  private $plugin_name = '';
@@ -72,13 +72,13 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
72
  // Check whether opt-in is required
73
  // If not, then tracking is allowed
74
  if( ! $this->require_optin ) {
 
75
  $this->set_is_tracking_allowed( true );
76
  $this->update_block_notice();
77
- $this->do_tracking();
78
  }
79
 
80
  // Hook our do_tracking function to the daily action
81
- // add_filter( 'cron_schedules', array( $this, 'add_weekly_cron_schedule' ) );
82
  add_action( 'put_do_weekly_action', array( $this, 'do_tracking' ) );
83
 
84
  // Use this action for local testing
@@ -95,19 +95,6 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
95
 
96
  }
97
 
98
- /**
99
- * Add weekly option to the cron schedule
100
- *
101
- * @since 1.1.2
102
- */
103
- public function add_weekly_cron_schedule( $schedules ) {
104
- $schedules['weekly'] = array(
105
- 'interval' => 604800,
106
- 'display' => __( 'Once weekly', 'put-usage-tracker' )
107
- );
108
- return $schedules;
109
- }
110
-
111
  /**
112
  * When the plugin is activated
113
  * Create scheduled event
@@ -120,8 +107,6 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
120
  if ( ! wp_next_scheduled( 'put_do_weekly_action' ) ) {
121
  wp_schedule_event( time(), 'daily', 'put_do_weekly_action' );
122
  }
123
- // Run tracking here in case plugin has been reactivated
124
- $this->do_tracking();
125
  }
126
 
127
  /**
@@ -131,8 +116,9 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
131
  * Then send it back
132
  *
133
  * @since 1.0.0
 
134
  */
135
- public function do_tracking() {
136
  // If the home site hasn't been defined, we just drop out. Nothing much we can do.
137
  if ( ! $this->home_url ) {
138
  return;
@@ -146,9 +132,11 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
146
 
147
  // Check to see if it's time to track
148
  $track_time = $this->get_is_time_to_track();
149
- if( ! $track_time ) {
150
  return;
151
  }
 
 
152
 
153
  // Get our data
154
  $body = $this->get_data();
@@ -212,7 +200,7 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
212
 
213
  // Collect the email if the correct option has been set
214
  if( $this->get_can_collect_email() ) {
215
- $body['email'] = get_bloginfo( 'admin_email' );
216
  }
217
  $body['marketing_method'] = $this->marketing;
218
 
@@ -517,6 +505,53 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
517
  update_option( 'wisdom_collect_email', $collect_email );
518
  }
519
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
520
  /**
521
  * Display the admin notice to users to allow them to opt in
522
  *
@@ -529,7 +564,7 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
529
  $action = sanitize_text_field( $_GET['plugin_action'] );
530
  if( $action == 'yes' ) {
531
  $this->set_is_tracking_allowed( true, $plugin );
532
- $this->do_tracking(); // Run this straightaway
533
  } else {
534
  $this->set_is_tracking_allowed( false, $plugin );
535
  }
@@ -621,7 +656,7 @@ if( ! class_exists( 'Plugin_Usage_Tracker') ) {
621
  // Set marketing optin
622
  $this->set_can_collect_email( sanitize_text_field( $_GET['marketing_optin'] ), $this->plugin_name );
623
  // Do tracking
624
- $this->do_tracking();
625
  } else if( isset( $_GET['marketing'] ) && $_GET['marketing']=='yes' ) {
626
  // Display the notice requesting permission to collect email address
627
  // Retrieve current plugin information
2
  /**
3
  * This is the class that sends all the data back to the home site
4
  * It also handles opting in and deactivation
5
+ * @version 1.1.2
6
  */
7
 
8
  // Exit if accessed directly
10
  exit;
11
  }
12
 
13
+ if( ! class_exists( 'Eael_Plugin_Usage_Tracker') ) {
14
 
15
+ class Eael_Plugin_Usage_Tracker {
16
 
17
+ private $wisdom_version = '1.1.2';
18
  private $home_url = '';
19
  private $plugin_file = '';
20
  private $plugin_name = '';
72
  // Check whether opt-in is required
73
  // If not, then tracking is allowed
74
  if( ! $this->require_optin ) {
75
+ $this->set_can_collect_email( true, $this->plugin_name );
76
  $this->set_is_tracking_allowed( true );
77
  $this->update_block_notice();
78
+ $this->do_tracking( true );
79
  }
80
 
81
  // Hook our do_tracking function to the daily action
 
82
  add_action( 'put_do_weekly_action', array( $this, 'do_tracking' ) );
83
 
84
  // Use this action for local testing
95
 
96
  }
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  /**
99
  * When the plugin is activated
100
  * Create scheduled event
107
  if ( ! wp_next_scheduled( 'put_do_weekly_action' ) ) {
108
  wp_schedule_event( time(), 'daily', 'put_do_weekly_action' );
109
  }
 
 
110
  }
111
 
112
  /**
116
  * Then send it back
117
  *
118
  * @since 1.0.0
119
+ * @param $force Force tracking if it's not time
120
  */
121
+ public function do_tracking( $force=false ) {
122
  // If the home site hasn't been defined, we just drop out. Nothing much we can do.
123
  if ( ! $this->home_url ) {
124
  return;
132
 
133
  // Check to see if it's time to track
134
  $track_time = $this->get_is_time_to_track();
135
+ if( ! $track_time && ! $force ) {
136
  return;
137
  }
138
+
139
+ $this->set_admin_email();
140
 
141
  // Get our data
142
  $body = $this->get_data();
200
 
201
  // Collect the email if the correct option has been set
202
  if( $this->get_can_collect_email() ) {
203
+ $body['email'] = $this->get_admin_email();
204
  }
205
  $body['marketing_method'] = $this->marketing;
206
 
505
  update_option( 'wisdom_collect_email', $collect_email );
506
  }
507
 
508
+ /**
509
+ * Get the correct email address to use
510
+ * @since 1.1.2
511
+ * @return Email address
512
+ */
513
+ public function get_admin_email() {
514
+ // The wisdom_collect_email option is an array of plugins that are being tracked
515
+ $email = get_option( 'wisdom_admin_emails' );
516
+ // If this plugin is in the array, then we can collect the email address
517
+ if( isset( $email[$this->plugin_name] ) ) {
518
+ return $email[$this->plugin_name];
519
+ }
520
+ return false;
521
+ }
522
+
523
+ /**
524
+ * Set the correct email address to use
525
+ * There might be more than one admin on the site
526
+ * So we only use the first admin's email address
527
+ * @param $email Email address to set
528
+ * @param $plugin Plugin name to set email address for
529
+ * @since 1.1.2
530
+ */
531
+ public function set_admin_email( $email=null, $plugin=null ) {
532
+ if( empty( $plugin ) ) {
533
+ $plugin = $this->plugin_name;
534
+ }
535
+ // If no email address passed, try to get the current user's email
536
+ if( empty( $email ) ) {
537
+ // Have to check that current user object is available
538
+ if( function_exists( 'wp_get_current_user' ) ) {
539
+ $current_user = wp_get_current_user();
540
+ $email = $current_user->user_email;
541
+ }
542
+ }
543
+ // The wisdom_admin_emails option is an array of admin email addresses
544
+ $admin_emails = get_option( 'wisdom_admin_emails' );
545
+ if( empty( $admin_emails ) || ! is_array( $admin_emails ) ) {
546
+ // If nothing exists in the option yet, start a new array with the plugin name
547
+ $admin_emails = array( $plugin => sanitize_email( $email ) );
548
+ } else if( empty( $admin_emails[$plugin] ) ) {
549
+ // Else add the email address to the array, if not already set
550
+ $admin_emails[$plugin] = sanitize_email( $email );
551
+ }
552
+ update_option( 'wisdom_admin_emails', $admin_emails );
553
+ }
554
+
555
  /**
556
  * Display the admin notice to users to allow them to opt in
557
  *
564
  $action = sanitize_text_field( $_GET['plugin_action'] );
565
  if( $action == 'yes' ) {
566
  $this->set_is_tracking_allowed( true, $plugin );
567
+ $this->do_tracking( true ); // Run this straightaway
568
  } else {
569
  $this->set_is_tracking_allowed( false, $plugin );
570
  }
656
  // Set marketing optin
657
  $this->set_can_collect_email( sanitize_text_field( $_GET['marketing_optin'] ), $this->plugin_name );
658
  // Do tracking
659
+ $this->do_tracking( true );
660
  } else if( isset( $_GET['marketing'] ) && $_GET['marketing']=='yes' ) {
661
  // Display the notice requesting permission to collect email address
662
  // Retrieve current plugin information
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: Codetic, re_enter_rupok, Asif2BD, robicse11128
3
  Tags: elementor, elements, addons, elementor addon, elementor widget, page builder, builder, visual editor, wordpress page builder
4
  Requires at least: 4.0
5
  Tested up to: 4.9.1
6
- Stable tag: 2.3.1
7
  License: GPLv3
8
  License URI: https://opensource.org/licenses/GPL-3.0
9
 
@@ -20,7 +20,7 @@ Ultimate elements library for Elementor WordPress Page Builder. Lots of useful
20
 
21
  ### Features
22
 
23
- * 20+ Stunning Elements (Free)
24
  * Fully Customizable
25
  * Unlimited Design Options
26
  * Elements Control option
@@ -49,6 +49,8 @@ Ultimate elements library for Elementor WordPress Page Builder. Lots of useful
49
  * [Pricing Table](https://essential-addons.com/elementor/pricing-table/)
50
  * [Facebook Feed](https://essential-addons.com/elementor/facebook-feed/)
51
  * [Twitter Feed](https://essential-addons.com/elementor/twitter-feed/)
 
 
52
 
53
 
54
 
@@ -67,6 +69,7 @@ Ultimate elements library for Elementor WordPress Page Builder. Lots of useful
67
  * [Data Table](https://essential-addons.com/elementor/table/)
68
  * [Facebook Feed Carousel](https://essential-addons.com/elementor/facebook-feed/)
69
  * [Twitter Feed Carousel](https://essential-addons.com/elementor/twitter-feed/)
 
70
 
71
  More coming soon (weekly update) ...
72
 
@@ -107,6 +110,12 @@ Your existing elements/content will work with premium version. So you won't lose
107
 
108
  == Changelog ==
109
 
 
 
 
 
 
 
110
  = 2.3.1 =
111
 
112
  - Facebook Feed element added
3
  Tags: elementor, elements, addons, elementor addon, elementor widget, page builder, builder, visual editor, wordpress page builder
4
  Requires at least: 4.0
5
  Tested up to: 4.9.1
6
+ Stable tag: 2.4.0
7
  License: GPLv3
8
  License URI: https://opensource.org/licenses/GPL-3.0
9
 
20
 
21
  ### Features
22
 
23
+ * 22+ Stunning Elements (Free)
24
  * Fully Customizable
25
  * Unlimited Design Options
26
  * Elements Control option
49
  * [Pricing Table](https://essential-addons.com/elementor/pricing-table/)
50
  * [Facebook Feed](https://essential-addons.com/elementor/facebook-feed/)
51
  * [Twitter Feed](https://essential-addons.com/elementor/twitter-feed/)
52
+ * [Data Table](https://essential-addons.com/elementor/table/)
53
+ * [Filterable Gallery](https://essential-addons.com/elementor/filterable-gallery/)
54
 
55
 
56
 
69
  * [Data Table](https://essential-addons.com/elementor/table/)
70
  * [Facebook Feed Carousel](https://essential-addons.com/elementor/facebook-feed/)
71
  * [Twitter Feed Carousel](https://essential-addons.com/elementor/twitter-feed/)
72
+ * [Dynamic Filterable Gallery](https://essential-addons.com/elementor/filterable-gallery/)
73
 
74
  More coming soon (weekly update) ...
75
 
110
 
111
  == Changelog ==
112
 
113
+ = 2.4.0 =
114
+
115
+ - Data Table element added
116
+ - Filterable Gallery added
117
+ - Few minor bug fixed and improvements
118
+
119
  = 2.3.1 =
120
 
121
  - Facebook Feed element added