CTX Feed – WooCommerce Product Feed Manager Plugin - Version 3.5.2

Version Description

(2020-04-28) = * Fix: Tracking notice dismiss error fixed. * Fix: Minor php error fixed.

Download this release

Release Info

Developer wahid0003
Plugin Icon 128x128 CTX Feed – WooCommerce Product Feed Manager Plugin
Version 3.5.2
Comparing to
See all releases

Code changes from version 3.3.9 to 3.5.2

Files changed (80) hide show
  1. README.txt +24 -2
  2. admin/class-woo-feed-admin.php +54 -26
  3. admin/class-woo-feed-manage-list.php +116 -114
  4. admin/css/fancy-select.css +172 -182
  5. admin/css/fancy-select.min.css +1 -1
  6. admin/css/fancy-select.scss +201 -0
  7. admin/css/index.php +1 -0
  8. admin/css/woo-feed-admin-pro.scss +742 -0
  9. admin/css/woo-feed-admin.css +831 -1038
  10. admin/css/woo-feed-admin.min.css +1 -1
  11. admin/css/woo-feed-admin.scss +1667 -0
  12. admin/fonts/index.php +1 -0
  13. admin/images/features/index.php +1 -0
  14. admin/images/index.php +1 -0
  15. admin/images/payment-options/index.php +1 -0
  16. admin/js/fancy-select.js +521 -442
  17. admin/js/fancy-select.min.js +2 -7
  18. admin/js/fancy-select.min.js.map +1 -0
  19. admin/js/index.php +1 -0
  20. admin/js/jquery-sortable.js +2 -3
  21. admin/js/jquery-sortable.min.js +2 -29
  22. admin/js/jquery-sortable.min.js.map +1 -0
  23. admin/js/woo-feed-admin-pro.min.js +2 -8
  24. admin/js/woo-feed-admin-pro.min.js.map +1 -0
  25. admin/js/woo-feed-admin.js +874 -456
  26. admin/js/woo-feed-admin.min.js +2 -8
  27. admin/js/woo-feed-admin.min.js.map +1 -0
  28. admin/partials/index.php +1 -0
  29. admin/partials/templates/comparer.be.txt +7 -0
  30. admin/partials/templates/daisycon.txt +10 -0
  31. admin/partials/templates/daisycon_automotive.txt +10 -0
  32. admin/partials/templates/daisycon_books.txt +10 -0
  33. admin/partials/templates/daisycon_cosmetics.txt +10 -0
  34. admin/partials/templates/daisycon_daily_offers.txt +10 -0
  35. admin/partials/templates/daisycon_electronics.txt +10 -0
  36. admin/partials/templates/daisycon_fashion.txt +10 -0
  37. admin/partials/templates/daisycon_food_drinks.txt +10 -0
  38. admin/partials/templates/daisycon_holidays_accommodations.txt +10 -0
  39. admin/partials/templates/daisycon_holidays_accommodations_and_transport.txt +10 -0
  40. admin/partials/templates/daisycon_holidays_trips.txt +10 -0
  41. admin/partials/templates/daisycon_home_garden.txt +10 -0
  42. admin/partials/templates/daisycon_housing.txt +10 -0
  43. admin/partials/templates/daisycon_magazines.txt +10 -0
  44. admin/partials/templates/daisycon_studies_trainings.txt +10 -0
  45. admin/partials/templates/daisycon_telecom_accessories.txt +10 -0
  46. admin/partials/templates/daisycon_telecom_all_in_one.txt +10 -0
  47. admin/partials/templates/daisycon_telecom_gsm.txt +10 -0
  48. admin/partials/templates/daisycon_telecom_gsm_subscription.txt +10 -0
  49. admin/partials/templates/daisycon_telecom_sim.txt +10 -0
  50. admin/partials/templates/daisycon_work_jobs.txt +10 -0
  51. admin/partials/templates/dooyoo.txt +7 -0
  52. admin/partials/templates/fruugo.au.txt +7 -0
  53. admin/partials/templates/hintaseuranta.fi.txt +7 -0
  54. admin/partials/templates/incurvy.txt +7 -0
  55. admin/partials/templates/index.php +1 -0
  56. admin/partials/templates/kijiji.ca.txt +7 -0
  57. admin/partials/templates/marktplaats.nl.txt +7 -0
  58. admin/partials/templates/myshopping.com.au.txt +3 -0
  59. admin/partials/templates/nextad.txt +7 -0
  60. admin/partials/templates/rakuten.de.txt +7 -0
  61. admin/partials/templates/shopalike.fr.txt +7 -0
  62. admin/partials/templates/skinflint.co.uk.txt +7 -0
  63. admin/partials/templates/skroutz.txt +5 -0
  64. admin/partials/templates/spartoo.fi.txt +7 -0
  65. admin/partials/templates/stylight.com.txt +7 -0
  66. admin/partials/templates/taxonomies/google_taxonomy.txt +5583 -0
  67. admin/partials/templates/taxonomies/index.php +1 -0
  68. admin/partials/templates/webmarchand.txt +7 -0
  69. admin/partials/templates/zap.co.il.txt +9 -0
  70. admin/partials/woo-feed-admin-display.php +10 -15
  71. admin/partials/woo-feed-content-settings.php +113 -115
  72. admin/partials/woo-feed-edit-config.php +84 -42
  73. admin/partials/woo-feed-edit-filter.php +57 -57
  74. admin/partials/woo-feed-edit-tabs.php +4 -4
  75. admin/partials/woo-feed-edit-template.php +7 -12
  76. admin/partials/woo-feed-manage-list.php +42 -289
  77. admin/partials/woo-feed-settings.php +105 -0
  78. includes/class-woo-feed-docs.php +13 -9
  79. includes/class-woo-feed-installer.php +30 -5
  80. includes/classes/class-woo-feed-admin-message.php +63 -50
README.txt CHANGED
@@ -3,9 +3,9 @@ Contributors: wahid0003, webappick, mhamudul_hk, shuvo586
3
  Donate link: https://webappick.com
4
  Tags:product feed,woocommerce product feed,google shopping feed,google shopping, XML CSV TXT product feed
5
  Requires at least: 3.6
6
- Tested Up To: 5.3.2
7
  Requires PHP: 5.6
8
- Stable tag: 3.3.9
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -305,6 +305,28 @@ Using pro version:
305
 
306
  == Changelog ==
307
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  = 3.3.9 (2020-03-18) =
309
  * Fix: Replace space character with underscore (`_`).
310
  * Fix: Fix and optimize sortable table initialization.
3
  Donate link: https://webappick.com
4
  Tags:product feed,woocommerce product feed,google shopping feed,google shopping, XML CSV TXT product feed
5
  Requires at least: 3.6
6
+ Tested Up To: 5.4
7
  Requires PHP: 5.6
8
+ Stable tag: 3.5.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
305
 
306
  == Changelog ==
307
 
308
+ = 3.5.2 (2020-04-28) =
309
+ * Fix: Tracking notice dismiss error fixed.
310
+ * Fix: Minor php error fixed.
311
+
312
+ = 3.5.1 (2020-04-20) =
313
+ * Fix: Review notice dismiss error fixed.
314
+
315
+ = 3.5.0 (2020-04-01) =
316
+ * Template: Google Shopping Action Template
317
+ * Template: Daisycon Feed Template (All 21 Standards)
318
+ * Fix: Custom Template XML issue fixed.
319
+ * Fix: Fixed PHPCS Recommended issue with proper coding standard and comments.
320
+ * Improvement: Move all inline JavaScripts to .js file
321
+ * Improvement: Caching with expiration and purge settings.
322
+ * Improvement: Refactor and removed deprecated codes.
323
+ * Improvement: JS & CSS Optimized. Minor UI Issues fixed.
324
+ * Improvement: Sort Template List (Merchant Dropdown)
325
+ * Feature: Debugging Option.
326
+ * Feature: Import Export Feed Config.
327
+ * Feature: Added Support for Main Category (With Support for Yoast SEO Primary Category).
328
+ * Feature: Add support for Google Category For Supporting Merchant.
329
+
330
  = 3.3.9 (2020-03-18) =
331
  * Fix: Replace space character with underscore (`_`).
332
  * Fix: Fix and optimize sortable table initialization.
admin/class-woo-feed-admin.php CHANGED
@@ -68,6 +68,7 @@ class Woo_Feed_Admin {
68
  $mainDeps = array();
69
  $ext = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.css' : '.min.css';
70
  if ( false !== strpos( $hook, 'webappick' ) && false !== strpos( $hook, 'feed' ) ) {
 
71
  wp_register_style( 'selectize', plugin_dir_url( __FILE__ ) . 'css/selectize' . $ext, array(), $this->version );
72
  wp_enqueue_style( 'fancy-select', plugin_dir_url( __FILE__ ) . 'css/fancy-select' . $ext, array(), $this->version );
73
  wp_register_style( 'slick', plugin_dir_url( __FILE__ ) . 'css/slick' . $ext, array(), $this->version );
@@ -104,6 +105,10 @@ class Woo_Feed_Admin {
104
  */
105
  $ext = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.js' : '.min.js';
106
  if ( false !== strpos( $hook, 'webappick' ) && false !== strpos( $hook, 'feed' ) ) {
 
 
 
 
107
  wp_register_script( 'jquery-selectize', plugin_dir_url( __FILE__ ) . 'js/selectize.min.js', array( 'jquery' ), $this->version, false );
108
  wp_register_script( 'fancy-select', plugin_dir_url( __FILE__ ) . 'js/fancy-select' . $ext, array( 'jquery' ), $this->version, false );
109
  wp_register_script( 'jquery-validate', plugin_dir_url( __FILE__ ) . 'js/jquery.validate.min.js', array( 'jquery' ), $this->version, false );
@@ -132,34 +137,57 @@ class Woo_Feed_Admin {
132
  ];
133
 
134
  wp_register_script( $this->woo_feed, plugin_dir_url( __FILE__ ) . 'js/woo-feed-admin' . $ext, $feedScriptDependency, $this->version, false );
135
- wp_localize_script(
136
- $this->woo_feed,
137
- 'wpf_ajax_obj',
138
- array(
139
- 'wpf_ajax_url' => admin_url( 'admin-ajax.php' ),
140
- 'nonce' => wp_create_nonce( 'wpf_feed_nonce' ),
141
- 'is_feed_edit' => isset( $_GET['page'], $_GET['action'] ) && 'webappick-manage-feeds' == $_GET['page'] && 'edit-feed' == $_GET['action'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
142
- 'is_feed_add' => isset( $_GET['page'] ) && 'webappick-new-feed' == $_GET['page'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
143
- 'na' => esc_html__( 'N/A', 'woo-feed' ),
144
- 'regenerate' => esc_html__( 'Generating...', 'woo-feed' ),
145
- 'learn_more' => esc_html__( 'Learn More..', 'woo-feed' ),
146
- 'form' => array(
147
- 'select_category' => esc_attr__( 'Select A Category', 'woo-feed' ),
148
- 'loading_tmpl' => esc_html__( 'Loading Template...', 'woo-feed' ),
149
- 'generate' => esc_html__( 'Delivering Configuration...', 'woo-feed' ),
150
- 'save' => esc_html__( 'Saving Configuration...', 'woo-feed' ),
151
- 'sftp_checking' => esc_html__( 'Wait! Checking Extensions ...', 'woo-feed' ),
152
- 'sftp_warning' => esc_html__( 'Warning! Enable PHP ssh2 extension to use SFTP. Contact your server administrator.', 'woo-feed' ),
153
- 'sftp_available' => esc_html__( 'SFTP Available!', 'woo-feed' ),
154
- 'one_item_required' => esc_html__( 'Please add one or more items to continue.', 'woo-feed' ),
155
- ),
156
- 'ajax' => [
157
- 'url' => admin_url( 'admin-ajax.php' ),
158
- 'nonce' => wp_create_nonce( 'wpf_feed_nonce' ),
159
- 'error' => esc_html__( 'There was an error processing ajax request.', 'woo-feed' ),
160
  ],
161
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  );
 
 
 
 
 
 
 
 
 
 
 
163
  wp_enqueue_script( $this->woo_feed );
164
 
165
  if ( 'woo-feed_page_webappick-feed-pro-vs-free' === $hook ) {
68
  $mainDeps = array();
69
  $ext = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.css' : '.min.css';
70
  if ( false !== strpos( $hook, 'webappick' ) && false !== strpos( $hook, 'feed' ) ) {
71
+ wp_enqueue_style('thickbox');
72
  wp_register_style( 'selectize', plugin_dir_url( __FILE__ ) . 'css/selectize' . $ext, array(), $this->version );
73
  wp_enqueue_style( 'fancy-select', plugin_dir_url( __FILE__ ) . 'css/fancy-select' . $ext, array(), $this->version );
74
  wp_register_style( 'slick', plugin_dir_url( __FILE__ ) . 'css/slick' . $ext, array(), $this->version );
105
  */
106
  $ext = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.js' : '.min.js';
107
  if ( false !== strpos( $hook, 'webappick' ) && false !== strpos( $hook, 'feed' ) ) {
108
+ wp_enqueue_script('thickbox');
109
+ if ( is_network_admin() ) {
110
+ add_action( 'admin_head', '_thickbox_path_admin_subfolder' );
111
+ }
112
  wp_register_script( 'jquery-selectize', plugin_dir_url( __FILE__ ) . 'js/selectize.min.js', array( 'jquery' ), $this->version, false );
113
  wp_register_script( 'fancy-select', plugin_dir_url( __FILE__ ) . 'js/fancy-select' . $ext, array( 'jquery' ), $this->version, false );
114
  wp_register_script( 'jquery-validate', plugin_dir_url( __FILE__ ) . 'js/jquery.validate.min.js', array( 'jquery' ), $this->version, false );
137
  ];
138
 
139
  wp_register_script( $this->woo_feed, plugin_dir_url( __FILE__ ) . 'js/woo-feed-admin' . $ext, $feedScriptDependency, $this->version, false );
140
+
141
+ $js_opts = array(
142
+ 'wpf_ajax_url' => admin_url( 'admin-ajax.php' ),
143
+ 'wpf_debug' => woo_feed_is_debugging_enabled(),
144
+ 'pages' => [
145
+ 'list' => [
146
+ 'feed' => esc_url( admin_url( 'admin.php?page=webappick-manage-feeds' ) ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  ],
148
+ ],
149
+ 'nonce' => wp_create_nonce( 'wpf_feed_nonce' ),
150
+ 'is_feed_edit' => isset( $_GET['page'], $_GET['action'] ) && 'webappick-manage-feeds' == $_GET['page'] && 'edit-feed' == $_GET['action'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
151
+ 'is_feed_add' => isset( $_GET['page'] ) && 'webappick-new-feed' == $_GET['page'], // phpcs:ignore WordPress.Security.NonceVerification.Recommended
152
+ 'na' => esc_html__( 'N/A', 'woo-feed' ),
153
+ 'regenerate' => esc_html__( 'Generating...', 'woo-feed' ),
154
+ 'learn_more' => esc_html__( 'Learn More..', 'woo-feed' ),
155
+ 'form' => array(
156
+ 'select_category' => esc_attr__( 'Select A Category', 'woo-feed' ),
157
+ 'loading_tmpl' => esc_html__( 'Loading Template...', 'woo-feed' ),
158
+ 'generate' => esc_html__( 'Delivering Configuration...', 'woo-feed' ),
159
+ 'save' => esc_html__( 'Saving Configuration...', 'woo-feed' ),
160
+ 'sftp_checking' => esc_html__( 'Wait! Checking Extensions ...', 'woo-feed' ),
161
+ 'sftp_warning' => esc_html__( 'Warning! Enable PHP ssh2 extension to use SFTP. Contact your server administrator.', 'woo-feed' ),
162
+ 'sftp_available' => esc_html__( 'SFTP Available!', 'woo-feed' ),
163
+ 'one_item_required' => esc_html__( 'Please add one or more items to continue.', 'woo-feed' ),
164
+ 'google_category' => woo_feed_merchant_require_google_category(),
165
+ 'del_confirm' => esc_html__( 'Are you sure you want to delete this item?', 'woo-feed' ),
166
+ 'del_confirm_multi' => esc_html__( 'Are you sure you want to delete selected items?', 'woo-feed' ),
167
+ 'item_wrapper_hidden' => woo_feed_get_item_wrapper_hidden_merchant(),
168
+ ),
169
+ 'generator' => [
170
+ 'limit' => woo_feed_get_options( 'per_batch' ),
171
+ 'feed' => '',
172
+ 'regenerate' => false,
173
+ ],
174
+ 'ajax' => [
175
+ 'url' => admin_url( 'admin-ajax.php' ),
176
+ 'nonce' => wp_create_nonce( 'wpf_feed_nonce' ),
177
+ 'error' => esc_html__( 'There was an error processing ajax request.', 'woo-feed' ),
178
+ ],
179
  );
180
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
181
+ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset( $_GET['feed_imported'] ) ) && isset( $_GET['feed_regenerate'] ) && 1 == $_GET['feed_regenerate'] ) {
182
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
183
+ $fileName = isset( $_GET['feed_name'] ) && ! empty( $_GET['feed_name'] ) ? sanitize_text_field( $_GET['feed_name'] ) : ''; // trigger feed regenerate...
184
+ if ( ! empty( $fileName ) ) {
185
+ // filename must be wf_config+XXX format for js to work.
186
+ $js_opts['generator']['feed'] = 'wf_config' . woo_feed_extract_feed_option_name( $fileName );
187
+ $js_opts['generator']['regenerate'] = true;
188
+ }
189
+ }
190
+ wp_localize_script( $this->woo_feed, 'wpf_ajax_obj', $js_opts );
191
  wp_enqueue_script( $this->woo_feed );
192
 
193
  if ( 'woo-feed_page_webappick-feed-pro-vs-free' === $hook ) {
admin/class-woo-feed-manage-list.php CHANGED
@@ -11,7 +11,7 @@
11
  * @author Ohidul Islam <wahid@webappick.com>
12
  */
13
  class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
14
-
15
  /** ************************************************************************
16
  * Normally we would be querying data from a database and manipulating that
17
  * for use in your list table. For this example, we're going to simplify it
@@ -23,23 +23,25 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
23
  *
24
  * @var array
25
  **************************************************************************/
26
-
27
-
28
  /** ************************************************************************
29
  * REQUIRED. Set up a constructor that references the parent constructor. We
30
  * use the parent reference to set some default configs.
31
  ***************************************************************************/
32
  function __construct() {
33
- //Set parent defaults
34
- parent::__construct( array(
35
- 'singular' => __( 'feed', 'woo-feed' ), //singular name of the listed records
36
- 'plural' => __( 'feeds', 'woo-feed' ), //plural name of the listed records
37
- 'ajax' => false, //does this table support ajax?
38
- ) );
39
-
 
 
40
  }
41
-
42
-
43
  /** ************************************************************************
44
  * Recommended. This method is called when the parent class can't find a method
45
  * specifically build for a given column. Generally, it's recommended to include
@@ -57,11 +59,10 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
57
  * For more detailed insight into how columns are handled, take a look at
58
  * WP_List_Table::single_row_columns()
59
  *
60
- * @param array $item A singular item (one full row's worth of data)
61
  * @param string $column_name The name/slug of the column to be processed
62
  *
63
  * @return string Text or HTML to be placed inside the column <td>
64
- *
65
  **************************************************************************/
66
  function column_default( $item, $column_name ) {
67
  $getItem = $item['option_name'];
@@ -69,7 +70,7 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
69
  $itemInfo = maybe_unserialize( get_option( $getItem ) );
70
  global $regenerating, $regeneratingName;
71
  $optionName = str_replace( 'wf_feed_', '', $getItem );
72
- $spinIcon = ( true === $regenerating && $optionName === $regeneratingName ) ? ' wpf_spin_reverse' : '';
73
  $disableBtn = true === $regenerating ? ' disabled' : '';
74
  switch ( $column_name ) {
75
  case 'option_name':
@@ -84,11 +85,11 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
84
  }
85
  case 'provider':
86
  $provider = $itemInfo['feedrules']['provider'];
87
-
88
  return ucwords( str_replace( '_', ' ', $provider ) );
89
  case 'type':
90
  $feedType = $itemInfo['feedrules']['feedType'];
91
-
92
  return strtoupper( str_replace( '_', ' ', $feedType ) );
93
  case 'url':
94
  /** @noinspection SpellCheckingInspection */
@@ -101,27 +102,29 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
101
  case 'last_updated':
102
  return $itemInfo[ $column_name ];
103
  case 'view':
104
- $view = $itemInfo['url'];
105
-
106
  /** @noinspection HtmlUnknownTarget */
107
  return sprintf(
108
  '<a href="%1$s" title="%2$s" aria-label="%2$s" target="_blank"><span class="dashicons dashicons-external" aria-hidden="true"></span></a>
109
  <a id="%3$s" class="wpf_regenerate%6$s" href="#" title="%4$s" aria-label="%4$s"><span class="dashicons dashicons-update-alt%7$s" aria-hidden="true"></span></a>
110
- <a href="%1$s" title="%5$s" aria-label="%5$s" download><span class="dashicons dashicons-download" aria-hidden="true"></span></a>',
111
- $view,
112
- __( 'View', 'woo-feed' ),
 
113
  $getItem,
114
- __( 'Regenerate', 'woo-feed' ),
115
- __( 'Download', 'woo-feed' ),
116
  $disableBtn,
117
- $spinIcon
 
 
118
  );
119
  default:
120
  return false;
121
  }
122
  }
123
-
124
-
125
  /** ************************************************************************
126
  * Recommended. This is a custom column method and is responsible for what
127
  * is rendered in any column with a name/slug of 'title'. Every time the class
@@ -133,35 +136,34 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
133
  * should be an associative array formatted as 'slug'=>'link html' - and you
134
  * will need to generate the URLs yourself. You could even ensure the links
135
  *
136
- *
137
  * @param array $item A singular item (one full row's worth of data)
138
  *
139
  * @return string Text to be placed inside the column <td> (movie title only)
140
- **************************************************************************@see WP_List_Table::::single_row_columns()
141
  */
142
  function column_option_name( $item ) {
143
  global $plugin_page;
144
- //Build row actions
145
- $edit_nonce = wp_create_nonce( 'wf_edit_feed' );
146
- $delete_nonce = wp_create_nonce( 'wf_delete_feed' );
147
- //$title = '<strong>' . $item['option_name'] . '</strong>';
148
  $actions = array(
149
  'edit' => sprintf(
150
  '<a href="?page=%s&action=%s&feed=%s&_wpnonce=%s">' . __( 'Edit', 'woo-feed' ) . '</a>',
151
- $plugin_page,
152
  'edit-feed',
153
  $item['option_name'],
154
  $edit_nonce
155
  ),
156
  'delete' => sprintf(
157
  '<a val="?page=%s&action=%s&feed=%s&_wpnonce=%s" class="single-feed-delete" style="cursor: pointer;">' . __( 'Delete', 'woo-feed' ) . '</a>',
158
- $plugin_page,
159
  'delete-feed',
160
  absint( $item['option_id'] ),
161
  $delete_nonce
162
  ),
163
  );
164
- //Return the title contents
165
  $name = str_replace( 'wf_feed_', '', $item['option_name'] );
166
  $config = maybe_unserialize( maybe_unserialize( $item['option_value'] ) );
167
  if ( isset( $config['feedrules'], $config['feedrules']['filename'] ) ) {
@@ -174,37 +176,42 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
174
  $this->row_actions( $actions )
175
  );
176
  }
177
-
178
  public static function get_feeds() {
179
  global $wpdb;
180
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
181
  $result = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->options WHERE option_name LIKE %s ORDER BY option_id DESC;", 'wf_feed_%' ), 'ARRAY_A' );
182
  return $result;
183
  }
184
-
185
  /**
186
  * Delete a Feed.
187
  *
188
  * @param int $id Feed ID
189
  *
190
- * @return false|int
191
  */
192
  public static function delete_feed( $id ) {
193
  return woo_feed_delete_feed( $id );
194
  }
195
-
 
 
 
 
 
196
  public static function record_count() {
197
  global $wpdb;
198
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
199
  return $wpdb->get_var( $wpdb->prepare( "SELECT * FROM $wpdb->options WHERE option_name like %s", 'wf_feed_%' ) );
200
  }
201
-
202
  /** Text displayed when no data is available */
203
  public function no_items() {
204
  _e( 'No feed available.', 'woo-feed' );
205
  }
206
-
207
-
208
  /** ************************************************************************
209
  * REQUIRED if displaying checkboxes or using bulk actions! The 'cb' column
210
  * is given special treatment when columns are processed. It ALWAYS needs to
@@ -213,44 +220,44 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
213
  * @param array $item A singular item (one full row's worth of data)
214
  *
215
  * @return string Text to be placed inside the column <td> (movie title only)
216
- **************************************************************************@see WP_List_Table::::single_row_columns()
217
  */
218
  function column_cb( $item ) {
219
  return sprintf(
220
  '<input type="checkbox" name="%1$s[]" value="%2$s" />',
221
  /*$1%s*/
222
- $this->_args['singular'], //Let's simply repurpose the table's singular label ("movie")
223
  /*$2%s*/
224
- $item['option_id'] //The value of the checkbox should be the record's id
225
  );
226
  }
227
-
228
-
229
  function column_name( $item ) {
230
  global $plugin_page;
231
- $edit_nonce = wp_create_nonce( 'wf_edit_feed' );
232
- $delete_nonce = wp_create_nonce( 'wf_delete_feed' );
233
- $title = '<strong>' . $item['option_name'] . '</strong>';
234
- $actions = array(
235
  'edit' => sprintf(
236
  '<a href="?page=%s&action=%s&feed=%s&_wpnonce=%s">' . __( 'Edit', 'woo-feed' ) . '</a>',
237
- $plugin_page,
238
  'edit-feed',
239
  absint( $item['option_id'] ),
240
  $edit_nonce
241
  ),
242
  'delete' => sprintf(
243
  '<a val="?page=%s&action=%s&feed=%s&_wpnonce=%s" class="single-feed-delete" style="cursor: pointer;">' . __( 'Delete', 'woo-feed' ) . '</a>',
244
- $plugin_page,
245
  'delete-feed',
246
  absint( $item['option_id'] ),
247
  $delete_nonce
248
  ),
249
  );
250
-
251
  return $title . $this->row_actions( $actions );
252
  }
253
-
254
  /** ************************************************************************
255
  * REQUIRED! This method dictates the table's columns and titles. This should
256
  * return an array where the key is the column slug (and class) and the value
@@ -262,11 +269,11 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
262
  * bulk actions or checkboxes, simply leave the 'cb' entry out of your array.
263
  *
264
  * @return array An associative array containing column information: 'slugs'=>'Visible Titles'
265
- **************************************************************************@see WP_List_Table::::single_row_columns()
266
  */
267
  function get_columns() {
268
  $columns = array(
269
- 'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
270
  'status' => __( 'Auto Update', 'woo-feed' ),
271
  'option_name' => __( 'Feed Name', 'woo-feed' ),
272
  'provider' => __( 'Provider', 'woo-feed' ),
@@ -275,11 +282,11 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
275
  'last_updated' => __( 'Last Updated', 'woo-feed' ),
276
  'view' => __( 'Action', 'woo-feed' ),
277
  );
278
-
279
  return $columns;
280
  }
281
-
282
-
283
  /** ************************************************************************
284
  * Optional. If you want one or more columns to be sortable (ASC/DESC toggle),
285
  * you will need to register it here. This should return an array where the
@@ -298,11 +305,11 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
298
  $sortable_columns = array(
299
  'option_name' => array( 'option_name', false ),
300
  );
301
-
302
  return $sortable_columns;
303
  }
304
-
305
-
306
  /** ************************************************************************
307
  * Optional. If you need to include bulk actions in your list table, this is
308
  * the place to define them. Bulk actions are an associative array in the format
@@ -321,11 +328,11 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
321
  $actions = array(
322
  'bulk-delete' => __( 'Delete', 'woo-feed' ),
323
  );
324
-
325
  return $actions;
326
  }
327
-
328
-
329
  /** ************************************************************************
330
  * Optional. You can handle your bulk actions anywhere or anyhow you prefer.
331
  * For this example package, we will handle it in the class to keep things
@@ -334,42 +341,42 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
334
  * @see $this->prepare_items()
335
  **************************************************************************/
336
  public function process_bulk_action() {
337
- //Detect when a bulk action is being triggered...
338
  if ( 'delete-feed' === $this->current_action() ) {
339
  // In our file that handles the request, verify the nonce.
340
- if ( ! isset( $_REQUEST['_wpnonce'] ) || isset( $_REQUEST['_wpnonce'] ) && ! wp_verify_nonce( sanitize_text_field( $_REQUEST['_wpnonce'] ), 'wf_delete_feed' ) ) {
 
341
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Feed. You do not have sufficient permission to delete.', 'woo-feed' ), false );
342
- wp_safe_redirect( admin_url( "admin.php?page=webappick-manage-feeds&wpf_message=error" ) );
343
  die();
344
  } else {
345
  if ( isset( $_GET['feed'] ) && self::delete_feed( absint( $_GET['feed'] ) ) ) {
346
  update_option( 'wpf_message', esc_html__( 'Feed Deleted Successfully', 'woo-feed' ), false );
347
- wp_safe_redirect( admin_url( "admin.php?page=webappick-manage-feeds&wpf_message=success" ) );
348
  die();
349
  } else {
350
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Feed', 'woo-feed' ), false );
351
- wp_safe_redirect( admin_url( "admin.php?page=webappick-manage-feeds&wpf_message=error" ) );
352
  die();
353
  }
354
  }
355
  }
356
 
357
- //Detect when a bulk action is being triggered...
358
  if ( 'edit-feed' === $this->current_action() ) {
359
  // In our file that handles the request, verify the nonce.
360
- if ( ! isset( $_REQUEST['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( $_REQUEST['_wpnonce'] ), 'wf_edit_feed' ) ) {
361
- wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ) );
 
362
  }
363
  }
364
 
365
  // If the delete bulk action is triggered
366
- if (
367
- ( isset( $_POST['feed'] ) ) && ( isset( $_POST['action'] ) && 'bulk-delete' == $_POST['action'] ) ||
368
- ( isset( $_POST['action2'] ) && 'bulk-delete' == $_POST['action2'] )
369
- ) {
370
  if ( 'bulk-delete' === $this->current_action() ) {
371
- if ( ! isset( $_REQUEST['_wpnonce'] ) || isset( $_REQUEST['_wpnonce'] ) && ! wp_verify_nonce( sanitize_text_field( $_REQUEST['_wpnonce'] ), "bulk-" . $this->_args['plural'] ) ) {
372
- wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ) );
 
373
  } else {
374
  $delete_ids = array_map( 'absint', $_POST['feed'] );
375
  $delete_ids = array_filter( $delete_ids );
@@ -381,7 +388,7 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
381
  }
382
  $message = sprintf(
383
  esc_html(
384
- /* translators: %d: number of item deleted. */
385
  _n(
386
  '%d Feed Successfully Deleted.',
387
  '%d Feeds Successfully Deleted.',
@@ -399,8 +406,8 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
399
  }
400
  }
401
  }
402
-
403
-
404
  /** ************************************************************************
405
  * REQUIRED! This is where you prepare your data for display. This method will
406
  * usually be used to query the database, sort and filter the data, and generally
@@ -421,8 +428,7 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
421
  * First, lets decide how many records per page to show
422
  */
423
  $per_page = 10;
424
-
425
-
426
  /**
427
  * REQUIRED. Now we need to define our column headers. This includes a complete
428
  * array of columns to be displayed (slugs & titles), a list of columns
@@ -433,8 +439,7 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
433
  $columns = $this->get_columns();
434
  $hidden = array();
435
  $sortable = $this->get_sortable_columns();
436
-
437
-
438
  /**
439
  * REQUIRED. Finally, we build an array to be used by the class for column
440
  * headers. The $this->_column_headers property takes an array which contains
@@ -442,15 +447,13 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
442
  * for sortable columns.
443
  */
444
  $this->_column_headers = array( $columns, $hidden, $sortable );
445
-
446
-
447
  /**
448
  * Optional. You can handle your bulk actions however you see fit. In this
449
  * case, we'll handle them within our package just to keep things clean.
450
  */
451
  $this->process_bulk_action();
452
-
453
-
454
  /**
455
  * Instead of querying a database, we're going to fetch the example data
456
  * property we created for use in this plugin. This makes this example
@@ -463,10 +466,10 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
463
  $data = $this->get_feeds();
464
 
465
  usort( $data, 'woo_feed_usort_reorder' );
466
-
467
-
468
  /***********************************************************************
469
  * ---------------------------------------------------------------------
 
470
  *
471
  * In a real-world situation, this is where you would place your query.
472
  *
@@ -475,16 +478,15 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
475
  *
476
  * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
477
  * ---------------------------------------------------------------------
478
- **********************************************************************/
479
-
480
-
481
  /**
482
  * REQUIRED for pagination. Let's figure out what page the user is currently
483
  * looking at. We'll need this later, so you should always include it in
484
  * your own package classes.
485
  */
486
  $current_page = $this->get_pagenum();
487
-
488
  /**
489
  * REQUIRED for pagination. Let's check how many items are in our data array.
490
  * In real-world use, this would be the total number of items in your database,
@@ -492,34 +494,34 @@ class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
492
  * in your own package classes.
493
  */
494
  $total_items = count( $data );
495
-
496
-
497
  /**
498
  * The WP_List_Table class does not handle pagination for us, so we need
499
  * to ensure that the data is trimmed to only the current page. We can use
500
  * array_slice() to
501
  */
502
  $data = array_slice( $data, ( ( $current_page - 1 ) * $per_page ), $per_page );
503
-
504
-
505
  /**
506
  * REQUIRED. We also have to register our pagination options & calculations.
507
  */
508
- $this->set_pagination_args( array(
509
- 'total_items' => $total_items, //WE have to calculate the total number of items
510
- 'per_page' => $per_page, //WE have to determine how many items to show on a page
511
- 'total_pages' => ceil( $total_items / $per_page ), //WE have to calculate the total number of pages
512
- ) );
513
-
514
- // $this->set_pagination_args( array(
515
- // 'total_items' => $total_items, //WE have to calculate the total number of items
516
- // 'per_page' => $per_page //WE have to determine how many items to show on a page
517
- // ) );
518
-
 
 
519
  /**
520
  * REQUIRED. Now we can add our *sorted* data to the items property, where
521
  * it can be used by the rest of the class.
522
  */
523
  $this->items = $data;
524
  }
525
- }
11
  * @author Ohidul Islam <wahid@webappick.com>
12
  */
13
  class Woo_Feed_Manage_list extends Woo_Feed_List_Table {
14
+
15
  /** ************************************************************************
16
  * Normally we would be querying data from a database and manipulating that
17
  * for use in your list table. For this example, we're going to simplify it
23
  *
24
  * @var array
25
  **************************************************************************/
26
+
27
+
28
  /** ************************************************************************
29
  * REQUIRED. Set up a constructor that references the parent constructor. We
30
  * use the parent reference to set some default configs.
31
  ***************************************************************************/
32
  function __construct() {
33
+ // Set parent defaults
34
+ parent::__construct(
35
+ array(
36
+ 'singular' => __( 'feed', 'woo-feed' ), // singular name of the listed records
37
+ 'plural' => __( 'feeds', 'woo-feed' ), // plural name of the listed records
38
+ 'ajax' => false, // does this table support ajax?
39
+ )
40
+ );
41
+
42
  }
43
+
44
+
45
  /** ************************************************************************
46
  * Recommended. This method is called when the parent class can't find a method
47
  * specifically build for a given column. Generally, it's recommended to include
59
  * For more detailed insight into how columns are handled, take a look at
60
  * WP_List_Table::single_row_columns()
61
  *
62
+ * @param array $item A singular item (one full row's worth of data)
63
  * @param string $column_name The name/slug of the column to be processed
64
  *
65
  * @return string Text or HTML to be placed inside the column <td>
 
66
  **************************************************************************/
67
  function column_default( $item, $column_name ) {
68
  $getItem = $item['option_name'];
70
  $itemInfo = maybe_unserialize( get_option( $getItem ) );
71
  global $regenerating, $regeneratingName;
72
  $optionName = str_replace( 'wf_feed_', '', $getItem );
73
+ $spinIcon = ( true === $regenerating && $optionName === $regeneratingName ) ? ' wpf_spin reverse_spin' : '';
74
  $disableBtn = true === $regenerating ? ' disabled' : '';
75
  switch ( $column_name ) {
76
  case 'option_name':
85
  }
86
  case 'provider':
87
  $provider = $itemInfo['feedrules']['provider'];
88
+
89
  return ucwords( str_replace( '_', ' ', $provider ) );
90
  case 'type':
91
  $feedType = $itemInfo['feedrules']['feedType'];
92
+
93
  return strtoupper( str_replace( '_', ' ', $feedType ) );
94
  case 'url':
95
  /** @noinspection SpellCheckingInspection */
102
  case 'last_updated':
103
  return $itemInfo[ $column_name ];
104
  case 'view':
105
+ $export_url = wp_nonce_url( admin_url( 'admin-post.php?action=wf_export_feed&feed=' . $getItem ), 'wpf-export' );
 
106
  /** @noinspection HtmlUnknownTarget */
107
  return sprintf(
108
  '<a href="%1$s" title="%2$s" aria-label="%2$s" target="_blank"><span class="dashicons dashicons-external" aria-hidden="true"></span></a>
109
  <a id="%3$s" class="wpf_regenerate%6$s" href="#" title="%4$s" aria-label="%4$s"><span class="dashicons dashicons-update-alt%7$s" aria-hidden="true"></span></a>
110
+ <a href="%1$s" title="%5$s" aria-label="%5$s" download><span class="dashicons dashicons-download" aria-hidden="true"></span></a>
111
+ <a href="%9$s" title="%8$s" aria-label="%8$s"><span class="dashicons dashicons-media-code" aria-hidden="true"></span></a>',
112
+ $itemInfo['url'],
113
+ esc_html__( 'View', 'woo-feed' ),
114
  $getItem,
115
+ esc_html__( 'Regenerate', 'woo-feed' ),
116
+ esc_html__( 'Download', 'woo-feed' ),
117
  $disableBtn,
118
+ $spinIcon,
119
+ esc_html__( 'Export Feed Config', 'woo-feed' ),
120
+ esc_url( $export_url )
121
  );
122
  default:
123
  return false;
124
  }
125
  }
126
+
127
+
128
  /** ************************************************************************
129
  * Recommended. This is a custom column method and is responsible for what
130
  * is rendered in any column with a name/slug of 'title'. Every time the class
136
  * should be an associative array formatted as 'slug'=>'link html' - and you
137
  * will need to generate the URLs yourself. You could even ensure the links
138
  *
 
139
  * @param array $item A singular item (one full row's worth of data)
140
  *
141
  * @return string Text to be placed inside the column <td> (movie title only)
142
+ * *************************************************************************@see WP_List_Table::::single_row_columns()
143
  */
144
  function column_option_name( $item ) {
145
  global $plugin_page;
146
+ // Build row actions
147
+ $edit_nonce = wp_create_nonce( 'wf_edit_feed' );
148
+ $delete_nonce = wp_create_nonce( 'wf_delete_feed' );
149
+ // $title = '<strong>' . $item['option_name'] . '</strong>';
150
  $actions = array(
151
  'edit' => sprintf(
152
  '<a href="?page=%s&action=%s&feed=%s&_wpnonce=%s">' . __( 'Edit', 'woo-feed' ) . '</a>',
153
+ esc_attr( $plugin_page ),
154
  'edit-feed',
155
  $item['option_name'],
156
  $edit_nonce
157
  ),
158
  'delete' => sprintf(
159
  '<a val="?page=%s&action=%s&feed=%s&_wpnonce=%s" class="single-feed-delete" style="cursor: pointer;">' . __( 'Delete', 'woo-feed' ) . '</a>',
160
+ esc_attr( $plugin_page ),
161
  'delete-feed',
162
  absint( $item['option_id'] ),
163
  $delete_nonce
164
  ),
165
  );
166
+ // Return the title contents
167
  $name = str_replace( 'wf_feed_', '', $item['option_name'] );
168
  $config = maybe_unserialize( maybe_unserialize( $item['option_value'] ) );
169
  if ( isset( $config['feedrules'], $config['feedrules']['filename'] ) ) {
176
  $this->row_actions( $actions )
177
  );
178
  }
179
+
180
  public static function get_feeds() {
181
  global $wpdb;
182
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
183
  $result = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->options WHERE option_name LIKE %s ORDER BY option_id DESC;", 'wf_feed_%' ), 'ARRAY_A' );
184
  return $result;
185
  }
186
+
187
  /**
188
  * Delete a Feed.
189
  *
190
  * @param int $id Feed ID
191
  *
192
+ * @return false
193
  */
194
  public static function delete_feed( $id ) {
195
  return woo_feed_delete_feed( $id );
196
  }
197
+
198
+ /**
199
+ * Returns the count of records in the database.
200
+ *
201
+ * @return null|string
202
+ */
203
  public static function record_count() {
204
  global $wpdb;
205
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
206
  return $wpdb->get_var( $wpdb->prepare( "SELECT * FROM $wpdb->options WHERE option_name like %s", 'wf_feed_%' ) );
207
  }
208
+
209
  /** Text displayed when no data is available */
210
  public function no_items() {
211
  _e( 'No feed available.', 'woo-feed' );
212
  }
213
+
214
+
215
  /** ************************************************************************
216
  * REQUIRED if displaying checkboxes or using bulk actions! The 'cb' column
217
  * is given special treatment when columns are processed. It ALWAYS needs to
220
  * @param array $item A singular item (one full row's worth of data)
221
  *
222
  * @return string Text to be placed inside the column <td> (movie title only)
223
+ * *************************************************************************@see WP_List_Table::::single_row_columns()
224
  */
225
  function column_cb( $item ) {
226
  return sprintf(
227
  '<input type="checkbox" name="%1$s[]" value="%2$s" />',
228
  /*$1%s*/
229
+ $this->_args['singular'], // Let's simply repurpose the table's singular label ("movie")
230
  /*$2%s*/
231
+ $item['option_id'] // The value of the checkbox should be the record's id
232
  );
233
  }
234
+
235
+
236
  function column_name( $item ) {
237
  global $plugin_page;
238
+ $edit_nonce = wp_create_nonce( 'wf_edit_feed' );
239
+ $delete_nonce = wp_create_nonce( 'wf_delete_feed' );
240
+ $title = '<strong>' . $item['option_name'] . '</strong>';
241
+ $actions = array(
242
  'edit' => sprintf(
243
  '<a href="?page=%s&action=%s&feed=%s&_wpnonce=%s">' . __( 'Edit', 'woo-feed' ) . '</a>',
244
+ esc_attr( $plugin_page ),
245
  'edit-feed',
246
  absint( $item['option_id'] ),
247
  $edit_nonce
248
  ),
249
  'delete' => sprintf(
250
  '<a val="?page=%s&action=%s&feed=%s&_wpnonce=%s" class="single-feed-delete" style="cursor: pointer;">' . __( 'Delete', 'woo-feed' ) . '</a>',
251
+ esc_attr( $plugin_page ),
252
  'delete-feed',
253
  absint( $item['option_id'] ),
254
  $delete_nonce
255
  ),
256
  );
257
+
258
  return $title . $this->row_actions( $actions );
259
  }
260
+
261
  /** ************************************************************************
262
  * REQUIRED! This method dictates the table's columns and titles. This should
263
  * return an array where the key is the column slug (and class) and the value
269
  * bulk actions or checkboxes, simply leave the 'cb' entry out of your array.
270
  *
271
  * @return array An associative array containing column information: 'slugs'=>'Visible Titles'
272
+ * *************************************************************************@see WP_List_Table::::single_row_columns()
273
  */
274
  function get_columns() {
275
  $columns = array(
276
+ 'cb' => '<input type="checkbox" />', // Render a checkbox instead of text
277
  'status' => __( 'Auto Update', 'woo-feed' ),
278
  'option_name' => __( 'Feed Name', 'woo-feed' ),
279
  'provider' => __( 'Provider', 'woo-feed' ),
282
  'last_updated' => __( 'Last Updated', 'woo-feed' ),
283
  'view' => __( 'Action', 'woo-feed' ),
284
  );
285
+
286
  return $columns;
287
  }
288
+
289
+
290
  /** ************************************************************************
291
  * Optional. If you want one or more columns to be sortable (ASC/DESC toggle),
292
  * you will need to register it here. This should return an array where the
305
  $sortable_columns = array(
306
  'option_name' => array( 'option_name', false ),
307
  );
308
+
309
  return $sortable_columns;
310
  }
311
+
312
+
313
  /** ************************************************************************
314
  * Optional. If you need to include bulk actions in your list table, this is
315
  * the place to define them. Bulk actions are an associative array in the format
328
  $actions = array(
329
  'bulk-delete' => __( 'Delete', 'woo-feed' ),
330
  );
331
+
332
  return $actions;
333
  }
334
+
335
+
336
  /** ************************************************************************
337
  * Optional. You can handle your bulk actions anywhere or anyhow you prefer.
338
  * For this example package, we will handle it in the class to keep things
341
  * @see $this->prepare_items()
342
  **************************************************************************/
343
  public function process_bulk_action() {
344
+ // Detect when a bulk action is being triggered...
345
  if ( 'delete-feed' === $this->current_action() ) {
346
  // In our file that handles the request, verify the nonce.
347
+ $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( $_REQUEST['_wpnonce'] ) : '';
348
+ if ( ! wp_verify_nonce( $nonce, 'wf_delete_feed' ) ) {
349
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Feed. You do not have sufficient permission to delete.', 'woo-feed' ), false );
350
+ wp_safe_redirect( admin_url( 'admin.php?page=webappick-manage-feeds&wpf_message=error' ) );
351
  die();
352
  } else {
353
  if ( isset( $_GET['feed'] ) && self::delete_feed( absint( $_GET['feed'] ) ) ) {
354
  update_option( 'wpf_message', esc_html__( 'Feed Deleted Successfully', 'woo-feed' ), false );
355
+ wp_safe_redirect( admin_url( 'admin.php?page=webappick-manage-feeds&wpf_message=success' ) );
356
  die();
357
  } else {
358
  update_option( 'wpf_message', esc_html__( 'Failed To Delete Feed', 'woo-feed' ), false );
359
+ wp_safe_redirect( admin_url( 'admin.php?page=webappick-manage-feeds&wpf_message=error' ) );
360
  die();
361
  }
362
  }
363
  }
364
 
365
+ // Detect when a bulk action is being triggered...
366
  if ( 'edit-feed' === $this->current_action() ) {
367
  // In our file that handles the request, verify the nonce.
368
+ $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( $_REQUEST['_wpnonce'] ) : '';
369
+ if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
370
+ wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ), 403 );
371
  }
372
  }
373
 
374
  // If the delete bulk action is triggered
375
+ if ( ( isset( $_POST['feed'] ) ) && ( isset( $_POST['action'] ) && 'bulk-delete' == $_POST['action'] ) || ( isset( $_POST['action2'] ) && 'bulk-delete' == $_POST['action2'] ) ) {
 
 
 
376
  if ( 'bulk-delete' === $this->current_action() ) {
377
+ $nonce = isset( $_REQUEST['_wpnonce'] ) && ! empty( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( $_REQUEST['_wpnonce'] ) : '';
378
+ if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) {
379
+ wp_die( esc_html__( 'You do not have sufficient permission to delete!', 'woo-feed' ), 403 );
380
  } else {
381
  $delete_ids = array_map( 'absint', $_POST['feed'] );
382
  $delete_ids = array_filter( $delete_ids );
388
  }
389
  $message = sprintf(
390
  esc_html(
391
+ /* translators: %d: number of item deleted. */
392
  _n(
393
  '%d Feed Successfully Deleted.',
394
  '%d Feeds Successfully Deleted.',
406
  }
407
  }
408
  }
409
+
410
+
411
  /** ************************************************************************
412
  * REQUIRED! This is where you prepare your data for display. This method will
413
  * usually be used to query the database, sort and filter the data, and generally
428
  * First, lets decide how many records per page to show
429
  */
430
  $per_page = 10;
431
+
 
432
  /**
433
  * REQUIRED. Now we need to define our column headers. This includes a complete
434
  * array of columns to be displayed (slugs & titles), a list of columns
439
  $columns = $this->get_columns();
440
  $hidden = array();
441
  $sortable = $this->get_sortable_columns();
442
+
 
443
  /**
444
  * REQUIRED. Finally, we build an array to be used by the class for column
445
  * headers. The $this->_column_headers property takes an array which contains
447
  * for sortable columns.
448
  */
449
  $this->_column_headers = array( $columns, $hidden, $sortable );
450
+
 
451
  /**
452
  * Optional. You can handle your bulk actions however you see fit. In this
453
  * case, we'll handle them within our package just to keep things clean.
454
  */
455
  $this->process_bulk_action();
456
+
 
457
  /**
458
  * Instead of querying a database, we're going to fetch the example data
459
  * property we created for use in this plugin. This makes this example
466
  $data = $this->get_feeds();
467
 
468
  usort( $data, 'woo_feed_usort_reorder' );
469
+
 
470
  /***********************************************************************
471
  * ---------------------------------------------------------------------
472
+ * vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
473
  *
474
  * In a real-world situation, this is where you would place your query.
475
  *
478
  *
479
  * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
480
  * ---------------------------------------------------------------------
481
+ */
482
+
 
483
  /**
484
  * REQUIRED for pagination. Let's figure out what page the user is currently
485
  * looking at. We'll need this later, so you should always include it in
486
  * your own package classes.
487
  */
488
  $current_page = $this->get_pagenum();
489
+
490
  /**
491
  * REQUIRED for pagination. Let's check how many items are in our data array.
492
  * In real-world use, this would be the total number of items in your database,
494
  * in your own package classes.
495
  */
496
  $total_items = count( $data );
497
+
 
498
  /**
499
  * The WP_List_Table class does not handle pagination for us, so we need
500
  * to ensure that the data is trimmed to only the current page. We can use
501
  * array_slice() to
502
  */
503
  $data = array_slice( $data, ( ( $current_page - 1 ) * $per_page ), $per_page );
504
+
 
505
  /**
506
  * REQUIRED. We also have to register our pagination options & calculations.
507
  */
508
+ $this->set_pagination_args(
509
+ array(
510
+ 'total_items' => $total_items, // WE have to calculate the total number of items
511
+ 'per_page' => $per_page, // WE have to determine how many items to show on a page
512
+ 'total_pages' => ceil( $total_items / $per_page ), // WE have to calculate the total number of pages
513
+ )
514
+ );
515
+
516
+ // $this->set_pagination_args( array(
517
+ // 'total_items' => $total_items, //WE have to calculate the total number of items
518
+ // 'per_page' => $per_page //WE have to determine how many items to show on a page
519
+ // ) );
520
+
521
  /**
522
  * REQUIRED. Now we can add our *sorted* data to the items property, where
523
  * it can be used by the rest of the class.
524
  */
525
  $this->items = $data;
526
  }
527
+ }
admin/css/fancy-select.css CHANGED
@@ -3,185 +3,175 @@
3
  * @version 1.0.0
4
  * @copyright 2020 Webappick
5
  * @author Kudratullah <mhamudul.hk@gmail.com>
6
- */
7
- .fancy-picker, .fancy-picker * {
8
- box-sizing: border-box;
9
- cursor: default;
10
- user-select: none;
11
- }
12
-
13
- .fancy-picker {
14
- position: relative;
15
- display: block;
16
- width: 100%;
17
- height: 30px;
18
- margin: 0 !important;
19
- padding: 0 !important;
20
- }
21
-
22
- .fancy-picker-picked {
23
- width: 100%;
24
- height: 100%;
25
- overflow: hidden;
26
- display: block;
27
- position: relative;
28
- border: 1px solid #7e8993;
29
- border-radius: 4px;
30
- padding: 3.5px 0;
31
- box-shadow: 0 0 4px -1px rgba(0, 0, 0, 0.45);
32
- }
33
- .fancy-picker-placeholder:empty,
34
- .fancy-picker-count:empty {
35
- display: none;
36
- }
37
- .fancy-picker-placeholder, .fancy-picker-data {
38
- position: relative;
39
- display: block;
40
- width: calc( 100% - 25px );
41
- float: left;
42
- font-weight: 500;
43
- padding: 1px 5px;
44
- overflow: hidden;
45
- text-overflow: ellipsis;
46
- white-space: pre;
47
- }
48
- .fancy-picker-placeholder,
49
- .fancy-picker-data > span {
50
- display: inline;
51
- top: -1px;
52
- position: relative;
53
- }
54
-
55
- .fancy-picker-count:not(:empty) {
56
- position: absolute;
57
- display: block;
58
- top: 50%;
59
- transform: translateY(-50%);
60
- right: 21px;
61
- color: #ffffff;
62
- background: #23282d;
63
- z-index: 1;
64
- padding: 1px 3px;
65
- font-size: 12px;
66
- line-height: normal;
67
- border-radius: 5px;
68
- opacity: 0.7;
69
- }
70
- .fancy-picker-option {
71
- font-weight: 500;
72
- width: 100%;
73
- display: block;
74
- float: left;
75
- cursor: default;
76
- padding: 2px 8px;
77
- transition: background 300ms linear;
78
- }
79
-
80
- .fancy-picker-option.selected {
81
- color: #000;
82
- background: #acf;
83
- font-weight: 700;
84
- }
85
- .fancy-picker-option.disabled {
86
- color: #464646;
87
- background: #e8e8e8;
88
- font-weight: 700;
89
- cursor: not-allowed;
90
- }
91
- .fancy-picker-option:not(.disabled):hover {
92
- background: #00a1ff;
93
- color: #FFF;
94
- font-weight: 600;
95
- }
96
- .fancy-picker-option.disabled:hover,
97
- .fancy-picker-option.selected:hover {
98
- font-weight: 700;
99
- }
100
-
101
- .fancy-picker-ui {
102
- position: absolute;
103
- display: none;
104
- background: #FFF;
105
- z-index: 999;
106
- border: 1px solid #7e8993;
107
- top: 36px;
108
- padding: 0;
109
- margin: 0;
110
- box-shadow: 0 0 10px -1px rgba(0, 0, 0, 0.96);
111
- }
112
-
113
- .fancy-picker.active .fancy-picker-ui {
114
- display: block;
115
- }
116
-
117
- .fancy-picker-content {
118
- overflow-y: auto;
119
- overflow-x: hidden;
120
- max-height: 200px;
121
- width: 100%;
122
- -webkit-overflow-scrolling: touch;
123
- padding: 0;
124
- background: #FFF;
125
- }
126
-
127
- .fancy-picker-ui:before {
128
- content: "";
129
- position: absolute;
130
- width: 10px;
131
- height: 10px;
132
- border-top: 1px solid #4f555a;
133
- border-left: 1px solid #4f555a;
134
- top: -6px;
135
- left: 10px;
136
- transform: rotate(45deg);
137
- z-index: -1;background: #4f555a;
138
- }
139
-
140
- .fancy-picker.active .fancy-picker-picked {
141
- box-shadow: 0 0 3px -1px rgba(0, 0, 0, 0.45),
142
- inset 0 0 4px -1px rgba(0, 0, 0, 0.27);
143
- }
144
-
145
- .fancy-picker-picked:after {
146
- content: "";
147
- display: block;
148
- position: absolute;
149
- width: 0;
150
- height: 0;
151
- float: right;
152
- background: transparent;
153
- border-style: solid;
154
- border-color: #7e8993 transparent;
155
- border-width: 7px 5px 0 5px;
156
- top: 50%;
157
- transform: translateY(-50%) rotate(0deg);
158
- right: 5px;
159
- transition: all 350ms linear;
160
- cursor: pointer;
161
- }
162
-
163
- .fancy-picker-picked:before {
164
- position: relative;
165
- display: block;
166
- content: "";
167
- width: 5px;
168
- height: 15px;
169
- padding: 1px 0;
170
- background: transparent;
171
- border-left-width: 4px;
172
- border-left-color: #7e8993;
173
- border-left-style: dotted;
174
- float: left;
175
- left: 5px;
176
- top: 2px;
177
- transition: all 350ms linear;
178
- }
179
- .fancy-picker.active .fancy-picker-picked:after {
180
- border-color: #31363a transparent;
181
- transform:translateY(-50%) rotate3d(1, 0, 0, 180deg);
182
- }
183
-
184
- .fancy-picker.active .fancy-picker-picked:before,
185
- .fancy-picker:hover .fancy-picker-picked:before {
186
- border-left-color: #31363a;
187
- }
3
  * @version 1.0.0
4
  * @copyright 2020 Webappick
5
  * @author Kudratullah <mhamudul.hk@gmail.com>
6
+ */
7
+ .fancy-picker, .fancy-picker * {
8
+ box-sizing: border-box;
9
+ cursor: default;
10
+ -webkit-user-select: none;
11
+ -moz-user-select: none;
12
+ -ms-user-select: none;
13
+ user-select: none; }
14
+
15
+ .fancy-picker {
16
+ position: relative;
17
+ display: block;
18
+ width: 100%;
19
+ height: 30px;
20
+ margin: 0 !important;
21
+ padding: 0 !important; }
22
+
23
+ .fancy-picker-picked {
24
+ width: 100%;
25
+ height: 100%;
26
+ overflow: hidden;
27
+ display: block;
28
+ position: relative;
29
+ border: 1px solid #7e8993;
30
+ border-radius: 4px;
31
+ padding: 3.5px 0;
32
+ box-shadow: 0 0 4px -1px rgba(0, 0, 0, 0.45); }
33
+
34
+ .fancy-picker-placeholder,
35
+ .fancy-picker-data {
36
+ display: block;
37
+ width: calc( 100% - 25px);
38
+ float: left;
39
+ font-weight: 500;
40
+ padding: 1px 5px;
41
+ overflow: hidden;
42
+ text-overflow: ellipsis;
43
+ white-space: pre;
44
+ top: -1px; }
45
+ .fancy-picker-placeholder > span,
46
+ .fancy-picker-data > span {
47
+ display: inline;
48
+ position: relative; }
49
+ .fancy-picker-placeholder > span:empty,
50
+ .fancy-picker-data > span:empty {
51
+ display: none; }
52
+ .fancy-picker-placeholder:empty,
53
+ .fancy-picker-data:empty {
54
+ display: none; }
55
+
56
+ .fancy-picker-separator {
57
+ margin-right: 3px; }
58
+
59
+ .fancy-picker-count {
60
+ position: absolute;
61
+ display: block;
62
+ top: 50%;
63
+ -webkit-transform: translateY(-50%);
64
+ transform: translateY(-50%);
65
+ right: 21px;
66
+ color: #ffffff;
67
+ background: rgba(35, 40, 45, 0.7);
68
+ z-index: 1;
69
+ padding: 1px 3px;
70
+ font-size: 12px;
71
+ line-height: normal;
72
+ border-radius: 5px; }
73
+ .fancy-picker-count:empty {
74
+ display: none; }
75
+
76
+ .fancy-picker-option {
77
+ font-weight: 500;
78
+ width: 100%;
79
+ display: block;
80
+ float: left;
81
+ cursor: default;
82
+ padding: 2px 8px;
83
+ transition: background 300ms linear; }
84
+ .fancy-picker-option:nth-child(odd) {
85
+ background: #f3f3f3; }
86
+ .fancy-picker-option.selected {
87
+ color: #000;
88
+ background: #acf; }
89
+ .fancy-picker-option.disabled {
90
+ color: #464646;
91
+ background: #e8e8e8;
92
+ cursor: not-allowed; }
93
+ .fancy-picker-option:not(.disabled):hover {
94
+ background: #00a1ff;
95
+ color: #FFF; }
96
+
97
+ .fancy-picker-content {
98
+ overflow-y: auto;
99
+ overflow-x: hidden;
100
+ max-height: 200px;
101
+ width: 100%;
102
+ -webkit-overflow-scrolling: touch;
103
+ padding: 3px 0 20px 0;
104
+ background: #FFF; }
105
+
106
+ .fancy-picker-ui {
107
+ position: absolute;
108
+ display: none;
109
+ background: #FFF;
110
+ z-index: 999;
111
+ border: 1px solid #7e8993;
112
+ top: 36px;
113
+ padding: 0;
114
+ margin: 0;
115
+ box-shadow: 0 0 10px -1px rgba(0, 0, 0, 0.96); }
116
+ .fancy-picker-ui:before {
117
+ content: "";
118
+ position: absolute;
119
+ width: 10px;
120
+ height: 10px;
121
+ border-top: 1px solid #4f555a;
122
+ border-left: 1px solid #4f555a;
123
+ top: -6px;
124
+ left: 10px;
125
+ -webkit-transform: rotate(45deg);
126
+ transform: rotate(45deg);
127
+ z-index: -1;
128
+ background: #4f555a; }
129
+
130
+ .fancy-picker-picked:after {
131
+ content: "";
132
+ display: block;
133
+ position: absolute;
134
+ width: 0;
135
+ height: 0;
136
+ float: right;
137
+ background: transparent;
138
+ border-style: solid;
139
+ border-color: #7e8993 transparent;
140
+ border-width: 7px 5px 0 5px;
141
+ top: 50%;
142
+ -webkit-transform: translateY(-50%) rotate(0deg);
143
+ transform: translateY(-50%) rotate(0deg);
144
+ right: 5px;
145
+ transition: all 350ms linear;
146
+ cursor: pointer; }
147
+
148
+ .fancy-picker-picked:before {
149
+ position: relative;
150
+ display: block;
151
+ content: "";
152
+ width: 5px;
153
+ height: 15px;
154
+ padding: 1px 0;
155
+ background: transparent;
156
+ border-left-width: 4px;
157
+ border-left-color: #7e8993;
158
+ border-left-style: dotted;
159
+ float: left;
160
+ left: 5px;
161
+ top: 2px;
162
+ transition: all 350ms linear; }
163
+
164
+ .fancy-picker.active .fancy-picker-ui {
165
+ display: block; }
166
+
167
+ .fancy-picker.active .fancy-picker-picked {
168
+ box-shadow: 0 0 3px -1px rgba(0, 0, 0, 0.45), inset 0 0 4px -1px rgba(0, 0, 0, 0.27); }
169
+ .fancy-picker.active .fancy-picker-picked:after {
170
+ border-color: #31363a transparent;
171
+ -webkit-transform: translateY(-50%) rotate3d(1, 0, 0, 180deg);
172
+ transform: translateY(-50%) rotate3d(1, 0, 0, 180deg); }
173
+ .fancy-picker.active .fancy-picker-picked:before {
174
+ border-left-color: #31363a; }
175
+
176
+ .fancy-picker:hover .fancy-picker-picked:before {
177
+ border-left-color: #31363a; }
 
 
 
 
 
 
 
 
 
 
admin/css/fancy-select.min.css CHANGED
@@ -1 +1 @@
1
- .fancy-picker,.fancy-picker *{box-sizing:border-box;cursor:default;user-select:none}.fancy-picker{position:relative;display:block;width:100%;height:30px;margin:0!important;padding:0!important}.fancy-picker-picked{width:100%;height:100%;overflow:hidden;display:block;position:relative;border:1px solid #7e8993;border-radius:4px;padding:3.5px 0;box-shadow:0 0 4px -1px rgba(0,0,0,0.45)}.fancy-picker-placeholder:empty,.fancy-picker-count:empty{display:none}.fancy-picker-placeholder,.fancy-picker-data{position:relative;display:block;width:calc(100% - 25px);float:left;font-weight:500;padding:1px 5px;overflow:hidden;text-overflow:ellipsis;white-space:pre}.fancy-picker-placeholder,.fancy-picker-data > span{display:inline;top:-1px;position:relative}.fancy-picker-count:not(:empty){position:absolute;display:block;top:50%;transform:translateY(-50%);right:21px;color:#fff;background:#23282d;z-index:1;padding:1px 3px;font-size:12px;line-height:normal;border-radius:5px;opacity:.7}.fancy-picker-option{font-weight:500;width:100%;display:block;float:left;cursor:default;padding:2px 8px;transition:background 300ms linear}.fancy-picker-option.selected{color:#000;background:#acf;font-weight:700}.fancy-picker-option.disabled{color:#464646;background:#e8e8e8;font-weight:700;cursor:not-allowed}.fancy-picker-option:not(.disabled):hover{background:#00a1ff;color:#FFF;font-weight:600}.fancy-picker-option.disabled:hover,.fancy-picker-option.selected:hover{font-weight:700}.fancy-picker-ui{position:absolute;display:none;background:#FFF;z-index:999;border:1px solid #7e8993;top:36px;padding:0;margin:0;box-shadow:0 0 10px -1px rgba(0,0,0,0.96)}.fancy-picker.active .fancy-picker-ui{display:block}.fancy-picker-content{overflow-y:auto;overflow-x:hidden;max-height:200px;width:100%;-webkit-overflow-scrolling:touch;padding:0;background:#FFF}.fancy-picker-ui:before{content:"";position:absolute;width:10px;height:10px;border-top:1px solid #4f555a;border-left:1px solid #4f555a;top:-6px;left:10px;transform:rotate(45deg);z-index:-1;background:#4f555a}.fancy-picker.active .fancy-picker-picked{box-shadow:0 0 3px -1px rgba(0,0,0,0.45),inset 0 0 4px -1px rgba(0,0,0,0.27)}.fancy-picker-picked:after{content:"";display:block;position:absolute;width:0;height:0;float:right;background:transparent;border-style:solid;border-color:#7e8993 transparent;border-width:7px 5px 0;top:50%;transform:translateY(-50%) rotate(0deg);right:5px;transition:all 350ms linear;cursor:pointer}.fancy-picker-picked:before{position:relative;display:block;content:"";width:5px;height:15px;padding:1px 0;background:transparent;border-left-width:4px;border-left-color:#7e8993;border-left-style:dotted;float:left;left:5px;top:2px;transition:all 350ms linear}.fancy-picker.active .fancy-picker-picked:after{border-color:#31363a transparent;transform:translateY(-50%) rotate3d(1,0,0,180deg)}.fancy-picker.active .fancy-picker-picked:before,.fancy-picker:hover .fancy-picker-picked:before{border-left-color:#31363a}
1
+ .fancy-picker,.fancy-picker *{box-sizing:border-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancy-picker{position:relative;display:block;width:100%;height:30px;margin:0!important;padding:0!important}.fancy-picker-picked{width:100%;height:100%;overflow:hidden;display:block;position:relative;border:1px solid #7e8993;border-radius:4px;padding:3.5px 0;box-shadow:0 0 4px -1px rgba(0,0,0,.45)}.fancy-picker-data,.fancy-picker-placeholder{display:block;width:calc(100% - 25px);float:left;font-weight:500;padding:1px 5px;overflow:hidden;text-overflow:ellipsis;white-space:pre;top:-1px}.fancy-picker-data>span,.fancy-picker-placeholder>span{display:inline;position:relative}.fancy-picker-data>span:empty,.fancy-picker-placeholder>span:empty{display:none}.fancy-picker-data:empty,.fancy-picker-placeholder:empty{display:none}.fancy-picker-separator{margin-right:3px}.fancy-picker-count{position:absolute;display:block;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:21px;color:#fff;background:rgba(35,40,45,.7);z-index:1;padding:1px 3px;font-size:12px;line-height:normal;border-radius:5px}.fancy-picker-count:empty{display:none}.fancy-picker-option{font-weight:500;width:100%;display:block;float:left;cursor:default;padding:2px 8px;transition:background .3s linear}.fancy-picker-option:nth-child(odd){background:#f3f3f3}.fancy-picker-option.selected{color:#000;background:#acf}.fancy-picker-option.disabled{color:#464646;background:#e8e8e8;cursor:not-allowed}.fancy-picker-option:not(.disabled):hover{background:#00a1ff;color:#fff}.fancy-picker-content{overflow-y:auto;overflow-x:hidden;max-height:200px;width:100%;-webkit-overflow-scrolling:touch;padding:3px 0 20px 0;background:#fff}.fancy-picker-ui{position:absolute;display:none;background:#fff;z-index:999;border:1px solid #7e8993;top:36px;padding:0;margin:0;box-shadow:0 0 10px -1px rgba(0,0,0,.96)}.fancy-picker-ui:before{content:"";position:absolute;width:10px;height:10px;border-top:1px solid #4f555a;border-left:1px solid #4f555a;top:-6px;left:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:-1;background:#4f555a}.fancy-picker-picked:after{content:"";display:block;position:absolute;width:0;height:0;float:right;background:0 0;border-style:solid;border-color:#7e8993 transparent;border-width:7px 5px 0 5px;top:50%;-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0);right:5px;transition:all 350ms linear;cursor:pointer}.fancy-picker-picked:before{position:relative;display:block;content:"";width:5px;height:15px;padding:1px 0;background:0 0;border-left-width:4px;border-left-color:#7e8993;border-left-style:dotted;float:left;left:5px;top:2px;transition:all 350ms linear}.fancy-picker.active .fancy-picker-ui{display:block}.fancy-picker.active .fancy-picker-picked{box-shadow:0 0 3px -1px rgba(0,0,0,.45),inset 0 0 4px -1px rgba(0,0,0,.27)}.fancy-picker.active .fancy-picker-picked:after{border-color:#31363a transparent;-webkit-transform:translateY(-50%) rotate3d(1,0,0,180deg);transform:translateY(-50%) rotate3d(1,0,0,180deg)}.fancy-picker.active .fancy-picker-picked:before{border-left-color:#31363a}.fancy-picker:hover .fancy-picker-picked:before{border-left-color:#31363a}
admin/css/fancy-select.scss ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**!
2
+ * WooFeed Fancy Select
3
+ * @version 1.0.0
4
+ * @copyright 2020 Webappick
5
+ * @author Kudratullah <mhamudul.hk@gmail.com>
6
+ */
7
+
8
+ .fancy-picker, .fancy-picker * {
9
+ box-sizing: border-box;
10
+ cursor: default;
11
+ user-select: none;
12
+ }
13
+
14
+ .fancy-picker {
15
+ position: relative;
16
+ display: block;
17
+ width: 100%;
18
+ height: 30px;
19
+ margin: 0 !important;
20
+ padding: 0 !important;
21
+ }
22
+
23
+ .fancy-picker-picked {
24
+ width: 100%;
25
+ height: 100%;
26
+ overflow: hidden;
27
+ display: block;
28
+ position: relative;
29
+ border: 1px solid #7e8993;
30
+ border-radius: 4px;
31
+ padding: 3.5px 0;
32
+ box-shadow: 0 0 4px -1px rgba(0, 0, 0, 0.45);
33
+ }
34
+
35
+ .fancy-picker-placeholder,
36
+ .fancy-picker-data {
37
+ display: block;
38
+ width: calc( 100% - 25px );
39
+ float: left;
40
+ font-weight: 500;
41
+ padding: 1px 5px;
42
+ overflow: hidden;
43
+ text-overflow: ellipsis;
44
+ white-space: pre;
45
+ top: -1px;
46
+ > span {
47
+ display: inline;
48
+ position: relative;
49
+ &:empty {
50
+ display: none;
51
+ }
52
+ }
53
+ &:empty {
54
+ display: none;
55
+ }
56
+ }
57
+
58
+ .fancy-picker-separator {
59
+ margin-right: 3px;
60
+ }
61
+
62
+ .fancy-picker-count {
63
+ position: absolute;
64
+ display: block;
65
+ top: 50%;
66
+ transform: translateY(-50%);
67
+ right: 21px;
68
+ color: #ffffff;
69
+ background: rgba(35, 40, 45, 0.7);
70
+ z-index: 1;
71
+ padding: 1px 3px;
72
+ font-size: 12px;
73
+ line-height: normal;
74
+ border-radius: 5px;
75
+ &:empty {
76
+ display: none;
77
+ }
78
+ }
79
+ .fancy-picker-option {
80
+ font-weight: 500;
81
+ width: 100%;
82
+ display: block;
83
+ float: left;
84
+ cursor: default;
85
+ padding: 2px 8px;
86
+ transition: background 300ms linear;
87
+ &:nth-child(odd) {
88
+ background: #f3f3f3;
89
+ }
90
+ &.selected {
91
+ color: #000;
92
+ background: #acf;
93
+ }
94
+ &.disabled {
95
+ color: #464646;
96
+ background: #e8e8e8;
97
+ cursor: not-allowed;
98
+ }
99
+ &:not(.disabled) {
100
+ &:hover {
101
+ background: #00a1ff;
102
+ color: #FFF;
103
+ }
104
+ }
105
+ }
106
+
107
+ .fancy-picker-content {
108
+ overflow-y: auto;
109
+ overflow-x: hidden;
110
+ max-height: 200px;
111
+ width: 100%;
112
+ -webkit-overflow-scrolling: touch;
113
+ padding: 3px 0 20px 0;
114
+ background: #FFF;
115
+ }
116
+
117
+ .fancy-picker-ui {
118
+ position: absolute;
119
+ display: none;
120
+ background: #FFF;
121
+ z-index: 999;
122
+ border: 1px solid #7e8993;
123
+ top: 36px;
124
+ padding: 0;
125
+ margin: 0;
126
+ box-shadow: 0 0 10px -1px rgba(0, 0, 0, 0.96);
127
+ &:before {
128
+ content: "";
129
+ position: absolute;
130
+ width: 10px;
131
+ height: 10px;
132
+ border-top: 1px solid #4f555a;
133
+ border-left: 1px solid #4f555a;
134
+ top: -6px;
135
+ left: 10px;
136
+ transform: rotate(45deg);
137
+ z-index: -1;background: #4f555a;
138
+ }
139
+ }
140
+
141
+ .fancy-picker-picked {
142
+ &:after {
143
+ content: "";
144
+ display: block;
145
+ position: absolute;
146
+ width: 0;
147
+ height: 0;
148
+ float: right;
149
+ background: transparent;
150
+ border-style: solid;
151
+ border-color: #7e8993 transparent;
152
+ border-width: 7px 5px 0 5px;
153
+ top: 50%;
154
+ transform: translateY(-50%) rotate(0deg);
155
+ right: 5px;
156
+ transition: all 350ms linear;
157
+ cursor: pointer;
158
+ }
159
+ &:before {
160
+ position: relative;
161
+ display: block;
162
+ content: "";
163
+ width: 5px;
164
+ height: 15px;
165
+ padding: 1px 0;
166
+ background: transparent;
167
+ border-left-width: 4px;
168
+ border-left-color: #7e8993;
169
+ border-left-style: dotted;
170
+ float: left;
171
+ left: 5px;
172
+ top: 2px;
173
+ transition: all 350ms linear;
174
+ }
175
+ }
176
+
177
+ .fancy-picker {
178
+ &.active {
179
+ .fancy-picker-ui {
180
+ display: block;
181
+ }
182
+ .fancy-picker-picked {
183
+ box-shadow: 0 0 3px -1px rgba(0, 0, 0, 0.45),
184
+ inset 0 0 4px -1px rgba(0, 0, 0, 0.27);
185
+ &:after {
186
+ border-color: #31363a transparent;
187
+ transform:translateY(-50%) rotate3d(1, 0, 0, 180deg);
188
+ }
189
+ &:before {
190
+ border-left-color: #31363a;
191
+ }
192
+ }
193
+ }
194
+ &:hover {
195
+ .fancy-picker-picked {
196
+ &:before {
197
+ border-left-color: #31363a;
198
+ }
199
+ }
200
+ }
201
+ }
admin/css/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/css/woo-feed-admin-pro.scss ADDED
@@ -0,0 +1,742 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ table.wf-info-table th a,
2
+ table.wf-rate-table th strong {
3
+ font-weight: bold;
4
+ }
5
+
6
+ table.wf-info-table th a,
7
+ table.wf-rate-table a {
8
+ color: #0073aa;
9
+ }
10
+
11
+ table.wf-info-table th a.get-woo-feed-pro {
12
+ display: inline-block;
13
+ text-decoration: none;
14
+ background: #f3f5f6;
15
+ color: #ff3355;
16
+ vertical-align: top;
17
+ font-size: 14px;
18
+ line-height: 3.14285714;
19
+ box-sizing: border-box;
20
+ margin: 0;
21
+ border-radius: 35px;
22
+ box-shadow: 1px 2px 10px 1px rgba(255, 51, 85, 0.5);
23
+ }
24
+
25
+ table.wf-info-table th a.get-woo-feed-pro img {
26
+ display: block;
27
+ position: relative;
28
+ margin: -2px;
29
+ width: 180px;
30
+ height: auto;
31
+ }
32
+
33
+ table.wf-info-table th a.button {
34
+ border-color: #0073aa;
35
+ border-radius: 35px;
36
+ }
37
+
38
+ table.wf-info-table th a.documentation {
39
+ color: #0073aa;
40
+ }
41
+
42
+ table.wf-info-table th a.tutorial {
43
+ color: #ee264a;
44
+ }
45
+
46
+ table.wf-info-table th a.support {
47
+ color: #0DD41E;
48
+ }
49
+
50
+ /**
51
+ * Premium Page Design
52
+ */
53
+ .wp-submenu li span.woo-feed-premium {
54
+ font-weight: bold;
55
+ color: #28e499;
56
+ }
57
+
58
+ .wp-submenu li:hover span.woo-feed-premium,
59
+ .wp-submenu li.current span.woo-feed-premium {
60
+ color: #1dc381;
61
+ }
62
+
63
+ .woo_feed_free_manage_attribute {
64
+ margin: 0 auto;
65
+ width: 100%;
66
+ }
67
+
68
+ .woo_feed_screenshort {
69
+ max-width: 100%;
70
+ width: 1000px;
71
+ border: 3px solid #00b9eb;
72
+ display: block;
73
+ margin: 0 auto;
74
+ }
75
+
76
+ .woo-feed-screen-shot-title {
77
+ font-size: 36px;
78
+ text-align: center;
79
+ box-sizing: content-box;
80
+ color: #00b9eb;
81
+ }
82
+
83
+ .woo_feed_screen {
84
+ background: #fff;
85
+ padding: 25px 20px;
86
+ margin-bottom: 20px;
87
+ }
88
+
89
+ .woo_feed_screen_des {
90
+ text-align: center;
91
+ margin: 20px 50px 20px 50px;
92
+ font-size: 16px;
93
+ color: #666;
94
+ }
95
+
96
+ .woo_feed_screen_des_2 {
97
+ text-align: center;
98
+ margin: 20px 50px 5px 50px;
99
+ font-size: 14px;
100
+ color: #32373c;
101
+ }
102
+
103
+
104
+ .wapk-admin .wapk-feed-upgrade {
105
+ font-family: 'Open Sans', sans-serif;
106
+ margin: -10px -20px 0 -22px;
107
+ }
108
+
109
+ .wapk-admin .wapk-feed-upgrade a {
110
+ transition: all 0.2s ease;
111
+ }
112
+
113
+ .wapk-admin .section-title {
114
+ text-align: center;
115
+ font-size: 30px;
116
+ line-height: 1.5em;
117
+ font-weight: 400;
118
+ position: relative;
119
+ margin: 0 0 58px;
120
+ }
121
+
122
+ .wapk-admin .section-title:after {
123
+ content: '';
124
+ position: absolute;
125
+ bottom: -21px;
126
+ left: 50%;
127
+ transform: translateX(-50%);
128
+ width: 38px;
129
+ height: 5px;
130
+ border-radius: 3px;
131
+ background-color: #00D4D4;
132
+ }
133
+
134
+ .wapk-admin .section-title .section-sub-title {
135
+ font-size: 22px;
136
+ font-weight: 300;
137
+ }
138
+
139
+ .wapk-admin .wapk-banner {
140
+ background-color: #f2f2f2;
141
+ font-size: 16px;
142
+ display: flex;
143
+ align-items: center;
144
+ padding: 50px 8%;
145
+ border-bottom: 1px solid #eee;
146
+ }
147
+
148
+ .wapk-admin .wapk-banner .wapk-banner__graphics {
149
+ width: 100%;
150
+ }
151
+
152
+ .wapk-admin .wapk-banner .wapk-banner__content h1 {
153
+ font-size: 27px;
154
+ line-height: 1.5em;
155
+ }
156
+
157
+ .wapk-admin .wapk-banner .wapk-banner__content p {
158
+ font-size: 16px;
159
+ line-height: 1.5em;
160
+ font-weight: 300;
161
+ margin: 0;
162
+ /*noinspection CssFloatPxLength*/
163
+ letter-spacing: 0.5px;
164
+ }
165
+
166
+ .wapk-admin .feed-features,
167
+ .wapk-admin .wapk-testimonial,
168
+ .wapk-admin .feed-pricing {
169
+ text-align: center;
170
+ padding: 75px 30px 85px;
171
+ background-color: #f7f8f9;
172
+ }
173
+
174
+ .wapk-admin .feed-features .feed-feature__list {
175
+ display: flex;
176
+ flex-wrap: wrap;
177
+ align-items: flex-start;
178
+ justify-content: center;
179
+ }
180
+
181
+ .wapk-admin .feed-features .feed-features__more {
182
+ margin-top: 25px;
183
+ }
184
+
185
+ .feed-feature__item {
186
+ flex: 0 0 28.9%;
187
+ margin: 0 2.2% 4.4% 2.2%;
188
+ text-align: center;
189
+ border-radius: 5px;
190
+ background-color: #ffffff;
191
+ transition: all 100ms linear;
192
+ overflow: hidden;
193
+ }
194
+
195
+ .feed-feature__item:hover {
196
+ box-shadow: 5px 4px 32px -16px rgba(0, 0, 0, 0.63);
197
+ }
198
+
199
+ .feed-feature__thumb {
200
+ overflow: hidden;
201
+ }
202
+
203
+ .feed-feature__item .feed-feature__thumb img {
204
+ border-radius: 5px 5px 0 0;
205
+ max-width: 100%;
206
+ width: 100%;
207
+ -webkit-transition: all 100ms linear;
208
+ -moz-transition: all 100ms linear;
209
+ -ms-transition: all 100ms linear;
210
+ -o-transition: all 100ms linear;
211
+ transition: all 100ms linear;
212
+ }
213
+
214
+ .feed-feature__item:hover .feed-feature__thumb img {
215
+ transform: scale(1.05);
216
+ }
217
+
218
+ .feed-feature__item .feed-feature__description {
219
+ padding: 20px 15px 25px;
220
+ }
221
+
222
+ .feed-feature__item .feed-feature__description h3 {
223
+ font-size: 15px;
224
+ line-height: 1.5em;
225
+ font-weight: 300;
226
+ margin: 0;
227
+ }
228
+
229
+ .wapk-admin .feed-pro-comparison {
230
+ background-color: #f1f1f1;
231
+ padding: 75px;
232
+ }
233
+
234
+ .wapk-admin .feed-features .section-title h2,
235
+ .wapk-admin .wapk-testimonial .section-title h2,
236
+ .wapk-admin .feed-pro-comparison .section-title h2,
237
+ .wapk-admin .feed-pricing .section-title h2 {
238
+ margin-top: 0;
239
+ margin-bottom: 0;
240
+ }
241
+
242
+ .wapk-admin .comparison-table {
243
+ display: flex;
244
+ justify-content: space-between;
245
+ }
246
+
247
+ .wapk-admin .comparison-table .comparison {
248
+ flex: 0 0 48%;
249
+ background-color: #fff;
250
+ border: 1px solid #e0e9ec;
251
+ border-radius: 5px;
252
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);
253
+ padding: 50px;
254
+ box-sizing: border-box;
255
+ }
256
+
257
+ .wapk-admin .comparison .product-header {
258
+ margin-bottom: 58px;
259
+ position: relative;
260
+ }
261
+
262
+ .wapk-admin .comparison .product-header:after {
263
+ content: "";
264
+ position: absolute;
265
+ bottom: -23px;
266
+ left: 0;
267
+ width: 38px;
268
+ height: 5px;
269
+ border-radius: 3px;
270
+ background-color: #d7d7d7;
271
+ }
272
+
273
+ .wapk-admin .comparison .product-header img {
274
+ max-width: 160px;
275
+ width: 100%;
276
+ }
277
+
278
+ .wapk-admin .comparison .product-features {
279
+ margin: 0;
280
+ }
281
+
282
+ .wapk-admin .comparison li {
283
+ position: relative;
284
+ display: flex;
285
+ margin-bottom: 15px;
286
+ padding-left: 30px;
287
+ font-size: 14px;
288
+ line-height: 1.3em;
289
+ font-weight: 300;
290
+ align-items: center;
291
+ }
292
+
293
+ .wapk-admin .comparison li.unavailable {
294
+ color: #CED2D6;
295
+ }
296
+
297
+ .wapk-admin .comparison li span.dashicons {
298
+ position: absolute;
299
+ top: 1px;
300
+ left: 6px;
301
+ width: 18px;
302
+ height: 18px;
303
+ border-radius: 100%;
304
+ background: #00D4D4;
305
+ color: #FFF;
306
+ line-height: 22px;
307
+ font-size: 14px;
308
+ text-align: center;
309
+ }
310
+
311
+ .wapk-admin .comparison li.unavailable {
312
+ color: #CED2D6;
313
+ }
314
+
315
+ .wapk-admin .comparison li.unavailable span.dashicons {
316
+ background: #CED2D6;
317
+ }
318
+
319
+ .wapk-admin .comparison li span.dashicons-no {
320
+ font-size: 12px;
321
+ }
322
+
323
+ .wapk-admin .comparison li span.dashicons-no:before {
324
+ left: 0;
325
+ }
326
+
327
+ .wapk-admin .comparison li span.dashicons:before {
328
+ position: relative;
329
+ left: -0.5px;
330
+ top: -2px;
331
+ }
332
+
333
+ .wapk-admin .comparison li img {
334
+ width: 18px;
335
+ margin-right: 12px;
336
+ }
337
+
338
+ .wapk-admin .feed-pricing {
339
+ }
340
+
341
+ .wapk-pricing__table {
342
+ width: 100%;
343
+ display: -webkit-box;
344
+ display: -webkit-flex;
345
+ display: -ms-flexbox;
346
+ display: flex;
347
+ -webkit-flex-wrap: wrap;
348
+ -ms-flex-wrap: wrap;
349
+ flex-wrap: wrap;
350
+ -webkit-align-content: flex-start;
351
+ -ms-flex-line-pack: start;
352
+ align-content: flex-start;
353
+ justify-content: center;
354
+ }
355
+
356
+ .wapk-pricing__table__item {
357
+ position: relative;
358
+ flex: 0 0 23%;
359
+ }
360
+
361
+ .wapk-price__table__wrapper {
362
+ position: relative;
363
+ padding: 10px;
364
+ }
365
+
366
+ .wapk-price__table {
367
+ text-align: center;
368
+ display: block;
369
+ width: 100%;
370
+ padding: 10px;
371
+ background-color: #fff;
372
+ border-radius: 8px 8px 8px 8px;
373
+ box-shadow: 0 0 25px 0 rgba(0, 0, 0, .1);
374
+ overflow: hidden;
375
+ -webkit-transition: background .3s, border .3s, -webkit-border-radius .3s, -webkit-box-shadow .3s;
376
+ transition: background .3s, border .3s, -webkit-border-radius .3s, -webkit-box-shadow .3s;
377
+ -o-transition: background .3s, border .3s, border-radius .3s, box-shadow .3s;
378
+ transition: background .3s, border .3s, border-radius .3s, box-shadow .3s;
379
+ transition: background .3s, border .3s, border-radius .3s, box-shadow .3s, -webkit-border-radius .3s, -webkit-box-shadow .3s;
380
+ }
381
+
382
+ .wapk-price__table__header {
383
+ background-color: #fff;
384
+ padding: 40px 0 0;
385
+ }
386
+
387
+ .wapk-price__table__heading {
388
+ color: #6d7882;
389
+ font-size: 17px;
390
+ font-weight: 500;
391
+ text-transform: uppercase;
392
+ letter-spacing: 10px;
393
+ font-family: sans-serif;
394
+ margin: 0;
395
+ padding: 0;
396
+ line-height: 1.2;
397
+ }
398
+
399
+ .wapk-price__table__price {
400
+ font-family: sans-serif;
401
+ font-weight: 600;
402
+ padding: 30px 0 10px;
403
+ display: -webkit-box;
404
+ display: -ms-flexbox;
405
+ display: flex;
406
+ -webkit-box-pack: center;
407
+ -ms-flex-pack: center;
408
+ justify-content: center;
409
+ -webkit-box-align: center;
410
+ -ms-flex-align: center;
411
+ align-items: center;
412
+ -ms-flex-wrap: wrap;
413
+ flex-wrap: wrap;
414
+ -webkit-box-orient: horizontal;
415
+ -webkit-box-direction: normal;
416
+ -ms-flex-direction: row;
417
+ flex-direction: row;
418
+ color: #434363;
419
+ font-size: 45px;
420
+ }
421
+
422
+ .wapk-price__table__amount {
423
+ }
424
+
425
+ .wapk-price__table__currency {
426
+ align-self: flex-start;
427
+ color: #434363;
428
+ line-height: 1;
429
+ font-size: .3em;
430
+ margin-right: 3px;
431
+ }
432
+
433
+ .wapk-price__table__amount .free,
434
+ .wapk-price__table__amount .integer-part {
435
+ color: #434363;
436
+ line-height: .8;
437
+ }
438
+
439
+ .wapk-price__table__amount .decimal-part {
440
+ font-size: 14px;
441
+ font-weight: 400;
442
+ }
443
+
444
+ .wapk-price__table__amount .period {
445
+ font-size: 14px;
446
+ font-weight: 400;
447
+ }
448
+
449
+ .wapk-price__table__amount___legend {
450
+ width: 100%;
451
+ color: #FF4B4B;
452
+ font-size: 18px;
453
+ font-weight: 500;
454
+ line-height: 2.5em;
455
+ }
456
+
457
+ .wapk-price__table__features {
458
+ list-style-type: none;
459
+ margin: 0;
460
+ padding: 0;
461
+ line-height: 1;
462
+ color: #697279;
463
+ text-align: left;
464
+ }
465
+
466
+ .wapk-price__table__features li.item {
467
+ list-style-type: none;
468
+ margin: 0;
469
+ padding: 0;
470
+ font-size: 13px;
471
+ line-height: 1.5em;
472
+ }
473
+
474
+ .wapk-price__table__features li:not(:first-child):before {
475
+ content: "";
476
+ display: block;
477
+ /* border: 0 solid hsla(0,0%,48%,.3); */
478
+ margin: 10px 12.5%;
479
+ }
480
+
481
+ .wapk-price__table__feature {
482
+ display: block;
483
+ margin-left: calc(((100% - 80%) / 2) + 20px);
484
+ margin-right: calc((100% - 80%) / 2);
485
+ }
486
+
487
+ span.wapk-price__table__feature span.dashicons {
488
+ margin-left: -20px;
489
+ top: 2px;
490
+ position: relative;
491
+ }
492
+
493
+ .wapk-price__table__footer {
494
+ padding: 40px 0;
495
+ }
496
+
497
+ .wapk-price__table__footer a {
498
+ font-size: 14px;
499
+ text-transform: uppercase;
500
+ letter-spacing: 3px;
501
+ border-radius: 100px 100px 100px 100px;
502
+ padding: 16px 42px;
503
+ transition: all 250ms;
504
+ }
505
+
506
+ .wapk-price__table__footer a:hover,
507
+ .wapk-price__table__footer a:focus,
508
+ .wapk-price__table__footer a:active {
509
+ transform: scale(1.02) !important;
510
+ }
511
+
512
+ .wapk-price__table__ribbon {
513
+ pointer-events: none;
514
+ touch-action: none;
515
+ -webkit-user-select: none;
516
+ -moz-user-select: none;
517
+ -ms-user-select: none;
518
+ user-select: none;
519
+ position: absolute;
520
+ top: 10px;
521
+ left: auto;
522
+ right: 10px;
523
+ -webkit-transform: rotate(90deg);
524
+ -ms-transform: rotate(90deg);
525
+ transform: rotate(90deg);
526
+ width: 150px;
527
+ overflow: hidden;
528
+ height: 150px;
529
+ }
530
+
531
+ .wapk-price__table__ribbon__inner {
532
+ background: #FF4B4B;
533
+ font-family: sans-serif;
534
+ font-weight: 500;
535
+ color: #fff;
536
+ font-size: 11px;
537
+ /*noinspection CssFloatPxLength*/
538
+ letter-spacing: 1.1px;
539
+ box-shadow: 0 0 30px 0 rgba(0, 0, 0, .21);
540
+ text-align: center;
541
+ left: 0;
542
+ width: 200%;
543
+ -webkit-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
544
+ -ms-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
545
+ transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
546
+ margin-top: 35px;
547
+ line-height: 2;
548
+ text-transform: uppercase;
549
+ }
550
+
551
+ .wapk-admin .wapk-payment {
552
+ display: flex;
553
+ background: #fff;
554
+ justify-content: space-between;
555
+ padding: 85px 65px 85px;
556
+ align-items: center;
557
+ }
558
+
559
+ .wapk-payment .payment-guarantee {
560
+ display: flex;
561
+ flex: 0 0 63%;
562
+ align-content: center;
563
+ align-items: center;
564
+ position: relative;
565
+ }
566
+
567
+ .wapk-payment .payment-guarantee:after {
568
+ content: "";
569
+ position: absolute;
570
+ right: -18px;
571
+ top: 50%;
572
+ transform: translateY(-50%);
573
+ width: 5px;
574
+ height: 38px;
575
+ border-radius: 3px;
576
+ background: #00D4D4;
577
+ }
578
+
579
+ .wapk-payment .payment-guarantee .guarantee-seal img {
580
+ max-width: 100%;
581
+ width: 280px;
582
+ }
583
+
584
+ .wapk-payment .payment-guarantee .guarantee-detail {
585
+ padding-left: 25px;
586
+ }
587
+
588
+ .wapk-payment .payment-guarantee .guarantee-detail h2 {
589
+ font-size: 24px;
590
+ line-height: 1.5em;
591
+ font-weight: 400;
592
+ margin: 0;
593
+ }
594
+
595
+ .wapk-payment .payment-guarantee .guarantee-detail p {
596
+ font-size: 15px;
597
+ line-height: 1.5em;
598
+ font-weight: 300;
599
+ margin: 5px 0 20px;
600
+ }
601
+
602
+ .wapk-payment .payment-guarantee .guarantee-detail a {
603
+ color: #00D4D4;
604
+ font-size: 15px;
605
+ line-height: 1.5em;
606
+ text-decoration: none;
607
+ }
608
+
609
+ .wapk-payment .payment-guarantee .guarantee-detail a span.dashicons,
610
+ .wapk-payment .payment-guarantee .guarantee-detail a img {
611
+ width: 18px;
612
+ margin-right: 4px;
613
+ margin-top: 1px;
614
+ }
615
+
616
+ .wapk-payment .payment-options {
617
+ flex-grow: 0.5;
618
+ }
619
+
620
+ .wapk-payment .payment-options h3 {
621
+ font-size: 15px;
622
+ font-weight: 300;
623
+ margin: 0 0 17px;
624
+ }
625
+
626
+ .wapk-payment .payment-options .options {
627
+ }
628
+
629
+ .wapk-payment .payment-options .options h4 {
630
+ color: #CED2D6;
631
+ }
632
+
633
+ .wapk-payment .payment-options .options li {
634
+ float: left;
635
+ overflow: hidden;
636
+ }
637
+
638
+ .wapk-payment .payment-options .options li img {
639
+ height: 20px;
640
+ margin-right: 5px;
641
+ }
642
+
643
+ /** Testimonial **/
644
+ .wapk-admin .wapk-testimonials {
645
+ }
646
+
647
+ .wapk-admin .wapk-testimonial-wrapper:before {
648
+ content: '';
649
+ position: absolute;
650
+ left: 79px;
651
+ top: -15px;
652
+ width: 80px;
653
+ height: 56px;
654
+ border-radius: 3px;
655
+ background: transparent url(../images/block-quote.svg) no-repeat;
656
+ background-size: cover;
657
+ }
658
+
659
+ .wapk-admin .wapk-testimonial-wrapper {
660
+ position: relative;
661
+ display: block;
662
+ width: 80%;
663
+ margin: 0 auto;
664
+ padding: 0;
665
+ text-align: center;
666
+ }
667
+
668
+ .testimonial-item__user .avatar {
669
+ width: 100px;
670
+ height: 100px;
671
+ margin: 0 auto;
672
+ border-radius: 100%;
673
+ border: 3px solid #efefef;
674
+ overflow: hidden;
675
+ }
676
+
677
+ .testimonial-item {
678
+ margin-bottom: 25px;
679
+ }
680
+
681
+ .testimonial-item__user .avatar img {
682
+ max-width: 100%;
683
+ width: 100%;
684
+ margin: 0 auto;
685
+ padding: 0;
686
+ display: block;
687
+ }
688
+
689
+ .testimonial-item__comment {
690
+ position: relative;
691
+ display: block;
692
+ width: 70%;
693
+ margin: 0 auto 30px;
694
+ }
695
+
696
+ .testimonial-item__user h4.author-name {
697
+ font-size: 25px;
698
+ font-weight: 300;
699
+ margin: 10px auto;
700
+ }
701
+
702
+ .testimonial-item__user span.author-meta {
703
+ font-size: 16px;
704
+ font-weight: 300;
705
+ }
706
+
707
+ @media screen and (min-width: 1281px) {
708
+ .wapk-admin .wapk-banner,
709
+ .wapk-admin .feed-features {
710
+ padding-left: 20%;
711
+ padding-right: 20%;
712
+ }
713
+
714
+ .wapk-admin .wapk-payment {
715
+ padding-left: 15%;
716
+ padding-right: 15%;
717
+ }
718
+
719
+ .wapk-admin .feed-pro-comparison {
720
+ padding-left: 21.2%;
721
+ padding-right: 21.2%;
722
+ }
723
+
724
+ .wapk-admin .wapk-testimonial-wrapper {
725
+ width: 55%;
726
+ }
727
+ }
728
+
729
+ .wapk-feed-pro-upgrade .wapk-feed-cta,
730
+ .wapk-feed-docs .wapk-feed-cta,
731
+ .wapk-admin .feed-pro-comparison,
732
+ .wapk-admin .wapk-payment,
733
+ .wapk-admin .feed-features,
734
+ .wapk-admin .wapk-testimonial,
735
+ .wapk-admin .wapk-feed-banner {
736
+ margin: 0;
737
+ }
738
+
739
+ .wapk-feed-banner .wapk-banner {
740
+ margin: 0;
741
+ padding: 0;
742
+ }
admin/css/woo-feed-admin.css CHANGED
@@ -2,542 +2,403 @@
2
  * All of the CSS for your admin-specific functionality should be
3
  * included in this file.
4
  */
5
- .wpf_spin, .wpf_spin_reverse {
6
- -webkit-animation: spin 1000ms infinite linear;
7
- animation: spin 1000ms infinite linear;
8
- }
9
-
10
- .wpf_spin_reverse {
11
- animation-direction: reverse;
12
- }
13
 
14
  .wpf_regenerate.disabled {
15
- color: #737373;
16
- box-shadow: none;
17
- cursor: not-allowed;
18
- }
19
 
20
  @-webkit-keyframes spin {
21
- 0% {
22
- -webkit-transform: rotate(0deg);
23
- transform: rotate(0deg);
24
- }
25
- 100% {
26
- -webkit-transform: rotate(359deg);
27
- transform: rotate(359deg);
28
- }
29
- }
30
 
31
  @keyframes spin {
32
- 0% {
33
- -webkit-transform: rotate(0deg);
34
- transform: rotate(0deg);
35
- }
36
- 100% {
37
- -webkit-transform: rotate(359deg);
38
- transform: rotate(359deg);
39
- }
40
- }
41
-
42
- /*noinspection SpellCheckingInspection */
43
- .wfbtn {
44
- background: #3498db;
45
- background-image: -webkit-linear-gradient(top, #3498db, #2980b9);
46
- background-image: -moz-linear-gradient(top, #3498db, #2980b9);
47
- background-image: -ms-linear-gradient(top, #3498db, #2980b9);
48
- background-image: -o-linear-gradient(top, #3498db, #2980b9);
49
- background-image: linear-gradient(to bottom, #3498db, #2980b9);
50
- -webkit-border-radius: 17px;
51
- -moz-border-radius: 17px;
52
- border-radius: 17px;
53
- -webkit-box-shadow: 0 1px 3px #666666;
54
- -moz-box-shadow: 0 1px 3px #666666;
55
- box-shadow: 0 1px 3px #666666;
56
- font-family: Arial, sans-serif;
57
- color: #ffffff;
58
- font-size: 20px;
59
- padding: 10px 20px 10px 20px;
60
- border: solid #2b698f 3px;
61
- text-decoration: none;
62
- }
63
 
64
- /*noinspection SpellCheckingInspection */
65
- .wftooltip {
66
- display: none;
67
- position: absolute;
68
- border: 1px solid #333;
69
- background-color: #161616;
70
- border-radius: 5px;
71
- padding: 10px;
72
- color: #fff;
73
- font-size: 12px;
74
- }
75
-
76
- /*noinspection SpellCheckingInspection */
77
- .wfbtn:hover {
78
  background: #3cb0fd;
79
- background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db);
80
- background-image: -moz-linear-gradient(top, #3cb0fd, #3498db);
81
- background-image: -ms-linear-gradient(top, #3cb0fd, #3498db);
82
- background-image: -o-linear-gradient(top, #3cb0fd, #3498db);
83
  background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
84
- text-decoration: none;
85
- }
86
 
87
- .makeFeedResponse {
88
- width: 70%;
89
- color: green;
90
- }
 
 
 
 
 
 
 
 
 
91
 
92
  .woo-feed-mapping-input {
93
- width: 100%;
94
- }
95
 
96
  .requiredIn {
97
- color: red;
98
- }
99
 
100
  .generalInput {
101
- width: 200px;
102
- }
103
-
104
- .generalInput:not(.selectize-control) {
105
- margin: 5px auto;
106
- }
107
 
108
  .error {
109
- color: red;
110
- }
111
 
112
- /*noinspection SpellCheckingInspection */
113
  .widefat td select, .widefat td input {
114
- max-width: 100%;
115
- }
116
 
117
  #wf_newRow {
118
- margin-left: 0;
119
- }
120
 
121
- /*noinspection SpellCheckingInspection */
122
  .mtable tbody tr {
123
- height: 25px;
124
- border: 1px solid #CCC;
125
- text-align: left;
126
- align-items: baseline;
127
- font-weight: bold;
128
- }
129
-
130
- /*noinspection SpellCheckingInspection */
131
  .mtable th:nth-child(1) {
132
- width: 17px;
133
- }
134
 
135
- /*noinspection SpellCheckingInspection */
136
  .mtable th:nth-child(2) {
137
- width: 160px;
138
- }
139
 
140
- /*noinspection SpellCheckingInspection */
141
  .mtable th:nth-child(3) {
142
- width: 100px;
143
- }
144
 
145
- /*noinspection SpellCheckingInspection */
146
  .mtable th:nth-child(4) {
147
- width: 100px;
148
- }
149
 
150
- /*noinspection SpellCheckingInspection */
151
  .mtable th:nth-child(5) {
152
- width: 150px;
153
- }
154
 
155
- /*noinspection SpellCheckingInspection */
156
  .mtable th:nth-child(6) {
157
- width: 100px;
158
- }
159
 
160
- /*noinspection SpellCheckingInspection */
161
  .mtable th:nth-child(7) {
162
- width: 150px;
163
- }
164
 
165
- /*noinspection SpellCheckingInspection */
166
  .mtable th:nth-child(8) {
167
- width: 90px;
168
- }
169
 
170
- /*noinspection SpellCheckingInspection */
171
  .mtable th:nth-child(9) {
172
- width: 29px;
173
- }
174
 
175
- /*noinspection SpellCheckingInspection */
176
- .wp-admin select.wf_mattributes, .wf_mattributes {
177
- width: 150px;
178
- left: 0;
179
- height: 25px;
180
- }
 
181
 
182
- div#wf-tab-content1 select:not([name^="output_type"]), div#wf-tab-content1 input {
183
- width: 100%;
184
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
 
186
  div#wf-tab-content1 .dashicons {
187
- vertical-align: middle;
188
- }
189
 
190
  .wf_attributes {
191
- width: 150px;
192
- left: 0
193
- }
194
 
195
  .wf_compare {
196
- max-width: 245px;
197
- left: 0
198
- }
199
 
200
  .wf_ps {
201
- width: 100px;
202
- left: 0
203
- }
204
 
205
- /*noinspection SpellCheckingInspection */
206
  .wf_sortedtable {
207
- cursor: move;
208
- }
209
 
210
  .sorted_table {
211
- position: relative;
212
- }
213
-
214
- .sorted_table .dragged {
215
  position: absolute;
216
  opacity: 0.8;
217
  z-index: 9999;
218
  background: #fff;
219
  width: 100%;
220
- display: table;
221
- }
222
-
223
- .sorted_table tbody tr.placeholder td {
224
  border: 1px dashed #2cc185;
225
- height: 46px;
226
- }
227
-
228
- /*noinspection SpellCheckingInspection */
229
- .mtable2 tbody tr {
230
- height: 25px;
231
- border: 1px solid #CCC;
232
- text-align: left;
233
- align-items: baseline;
234
- font-weight: bold;
235
- }
236
-
237
- /*noinspection SpellCheckingInspection */
238
- .mtable2 th:nth-child(1) {
239
- width: 30px;
240
- }
241
 
242
- /*noinspection SpellCheckingInspection */
243
- .mtable2 th:nth-child(2) {
244
- width: 150px;
245
- }
246
-
247
- /*noinspection SpellCheckingInspection */
248
- .mtable2 th:nth-child(3) {
249
- width: 230px;
250
- }
251
-
252
- /*noinspection SpellCheckingInspection */
253
- .mtable2 th:nth-child(4) {
254
- width: 220px;
255
- }
256
-
257
- /*noinspection SpellCheckingInspection */
258
- .mtable2 th:nth-child(7) {
259
- width: 50px;
260
- }
261
-
262
- /*noinspection SpellCheckingInspection */
263
- .mtable2 th:nth-child(8) {
264
- width: 50px;
265
- }
266
-
267
- /*noinspection SpellCheckingInspection */
268
- .mtable2 th:nth-child(9) {
269
- width: 29px;
270
- }
271
-
272
- /*noinspection SpellCheckingInspection */
273
  .wfnoempty {
274
- width: 120px;
275
- }
276
 
277
  /*==================Tab Design=======================*/
278
-
279
  p {
280
- color: #222;
281
- }
282
 
283
  .wf_tabs {
284
- position: relative;
285
- margin: 0 auto;
286
- width: 100%;
287
- list-style: none;
288
- /*bottom: 50px;*/
289
-
290
- }
291
 
292
  .wf_tabs:after {
293
- display: table;
294
- clear: both;
295
- content: "";
296
- }
297
 
298
  .wf_tabs li {
299
- float: left;
300
- width: 20%;
301
- display: block;
302
- border: 2px solid #CCC;
303
- }
304
 
305
  .wf_tabs li > input[type="radio"][name="wf_tabs"] {
306
- position: absolute;
307
- top: auto;
308
- left: -9999px;
309
- }
310
 
311
  .wf-tab-name {
312
- display: block;
313
- padding: 15px;
314
- font-size: 15px;
315
- font-weight: bold;
316
- line-height: 1;
317
- background: #fff;
318
- cursor: pointer;
319
- position: relative;
320
- text-align: center;
321
- text-transform: uppercase;
322
- color: #2CC185;
323
- }
324
 
325
  .wf-tab-name:hover {
326
- background: #2CC185;
327
- color: white;
328
- }
329
 
330
  .wf_tabs [id^="tab"]:checked + label {
331
- background: #2CC185;
332
- color: white;
333
- }
334
 
335
  .wf_tabs .wf-tab-content {
336
- z-index: 2;
337
- display: none;
338
- width: 100%;
339
- font-size: 0.9rem;
340
- position: absolute;
341
- left: 0;
342
- background: #fff;
343
- border: 2px solid #CCC;
344
- }
345
 
346
  .wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
347
- display: block;
348
- }
349
 
350
  [id^="wf-tab-content"] {
351
- margin-bottom: 40px;
352
- }
353
 
354
  div#wf-tab-content2 table:first-child {
355
- padding: 10px 0;
356
- }
357
 
358
  div#wf-tab-content2 table:first-child td:nth-child(1) {
359
- width: 260px;
360
- }
361
 
362
  div#wf-tab-content2 table:first-child td:nth-child(2) {
363
- width: 260px;
364
- }
365
 
366
  table.feed-actions tr td:last-child {
367
- text-align: right;
368
- }
369
 
370
  /* Selectize */
371
  select.selectize {
372
- display: none;
373
- }
374
 
375
  body.no-js select.selectize {
376
- display: block !important;
377
- }
378
 
379
  /* fallback combat */
380
  .selectize-dropdown .active {
381
- background-color: #edf9ff;
382
- }
383
 
384
  .selectize-dropdown .create {
385
- padding: 5px 8px;
386
- }
387
 
388
  .wapk-selectize-item {
389
- background: #0073aa !important;
390
- color: #f1f1f1 !important;
391
- font-weight: bold !important;
392
- border-color: #0073aa !important;
393
- padding-left: 5px;
394
- padding-right: 5px;
395
- }
396
 
397
  .selectize-input.full #googleTaxonomyId-selectized {
398
- opacity: 0;
399
- position: absolute;
400
- left: -10000px;
401
- }
402
 
403
  .selectize-dropdown [data-selectable].option {
404
- cursor: default;
405
- }
406
 
407
  .selectize-control.plugin-remove_button [data-value] .remove {
408
- border-left: 1px solid #f1f1f1 !important;
409
- }
410
 
411
  .selectize-dropdown .optgroup-header {
412
- font-weight: 700;
413
- background: #efefef;
414
- color: #5a5a5a;
415
- }
416
 
417
  .selectize-dropdown [data-selectable].option {
418
- cursor: pointer;
419
- }
420
 
421
  /* Feed active and inactive button CSS */
422
  .wf_status_wrap label {
423
- width: 50px;
424
- height: 25px;
425
- box-sizing: border-box;
426
- border: 1px solid;
427
- float: left;
428
- border-radius: 100px;
429
- position: relative;
430
- cursor: pointer;
431
- transition: .3s ease;
432
- }
433
 
434
  input[class=woo_feed_status_input]:checked + label {
435
- background: #55e868;
436
- }
437
 
438
  input[class=woo_feed_status_input]:checked + label:before {
439
- left: 25px;
440
- }
441
 
442
  .wf_status_wrap label:before {
443
- transition: .3s ease;
444
- content: '';
445
- width: 20px;
446
- height: 20px;
447
- position: absolute;
448
- background: white;
449
- left: 2px;
450
- top: 2px;
451
- box-sizing: border-box;
452
- border: 1px solid;
453
- color: black;
454
- border-radius: 100px;
455
- }
456
 
457
  /* list table style */
458
- /*noinspection SpellCheckingInspection */
459
  .widefat td.column-url, .widefat th.column-url,
460
  .column-url {
461
- color: #008779;
462
- font-weight: bold;
463
- }
464
 
465
  /** Feed Progress **/
466
  .feed-progress-container {
467
- width: 100%;
468
- color: white;
469
- text-align: center;
470
- font-weight: 300;
471
- }
472
 
473
  .feed-progress-bar {
474
- width: 100%;
475
- background: #eee;
476
- padding: 3px;
477
- border-radius: 3px;
478
- box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
479
- }
480
 
481
  .feed-progress-bar-fill {
482
- height: 20px;
483
- display: block;
484
- background: #3DC264;
485
- width: 0;
486
- border-radius: 3px;
487
- -webkit-transition: width 0.8s ease;
488
- transition: width 0.8s ease;
489
- }
490
 
491
  .feed-progress-status {
492
- float: left;
493
- font-weight: bold;
494
- color: darkblue;
495
- }
496
 
497
  .feed-progress-percentage {
498
- text-align: right;
499
- font-weight: bolder;
500
- color: #41f49d;
501
- font-family: 'Arial Black', sans-serif;
502
- font-size: large;
503
- }
504
-
505
- /*noinspection SpellCheckingInspection */
506
  #wpbody-content.woofeed-body-content {
507
- overflow: visible !important;
508
- }
509
 
510
- /*noinspection SpellCheckingInspection */
511
  .clippy {
512
- position: relative;
513
- width: 13px;
514
- margin-top: -3px;
515
- margin-left: 3px;
516
- top: 3px;
517
- }
518
-
519
- /*noinspection SpellCheckingInspection */
520
  .column-url .clippy {
521
- display: none;
522
- }
523
 
524
- /*noinspection SpellCheckingInspection */
525
  .column-url:hover .clippy {
526
- display: inline-block;
527
- }
528
 
529
  /**
530
  * Primer Tooltip
531
- * @TODO use node module
532
  */
533
-
534
- /*noinspection SpellCheckingInspection */
535
  .tooltipped {
536
- position: relative
537
- }
538
-
539
- /*noinspection SpellCheckingInspection */
540
- .tooltipped:after {
541
  position: absolute;
542
  z-index: 1000000;
543
  display: none;
@@ -553,539 +414,544 @@ input[class=woo_feed_status_input]:checked + label:before {
553
  white-space: pre;
554
  pointer-events: none;
555
  content: attr(aria-label);
556
- background: rgba(0, 0, 0, .8);
557
  border-radius: 3px;
558
- -webkit-font-smoothing: subpixel-antialiased
559
- }
560
-
561
- /*noinspection SpellCheckingInspection */
562
- .tooltipped:before {
563
  position: absolute;
564
  z-index: 1000001;
565
  display: none;
566
  width: 0;
567
  height: 0;
568
- color: rgba(0, 0, 0, .8);
569
  pointer-events: none;
570
  content: "";
571
- border: 5px solid transparent
572
- }
573
-
574
- /*noinspection SpellCheckingInspection */
575
- .tooltipped:hover:before, .tooltipped:hover:after, .tooltipped:active:before, .tooltipped:active:after, .tooltipped:focus:before, .tooltipped:focus:after {
576
  display: inline-block;
577
- text-decoration: none
578
- }
579
-
580
- /*noinspection SpellCheckingInspection */
581
- .tooltipped-multiline:hover:after, .tooltipped-multiline:active:after, .tooltipped-multiline:focus:after {
582
- display: table-cell
583
- }
584
-
585
- /*noinspection SpellCheckingInspection */
586
- .tooltipped-s:after, .tooltipped-se:after, .tooltipped-sw:after {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
  top: 100%;
588
  right: 50%;
589
- margin-top: 5px
590
- }
591
-
592
- /*noinspection SpellCheckingInspection */
593
- .tooltipped-s:before, .tooltipped-se:before, .tooltipped-sw:before {
594
  top: auto;
595
  right: 50%;
596
  bottom: -5px;
597
  margin-right: -5px;
598
- border-bottom-color: rgba(0, 0, 0, .8)
599
- }
600
-
601
- /*noinspection SpellCheckingInspection */
602
- .tooltipped-se:after {
603
  right: auto;
604
  left: 50%;
605
- margin-left: -15px
606
- }
607
-
608
- /*noinspection SpellCheckingInspection */
609
- .tooltipped-sw:after {
610
- margin-right: -15px
611
- }
612
-
613
- /*noinspection SpellCheckingInspection */
614
- .tooltipped-n:after, .tooltipped-ne:after, .tooltipped-nw:after {
 
 
 
 
 
 
 
 
 
615
  right: 50%;
616
  bottom: 100%;
617
- margin-bottom: 5px
618
- }
619
-
620
- /*noinspection SpellCheckingInspection */
621
- .tooltipped-n:before, .tooltipped-ne:before, .tooltipped-nw:before {
622
  top: -5px;
623
  right: 50%;
624
  bottom: auto;
625
  margin-right: -5px;
626
- border-top-color: rgba(0, 0, 0, .8)
627
- }
628
-
629
- /*noinspection SpellCheckingInspection */
630
- .tooltipped-ne:after {
631
  right: auto;
632
  left: 50%;
633
- margin-left: -15px
634
- }
635
-
636
- /*noinspection SpellCheckingInspection */
637
- .tooltipped-nw:after {
638
- margin-right: -15px
639
- }
640
-
641
- /*noinspection SpellCheckingInspection */
642
- .tooltipped-s:after, .tooltipped-n:after {
643
- -webkit-transform: translateX(50%);
644
- -ms-transform: translateX(50%);
645
- transform: translateX(50%)
646
- }
647
-
648
- /*noinspection SpellCheckingInspection */
649
- .tooltipped-w:after {
 
 
650
  right: 100%;
651
  bottom: 50%;
652
  margin-right: 5px;
653
  -webkit-transform: translateY(50%);
654
- -ms-transform: translateY(50%);
655
- transform: translateY(50%)
656
- }
657
-
658
- /*noinspection SpellCheckingInspection */
659
- .tooltipped-w:before {
660
  top: 50%;
661
  bottom: 50%;
662
  left: -5px;
663
  margin-top: -5px;
664
- border-left-color: rgba(0, 0, 0, .8)
665
- }
666
-
667
- /*noinspection SpellCheckingInspection */
668
- .tooltipped-e:after {
669
  bottom: 50%;
670
  left: 100%;
671
  margin-left: 5px;
672
  -webkit-transform: translateY(50%);
673
- -ms-transform: translateY(50%);
674
- transform: translateY(50%)
675
- }
676
-
677
- /*noinspection SpellCheckingInspection */
678
- .tooltipped-e:before {
679
  top: 50%;
680
  right: -5px;
681
  bottom: 50%;
682
  margin-top: -5px;
683
- border-right-color: rgba(0, 0, 0, .8)
684
- }
685
-
686
- /*noinspection SpellCheckingInspection,CssInvalidPropertyValue*/
687
- .tooltipped-multiline:after {
688
- width: -webkit-max-content;
689
- width: -moz-max-content;
690
- width: max-content;
691
- max-width: 250px;
692
- word-break: break-word;
693
- word-wrap: normal;
694
- white-space: pre-line;
695
- border-collapse: separate
696
- }
697
-
698
- /*noinspection SpellCheckingInspection */
699
- .tooltipped-multiline.tooltipped-s:after, .tooltipped-multiline.tooltipped-n:after {
700
  right: auto;
701
  left: 50%;
702
  -webkit-transform: translateX(-50%);
703
- -ms-transform: translateX(-50%);
704
- transform: translateX(-50%)
705
- }
706
-
707
- /*noinspection SpellCheckingInspection */
708
- .tooltipped-multiline.tooltipped-w:after, .tooltipped-multiline.tooltipped-e:after {
709
- right: 100%
710
- }
711
-
712
- @media screen and (min-width: 0\0
713
- ) {
714
- /*noinspection SpellCheckingInspection */
715
- .tooltipped-multiline:after {
716
- width: 250px
717
- }
718
- }
719
-
720
- /*noinspection SpellCheckingInspection */
721
- .tooltipped-sticky:before, .tooltipped-sticky:after {
722
- display: inline-block
723
- }
724
-
725
- /*noinspection SpellCheckingInspection */
726
- .tooltipped-sticky.tooltipped-multiline:after {
727
- display: table-cell
728
- }
729
-
730
- /*noinspection SpellCheckingInspection */
731
  .fullscreen-overlay-enabled.dark-theme .tooltipped:after {
732
- color: #000;
733
- background: rgba(255, 255, 255, .8)
734
- }
 
 
 
 
 
 
 
 
735
 
736
- /*noinspection SpellCheckingInspection */
737
- .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before {
738
- border-bottom-color: rgba(255, 255, 255, .8)
739
- }
740
 
741
- /*noinspection SpellCheckingInspection */
742
- .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before {
743
- border-top-color: rgba(255, 255, 255, .8)
744
- }
 
745
 
746
- /*noinspection SpellCheckingInspection */
747
  .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before {
748
- border-right-color: rgba(255, 255, 255, .8)
749
- }
750
 
751
- /*noinspection SpellCheckingInspection */
752
  .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before {
753
- border-left-color: rgba(255, 255, 255, .8)
754
- }
755
 
756
- ul.tracker_collection_list {
757
- list-style: initial;
758
- padding: initial;
759
- margin: -10px 0 0 30px;
760
- font-size: 11px !important;
761
- }
762
 
763
- ul.tracker_collection_list li {
764
- margin: 0;
765
- }
 
 
 
 
766
 
767
  /** Info Message Table **/
768
- table.wf-info-table th,
769
- table.wf-rate-table th {
770
- vertical-align: middle;
771
- text-align: center;
772
- max-width: 100%;
773
- font-weight: 500;
774
- }
775
-
776
- table.wf-info-table th strong,
777
- table.wf-rate-table th strong {
778
- font-weight: bold;
779
- }
780
 
781
  table.wf-info-table th:first-child img {
782
- margin: 0 0 -5px 5px;
783
- }
784
 
785
  table.wf-rate-table a {
786
- color: #0073aa;
787
- }
788
 
789
  table.wf-rate-table a.review-star:after {
790
- content: "\f155\f155\f155\f155\f155" !important;
791
- /*noinspection CssNoGenericFontName*/
792
- font-family: dashicons;
793
- font-size: 10px;
794
- font-weight: 100;
795
- text-rendering: auto;
796
- -webkit-font-smoothing: antialiased;
797
- -moz-osx-font-smoothing: grayscale;
798
- /*content: '★★★★★'; /*&#x2605;&#x2605;&#x2605;&#x2605;&#x2605;*/
799
- /*content: '\2605\2605\2605\2605\2605';*/
800
- color: #0073aa;
801
- text-decoration: underline;
802
- }
803
 
804
  /** Admin Menu Icon **/
805
  #adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before {
806
- content: "";
807
- background: url(../images/woo-feed-icon.svg) no-repeat center center;
808
- background-size: 20px 20px;
809
- opacity: 0.6;
810
- filter: alpha(opacity=60);
811
- }
 
 
 
812
 
813
- #adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before,
814
  #adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before {
815
- opacity: 1;
816
- filter: alpha(opacity=100);
817
- }
818
 
819
  /** Admin Page Wrapper **/
820
  .wapk-admin, .wapk-admin * {
821
- -webkit-box-sizing: border-box;
822
- -moz-box-sizing: border-box;
823
- box-sizing: border-box;
824
- }
825
 
826
  .wapk-admin {
827
- position: relative;
828
- display: block;
829
- -webkit-hyphens: manual;
830
- -ms-hyphens: manual;
831
- hyphens: manual;
832
- color: #1B2730;
833
- /* reset .warp margin to use full width except menu area */
834
- margin: 0 0 0 -10px;
835
- }
836
 
837
  @media screen and (min-width: 783px) {
838
- .wapk-admin {
839
- margin: 0 0 0 -20px;
840
- }
841
- }
842
-
843
- .wapk-admin h1, .wapk-admin h2,
844
- .wapk-admin h3, .wapk-admin h4,
845
- .wapk-admin h5, .wapk-admin h6,
846
- .wapk-admin p {
847
- color: #1B2730;
848
- }
849
 
850
  .text-center {
851
- text-align: center;
852
- }
 
 
 
 
853
 
854
  .wapk-admin sup {
855
- vertical-align: baseline;
856
- position: relative;
857
- top: -6px;
858
- }
859
 
860
  .wapk-admin sub {
861
- vertical-align: baseline;
862
- position: relative;
863
- top: 4px;
864
- }
865
 
866
  /* WP.Core.UI Compat */
867
- .wapk-admin .wapk-section [class$=icon32] + h2,
868
- .wapk-admin .wapk-section h1,
869
- .wapk-admin .wapk-section > h2:first-child {
 
 
 
 
 
 
 
 
870
  font-size: 23px;
871
  font-weight: 400;
872
  margin: 0;
873
  padding: 9px 0 4px 0;
874
- line-height: 1.3;
875
- }
 
 
 
 
 
876
 
877
- .wapk-admin .wapk-section,
878
  .wapk-admin > .notice {
879
- /* Restore .warp margin */
880
- margin: 10px 20px 0 22px;
881
- position: relative;
882
- display: block;
883
- }
884
-
885
- .clear:after {
886
- content: "";
887
- display: table;
888
- clear: both;
889
- }
890
 
891
  .wapk-admin span.help {
892
- display: block;
893
- float: left;
894
- width: 100%;
895
- font-size: 0.9em;
896
- color: #636363;
897
- margin-top: 5px;
898
- font-weight: 500;
899
- }
900
-
901
- .wapk-admin span.help .dashicons {
902
  width: 11px;
903
  height: 12px;
904
  font-size: inherit;
905
- vertical-align: middle;
906
- }
 
 
 
 
907
 
908
  /*.wapk-admin .help a { color: inherit; text-decoration: underline; }*/
909
  /** Extend WP Core UI PostBox For Docs **/
910
  .wapk-feed-docs .postbox {
911
- width: 355px;
912
- margin-right: 20px;
913
- display: inline-block;
914
- vertical-align: top;
915
- }
916
-
917
- @media only screen and (max-width: 850px) {
918
- .wapk-feed-docs .postbox {
919
- display: block;
920
- width: auto;
921
- float: none;
922
- margin-right: auto;
923
- }
924
- }
925
-
926
- .wapk-feed-docs .postbox .hndle {
927
  font-size: 14px;
928
  padding: 8px 12px;
929
  margin: 0;
930
  line-height: 1.4;
931
- cursor: pointer;
932
- }
933
-
934
- .wapk-feed-docs .postbox .dashicons {
935
- color: #ccc
936
- }
937
-
938
- .wapk-feed-docs .postbox a {
939
- text-decoration: none;
940
- }
941
-
942
- .wapk-feed-docs .postbox .inside,
943
- .wapk-feed-docs .postbox ul {
944
- margin-bottom: 0;
945
- }
946
-
947
- .wapk-feed-docs .postbox .toggle-indicator:before {
948
  content: "\F142";
949
  display: inline-block;
950
  font: 400 20px/1 dashicons;
951
  speak: none;
952
  -webkit-font-smoothing: antialiased;
953
  -moz-osx-font-smoothing: grayscale;
954
- text-decoration: none !important;
955
- }
956
-
957
- .wapk-feed-docs .postbox.closed .toggle-indicator:before {
958
- content: "\F140";
959
- }
960
-
961
- .wapk-feed-docs .postbox li {
962
  width: 100%;
963
  display: block;
964
- float: left;
965
- }
 
 
 
 
 
 
 
966
 
967
- .wapk-feed-docs .postbox li span, .wapk-feed-docs .postbox li a {
968
- display: inline-block;
969
- float: left;
970
- }
971
-
972
- .wapk-feed-docs .postbox li span {
973
- margin-right: 4px;
974
- }
975
-
976
- .wapk-feed-docs .postbox li a {
977
- width: calc(100% - 24px);
978
- }
979
 
980
  .wapk-section #post-body.columns-2 #side-sortables {
981
- min-height: 196px;
982
- }
983
 
984
  #poststuff #feed_merchant_info .inside {
985
- margin: 0;
986
- padding: 0;
987
- }
988
 
989
  #feed_merchant_info ul.data {
990
- margin-left: 24px;
991
- margin-top: 5px;
992
- }
993
-
994
- #feed_merchant_info ul.data li {
995
- margin-bottom: 5px;
996
- }
997
 
998
  .merchant-info-section {
999
- padding: 6px 10px 8px;
1000
- }
1001
 
1002
  .generateFeed .wf-tab-content table:first-child {
1003
- border: none;
1004
- box-shadow: none;
1005
- }
1006
 
1007
  .generateFeed table th {
1008
- font-weight: bold;
1009
- }
 
 
 
 
 
 
1010
 
1011
  /** Admin Feed Help Docs **/
1012
  .wp-submenu li span.woo-feed-docs {
1013
- font-weight: bold;
1014
- color: #f18500;
1015
- }
 
 
1016
 
1017
- .wp-submenu li:hover span.woo-feed-docs,
1018
  .wp-submenu li.current span.woo-feed-docs {
1019
- color: #ce7304;
1020
- }
1021
 
1022
  .wapk-admin .wapk-feed-docs .postbox .hndle {
1023
- cursor: default;
1024
- }
1025
-
1026
 
1027
  /** Admin Call-To-Action **/
1028
  .wapk-cta {
1029
- position: relative;
1030
- display: flex;
1031
- width: 100%;
1032
- padding: 100px 15px;
1033
- background: linear-gradient(45deg, #6CD5FF 33%, #c2efef 100%);
1034
- justify-content: center;
1035
- align-items: center;
1036
- }
1037
-
1038
- .wapk-cta-icon .dashicons {
 
1039
  font-size: 100px;
1040
  width: 100px;
1041
  height: auto;
1042
  margin: 0 10px -8px 0;
1043
- color: #02658c;
1044
- }
1045
-
1046
- .wapk-cta-content {
1047
- width: 50%;
1048
- }
1049
-
1050
- .wapk-cta-content h2 {
1051
- font-size: 2em;
1052
- margin: 0.5em 0;
1053
- }
1054
-
1055
- .wapk-cta-action {
1056
- }
1057
-
1058
- .wapk-cta-action a.wapk-button {
1059
  font-size: 24px;
1060
  height: auto !important;
1061
- padding: 10px 20px;
1062
- }
1063
 
1064
  @media (max-width: 600px) {
1065
- .wapk-cta {
1066
- display: block;
1067
- text-align: center;
1068
- padding: 4em 0;
1069
- }
1070
-
1071
  .wapk-cta-content {
1072
- width: 100%;
1073
- margin: 2em 0;
1074
- }
1075
- }
1076
 
1077
  /** Override .wp-core-ui .wapk-button styles with prefix .wapk-admin **/
1078
- /* @TODO refactor with scss */
1079
  /* Button Skin */
1080
- .wapk-button,
1081
- .wapk-button-secondary {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1082
  color: #00D4D4;
1083
  border-color: #00D4D4;
1084
- }
1085
-
1086
- .wapk-button,
1087
- .wapk-button-primary,
1088
- .wapk-button-secondary {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1089
  display: inline-block;
1090
  text-decoration: none;
1091
  font-size: 13px;
@@ -1100,312 +966,239 @@ table.wf-rate-table a.review-star:after {
1100
  border-radius: 3px;
1101
  white-space: nowrap;
1102
  box-sizing: border-box;
1103
- }
1104
-
1105
- .wapk-button > svg,
1106
- .wapk-button-secondary > svg {
1107
- width: 15px;
1108
- margin-left: 5px;
1109
- fill: #00D4D4;
1110
- }
1111
-
1112
- .wapk-button > .dashicons,
1113
- .wapk-button-secondary > .dashicons {
1114
- color: #00D4D4;
1115
- }
1116
-
1117
- .wapk-button.hover,
1118
- .wapk-button:hover,
1119
- .wapk-button-secondary:hover,
1120
- .wapk-button.focus,
1121
- .wapk-button:focus,
1122
- .wapk-button-secondary:focus {
1123
- border-color: #00bbbb;
1124
- color: #00bbbb;
1125
- }
1126
-
1127
- .wapk-button.hover > svg,
1128
- .wapk-button:hover > svg,
1129
- .wapk-button-secondary:hover > svg,
1130
- .wapk-button.focus > svg,
1131
- .wapk-button:focus > svg,
1132
- .wapk-button-secondary:focus > svg {
1133
- fill: #00bbbb;
1134
- }
1135
-
1136
- .wapk-button.hover > .dashicons,
1137
- .wapk-button:hover > .dashicons,
1138
- .wapk-button-secondary:hover > .dashicons,
1139
- .wapk-button.focus > .dashicons,
1140
- .wapk-button:focus > .dashicons,
1141
- .wapk-button-secondary:focus > .dashicons {
1142
- color: #00bbbb;
1143
- }
1144
-
1145
- .wapk-button.focus,
1146
- .wapk-button:focus,
1147
- .wapk-button-secondary:focus {
1148
- border-color: #00D4D4;
1149
- color: #00bbbb;
1150
- box-shadow: 0 0 0 1px #00D4D4;
1151
- }
1152
-
1153
- .wapk-button.focus > svg,
1154
- .wapk-button:focus > svg,
1155
- .wapk-button-secondary:focus > svg {
1156
- fill: #00bbbb;
1157
- }
1158
-
1159
- .wapk-button.focus > .dashicons,
1160
- .wapk-button:focus > .dashicons,
1161
- .wapk-button-secondary:focus > .dashicons {
1162
- color: #00bbbb;
1163
- }
1164
-
1165
- .wapk-button:active {
1166
- background: #00bbbb;
1167
- border-color: #00bbbb;
1168
- }
1169
-
1170
- .wapk-button.active,
1171
- .wapk-button.active:focus,
1172
- .wapk-button.active:hover {
1173
- border-color: #00bbbb;
1174
- color: #00bbbb;
1175
- box-shadow: inset 0 2px 5px -3px #00bbbb;
1176
- }
1177
-
1178
- .wapk-button.active > svg,
1179
- .wapk-button.active:focus > svg,
1180
- .wapk-button.active:hover > svg {
1181
- fill: #00bbbb;
1182
- }
1183
-
1184
- .wapk-button.active > .dashicons,
1185
- .wapk-button.active:focus > .dashicons,
1186
- .wapk-button.active:hover > .dashicons {
1187
- color: #00bbbb;
1188
- }
1189
-
1190
- .wapk-button-primary {
1191
  background: #00D4D4;
1192
  border-color: #00D4D4;
1193
  color: #fff;
1194
  box-shadow: 0 1px 0 #00bbbb;
1195
- text-shadow: 0 -1px 1px #00bbbb, 1px 0 1px #00bbbb, 0 1px 1px #00bbbb, -1px 0 1px #00bbbb;
1196
- }
1197
-
1198
- .wapk-button-primary > svg {
1199
- fill: #fff;
1200
- }
1201
-
1202
- .wapk-button-primary:hover, .wapk-button-primary:focus {
1203
- background: #00e3e3;
1204
- border-color: #00c5c5;
1205
- color: #fff;
1206
- }
1207
-
1208
- .wapk-button-primary:hover > svg, .wapk-button-primary:focus > svg {
1209
- fill: #fff;
1210
- }
1211
-
1212
- .wapk-button-primary:focus {
1213
- box-shadow: 0 0 0 1px #fff, 0 0 0 3px #00D4D4;
1214
- }
1215
-
1216
- .wapk-button-primary:active {
1217
- background: #00bbbb;
 
 
 
 
 
 
 
1218
  border-color: #00bbbb;
1219
- color: #fff;
1220
- }
1221
-
1222
- .wapk-button-primary:active > svg {
1223
- fill: #fff;
1224
- }
1225
-
1226
- .wapk-button-primary.active, .wapk-button-primary.active:focus, .wapk-button-primary.active:hover {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1227
  background: #00D4D4;
1228
  color: #fff;
1229
  border-color: #008888;
1230
- box-shadow: inset 0 2px 5px -3px black;
1231
- }
1232
-
1233
- .wapk-button-primary.active > svg, .wapk-button-primary.active:focus > svg, .wapk-button-primary.active:hover > svg {
1234
- fill: #fff;
1235
- }
1236
-
1237
- .wapk-button-primary[disabled], .wapk-button-primary:disabled, .wapk-button-primary.wapk-button-primary-disabled, .wapk-button-primary.disabled {
 
 
 
 
 
 
 
 
 
 
1238
  color: #c7d1d1 !important;
1239
  background: #22ffff !important;
1240
  border-color: #22ffff !important;
1241
- text-shadow: none !important;
1242
- }
1243
-
1244
- .wapk-button-primary[disabled] > svg, .wapk-button-primary:disabled > svg, .wapk-button-primary.wapk-button-primary-disabled > svg, .wapk-button-primary.disabled > svg {
1245
- fill: #c7d1d1 !important;
1246
- }
1247
-
1248
- .wapk-button.wapk-button-primary.wapk-button-hero {
1249
- box-shadow: 0 2px 0 #00bbbb;
1250
- }
1251
-
1252
- .wapk-button.wapk-button-primary.wapk-button-hero:focus {
1253
- box-shadow: 0 2px 0 #00bbbb, 0 1px 0 #00c5c5, 0 0 2px 1px #00eeee;
1254
- }
1255
-
1256
- .wapk-button.wapk-button-primary.wapk-button-hero.active, .wapk-button.wapk-button-primary.wapk-button-hero.active:hover, .wapk-button.wapk-button-primary.wapk-button-hero.active:focus, .wapk-button.wapk-button-primary.wapk-button-hero:active {
1257
- box-shadow: inset 0 3px 0 #00a1a1;
1258
- }
1259
-
1260
- .wapk-button-group > .wapk-button.active {
1261
- border-color: #00D4D4;
1262
- }
 
 
 
 
 
 
 
1263
 
1264
  /* Button Sizes */
1265
- .wapk-button.wapk-button-xl,
 
 
 
 
1266
  .wapk-button-group.wapk-button-xl .wapk-button {
1267
- height: 30px;
1268
- line-height: 28px;
1269
- padding: 0 12px 2px;
1270
- }
 
 
 
 
 
 
1271
 
1272
- .wapk-button.wapk-button-hero,
1273
  .wapk-button-group.wapk-button-hero .wapk-button {
1274
- font-size: 18px;
1275
- height: 50px;
1276
- line-height: 48px;
1277
- padding: 0 36px;
1278
- min-height: 46px;
1279
- }
1280
 
1281
  @media screen and (min-width: 782px) {
1282
- th#status {
1283
- width: 80px;
1284
- }
1285
-
1286
- th#provider {
1287
- width: 80px;
1288
- }
1289
-
1290
- th#type {
1291
- width: 50px;
1292
- }
1293
-
1294
- th#option_name {
1295
- width: 100px;
1296
- }
1297
-
1298
- td.option_name.column-option_name > span:first-child {
1299
- display: none;
1300
- }
1301
-
1302
- th#last_updated {
1303
- width: 90px;
1304
- }
1305
-
1306
- th#view {
1307
- width: 90px;
1308
- }
1309
- }
1310
 
1311
  @media screen and (min-width: 960px) {
1312
- th#status, th#provider, th#view {
1313
- width: 100px;
1314
- }
1315
-
1316
- th#type {
1317
- width: 80px;
1318
- }
1319
-
1320
- th#option_name {
1321
- width: 150px;
1322
- }
1323
-
1324
- th#last_updated {
1325
- width: 140px;
1326
- }
1327
- }
1328
 
1329
  @media screen and (max-width: 782px) {
1330
- table.wf-info-table {
1331
- margin-top: 10px;
1332
- }
1333
-
1334
  table.wf-info-table th:first-child img {
1335
- margin: 0 auto;
1336
- display: block;
1337
- }
1338
-
1339
- .wapk-button.wapk-button-xl {
1340
- padding: 6px 14px;
1341
- line-height: normal;
1342
- font-size: 14px;
1343
- vertical-align: middle;
1344
- height: auto;
1345
- margin-bottom: 4px;
1346
- }
1347
- }
1348
 
1349
  .wapk-feed-docs .wapk-feed-cta {
1350
- margin: 0;
1351
- }
1352
 
1353
- form.campaign_configurator {
1354
- background: #FFF;
1355
- padding: 20px 0;
1356
- }
1357
-
1358
- .campaign_configurator table {
1359
  margin: 0 auto;
1360
  width: 51%;
1361
  min-width: 574px;
1362
  border: none;
1363
- box-shadow: none;
1364
- }
1365
-
1366
- .campaign_configurator th {
1367
- min-width: 120px;
1368
- }
1369
 
1370
  @media screen and (max-width: 782px) {
1371
- form.campaign_configurator {
1372
- padding: 0;
1373
- }
1374
-
1375
  .campaign_configurator table {
1376
- width: auto;
1377
- min-width: auto;
1378
- max-width: 100%;
1379
- }
1380
-
1381
  .campaign_configurator th {
1382
- min-width: auto;
1383
- }
1384
- }
1385
-
1386
 
1387
  #wf-tab-content-config td > input:not([type="checkbox"]):not([type="radio"]),
1388
  #wf-tab-content-config td > select,
1389
  #wf-tab-content-config td > textarea {
1390
- width: 100% !important;
1391
- }
1392
 
1393
  .woo-feed-filters td > div:nth-child(2n):not(.clear):not(.selectize) {
1394
- width: 120px;
1395
- display: block;
1396
- }
1397
 
1398
- .woo-feed-filters,
1399
- .woo-feed-ftp {
1400
- margin: 15px auto 25px;
1401
- }
1402
 
1403
  .woo-feed-filters tr > td:first-child {
1404
- width: 290px;
1405
- padding-left: 40px;
1406
- }
1407
 
1408
- .woo-feed-filters td > div:not(.clear) {
1409
- float: left;
1410
- margin-right: 10px;
1411
- }
2
  * All of the CSS for your admin-specific functionality should be
3
  * included in this file.
4
  */
5
+ .wpf_spin {
6
+ -webkit-animation: spin 1000ms infinite linear;
7
+ animation: spin 1000ms infinite linear; }
8
+ .wpf_spin.reverse_spin {
9
+ animation-direction: reverse; }
 
 
 
10
 
11
  .wpf_regenerate.disabled {
12
+ color: #737373;
13
+ box-shadow: none;
14
+ cursor: not-allowed; }
 
15
 
16
  @-webkit-keyframes spin {
17
+ 0% {
18
+ -webkit-transform: rotate(0deg);
19
+ transform: rotate(0deg); }
20
+ 100% {
21
+ -webkit-transform: rotate(359deg);
22
+ transform: rotate(359deg); } }
 
 
 
23
 
24
  @keyframes spin {
25
+ 0% {
26
+ -webkit-transform: rotate(0deg);
27
+ transform: rotate(0deg); }
28
+ 100% {
29
+ -webkit-transform: rotate(359deg);
30
+ transform: rotate(359deg); } }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
+ .wfbtn {
33
+ background: #3498db;
34
+ background-image: linear-gradient(to bottom, #3498db, #2980b9);
35
+ border-radius: 17px;
36
+ box-shadow: 0 1px 3px #666666;
37
+ font-family: Arial, sans-serif;
38
+ color: #ffffff;
39
+ font-size: 20px;
40
+ padding: 10px 20px 10px 20px;
41
+ border: solid #2b698f 3px;
42
+ text-decoration: none; }
43
+ .wfbtn:hover {
 
 
44
  background: #3cb0fd;
 
 
 
 
45
  background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
46
+ text-decoration: none; }
 
47
 
48
+ .wftooltip {
49
+ display: none;
50
+ position: absolute;
51
+ border: 1px solid #333;
52
+ background-color: #161616;
53
+ border-radius: 5px;
54
+ padding: 10px;
55
+ color: #fff;
56
+ font-size: 12px; }
57
+
58
+ .feed-actions .makeFeedResponse {
59
+ width: 70%;
60
+ color: green; }
61
 
62
  .woo-feed-mapping-input {
63
+ width: 100%; }
 
64
 
65
  .requiredIn {
66
+ color: red; }
 
67
 
68
  .generalInput {
69
+ width: 200px; }
70
+ .generalInput:not(.selectize-control) {
71
+ margin: 5px auto; }
 
 
 
72
 
73
  .error {
74
+ color: red; }
 
75
 
 
76
  .widefat td select, .widefat td input {
77
+ max-width: 100%; }
 
78
 
79
  #wf_newRow {
80
+ margin-left: 0; }
 
81
 
 
82
  .mtable tbody tr {
83
+ height: 25px;
84
+ border: 1px solid #CCC;
85
+ text-align: left;
86
+ -ms-flex-align: baseline;
87
+ align-items: baseline;
88
+ font-weight: bold; }
89
+
 
90
  .mtable th:nth-child(1) {
91
+ width: 17px; }
 
92
 
 
93
  .mtable th:nth-child(2) {
94
+ width: 160px; }
 
95
 
 
96
  .mtable th:nth-child(3) {
97
+ width: 100px; }
 
98
 
 
99
  .mtable th:nth-child(4) {
100
+ width: 100px; }
 
101
 
 
102
  .mtable th:nth-child(5) {
103
+ width: 150px; }
 
104
 
 
105
  .mtable th:nth-child(6) {
106
+ width: 100px; }
 
107
 
 
108
  .mtable th:nth-child(7) {
109
+ width: 150px; }
 
110
 
 
111
  .mtable th:nth-child(8) {
112
+ width: 90px; }
 
113
 
 
114
  .mtable th:nth-child(9) {
115
+ width: 29px; }
 
116
 
117
+ .mtable2 tbody tr {
118
+ height: 25px;
119
+ border: 1px solid #CCC;
120
+ text-align: left;
121
+ -ms-flex-align: baseline;
122
+ align-items: baseline;
123
+ font-weight: bold; }
124
 
125
+ .mtable2 th:nth-child(1) {
126
+ width: 30px; }
127
+
128
+ .mtable2 th:nth-child(2) {
129
+ width: 150px; }
130
+
131
+ .mtable2 th:nth-child(3) {
132
+ width: 230px; }
133
+
134
+ .mtable2 th:nth-child(4) {
135
+ width: 220px; }
136
+
137
+ .mtable2 th:nth-child(7) {
138
+ width: 50px; }
139
+
140
+ .mtable2 th:nth-child(8) {
141
+ width: 50px; }
142
+
143
+ .mtable2 th:nth-child(9) {
144
+ width: 29px; }
145
+
146
+ .wp-admin select.wf_mattributes {
147
+ width: 150px;
148
+ left: 0;
149
+ height: 25px; }
150
+
151
+ div#wf-tab-content1 select:not([name^="output_type"]) {
152
+ width: 100%; }
153
+
154
+ div#wf-tab-content1 input {
155
+ width: 100%; }
156
 
157
  div#wf-tab-content1 .dashicons {
158
+ vertical-align: middle; }
 
159
 
160
  .wf_attributes {
161
+ width: 150px;
162
+ left: 0; }
 
163
 
164
  .wf_compare {
165
+ max-width: 245px;
166
+ left: 0; }
 
167
 
168
  .wf_ps {
169
+ width: 100px;
170
+ left: 0; }
 
171
 
 
172
  .wf_sortedtable {
173
+ cursor: move; }
 
174
 
175
  .sorted_table {
176
+ position: relative; }
177
+ .sorted_table .dragged {
 
 
178
  position: absolute;
179
  opacity: 0.8;
180
  z-index: 9999;
181
  background: #fff;
182
  width: 100%;
183
+ display: table; }
184
+ .sorted_table tbody tr.placeholder td {
 
 
185
  border: 1px dashed #2cc185;
186
+ height: 46px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  .wfnoempty {
189
+ width: 120px; }
 
190
 
191
  /*==================Tab Design=======================*/
 
192
  p {
193
+ color: #222; }
 
194
 
195
  .wf_tabs {
196
+ position: relative;
197
+ margin: 0 auto;
198
+ width: 100%;
199
+ list-style: none;
200
+ /*bottom: 50px;*/ }
 
 
201
 
202
  .wf_tabs:after {
203
+ display: table;
204
+ clear: both;
205
+ content: ""; }
 
206
 
207
  .wf_tabs li {
208
+ float: left;
209
+ width: 20%;
210
+ display: block;
211
+ border: 2px solid #CCC; }
 
212
 
213
  .wf_tabs li > input[type="radio"][name="wf_tabs"] {
214
+ position: absolute;
215
+ top: auto;
216
+ left: -9999px; }
 
217
 
218
  .wf-tab-name {
219
+ display: block;
220
+ padding: 15px;
221
+ font-size: 15px;
222
+ font-weight: bold;
223
+ line-height: 1;
224
+ background: #fff;
225
+ cursor: pointer;
226
+ position: relative;
227
+ text-align: center;
228
+ text-transform: uppercase;
229
+ color: #2CC185; }
 
230
 
231
  .wf-tab-name:hover {
232
+ background: #2CC185;
233
+ color: white; }
 
234
 
235
  .wf_tabs [id^="tab"]:checked + label {
236
+ background: #2CC185;
237
+ color: white; }
 
238
 
239
  .wf_tabs .wf-tab-content {
240
+ z-index: 2;
241
+ display: none;
242
+ width: 100%;
243
+ font-size: 0.9rem;
244
+ position: absolute;
245
+ left: 0;
246
+ background: #fff;
247
+ border: 2px solid #CCC; }
 
248
 
249
  .wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
250
+ display: block; }
 
251
 
252
  [id^="wf-tab-content"] {
253
+ margin-bottom: 40px; }
 
254
 
255
  div#wf-tab-content2 table:first-child {
256
+ padding: 10px 0; }
 
257
 
258
  div#wf-tab-content2 table:first-child td:nth-child(1) {
259
+ width: 260px; }
 
260
 
261
  div#wf-tab-content2 table:first-child td:nth-child(2) {
262
+ width: 260px; }
 
263
 
264
  table.feed-actions tr td:last-child {
265
+ text-align: right; }
 
266
 
267
  /* Selectize */
268
  select.selectize {
269
+ display: none; }
 
270
 
271
  body.no-js select.selectize {
272
+ display: block !important; }
 
273
 
274
  /* fallback combat */
275
  .selectize-dropdown .active {
276
+ background-color: #edf9ff; }
 
277
 
278
  .selectize-dropdown .create {
279
+ padding: 5px 8px; }
 
280
 
281
  .wapk-selectize-item {
282
+ background: #0073aa !important;
283
+ color: #f1f1f1 !important;
284
+ font-weight: bold !important;
285
+ border-color: #0073aa !important;
286
+ padding-left: 5px;
287
+ padding-right: 5px; }
 
288
 
289
  .selectize-input.full #googleTaxonomyId-selectized {
290
+ opacity: 0;
291
+ position: absolute;
292
+ left: -10000px; }
 
293
 
294
  .selectize-dropdown [data-selectable].option {
295
+ cursor: default; }
 
296
 
297
  .selectize-control.plugin-remove_button [data-value] .remove {
298
+ border-left: 1px solid #f1f1f1 !important; }
 
299
 
300
  .selectize-dropdown .optgroup-header {
301
+ font-weight: 700;
302
+ background: #efefef;
303
+ color: #5a5a5a; }
 
304
 
305
  .selectize-dropdown [data-selectable].option {
306
+ cursor: pointer; }
 
307
 
308
  /* Feed active and inactive button CSS */
309
  .wf_status_wrap label {
310
+ width: 50px;
311
+ height: 25px;
312
+ box-sizing: border-box;
313
+ border: 1px solid;
314
+ float: left;
315
+ border-radius: 100px;
316
+ position: relative;
317
+ cursor: pointer;
318
+ transition: .3s ease; }
 
319
 
320
  input[class=woo_feed_status_input]:checked + label {
321
+ background: #55e868; }
 
322
 
323
  input[class=woo_feed_status_input]:checked + label:before {
324
+ left: 25px; }
 
325
 
326
  .wf_status_wrap label:before {
327
+ transition: .3s ease;
328
+ content: '';
329
+ width: 20px;
330
+ height: 20px;
331
+ position: absolute;
332
+ background: white;
333
+ left: 2px;
334
+ top: 2px;
335
+ box-sizing: border-box;
336
+ border: 1px solid;
337
+ color: black;
338
+ border-radius: 100px; }
 
339
 
340
  /* list table style */
 
341
  .widefat td.column-url, .widefat th.column-url,
342
  .column-url {
343
+ color: #008779;
344
+ font-weight: bold; }
 
345
 
346
  /** Feed Progress **/
347
  .feed-progress-container {
348
+ width: 100%;
349
+ color: white;
350
+ text-align: center;
351
+ font-weight: 300; }
 
352
 
353
  .feed-progress-bar {
354
+ width: 100%;
355
+ background: #eee;
356
+ padding: 3px;
357
+ border-radius: 3px;
358
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); }
 
359
 
360
  .feed-progress-bar-fill {
361
+ height: 20px;
362
+ display: block;
363
+ background: #3DC264;
364
+ width: 0;
365
+ border-radius: 3px;
366
+ transition: width 0.8s ease; }
 
 
367
 
368
  .feed-progress-status {
369
+ float: left;
370
+ font-weight: bold;
371
+ color: darkblue; }
 
372
 
373
  .feed-progress-percentage {
374
+ text-align: right;
375
+ font-weight: bolder;
376
+ color: #41f49d;
377
+ font-family: 'Arial Black', sans-serif;
378
+ font-size: large; }
379
+
 
 
380
  #wpbody-content.woofeed-body-content {
381
+ overflow: visible !important; }
 
382
 
 
383
  .clippy {
384
+ position: relative;
385
+ width: 13px;
386
+ margin-top: -3px;
387
+ margin-left: 3px;
388
+ top: 3px; }
389
+
 
 
390
  .column-url .clippy {
391
+ display: none; }
 
392
 
 
393
  .column-url:hover .clippy {
394
+ display: inline-block; }
 
395
 
396
  /**
397
  * Primer Tooltip
 
398
  */
 
 
399
  .tooltipped {
400
+ position: relative; }
401
+ .tooltipped:after {
 
 
 
402
  position: absolute;
403
  z-index: 1000000;
404
  display: none;
414
  white-space: pre;
415
  pointer-events: none;
416
  content: attr(aria-label);
417
+ background: rgba(0, 0, 0, 0.8);
418
  border-radius: 3px;
419
+ -webkit-font-smoothing: subpixel-antialiased; }
420
+ .tooltipped:before {
 
 
 
421
  position: absolute;
422
  z-index: 1000001;
423
  display: none;
424
  width: 0;
425
  height: 0;
426
+ color: rgba(0, 0, 0, 0.8);
427
  pointer-events: none;
428
  content: "";
429
+ border: 5px solid transparent; }
430
+ .tooltipped:hover:before {
 
 
 
431
  display: inline-block;
432
+ text-decoration: none; }
433
+ .tooltipped:hover:after {
434
+ display: inline-block;
435
+ text-decoration: none; }
436
+ .tooltipped:active:before {
437
+ display: inline-block;
438
+ text-decoration: none; }
439
+ .tooltipped:active:after {
440
+ display: inline-block;
441
+ text-decoration: none; }
442
+ .tooltipped:focus:before {
443
+ display: inline-block;
444
+ text-decoration: none; }
445
+ .tooltipped:focus:after {
446
+ display: inline-block;
447
+ text-decoration: none; }
448
+ .tooltipped-multiline:hover:after {
449
+ display: table-cell; }
450
+ .tooltipped-multiline:active:after {
451
+ display: table-cell; }
452
+ .tooltipped-multiline:focus:after {
453
+ display: table-cell; }
454
+ .tooltipped-multiline:after {
455
+ width: -webkit-max-content;
456
+ width: -moz-max-content;
457
+ width: max-content;
458
+ max-width: 250px;
459
+ word-break: break-word;
460
+ word-wrap: normal;
461
+ white-space: pre-line;
462
+ border-collapse: separate; }
463
+ .tooltipped-s:after {
464
  top: 100%;
465
  right: 50%;
466
+ margin-top: 5px;
467
+ -webkit-transform: translateX(50%);
468
+ transform: translateX(50%); }
469
+ .tooltipped-s:before {
 
470
  top: auto;
471
  right: 50%;
472
  bottom: -5px;
473
  margin-right: -5px;
474
+ border-bottom-color: rgba(0, 0, 0, 0.8); }
475
+ .tooltipped-se:after {
476
+ top: 100%;
477
+ margin-top: 5px;
 
478
  right: auto;
479
  left: 50%;
480
+ margin-left: -15px; }
481
+ .tooltipped-se:before {
482
+ top: auto;
483
+ right: 50%;
484
+ bottom: -5px;
485
+ margin-right: -5px;
486
+ border-bottom-color: rgba(0, 0, 0, 0.8); }
487
+ .tooltipped-sw:after {
488
+ top: 100%;
489
+ right: 50%;
490
+ margin-top: 5px;
491
+ margin-right: -15px; }
492
+ .tooltipped-sw:before {
493
+ top: auto;
494
+ right: 50%;
495
+ bottom: -5px;
496
+ margin-right: -5px;
497
+ border-bottom-color: rgba(0, 0, 0, 0.8); }
498
+ .tooltipped-n:after {
499
  right: 50%;
500
  bottom: 100%;
501
+ margin-bottom: 5px;
502
+ -webkit-transform: translateX(50%);
503
+ transform: translateX(50%); }
504
+ .tooltipped-n:before {
 
505
  top: -5px;
506
  right: 50%;
507
  bottom: auto;
508
  margin-right: -5px;
509
+ border-top-color: rgba(0, 0, 0, 0.8); }
510
+ .tooltipped-ne:after {
511
+ bottom: 100%;
512
+ margin-bottom: 5px;
 
513
  right: auto;
514
  left: 50%;
515
+ margin-left: -15px; }
516
+ .tooltipped-ne:before {
517
+ top: -5px;
518
+ right: 50%;
519
+ bottom: auto;
520
+ margin-right: -5px;
521
+ border-top-color: rgba(0, 0, 0, 0.8); }
522
+ .tooltipped-nw:after {
523
+ right: 50%;
524
+ bottom: 100%;
525
+ margin-bottom: 5px;
526
+ margin-right: -15px; }
527
+ .tooltipped-nw:before {
528
+ top: -5px;
529
+ right: 50%;
530
+ bottom: auto;
531
+ margin-right: -5px;
532
+ border-top-color: rgba(0, 0, 0, 0.8); }
533
+ .tooltipped-w:after {
534
  right: 100%;
535
  bottom: 50%;
536
  margin-right: 5px;
537
  -webkit-transform: translateY(50%);
538
+ transform: translateY(50%); }
539
+ .tooltipped-w:before {
 
 
 
 
540
  top: 50%;
541
  bottom: 50%;
542
  left: -5px;
543
  margin-top: -5px;
544
+ border-left-color: rgba(0, 0, 0, 0.8); }
545
+ .tooltipped-e:after {
 
 
 
546
  bottom: 50%;
547
  left: 100%;
548
  margin-left: 5px;
549
  -webkit-transform: translateY(50%);
550
+ transform: translateY(50%); }
551
+ .tooltipped-e:before {
 
 
 
 
552
  top: 50%;
553
  right: -5px;
554
  bottom: 50%;
555
  margin-top: -5px;
556
+ border-right-color: rgba(0, 0, 0, 0.8); }
557
+ .tooltipped-multiline.tooltipped-s:after {
558
+ right: auto;
559
+ left: 50%;
560
+ -webkit-transform: translateX(-50%);
561
+ transform: translateX(-50%); }
562
+ .tooltipped-multiline.tooltipped-n:after {
 
 
 
 
 
 
 
 
 
 
563
  right: auto;
564
  left: 50%;
565
  -webkit-transform: translateX(-50%);
566
+ transform: translateX(-50%); }
567
+ .tooltipped-multiline.tooltipped-w:after {
568
+ right: 100%; }
569
+ .tooltipped-multiline.tooltipped-e:after {
570
+ right: 100%; }
571
+ .tooltipped-sticky:before {
572
+ display: inline-block; }
573
+ .tooltipped-sticky:after {
574
+ display: inline-block; }
575
+ .tooltipped-sticky.tooltipped-multiline:after {
576
+ display: table-cell; }
577
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
  .fullscreen-overlay-enabled.dark-theme .tooltipped:after {
579
+ color: #000;
580
+ background: rgba(255, 255, 255, 0.8); }
581
+
582
+ .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before {
583
+ border-bottom-color: rgba(255, 255, 255, 0.8); }
584
+
585
+ .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before {
586
+ border-bottom-color: rgba(255, 255, 255, 0.8); }
587
+
588
+ .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before {
589
+ border-bottom-color: rgba(255, 255, 255, 0.8); }
590
 
591
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before {
592
+ border-top-color: rgba(255, 255, 255, 0.8); }
 
 
593
 
594
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before {
595
+ border-top-color: rgba(255, 255, 255, 0.8); }
596
+
597
+ .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before {
598
+ border-top-color: rgba(255, 255, 255, 0.8); }
599
 
 
600
  .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before {
601
+ border-right-color: rgba(255, 255, 255, 0.8); }
 
602
 
 
603
  .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before {
604
+ border-left-color: rgba(255, 255, 255, 0.8); }
 
605
 
606
+ @media screen and (min-width: 0\0) {
607
+ .tooltipped-multiline:after {
608
+ width: 250px; } }
 
 
 
609
 
610
+ ul.tracker_collection_list {
611
+ list-style: initial;
612
+ padding: initial;
613
+ margin: -10px 0 0 30px;
614
+ font-size: 11px !important; }
615
+ ul.tracker_collection_list li {
616
+ margin: 0; }
617
 
618
  /** Info Message Table **/
619
+ table.wf-info-table, table.wf-rate-table {
620
+ vertical-align: middle;
621
+ text-align: center;
622
+ max-width: 100%;
623
+ font-weight: 500; }
624
+ table.wf-info-table th, table.wf-rate-table th {
625
+ text-align: center; }
626
+ table.wf-info-table strong, table.wf-rate-table strong {
627
+ font-weight: bold; }
 
 
 
628
 
629
  table.wf-info-table th:first-child img {
630
+ margin: 0 0 -5px 5px; }
 
631
 
632
  table.wf-rate-table a {
633
+ color: #0073aa; }
 
634
 
635
  table.wf-rate-table a.review-star:after {
636
+ content: "\f155\f155\f155\f155\f155" !important;
637
+ font-family: dashicons;
638
+ font-size: 10px;
639
+ font-weight: 100;
640
+ text-rendering: auto;
641
+ -webkit-font-smoothing: antialiased;
642
+ -moz-osx-font-smoothing: grayscale;
643
+ color: #0073aa;
644
+ text-decoration: underline; }
 
 
 
 
645
 
646
  /** Admin Menu Icon **/
647
  #adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before {
648
+ content: "";
649
+ background: url(../images/woo-feed-icon.svg) no-repeat center center;
650
+ background-size: 20px 20px;
651
+ opacity: 0.6;
652
+ filter: alpha(opacity=60); }
653
+
654
+ #adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before {
655
+ opacity: 1;
656
+ filter: alpha(opacity=100); }
657
 
 
658
  #adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before {
659
+ opacity: 1;
660
+ filter: alpha(opacity=100); }
 
661
 
662
  /** Admin Page Wrapper **/
663
  .wapk-admin, .wapk-admin * {
664
+ box-sizing: border-box; }
 
 
 
665
 
666
  .wapk-admin {
667
+ position: relative;
668
+ display: block;
669
+ -webkit-hyphens: manual;
670
+ -ms-hyphens: manual;
671
+ -moz-hyphens: manual;
672
+ hyphens: manual;
673
+ color: #1B2730;
674
+ /* reset .warp margin to use full width except menu area */
675
+ margin: 0 0 0 -10px; }
676
 
677
  @media screen and (min-width: 783px) {
678
+ .wapk-admin {
679
+ margin: 0 0 0 -20px; } }
 
 
 
 
 
 
 
 
 
680
 
681
  .text-center {
682
+ text-align: center; }
683
+
684
+ .wapk-admin h1, .wapk-admin h2, .wapk-admin h3,
685
+ .wapk-admin h4, .wapk-admin h5, .wapk-admin h6,
686
+ .wapk-admin p {
687
+ color: #1B2730; }
688
 
689
  .wapk-admin sup {
690
+ vertical-align: baseline;
691
+ position: relative;
692
+ top: -6px; }
 
693
 
694
  .wapk-admin sub {
695
+ vertical-align: baseline;
696
+ position: relative;
697
+ top: 4px; }
 
698
 
699
  /* WP.Core.UI Compat */
700
+ .wapk-admin .wapk-section {
701
+ margin: 10px 20px 0 22px;
702
+ position: relative;
703
+ display: block; }
704
+ .wapk-admin .wapk-section [class$=icon32] + h2 {
705
+ font-size: 23px;
706
+ font-weight: 400;
707
+ margin: 0;
708
+ padding: 9px 0 4px 0;
709
+ line-height: 1.3; }
710
+ .wapk-admin .wapk-section h1 {
711
  font-size: 23px;
712
  font-weight: 400;
713
  margin: 0;
714
  padding: 9px 0 4px 0;
715
+ line-height: 1.3; }
716
+ .wapk-admin .wapk-section > h2:first-child {
717
+ font-size: 23px;
718
+ font-weight: 400;
719
+ margin: 0;
720
+ padding: 9px 0 4px 0;
721
+ line-height: 1.3; }
722
 
 
723
  .wapk-admin > .notice {
724
+ margin: 10px 20px 0 22px;
725
+ position: relative;
726
+ display: block; }
 
 
 
 
 
 
 
 
727
 
728
  .wapk-admin span.help {
729
+ display: block;
730
+ float: left;
731
+ width: 100%;
732
+ font-size: 0.9em;
733
+ color: #636363;
734
+ margin-top: 5px;
735
+ font-weight: 500; }
736
+ .wapk-admin span.help .dashicons {
 
 
737
  width: 11px;
738
  height: 12px;
739
  font-size: inherit;
740
+ vertical-align: middle; }
741
+
742
+ .clear:after {
743
+ content: "";
744
+ display: table;
745
+ clear: both; }
746
 
747
  /*.wapk-admin .help a { color: inherit; text-decoration: underline; }*/
748
  /** Extend WP Core UI PostBox For Docs **/
749
  .wapk-feed-docs .postbox {
750
+ width: 355px;
751
+ margin-right: 20px;
752
+ display: inline-block;
753
+ vertical-align: top; }
754
+ .wapk-feed-docs .postbox .hndle {
 
 
 
 
 
 
 
 
 
 
 
755
  font-size: 14px;
756
  padding: 8px 12px;
757
  margin: 0;
758
  line-height: 1.4;
759
+ cursor: pointer; }
760
+ .wapk-feed-docs .postbox .dashicons {
761
+ color: #ccc; }
762
+ .wapk-feed-docs .postbox a {
763
+ text-decoration: none; }
764
+ .wapk-feed-docs .postbox .inside {
765
+ margin-bottom: 0; }
766
+ .wapk-feed-docs .postbox ul {
767
+ margin-bottom: 0; }
768
+ .wapk-feed-docs .postbox .toggle-indicator:before {
 
 
 
 
 
 
 
769
  content: "\F142";
770
  display: inline-block;
771
  font: 400 20px/1 dashicons;
772
  speak: none;
773
  -webkit-font-smoothing: antialiased;
774
  -moz-osx-font-smoothing: grayscale;
775
+ text-decoration: none !important; }
776
+ .wapk-feed-docs .postbox li {
 
 
 
 
 
 
777
  width: 100%;
778
  display: block;
779
+ float: left; }
780
+ .wapk-feed-docs .postbox li span {
781
+ display: inline-block;
782
+ float: left;
783
+ margin-right: 4px; }
784
+ .wapk-feed-docs .postbox li a {
785
+ display: inline-block;
786
+ float: left;
787
+ width: calc(100% - 24px); }
788
 
789
+ .wapk-feed-docs .postbox.closed .toggle-indicator:before {
790
+ content: "\F140"; }
 
 
 
 
 
 
 
 
 
 
791
 
792
  .wapk-section #post-body.columns-2 #side-sortables {
793
+ min-height: 196px; }
 
794
 
795
  #poststuff #feed_merchant_info .inside {
796
+ margin: 0;
797
+ padding: 0; }
 
798
 
799
  #feed_merchant_info ul.data {
800
+ margin-left: 24px;
801
+ margin-top: 5px; }
802
+ #feed_merchant_info ul.data li {
803
+ margin-bottom: 5px; }
 
 
 
804
 
805
  .merchant-info-section {
806
+ padding: 6px 10px 8px; }
 
807
 
808
  .generateFeed .wf-tab-content table:first-child {
809
+ border: none;
810
+ box-shadow: none; }
 
811
 
812
  .generateFeed table th {
813
+ font-weight: bold; }
814
+
815
+ @media only screen and (max-width: 850px) {
816
+ .wapk-feed-docs .postbox {
817
+ display: block;
818
+ width: auto;
819
+ float: none;
820
+ margin-right: auto; } }
821
 
822
  /** Admin Feed Help Docs **/
823
  .wp-submenu li span.woo-feed-docs {
824
+ font-weight: bold;
825
+ color: #f18500; }
826
+
827
+ .wp-submenu li:hover span.woo-feed-docs {
828
+ color: #ce7304; }
829
 
 
830
  .wp-submenu li.current span.woo-feed-docs {
831
+ color: #ce7304; }
 
832
 
833
  .wapk-admin .wapk-feed-docs .postbox .hndle {
834
+ cursor: default; }
 
 
835
 
836
  /** Admin Call-To-Action **/
837
  .wapk-cta {
838
+ position: relative;
839
+ display: -ms-flexbox;
840
+ display: flex;
841
+ width: 100%;
842
+ padding: 100px 15px;
843
+ background: linear-gradient(45deg, #6CD5FF 33%, #c2efef 100%);
844
+ -ms-flex-pack: center;
845
+ justify-content: center;
846
+ -ms-flex-align: center;
847
+ align-items: center; }
848
+ .wapk-cta-icon .dashicons {
849
  font-size: 100px;
850
  width: 100px;
851
  height: auto;
852
  margin: 0 10px -8px 0;
853
+ color: #02658c; }
854
+ .wapk-cta-content {
855
+ width: 50%; }
856
+ .wapk-cta-content h2 {
857
+ font-size: 2em;
858
+ margin: 0.5em 0; }
859
+ .wapk-cta-action a.wapk-button {
 
 
 
 
 
 
 
 
 
860
  font-size: 24px;
861
  height: auto !important;
862
+ padding: 10px 20px; }
 
863
 
864
  @media (max-width: 600px) {
865
+ .wapk-cta {
866
+ display: block;
867
+ text-align: center;
868
+ padding: 4em 0; }
 
 
869
  .wapk-cta-content {
870
+ width: 100%;
871
+ margin: 2em 0; } }
 
 
872
 
873
  /** Override .wp-core-ui .wapk-button styles with prefix .wapk-admin **/
 
874
  /* Button Skin */
875
+ .wapk-button {
876
+ color: #00D4D4;
877
+ border-color: #00D4D4;
878
+ display: inline-block;
879
+ text-decoration: none;
880
+ font-size: 13px;
881
+ line-height: 2.15384615;
882
+ min-height: 30px;
883
+ margin: 0;
884
+ padding: 0 10px;
885
+ cursor: pointer;
886
+ border-width: 1px;
887
+ border-style: solid;
888
+ -webkit-appearance: none;
889
+ border-radius: 3px;
890
+ white-space: nowrap;
891
+ box-sizing: border-box; }
892
+ .wapk-button > svg {
893
+ width: 15px;
894
+ margin-left: 5px;
895
+ fill: #00D4D4; }
896
+ .wapk-button > .dashicons {
897
+ color: #00D4D4; }
898
+ .wapk-button:hover {
899
+ border-color: #00bbbb;
900
+ color: #00bbbb; }
901
+ .wapk-button:hover > svg {
902
+ fill: #00bbbb; }
903
+ .wapk-button:hover > .dashicons {
904
+ color: #00bbbb; }
905
+ .wapk-button:focus {
906
+ border-color: #00D4D4;
907
+ color: #00bbbb;
908
+ box-shadow: 0 0 0 1px #00D4D4; }
909
+ .wapk-button:focus > svg {
910
+ fill: #00bbbb; }
911
+ .wapk-button:focus > .dashicons {
912
+ color: #00bbbb; }
913
+ .wapk-button:active {
914
+ background: #00bbbb;
915
+ border-color: #00bbbb; }
916
+ .wapk-button-secondary {
917
  color: #00D4D4;
918
  border-color: #00D4D4;
919
+ display: inline-block;
920
+ text-decoration: none;
921
+ font-size: 13px;
922
+ line-height: 2.15384615;
923
+ min-height: 30px;
924
+ margin: 0;
925
+ padding: 0 10px;
926
+ cursor: pointer;
927
+ border-width: 1px;
928
+ border-style: solid;
929
+ -webkit-appearance: none;
930
+ border-radius: 3px;
931
+ white-space: nowrap;
932
+ box-sizing: border-box; }
933
+ .wapk-button-secondary > svg {
934
+ width: 15px;
935
+ margin-left: 5px;
936
+ fill: #00D4D4; }
937
+ .wapk-button-secondary > .dashicons {
938
+ color: #00D4D4; }
939
+ .wapk-button-secondary:hover {
940
+ border-color: #00bbbb;
941
+ color: #00bbbb; }
942
+ .wapk-button-secondary:hover > svg {
943
+ fill: #00bbbb; }
944
+ .wapk-button-secondary:hover > .dashicons {
945
+ color: #00bbbb; }
946
+ .wapk-button-secondary:focus {
947
+ border-color: #00D4D4;
948
+ color: #00bbbb;
949
+ box-shadow: 0 0 0 1px #00D4D4; }
950
+ .wapk-button-secondary:focus > svg {
951
+ fill: #00bbbb; }
952
+ .wapk-button-secondary:focus > .dashicons {
953
+ color: #00bbbb; }
954
+ .wapk-button-primary {
955
  display: inline-block;
956
  text-decoration: none;
957
  font-size: 13px;
966
  border-radius: 3px;
967
  white-space: nowrap;
968
  box-sizing: border-box;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
969
  background: #00D4D4;
970
  border-color: #00D4D4;
971
  color: #fff;
972
  box-shadow: 0 1px 0 #00bbbb;
973
+ text-shadow: 0 -1px 1px #00bbbb, 1px 0 1px #00bbbb, 0 1px 1px #00bbbb, -1px 0 1px #00bbbb; }
974
+ .wapk-button-primary > svg {
975
+ fill: #fff; }
976
+ .wapk-button-primary:hover {
977
+ background: #00e3e3;
978
+ border-color: #00c5c5;
979
+ color: #fff; }
980
+ .wapk-button-primary:hover > svg {
981
+ fill: #fff; }
982
+ .wapk-button-primary:focus {
983
+ background: #00e3e3;
984
+ border-color: #00c5c5;
985
+ color: #fff;
986
+ box-shadow: 0 0 0 1px #fff, 0 0 0 3px #00D4D4; }
987
+ .wapk-button-primary:focus > svg {
988
+ fill: #fff; }
989
+ .wapk-button-primary:active {
990
+ background: #00bbbb;
991
+ border-color: #00bbbb;
992
+ color: #fff; }
993
+ .wapk-button-primary:active > svg {
994
+ fill: #fff; }
995
+ .wapk-button-primary:disabled {
996
+ color: #c7d1d1 !important;
997
+ background: #22ffff !important;
998
+ border-color: #22ffff !important;
999
+ text-shadow: none !important; }
1000
+ .wapk-button-primary:disabled > svg {
1001
+ fill: #c7d1d1 !important; }
1002
+ .wapk-button.hover {
1003
  border-color: #00bbbb;
1004
+ color: #00bbbb; }
1005
+ .wapk-button.hover > svg {
1006
+ fill: #00bbbb; }
1007
+ .wapk-button.hover > .dashicons {
1008
+ color: #00bbbb; }
1009
+ .wapk-button.focus {
1010
+ border-color: #00D4D4;
1011
+ color: #00bbbb;
1012
+ box-shadow: 0 0 0 1px #00D4D4; }
1013
+ .wapk-button.focus > svg {
1014
+ fill: #00bbbb; }
1015
+ .wapk-button.focus > .dashicons {
1016
+ color: #00bbbb; }
1017
+ .wapk-button.active {
1018
+ border-color: #00bbbb;
1019
+ color: #00bbbb;
1020
+ box-shadow: inset 0 2px 5px -3px #00bbbb; }
1021
+ .wapk-button.active:focus {
1022
+ border-color: #00bbbb;
1023
+ color: #00bbbb;
1024
+ box-shadow: inset 0 2px 5px -3px #00bbbb; }
1025
+ .wapk-button.active:focus > svg {
1026
+ fill: #00bbbb; }
1027
+ .wapk-button.active:focus > .dashicons {
1028
+ color: #00bbbb; }
1029
+ .wapk-button.active:hover {
1030
+ border-color: #00bbbb;
1031
+ color: #00bbbb;
1032
+ box-shadow: inset 0 2px 5px -3px #00bbbb; }
1033
+ .wapk-button.active:hover > svg {
1034
+ fill: #00bbbb; }
1035
+ .wapk-button.active:hover > .dashicons {
1036
+ color: #00bbbb; }
1037
+ .wapk-button.active > svg {
1038
+ fill: #00bbbb; }
1039
+ .wapk-button.active > .dashicons {
1040
+ color: #00bbbb; }
1041
+ .wapk-button-primary.active {
1042
  background: #00D4D4;
1043
  color: #fff;
1044
  border-color: #008888;
1045
+ box-shadow: inset 0 2px 5px -3px black; }
1046
+ .wapk-button-primary.active:focus {
1047
+ background: #00D4D4;
1048
+ color: #fff;
1049
+ border-color: #008888;
1050
+ box-shadow: inset 0 2px 5px -3px black; }
1051
+ .wapk-button-primary.active:focus > svg {
1052
+ fill: #fff; }
1053
+ .wapk-button-primary.active:hover {
1054
+ background: #00D4D4;
1055
+ color: #fff;
1056
+ border-color: #008888;
1057
+ box-shadow: inset 0 2px 5px -3px black; }
1058
+ .wapk-button-primary.active:hover > svg {
1059
+ fill: #fff; }
1060
+ .wapk-button-primary.active > svg {
1061
+ fill: #fff; }
1062
+ .wapk-button-primary[disabled] {
1063
  color: #c7d1d1 !important;
1064
  background: #22ffff !important;
1065
  border-color: #22ffff !important;
1066
+ text-shadow: none !important; }
1067
+ .wapk-button-primary[disabled] > svg {
1068
+ fill: #c7d1d1 !important; }
1069
+ .wapk-button-primary.wapk-button-primary-disabled {
1070
+ color: #c7d1d1 !important;
1071
+ background: #22ffff !important;
1072
+ border-color: #22ffff !important;
1073
+ text-shadow: none !important; }
1074
+ .wapk-button-primary.wapk-button-primary-disabled > svg {
1075
+ fill: #c7d1d1 !important; }
1076
+ .wapk-button-primary.disabled {
1077
+ color: #c7d1d1 !important;
1078
+ background: #22ffff !important;
1079
+ border-color: #22ffff !important;
1080
+ text-shadow: none !important; }
1081
+ .wapk-button-primary.disabled > svg {
1082
+ fill: #c7d1d1 !important; }
1083
+ .wapk-button-primary.wapk-button-hero {
1084
+ box-shadow: 0 2px 0 #00bbbb; }
1085
+ .wapk-button-primary.wapk-button-hero:focus {
1086
+ box-shadow: 0 2px 0 #00bbbb, 0 1px 0 #00c5c5, 0 0 2px 1px #00eeee; }
1087
+ .wapk-button-primary.wapk-button-hero:active {
1088
+ box-shadow: inset 0 3px 0 #00a1a1; }
1089
+ .wapk-button-primary.wapk-button-hero.active {
1090
+ box-shadow: inset 0 3px 0 #00a1a1; }
1091
+ .wapk-button-primary.wapk-button-hero.active:hover, .wapk-button-primary.wapk-button-hero.active:focus {
1092
+ box-shadow: inset 0 3px 0 #00a1a1; }
1093
+ .wapk-button-group > .wapk-button.active {
1094
+ border-color: #00D4D4; }
1095
 
1096
  /* Button Sizes */
1097
+ .wapk-button.wapk-button-xl {
1098
+ height: 30px;
1099
+ line-height: 28px;
1100
+ padding: 0 12px 2px; }
1101
+
1102
  .wapk-button-group.wapk-button-xl .wapk-button {
1103
+ height: 30px;
1104
+ line-height: 28px;
1105
+ padding: 0 12px 2px; }
1106
+
1107
+ .wapk-button.wapk-button-hero {
1108
+ font-size: 18px;
1109
+ height: 50px;
1110
+ line-height: 48px;
1111
+ padding: 0 36px;
1112
+ min-height: 46px; }
1113
 
 
1114
  .wapk-button-group.wapk-button-hero .wapk-button {
1115
+ font-size: 18px;
1116
+ height: 50px;
1117
+ line-height: 48px;
1118
+ padding: 0 36px;
1119
+ min-height: 46px; }
 
1120
 
1121
  @media screen and (min-width: 782px) {
1122
+ th#status,
1123
+ th#provider {
1124
+ width: 80px; }
1125
+ th#type {
1126
+ width: 50px; }
1127
+ th#option_name {
1128
+ width: 100px; }
1129
+ td.option_name.column-option_name > span:first-child {
1130
+ display: none; }
1131
+ th#last_updated {
1132
+ width: 90px; }
1133
+ th#view {
1134
+ width: 111px; } }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1135
 
1136
  @media screen and (min-width: 960px) {
1137
+ th#status, th#provider {
1138
+ width: 100px; }
1139
+ th#type {
1140
+ width: 80px; }
1141
+ th#option_name {
1142
+ width: 150px; }
1143
+ th#last_updated {
1144
+ width: 140px; } }
 
 
 
 
 
 
 
 
1145
 
1146
  @media screen and (max-width: 782px) {
1147
+ table.wf-info-table {
1148
+ margin-top: 10px; }
 
 
1149
  table.wf-info-table th:first-child img {
1150
+ margin: 0 auto;
1151
+ display: block; }
1152
+ .wapk-button.wapk-button-xl {
1153
+ padding: 6px 14px;
1154
+ line-height: normal;
1155
+ font-size: 14px;
1156
+ vertical-align: middle;
1157
+ height: auto;
1158
+ margin-bottom: 4px; } }
 
 
 
 
1159
 
1160
  .wapk-feed-docs .wapk-feed-cta {
1161
+ margin: 0; }
 
1162
 
1163
+ .campaign_configurator {
1164
+ background: #FFF;
1165
+ padding: 20px 0; }
1166
+ .campaign_configurator table {
 
 
1167
  margin: 0 auto;
1168
  width: 51%;
1169
  min-width: 574px;
1170
  border: none;
1171
+ box-shadow: none; }
1172
+ .campaign_configurator th {
1173
+ min-width: 120px; }
 
 
 
1174
 
1175
  @media screen and (max-width: 782px) {
1176
+ .campaign_configurator {
1177
+ padding: 0; }
 
 
1178
  .campaign_configurator table {
1179
+ width: auto;
1180
+ min-width: auto;
1181
+ max-width: 100%; }
 
 
1182
  .campaign_configurator th {
1183
+ min-width: auto; } }
 
 
 
1184
 
1185
  #wf-tab-content-config td > input:not([type="checkbox"]):not([type="radio"]),
1186
  #wf-tab-content-config td > select,
1187
  #wf-tab-content-config td > textarea {
1188
+ width: 100% !important; }
 
1189
 
1190
  .woo-feed-filters td > div:nth-child(2n):not(.clear):not(.selectize) {
1191
+ width: 120px;
1192
+ display: block; }
 
1193
 
1194
+ .woo-feed-filters td > div:not(.clear) {
1195
+ float: left;
1196
+ margin-right: 10px; }
 
1197
 
1198
  .woo-feed-filters tr > td:first-child {
1199
+ width: 290px;
1200
+ padding-left: 40px; }
 
1201
 
1202
+ .woo-feed-filters,
1203
+ .woo-feed-ftp {
1204
+ margin: 15px auto 25px; }
 
admin/css/woo-feed-admin.min.css CHANGED
@@ -1 +1 @@
1
- .wpf_spin,.wpf_spin_reverse{-webkit-animation:spin 1000ms infinite linear;animation:spin 1000ms infinite linear}.wpf_spin_reverse{animation-direction:reverse}.wpf_regenerate.disabled{color:#737373;box-shadow:none;cursor:not-allowed}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.wfbtn{background:#3498db;background-image:-webkit-linear-gradient(top,#3498db,#2980b9);background-image:-moz-linear-gradient(top,#3498db,#2980b9);background-image:-ms-linear-gradient(top,#3498db,#2980b9);background-image:-o-linear-gradient(top,#3498db,#2980b9);background-image:linear-gradient(to bottom,#3498db,#2980b9);-webkit-border-radius:17px;-moz-border-radius:17px;border-radius:17px;-webkit-box-shadow:0 1px 3px #666;-moz-box-shadow:0 1px 3px #666;box-shadow:0 1px 3px #666;font-family:Arial,sans-serif;color:#fff;font-size:20px;padding:10px 20px;border:solid #2b698f 3px;text-decoration:none}.wftooltip{display:none;position:absolute;border:1px solid #333;background-color:#161616;border-radius:5px;padding:10px;color:#fff;font-size:12px}.wfbtn:hover{background:#3cb0fd;background-image:-webkit-linear-gradient(top,#3cb0fd,#3498db);background-image:-moz-linear-gradient(top,#3cb0fd,#3498db);background-image:-ms-linear-gradient(top,#3cb0fd,#3498db);background-image:-o-linear-gradient(top,#3cb0fd,#3498db);background-image:linear-gradient(to bottom,#3cb0fd,#3498db);text-decoration:none}.makeFeedResponse{width:70%;color:green}.woo-feed-mapping-input{width:100%}.requiredIn{color:red}.generalInput{width:200px}.generalInput:not(.selectize-control){margin:5px auto}.error{color:red}.widefat td select,.widefat td input{max-width:100%}#wf_newRow{margin-left:0}.mtable tbody tr{height:25px;border:1px solid #CCC;text-align:left;align-items:baseline;font-weight:700}.mtable th:nth-child(1){width:17px}.mtable th:nth-child(2){width:160px}.mtable th:nth-child(3){width:100px}.mtable th:nth-child(4){width:100px}.mtable th:nth-child(5){width:150px}.mtable th:nth-child(6){width:100px}.mtable th:nth-child(7){width:150px}.mtable th:nth-child(8){width:90px}.mtable th:nth-child(9){width:29px}.wp-admin select.wf_mattributes,.wf_mattributes{width:150px;left:0;height:25px}div#wf-tab-content1 select:not([name^="output_type"]),div#wf-tab-content1 input{width:100%}div#wf-tab-content1 .dashicons{vertical-align:middle}.wf_attributes{width:150px;left:0}.wf_compare{max-width:245px;left:0}.wf_ps{width:100px;left:0}.wf_sortedtable{cursor:move}.sorted_table{position:relative}.sorted_table .dragged{position:absolute;opacity:.8;z-index:9999;background:#fff;width:100%;display:table}.sorted_table tbody tr.placeholder td{border:1px dashed #2cc185;height:46px}.mtable2 tbody tr{height:25px;border:1px solid #CCC;text-align:left;align-items:baseline;font-weight:700}.mtable2 th:nth-child(1){width:30px}.mtable2 th:nth-child(2){width:150px}.mtable2 th:nth-child(3){width:230px}.mtable2 th:nth-child(4){width:220px}.mtable2 th:nth-child(7){width:50px}.mtable2 th:nth-child(8){width:50px}.mtable2 th:nth-child(9){width:29px}.wfnoempty{width:120px}p{color:#222}.wf_tabs{position:relative;margin:0 auto;width:100%;list-style:none}.wf_tabs:after{display:table;clear:both;content:""}.wf_tabs li{float:left;width:20%;display:block;border:2px solid #CCC}.wf_tabs li > input[type="radio"][name="wf_tabs"]{position:absolute;top:auto;left:-9999px}.wf-tab-name{display:block;padding:15px;font-size:15px;font-weight:700;line-height:1;background:#fff;cursor:pointer;position:relative;text-align:center;text-transform:uppercase;color:#2CC185}.wf-tab-name:hover{background:#2CC185;color:#fff}.wf_tabs [id^="tab"]:checked + label{background:#2CC185;color:#fff}.wf_tabs .wf-tab-content{z-index:2;display:none;width:100%;font-size:.9rem;position:absolute;left:0;background:#fff;border:2px solid #CCC}.wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"]{display:block}[id^="wf-tab-content"]{margin-bottom:40px}div#wf-tab-content2 table:first-child{padding:10px 0}div#wf-tab-content2 table:first-child td:nth-child(1){width:260px}div#wf-tab-content2 table:first-child td:nth-child(2){width:260px}table.feed-actions tr td:last-child{text-align:right}select.selectize{display:none}body.no-js select.selectize{display:block!important}.selectize-dropdown .active{background-color:#edf9ff}.selectize-dropdown .create{padding:5px 8px}.wapk-selectize-item{background:#0073aa!important;color:#f1f1f1!important;font-weight:700!important;border-color:#0073aa!important;padding-left:5px;padding-right:5px}.selectize-input.full #googleTaxonomyId-selectized{opacity:0;position:absolute;left:-10000px}.selectize-dropdown [data-selectable].option{cursor:default}.selectize-control.plugin-remove_button [data-value] .remove{border-left:1px solid #f1f1f1!important}.selectize-dropdown .optgroup-header{font-weight:700;background:#efefef;color:#5a5a5a}.selectize-dropdown [data-selectable].option{cursor:pointer}.wf_status_wrap label{width:50px;height:25px;box-sizing:border-box;border:1px solid;float:left;border-radius:100px;position:relative;cursor:pointer;transition:.3s ease}input[class=woo_feed_status_input]:checked + label{background:#55e868}input[class=woo_feed_status_input]:checked + label:before{left:25px}.wf_status_wrap label:before{transition:.3s ease;content:'';width:20px;height:20px;position:absolute;background:#fff;left:2px;top:2px;box-sizing:border-box;border:1px solid;color:#000;border-radius:100px}.widefat td.column-url,.widefat th.column-url,.column-url{color:#008779;font-weight:700}.feed-progress-container{width:100%;color:#fff;text-align:center;font-weight:300}.feed-progress-bar{width:100%;background:#eee;padding:3px;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.feed-progress-bar-fill{height:20px;display:block;background:#3DC264;width:0;border-radius:3px;-webkit-transition:width .8s ease;transition:width .8s ease}.feed-progress-status{float:left;font-weight:700;color:#00008b}.feed-progress-percentage{text-align:right;font-weight:bolder;color:#41f49d;font-family:'Arial Black',sans-serif;font-size:large}#wpbody-content.woofeed-body-content{overflow:visible!important}.clippy{position:relative;width:13px;margin-top:-3px;margin-left:3px;top:3px}.column-url .clippy{display:none}.column-url:hover .clippy{display:inline-block}.tooltipped{position:relative}.tooltipped:after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,.8);border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tooltipped:before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,.8);pointer-events:none;content:"";border:5px solid transparent}.tooltipped:hover:before,.tooltipped:hover:after,.tooltipped:active:before,.tooltipped:active:after,.tooltipped:focus:before,.tooltipped:focus:after{display:inline-block;text-decoration:none}.tooltipped-multiline:hover:after,.tooltipped-multiline:active:after,.tooltipped-multiline:focus:after{display:table-cell}.tooltipped-s:after,.tooltipped-se:after,.tooltipped-sw:after{top:100%;right:50%;margin-top:5px}.tooltipped-s:before,.tooltipped-se:before,.tooltipped-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-se:after{right:auto;left:50%;margin-left:-15px}.tooltipped-sw:after{margin-right:-15px}.tooltipped-n:after,.tooltipped-ne:after,.tooltipped-nw:after{right:50%;bottom:100%;margin-bottom:5px}.tooltipped-n:before,.tooltipped-ne:before,.tooltipped-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-ne:after{right:auto;left:50%;margin-left:-15px}.tooltipped-nw:after{margin-right:-15px}.tooltipped-s:after,.tooltipped-n:after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%)}.tooltipped-w:after{right:100%;bottom:50%;margin-right:5px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%)}.tooltipped-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.tooltipped-e:after{bottom:50%;left:100%;margin-left:5px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%)}.tooltipped-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.tooltipped-multiline:after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltipped-multiline.tooltipped-s:after,.tooltipped-multiline.tooltipped-n:after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w:after,.tooltipped-multiline.tooltipped-e:after{right:100%}@media screen and (min-width: 0\0){.tooltipped-multiline:after{width:250px}}.tooltipped-sticky:before,.tooltipped-sticky:after{display:inline-block}.tooltipped-sticky.tooltipped-multiline:after{display:table-cell}.fullscreen-overlay-enabled.dark-theme .tooltipped:after{color:#000;background:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before,.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before,.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before,.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before,.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before{border-right-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before{border-left-color:rgba(255,255,255,.8)}ul.tracker_collection_list{list-style:initial;padding:initial;margin:-10px 0 0 30px;font-size:11px!important}ul.tracker_collection_list li{margin:0}table.wf-info-table th,table.wf-rate-table th{vertical-align:middle;text-align:center;max-width:100%;font-weight:500}table.wf-info-table th strong,table.wf-rate-table th strong{font-weight:700}table.wf-info-table th:first-child img{margin:0 0 -5px 5px}table.wf-rate-table a{color:#0073aa}table.wf-rate-table a.review-star:after{content:"\f155\f155\f155\f155\f155"!important;font-family:dashicons;font-size:10px;font-weight:100;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#0073aa;text-decoration:underline}#adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before{content:"";background:url(../images/woo-feed-icon.svg) no-repeat center center;background-size:20px 20px;opacity:.6;filter:alpha(opacity=60)}#adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before,#adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before{opacity:1;filter:alpha(opacity=100)}.wapk-admin,.wapk-admin *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wapk-admin{position:relative;display:block;-webkit-hyphens:manual;-ms-hyphens:manual;hyphens:manual;color:#1B2730;margin:0 0 0 -10px}@media screen and (min-width: 783px){.wapk-admin{margin:0 0 0 -20px}}.wapk-admin h1,.wapk-admin h2,.wapk-admin h3,.wapk-admin h4,.wapk-admin h5,.wapk-admin h6,.wapk-admin p{color:#1B2730}.text-center{text-align:center}.wapk-admin sup{vertical-align:baseline;position:relative;top:-6px}.wapk-admin sub{vertical-align:baseline;position:relative;top:4px}.wapk-admin .wapk-section [class$=icon32] + h2,.wapk-admin .wapk-section h1,.wapk-admin .wapk-section > h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px;line-height:1.3}.wapk-admin .wapk-section,.wapk-admin > .notice{margin:10px 20px 0 22px;position:relative;display:block}.clear:after{content:"";display:table;clear:both}.wapk-admin span.help{display:block;float:left;width:100%;font-size:.9em;color:#636363;margin-top:5px;font-weight:500}.wapk-admin span.help .dashicons{width:11px;height:12px;font-size:inherit;vertical-align:middle}.wapk-feed-docs .postbox{width:355px;margin-right:20px;display:inline-block;vertical-align:top}@media only screen and (max-width: 850px){.wapk-feed-docs .postbox{display:block;width:auto;float:none;margin-right:auto}}.wapk-feed-docs .postbox .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;cursor:pointer}.wapk-feed-docs .postbox .dashicons{color:#ccc}.wapk-feed-docs .postbox a{text-decoration:none}.wapk-feed-docs .postbox .inside,.wapk-feed-docs .postbox ul{margin-bottom:0}.wapk-feed-docs .postbox .toggle-indicator:before{content:"\F142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wapk-feed-docs .postbox.closed .toggle-indicator:before{content:"\F140"}.wapk-feed-docs .postbox li{width:100%;display:block;float:left}.wapk-feed-docs .postbox li span,.wapk-feed-docs .postbox li a{display:inline-block;float:left}.wapk-feed-docs .postbox li span{margin-right:4px}.wapk-feed-docs .postbox li a{width:calc(100% - 24px)}.wapk-section #post-body.columns-2 #side-sortables{min-height:196px}#poststuff #feed_merchant_info .inside{margin:0;padding:0}#feed_merchant_info ul.data{margin-left:24px;margin-top:5px}#feed_merchant_info ul.data li{margin-bottom:5px}.merchant-info-section{padding:6px 10px 8px}.generateFeed .wf-tab-content table:first-child{border:none;box-shadow:none}.generateFeed table th{font-weight:700}.wp-submenu li span.woo-feed-docs{font-weight:700;color:#f18500}.wp-submenu li:hover span.woo-feed-docs,.wp-submenu li.current span.woo-feed-docs{color:#ce7304}.wapk-admin .wapk-feed-docs .postbox .hndle{cursor:default}.wapk-cta{position:relative;display:flex;width:100%;padding:100px 15px;background:linear-gradient(45deg,#6CD5FF 33%,#c2efef 100%);justify-content:center;align-items:center}.wapk-cta-icon .dashicons{font-size:100px;width:100px;height:auto;margin:0 10px -8px 0;color:#02658c}.wapk-cta-content{width:50%}.wapk-cta-content h2{font-size:2em;margin:.5em 0}.wapk-cta-action a.wapk-button{font-size:24px;height:auto!important;padding:10px 20px}@media (max-width: 600px){.wapk-cta{display:block;text-align:center;padding:4em 0}.wapk-cta-content{width:100%;margin:2em 0}}.wapk-button,.wapk-button-secondary{color:#00D4D4;border-color:#00D4D4}.wapk-button,.wapk-button-primary,.wapk-button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button > svg,.wapk-button-secondary > svg{width:15px;margin-left:5px;fill:#00D4D4}.wapk-button > .dashicons,.wapk-button-secondary > .dashicons{color:#00D4D4}.wapk-button.hover,.wapk-button:hover,.wapk-button-secondary:hover,.wapk-button.focus,.wapk-button:focus,.wapk-button-secondary:focus{border-color:#0bb;color:#0bb}.wapk-button.hover > svg,.wapk-button:hover > svg,.wapk-button-secondary:hover > svg,.wapk-button.focus > svg,.wapk-button:focus > svg,.wapk-button-secondary:focus > svg{fill:#0bb}.wapk-button.hover > .dashicons,.wapk-button:hover > .dashicons,.wapk-button-secondary:hover > .dashicons,.wapk-button.focus > .dashicons,.wapk-button:focus > .dashicons,.wapk-button-secondary:focus > .dashicons{color:#0bb}.wapk-button.focus,.wapk-button:focus,.wapk-button-secondary:focus{border-color:#00D4D4;color:#0bb;box-shadow:0 0 0 1px #00D4D4}.wapk-button.focus > svg,.wapk-button:focus > svg,.wapk-button-secondary:focus > svg{fill:#0bb}.wapk-button.focus > .dashicons,.wapk-button:focus > .dashicons,.wapk-button-secondary:focus > .dashicons{color:#0bb}.wapk-button:active{background:#0bb;border-color:#0bb}.wapk-button.active,.wapk-button.active:focus,.wapk-button.active:hover{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active > svg,.wapk-button.active:focus > svg,.wapk-button.active:hover > svg{fill:#0bb}.wapk-button.active > .dashicons,.wapk-button.active:focus > .dashicons,.wapk-button.active:hover > .dashicons{color:#0bb}.wapk-button-primary{background:#00D4D4;border-color:#00D4D4;color:#fff;box-shadow:0 1px 0 #0bb;text-shadow:0 -1px 1px #00bbbb,1px 0 1px #00bbbb,0 1px 1px #00bbbb,-1px 0 1px #0bb}.wapk-button-primary > svg{fill:#fff}.wapk-button-primary:hover,.wapk-button-primary:focus{background:#00e3e3;border-color:#00c5c5;color:#fff}.wapk-button-primary:hover > svg,.wapk-button-primary:focus > svg{fill:#fff}.wapk-button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #00D4D4}.wapk-button-primary:active{background:#0bb;border-color:#0bb;color:#fff}.wapk-button-primary:active > svg{fill:#fff}.wapk-button-primary.active,.wapk-button-primary.active:focus,.wapk-button-primary.active:hover{background:#00D4D4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active > svg,.wapk-button-primary.active:focus > svg,.wapk-button-primary.active:hover > svg{fill:#fff}.wapk-button-primary[disabled],.wapk-button-primary:disabled,.wapk-button-primary.wapk-button-primary-disabled,.wapk-button-primary.disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary[disabled] > svg,.wapk-button-primary:disabled > svg,.wapk-button-primary.wapk-button-primary-disabled > svg,.wapk-button-primary.disabled > svg{fill:#c7d1d1!important}.wapk-button.wapk-button-primary.wapk-button-hero{box-shadow:0 2px 0 #0bb}.wapk-button.wapk-button-primary.wapk-button-hero:focus{box-shadow:0 2px 0 #00bbbb,0 1px 0 #00c5c5,0 0 2px 1px #0ee}.wapk-button.wapk-button-primary.wapk-button-hero.active,.wapk-button.wapk-button-primary.wapk-button-hero.active:hover,.wapk-button.wapk-button-primary.wapk-button-hero.active:focus,.wapk-button.wapk-button-primary.wapk-button-hero:active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-group > .wapk-button.active{border-color:#00D4D4}.wapk-button.wapk-button-xl,.wapk-button-group.wapk-button-xl .wapk-button{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button.wapk-button-hero,.wapk-button-group.wapk-button-hero .wapk-button{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}@media screen and (min-width: 782px){th#status{width:80px}th#provider{width:80px}th#type{width:50px}th#option_name{width:100px}td.option_name.column-option_name > span:first-child{display:none}th#last_updated{width:90px}th#view{width:90px}}@media screen and (min-width: 960px){th#status,th#provider,th#view{width:100px}th#type{width:80px}th#option_name{width:150px}th#last_updated{width:140px}}@media screen and (max-width: 782px){table.wf-info-table{margin-top:10px}table.wf-info-table th:first-child img{margin:0 auto;display:block}.wapk-button.wapk-button-xl{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.wapk-feed-docs .wapk-feed-cta{margin:0}form.campaign_configurator{background:#FFF;padding:20px 0}.campaign_configurator table{margin:0 auto;width:51%;min-width:574px;border:none;box-shadow:none}.campaign_configurator th{min-width:120px}@media screen and (max-width: 782px){form.campaign_configurator{padding:0}.campaign_configurator table{width:auto;min-width:auto;max-width:100%}.campaign_configurator th{min-width:auto}}#wf-tab-content-config td > input:not([type="checkbox"]):not([type="radio"]),#wf-tab-content-config td > select,#wf-tab-content-config td > textarea{width:100%!important}.woo-feed-filters td > div:nth-child(2n):not(.clear):not(.selectize){width:120px;display:block}.woo-feed-filters,.woo-feed-ftp{margin:15px auto 25px}.woo-feed-filters tr > td:first-child{width:290px;padding-left:40px}.woo-feed-filters td > div:not(.clear){float:left;margin-right:10px}
1
+ .wpf_spin{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.wpf_spin.reverse_spin{animation-direction:reverse}.wpf_regenerate.disabled{color:#737373;box-shadow:none;cursor:not-allowed}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.wfbtn{background:#3498db;background-image:linear-gradient(to bottom,#3498db,#2980b9);border-radius:17px;box-shadow:0 1px 3px #666;font-family:Arial,sans-serif;color:#fff;font-size:20px;padding:10px 20px 10px 20px;border:solid #2b698f 3px;text-decoration:none}.wfbtn:hover{background:#3cb0fd;background-image:linear-gradient(to bottom,#3cb0fd,#3498db);text-decoration:none}.wftooltip{display:none;position:absolute;border:1px solid #333;background-color:#161616;border-radius:5px;padding:10px;color:#fff;font-size:12px}.feed-actions .makeFeedResponse{width:70%;color:green}.woo-feed-mapping-input{width:100%}.requiredIn{color:red}.generalInput{width:200px}.generalInput:not(.selectize-control){margin:5px auto}.error{color:red}.widefat td input,.widefat td select{max-width:100%}#wf_newRow{margin-left:0}.mtable tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable th:nth-child(1){width:17px}.mtable th:nth-child(2){width:160px}.mtable th:nth-child(3){width:100px}.mtable th:nth-child(4){width:100px}.mtable th:nth-child(5){width:150px}.mtable th:nth-child(6){width:100px}.mtable th:nth-child(7){width:150px}.mtable th:nth-child(8){width:90px}.mtable th:nth-child(9){width:29px}.mtable2 tbody tr{height:25px;border:1px solid #ccc;text-align:left;-ms-flex-align:baseline;align-items:baseline;font-weight:700}.mtable2 th:nth-child(1){width:30px}.mtable2 th:nth-child(2){width:150px}.mtable2 th:nth-child(3){width:230px}.mtable2 th:nth-child(4){width:220px}.mtable2 th:nth-child(7){width:50px}.mtable2 th:nth-child(8){width:50px}.mtable2 th:nth-child(9){width:29px}.wp-admin select.wf_mattributes{width:150px;left:0;height:25px}div#wf-tab-content1 select:not([name^=output_type]){width:100%}div#wf-tab-content1 input{width:100%}div#wf-tab-content1 .dashicons{vertical-align:middle}.wf_attributes{width:150px;left:0}.wf_compare{max-width:245px;left:0}.wf_ps{width:100px;left:0}.wf_sortedtable{cursor:move}.sorted_table{position:relative}.sorted_table .dragged{position:absolute;opacity:.8;z-index:9999;background:#fff;width:100%;display:table}.sorted_table tbody tr.placeholder td{border:1px dashed #2cc185;height:46px}.wfnoempty{width:120px}p{color:#222}.wf_tabs{position:relative;margin:0 auto;width:100%;list-style:none}.wf_tabs:after{display:table;clear:both;content:""}.wf_tabs li{float:left;width:20%;display:block;border:2px solid #ccc}.wf_tabs li>input[type=radio][name=wf_tabs]{position:absolute;top:auto;left:-9999px}.wf-tab-name{display:block;padding:15px;font-size:15px;font-weight:700;line-height:1;background:#fff;cursor:pointer;position:relative;text-align:center;text-transform:uppercase;color:#2cc185}.wf-tab-name:hover{background:#2cc185;color:#fff}.wf_tabs [id^=tab]:checked+label{background:#2cc185;color:#fff}.wf_tabs .wf-tab-content{z-index:2;display:none;width:100%;font-size:.9rem;position:absolute;left:0;background:#fff;border:2px solid #ccc}.wf_tabs [id^=tab]:checked~[id^=wf-tab-content]{display:block}[id^=wf-tab-content]{margin-bottom:40px}div#wf-tab-content2 table:first-child{padding:10px 0}div#wf-tab-content2 table:first-child td:nth-child(1){width:260px}div#wf-tab-content2 table:first-child td:nth-child(2){width:260px}table.feed-actions tr td:last-child{text-align:right}select.selectize{display:none}body.no-js select.selectize{display:block!important}.selectize-dropdown .active{background-color:#edf9ff}.selectize-dropdown .create{padding:5px 8px}.wapk-selectize-item{background:#0073aa!important;color:#f1f1f1!important;font-weight:700!important;border-color:#0073aa!important;padding-left:5px;padding-right:5px}.selectize-input.full #googleTaxonomyId-selectized{opacity:0;position:absolute;left:-10000px}.selectize-dropdown [data-selectable].option{cursor:default}.selectize-control.plugin-remove_button [data-value] .remove{border-left:1px solid #f1f1f1!important}.selectize-dropdown .optgroup-header{font-weight:700;background:#efefef;color:#5a5a5a}.selectize-dropdown [data-selectable].option{cursor:pointer}.wf_status_wrap label{width:50px;height:25px;box-sizing:border-box;border:1px solid;float:left;border-radius:100px;position:relative;cursor:pointer;transition:.3s ease}input[class=woo_feed_status_input]:checked+label{background:#55e868}input[class=woo_feed_status_input]:checked+label:before{left:25px}.wf_status_wrap label:before{transition:.3s ease;content:'';width:20px;height:20px;position:absolute;background:#fff;left:2px;top:2px;box-sizing:border-box;border:1px solid;color:#000;border-radius:100px}.column-url,.widefat td.column-url,.widefat th.column-url{color:#008779;font-weight:700}.feed-progress-container{width:100%;color:#fff;text-align:center;font-weight:300}.feed-progress-bar{width:100%;background:#eee;padding:3px;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.feed-progress-bar-fill{height:20px;display:block;background:#3dc264;width:0;border-radius:3px;transition:width .8s ease}.feed-progress-status{float:left;font-weight:700;color:#00008b}.feed-progress-percentage{text-align:right;font-weight:bolder;color:#41f49d;font-family:'Arial Black',sans-serif;font-size:large}#wpbody-content.woofeed-body-content{overflow:visible!important}.clippy{position:relative;width:13px;margin-top:-3px;margin-left:3px;top:3px}.column-url .clippy{display:none}.column-url:hover .clippy{display:inline-block}.tooltipped{position:relative}.tooltipped:after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font:normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,.8);border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tooltipped:before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,.8);pointer-events:none;content:"";border:5px solid transparent}.tooltipped:hover:before{display:inline-block;text-decoration:none}.tooltipped:hover:after{display:inline-block;text-decoration:none}.tooltipped:active:before{display:inline-block;text-decoration:none}.tooltipped:active:after{display:inline-block;text-decoration:none}.tooltipped:focus:before{display:inline-block;text-decoration:none}.tooltipped:focus:after{display:inline-block;text-decoration:none}.tooltipped-multiline:hover:after{display:table-cell}.tooltipped-multiline:active:after{display:table-cell}.tooltipped-multiline:focus:after{display:table-cell}.tooltipped-multiline:after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltipped-s:after{top:100%;right:50%;margin-top:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-s:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-se:after{top:100%;margin-top:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-se:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-sw:after{top:100%;right:50%;margin-top:5px;margin-right:-15px}.tooltipped-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.tooltipped-n:after{right:50%;bottom:100%;margin-bottom:5px;-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-n:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-ne:after{bottom:100%;margin-bottom:5px;right:auto;left:50%;margin-left:-15px}.tooltipped-ne:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-nw:after{right:50%;bottom:100%;margin-bottom:5px;margin-right:-15px}.tooltipped-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.tooltipped-w:after{right:100%;bottom:50%;margin-right:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.tooltipped-e:after{bottom:50%;left:100%;margin-left:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.tooltipped-multiline.tooltipped-s:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-n:after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w:after{right:100%}.tooltipped-multiline.tooltipped-e:after{right:100%}.tooltipped-sticky:before{display:inline-block}.tooltipped-sticky:after{display:inline-block}.tooltipped-sticky.tooltipped-multiline:after{display:table-cell}.fullscreen-overlay-enabled.dark-theme .tooltipped:after{color:#000;background:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw:before{border-bottom-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw:before{border-top-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e:before{border-right-color:rgba(255,255,255,.8)}.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w:before{border-left-color:rgba(255,255,255,.8)}@media screen and (min-width:0\0){.tooltipped-multiline:after{width:250px}}ul.tracker_collection_list{list-style:initial;padding:initial;margin:-10px 0 0 30px;font-size:11px!important}ul.tracker_collection_list li{margin:0}table.wf-info-table,table.wf-rate-table{vertical-align:middle;text-align:center;max-width:100%;font-weight:500}table.wf-info-table th,table.wf-rate-table th{text-align:center}table.wf-info-table strong,table.wf-rate-table strong{font-weight:700}table.wf-info-table th:first-child img{margin:0 0 -5px 5px}table.wf-rate-table a{color:#0073aa}table.wf-rate-table a.review-star:after{content:"\f155\f155\f155\f155\f155"!important;font-family:dashicons;font-size:10px;font-weight:100;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#0073aa;text-decoration:underline}#adminmenu #toplevel_page_webappick-manage-feeds div.wp-menu-image::before{content:"";background:url(../images/woo-feed-icon.svg) no-repeat center center;background-size:20px 20px;opacity:.6}#adminmenu #toplevel_page_webappick-manage-feeds:hover div.wp-menu-image::before{opacity:1}#adminmenu #toplevel_page_webappick-manage-feeds.wp-has-current-submenu div.wp-menu-image::before{opacity:1}.wapk-admin,.wapk-admin *{box-sizing:border-box}.wapk-admin{position:relative;display:block;-webkit-hyphens:manual;-ms-hyphens:manual;-moz-hyphens:manual;hyphens:manual;color:#1b2730;margin:0 0 0 -10px}@media screen and (min-width:783px){.wapk-admin{margin:0 0 0 -20px}}.text-center{text-align:center}.wapk-admin h1,.wapk-admin h2,.wapk-admin h3,.wapk-admin h4,.wapk-admin h5,.wapk-admin h6,.wapk-admin p{color:#1b2730}.wapk-admin sup{vertical-align:baseline;position:relative;top:-6px}.wapk-admin sub{vertical-align:baseline;position:relative;top:4px}.wapk-admin .wapk-section{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin .wapk-section [class$=icon32]+h2{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section h1{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin .wapk-section>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:1.3}.wapk-admin>.notice{margin:10px 20px 0 22px;position:relative;display:block}.wapk-admin span.help{display:block;float:left;width:100%;font-size:.9em;color:#636363;margin-top:5px;font-weight:500}.wapk-admin span.help .dashicons{width:11px;height:12px;font-size:inherit;vertical-align:middle}.clear:after{content:"";display:table;clear:both}.wapk-feed-docs .postbox{width:355px;margin-right:20px;display:inline-block;vertical-align:top}.wapk-feed-docs .postbox .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;cursor:pointer}.wapk-feed-docs .postbox .dashicons{color:#ccc}.wapk-feed-docs .postbox a{text-decoration:none}.wapk-feed-docs .postbox .inside{margin-bottom:0}.wapk-feed-docs .postbox ul{margin-bottom:0}.wapk-feed-docs .postbox .toggle-indicator:before{content:"\F142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wapk-feed-docs .postbox li{width:100%;display:block;float:left}.wapk-feed-docs .postbox li span{display:inline-block;float:left;margin-right:4px}.wapk-feed-docs .postbox li a{display:inline-block;float:left;width:calc(100% - 24px)}.wapk-feed-docs .postbox.closed .toggle-indicator:before{content:"\F140"}.wapk-section #post-body.columns-2 #side-sortables{min-height:196px}#poststuff #feed_merchant_info .inside{margin:0;padding:0}#feed_merchant_info ul.data{margin-left:24px;margin-top:5px}#feed_merchant_info ul.data li{margin-bottom:5px}.merchant-info-section{padding:6px 10px 8px}.generateFeed .wf-tab-content table:first-child{border:none;box-shadow:none}.generateFeed table th{font-weight:700}@media only screen and (max-width:850px){.wapk-feed-docs .postbox{display:block;width:auto;float:none;margin-right:auto}}.wp-submenu li span.woo-feed-docs{font-weight:700;color:#f18500}.wp-submenu li:hover span.woo-feed-docs{color:#ce7304}.wp-submenu li.current span.woo-feed-docs{color:#ce7304}.wapk-admin .wapk-feed-docs .postbox .hndle{cursor:default}.wapk-cta{position:relative;display:-ms-flexbox;display:flex;width:100%;padding:100px 15px;background:linear-gradient(45deg,#6cd5ff 33%,#c2efef 100%);-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.wapk-cta-icon .dashicons{font-size:100px;width:100px;height:auto;margin:0 10px -8px 0;color:#02658c}.wapk-cta-content{width:50%}.wapk-cta-content h2{font-size:2em;margin:.5em 0}.wapk-cta-action a.wapk-button{font-size:24px;height:auto!important;padding:10px 20px}@media (max-width:600px){.wapk-cta{display:block;text-align:center;padding:4em 0}.wapk-cta-content{width:100%;margin:2em 0}}.wapk-button{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button>.dashicons{color:#00d4d4}.wapk-button:hover{border-color:#0bb;color:#0bb}.wapk-button:hover>svg{fill:#0bb}.wapk-button:hover>.dashicons{color:#0bb}.wapk-button:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button:focus>svg{fill:#0bb}.wapk-button:focus>.dashicons{color:#0bb}.wapk-button:active{background:#0bb;border-color:#0bb}.wapk-button-secondary{color:#00d4d4;border-color:#00d4d4;display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wapk-button-secondary>svg{width:15px;margin-left:5px;fill:#00d4d4}.wapk-button-secondary>.dashicons{color:#00d4d4}.wapk-button-secondary:hover{border-color:#0bb;color:#0bb}.wapk-button-secondary:hover>svg{fill:#0bb}.wapk-button-secondary:hover>.dashicons{color:#0bb}.wapk-button-secondary:focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button-secondary:focus>svg{fill:#0bb}.wapk-button-secondary:focus>.dashicons{color:#0bb}.wapk-button-primary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;background:#00d4d4;border-color:#00d4d4;color:#fff;box-shadow:0 1px 0 #0bb;text-shadow:0 -1px 1px #0bb,1px 0 1px #0bb,0 1px 1px #0bb,-1px 0 1px #0bb}.wapk-button-primary>svg{fill:#fff}.wapk-button-primary:hover{background:#00e3e3;border-color:#00c5c5;color:#fff}.wapk-button-primary:hover>svg{fill:#fff}.wapk-button-primary:focus{background:#00e3e3;border-color:#00c5c5;color:#fff;box-shadow:0 0 0 1px #fff,0 0 0 3px #00d4d4}.wapk-button-primary:focus>svg{fill:#fff}.wapk-button-primary:active{background:#0bb;border-color:#0bb;color:#fff}.wapk-button-primary:active>svg{fill:#fff}.wapk-button-primary:disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary:disabled>svg{fill:#c7d1d1!important}.wapk-button.hover{border-color:#0bb;color:#0bb}.wapk-button.hover>svg{fill:#0bb}.wapk-button.hover>.dashicons{color:#0bb}.wapk-button.focus{border-color:#00d4d4;color:#0bb;box-shadow:0 0 0 1px #00d4d4}.wapk-button.focus>svg{fill:#0bb}.wapk-button.focus>.dashicons{color:#0bb}.wapk-button.active{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:focus>svg{fill:#0bb}.wapk-button.active:focus>.dashicons{color:#0bb}.wapk-button.active:hover{border-color:#0bb;color:#0bb;box-shadow:inset 0 2px 5px -3px #0bb}.wapk-button.active:hover>svg{fill:#0bb}.wapk-button.active:hover>.dashicons{color:#0bb}.wapk-button.active>svg{fill:#0bb}.wapk-button.active>.dashicons{color:#0bb}.wapk-button-primary.active{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:focus>svg{fill:#fff}.wapk-button-primary.active:hover{background:#00d4d4;color:#fff;border-color:#088;box-shadow:inset 0 2px 5px -3px #000}.wapk-button-primary.active:hover>svg{fill:#fff}.wapk-button-primary.active>svg{fill:#fff}.wapk-button-primary[disabled]{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary[disabled]>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-primary-disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.wapk-button-primary-disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.disabled{color:#c7d1d1!important;background:#2ff!important;border-color:#2ff!important;text-shadow:none!important}.wapk-button-primary.disabled>svg{fill:#c7d1d1!important}.wapk-button-primary.wapk-button-hero{box-shadow:0 2px 0 #0bb}.wapk-button-primary.wapk-button-hero:focus{box-shadow:0 2px 0 #0bb,0 1px 0 #00c5c5,0 0 2px 1px #0ee}.wapk-button-primary.wapk-button-hero:active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-primary.wapk-button-hero.active:focus,.wapk-button-primary.wapk-button-hero.active:hover{box-shadow:inset 0 3px 0 #00a1a1}.wapk-button-group>.wapk-button.active{border-color:#00d4d4}.wapk-button.wapk-button-xl{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button-group.wapk-button-xl .wapk-button{height:30px;line-height:28px;padding:0 12px 2px}.wapk-button.wapk-button-hero{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}.wapk-button-group.wapk-button-hero .wapk-button{font-size:18px;height:50px;line-height:48px;padding:0 36px;min-height:46px}@media screen and (min-width:782px){th#provider,th#status{width:80px}th#type{width:50px}th#option_name{width:100px}td.option_name.column-option_name>span:first-child{display:none}th#last_updated{width:90px}th#view{width:111px}}@media screen and (min-width:960px){th#provider,th#status{width:100px}th#type{width:80px}th#option_name{width:150px}th#last_updated{width:140px}}@media screen and (max-width:782px){table.wf-info-table{margin-top:10px}table.wf-info-table th:first-child img{margin:0 auto;display:block}.wapk-button.wapk-button-xl{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.wapk-feed-docs .wapk-feed-cta{margin:0}.campaign_configurator{background:#fff;padding:20px 0}.campaign_configurator table{margin:0 auto;width:51%;min-width:574px;border:none;box-shadow:none}.campaign_configurator th{min-width:120px}@media screen and (max-width:782px){.campaign_configurator{padding:0}.campaign_configurator table{width:auto;min-width:auto;max-width:100%}.campaign_configurator th{min-width:auto}}#wf-tab-content-config td>input:not([type=checkbox]):not([type=radio]),#wf-tab-content-config td>select,#wf-tab-content-config td>textarea{width:100%!important}.woo-feed-filters td>div:nth-child(2n):not(.clear):not(.selectize){width:120px;display:block}.woo-feed-filters td>div:not(.clear){float:left;margin-right:10px}.woo-feed-filters tr>td:first-child{width:290px;padding-left:40px}.woo-feed-filters,.woo-feed-ftp{margin:15px auto 25px}
admin/css/woo-feed-admin.scss ADDED
@@ -0,0 +1,1667 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * All of the CSS for your admin-specific functionality should be
3
+ * included in this file.
4
+ */
5
+ .wpf_spin {
6
+ -webkit-animation: spin 1000ms infinite linear;
7
+ animation: spin 1000ms infinite linear;
8
+ &.reverse_spin {
9
+ animation-direction: reverse;
10
+ }
11
+ }
12
+ .wpf_regenerate {
13
+ &.disabled {
14
+ color: #737373;
15
+ box-shadow: none;
16
+ cursor: not-allowed;
17
+ }
18
+ }
19
+
20
+ @keyframes spin {
21
+ 0% {
22
+ transform: rotate(0deg);
23
+ }
24
+ 100% {
25
+ transform: rotate(359deg);
26
+ }
27
+ }
28
+
29
+ .wfbtn {
30
+ background: #3498db;
31
+ background-image: -webkit-linear-gradient(top, #3498db, #2980b9);
32
+ background-image: -moz-linear-gradient(top, #3498db, #2980b9);
33
+ background-image: -ms-linear-gradient(top, #3498db, #2980b9);
34
+ background-image: -o-linear-gradient(top, #3498db, #2980b9);
35
+ background-image: linear-gradient(to bottom, #3498db, #2980b9);
36
+ -webkit-border-radius: 17px;
37
+ -moz-border-radius: 17px;
38
+ border-radius: 17px;
39
+ -webkit-box-shadow: 0 1px 3px #666666;
40
+ -moz-box-shadow: 0 1px 3px #666666;
41
+ box-shadow: 0 1px 3px #666666;
42
+ font-family: Arial, sans-serif;
43
+ color: #ffffff;
44
+ font-size: 20px;
45
+ padding: 10px 20px 10px 20px;
46
+ border: solid #2b698f 3px;
47
+ text-decoration: none;
48
+ &:hover {
49
+ background: #3cb0fd;
50
+ background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db);
51
+ background-image: -moz-linear-gradient(top, #3cb0fd, #3498db);
52
+ background-image: -ms-linear-gradient(top, #3cb0fd, #3498db);
53
+ background-image: -o-linear-gradient(top, #3cb0fd, #3498db);
54
+ background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
55
+ text-decoration: none;
56
+ }
57
+ }
58
+
59
+ .wftooltip {
60
+ display: none;
61
+ position: absolute;
62
+ border: 1px solid #333;
63
+ background-color: #161616;
64
+ border-radius: 5px;
65
+ padding: 10px;
66
+ color: #fff;
67
+ font-size: 12px;
68
+ }
69
+
70
+ .feed-actions {
71
+ .makeFeedResponse {
72
+ width: 70%;
73
+ color: green;
74
+ }
75
+ }
76
+
77
+ .woo-feed-mapping-input {
78
+ width: 100%;
79
+ }
80
+
81
+ .requiredIn {
82
+ color: red;
83
+ }
84
+
85
+ .generalInput {
86
+ width: 200px;
87
+ &:not(.selectize-control) {
88
+ margin: 5px auto;
89
+ }
90
+ }
91
+
92
+ .error {
93
+ color: red;
94
+ }
95
+
96
+ .widefat {
97
+ td {
98
+ select, input {
99
+ max-width: 100%;
100
+ }
101
+ }
102
+ }
103
+
104
+ #wf_newRow {
105
+ margin-left: 0;
106
+ }
107
+
108
+ .mtable {
109
+ tbody {
110
+ tr {
111
+ height: 25px;
112
+ border: 1px solid #CCC;
113
+ text-align: left;
114
+ align-items: baseline;
115
+ font-weight: bold;
116
+ }
117
+ }
118
+ th {
119
+ &:nth-child(1) {
120
+ width: 17px;
121
+ }
122
+ &:nth-child(2) {
123
+ width: 160px;
124
+ }
125
+ &:nth-child(3) {
126
+ width: 100px;
127
+ }
128
+ &:nth-child(4) {
129
+ width: 100px;
130
+ }
131
+ &:nth-child(5) {
132
+ width: 150px;
133
+ }
134
+ &:nth-child(6) {
135
+ width: 100px;
136
+ }
137
+ &:nth-child(7) {
138
+ width: 150px;
139
+ }
140
+ &:nth-child(8) {
141
+ width: 90px;
142
+ }
143
+ &:nth-child(9) {
144
+ width: 29px;
145
+ }
146
+ }
147
+ }
148
+
149
+ .mtable2 {
150
+ tbody {
151
+ tr {
152
+ height: 25px;
153
+ border: 1px solid #CCC;
154
+ text-align: left;
155
+ align-items: baseline;
156
+ font-weight: bold;
157
+ }
158
+ }
159
+ th {
160
+ &:nth-child(1) {
161
+ width: 30px;
162
+ }
163
+ &:nth-child(2) {
164
+ width: 150px;
165
+ }
166
+ &:nth-child(3) {
167
+ width: 230px;
168
+ }
169
+ &:nth-child(4) {
170
+ width: 220px;
171
+ }
172
+ &:nth-child(7) {
173
+ width: 50px;
174
+ }
175
+ &:nth-child(8) {
176
+ width: 50px;
177
+ }
178
+ &:nth-child(9) {
179
+ width: 29px;
180
+ }
181
+ }
182
+ }
183
+
184
+
185
+ .wp-admin {
186
+ select.wf_mattributes {
187
+ width: 150px;
188
+ left: 0;
189
+ height: 25px;
190
+ }
191
+ }
192
+
193
+ div#wf-tab-content1 {
194
+ select {
195
+ &:not([name^="output_type"]) {
196
+ width: 100%;
197
+ }
198
+ }
199
+ input {
200
+ width: 100%;
201
+ }
202
+ .dashicons {
203
+ vertical-align: middle;
204
+ }
205
+ }
206
+
207
+
208
+ .wf_attributes {
209
+ width: 150px;
210
+ left: 0
211
+ }
212
+
213
+ .wf_compare {
214
+ max-width: 245px;
215
+ left: 0
216
+ }
217
+
218
+ .wf_ps {
219
+ width: 100px;
220
+ left: 0
221
+ }
222
+
223
+ .wf_sortedtable {
224
+ cursor: move;
225
+ }
226
+
227
+ .sorted_table {
228
+ position: relative;
229
+ .dragged {
230
+ position: absolute;
231
+ opacity: 0.8;
232
+ z-index: 9999;
233
+ background: #fff;
234
+ width: 100%;
235
+ display: table;
236
+ }
237
+ tbody {
238
+ tr.placeholder {
239
+ td {
240
+ border: 1px dashed #2cc185;
241
+ height: 46px;
242
+ }
243
+ }
244
+ }
245
+ }
246
+
247
+ .wfnoempty {
248
+ width: 120px;
249
+ }
250
+
251
+ /*==================Tab Design=======================*/
252
+
253
+ p {
254
+ color: #222;
255
+ }
256
+
257
+ .wf_tabs {
258
+ position: relative;
259
+ margin: 0 auto;
260
+ width: 100%;
261
+ list-style: none;
262
+ /*bottom: 50px;*/
263
+
264
+ }
265
+
266
+ .wf_tabs:after {
267
+ display: table;
268
+ clear: both;
269
+ content: "";
270
+ }
271
+
272
+ .wf_tabs li {
273
+ float: left;
274
+ width: 20%;
275
+ display: block;
276
+ border: 2px solid #CCC;
277
+ }
278
+
279
+ .wf_tabs li > input[type="radio"][name="wf_tabs"] {
280
+ position: absolute;
281
+ top: auto;
282
+ left: -9999px;
283
+ }
284
+
285
+ .wf-tab-name {
286
+ display: block;
287
+ padding: 15px;
288
+ font-size: 15px;
289
+ font-weight: bold;
290
+ line-height: 1;
291
+ background: #fff;
292
+ cursor: pointer;
293
+ position: relative;
294
+ text-align: center;
295
+ text-transform: uppercase;
296
+ color: #2CC185;
297
+ }
298
+
299
+ .wf-tab-name:hover {
300
+ background: #2CC185;
301
+ color: white;
302
+ }
303
+
304
+ .wf_tabs [id^="tab"]:checked + label {
305
+ background: #2CC185;
306
+ color: white;
307
+ }
308
+
309
+ .wf_tabs .wf-tab-content {
310
+ z-index: 2;
311
+ display: none;
312
+ width: 100%;
313
+ font-size: 0.9rem;
314
+ position: absolute;
315
+ left: 0;
316
+ background: #fff;
317
+ border: 2px solid #CCC;
318
+ }
319
+
320
+ .wf_tabs [id^="tab"]:checked ~ [id^="wf-tab-content"] {
321
+ display: block;
322
+ }
323
+
324
+ [id^="wf-tab-content"] {
325
+ margin-bottom: 40px;
326
+ }
327
+
328
+ div#wf-tab-content2 table:first-child {
329
+ padding: 10px 0;
330
+ }
331
+
332
+ div#wf-tab-content2 table:first-child td:nth-child(1) {
333
+ width: 260px;
334
+ }
335
+
336
+ div#wf-tab-content2 table:first-child td:nth-child(2) {
337
+ width: 260px;
338
+ }
339
+
340
+ table.feed-actions tr td:last-child {
341
+ text-align: right;
342
+ }
343
+
344
+ /* Selectize */
345
+ select.selectize {
346
+ display: none;
347
+ }
348
+
349
+ body.no-js select.selectize {
350
+ display: block !important;
351
+ }
352
+
353
+ /* fallback combat */
354
+ .selectize-dropdown .active {
355
+ background-color: #edf9ff;
356
+ }
357
+
358
+ .selectize-dropdown .create {
359
+ padding: 5px 8px;
360
+ }
361
+
362
+ .wapk-selectize-item {
363
+ background: #0073aa !important;
364
+ color: #f1f1f1 !important;
365
+ font-weight: bold !important;
366
+ border-color: #0073aa !important;
367
+ padding-left: 5px;
368
+ padding-right: 5px;
369
+ }
370
+
371
+ .selectize-input.full #googleTaxonomyId-selectized {
372
+ opacity: 0;
373
+ position: absolute;
374
+ left: -10000px;
375
+ }
376
+
377
+ .selectize-dropdown [data-selectable].option {
378
+ cursor: default;
379
+ }
380
+
381
+ .selectize-control.plugin-remove_button [data-value] .remove {
382
+ border-left: 1px solid #f1f1f1 !important;
383
+ }
384
+
385
+ .selectize-dropdown .optgroup-header {
386
+ font-weight: 700;
387
+ background: #efefef;
388
+ color: #5a5a5a;
389
+ }
390
+
391
+ .selectize-dropdown [data-selectable].option {
392
+ cursor: pointer;
393
+ }
394
+
395
+ /* Feed active and inactive button CSS */
396
+ .wf_status_wrap label {
397
+ width: 50px;
398
+ height: 25px;
399
+ box-sizing: border-box;
400
+ border: 1px solid;
401
+ float: left;
402
+ border-radius: 100px;
403
+ position: relative;
404
+ cursor: pointer;
405
+ transition: .3s ease;
406
+ }
407
+
408
+ input[class=woo_feed_status_input]:checked + label {
409
+ background: #55e868;
410
+ }
411
+
412
+ input[class=woo_feed_status_input]:checked + label:before {
413
+ left: 25px;
414
+ }
415
+
416
+ .wf_status_wrap label:before {
417
+ transition: .3s ease;
418
+ content: '';
419
+ width: 20px;
420
+ height: 20px;
421
+ position: absolute;
422
+ background: white;
423
+ left: 2px;
424
+ top: 2px;
425
+ box-sizing: border-box;
426
+ border: 1px solid;
427
+ color: black;
428
+ border-radius: 100px;
429
+ }
430
+
431
+ /* list table style */
432
+ .widefat td.column-url, .widefat th.column-url,
433
+ .column-url {
434
+ color: #008779;
435
+ font-weight: bold;
436
+ }
437
+
438
+ /** Feed Progress **/
439
+ .feed-progress-container {
440
+ width: 100%;
441
+ color: white;
442
+ text-align: center;
443
+ font-weight: 300;
444
+ }
445
+
446
+ .feed-progress-bar {
447
+ width: 100%;
448
+ background: #eee;
449
+ padding: 3px;
450
+ border-radius: 3px;
451
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
452
+ }
453
+
454
+ .feed-progress-bar-fill {
455
+ height: 20px;
456
+ display: block;
457
+ background: #3DC264;
458
+ width: 0;
459
+ border-radius: 3px;
460
+ -webkit-transition: width 0.8s ease;
461
+ transition: width 0.8s ease;
462
+ }
463
+
464
+ .feed-progress-status {
465
+ float: left;
466
+ font-weight: bold;
467
+ color: darkblue;
468
+ }
469
+
470
+ .feed-progress-percentage {
471
+ text-align: right;
472
+ font-weight: bolder;
473
+ color: #41f49d;
474
+ font-family: 'Arial Black', sans-serif;
475
+ font-size: large;
476
+ }
477
+
478
+ #wpbody-content.woofeed-body-content {
479
+ overflow: visible !important;
480
+ }
481
+
482
+ .clippy {
483
+ position: relative;
484
+ width: 13px;
485
+ margin-top: -3px;
486
+ margin-left: 3px;
487
+ top: 3px;
488
+ }
489
+
490
+ .column-url .clippy {
491
+ display: none;
492
+ }
493
+
494
+ .column-url:hover .clippy {
495
+ display: inline-block;
496
+ }
497
+
498
+ /**
499
+ * Primer Tooltip
500
+ */
501
+ .tooltipped {
502
+ position: relative;
503
+ &:after {
504
+ position: absolute;
505
+ z-index: 1000000;
506
+ display: none;
507
+ padding: 5px 8px;
508
+ font: normal normal 11px/1.5 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
509
+ color: #fff;
510
+ text-align: center;
511
+ text-decoration: none;
512
+ text-shadow: none;
513
+ text-transform: none;
514
+ letter-spacing: normal;
515
+ word-wrap: break-word;
516
+ white-space: pre;
517
+ pointer-events: none;
518
+ content: attr(aria-label);
519
+ background: rgba(0, 0, 0, .8);
520
+ border-radius: 3px;
521
+ -webkit-font-smoothing: subpixel-antialiased;
522
+ }
523
+ &:before {
524
+ position: absolute;
525
+ z-index: 1000001;
526
+ display: none;
527
+ width: 0;
528
+ height: 0;
529
+ color: rgba(0, 0, 0, .8);
530
+ pointer-events: none;
531
+ content: "";
532
+ border: 5px solid transparent;
533
+ }
534
+ &:hover {
535
+ &:before {
536
+ display: inline-block;
537
+ text-decoration: none;
538
+ }
539
+ &:after {
540
+ display: inline-block;
541
+ text-decoration: none;
542
+ }
543
+ }
544
+ &:active {
545
+ &:before {
546
+ display: inline-block;
547
+ text-decoration: none;
548
+ }
549
+ &:after {
550
+ display: inline-block;
551
+ text-decoration: none;
552
+ }
553
+ }
554
+ &:focus {
555
+ &:before {
556
+ display: inline-block;
557
+ text-decoration: none;
558
+ }
559
+ &:after {
560
+ display: inline-block;
561
+ text-decoration: none;
562
+ }
563
+ }
564
+ &-multiline {
565
+ &:hover {
566
+ &:after {
567
+ display: table-cell;
568
+ }
569
+ }
570
+ &:active {
571
+ &:after {
572
+ display: table-cell;
573
+ }
574
+ }
575
+ &:focus {
576
+ &:after {
577
+ display: table-cell;
578
+ }
579
+ }
580
+ &:after {
581
+ //noinspection CssInvalidPropertyValue
582
+ width: -webkit-max-content;
583
+ width: -moz-max-content;
584
+ width: max-content;
585
+ max-width: 250px;
586
+ word-break: break-word;
587
+ word-wrap: normal;
588
+ white-space: pre-line;
589
+ border-collapse: separate;
590
+ }
591
+ }
592
+ &-s {
593
+ &:after {
594
+ top: 100%;
595
+ right: 50%;
596
+ margin-top: 5px;
597
+ -webkit-transform: translateX(50%);
598
+ -ms-transform: translateX(50%);
599
+ transform: translateX(50%);
600
+ }
601
+ &:before {
602
+ top: auto;
603
+ right: 50%;
604
+ bottom: -5px;
605
+ margin-right: -5px;
606
+ border-bottom-color: rgba(0, 0, 0, .8);
607
+ }
608
+ }
609
+ &-se {
610
+ &:after {
611
+ top: 100%;
612
+ margin-top: 5px;
613
+ right: auto;
614
+ left: 50%;
615
+ margin-left: -15px;
616
+ }
617
+ &:before {
618
+ top: auto;
619
+ right: 50%;
620
+ bottom: -5px;
621
+ margin-right: -5px;
622
+ border-bottom-color: rgba(0, 0, 0, .8);
623
+ }
624
+ }
625
+ &-sw {
626
+ &:after {
627
+ top: 100%;
628
+ right: 50%;
629
+ margin-top: 5px;
630
+ margin-right: -15px;
631
+ }
632
+ &:before {
633
+ top: auto;
634
+ right: 50%;
635
+ bottom: -5px;
636
+ margin-right: -5px;
637
+ border-bottom-color: rgba(0, 0, 0, .8);
638
+ }
639
+ }
640
+ &-n {
641
+ &:after {
642
+ right: 50%;
643
+ bottom: 100%;
644
+ margin-bottom: 5px;
645
+ -webkit-transform: translateX(50%);
646
+ -ms-transform: translateX(50%);
647
+ transform: translateX(50%);
648
+ }
649
+ &:before {
650
+ top: -5px;
651
+ right: 50%;
652
+ bottom: auto;
653
+ margin-right: -5px;
654
+ border-top-color: rgba(0, 0, 0, .8);
655
+ }
656
+ }
657
+ &-ne {
658
+ &:after {
659
+ bottom: 100%;
660
+ margin-bottom: 5px;
661
+ right: auto;
662
+ left: 50%;
663
+ margin-left: -15px;
664
+ }
665
+ &:before {
666
+ top: -5px;
667
+ right: 50%;
668
+ bottom: auto;
669
+ margin-right: -5px;
670
+ border-top-color: rgba(0, 0, 0, .8);
671
+ }
672
+ }
673
+ &-nw {
674
+ &:after {
675
+ right: 50%;
676
+ bottom: 100%;
677
+ margin-bottom: 5px;
678
+ margin-right: -15px;
679
+ }
680
+ &:before {
681
+ top: -5px;
682
+ right: 50%;
683
+ bottom: auto;
684
+ margin-right: -5px;
685
+ border-top-color: rgba(0, 0, 0, .8);
686
+ }
687
+ }
688
+ &-w {
689
+ &:after {
690
+ right: 100%;
691
+ bottom: 50%;
692
+ margin-right: 5px;
693
+ -webkit-transform: translateY(50%);
694
+ -ms-transform: translateY(50%);
695
+ transform: translateY(50%);
696
+ }
697
+ &:before {
698
+ top: 50%;
699
+ bottom: 50%;
700
+ left: -5px;
701
+ margin-top: -5px;
702
+ border-left-color: rgba(0, 0, 0, .8);
703
+ }
704
+ }
705
+ &-e {
706
+ &:after {
707
+ bottom: 50%;
708
+ left: 100%;
709
+ margin-left: 5px;
710
+ -webkit-transform: translateY(50%);
711
+ -ms-transform: translateY(50%);
712
+ transform: translateY(50%);
713
+ }
714
+ &:before {
715
+ top: 50%;
716
+ right: -5px;
717
+ bottom: 50%;
718
+ margin-top: -5px;
719
+ border-right-color: rgba(0, 0, 0, .8);
720
+ }
721
+ }
722
+ &-multiline {
723
+ &.tooltipped-s {
724
+ &:after {
725
+ right: auto;
726
+ left: 50%;
727
+ -webkit-transform: translateX(-50%);
728
+ -ms-transform: translateX(-50%);
729
+ transform: translateX(-50%);
730
+ }
731
+ }
732
+ &.tooltipped-n {
733
+ &:after {
734
+ right: auto;
735
+ left: 50%;
736
+ -webkit-transform: translateX(-50%);
737
+ -ms-transform: translateX(-50%);
738
+ transform: translateX(-50%);
739
+ }
740
+ }
741
+ &.tooltipped-w {
742
+ &:after {
743
+ right: 100%;
744
+ }
745
+ }
746
+ &.tooltipped-e {
747
+ &:after {
748
+ right: 100%;
749
+ }
750
+ }
751
+ }
752
+ &-sticky {
753
+ &:before {
754
+ display: inline-block;
755
+ }
756
+ &:after {
757
+ display: inline-block;
758
+ }
759
+ &.tooltipped-multiline {
760
+ &:after {
761
+ display: table-cell;
762
+ }
763
+ }
764
+ }
765
+ }
766
+
767
+ .fullscreen-overlay-enabled {
768
+ &.dark-theme {
769
+ .tooltipped {
770
+ &:after {
771
+ color: #000;
772
+ background: rgba(255, 255, 255, .8);
773
+ }
774
+ .tooltipped-s {
775
+ &:before {
776
+ border-bottom-color: rgba(255, 255, 255, .8);
777
+ }
778
+ }
779
+ .tooltipped-se {
780
+ &:before {
781
+ border-bottom-color: rgba(255, 255, 255, .8);
782
+ }
783
+ }
784
+ .tooltipped-sw {
785
+ &:before {
786
+ border-bottom-color: rgba(255, 255, 255, .8);
787
+ }
788
+ }
789
+ &.tooltipped-n {
790
+ &:before {
791
+ border-top-color: rgba(255, 255, 255, .8);
792
+ }
793
+ }
794
+ &.tooltipped-ne {
795
+ &:before {
796
+ border-top-color: rgba(255, 255, 255, .8);
797
+ }
798
+ }
799
+ &.tooltipped-nw {
800
+ &:before {
801
+ border-top-color: rgba(255, 255, 255, .8);
802
+ }
803
+ }
804
+ &.tooltipped-e {
805
+ &:before {
806
+ border-right-color: rgba(255, 255, 255, .8);
807
+ }
808
+ }
809
+ &.tooltipped-w {
810
+ &:before {
811
+ border-left-color: rgba(255, 255, 255, .8);
812
+ }
813
+ }
814
+ }
815
+ }
816
+ }
817
+ @media screen and (min-width: 0\0) {
818
+ .tooltipped-multiline {
819
+ &:after {
820
+ width: 250px;
821
+ }
822
+ }
823
+ }
824
+
825
+
826
+ ul {
827
+ &.tracker_collection_list {
828
+ list-style: initial;
829
+ padding: initial;
830
+ margin: -10px 0 0 30px;
831
+ font-size: 11px !important;
832
+ li {
833
+ margin: 0;
834
+ }
835
+ }
836
+ }
837
+
838
+
839
+ /** Info Message Table **/
840
+ table {
841
+ &.wf-info-table, &.wf-rate-table {
842
+ vertical-align: middle;
843
+ text-align: center;
844
+ max-width: 100%;
845
+ font-weight: 500;
846
+ th {
847
+ text-align: center;
848
+ }
849
+ strong {
850
+ font-weight: bold;
851
+ }
852
+ }
853
+ &.wf-info-table {
854
+ th {
855
+ &:first-child {
856
+ img {
857
+ margin: 0 0 -5px 5px;
858
+ }
859
+ }
860
+ }
861
+ }
862
+ &.wf-rate-table {
863
+ a {
864
+ color: #0073aa;
865
+ }
866
+ a.review-star {
867
+ &:after {
868
+ content: "\f155\f155\f155\f155\f155" !important;
869
+ //noinspection CssNoGenericFontName
870
+ font-family: dashicons;
871
+ font-size: 10px;
872
+ font-weight: 100;
873
+ text-rendering: auto;
874
+ -webkit-font-smoothing: antialiased;
875
+ -moz-osx-font-smoothing: grayscale;
876
+ color: #0073aa;
877
+ text-decoration: underline;
878
+ }
879
+ }
880
+ }
881
+ }
882
+
883
+
884
+ /** Admin Menu Icon **/
885
+ #adminmenu {
886
+ #toplevel_page_webappick-manage-feeds {
887
+ div.wp-menu-image {
888
+ &::before {
889
+ content: "";
890
+ background: url(../images/woo-feed-icon.svg) no-repeat center center;
891
+ background-size: 20px 20px;
892
+ opacity: 0.6;
893
+ filter: alpha(opacity=60);
894
+ }
895
+ }
896
+ &:hover {
897
+ div.wp-menu-image {
898
+ &::before {
899
+ opacity: 1;
900
+ filter: alpha(opacity=100);
901
+ }
902
+ }
903
+ }
904
+ }
905
+ #toplevel_page_webappick-manage-feeds.wp-has-current-submenu {
906
+ div.wp-menu-image {
907
+ &::before {
908
+ opacity: 1;
909
+ filter: alpha(opacity=100);
910
+ }
911
+ }
912
+ }
913
+ }
914
+
915
+
916
+ /** Admin Page Wrapper **/
917
+ .wapk-admin, .wapk-admin * {
918
+ -webkit-box-sizing: border-box;
919
+ -moz-box-sizing: border-box;
920
+ box-sizing: border-box;
921
+ }
922
+
923
+ .wapk-admin {
924
+ position: relative;
925
+ display: block;
926
+ -webkit-hyphens: manual;
927
+ -ms-hyphens: manual;
928
+ hyphens: manual;
929
+ color: #1B2730;
930
+ /* reset .warp margin to use full width except menu area */
931
+ margin: 0 0 0 -10px;
932
+ }
933
+
934
+ @media screen and (min-width: 783px) {
935
+ .wapk-admin {
936
+ margin: 0 0 0 -20px;
937
+ }
938
+ }
939
+
940
+ .text-center {
941
+ text-align: center;
942
+ }
943
+ .wapk-admin {
944
+ h1, h2, h3,
945
+ h4, h5, h6,
946
+ p {
947
+ color: #1B2730;
948
+ }
949
+ sup {
950
+ vertical-align: baseline;
951
+ position: relative;
952
+ top: -6px;
953
+ }
954
+ sub {
955
+ vertical-align: baseline;
956
+ position: relative;
957
+ top: 4px;
958
+ }
959
+ }
960
+
961
+
962
+ /* WP.Core.UI Compat */
963
+ .wapk-admin {
964
+ .wapk-section {
965
+ [class$=icon32] {
966
+ + {
967
+ h2 {
968
+ font-size: 23px;
969
+ font-weight: 400;
970
+ margin: 0;
971
+ padding: 9px 0 4px 0;
972
+ line-height: 1.3;
973
+ }
974
+ }
975
+ }
976
+ h1 {
977
+ font-size: 23px;
978
+ font-weight: 400;
979
+ margin: 0;
980
+ padding: 9px 0 4px 0;
981
+ line-height: 1.3;
982
+ }
983
+ >h2 {
984
+ &:first-child {
985
+ font-size: 23px;
986
+ font-weight: 400;
987
+ margin: 0;
988
+ padding: 9px 0 4px 0;
989
+ line-height: 1.3;
990
+ }
991
+ }
992
+ margin: 10px 20px 0 22px;
993
+ position: relative;
994
+ display: block;
995
+ }
996
+ >.notice {
997
+ margin: 10px 20px 0 22px;
998
+ position: relative;
999
+ display: block;
1000
+ }
1001
+ span.help {
1002
+ display: block;
1003
+ float: left;
1004
+ width: 100%;
1005
+ font-size: 0.9em;
1006
+ color: #636363;
1007
+ margin-top: 5px;
1008
+ font-weight: 500;
1009
+ .dashicons {
1010
+ width: 11px;
1011
+ height: 12px;
1012
+ font-size: inherit;
1013
+ vertical-align: middle;
1014
+ }
1015
+ }
1016
+ }
1017
+ .clear {
1018
+ &:after {
1019
+ content: "";
1020
+ display: table;
1021
+ clear: both;
1022
+ }
1023
+ }
1024
+
1025
+
1026
+ /*.wapk-admin .help a { color: inherit; text-decoration: underline; }*/
1027
+ /** Extend WP Core UI PostBox For Docs **/
1028
+ .wapk-feed-docs {
1029
+ .postbox {
1030
+ width: 355px;
1031
+ margin-right: 20px;
1032
+ display: inline-block;
1033
+ vertical-align: top;
1034
+ .hndle {
1035
+ font-size: 14px;
1036
+ padding: 8px 12px;
1037
+ margin: 0;
1038
+ line-height: 1.4;
1039
+ cursor: pointer;
1040
+ }
1041
+ .dashicons {
1042
+ color: #ccc;
1043
+ }
1044
+ a {
1045
+ text-decoration: none;
1046
+ }
1047
+ .inside {
1048
+ margin-bottom: 0;
1049
+ }
1050
+ ul {
1051
+ margin-bottom: 0;
1052
+ }
1053
+ .toggle-indicator {
1054
+ &:before {
1055
+ content: "\F142";
1056
+ display: inline-block;
1057
+ font: 400 20px/1 dashicons;
1058
+ speak: none;
1059
+ -webkit-font-smoothing: antialiased;
1060
+ -moz-osx-font-smoothing: grayscale;
1061
+ text-decoration: none !important;
1062
+ }
1063
+ }
1064
+ li {
1065
+ width: 100%;
1066
+ display: block;
1067
+ float: left;
1068
+ span {
1069
+ display: inline-block;
1070
+ float: left;
1071
+ margin-right: 4px;
1072
+ }
1073
+ a {
1074
+ display: inline-block;
1075
+ float: left;
1076
+ width: calc(100% - 24px);
1077
+ }
1078
+ }
1079
+ }
1080
+ .postbox.closed {
1081
+ .toggle-indicator {
1082
+ &:before {
1083
+ content: "\F140";
1084
+ }
1085
+ }
1086
+ }
1087
+ }
1088
+ .wapk-section {
1089
+ #post-body.columns-2 {
1090
+ #side-sortables {
1091
+ min-height: 196px;
1092
+ }
1093
+ }
1094
+ }
1095
+ #poststuff {
1096
+ #feed_merchant_info {
1097
+ .inside {
1098
+ margin: 0;
1099
+ padding: 0;
1100
+ }
1101
+ }
1102
+ }
1103
+ #feed_merchant_info {
1104
+ ul.data {
1105
+ margin-left: 24px;
1106
+ margin-top: 5px;
1107
+ li {
1108
+ margin-bottom: 5px;
1109
+ }
1110
+ }
1111
+ }
1112
+ .merchant-info-section {
1113
+ padding: 6px 10px 8px;
1114
+ }
1115
+ .generateFeed {
1116
+ .wf-tab-content {
1117
+ table {
1118
+ &:first-child {
1119
+ border: none;
1120
+ box-shadow: none;
1121
+ }
1122
+ }
1123
+ }
1124
+ table {
1125
+ th {
1126
+ font-weight: bold;
1127
+ }
1128
+ }
1129
+ }
1130
+ @media only screen and (max-width: 850px) {
1131
+ .wapk-feed-docs {
1132
+ .postbox {
1133
+ display: block;
1134
+ width: auto;
1135
+ float: none;
1136
+ margin-right: auto;
1137
+ }
1138
+ }
1139
+ }
1140
+
1141
+ /** Admin Feed Help Docs **/
1142
+ .wp-submenu {
1143
+ li {
1144
+ span.woo-feed-docs {
1145
+ font-weight: bold;
1146
+ color: #f18500;
1147
+ }
1148
+ &:hover {
1149
+ span.woo-feed-docs {
1150
+ color: #ce7304;
1151
+ }
1152
+ }
1153
+ }
1154
+ li.current {
1155
+ span.woo-feed-docs {
1156
+ color: #ce7304;
1157
+ }
1158
+ }
1159
+ }
1160
+ .wapk-admin {
1161
+ .wapk-feed-docs {
1162
+ .postbox {
1163
+ .hndle {
1164
+ cursor: default;
1165
+ }
1166
+ }
1167
+ }
1168
+ }
1169
+
1170
+ /** Admin Call-To-Action **/
1171
+ .wapk-cta {
1172
+ position: relative;
1173
+ display: flex;
1174
+ width: 100%;
1175
+ padding: 100px 15px;
1176
+ background: linear-gradient(45deg, #6CD5FF 33%, #c2efef 100%);
1177
+ justify-content: center;
1178
+ align-items: center;
1179
+ &-icon {
1180
+ .dashicons {
1181
+ font-size: 100px;
1182
+ width: 100px;
1183
+ height: auto;
1184
+ margin: 0 10px -8px 0;
1185
+ color: #02658c;
1186
+ }
1187
+ }
1188
+ &-content {
1189
+ width: 50%;
1190
+ h2 {
1191
+ font-size: 2em;
1192
+ margin: 0.5em 0;
1193
+ }
1194
+ }
1195
+ &-action {
1196
+ a.wapk-button {
1197
+ font-size: 24px;
1198
+ height: auto !important;
1199
+ padding: 10px 20px;
1200
+ }
1201
+ }
1202
+ }
1203
+
1204
+ @media (max-width: 600px) {
1205
+ .wapk-cta {
1206
+ display: block;
1207
+ text-align: center;
1208
+ padding: 4em 0;
1209
+ &-content {
1210
+ width: 100%;
1211
+ margin: 2em 0;
1212
+ }
1213
+ }
1214
+ }
1215
+
1216
+ /** Override .wp-core-ui .wapk-button styles with prefix .wapk-admin **/
1217
+ /* Button Skin */
1218
+ .wapk-button {
1219
+ color: #00D4D4;
1220
+ border-color: #00D4D4;
1221
+ display: inline-block;
1222
+ text-decoration: none;
1223
+ font-size: 13px;
1224
+ line-height: 2.15384615;
1225
+ min-height: 30px;
1226
+ margin: 0;
1227
+ padding: 0 10px;
1228
+ cursor: pointer;
1229
+ border-width: 1px;
1230
+ border-style: solid;
1231
+ -webkit-appearance: none;
1232
+ border-radius: 3px;
1233
+ white-space: nowrap;
1234
+ box-sizing: border-box;
1235
+ >svg {
1236
+ width: 15px;
1237
+ margin-left: 5px;
1238
+ fill: #00D4D4;
1239
+ }
1240
+ >.dashicons {
1241
+ color: #00D4D4;
1242
+ }
1243
+ &:hover {
1244
+ border-color: #00bbbb;
1245
+ color: #00bbbb;
1246
+ >svg {
1247
+ fill: #00bbbb;
1248
+ }
1249
+ >.dashicons {
1250
+ color: #00bbbb;
1251
+ }
1252
+ }
1253
+ &:focus {
1254
+ border-color: #00D4D4;
1255
+ color: #00bbbb;
1256
+ box-shadow: 0 0 0 1px #00D4D4;
1257
+ >svg {
1258
+ fill: #00bbbb;
1259
+ }
1260
+ >.dashicons {
1261
+ color: #00bbbb;
1262
+ }
1263
+ }
1264
+ &:active {
1265
+ background: #00bbbb;
1266
+ border-color: #00bbbb;
1267
+ }
1268
+ &-secondary {
1269
+ color: #00D4D4;
1270
+ border-color: #00D4D4;
1271
+ display: inline-block;
1272
+ text-decoration: none;
1273
+ font-size: 13px;
1274
+ line-height: 2.15384615;
1275
+ min-height: 30px;
1276
+ margin: 0;
1277
+ padding: 0 10px;
1278
+ cursor: pointer;
1279
+ border-width: 1px;
1280
+ border-style: solid;
1281
+ -webkit-appearance: none;
1282
+ border-radius: 3px;
1283
+ white-space: nowrap;
1284
+ box-sizing: border-box;
1285
+ >svg {
1286
+ width: 15px;
1287
+ margin-left: 5px;
1288
+ fill: #00D4D4;
1289
+ }
1290
+ >.dashicons {
1291
+ color: #00D4D4;
1292
+ }
1293
+ &:hover {
1294
+ border-color: #00bbbb;
1295
+ color: #00bbbb;
1296
+ >svg {
1297
+ fill: #00bbbb;
1298
+ }
1299
+ >.dashicons {
1300
+ color: #00bbbb;
1301
+ }
1302
+ }
1303
+ &:focus {
1304
+ border-color: #00D4D4;
1305
+ color: #00bbbb;
1306
+ box-shadow: 0 0 0 1px #00D4D4;
1307
+ >svg {
1308
+ fill: #00bbbb;
1309
+ }
1310
+ >.dashicons {
1311
+ color: #00bbbb;
1312
+ }
1313
+ }
1314
+ }
1315
+ &-primary {
1316
+ display: inline-block;
1317
+ text-decoration: none;
1318
+ font-size: 13px;
1319
+ line-height: 2.15384615;
1320
+ min-height: 30px;
1321
+ margin: 0;
1322
+ padding: 0 10px;
1323
+ cursor: pointer;
1324
+ border-width: 1px;
1325
+ border-style: solid;
1326
+ -webkit-appearance: none;
1327
+ border-radius: 3px;
1328
+ white-space: nowrap;
1329
+ box-sizing: border-box;
1330
+ background: #00D4D4;
1331
+ border-color: #00D4D4;
1332
+ color: #fff;
1333
+ box-shadow: 0 1px 0 #00bbbb;
1334
+ text-shadow: 0 -1px 1px #00bbbb, 1px 0 1px #00bbbb, 0 1px 1px #00bbbb, -1px 0 1px #00bbbb;
1335
+ >svg {
1336
+ fill: #fff;
1337
+ }
1338
+ &:hover {
1339
+ background: #00e3e3;
1340
+ border-color: #00c5c5;
1341
+ color: #fff;
1342
+ >svg {
1343
+ fill: #fff;
1344
+ }
1345
+ }
1346
+ &:focus {
1347
+ background: #00e3e3;
1348
+ border-color: #00c5c5;
1349
+ color: #fff;
1350
+ box-shadow: 0 0 0 1px #fff, 0 0 0 3px #00D4D4;
1351
+ >svg {
1352
+ fill: #fff;
1353
+ }
1354
+ }
1355
+ &:active {
1356
+ background: #00bbbb;
1357
+ border-color: #00bbbb;
1358
+ color: #fff;
1359
+ >svg {
1360
+ fill: #fff;
1361
+ }
1362
+ }
1363
+ &:disabled {
1364
+ color: #c7d1d1 !important;
1365
+ background: #22ffff !important;
1366
+ border-color: #22ffff !important;
1367
+ text-shadow: none !important;
1368
+ >svg {
1369
+ fill: #c7d1d1 !important;
1370
+ }
1371
+ }
1372
+ }
1373
+ &.hover {
1374
+ border-color: #00bbbb;
1375
+ color: #00bbbb;
1376
+ >svg {
1377
+ fill: #00bbbb;
1378
+ }
1379
+ >.dashicons {
1380
+ color: #00bbbb;
1381
+ }
1382
+ }
1383
+ &.focus {
1384
+ border-color: #00D4D4;
1385
+ color: #00bbbb;
1386
+ box-shadow: 0 0 0 1px #00D4D4;
1387
+ >svg {
1388
+ fill: #00bbbb;
1389
+ }
1390
+ >.dashicons {
1391
+ color: #00bbbb;
1392
+ }
1393
+ }
1394
+ &.active {
1395
+ border-color: #00bbbb;
1396
+ color: #00bbbb;
1397
+ box-shadow: inset 0 2px 5px -3px #00bbbb;
1398
+ &:focus {
1399
+ border-color: #00bbbb;
1400
+ color: #00bbbb;
1401
+ box-shadow: inset 0 2px 5px -3px #00bbbb;
1402
+ >svg {
1403
+ fill: #00bbbb;
1404
+ }
1405
+ >.dashicons {
1406
+ color: #00bbbb;
1407
+ }
1408
+ }
1409
+ &:hover {
1410
+ border-color: #00bbbb;
1411
+ color: #00bbbb;
1412
+ box-shadow: inset 0 2px 5px -3px #00bbbb;
1413
+ >svg {
1414
+ fill: #00bbbb;
1415
+ }
1416
+ >.dashicons {
1417
+ color: #00bbbb;
1418
+ }
1419
+ }
1420
+ >svg {
1421
+ fill: #00bbbb;
1422
+ }
1423
+ >.dashicons {
1424
+ color: #00bbbb;
1425
+ }
1426
+ }
1427
+ &-primary {
1428
+ &.active {
1429
+ background: #00D4D4;
1430
+ color: #fff;
1431
+ border-color: #008888;
1432
+ box-shadow: inset 0 2px 5px -3px black;
1433
+ &:focus {
1434
+ background: #00D4D4;
1435
+ color: #fff;
1436
+ border-color: #008888;
1437
+ box-shadow: inset 0 2px 5px -3px black;
1438
+ >svg {
1439
+ fill: #fff;
1440
+ }
1441
+ }
1442
+ &:hover {
1443
+ background: #00D4D4;
1444
+ color: #fff;
1445
+ border-color: #008888;
1446
+ box-shadow: inset 0 2px 5px -3px black;
1447
+ >svg {
1448
+ fill: #fff;
1449
+ }
1450
+ }
1451
+ >svg {
1452
+ fill: #fff;
1453
+ }
1454
+ }
1455
+ &[disabled] {
1456
+ color: #c7d1d1 !important;
1457
+ background: #22ffff !important;
1458
+ border-color: #22ffff !important;
1459
+ text-shadow: none !important;
1460
+ >svg {
1461
+ fill: #c7d1d1 !important;
1462
+ }
1463
+ }
1464
+ &.wapk-button-primary-disabled {
1465
+ color: #c7d1d1 !important;
1466
+ background: #22ffff !important;
1467
+ border-color: #22ffff !important;
1468
+ text-shadow: none !important;
1469
+ >svg {
1470
+ fill: #c7d1d1 !important;
1471
+ }
1472
+ }
1473
+ &.disabled {
1474
+ color: #c7d1d1 !important;
1475
+ background: #22ffff !important;
1476
+ border-color: #22ffff !important;
1477
+ text-shadow: none !important;
1478
+ >svg {
1479
+ fill: #c7d1d1 !important;
1480
+ }
1481
+ }
1482
+ &.wapk-button-hero {
1483
+ box-shadow: 0 2px 0 #00bbbb;
1484
+ &:focus {
1485
+ box-shadow: 0 2px 0 #00bbbb, 0 1px 0 #00c5c5, 0 0 2px 1px #00eeee;
1486
+ }
1487
+ &:active {
1488
+ box-shadow: inset 0 3px 0 #00a1a1;
1489
+ }
1490
+ &.active {
1491
+ box-shadow: inset 0 3px 0 #00a1a1;
1492
+ &:hover, &:focus {
1493
+ box-shadow: inset 0 3px 0 #00a1a1;
1494
+ }
1495
+ }
1496
+ }
1497
+ }
1498
+ &-group {
1499
+ >.wapk-button.active {
1500
+ border-color: #00D4D4;
1501
+ }
1502
+ }
1503
+ }
1504
+
1505
+ /* Button Sizes */
1506
+ .wapk-button.wapk-button-xl {
1507
+ height: 30px;
1508
+ line-height: 28px;
1509
+ padding: 0 12px 2px;
1510
+ }
1511
+ .wapk-button-group.wapk-button-xl {
1512
+ .wapk-button {
1513
+ height: 30px;
1514
+ line-height: 28px;
1515
+ padding: 0 12px 2px;
1516
+ }
1517
+ }
1518
+ .wapk-button.wapk-button-hero {
1519
+ font-size: 18px;
1520
+ height: 50px;
1521
+ line-height: 48px;
1522
+ padding: 0 36px;
1523
+ min-height: 46px;
1524
+ }
1525
+ .wapk-button-group.wapk-button-hero {
1526
+ .wapk-button {
1527
+ font-size: 18px;
1528
+ height: 50px;
1529
+ line-height: 48px;
1530
+ padding: 0 36px;
1531
+ min-height: 46px;
1532
+ }
1533
+ }
1534
+
1535
+ @media screen and (min-width: 782px) {
1536
+ th#status,
1537
+ th#provider {
1538
+ width: 80px;
1539
+ }
1540
+ th#type {
1541
+ width: 50px;
1542
+ }
1543
+ th#option_name {
1544
+ width: 100px;
1545
+ }
1546
+ td.option_name.column-option_name {
1547
+ >span {
1548
+ &:first-child {
1549
+ display: none;
1550
+ }
1551
+ }
1552
+ }
1553
+ th#last_updated {
1554
+ width: 90px;
1555
+ }
1556
+ th#view {
1557
+ width: 111px;
1558
+ }
1559
+ }
1560
+ @media screen and (min-width: 960px) {
1561
+ th#status, th#provider {
1562
+ width: 100px;
1563
+ }
1564
+ th#type {
1565
+ width: 80px;
1566
+ }
1567
+ th#option_name {
1568
+ width: 150px;
1569
+ }
1570
+ th#last_updated {
1571
+ width: 140px;
1572
+ }
1573
+ }
1574
+ @media screen and (max-width: 782px) {
1575
+ table.wf-info-table {
1576
+ margin-top: 10px;
1577
+ th {
1578
+ &:first-child {
1579
+ img {
1580
+ margin: 0 auto;
1581
+ display: block;
1582
+ }
1583
+ }
1584
+ }
1585
+ }
1586
+ .wapk-button.wapk-button-xl {
1587
+ padding: 6px 14px;
1588
+ line-height: normal;
1589
+ font-size: 14px;
1590
+ vertical-align: middle;
1591
+ height: auto;
1592
+ margin-bottom: 4px;
1593
+ }
1594
+ }
1595
+
1596
+ .wapk-feed-docs .wapk-feed-cta {
1597
+ margin: 0;
1598
+ }
1599
+
1600
+ .campaign_configurator {
1601
+ background: #FFF;
1602
+ padding: 20px 0;
1603
+ table {
1604
+ margin: 0 auto;
1605
+ width: 51%;
1606
+ min-width: 574px;
1607
+ border: none;
1608
+ box-shadow: none;
1609
+ }
1610
+ th {
1611
+ min-width: 120px;
1612
+ }
1613
+ }
1614
+
1615
+ @media screen and (max-width: 782px) {
1616
+ .campaign_configurator {
1617
+ padding: 0;
1618
+ table {
1619
+ width: auto;
1620
+ min-width: auto;
1621
+ max-width: 100%;
1622
+ }
1623
+ th {
1624
+ min-width: auto;
1625
+ }
1626
+ }
1627
+ }
1628
+
1629
+
1630
+ #wf-tab-content-config {
1631
+ td {
1632
+ > input:not([type="checkbox"]):not([type="radio"]),
1633
+ > select,
1634
+ > textarea {
1635
+ width: 100% !important;
1636
+ }
1637
+ }
1638
+ }
1639
+
1640
+ .woo-feed-filters {
1641
+ td {
1642
+ > div {
1643
+ &:nth-child(2n):not(.clear):not(.selectize) {
1644
+ width: 120px;
1645
+ display: block;
1646
+ }
1647
+ &:not(.clear) {
1648
+ float: left;
1649
+ margin-right: 10px;
1650
+ }
1651
+ }
1652
+ }
1653
+ tr {
1654
+ > td {
1655
+ &:first-child {
1656
+ width: 290px;
1657
+ padding-left: 40px;
1658
+ }
1659
+ }
1660
+ }
1661
+ }
1662
+
1663
+ .woo-feed-filters,
1664
+ .woo-feed-ftp {
1665
+ margin: 15px auto 25px;
1666
+ }
1667
+
admin/fonts/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/images/features/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/images/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/images/payment-options/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/js/fancy-select.js CHANGED
@@ -1,442 +1,521 @@
1
- /**!
2
- * WooFeed Fancy Select
3
- * @version 1.0.0
4
- * @copyright 2020 WebAppick
5
- * @author Kudratullah <mhamudul.hk@gmail.com>
6
- */
7
- (function ($, window, document ) {
8
- "use strict";
9
- /**
10
- * FancySelect Constructor
11
- * @param {jQuery|HTMLElement} $select
12
- * @param {Object} [options]
13
- * @constructor
14
- */
15
- let FancySelect = function ( $select, options ) {
16
- let self = this,
17
- defaults = {
18
- options: [],
19
- optgroups: [],
20
- items: [],
21
- placeholder: '',
22
- delimiter: ',',
23
- splitOn: null,
24
- persist: !0,
25
- diacritics: !0,
26
- create: !1,
27
- createOnBlur: !1,
28
- createFilter: null,
29
- highlight: !0,
30
- openOnFocus: !0,
31
- maxOptions: 1e3,
32
- maxItems: null,
33
- maxItemShow: 3,
34
- hideSelected: null,
35
- addPrecedence: !1,
36
- selectOnTab: !1,
37
- preload: !1,
38
- allowEmptyOption: !1,
39
- closeAfterSelect: !1,
40
- scrollDuration: 60,
41
- loadThrottle: 300,
42
- loadingClass: "loading",
43
- dataAttr: "data-data",
44
- optgroupField: "optgroup",
45
- valueField: "value",
46
- labelField: "text",
47
- disabledField: "disabled",
48
- optgroupLabelField: "label",
49
- optgroupValueField: "value",
50
- lockOptgroupOrder: !1,
51
- sortField: "$order",
52
- searchField: ["text"],
53
- searchConjunction: "and",
54
- mode: null,
55
- wrapperClass: "selectize-control",
56
- inputClass: "selectize-input",
57
- dropdownClass: "selectize-dropdown",
58
- dropdownContentClass: "selectize-dropdown-content",
59
- dropdownParent: null,
60
- copyClassesToDropdown: !0,
61
- render: {}
62
- },
63
- settings = $.extend( true, {}, defaults, options ),
64
- select = $select[0];
65
- select.fancySelect = self;
66
- self.order = 0;
67
- let computedStyle = window.getComputedStyle && window.getComputedStyle( select, null );
68
- let dir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;
69
- dir = dir || $select.parents('[dir]:first').attr('dir') || '';
70
- self.computedStyle = computedStyle;
71
- // for now, android support in general is too spotty to support validity
72
- const SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('input').validity;
73
- // helper (private) methods
74
- const debounce = function(fn, delay) {
75
- let timeout;
76
- return function() {
77
- let self = this;
78
- let args = arguments;
79
- window.clearTimeout(timeout);
80
- timeout = window.setTimeout(function() {
81
- fn.apply(self, args);
82
- }, delay);
83
- };
84
- };
85
- const hash_key = ( str ) => str + '';
86
- let optionsMap = {};
87
- const optHelper = {
88
- readData: function($el) {
89
- const data = self.dataAttr && $el.attr(self.dataAttr);
90
- if (typeof data === 'string' && data.length) {
91
- return JSON.parse(data);
92
- }
93
- return null;
94
- },
95
- addOption: function($option, group) {
96
- $option = $($option);
97
-
98
- const value = hash_key($option.val());
99
- if (!value && !settings.allowEmptyOption) return;
100
-
101
- // if the option already exists, it's probably been
102
- // duplicated in another optgroup. in this case, push
103
- // the current group to the "optgroup" property on the
104
- // existing option so that it's rendered in both places.
105
- if (optionsMap.hasOwnProperty(value)) {
106
- if (group) {
107
- const arr = optionsMap[value][field_optgroup];
108
- if (!arr) {
109
- optionsMap[value][field_optgroup] = group;
110
- } else if (!$.isArray(arr)) {
111
- optionsMap[value][field_optgroup] = [arr, group];
112
- } else {
113
- arr.push(group);
114
- }
115
- }
116
- return;
117
- }
118
-
119
- var option = optHelper.readData($option) || {};
120
- option[self.settings.labelField] = option[self.settings.labelField] || $option.text();
121
- option[self.settings.valueField] = option[self.settings.valueField] || value;
122
- option[self.settings.disabledField] = option[self.settings.disabledField] || $option.prop('disabled');
123
- option[self.settings.optgroupField] = option[self.settings.optgroupField] || group;
124
- option.$order = ++self.order;
125
-
126
- optionsMap[value] = option;
127
- self.settings.options.push(option);
128
-
129
- if ($option.is(':selected')) {
130
- self.settings.items.push(value);
131
- }
132
- },
133
- addGroup: function($optgroup) {
134
- var i, n, id, optgroup, $options;
135
-
136
- $optgroup = $($optgroup);
137
- id = $optgroup.attr('label');
138
-
139
- if (id) {
140
- optgroup = optHelper.readData($optgroup) || {};
141
- optgroup[self.settings.optgroupLabelField] = id;
142
- optgroup[self.settings.optgroupValueField] = id;
143
- optgroup[self.settings.disabledField] = $optgroup.prop('disabled');
144
- optgroup.$order = ++self.order;
145
- self.settings.optgroups.push(optgroup);
146
- }
147
-
148
- $options = $('option', $optgroup);
149
- for (i = 0, n = $options.length; i < n; i++) {
150
- optHelper.addOption($options[i], id);
151
- }
152
- },
153
- };
154
- // setup default state
155
- $.extend(self, {
156
- settings : settings,
157
- $select : $select,
158
- tabIndex : $select.attr('tabindex') || '',
159
- tagType : 1,
160
- rtl : /rtl/i.test(dir),
161
- multiple : $select.attr('multiple'),
162
- eventNS : '.FancySelect' + (++FancySelect.count),
163
- highlightedValue : null,
164
- isBlurring : false,
165
- isOpen : false,
166
- isDisabled : false,
167
- isRequired : $select.is('[required]'),
168
- isInvalid : false,
169
- isLocked : false,
170
- isFocused : false,
171
- isInputHidden : false,
172
- isSetup : false,
173
- isRendered : false,
174
- isShiftDown : false,
175
- isCmdDown : false,
176
- isCtrlDown : false,
177
- ignoreFocus : false,
178
- ignoreBlur : false,
179
- ignoreHover : false,
180
- hasOptions : false,
181
- currentResults : null,
182
- lastValue : '',
183
- caretPos : 0,
184
- loading : 0,
185
- loadedSearches : {},
186
-
187
- $activeOption : null,
188
- $activeItems : [],
189
-
190
- optgroups : {},
191
- options : {},
192
- userOptions : {},
193
- items : {},
194
- renderCache : {},
195
- onSearchChange : settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)
196
- });
197
-
198
- if ( '' === self.settings.placeholder ) {
199
- self.settings.placeholder = $select.attr('placeholder') || $select.attr('data-placeholder');
200
- if (!self.settings.placeholder && !self.settings.allowEmptyOption) {
201
- self.settings.placeholder = $select.children('option[value=""]').text();
202
- }
203
- }
204
-
205
- self.settings.maxItems = self.multiple ? null : 1;
206
-
207
- for (let i = 0, n = self.$select.children().length; i < n; i++) {
208
- let tagName = self.$select.children()[i].tagName.toLowerCase();
209
- if (tagName === 'optgroup') {
210
- optHelper.addGroup(self.$select.children()[i]);
211
- } else if (tagName === 'option') {
212
- optHelper.addOption(self.$select.children()[i]);
213
- }
214
- }
215
-
216
- self.$wrapper = $('<div class="fancy-picker">').addClass( $select.attr('class') );
217
- if ( self.computedStyle.hasOwnProperty('width') ) {
218
- self.$wrapper.css( { width: self.computedStyle.width } );
219
- }
220
- self.$outputWrapper = $('<div class="fancy-picker-picked">').appendTo( self.$wrapper );
221
- self.originalPlaceholder = $('<span class="fancy-picker-placeholder">').appendTo( self.$outputWrapper );
222
- self.dataPlaceholder = $('<span class="fancy-picker-data">').appendTo( self.$outputWrapper );
223
- self.dataCountPlaceholder = $('<span class="fancy-picker-count">').appendTo( self.$outputWrapper );
224
- self.$dropdown = $('<div class="fancy-picker-ui">').appendTo( self.$wrapper );
225
- self.$dropdownContent = $('<div class="fancy-picker-content">').appendTo( self.$dropdown );
226
-
227
- self.setup();
228
- };
229
- FancySelect.count = 0;
230
-
231
- // public methods
232
- $.extend(FancySelect.prototype, {
233
- /**
234
- * Creates all elements and sets up event bindings.
235
- */
236
- setup: function() {
237
- let self = this;
238
- self.revertSettings = {
239
- $children : self.$select.children().detach(),
240
- tabindex : self.$select.attr('tabindex')
241
- };
242
- self.$select.attr('tabindex', -1).hide().after(self.$wrapper);
243
- self.$select.data('FancySelect', self);
244
- self.$select.addClass('FancySelectInit');
245
- self.settings.items.sort();
246
- if ( self.preload ) {
247
- self.render();
248
- }
249
- self.updatePlaceholder();
250
- self.updateOriginalInput();
251
- self.$wrapper.on( 'click'+ self.eventNS, '.fancy-picker-picked', function( e ) {
252
- self.$select.trigger( 'show' );
253
- if ( ! self.isRendered ) {
254
- self.render();
255
- }
256
- self.$wrapper.toggleClass('active');
257
- self.$select.trigger( 'shown' );
258
- } );
259
- $(document).on( 'click' + self.eventNS, function( e ) {
260
- if(!$(e.target).closest(self.$wrapper).length) {
261
- self.$select.trigger( 'hide' );
262
- self.$wrapper.removeClass('active');
263
- self.$select.trigger( 'hidden' );
264
- }
265
- });
266
- self.$wrapper.on( 'click' + self.eventNS, '.fancy-picker-option:not(.disabled)', function( e ) {
267
- e.preventDefault();
268
- let current = $(this), selected = false, value = current.data('value');
269
- if ( self.multiple ) {
270
- if ( !current.hasClass( 'selected' ) ) {
271
- selected = true;
272
- current.addClass( 'selected' )
273
- } else current.removeClass( 'selected' );
274
-
275
- if ( selected ) {
276
- self.settings.items.push( value );
277
- } else {
278
- self.settings.items = self.settings.items.filter( x => x != value );
279
- }
280
- self.settings.items.sort();
281
- } else {
282
- self.$dropdownContent.find('.fancy-picker-option').not(current).removeClass('selected');
283
- current.addClass('selected');
284
- selected = true;
285
- self.settings.items = [ value ];
286
- self.$wrapper.removeClass('active');
287
- }
288
- self.updatePlaceholder();
289
- self.updateOriginalInput();
290
- });
291
- self.$select.trigger('initialize' );
292
- },
293
- updateOriginalInput: function( silent ) {
294
- let self = this, options = [], changed = false;
295
- silent = ( true === silent ) ? true : false;
296
- for ( let i = 0, n = self.settings.items.length; i < n; i++) {
297
- let selected = self.getSelectedOptionData( self.settings.items[i] );
298
- if ( selected ) {
299
- options.push('<option value="' + self.settings.items[i] + '" selected="selected">' + selected[self.settings.labelField] || '' + '</option>');
300
- changed = true;
301
- }
302
- }
303
- self.$select.html( options.join('') );
304
- if ( ! silent && changed ) {
305
- self.$select.trigger( 'change' );
306
- }
307
- },
308
- render: function() {
309
- let self = this;
310
- let dropdownItems = [];
311
- for ( let i = 0, n = self.settings.options.length; i < n; i++) {
312
- let option = self.settings.options[i],
313
- classes = self.isSelected( option[self.settings.valueField] ) ? 'fancy-picker-option selected' : 'fancy-picker-option';
314
- dropdownItems.push( `<div class="${classes}" data-value="${option[self.settings.valueField]}">${option[self.settings.labelField]}</div>` );
315
- }
316
- self.$dropdownContent.html(dropdownItems.join(''));
317
- self.$select.trigger( 'rendered' );
318
- self.isRendered = true;
319
- },
320
- updatePlaceholder: function() {
321
- let self = this;
322
-
323
- self.originalPlaceholder.text( self.settings.placeholder );
324
- if ( self.settings.items.length ) {
325
- self.originalPlaceholder.hide();
326
- } else {
327
- self.originalPlaceholder.show();
328
- }
329
- let placeholderData = [];
330
- let maxItemShow = self.settings.items.length > self.settings.maxItemShow ? self.settings.maxItemShow - 1 : self.settings.maxItemShow;
331
- self.settings.items.slice( 0, maxItemShow ).forEach( item => {
332
- let data = self.getSelectedOptionData( item );
333
- if( data ) placeholderData.push( `<span>${data[self.settings.labelField]}</span>` );
334
- });
335
- self.dataPlaceholder.html(placeholderData.join( `<span class="fancy-picker-separator">${self.settings.delimiter}</span> ` ));
336
- if( self.settings.items.length > self.settings.maxItemShow ) {
337
- let title = [];
338
- self.settings.items.forEach( item => {
339
- let data = self.getSelectedOptionData( item );
340
- if( data ) title.push( data[self.settings.labelField] );
341
- });
342
- self.dataCountPlaceholder.attr('title', title.join( self.settings.delimiter.trim() + ' ' ) );
343
- self.dataCountPlaceholder.html( '+' + ( self.settings.items.length - maxItemShow ) + ' More &hellip;' )
344
- } else {
345
- self.dataCountPlaceholder.removeAttr( 'title' );
346
- self.dataCountPlaceholder.html('');
347
- }
348
- self.$select.trigger( 'placeholderChanged' )
349
- },
350
- getSelectedOptionData: function( has_key ) {
351
- let self = this;
352
- let selected = self.settings.options.filter( (x)=> x[self.settings.valueField] == has_key );
353
- return selected.length ? selected[0]: false;
354
- },
355
- isSelected: function( has_key ) {
356
- let self = this;
357
- return self.settings.items.filter( x => x == has_key ).length > 0;
358
- },
359
- /**
360
- * Completely destroys the control and
361
- * unbinds all event listeners so that it can
362
- * be garbage collected.
363
- */
364
- destroy: function() {
365
- let self = this;
366
- self.$select.trigger('destroy');
367
- self.trigger('destroy');
368
- self.off();
369
-
370
- self.$select
371
- .html('')
372
- .append(self.revertSettings.$children)
373
- .removeAttr('tabindex')
374
- .removeClass('selectized')
375
- .attr({tabindex: self.revertSettings.tabindex})
376
- .show();
377
-
378
- self.$control_input.removeData('grow');
379
- self.$select.removeData('selectize');
380
-
381
- if (--FancySelect.count == 0 && FancySelect.$testInput) {
382
- FancySelect.$testInput.remove();
383
- FancySelect.$testInput = undefined;
384
- }
385
-
386
- // this doesn't fire on create feed. as fields are loaded via ajax.
387
- // add custom event with the form object (with namespace)
388
- // trigger event on form.init()
389
- // remove previous listener on from.init(). first. so multiple listener not executed.
390
- // see selectize https://github.com/selectize/selectize.js/blob/master/src/selectize.js#L2097
391
- // add event listener here...
392
-
393
- $(window).off(self.eventNS);
394
- $(document).off(self.eventNS);
395
- $(document.body).off(self.eventNS);
396
- delete self.$select[0].fancySelect;
397
- },
398
-
399
- /**
400
- * MicroEvent - to make any js object an event emitter
401
- *
402
- * - pure javascript - server compatible, browser compatible
403
- * - dont rely on the browser doms
404
- * - super simple - you get it immediatly, no mistery, no magic involved
405
- *
406
- * @author Jerome Etienne (https://github.com/jeromeetienne)
407
- */
408
- on: function(event, fct){
409
- this._events = this._events || {};
410
- this._events[event] = this._events[event] || [];
411
- this._events[event].push(fct);
412
- },
413
- off: function(event, fct){
414
- const n = arguments.length;
415
- if (n === 0) return delete this._events;
416
- if (n === 1) return delete this._events[event];
417
-
418
- this._events = this._events || {};
419
- if (event in this._events === false) return;
420
- this._events[event].splice(this._events[event].indexOf(fct), 1);
421
- },
422
- trigger: function(event /* , args... */){
423
- this._events = this._events || {};
424
- if (event in this._events === false) return;
425
- for (let i = 0; i < this._events[event].length; i++){
426
- this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));
427
- }
428
- }
429
- });
430
- /**
431
- * jQuery Wrapper
432
- * @param {Object} [user_options]
433
- * @returns {jquery|HTMLElement}
434
- */
435
- $.fn.fancySelect = function( user_options ) {
436
- return this.each(function() {
437
- if (this.fancySelect) return;
438
- if ( 'select' !== this.tagName.toLowerCase() ) return;
439
- new FancySelect( $(this), user_options )
440
- });
441
- };
442
- })(jQuery, window, document);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ /**!
3
+ * WooFeed Fancy Select
4
+ * @version 1.0.0
5
+ * @copyright 2020 WebAppick
6
+ * @author Kudratullah <mhamudul.hk@gmail.com>
7
+ */
8
+
9
+ (function($, window, document) {
10
+ // @TODO if multiple select has required attribute and only one item is selected then return false (user should not able to deselect the last one).
11
+ // @TODO make the place holder with input field like selectize so we can set the required attribute if the select has required attribute, which can be useful for showing required warning.
12
+ "use strict";
13
+
14
+ /**
15
+ * FancySelect Constructor
16
+ * @param {jQuery|HTMLElement} $select
17
+ * @param {Object} [options]
18
+ * @constructor
19
+ */
20
+ let FancySelect = function FancySelect($select, options) {
21
+ let self = this,
22
+ defaults = {
23
+ options: [],
24
+ optgroups: [],
25
+ items: [],
26
+ placeholder: '',
27
+ delimiter: ',',
28
+ splitOn: null,
29
+ persist: !0,
30
+ diacritics: !0,
31
+ create: !1,
32
+ createOnBlur: !1,
33
+ createFilter: null,
34
+ highlight: !0,
35
+ openOnFocus: !0,
36
+ maxOptions: 1e3,
37
+ maxItems: null,
38
+ maxItemShow: 3,
39
+ hideSelected: null,
40
+ addPrecedence: !1,
41
+ selectOnTab: !1,
42
+ preload: !1,
43
+ allowEmptyOption: !1,
44
+ closeAfterSelect: !1,
45
+ scrollDuration: 60,
46
+ loadThrottle: 300,
47
+ loadingClass: "loading",
48
+ dataAttr: "data-data",
49
+ optgroupField: "optgroup",
50
+ valueField: "value",
51
+ labelField: "text",
52
+ disabledField: "disabled",
53
+ optgroupLabelField: "label",
54
+ optgroupValueField: "value",
55
+ lockOptgroupOrder: !1,
56
+ sortField: "$order",
57
+ searchField: ["text"],
58
+ searchConjunction: "and",
59
+ mode: null,
60
+ wrapperClass: "selectize-control",
61
+ inputClass: "selectize-input",
62
+ dropdownClass: "selectize-dropdown",
63
+ dropdownContentClass: "selectize-dropdown-content",
64
+ dropdownParent: null,
65
+ copyClassesToDropdown: !0,
66
+ render: {}
67
+ },
68
+ settings = $.extend(true, {}, defaults, options),
69
+ select = $select[0];
70
+ select.fancySelect = self;
71
+ self.order = 0;
72
+ let computedStyle = window.getComputedStyle && window.getComputedStyle(select, null);
73
+ let dir = computedStyle ? computedStyle.getPropertyValue('direction') : select.currentStyle && select.currentStyle.direction;
74
+ dir = dir || $select.parents('[dir]:first').attr('dir') || '';
75
+ self.computedStyle = computedStyle; // for now, android support in general is too spotty to support validity
76
+
77
+ const SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !! document.createElement('input').validity; // helper (private) methods
78
+
79
+ const debounce = function (fn, delay) {
80
+ let timeout;
81
+ return function() {
82
+ let self = this;
83
+ let args = arguments;
84
+ window.clearTimeout(timeout);
85
+ timeout = window.setTimeout(function() {
86
+ fn.apply(self, args);
87
+ }, delay);
88
+ };
89
+ };
90
+
91
+ let optionsMap = {},
92
+ optHelper = {
93
+ readData: function ($el) {
94
+ let data = self.dataAttr && $el.attr(self.dataAttr);
95
+
96
+ if (typeof data === 'string' && data.length) {
97
+ return JSON.parse(data);
98
+ }
99
+
100
+ return null;
101
+ },
102
+ addOption: function ($option, group) {
103
+ $option = $($option);
104
+ let value = self.hash_key($option.val());
105
+ if (!value && !settings.allowEmptyOption) return; // if the option already exists, it's probably been
106
+ // duplicated in another optgroup. in this case, push
107
+ // the current group to the "optgroup" property on the
108
+ // existing option so that it's rendered in both places.
109
+
110
+ if (optionsMap.hasOwnProperty(value)) {
111
+ if (group) {
112
+ let arr = optionsMap[value][field_optgroup];
113
+
114
+ if (!arr) {
115
+ optionsMap[value][field_optgroup] = group;
116
+ } else if (!$.isArray(arr)) {
117
+ optionsMap[value][field_optgroup] = [arr, group];
118
+ } else {
119
+ arr.push(group);
120
+ }
121
+ }
122
+
123
+ return;
124
+ }
125
+
126
+ let option = optHelper.readData($option) || {};
127
+ option[self.settings.labelField] = option[self.settings.labelField] || $option.text();
128
+ option[self.settings.valueField] = option[self.settings.valueField] || value;
129
+ option[self.settings.disabledField] = option[self.settings.disabledField] || $option.prop('disabled');
130
+ option[self.settings.optgroupField] = option[self.settings.optgroupField] || group;
131
+ option.$order = ++self.order;
132
+ optionsMap[value] = option;
133
+ self.settings.options.push(option);
134
+
135
+ if ($option.is(':selected')) {
136
+ self.settings.items.push(option);
137
+ }
138
+ },
139
+ addGroup: function ($optgroup) {
140
+ let i, n, id, optgroup, $options;
141
+ $optgroup = $($optgroup);
142
+ id = $optgroup.attr('label');
143
+
144
+ if (id) {
145
+ optgroup = optHelper.readData($optgroup) || {};
146
+ optgroup[self.settings.optgroupLabelField] = id;
147
+ optgroup[self.settings.optgroupValueField] = id;
148
+ optgroup[self.settings.disabledField] = $optgroup.prop('disabled');
149
+ optgroup.$order = ++self.order;
150
+ self.settings.optgroups.push(optgroup);
151
+ }
152
+
153
+ $options = $('option', $optgroup);
154
+
155
+ for (i = 0, n = $options.length; i < n; i++) {
156
+ optHelper.addOption($options[i], id);
157
+ }
158
+ }
159
+ }; // setup default state
160
+
161
+ $.extend(self, {
162
+ settings: settings,
163
+ $select: $select,
164
+ tabIndex: $select.attr('tabindex') || '',
165
+ tagType: 1,
166
+ rtl: /rtl/i.test(dir),
167
+ multiple: $select.attr('multiple'),
168
+ eventNS: '.FancySelect' + ++FancySelect.count,
169
+ highlightedValue: null,
170
+ isBlurring: false,
171
+ isOpen: false,
172
+ isDisabled: false,
173
+ isRequired: $select.is('[required]'),
174
+ isInvalid: false,
175
+ isLocked: false,
176
+ isFocused: false,
177
+ isInputHidden: false,
178
+ isSetup: false,
179
+ isRendered: false,
180
+ isShiftDown: false,
181
+ isCmdDown: false,
182
+ isCtrlDown: false,
183
+ ignoreFocus: false,
184
+ ignoreBlur: false,
185
+ ignoreHover: false,
186
+ hasOptions: false,
187
+ currentResults: null,
188
+ lastValue: '',
189
+ caretPos: 0,
190
+ loading: 0,
191
+ loadedSearches: {},
192
+ $activeOption: null,
193
+ $activeItems: [],
194
+ optgroups: {},
195
+ options: {},
196
+ userOptions: {},
197
+ items: {},
198
+ renderCache: {},
199
+ onSearchChange: settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)
200
+ });
201
+
202
+ if ('' === self.settings.placeholder) {
203
+ self.settings.placeholder = $select.attr('placeholder') || $select.attr('data-placeholder');
204
+
205
+ if (!self.settings.placeholder && !self.settings.allowEmptyOption) {
206
+ self.settings.placeholder = $select.children('option[value=""]').text();
207
+ }
208
+ }
209
+
210
+ self.settings.maxItems = self.multiple ? null : 1;
211
+
212
+ for (let i = 0, n = self.$select.children().length; i < n; i++) {
213
+ let tagName = self.$select.children()[i].tagName.toLowerCase();
214
+
215
+ if (tagName === 'optgroup') {
216
+ optHelper.addGroup(self.$select.children()[i]);
217
+ } else if (tagName === 'option') {
218
+ optHelper.addOption(self.$select.children()[i]);
219
+ }
220
+ }
221
+
222
+ self.$wrapper = $('<div class="fancy-picker">').addClass($select.attr('class'));
223
+
224
+ if (self.computedStyle.hasOwnProperty('width')) {
225
+ self.$wrapper.css({
226
+ width: self.computedStyle.width
227
+ });
228
+ }
229
+
230
+ self.$outputWrapper = $('<div class="fancy-picker-picked">').appendTo(self.$wrapper);
231
+ self.originalPlaceholder = $('<span class="fancy-picker-placeholder">').appendTo(self.$outputWrapper);
232
+ self.dataPlaceholder = $('<span class="fancy-picker-data">').appendTo(self.$outputWrapper);
233
+ self.dataCountPlaceholder = $('<span class="fancy-picker-count">').appendTo(self.$outputWrapper);
234
+ self.$dropdown = $('<div class="fancy-picker-ui">').appendTo(self.$wrapper);
235
+ self.$dropdownContent = $('<div class="fancy-picker-content">').appendTo(self.$dropdown);
236
+ self.setup();
237
+ };
238
+
239
+ FancySelect.count = 0;
240
+ // public methods.
241
+ $.extend(FancySelect.prototype, {
242
+ /**
243
+ * Creates all elements and sets up event bindings.
244
+ * @return {void}
245
+ */
246
+ setup: function () {
247
+ let self = this;
248
+ self.revertSettings = {
249
+ $children: self.$select.children().detach(),
250
+ tabindex: self.$select.attr('tabindex')
251
+ };
252
+ self.$select.attr('tabindex', -1).hide().after(self.$wrapper);
253
+ self.$select.data('FancySelect', self);
254
+ self.$select.addClass('FancySelectInit');
255
+
256
+ self.settings.items.sort( ( a, b ) => a[self.settings.sortField] - b[self.settings.sortField] );
257
+
258
+
259
+ if (self.preload) {
260
+ self.render();
261
+ }
262
+
263
+ self.updatePlaceholder();
264
+ self.updateOriginalInput();
265
+
266
+ self.$wrapper.on('click' + self.eventNS, '.fancy-picker-picked', function(e) {
267
+ self.$select.trigger('show');
268
+
269
+ if (!self.isRendered) {
270
+ self.render();
271
+ }
272
+
273
+ self.$wrapper.toggleClass('active');
274
+ self.$select.trigger('shown');
275
+ });
276
+ $(document).on('click' + self.eventNS, function(e) {
277
+ if (!$(e.target).closest(self.$wrapper).length) {
278
+ self.$select.trigger('hide');
279
+ self.$wrapper.removeClass('active');
280
+ self.$select.trigger('hidden');
281
+ }
282
+ });
283
+ self.$wrapper.on('click' + self.eventNS, '.fancy-picker-option:not(.disabled)', function(e) {
284
+ e.preventDefault();
285
+ let current = $(this),
286
+ selected = false,
287
+ value = self.hash_key(current.data('value'));
288
+
289
+ if (self.multiple) {
290
+ if (!current.hasClass('selected')) {
291
+ selected = true;
292
+ current.addClass('selected');
293
+ } else current.removeClass('selected');
294
+
295
+ if (selected) {
296
+ self.settings.items.push( self.getSelectedOptionData( value ) );
297
+ } else {
298
+ self.settings.items = self.settings.items.filter( x => x[self.settings.valueField] !== value );
299
+ }
300
+
301
+ self.settings.items.sort( ( a, b ) => a[self.settings.sortField] - b[self.settings.sortField] );
302
+ } else {
303
+ self.$dropdownContent.find('.fancy-picker-option').not(current).removeClass('selected');
304
+ current.addClass('selected');
305
+ selected = true;
306
+ self.settings.items = [ self.getSelectedOptionData( value ) ];
307
+ self.$wrapper.removeClass('active');
308
+ }
309
+
310
+ self.updatePlaceholder();
311
+ self.updateOriginalInput();
312
+ });
313
+ $(window).on('resize' + self.eventNS, function() {
314
+ let computedStyle = window.getComputedStyle && window.getComputedStyle(self.$select[0], null);
315
+
316
+ if (computedStyle.hasOwnProperty('width')) {
317
+ self.$wrapper.css({
318
+ width: computedStyle.width
319
+ });
320
+ }
321
+ });
322
+ self.$select.trigger('initialize');
323
+ },
324
+ /**
325
+ * Render The FancySelect UI
326
+ * @return {void}
327
+ */
328
+ render: function () {
329
+ let self = this,
330
+ dropdownItems = [];
331
+ const optgroup = self.settings.optgroups;
332
+ const options = self.settings.options;
333
+ const optClass = ( value ) => self.isSelected(value) ? 'fancy-picker-option selected' : 'fancy-picker-option';
334
+ if ( optgroup.length ) {
335
+ for ( let i = 0; i < optgroup.length; i++ ) {
336
+ dropdownItems.push( `<div class="fancy-picker-option-group">` );
337
+ dropdownItems.push( `<div class="fancy-picker-option-group-label">${optgroup[i][self.settings.labelField]}</div>` );
338
+ const group_options = options.filter( item => item[self.settings.optgroupField] === optgroup[i][self.settings.valueField]);
339
+ for (let ii = 0; ii < group_options.length; ii++ ) {
340
+ let option = group_options[i];
341
+ dropdownItems.push( `<div class="${optClass( option[self.settings.valueField] )}" data-value="${option[self.settings.valueField]}">${option[self.settings.labelField]}</div>` );
342
+ }
343
+ dropdownItems.push( `</div>` );
344
+ }
345
+ } else {
346
+ for (let i = 0; i < options.length; i++) {
347
+ let option = options[i];
348
+ dropdownItems.push( `<div class="${optClass( option[self.settings.valueField] )}" data-value="${option[self.settings.valueField]}">${option[self.settings.labelField]}</div>` );
349
+ }
350
+ }
351
+
352
+ self.$dropdownContent.html(dropdownItems.join(''));
353
+ self.$select.trigger('rendered');
354
+ self.isRendered = true;
355
+ },
356
+ /**
357
+ * Set Placeholder & Update Selected Data Placeholder
358
+ * @return {FancySelect}
359
+ */
360
+ updatePlaceholder: function () {
361
+ let self = this,
362
+ placeholderData = [];
363
+ const items = self.settings.items;
364
+ const maxItemShow = items.length > self.settings.maxItemShow ? self.settings.maxItemShow - 1 : self.settings.maxItemShow;
365
+ self.originalPlaceholder.text(self.settings.placeholder);
366
+
367
+ if (items.length) {
368
+ self.originalPlaceholder.hide();
369
+ } else {
370
+ self.originalPlaceholder.show();
371
+ }
372
+
373
+ items.slice(0, maxItemShow).forEach( (item) => {
374
+ placeholderData.push( `<span>${item[self.settings.labelField]}</span>` );
375
+ });
376
+ self.dataPlaceholder.html( placeholderData.join( `<span class="fancy-picker-separator">${self.settings.delimiter}</span>` ) );
377
+
378
+ if (items.length > self.settings.maxItemShow) {
379
+ let title = [];
380
+ items.forEach( (item) => {
381
+ title.push(item[self.settings.labelField]);
382
+ });
383
+ self.dataCountPlaceholder.attr('title', title.join(self.settings.delimiter.trim() + ' '));
384
+ self.dataCountPlaceholder.html('+' + (items.length - maxItemShow) + ' More &hellip;');
385
+ } else {
386
+ self.dataCountPlaceholder.removeAttr('title');
387
+ self.dataCountPlaceholder.html('');
388
+ }
389
+
390
+ self.$select.trigger('placeholderChanged');
391
+ return self;
392
+ },
393
+ /**
394
+ * Update The Original Select Tag
395
+ * @param {boolean} ?silent
396
+ * @return {FancySelect}
397
+ */
398
+ updateOriginalInput: function (silent) {
399
+ let self = this,
400
+ options = [],
401
+ changed = false;
402
+ silent = true === silent ? true : false;
403
+ const items = self.settings.items;
404
+ for (let i = 0; i < items.length; i++) {
405
+ options.push('<option value="' + items[i][self.settings.valueField] + '" selected="selected">' + items[i][self.settings.labelField] || '' + '</option>');
406
+ changed = true;
407
+ }
408
+
409
+ self.$select.html(options.join(''));
410
+
411
+ if (!silent && changed) {
412
+ self.$select.trigger('change');
413
+ }
414
+ return self;
415
+ },
416
+ /**
417
+ * Get Selected Option Data (value, label, etc.)
418
+ * @param {string} hash_key
419
+ * @return {object|boolean}
420
+ */
421
+ getSelectedOptionData: function (hash_key) {
422
+ let self = this,
423
+ selected = self.settings.options.filter( x => x[self.settings.valueField] === hash_key );
424
+ return selected.length ? selected[0] : false;
425
+ },
426
+ /**
427
+ * Check if input is selected (in the items list )
428
+ * @param {string} hash_key
429
+ * @return {boolean}
430
+ */
431
+ isSelected: function (hash_key) {
432
+ let self = this;
433
+ return self.settings.items.filter( x => x[self.settings.valueField] === hash_key ).length > 0;
434
+ },
435
+ /**
436
+ * Convert input to it's best string representation.
437
+ * @param {string|*} input
438
+ * @return {string}
439
+ */
440
+ hash_key: (input) => input + '',
441
+ /**
442
+ * Completely destroys the control and
443
+ * unbinds all event listeners so that it can
444
+ * be garbage collected.
445
+ */
446
+ destroy: function () {
447
+ let self = this;
448
+ self.$select.trigger('destroy');
449
+ self.trigger('destroy');
450
+ self.off();
451
+ self.$select
452
+ .html('')
453
+ .append(self.revertSettings.$children)
454
+ .removeAttr('tabindex')
455
+ .removeClass('FancySelectInit')
456
+ .attr({tabindex: self.revertSettings.tabindex})
457
+ .show();
458
+ self.$select.removeData('FancySelect');
459
+ self.$wrapper.remove();
460
+
461
+ if (--FancySelect.count === 0 && FancySelect.$testInput) {
462
+ FancySelect.$testInput.remove();
463
+ FancySelect.$testInput = undefined;
464
+ } // this doesn't fire on create feed. as fields are loaded via ajax.
465
+ // add custom event with the form object (with namespace)
466
+ // trigger event on form.init()
467
+ // remove previous listener on from.init(). first. so multiple listener not executed.
468
+ // see selectize https://github.com/selectize/selectize.js/blob/master/src/selectize.js#L2097
469
+ // add event listener here...
470
+
471
+
472
+ $(window).off(self.eventNS);
473
+ $(document).off(self.eventNS);
474
+ $(document.body).off(self.eventNS);
475
+ delete self.$select[0].fancySelect;
476
+ },
477
+
478
+ });
479
+
480
+ /**
481
+ * MicroEvent - to make any js object an event emitter
482
+ *
483
+ * - pure javascript - server compatible, browser compatible
484
+ * - dont rely on the browser doms
485
+ * - super simple - you get it immediatly, no mistery, no magic involved
486
+ *
487
+ * @author Jerome Etienne (https://github.com/jeromeetienne)
488
+ * @link https://github.com/jeromeetienne/microevent.js
489
+ */
490
+ $.extend(FancySelect.prototype, {
491
+ bind : function(event, fct){
492
+ this._events = this._events || {};
493
+ this._events[event] = this._events[event] || [];
494
+ this._events[event].push(fct);
495
+ },
496
+ unbind : function(event, fct){
497
+ this._events = this._events || {};
498
+ if( event in this._events === false ) return;
499
+ this._events[event].splice(this._events[event].indexOf(fct), 1);
500
+ },
501
+ trigger : function(event /* , args... */){
502
+ this._events = this._events || {};
503
+ if( event in this._events === false ) return;
504
+ for(let i = 0; i < this._events[event].length; i++){
505
+ this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));
506
+ }
507
+ }
508
+ });
509
+ /**
510
+ * jQuery Wrapper
511
+ * @param {Object} [user_options]
512
+ * @returns {jquery|HTMLElement}
513
+ */
514
+ $.fn.fancySelect = function(user_options) {
515
+ return this.each(function() {
516
+ if (this.fancySelect) return;
517
+ if ('select' !== this.tagName.toLowerCase()) return;
518
+ new FancySelect($(this), user_options);
519
+ });
520
+ };
521
+ })(jQuery, window, document);
admin/js/fancy-select.min.js CHANGED
@@ -1,7 +1,2 @@
1
- /**!
2
- * WooFeed Fancy Select
3
- * @version 1.0.0
4
- * @copyright 2020 WebAppick
5
- * @author Kudratullah <mhamudul.hk@gmail.com>
6
- */
7
- !function(v,f,m){"use strict";function $(e,t){var r=this,l=v.extend(!0,{},{options:[],optgroups:[],items:[],placeholder:"",delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,maxItemShow:3,hideSelected:null,addPrecedence:!1,selectOnTab:!1,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,scrollDuration:60,loadThrottle:300,loadingClass:"loading",dataAttr:"data-data",optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"selectize-control",inputClass:"selectize-input",dropdownClass:"selectize-dropdown",dropdownContentClass:"selectize-dropdown-content",dropdownParent:null,copyClassesToDropdown:!0,render:{}},t),i=e[0];(i.fancySelect=r).order=0;var s=f.getComputedStyle&&f.getComputedStyle(i,null),n=s?s.getPropertyValue("direction"):input.currentStyle&&input.currentStyle.direction;n=n||e.parents("[dir]:first").attr("dir")||"",r.computedStyle=s,/android/i.test(f.navigator.userAgent)||m.createElement("input").validity;var a,o,d,p={},c={readData:function(e){var t=r.dataAttr&&e.attr(r.dataAttr);return"string"==typeof t&&t.length?JSON.parse(t):null},addOption:function(e,t){e=v(e);var i=e.val()+"";if(i||l.allowEmptyOption)if(p.hasOwnProperty(i)){if(t){var s=p[i][field_optgroup];s?v.isArray(s)?s.push(t):p[i][field_optgroup]=[s,t]:p[i][field_optgroup]=t}}else{var n=c.readData(e)||{};n[r.settings.labelField]=n[r.settings.labelField]||e.text(),n[r.settings.valueField]=n[r.settings.valueField]||i,n[r.settings.disabledField]=n[r.settings.disabledField]||e.prop("disabled"),n[r.settings.optgroupField]=n[r.settings.optgroupField]||t,n.$order=++r.order,p[i]=n,r.settings.options.push(n),e.is(":selected")&&r.settings.items.push(i)}},addGroup:function(e){var t,i,s,n,l;for((s=(e=v(e)).attr("label"))&&((n=c.readData(e)||{})[r.settings.optgroupLabelField]=s,n[r.settings.optgroupValueField]=s,n[r.settings.disabledField]=e.prop("disabled"),n.$order=++r.order,r.settings.optgroups.push(n)),t=0,i=(l=v("option",e)).length;t<i;t++)c.addOption(l[t],s)}};v.extend(r,{settings:l,$select:e,tabIndex:e.attr("tabindex")||"",tagType:1,rtl:/rtl/i.test(n),multiple:e.attr("multiple"),eventNS:".FancySelect"+ ++$.count,highlightedValue:null,isBlurring:!1,isOpen:!1,isDisabled:!1,isRequired:e.is("[required]"),isInvalid:!1,isLocked:!1,isFocused:!1,isInputHidden:!1,isSetup:!1,isRendered:!1,isShiftDown:!1,isCmdDown:!1,isCtrlDown:!1,ignoreFocus:!1,ignoreBlur:!1,ignoreHover:!1,hasOptions:!1,currentResults:null,lastValue:"",caretPos:0,loading:0,loadedSearches:{},$activeOption:null,$activeItems:[],optgroups:{},options:{},userOptions:{},items:{},renderCache:{},onSearchChange:null===l.loadThrottle?r.onSearchChange:(a=r.onSearchChange,o=l.loadThrottle,function(){var e=this,t=arguments;f.clearTimeout(d),d=f.setTimeout(function(){a.apply(e,t)},o)})}),""===r.settings.placeholder&&(r.settings.placeholder=e.attr("placeholder")||e.attr("data-placeholder"),r.settings.placeholder||r.settings.allowEmptyOption||(r.settings.placeholder=e.children('option[value=""]').text())),r.settings.maxItems=r.multiple?null:1;for(var u=0,g=r.$select.children().length;u<g;u++){var h=r.$select.children()[u].tagName.toLowerCase();"optgroup"===h?c.addGroup(r.$select.children()[u]):"option"===h&&c.addOption(r.$select.children()[u])}r.$wrapper=v('<div class="fancy-picker">').addClass(e.attr("class")),r.computedStyle.hasOwnProperty("width")&&r.$wrapper.css({width:r.computedStyle.width}),r.$outputWrapper=v('<div class="fancy-picker-picked">').appendTo(r.$wrapper),r.originalPlaceholder=v('<span class="fancy-picker-placeholder">').appendTo(r.$outputWrapper),r.dataPlaceholder=v('<span class="fancy-picker-data">').appendTo(r.$outputWrapper),r.dataCountPlaceholder=v('<span class="fancy-picker-count">').appendTo(r.$outputWrapper),r.$dropdown=v('<div class="fancy-picker-ui">').appendTo(r.$wrapper),r.$dropdownContent=v('<div class="fancy-picker-content">').appendTo(r.$dropdown),r.setup()}$.count=0,v.extend($.prototype,{setup:function(){var n=this;n.revertSettings={$children:n.$select.children().detach(),tabindex:n.$select.attr("tabindex")},n.$select.attr("tabindex",-1).hide().after(n.$wrapper),n.$select.data("FancySelect",n),n.$select.addClass("FancySelectInit"),n.settings.items.sort(),n.preload&&n.render(),n.updatePlaceholder(),n.updateOriginalInput(),n.$wrapper.on("click"+n.eventNS,".fancy-picker-picked",function(e){n.$select.trigger("show"),n.isRendered||n.render(),n.$wrapper.toggleClass("active"),n.$select.trigger("shown")}),v(m).on("click"+n.eventNS,function(e){v(e.target).closest(n.$wrapper).length||(n.$select.trigger("hide"),n.$wrapper.removeClass("active"),n.$select.trigger("hidden"))}),n.$wrapper.on("click"+n.eventNS,".fancy-picker-option:not(.disabled)",function(e){e.preventDefault();var t=v(this),i=!1,s=t.data("value");n.multiple?(t.hasClass("selected")?t.removeClass("selected"):(i=!0,t.addClass("selected")),i?n.settings.items.push(s):n.settings.items=n.settings.items.filter(function(e){return e!=s}),n.settings.items.sort()):(n.$dropdownContent.find(".fancy-picker-option").not(t).removeClass("selected"),t.addClass("selected"),i=!0,n.settings.items=[s],n.$wrapper.removeClass("active")),n.updatePlaceholder(),n.updateOriginalInput()}),n.$select.trigger("initialize")},updateOriginalInput:function(e){var t=this,i=[],s=!1;e=!0===e;for(var n=0,l=t.settings.items.length;n<l;n++){var r=t.getSelectedOptionData(t.settings.items[n]);r&&(i.push('<option value="'+t.settings.items[n]+'" selected="selected">'+r[t.settings.labelField]||"</option>"),s=!0)}t.$select.html(i.join("")),!e&&s&&t.$select.trigger("change")},render:function(){for(var e=this,t=[],i=0,s=e.settings.options.length;i<s;i++){var n=e.settings.options[i],l=e.isSelected(n[e.settings.valueField])?"fancy-picker-option selected":"fancy-picker-option";t.push('<div class="'+l+'" data-value="'+n[e.settings.valueField]+'">'+n[e.settings.labelField]+"</div>")}e.$dropdownContent.html(t.join("")),e.$select.trigger("rendered"),e.isRendered=!0},updatePlaceholder:function(){var i=this;i.originalPlaceholder.text(i.settings.placeholder),i.settings.items.length?i.originalPlaceholder.hide():i.originalPlaceholder.show();var s=[],e=i.settings.items.length>i.settings.maxItemShow?i.settings.maxItemShow-1:i.settings.maxItemShow;if(i.settings.items.slice(0,e).forEach(function(e){var t=i.getSelectedOptionData(e);t&&s.push("<span>"+t[i.settings.labelField]+"</span>")}),i.dataPlaceholder.html(s.join('<span class="fancy-picker-separator">'+i.settings.delimiter+"</span> ")),i.settings.items.length>i.settings.maxItemShow){var n=[];i.settings.items.forEach(function(e){var t=i.getSelectedOptionData(e);t&&n.push(t[i.settings.labelField])}),i.dataCountPlaceholder.attr("title",n.join(i.settings.delimiter.trim()+" ")),i.dataCountPlaceholder.html("+"+(i.settings.items.length-e)+" More &hellip;")}else i.dataCountPlaceholder.removeAttr("title"),i.dataCountPlaceholder.html("");i.$select.trigger("placeholderChanged")},getSelectedOptionData:function(t){var i=this,e=i.settings.options.filter(function(e){return e[i.settings.valueField]==t});return!!e.length&&e[0]},isSelected:function(t){return 0<this.settings.items.filter(function(e){return e==t}).length},destroy:function(){var e=this;e.$select.trigger("destroy"),e.trigger("destroy"),e.off(),e.$select.html("").append(e.revertSettings.$children).removeAttr("tabindex").removeClass("selectized").attr({tabindex:e.revertSettings.tabindex}).show(),e.$control_input.removeData("grow"),e.$select.removeData("selectize"),0==--$.count&&$.$testInput&&($.$testInput.remove(),$.$testInput=void 0),v(f).off(e.eventNS),v(m).off(e.eventNS),v(m.body).off(e.eventNS),delete e.$select[0].fancySelect},on:function(e,t){this._events=this._events||{},this._events[e]=this._events[e]||[],this._events[e].push(t)},off:function(e,t){var i=arguments.length;return 0===i?delete this._events:1===i?delete this._events[e]:(this._events=this._events||{},void(e in this._events!=!1&&this._events[e].splice(this._events[e].indexOf(t),1)))},trigger:function(e){if(this._events=this._events||{},e in this._events!=!1)for(var t=0;t<this._events[e].length;t++)this._events[e][t].apply(this,Array.prototype.slice.call(arguments,1))}}),v.fn.fancySelect=function(e){return this.each(function(){this.fancySelect||"select"===this.tagName.toLowerCase()&&new $(v(this),e)})}}(jQuery,window,document);
1
+ "use strict";!function(v,f,m){function y(e,t){var r=this,l=v.extend(!0,{},{options:[],optgroups:[],items:[],placeholder:"",delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,maxItemShow:3,hideSelected:null,addPrecedence:!1,selectOnTab:!1,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,scrollDuration:60,loadThrottle:300,loadingClass:"loading",dataAttr:"data-data",optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"selectize-control",inputClass:"selectize-input",dropdownClass:"selectize-dropdown",dropdownContentClass:"selectize-dropdown-content",dropdownParent:null,copyClassesToDropdown:!0,render:{}},t),n=e[0];(n.fancySelect=r).order=0;var i=f.getComputedStyle&&f.getComputedStyle(n,null),s=i?i.getPropertyValue("direction"):n.currentStyle&&n.currentStyle.direction;s=s||e.parents("[dir]:first").attr("dir")||"",r.computedStyle=i,/android/i.test(f.navigator.userAgent)||m.createElement("input").validity;var a,o,d,c={},p={readData:function(e){var t=r.dataAttr&&e.attr(r.dataAttr);return"string"==typeof t&&t.length?JSON.parse(t):null},addOption:function(e,t){e=v(e);var n=r.hash_key(e.val());if(n||l.allowEmptyOption)if(c.hasOwnProperty(n)){if(t){var i=c[n][field_optgroup];i?v.isArray(i)?i.push(t):c[n][field_optgroup]=[i,t]:c[n][field_optgroup]=t}}else{var s=p.readData(e)||{};s[r.settings.labelField]=s[r.settings.labelField]||e.text(),s[r.settings.valueField]=s[r.settings.valueField]||n,s[r.settings.disabledField]=s[r.settings.disabledField]||e.prop("disabled"),s[r.settings.optgroupField]=s[r.settings.optgroupField]||t,s.$order=++r.order,c[n]=s,r.settings.options.push(s),e.is(":selected")&&r.settings.items.push(s)}},addGroup:function(e){var t,n,i,s,l;for((i=(e=v(e)).attr("label"))&&((s=p.readData(e)||{})[r.settings.optgroupLabelField]=i,s[r.settings.optgroupValueField]=i,s[r.settings.disabledField]=e.prop("disabled"),s.$order=++r.order,r.settings.optgroups.push(s)),t=0,n=(l=v("option",e)).length;t<n;t++)p.addOption(l[t],i)}};v.extend(r,{settings:l,$select:e,tabIndex:e.attr("tabindex")||"",tagType:1,rtl:/rtl/i.test(s),multiple:e.attr("multiple"),eventNS:".FancySelect"+ ++y.count,highlightedValue:null,isBlurring:!1,isOpen:!1,isDisabled:!1,isRequired:e.is("[required]"),isInvalid:!1,isLocked:!1,isFocused:!1,isInputHidden:!1,isSetup:!1,isRendered:!1,isShiftDown:!1,isCmdDown:!1,isCtrlDown:!1,ignoreFocus:!1,ignoreBlur:!1,ignoreHover:!1,hasOptions:!1,currentResults:null,lastValue:"",caretPos:0,loading:0,loadedSearches:{},$activeOption:null,$activeItems:[],optgroups:{},options:{},userOptions:{},items:{},renderCache:{},onSearchChange:null===l.loadThrottle?r.onSearchChange:(a=r.onSearchChange,o=l.loadThrottle,function(){var e=this,t=arguments;f.clearTimeout(d),d=f.setTimeout(function(){a.apply(e,t)},o)})}),""===r.settings.placeholder&&(r.settings.placeholder=e.attr("placeholder")||e.attr("data-placeholder"),r.settings.placeholder||r.settings.allowEmptyOption||(r.settings.placeholder=e.children('option[value=""]').text())),r.settings.maxItems=r.multiple?null:1;for(var u=0,g=r.$select.children().length;u<g;u++){var h=r.$select.children()[u].tagName.toLowerCase();"optgroup"===h?p.addGroup(r.$select.children()[u]):"option"===h&&p.addOption(r.$select.children()[u])}r.$wrapper=v('<div class="fancy-picker">').addClass(e.attr("class")),r.computedStyle.hasOwnProperty("width")&&r.$wrapper.css({width:r.computedStyle.width}),r.$outputWrapper=v('<div class="fancy-picker-picked">').appendTo(r.$wrapper),r.originalPlaceholder=v('<span class="fancy-picker-placeholder">').appendTo(r.$outputWrapper),r.dataPlaceholder=v('<span class="fancy-picker-data">').appendTo(r.$outputWrapper),r.dataCountPlaceholder=v('<span class="fancy-picker-count">').appendTo(r.$outputWrapper),r.$dropdown=v('<div class="fancy-picker-ui">').appendTo(r.$wrapper),r.$dropdownContent=v('<div class="fancy-picker-content">').appendTo(r.$dropdown),r.setup()}y.count=0,v.extend(y.prototype,{setup:function(){var s=this;s.revertSettings={$children:s.$select.children().detach(),tabindex:s.$select.attr("tabindex")},s.$select.attr("tabindex",-1).hide().after(s.$wrapper),s.$select.data("FancySelect",s),s.$select.addClass("FancySelectInit"),s.settings.items.sort(function(e,t){return e[s.settings.sortField]-t[s.settings.sortField]}),s.preload&&s.render(),s.updatePlaceholder(),s.updateOriginalInput(),s.$wrapper.on("click"+s.eventNS,".fancy-picker-picked",function(e){s.$select.trigger("show"),s.isRendered||s.render(),s.$wrapper.toggleClass("active"),s.$select.trigger("shown")}),v(m).on("click"+s.eventNS,function(e){v(e.target).closest(s.$wrapper).length||(s.$select.trigger("hide"),s.$wrapper.removeClass("active"),s.$select.trigger("hidden"))}),s.$wrapper.on("click"+s.eventNS,".fancy-picker-option:not(.disabled)",function(e){e.preventDefault();var t=v(this),n=!1,i=s.hash_key(t.data("value"));s.multiple?(t.hasClass("selected")?t.removeClass("selected"):(n=!0,t.addClass("selected")),n?s.settings.items.push(s.getSelectedOptionData(i)):s.settings.items=s.settings.items.filter(function(e){return e[s.settings.valueField]!==i}),s.settings.items.sort(function(e,t){return e[s.settings.sortField]-t[s.settings.sortField]})):(s.$dropdownContent.find(".fancy-picker-option").not(t).removeClass("selected"),t.addClass("selected"),n=!0,s.settings.items=[s.getSelectedOptionData(i)],s.$wrapper.removeClass("active")),s.updatePlaceholder(),s.updateOriginalInput()}),v(f).on("resize"+s.eventNS,function(){var e=f.getComputedStyle&&f.getComputedStyle(s.$select[0],null);e.hasOwnProperty("width")&&s.$wrapper.css({width:e.width})}),s.$select.trigger("initialize")},render:function(){function s(e){return l.isSelected(e)?"fancy-picker-option selected":"fancy-picker-option"}var l=this,r=[],a=l.settings.optgroups,o=l.settings.options;if(a.length)for(var e=function(t){r.push('<div class="fancy-picker-option-group">'),r.push('<div class="fancy-picker-option-group-label">'.concat(a[t][l.settings.labelField],"</div>"));for(var e=o.filter(function(e){return e[l.settings.optgroupField]===a[t][l.settings.valueField]}),n=0;n<e.length;n++){var i=e[t];r.push('<div class="'.concat(s(i[l.settings.valueField]),'" data-value="').concat(i[l.settings.valueField],'">').concat(i[l.settings.labelField],"</div>"))}r.push("</div>")},t=0;t<a.length;t++)e(t);else for(var n=0;n<o.length;n++){var i=o[n];r.push('<div class="'.concat(s(i[l.settings.valueField]),'" data-value="').concat(i[l.settings.valueField],'">').concat(i[l.settings.labelField],"</div>"))}l.$dropdownContent.html(r.join("")),l.$select.trigger("rendered"),l.isRendered=!0},updatePlaceholder:function(){var t=this,n=[],e=t.settings.items,i=e.length>t.settings.maxItemShow?t.settings.maxItemShow-1:t.settings.maxItemShow;if(t.originalPlaceholder.text(t.settings.placeholder),e.length?t.originalPlaceholder.hide():t.originalPlaceholder.show(),e.slice(0,i).forEach(function(e){n.push("<span>".concat(e[t.settings.labelField],"</span>"))}),t.dataPlaceholder.html(n.join('<span class="fancy-picker-separator">'.concat(t.settings.delimiter,"</span>"))),e.length>t.settings.maxItemShow){var s=[];e.forEach(function(e){s.push(e[t.settings.labelField])}),t.dataCountPlaceholder.attr("title",s.join(t.settings.delimiter.trim()+" ")),t.dataCountPlaceholder.html("+"+(e.length-i)+" More &hellip;")}else t.dataCountPlaceholder.removeAttr("title"),t.dataCountPlaceholder.html("");return t.$select.trigger("placeholderChanged"),t},updateOriginalInput:function(e){var t=this,n=[],i=!1;e=!0===e;for(var s=t.settings.items,l=0;l<s.length;l++)n.push('<option value="'+s[l][t.settings.valueField]+'" selected="selected">'+s[l][t.settings.labelField]||"</option>"),i=!0;return t.$select.html(n.join("")),!e&&i&&t.$select.trigger("change"),t},getSelectedOptionData:function(t){var n=this,e=n.settings.options.filter(function(e){return e[n.settings.valueField]===t});return!!e.length&&e[0]},isSelected:function(t){var n=this;return 0<n.settings.items.filter(function(e){return e[n.settings.valueField]===t}).length},hash_key:function(e){return e+""},destroy:function(){var e=this;e.$select.trigger("destroy"),e.trigger("destroy"),e.off(),e.$select.html("").append(e.revertSettings.$children).removeAttr("tabindex").removeClass("FancySelectInit").attr({tabindex:e.revertSettings.tabindex}).show(),e.$select.removeData("FancySelect"),e.$wrapper.remove(),0==--y.count&&y.$testInput&&(y.$testInput.remove(),y.$testInput=void 0),v(f).off(e.eventNS),v(m).off(e.eventNS),v(m.body).off(e.eventNS),delete e.$select[0].fancySelect}}),v.extend(y.prototype,{bind:function(e,t){this._events=this._events||{},this._events[e]=this._events[e]||[],this._events[e].push(t)},unbind:function(e,t){this._events=this._events||{},e in this._events!=!1&&this._events[e].splice(this._events[e].indexOf(t),1)},trigger:function(e){if(this._events=this._events||{},e in this._events!=!1)for(var t=0;t<this._events[e].length;t++)this._events[e][t].apply(this,Array.prototype.slice.call(arguments,1))}}),v.fn.fancySelect=function(e){return this.each(function(){this.fancySelect||"select"===this.tagName.toLowerCase()&&new y(v(this),e)})}}(jQuery,window,document);
2
+ //# sourceMappingURL=fancy-select.min.js.map
 
 
 
 
 
admin/js/fancy-select.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["fancy-select.js"],"names":["$","window","document","FancySelect","$select","options","self","settings","extend","defaults","optgroups","items","placeholder","delimiter","splitOn","persist","diacritics","create","createOnBlur","createFilter","highlight","openOnFocus","maxOptions","maxItems","maxItemShow","hideSelected","addPrecedence","selectOnTab","preload","allowEmptyOption","closeAfterSelect","scrollDuration","loadThrottle","loadingClass","dataAttr","optgroupField","valueField","labelField","disabledField","optgroupLabelField","optgroupValueField","lockOptgroupOrder","sortField","searchField","searchConjunction","mode","wrapperClass","inputClass","dropdownClass","dropdownContentClass","dropdownParent","copyClassesToDropdown","render","select","computedStyle","dir","attr","test","navigator","createElement","debounce","delay","timeout","optionsMap","optHelper","readData","$el","data","JSON","addOption","$option","group","value","hash_key","arr","isArray","field_optgroup","option","addGroup","$optgroup","i","n","id","optgroup","$options","tabIndex","tagType","rtl","multiple","eventNS","highlightedValue","isBlurring","isOpen","isDisabled","isRequired","isInvalid","isLocked","isFocused","isInputHidden","isSetup","isRendered","isShiftDown","isCmdDown","isCtrlDown","ignoreFocus","ignoreBlur","ignoreHover","hasOptions","currentResults","lastValue","caretPos","loading","loadedSearches","$activeOption","$activeItems","userOptions","renderCache","onSearchChange","args","fn","apply","children","length","tagName","addClass","$wrapper","width","appendTo","setup","$children","tabindex","hide","after","a","b","e","trigger","target","closest","preventDefault","current","selected","removeClass","getSelectedOptionData","filter","x","sort","$dropdownContent","find","updatePlaceholder","updateOriginalInput","getComputedStyle","hasOwnProperty","optClass","isSelected","this","dropdownItems","_loop","push","concat","group_options","item","ii","_i","html","join","placeholderData","originalPlaceholder","text","slice","forEach","dataPlaceholder","title","dataCountPlaceholder","removeAttr","changed","silent","input","destroy","append","revertSettings","removeData","$testInput","off","body","fancySelect","prototype","bind","event","fct","_events","unbind","indexOf","Array","call","arguments","user_options","jQuery"],"mappings":"AAAA,cAQA,SAACA,EAAAC,EAAAC,GAWIC,SAAJA,EAAeC,EAAAC,GACd,IAAAC,EAAIA,KAAJC,EAAAA,EA+CCA,QAAQC,EAAKA,GA/CdC,CAEEJ,QAAAA,GACAK,UAAAA,GACAC,MAAAA,GACAC,YAAAA,GACAC,UAAAA,IACAC,QAAAA,KACAC,SAAAA,EACAC,YAAAA,EACAC,QAAAA,EACAC,cAAAA,EACAC,aAAAA,KACAC,WAAAA,EACAC,aAAAA,EACAC,WAAAA,IACAC,SAAAA,KACAC,YAAAA,EACAC,aAAAA,KACAC,eAAAA,EACAC,aAAAA,EACAC,SAAAA,EACAC,kBAAAA,EACAC,kBAAAA,EACAC,eAAAA,GACAC,aAAAA,IACAC,aAAAA,UACAC,SAAAA,YACAC,cAAAA,WACAC,WAAAA,QACAC,WAAAA,OACAC,cAAAA,WACAC,mBAAAA,QACAC,mBAAAA,QACAC,mBAAAA,EACAC,UAAAA,SACAC,YAAAA,CAAAA,QACAC,kBAAAA,MACAC,KAAAA,KACAC,aAAAA,oBACAC,WAAAA,kBACAC,cAAAA,qBACAC,qBAAAA,6BACAC,eAAAA,KACAC,uBAAAA,EACAC,OAAAA,IAEU3C,GA/CZ4C,EAAAA,EAgDCA,IACDA,EAAAA,YAAAA,GACA/C,MAAAA,EACA,IAAAgD,EAAIA,EAAarD,kBAAAA,EAAGA,iBAA2BA,EAA3B,MACpBsD,EAAIA,EAAMD,EAAaA,iBAAGA,aAAhBA,EAAaD,cAAAA,EAAiDA,aAAuBA,UAC/FE,EAAAA,GAAMA,EAAGnD,QAAIA,eAAJoD,KAAIA,QAAV,GACHlD,EAAAA,cAAAA,EAE2B,WAAImD,KAAWA,EAAKxD,UAAOyD,YAAyBxD,EAAWyD,cAATzD,SAAAA,SAAjF,IAEM0D,EAAWC,EAChBC,EAWDC,EAAIA,GAAJC,EAAAA,CAEEC,SAAAA,SAAQC,GACP,IAAAC,EAAIA,EAAI7D,UAAA4D,EAAGA,KAAiBA,EAAIV,UAEhC,MAAA,iBAAAW,GAAAA,EAAIA,OACHC,KAAAA,MAAOA,GAGR,MAEDC,UAAAA,SAASC,EAAAC,GACRD,EAAAA,EAAAA,GACA,IAAAE,EAAIA,EAAKlE,SAAGA,EAAKmE,OACjB,GAAAD,GAAAjE,EAAIA,iBAKJ,GAAAwD,EAAAA,eAAIA,IACH,GAAAQ,EAAAA,CACC,IAAAG,EAAAA,EAAIA,GAAMX,gBAEVW,EAAA1E,EAAA2E,QAEOA,GAGND,EAAAA,KAAAA,GAFAX,EAAAA,GAAAA,gBAAWS,CAAAA,EAAOI,GAFlBb,EAAAA,GAAAA,gBAAWS,OALd,CAgBA,IAAAK,EAAIA,EAAMb,SAAGA,IAAH,GACVa,EAAAA,EAAAA,SAAOvE,YAAPuE,EAAAA,EAAmCA,SAAOvE,aAA1CgE,EAAmCA,OACnCO,EAAAA,EAAAA,SAAOvE,YAAPuE,EAAAA,EAAmCA,SAAOvE,aAA1CkE,EACAK,EAAAA,EAAAA,SAAOvE,eAAPuE,EAAAA,EAAsCA,SAAOvE,gBAA7CgE,EAAsCA,KAAuCA,YAC7EO,EAAAA,EAAAA,SAAOvE,eAAPuE,EAAAA,EAAsCA,SAAOvE,gBAA7CiE,EACAM,EAAAA,SAAAA,EAAAvE,MACAyD,EAAAA,GAAAA,EACAzD,EAAAA,SAAAA,QAAKC,KAASF,GAEdiE,EAAAA,GAAIA,cACHhE,EAAAA,SAAAA,MAAKC,KAASI,KAGhBmE,SAAAA,SAAQC,GACP,IAAAC,EAAAA,EAAIA,EAAGC,EAAGC,EAeV,KAbAA,GADAH,EAAAA,EAAAA,IACEA,KAAGA,aAGJI,EAAAA,EAAAA,SAAWnB,IAAXmB,IACAA,EAAAA,SAAS7E,oBAAT6E,EACAA,EAAAA,EAAAA,SAAS7E,oBAAT6E,EACAA,EAAAA,EAAAA,SAAS7E,eAAT6E,EAAQJ,KAAgCA,YACxCI,EAAAA,SAAAA,EAAA7E,MACAA,EAAAA,SAAAA,UAAKC,KAASG,IAKfsE,EAAA,EAAMC,GAFNG,EAAAA,EAAAA,SAAQL,IAEKK,OAAGA,EAAhBH,EAAkCA,IACjCjB,EAAAA,UAAAA,EAAUK,GAAUe,KAKxBpF,EAAAA,OAAAA,EAAAA,CACCO,SAAAA,EACAH,QAAAA,EACAiF,SAAAA,EAAAA,KAAUjF,aAAViF,GACAC,QAAAA,EACAC,IAAAA,OAAAA,KAAK9B,GACL+B,SAAAA,EAAAA,KAAUpF,YACVqF,QAAAA,kBAAAA,EAAStF,MACTuF,iBAAAA,KACAC,YAAAA,EACAC,QAAAA,EACAC,YAAAA,EACAC,WAAAA,EAAAA,GAAY1F,cACZ2F,WAAAA,EACAC,UAAAA,EACAC,WAAAA,EACAC,eAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,aAAAA,EACAC,WAAAA,EACAC,YAAAA,EACAC,aAAAA,EACAC,YAAAA,EACAC,aAAAA,EACAC,YAAAA,EACAC,eAAAA,KACAC,UAAAA,GACAC,SAAAA,EACAC,QAAAA,EACAC,eAAAA,GACAC,cAAAA,KACAC,aAAAA,GACAxG,UAAAA,GACAL,QAAAA,GACA8G,YAAAA,GACAxG,MAAAA,GACAyG,YAAAA,GACAC,eAAAA,OAAAA,EAAAA,aAAAA,EAAgB/G,gBAxHXsD,EAwHWA,EAAuDA,eAxHvDC,EAwHgEvD,EAAK+G,aAtHrF,WACC,IAAA/G,EAAAA,KACAgH,EAAAA,UACArH,EAAAA,aAAAA,GACA6D,EAAAA,EAAAA,WAAU7D,WACTsH,EAAAA,MAAAA,EAAGC,IACH3D,OAmHH,KAAAvD,EAAIA,SAAOA,cACVA,EAAAA,SAAAA,YAAAA,EAAAF,KAA4BA,gBAA5BA,EAA4BA,KAA+BA,oBAE3DE,EAAAA,SAAKA,aAALA,EAAIA,SAA+BA,mBAClCA,EAAAA,SAAAA,YAAKC,EAASK,SAAcR,oBAAQqH,SAItCnH,EAAAA,SAAAA,SAAAA,EAAAA,SAAA,KAAA,EAEA,IAAA,IAAA0E,EAAK,EAALC,EAAK3E,EAAYA,QAAGA,WAAHoH,OAAjB1C,EAAAC,EAAAD,IAAA,CACC,IAAA2C,EAAIA,EAAOrH,QAAGA,WAAH0E,GAAGA,QAAwBA,cAElC2C,aAAJA,EACC3D,EAAAA,SAAAA,EAAUc,QAASxE,WAAKF,IACduH,WAFXA,GAGC3D,EAAAA,UAAAA,EAAUK,QAAU/D,WAAKF,IAI3BE,EAAAA,SAAAA,EAAAN,8BAAA4H,SAAiBA,EAA+BA,KAASxH,UAEzDE,EAAAA,cAAIA,eAAKgD,UACRhD,EAAAA,SAAAA,IAAKuH,CACJC,MAAAA,EAAAA,cAAOxH,QAITA,EAAAA,eAAAA,EAAAN,qCAAA+H,SAAuBA,EAAsCA,UAC7DzH,EAAAA,oBAAAA,EAAAN,2CAAA+H,SAA4BA,EAA4CA,gBACxEzH,EAAAA,gBAAAA,EAAAN,oCAAA+H,SAAwBA,EAAqCA,gBAC7DzH,EAAAA,qBAAAA,EAAAN,qCAAA+H,SAA6BA,EAAsCA,gBACnEzH,EAAAA,UAAAA,EAAAN,iCAAA+H,SAAkBA,EAAkCA,UACpDzH,EAAAA,iBAAAA,EAAAN,sCAAA+H,SAAyBA,EAAuCA,WAChEzH,EAAAA,QAGDH,EAAAA,MAAAA,EAEAH,EAAAA,OAAAA,EAASG,UAATH,CAKCgI,MAAAA,WACC,IAAA1H,EAAIA,KACJA,EAAAA,eAAAA,CACC2H,UAAAA,EAAAA,QAAW3H,WAAKF,SAChB8H,SAAAA,EAAAA,QAAU5H,KAAKF,aAEhBE,EAAAA,QAAAA,KAAKF,YAALE,GAAA6H,OAAA7H,MAAA8H,EAAyCA,UACzC9H,EAAAA,QAAAA,KAAKF,cAAQ+D,GACb7D,EAAAA,QAAAA,SAAKF,mBAEsBE,EAAAA,SAAAC,MAAcD,KAAKC,SAAL8H,EAAAC,GAAA,OAAAD,EAAA/H,EAA2BgI,SAAEhI,WAA/BgI,EAAAhI,EAAZA,SAAAC,aAG3BD,EAAAA,SACCA,EAAAA,SAGDA,EAAAA,oBACAA,EAAAA,sBAGCA,EAAAA,SAAAA,GAAKF,QAALE,EAAqBA,QAArBmF,uBAAA,SAAA8C,GAAAjI,EAAAA,QAAKF,QAAQoI,QAGZlI,EAAAA,YACAA,EAAAA,SAGDA,EAAAA,SAAAA,YAAKF,UACLE,EAAAA,QATDF,QAAAoI,WAWCxI,EAAAA,GAAAE,GAAOqI,QAAEE,EAAQC,QAAQpI,SAAKuH,GAC7BvH,EAAAA,EAAAA,QAAAA,QAAKF,EAAQoI,UAAQX,SACrBvH,EAAAA,QAAAA,QAAKuH,QACLvH,EAAAA,SAAAA,YAAKF,UACLE,EAAAA,QAAAF,QAAAoI,aAGDD,EAAAA,SAAAA,GAAEI,QAAAA,EAAFrI,QAAAmF,sCAAA,SAAA8C,GACAA,EAAAA,iBAAA,IAAAK,EAAAA,EACCC,MADDA,GAAAA,EAAArE,EAECA,EAAKC,SAAQA,EAASmE,KAAAA,UAGtBtI,EAAAA,UACCuI,EAAAA,SAAAA,YAAAA,EAEMD,YAAQE,aADdF,GAAAA,EACAA,EAAAA,SAHDhB,aAMCtH,EACAA,EAAAA,SAFDC,MAEOI,KAANL,EAAAyI,sBAAMA,IAC6CzI,EAAAA,SAAAC,MAAAI,EAAAJ,SAAWA,MAAS6B,OAAhB4G,SAAgCxE,GAAAA,OAAAA,EAAAA,EAApCyE,SAAA1I,cAAA6B,IAGpD9B,EAAAA,SAAKC,MAASI,KAAMuI,SAAOb,EAAAC,GAAA,OAAAD,EAAA/H,EAAaC,SAAMA,WAASmC,EAAfpC,EAA6BC,SAAMA,eAAhDD,EAAAA,iBAAA6I,KAAmB5I,wBAAAA,IAAnBqI,GAAgDrI,YAASmC,YAAzDkG,EAAAA,SAA3BhB,YACAiB,GAAAA,EACAvI,EAAAA,SAAAA,MAAK6I,CAAAA,EAAAA,sBAAiBC,IACtBR,EAAAA,SAAAA,YAAQhB,WAGRtH,EAAAA,oBACAA,EAAAA,wBAEDA,EAAAA,GAAAA,GAAK+I,SAAAA,EAAAA,QAAL5D,WACAnF,IAAAA,EAAAA,EAAKgJ,kBAAAA,EAALrJ,iBAAAsJ,EAAAjJ,QAAAF,GAAA,MAEDJ,EAAEC,eAAWuJ,UACZlJ,EAAAA,SAAAuH,IAAA,CAIEC,MAAAA,EAAOxE,UADUhD,EAAAA,QAAAF,QAAlBoI,eAOHpF,OAAA,WAKY,SAAXqG,EAAAA,GAAW,OAAAnJ,EAAXA,WAAAoJ,GAAA,+BAAA,sBAAA,IAAApJ,EAAQqJ,KAARC,EACCA,GACDzE,EAAc7E,EAAGA,SAAKC,UAHvB6C,EAAQ9C,EAAAA,SAAAC,QACP,GAAA4E,EAAAA,OAEA,IADiB,IAAA0E,EAAA,SAAA7E,GAEjB4E,EAAAA,KAAaE,2CAKXF,EAAAA,KAAcE,gDAAdC,OAAA5E,EAAoEA,GAAAA,EAAY7E,SAAKC,YAAS8B,WAJ/E,IAAjB,IAAA2H,EAAMP,EAAWpJ,OAAXoJ,SAAajF,GAAF,OAAAyF,EAAA3J,EAAAC,SAAAA,iBAAA4E,EAAAA,GAAAA,EAAA5E,SAAAA,cAAA2J,EAAAA,EAAa5J,EAAKoJ,EAAAA,OAAoBhC,IAAAwC,CAAtC,IAAArF,EAAjBA,EAAAmF,GAQGJ,EAAAA,KAAa,eAAbG,OAAAN,EAAmCA,EAAU5E,EAAMtE,SAAMA,aAAS6B,kBAAlE2H,OAAAlF,EAAgGA,EAAMtE,SAAMA,YAAS6B,MAArH2H,OAAAlF,EAAqIA,EAAMtE,SAAMA,YAAS8B,WAPtIuH,EAAAA,KAAAE,WAHjB3E,EAAAA,EAAAA,EAAW7E,EAAI6E,OAAJuC,IAAjBmC,EAAA7E,QAOE,IAAA,IAAAmF,EAAAnF,EAAMgF,EAAAA,EAAAA,OAAgB3J,IAAQ2I,CAAY,IAAAnE,EAAAA,EAAAxE,GAAAuJ,EAAAA,KAA1CE,eAA0CC,OAAAN,EAA1CA,EAAA5E,EAAAvE,SAAAC,aAAA6B,kBAA0C2H,OAAAlF,EAA1CA,EAAAvE,SAAAC,YAAA6B,MAA0C2H,OAAAlF,EAA1CA,EAAAvE,SAAAC,YAAA8B,WAGCuH,EAAAA,iBAAAA,KAAaQ,EAAbR,KAAAS,KACA/J,EAAAA,QAAAF,QAAAoI,YAYHlI,EAAAA,YAAA,GAVE+I,kBAAA,WACD,IAAA/I,EAXDqJ,KAWCW,EACAA,GACC3J,EAAIkE,EAAAA,SAAMtE,MACVqJ,EAAAA,EAAajJ,OAAAL,EAAbA,SAAAC,YAAaD,EAAgCuE,SAAOvE,YAAPuE,EAAhCvE,EAAbA,SAAAC,YAaF,GAZED,EAAAA,oBAAAiK,KAAAC,EAAAlK,SAAAC,aAkBFI,EAAIA,OAfJL,EAAAA,oBAAAA,OAEAA,EAAAA,oBAAAA,OAEDK,EAAAA,MAAA8J,EAAAjJ,GAAAA,QAAAkJ,SAAAT,GAkBEK,EAAAA,KAAgBR,SAAhBC,OAAAE,EAA+BA,EAAK3J,SAAKC,YAAS8B,cAEnD/B,EAAAA,gBAAKqK,KAAgBP,EAAME,KAAgBD,wCAAhBN,OAAAzJ,EAA8DA,SAAKC,UAASM,aAfvGF,EAAAA,OAAAL,EAAAA,SAAAC,YAAAiB,CAAA,IAAAoJ,EAAAA,GAEAjK,EAAAA,QAAMA,SAAQL,GACdsK,EAAAA,KAAMpJ,EAAAA,EAAWlB,SAAGK,eAmBnBL,EAAAA,qBAAKuK,KAAqBrH,QAAKoH,EAASA,KAAMP,EAAK/J,SAAKC,UAASM,OAAd,MAhBpDP,EAAAA,qBAAAuK,KAAkBT,KAAAzJ,EAAAA,OAAA+G,GAAA,uBAEjBpH,EAAAA,qBAFDuK,WAEOC,SACNxK,EAAAA,qBAAAA,KAAKiK,IAILD,OADD3J,EAAAA,QAAAA,QAAM8J,sBACLH,GAOCM,oBAAWX,SAAAA,GACX,IAAA3J,EAFDqJ,KAECtJ,EACDC,GADCyK,GAEDzK,EACA0K,GAPD,IAAAA,EASC1K,IADAA,IAAAA,EAAKuK,EAAAA,SAAAA,MACLvK,EAAKuK,EAAAA,EAAAA,EAAAA,OAAAA,IACLxK,EAAAA,KAAAyJ,kBAAAnJ,EAAAA,GAAAL,EAAAA,SAAAC,YAAA,yBAAAI,EAAAA,GAAAL,EAAAA,SAAAC,aAAA,aAkBAwK,GAAAA,EAQD,OAtBAzK,EAAAA,QAvJ8BF,KAAAgK,EAAA/J,KAAAgK,MAwJ/BW,GAAAD,GAmBEzK,EAAAA,QAAKF,QAAQoI,UAEdlI,GAXAyI,sBAAmBxI,SAAAA,GAmBnB,IAAAD,EAAQqJ,KAARd,EAlBAA,EAAKtI,SAALA,QAAoBI,OAAM+G,SAAauB,GAAA,OAAAA,EAAA3I,EAAAA,SAAAC,cAAAkE,IACtCpE,QAAAA,EAAAA,QAAAA,EAAawI,IAObvI,WAAI,SAACF,GACL,IAAAE,EAAAqJ,KAoBD,OAAO,EAAPrJ,EAAOA,SAAKC,MAASI,OAAMqI,SAAQC,GAAC,OAAAA,EAAA3I,EAAMA,SAAKC,cAAPkE,IAAJiD,QAOrCjD,SAAQ,SAAEwG,GAAA,OAAAA,EAAgB,IAjBkBC,QAD3C,WAEA,IAAA5K,EAAAqJ,KACArJ,EAAAA,QAxL8BF,QAAAoI,WAgN9BlI,EAAAA,QAAKkI,WAvBNlI,EAAAA,MAyBCA,EAAAA,QAAKF,KACHgK,IAAKe,OACLA,EAAO7K,eAAK8K,WAAenD,WAC3B6C,YAAWhC,YAvBdY,mBAAYlG,KACXA,CAAIlD,SAAAA,EAAJA,eAAA8K,WAAI9K,OACgCA,EAAAA,QAAAF,WAAKiL,eAAL/K,EAAAA,SAA7BuH,SA4BH,KAAJ1H,EAAMA,OAAFA,EAA6BA,aA1BlCA,EAAAA,WAAAmL,SA4BEnL,EAAAA,gBAAYmL,GASbtL,EAAAA,GAAEC,IAAQsL,EAAIjL,SACdN,EAAAA,GAAEE,IAAUqL,EAAIjL,SAChBN,EAAAA,EAAEE,MAASsL,IAAMD,EAAIjL,gBACrBA,EAAOA,QAAKF,GAAQqL,eAXnBzL,EAAAQ,OAAAL,EAACuL,UAAD,CACDC,KAAA,SAAAC,EAAAC,GACAlC,KAAAmC,QAAAnC,KAAAmC,SAAA,GACAnC,KAAAmC,QAAAA,GAAAnC,KAAAmC,QAAAA,IAAA,GACAnC,KAAAmC,QAAAA,GAAAF,KAAA9B,IA4BDiC,OAAM,SAAGH,EAAAC,GACRlC,KAAAmC,QAAAnC,KAAemC,SAAA,GAzBf9L,KAAEC,KAAQsL,UAAT,GACDvL,KAAAA,QAAEE,GAAD0L,OAAetL,KAAKmF,QAArBqG,GAAAF,QAAAI,GAAqBvG,IAErB+C,QAAA,SAAAoD,GA1OF,GA2OEjC,KAAAmC,QAAAnC,KAAAmC,SAAA,GA3OFF,KAAAjC,KAAAmC,UAAA,EA+OA,IAAA,IAAA9G,EAAA,EAAAA,EAAA2E,KAAAmC,QAAAA,GAAAF,OAAAlE,IAyBGiC,KAAAmC,QAAKA,GAAQF,GAAbpE,MAAuBA,KAAMyE,MAAMA,UAAMP,MAAUjB,KAAMyB,UAAKC,OASjEnM,EAACuH,GAADkE,YAAA,SAAmBW,GAxBnBpM,OAAAA,KAAEQ,KAAOL,WACRwL,KAAAA,aACC,WAAAhC,KAAAhC,QAAeA,eACf,IAAAxH,EAAAA,EAAAwJ,MAAaiC,MApehB,CAseGS,OAL8BpM,OAAAC","file":"fancy-select.min.js","sourcesContent":["\"use strict\";\n/**!\n * WooFeed Fancy Select\n * @version 1.0.0\n * @copyright 2020 WebAppick\n * @author Kudratullah <mhamudul.hk@gmail.com>\n */\n\n(function($, window, document) {\n\t// @TODO if multiple select has required attribute and only one item is selected then return false (user should not able to deselect the last one).\n\t// @TODO make the place holder with input field like selectize so we can set the required attribute if the select has required attribute, which can be useful for showing required warning.\n\t\"use strict\";\n\t\n\t/**\n\t * FancySelect Constructor\n\t * @param {jQuery|HTMLElement} $select\n\t * @param {Object} [options]\n\t * @constructor\n\t */\n\tlet FancySelect = function FancySelect($select, options) {\n\t\tlet self = this,\n\t\t\tdefaults = {\n\t\t\t\toptions: [],\n\t\t\t\toptgroups: [],\n\t\t\t\titems: [],\n\t\t\t\tplaceholder: '',\n\t\t\t\tdelimiter: ',',\n\t\t\t\tsplitOn: null,\n\t\t\t\tpersist: !0,\n\t\t\t\tdiacritics: !0,\n\t\t\t\tcreate: !1,\n\t\t\t\tcreateOnBlur: !1,\n\t\t\t\tcreateFilter: null,\n\t\t\t\thighlight: !0,\n\t\t\t\topenOnFocus: !0,\n\t\t\t\tmaxOptions: 1e3,\n\t\t\t\tmaxItems: null,\n\t\t\t\tmaxItemShow: 3,\n\t\t\t\thideSelected: null,\n\t\t\t\taddPrecedence: !1,\n\t\t\t\tselectOnTab: !1,\n\t\t\t\tpreload: !1,\n\t\t\t\tallowEmptyOption: !1,\n\t\t\t\tcloseAfterSelect: !1,\n\t\t\t\tscrollDuration: 60,\n\t\t\t\tloadThrottle: 300,\n\t\t\t\tloadingClass: \"loading\",\n\t\t\t\tdataAttr: \"data-data\",\n\t\t\t\toptgroupField: \"optgroup\",\n\t\t\t\tvalueField: \"value\",\n\t\t\t\tlabelField: \"text\",\n\t\t\t\tdisabledField: \"disabled\",\n\t\t\t\toptgroupLabelField: \"label\",\n\t\t\t\toptgroupValueField: \"value\",\n\t\t\t\tlockOptgroupOrder: !1,\n\t\t\t\tsortField: \"$order\",\n\t\t\t\tsearchField: [\"text\"],\n\t\t\t\tsearchConjunction: \"and\",\n\t\t\t\tmode: null,\n\t\t\t\twrapperClass: \"selectize-control\",\n\t\t\t\tinputClass: \"selectize-input\",\n\t\t\t\tdropdownClass: \"selectize-dropdown\",\n\t\t\t\tdropdownContentClass: \"selectize-dropdown-content\",\n\t\t\t\tdropdownParent: null,\n\t\t\t\tcopyClassesToDropdown: !0,\n\t\t\t\trender: {}\n\t\t\t},\n\t\t\tsettings = $.extend(true, {}, defaults, options),\n\t\t\tselect = $select[0];\n\t\tselect.fancySelect = self;\n\t\tself.order = 0;\n\t\tlet computedStyle = window.getComputedStyle && window.getComputedStyle(select, null);\n\t\tlet dir = computedStyle ? computedStyle.getPropertyValue('direction') : select.currentStyle && select.currentStyle.direction;\n\t\tdir = dir || $select.parents('[dir]:first').attr('dir') || '';\n\t\tself.computedStyle = computedStyle; // for now, android support in general is too spotty to support validity\n\n\t\tconst SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !! document.createElement('input').validity; // helper (private) methods\n\n\t\tconst debounce = function (fn, delay) {\n\t\t\tlet timeout;\n\t\t\treturn function() {\n\t\t\t\tlet self = this;\n\t\t\t\tlet args = arguments;\n\t\t\t\twindow.clearTimeout(timeout);\n\t\t\t\ttimeout = window.setTimeout(function() {\n\t\t\t\t\tfn.apply(self, args);\n\t\t\t\t}, delay);\n\t\t\t};\n\t\t};\n\t\t\n\t\tlet optionsMap = {},\n\t\t\toptHelper = {\n\t\t\t\treadData: function ($el) {\n\t\t\t\t\tlet data = self.dataAttr && $el.attr(self.dataAttr);\n\n\t\t\t\t\tif (typeof data === 'string' && data.length) {\n\t\t\t\t\t\treturn JSON.parse(data);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\taddOption: function ($option, group) {\n\t\t\t\t\t$option = $($option);\n\t\t\t\t\tlet value = self.hash_key($option.val());\n\t\t\t\t\tif (!value && !settings.allowEmptyOption) return; // if the option already exists, it's probably been\n\t\t\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t\t\t// existing option so that it's rendered in both places.\n\n\t\t\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\t\t\tif (group) {\n\t\t\t\t\t\t\tlet arr = optionsMap[value][field_optgroup];\n\n\t\t\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t\t\t} else if (!$.isArray(arr)) {\n\t\t\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet option = optHelper.readData($option) || {};\n\t\t\t\t\toption[self.settings.labelField] = option[self.settings.labelField] || $option.text();\n\t\t\t\t\toption[self.settings.valueField] = option[self.settings.valueField] || value;\n\t\t\t\t\toption[self.settings.disabledField] = option[self.settings.disabledField] || $option.prop('disabled');\n\t\t\t\t\toption[self.settings.optgroupField] = option[self.settings.optgroupField] || group;\n\t\t\t\t\toption.$order = ++self.order;\n\t\t\t\t\toptionsMap[value] = option;\n\t\t\t\t\tself.settings.options.push(option);\n\n\t\t\t\t\tif ($option.is(':selected')) {\n\t\t\t\t\t\tself.settings.items.push(option);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\taddGroup: function ($optgroup) {\n\t\t\t\t\tlet i, n, id, optgroup, $options;\n\t\t\t\t\t$optgroup = $($optgroup);\n\t\t\t\t\tid = $optgroup.attr('label');\n\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\toptgroup = optHelper.readData($optgroup) || {};\n\t\t\t\t\t\toptgroup[self.settings.optgroupLabelField] = id;\n\t\t\t\t\t\toptgroup[self.settings.optgroupValueField] = id;\n\t\t\t\t\t\toptgroup[self.settings.disabledField] = $optgroup.prop('disabled');\n\t\t\t\t\t\toptgroup.$order = ++self.order;\n\t\t\t\t\t\tself.settings.optgroups.push(optgroup);\n\t\t\t\t\t}\n\n\t\t\t\t\t$options = $('option', $optgroup);\n\n\t\t\t\t\tfor (i = 0, n = $options.length; i < n; i++) {\n\t\t\t\t\t\toptHelper.addOption($options[i], id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}; // setup default state\n\t\t\n\t\t$.extend(self, {\n\t\t\tsettings: settings,\n\t\t\t$select: $select,\n\t\t\ttabIndex: $select.attr('tabindex') || '',\n\t\t\ttagType: 1,\n\t\t\trtl: /rtl/i.test(dir),\n\t\t\tmultiple: $select.attr('multiple'),\n\t\t\teventNS: '.FancySelect' + ++FancySelect.count,\n\t\t\thighlightedValue: null,\n\t\t\tisBlurring: false,\n\t\t\tisOpen: false,\n\t\t\tisDisabled: false,\n\t\t\tisRequired: $select.is('[required]'),\n\t\t\tisInvalid: false,\n\t\t\tisLocked: false,\n\t\t\tisFocused: false,\n\t\t\tisInputHidden: false,\n\t\t\tisSetup: false,\n\t\t\tisRendered: false,\n\t\t\tisShiftDown: false,\n\t\t\tisCmdDown: false,\n\t\t\tisCtrlDown: false,\n\t\t\tignoreFocus: false,\n\t\t\tignoreBlur: false,\n\t\t\tignoreHover: false,\n\t\t\thasOptions: false,\n\t\t\tcurrentResults: null,\n\t\t\tlastValue: '',\n\t\t\tcaretPos: 0,\n\t\t\tloading: 0,\n\t\t\tloadedSearches: {},\n\t\t\t$activeOption: null,\n\t\t\t$activeItems: [],\n\t\t\toptgroups: {},\n\t\t\toptions: {},\n\t\t\tuserOptions: {},\n\t\t\titems: {},\n\t\t\trenderCache: {},\n\t\t\tonSearchChange: settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\n\t\t});\n\n\t\tif ('' === self.settings.placeholder) {\n\t\t\tself.settings.placeholder = $select.attr('placeholder') || $select.attr('data-placeholder');\n\n\t\t\tif (!self.settings.placeholder && !self.settings.allowEmptyOption) {\n\t\t\t\tself.settings.placeholder = $select.children('option[value=\"\"]').text();\n\t\t\t}\n\t\t}\n\n\t\tself.settings.maxItems = self.multiple ? null : 1;\n\n\t\tfor (let i = 0, n = self.$select.children().length; i < n; i++) {\n\t\t\tlet tagName = self.$select.children()[i].tagName.toLowerCase();\n\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\toptHelper.addGroup(self.$select.children()[i]);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\toptHelper.addOption(self.$select.children()[i]);\n\t\t\t}\n\t\t}\n\n\t\tself.$wrapper = $('<div class=\"fancy-picker\">').addClass($select.attr('class'));\n\n\t\tif (self.computedStyle.hasOwnProperty('width')) {\n\t\t\tself.$wrapper.css({\n\t\t\t\twidth: self.computedStyle.width\n\t\t\t});\n\t\t}\n\t\t\n\t\tself.$outputWrapper = $('<div class=\"fancy-picker-picked\">').appendTo(self.$wrapper);\n\t\tself.originalPlaceholder = $('<span class=\"fancy-picker-placeholder\">').appendTo(self.$outputWrapper);\n\t\tself.dataPlaceholder = $('<span class=\"fancy-picker-data\">').appendTo(self.$outputWrapper);\n\t\tself.dataCountPlaceholder = $('<span class=\"fancy-picker-count\">').appendTo(self.$outputWrapper);\n\t\tself.$dropdown = $('<div class=\"fancy-picker-ui\">').appendTo(self.$wrapper);\n\t\tself.$dropdownContent = $('<div class=\"fancy-picker-content\">').appendTo(self.$dropdown);\n\t\tself.setup();\n\t};\n\n\tFancySelect.count = 0;\n\t// public methods.\n\t$.extend(FancySelect.prototype, {\n\t\t/**\n\t\t * Creates all elements and sets up event bindings.\n\t\t * @return {void}\n\t\t */\n\t\tsetup: function () {\n\t\t\tlet self = this;\n\t\t\tself.revertSettings = {\n\t\t\t\t$children: self.$select.children().detach(),\n\t\t\t\ttabindex: self.$select.attr('tabindex')\n\t\t\t};\n\t\t\tself.$select.attr('tabindex', -1).hide().after(self.$wrapper);\n\t\t\tself.$select.data('FancySelect', self);\n\t\t\tself.$select.addClass('FancySelectInit');\n\t\t\t\n\t\t\tself.settings.items.sort( ( a, b ) => a[self.settings.sortField] - b[self.settings.sortField] );\n\t\t\t\n\t\t\t\n\t\t\tif (self.preload) {\n\t\t\t\tself.render();\n\t\t\t}\n\t\t\t\n\t\t\tself.updatePlaceholder();\n\t\t\tself.updateOriginalInput();\n\t\t\t\n\t\t\tself.$wrapper.on('click' + self.eventNS, '.fancy-picker-picked', function(e) {\n\t\t\t\tself.$select.trigger('show');\n\t\t\t\t\n\t\t\t\tif (!self.isRendered) {\n\t\t\t\t\tself.render();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tself.$wrapper.toggleClass('active');\n\t\t\t\tself.$select.trigger('shown');\n\t\t\t});\n\t\t\t$(document).on('click' + self.eventNS, function(e) {\n\t\t\t\tif (!$(e.target).closest(self.$wrapper).length) {\n\t\t\t\t\tself.$select.trigger('hide');\n\t\t\t\t\tself.$wrapper.removeClass('active');\n\t\t\t\t\tself.$select.trigger('hidden');\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.$wrapper.on('click' + self.eventNS, '.fancy-picker-option:not(.disabled)', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tlet current = $(this),\n\t\t\t\t\tselected = false,\n\t\t\t\t\tvalue = self.hash_key(current.data('value'));\n\t\t\t\t\n\t\t\t\tif (self.multiple) {\n\t\t\t\t\tif (!current.hasClass('selected')) {\n\t\t\t\t\t\tselected = true;\n\t\t\t\t\t\tcurrent.addClass('selected');\n\t\t\t\t\t} else current.removeClass('selected');\n\t\t\t\t\t\n\t\t\t\t\tif (selected) {\n\t\t\t\t\t\tself.settings.items.push( self.getSelectedOptionData( value ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.settings.items = self.settings.items.filter( x => x[self.settings.valueField] !== value );\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tself.settings.items.sort( ( a, b ) => a[self.settings.sortField] - b[self.settings.sortField] );\n\t\t\t\t} else {\n\t\t\t\t\tself.$dropdownContent.find('.fancy-picker-option').not(current).removeClass('selected');\n\t\t\t\t\tcurrent.addClass('selected');\n\t\t\t\t\tselected = true;\n\t\t\t\t\tself.settings.items = [ self.getSelectedOptionData( value ) ];\n\t\t\t\t\tself.$wrapper.removeClass('active');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tself.updatePlaceholder();\n\t\t\t\tself.updateOriginalInput();\n\t\t\t});\n\t\t\t$(window).on('resize' + self.eventNS, function() {\n\t\t\t\tlet computedStyle = window.getComputedStyle && window.getComputedStyle(self.$select[0], null);\n\t\t\t\t\n\t\t\t\tif (computedStyle.hasOwnProperty('width')) {\n\t\t\t\t\tself.$wrapper.css({\n\t\t\t\t\t\twidth: computedStyle.width\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.$select.trigger('initialize');\n\t\t},\n\t\t/**\n\t\t * Render The FancySelect UI\n\t\t * @return {void}\n\t\t */\n\t\trender: function () {\n\t\t\tlet self = this,\n\t\t\t\tdropdownItems = [];\n\t\t\tconst optgroup = self.settings.optgroups;\n\t\t\tconst options = self.settings.options;\n\t\t\tconst optClass = ( value ) => self.isSelected(value) ? 'fancy-picker-option selected' : 'fancy-picker-option';\n\t\t\tif ( optgroup.length ) {\n\t\t\t\tfor ( let i = 0; i < optgroup.length; i++ ) {\n\t\t\t\t\tdropdownItems.push( `<div class=\"fancy-picker-option-group\">` );\n\t\t\t\t\tdropdownItems.push( `<div class=\"fancy-picker-option-group-label\">${optgroup[i][self.settings.labelField]}</div>` );\n\t\t\t\t\tconst group_options = options.filter( item => item[self.settings.optgroupField] === optgroup[i][self.settings.valueField]);\n\t\t\t\t\tfor (let ii = 0; ii < group_options.length; ii++ ) {\n\t\t\t\t\t\tlet option = group_options[i];\n\t\t\t\t\t\tdropdownItems.push( `<div class=\"${optClass( option[self.settings.valueField] )}\" data-value=\"${option[self.settings.valueField]}\">${option[self.settings.labelField]}</div>` );\n\t\t\t\t\t}\n\t\t\t\t\tdropdownItems.push( `</div>` );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\t\t\tlet option = options[i];\n\t\t\t\t\tdropdownItems.push( `<div class=\"${optClass( option[self.settings.valueField] )}\" data-value=\"${option[self.settings.valueField]}\">${option[self.settings.labelField]}</div>` );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.$dropdownContent.html(dropdownItems.join(''));\n\t\t\tself.$select.trigger('rendered');\n\t\t\tself.isRendered = true;\n\t\t},\n\t\t/**\n\t\t * Set Placeholder & Update Selected Data Placeholder\n\t\t * @return {FancySelect}\n\t\t */\n\t\tupdatePlaceholder: function () {\n\t\t\tlet self = this,\n\t\t\t\tplaceholderData = [];\n\t\t\tconst items = self.settings.items;\n\t\t\tconst maxItemShow = items.length > self.settings.maxItemShow ? self.settings.maxItemShow - 1 : self.settings.maxItemShow;\n\t\t\tself.originalPlaceholder.text(self.settings.placeholder);\n\t\t\t\n\t\t\tif (items.length) {\n\t\t\t\tself.originalPlaceholder.hide();\n\t\t\t} else {\n\t\t\t\tself.originalPlaceholder.show();\n\t\t\t}\n\t\t\t\n\t\t\titems.slice(0, maxItemShow).forEach( (item) => {\n\t\t\t\tplaceholderData.push( `<span>${item[self.settings.labelField]}</span>` );\n\t\t\t});\n\t\t\tself.dataPlaceholder.html( placeholderData.join( `<span class=\"fancy-picker-separator\">${self.settings.delimiter}</span>` ) );\n\t\t\t\n\t\t\tif (items.length > self.settings.maxItemShow) {\n\t\t\t\tlet title = [];\n\t\t\t\titems.forEach( (item) => {\n\t\t\t\t\ttitle.push(item[self.settings.labelField]);\n\t\t\t\t});\n\t\t\t\tself.dataCountPlaceholder.attr('title', title.join(self.settings.delimiter.trim() + ' '));\n\t\t\t\tself.dataCountPlaceholder.html('+' + (items.length - maxItemShow) + ' More &hellip;');\n\t\t\t} else {\n\t\t\t\tself.dataCountPlaceholder.removeAttr('title');\n\t\t\t\tself.dataCountPlaceholder.html('');\n\t\t\t}\n\t\t\t\n\t\t\tself.$select.trigger('placeholderChanged');\n\t\t\treturn self;\n\t\t},\n\t\t/**\n\t\t * Update The Original Select Tag\n\t\t * @param {boolean} ?silent\n\t\t * @return {FancySelect}\n\t\t */\n\t\tupdateOriginalInput: function (silent) {\n\t\t\tlet self = this,\n\t\t\t\toptions = [],\n\t\t\t\tchanged = false;\n\t\t\tsilent = true === silent ? true : false;\n\t\t\tconst items = self.settings.items;\n\t\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\t\toptions.push('<option value=\"' + items[i][self.settings.valueField] + '\" selected=\"selected\">' + items[i][self.settings.labelField] || '' + '</option>');\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\t\n\t\t\tself.$select.html(options.join(''));\n\t\t\t\n\t\t\tif (!silent && changed) {\n\t\t\t\tself.$select.trigger('change');\n\t\t\t}\n\t\t\treturn self;\n\t\t},\n\t\t/**\n\t\t * Get Selected Option Data (value, label, etc.)\n\t\t * @param {string} hash_key\n\t\t * @return {object|boolean}\n\t\t */\n\t\tgetSelectedOptionData: function (hash_key) {\n\t\t\tlet self = this,\n\t\t\t\tselected = self.settings.options.filter( x => x[self.settings.valueField] === hash_key );\n\t\t\treturn selected.length ? selected[0] : false;\n\t\t},\n\t\t/**\n\t\t * Check if input is selected (in the items list )\n\t\t * @param {string} hash_key\n\t\t * @return {boolean}\n\t\t */\n\t\tisSelected: function (hash_key) {\n\t\t\tlet self = this;\n\t\t\treturn self.settings.items.filter( x => x[self.settings.valueField] === hash_key ).length > 0;\n\t\t},\n\t\t/**\n\t\t * Convert input to it's best string representation.\n\t\t * @param {string|*} input\n\t\t * @return {string}\n\t\t */\n\t\thash_key: (input) => input + '',\n\t\t/**\n\t\t * Completely destroys the control and\n\t\t * unbinds all event listeners so that it can\n\t\t * be garbage collected.\n\t\t */\n\t\tdestroy: function () {\n\t\t\tlet self = this;\n\t\t\tself.$select.trigger('destroy');\n\t\t\tself.trigger('destroy');\n\t\t\tself.off();\n\t\t\tself.$select\n\t\t\t\t.html('')\n\t\t\t\t.append(self.revertSettings.$children)\n\t\t\t\t.removeAttr('tabindex')\n\t\t\t\t.removeClass('FancySelectInit')\n\t\t\t\t.attr({tabindex: self.revertSettings.tabindex})\n\t\t\t\t.show();\n\t\t\tself.$select.removeData('FancySelect');\n\t\t\tself.$wrapper.remove();\n\t\t\t\n\t\t\tif (--FancySelect.count === 0 && FancySelect.$testInput) {\n\t\t\t\tFancySelect.$testInput.remove();\n\t\t\t\tFancySelect.$testInput = undefined;\n\t\t\t} // this doesn't fire on create feed. as fields are loaded via ajax.\n\t\t\t// add custom event with the form object (with namespace)\n\t\t\t// trigger event on form.init()\n\t\t\t// remove previous listener on from.init(). first. so multiple listener not executed.\n\t\t\t// see selectize https://github.com/selectize/selectize.js/blob/master/src/selectize.js#L2097\n\t\t\t// add event listener here...\n\t\t\t\n\t\t\t\n\t\t\t$(window).off(self.eventNS);\n\t\t\t$(document).off(self.eventNS);\n\t\t\t$(document.body).off(self.eventNS);\n\t\t\tdelete self.$select[0].fancySelect;\n\t\t},\n\t\t\n\t});\n\t\n\t/**\n\t * MicroEvent - to make any js object an event emitter\n\t *\n\t * - pure javascript - server compatible, browser compatible\n\t * - dont rely on the browser doms\n\t * - super simple - you get it immediatly, no mistery, no magic involved\n\t *\n\t * @author Jerome Etienne (https://github.com/jeromeetienne)\n\t * @link https://github.com/jeromeetienne/microevent.js\n\t */\n\t$.extend(FancySelect.prototype, {\n\t\tbind\t: function(event, fct){\n\t\t\tthis._events = this._events || {};\n\t\t\tthis._events[event] = this._events[event]\t|| [];\n\t\t\tthis._events[event].push(fct);\n\t\t},\n\t\tunbind\t: function(event, fct){\n\t\t\tthis._events = this._events || {};\n\t\t\tif( event in this._events === false )\treturn;\n\t\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\n\t\t},\n\t\ttrigger\t: function(event /* , args... */){\n\t\t\tthis._events = this._events || {};\n\t\t\tif( event in this._events === false )\treturn;\n\t\t\tfor(let i = 0; i < this._events[event].length; i++){\n\t\t\t\tthis._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\t\t}\n\t});\n\t/**\n\t * jQuery Wrapper\n\t * @param {Object} [user_options]\n\t * @returns {jquery|HTMLElement}\n\t */\n\t$.fn.fancySelect = function(user_options) {\n\t\treturn this.each(function() {\n\t\t\tif (this.fancySelect) return;\n\t\t\tif ('select' !== this.tagName.toLowerCase()) return;\n\t\t\tnew FancySelect($(this), user_options);\n\t\t});\n\t};\n})(jQuery, window, document);\n"]}
admin/js/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/js/jquery-sortable.js CHANGED
@@ -26,8 +26,7 @@
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
  * ========================================================== */
29
-
30
-
31
  !function ( $, window, pluginName, undefined){
32
  var containerDefaults = {
33
  // If true, items can be dragged from this container
@@ -690,4 +689,4 @@
690
  });
691
  };
692
 
693
- }(jQuery, window, 'wf_sortable');
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
  * ========================================================== */
29
+ /* eslint-disable */
 
30
  !function ( $, window, pluginName, undefined){
31
  var containerDefaults = {
32
  // If true, items can be dragged from this container
689
  });
690
  };
691
 
692
+ }(jQuery, window, 'wf_sortable');
admin/js/jquery-sortable.min.js CHANGED
@@ -1,29 +1,2 @@
1
- /* ===================================================
2
- * jquery-sortable.js v0.9.13
3
- * http://johnny.github.com/jquery-sortable/
4
- * ===================================================
5
- * Copyright (c) 2012 Jonas von Andrian
6
- * All rights reserved.
7
- *
8
- * Redistribution and use in source and binary forms, with or without
9
- * modification, are permitted provided that the following conditions are met:
10
- * * Redistributions of source code must retain the above copyright
11
- * notice, this list of conditions and the following disclaimer.
12
- * * Redistributions in binary form must reproduce the above copyright
13
- * notice, this list of conditions and the following disclaimer in the
14
- * documentation and/or other materials provided with the distribution.
15
- * * The name of the author may not be used to endorse or promote products
16
- * derived from this software without specific prior written permission.
17
- *
18
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
- * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
22
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
- * ========================================================== */
29
- !function(u,s,a){var o={drag:!0,drop:!0,exclude:"",nested:!0,vertical:!0},n={afterMove:function(t,e,i){},containerPath:"",containerSelector:"ol, ul",distance:0,delay:0,handle:"",itemPath:"",itemSelector:"li",bodyClass:"dragging",draggedClass:"dragged",isValidTarget:function(t,e){return!0},onCancel:function(t,e,i,o){},onDrag:function(t,e,i,o){t.css(e)},onDragStart:function(t,e,i,o){t.css({height:t.outerHeight(),width:t.outerWidth()}),t.addClass(e.group.options.draggedClass),u("body").addClass(e.group.options.bodyClass)},onDrop:function(t,e,i,o){t.removeClass(e.group.options.draggedClass).removeAttr("style"),u("body").removeClass(e.group.options.bodyClass)},onMousedown:function(t,e,i){if(!i.target.nodeName.match(/^(input|select|textarea)$/i))return i.preventDefault(),!0},placeholderClass:"placeholder",placeholder:'<li class="placeholder"></li>',pullPlaceholder:!0,serialize:function(t,e,i){var o=u.extend({},t.data());return i?[e]:(e[0]&&(o.children=e),delete o.subContainers,delete o.sortable,o)},tolerance:0},e={},r=0,p={left:0,top:0,bottom:0,right:0},h={start:"touchstart.sortable mousedown.sortable",drop:"touchend.sortable touchcancel.sortable mouseup.sortable",drag:"touchmove.sortable mousemove.sortable",scroll:"scroll.sortable"},l="subContainers";function c(t,e){return Math.max(0,t[0]-e[0],e[0]-t[1])+Math.max(0,t[2]-e[1],e[1]-t[3])}function t(t,e,i,o){var s=t.length,n=o?"offset":"position";for(i=i||0;s--;){var r=t[s].el?t[s].el:u(t[s]),a=r[n]();a.left+=parseInt(r.css("margin-left"),10),a.top+=parseInt(r.css("margin-top"),10),e[s]=[a.left-i,a.left+r.outerWidth()+i,a.top-i,a.top+r.outerHeight()+i]}}function f(t,e){var i=e.offset();return{left:t.left-i.left,top:t.top-i.top}}function d(t,e,i){e=[e.left,e.top],i=i&&[i.left,i.top];for(var o,s=t.length,n=[];s--;)o=t[s],n[s]=[s,c(o,e),i&&c(o,i)];return n=n.sort(function(t,e){return e[1]-t[1]||e[2]-t[2]||e[0]-t[0]})}function g(t){this.options=u.extend({},n,t),this.containers=[],this.options.rootGroup||(this.scrollProxy=u.proxy(this.scroll,this),this.dragProxy=u.proxy(this.drag,this),this.dropProxy=u.proxy(this.drop,this),this.placeholder=u(this.options.placeholder),t.isValidTarget||(this.options.isValidTarget=a))}function m(t,e){this.el=t,this.options=u.extend({},o,e),this.group=g.get(this.options),this.rootGroup=this.options.rootGroup||this.group,this.handle=this.rootGroup.options.handle||this.rootGroup.options.itemSelector;var i=this.rootGroup.options.itemPath;this.target=i?this.el.find(i):this.el,this.target.on(h.start,this.handle,u.proxy(this.dragInit,this)),this.options.drop&&this.group.containers.push(this)}g.get=function(t){return e[t.group]||(t.group===a&&(t.group=r++),e[t.group]=new g(t)),e[t.group]},g.prototype={dragInit:function(t,e){this.$document=u(e.el[0].ownerDocument);var i=u(t.target).closest(this.options.itemSelector);if(i.length){if(this.item=i,this.itemContainer=e,this.item.is(this.options.exclude)||!this.options.onMousedown(this.item,n.onMousedown,t))return;this.setPointer(t),this.toggleListeners("on"),this.setupDelayTimer(),this.dragInitDone=!0}},drag:function(t){if(!this.dragging){if(!this.distanceMet(t)||!this.delayMet)return;this.options.onDragStart(this.item,this.itemContainer,n.onDragStart,t),this.item.before(this.placeholder),this.dragging=!0}this.setPointer(t),this.options.onDrag(this.item,f(this.pointer,this.item.offsetParent()),n.onDrag,t);var e=this.getPointer(t),i=this.sameResultBox,o=this.options.tolerance;(!i||i.top-o>e.top||i.bottom+o<e.top||i.left-o>e.left||i.right+o<e.left)&&(this.searchValidTarget()||(this.placeholder.detach(),this.lastAppendedItem=a))},drop:function(t){this.toggleListeners("off"),this.dragInitDone=!1,this.dragging&&(this.placeholder.closest("html")[0]?this.placeholder.before(this.item).detach():this.options.onCancel(this.item,this.itemContainer,n.onCancel,t),this.options.onDrop(this.item,this.getContainer(this.item),n.onDrop,t),this.clearDimensions(),this.clearOffsetParent(),this.lastAppendedItem=this.sameResultBox=a,this.dragging=!1)},searchValidTarget:function(t,e){t||(t=this.relativePointer||this.pointer,e=this.lastRelativePointer||this.lastPointer);for(var i=d(this.getContainerDimensions(),t,e),o=i.length;o--;){var s=i[o][0];if(!i[o][1]||this.options.pullPlaceholder){var n=this.containers[s];if(!n.disabled){if(!this.$getOffsetParent()){var r=n.getItemOffsetParent();t=f(t,r),e=f(e,r)}if(n.searchValidTarget(t,e))return!0}}}this.sameResultBox&&(this.sameResultBox=a)},movePlaceholder:function(t,e,i,o){var s=this.lastAppendedItem;!o&&s&&s[0]===e[0]||(e[i](this.placeholder),this.lastAppendedItem=e,this.sameResultBox=o,this.options.afterMove(this.placeholder,t,e))},getContainerDimensions:function(){return this.containerDimensions||t(this.containers,this.containerDimensions=[],this.options.tolerance,!this.$getOffsetParent()),this.containerDimensions},getContainer:function(t){return t.closest(this.options.containerSelector).data(s)},$getOffsetParent:function(){if(this.offsetParent===a){var t=this.containers.length-1,e=this.containers[t].getItemOffsetParent();if(!this.options.rootGroup)for(;t--;)if(e[0]!=this.containers[t].getItemOffsetParent()[0]){e=!1;break}this.offsetParent=e}return this.offsetParent},setPointer:function(t){var e=this.getPointer(t);if(this.$getOffsetParent()){var i=f(e,this.$getOffsetParent());this.lastRelativePointer=this.relativePointer,this.relativePointer=i}this.lastPointer=this.pointer,this.pointer=e},distanceMet:function(t){var e=this.getPointer(t);return Math.max(Math.abs(this.pointer.left-e.left),Math.abs(this.pointer.top-e.top))>=this.options.distance},getPointer:function(t){var e=t.originalEvent||t.originalEvent.touches&&t.originalEvent.touches[0];return{left:t.pageX||e.pageX,top:t.pageY||e.pageY}},setupDelayTimer:function(){var t=this;this.delayMet=!this.options.delay,this.delayMet||(clearTimeout(this._mouseDelayTimer),this._mouseDelayTimer=setTimeout(function(){t.delayMet=!0},this.options.delay))},scroll:function(t){this.clearDimensions(),this.clearOffsetParent()},toggleListeners:function(i){var o=this;u.each(["drag","drop","scroll"],function(t,e){o.$document[i](h[e],o[e+"Proxy"])})},clearOffsetParent:function(){this.offsetParent=a},clearDimensions:function(){this.traverse(function(t){t._clearDimensions()})},traverse:function(t){t(this);for(var e=this.containers.length;e--;)this.containers[e].traverse(t)},_clearDimensions:function(){this.containerDimensions=a},_destroy:function(){e[this.options.group]=a}},m.prototype={dragInit:function(t){var e=this.rootGroup;!this.disabled&&!e.dragInitDone&&this.options.drag&&this.isValidDrag(t)&&e.dragInit(t,this)},isValidDrag:function(t){return 1==t.which||"touchstart"==t.type&&1==t.originalEvent.touches.length},searchValidTarget:function(t,e){var i=d(this.getItemDimensions(),t,e),o=i.length,s=this.rootGroup,n=!s.options.isValidTarget||s.options.isValidTarget(s.item,this);if(!o&&n)return s.movePlaceholder(this,this.target,"append"),!0;for(;o--;){var r=i[o][0];if(!i[o][1]&&this.hasChildGroup(r)){if(this.getContainerGroup(r).searchValidTarget(t,e))return!0}else if(n)return this.movePlaceholder(r,t),!0}},movePlaceholder:function(t,e){var i=u(this.items[t]),o=this.itemDimensions[t],s="after",n=i.outerWidth(),r=i.outerHeight(),a=i.offset(),h={left:a.left,right:a.left+n,top:a.top,bottom:a.top+r};if(this.options.vertical){var l=(o[2]+o[3])/2;e.top<=l?(s="before",h.bottom-=r/2):h.top+=r/2}else{var c=(o[0]+o[1])/2;e.left<=c?(s="before",h.right-=n/2):h.left+=n/2}this.hasChildGroup(t)&&(h=p),this.rootGroup.movePlaceholder(this,i,s,h)},getItemDimensions:function(){return this.itemDimensions||(this.items=this.$getChildren(this.el,"item").filter(":not(."+this.group.options.placeholderClass+", ."+this.group.options.draggedClass+")").get(),t(this.items,this.itemDimensions=[],this.options.tolerance)),this.itemDimensions},getItemOffsetParent:function(){var t=this.el;return"relative"===t.css("position")||"absolute"===t.css("position")||"fixed"===t.css("position")?t:t.offsetParent()},hasChildGroup:function(t){return this.options.nested&&this.getContainerGroup(t)},getContainerGroup:function(t){var e=u.data(this.items[t],l);if(e===a){var i=this.$getChildren(this.items[t],"container");if(e=!1,i[0]){var o=u.extend({},this.options,{rootGroup:this.rootGroup,group:r++});e=i[s](o).data(s).group}u.data(this.items[t],l,e)}return e},$getChildren:function(t,e){var i=this.rootGroup.options,o=i[e+"Path"],s=i[e+"Selector"];return t=u(t),o&&(t=t.find(o)),t.children(s)},_serialize:function(t,e){var i=this,o=e?"item":"container",s=this.$getChildren(t,o).not(this.options.exclude).map(function(){return i._serialize(u(this),!e)}).get();return this.rootGroup.options.serialize(t,s,e)},traverse:function(i){u.each(this.items||[],function(t){var e=u.data(this,l);e&&e.traverse(i)}),i(this)},_clearDimensions:function(){this.itemDimensions=a},_destroy:function(){var e=this;this.target.off(h.start,this.handle),this.el.removeData(s),this.options.drop&&(this.group.containers=u.grep(this.group.containers,function(t){return t!=e})),u.each(this.items||[],function(){u.removeData(this,l)})}};var v={enable:function(){this.traverse(function(t){t.disabled=!1})},disable:function(){this.traverse(function(t){t.disabled=!0})},serialize:function(){return this._serialize(this.el,!0)},refresh:function(){this.traverse(function(t){t._clearDimensions()})},destroy:function(){this.traverse(function(t){t._destroy()})}};u.extend(m.prototype,v),u.fn[s]=function(i){var o=Array.prototype.slice.call(arguments,1);return this.map(function(){var t=u(this),e=t.data(s);return e&&v[i]?v[i].apply(e,o)||this:(e||i!==a&&"object"!=typeof i||t.data(s,new m(t,i)),this)})}}(jQuery,(window,"wf_sortable"));
1
+ "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(u,s,a){var o={drag:!0,drop:!0,exclude:"",nested:!0,vertical:!0},n={afterMove:function(){},containerPath:"",containerSelector:"ol, ul",distance:0,delay:0,handle:"",itemPath:"",itemSelector:"li",bodyClass:"dragging",draggedClass:"dragged",isValidTarget:function(){return!0},onCancel:function(){},onDrag:function(t,e){t.css(e)},onDragStart:function(t,e){t.css({height:t.outerHeight(),width:t.outerWidth()}),t.addClass(e.group.options.draggedClass),u("body").addClass(e.group.options.bodyClass)},onDrop:function(t,e){t.removeClass(e.group.options.draggedClass).removeAttr("style"),u("body").removeClass(e.group.options.bodyClass)},onMousedown:function(t,e,i){if(!i.target.nodeName.match(/^(input|select|textarea)$/i))return i.preventDefault(),!0},placeholderClass:"placeholder",placeholder:'<li class="placeholder"></li>',pullPlaceholder:!0,serialize:function(t,e,i){var o=u.extend({},t.data());return i?[e]:(e[0]&&(o.children=e),delete o.subContainers,delete o.sortable,o)},tolerance:0},e={},r=0,p={left:0,top:0,bottom:0,right:0},h={start:"touchstart.sortable mousedown.sortable",drop:"touchend.sortable touchcancel.sortable mouseup.sortable",drag:"touchmove.sortable mousemove.sortable",scroll:"scroll.sortable"},l="subContainers";function c(t,e){return Math.max(0,t[0]-e[0],e[0]-t[1])+Math.max(0,t[2]-e[1],e[1]-t[3])}function t(t,e,i,o){var s=t.length,n=o?"offset":"position";for(i=i||0;s--;){var r=t[s].el?t[s].el:u(t[s]),a=r[n]();a.left+=parseInt(r.css("margin-left"),10),a.top+=parseInt(r.css("margin-top"),10),e[s]=[a.left-i,a.left+r.outerWidth()+i,a.top-i,a.top+r.outerHeight()+i]}}function f(t,e){var i=e.offset();return{left:t.left-i.left,top:t.top-i.top}}function d(t,e,i){e=[e.left,e.top],i=i&&[i.left,i.top];for(var o,s=t.length,n=[];s--;)o=t[s],n[s]=[s,c(o,e),i&&c(o,i)];return n=n.sort(function(t,e){return e[1]-t[1]||e[2]-t[2]||e[0]-t[0]})}function g(t){this.options=u.extend({},n,t),this.containers=[],this.options.rootGroup||(this.scrollProxy=u.proxy(this.scroll,this),this.dragProxy=u.proxy(this.drag,this),this.dropProxy=u.proxy(this.drop,this),this.placeholder=u(this.options.placeholder),t.isValidTarget||(this.options.isValidTarget=a))}function m(t,e){this.el=t,this.options=u.extend({},o,e),this.group=g.get(this.options),this.rootGroup=this.options.rootGroup||this.group,this.handle=this.rootGroup.options.handle||this.rootGroup.options.itemSelector;var i=this.rootGroup.options.itemPath;this.target=i?this.el.find(i):this.el,this.target.on(h.start,this.handle,u.proxy(this.dragInit,this)),this.options.drop&&this.group.containers.push(this)}g.get=function(t){return e[t.group]||(t.group===a&&(t.group=r++),e[t.group]=new g(t)),e[t.group]},g.prototype={dragInit:function(t,e){this.$document=u(e.el[0].ownerDocument);var i=u(t.target).closest(this.options.itemSelector);if(i.length){if(this.item=i,this.itemContainer=e,this.item.is(this.options.exclude)||!this.options.onMousedown(this.item,n.onMousedown,t))return;this.setPointer(t),this.toggleListeners("on"),this.setupDelayTimer(),this.dragInitDone=!0}},drag:function(t){if(!this.dragging){if(!this.distanceMet(t)||!this.delayMet)return;this.options.onDragStart(this.item,this.itemContainer,n.onDragStart,t),this.item.before(this.placeholder),this.dragging=!0}this.setPointer(t),this.options.onDrag(this.item,f(this.pointer,this.item.offsetParent()),n.onDrag,t);var e=this.getPointer(t),i=this.sameResultBox,o=this.options.tolerance;(!i||i.top-o>e.top||i.bottom+o<e.top||i.left-o>e.left||i.right+o<e.left)&&(this.searchValidTarget()||(this.placeholder.detach(),this.lastAppendedItem=a))},drop:function(t){this.toggleListeners("off"),this.dragInitDone=!1,this.dragging&&(this.placeholder.closest("html")[0]?this.placeholder.before(this.item).detach():this.options.onCancel(this.item,this.itemContainer,n.onCancel,t),this.options.onDrop(this.item,this.getContainer(this.item),n.onDrop,t),this.clearDimensions(),this.clearOffsetParent(),this.lastAppendedItem=this.sameResultBox=a,this.dragging=!1)},searchValidTarget:function(t,e){t||(t=this.relativePointer||this.pointer,e=this.lastRelativePointer||this.lastPointer);for(var i=d(this.getContainerDimensions(),t,e),o=i.length;o--;){var s=i[o][0];if(!i[o][1]||this.options.pullPlaceholder){var n=this.containers[s];if(!n.disabled){if(!this.$getOffsetParent()){var r=n.getItemOffsetParent();t=f(t,r),e=f(e,r)}if(n.searchValidTarget(t,e))return!0}}}this.sameResultBox&&(this.sameResultBox=a)},movePlaceholder:function(t,e,i,o){var s=this.lastAppendedItem;!o&&s&&s[0]===e[0]||(e[i](this.placeholder),this.lastAppendedItem=e,this.sameResultBox=o,this.options.afterMove(this.placeholder,t,e))},getContainerDimensions:function(){return this.containerDimensions||t(this.containers,this.containerDimensions=[],this.options.tolerance,!this.$getOffsetParent()),this.containerDimensions},getContainer:function(t){return t.closest(this.options.containerSelector).data(s)},$getOffsetParent:function(){if(this.offsetParent===a){var t=this.containers.length-1,e=this.containers[t].getItemOffsetParent();if(!this.options.rootGroup)for(;t--;)if(e[0]!=this.containers[t].getItemOffsetParent()[0]){e=!1;break}this.offsetParent=e}return this.offsetParent},setPointer:function(t){var e=this.getPointer(t);if(this.$getOffsetParent()){var i=f(e,this.$getOffsetParent());this.lastRelativePointer=this.relativePointer,this.relativePointer=i}this.lastPointer=this.pointer,this.pointer=e},distanceMet:function(t){var e=this.getPointer(t);return Math.max(Math.abs(this.pointer.left-e.left),Math.abs(this.pointer.top-e.top))>=this.options.distance},getPointer:function(t){var e=t.originalEvent||t.originalEvent.touches&&t.originalEvent.touches[0];return{left:t.pageX||e.pageX,top:t.pageY||e.pageY}},setupDelayTimer:function(){var t=this;this.delayMet=!this.options.delay,this.delayMet||(clearTimeout(this._mouseDelayTimer),this._mouseDelayTimer=setTimeout(function(){t.delayMet=!0},this.options.delay))},scroll:function(){this.clearDimensions(),this.clearOffsetParent()},toggleListeners:function(i){var o=this;u.each(["drag","drop","scroll"],function(t,e){o.$document[i](h[e],o[e+"Proxy"])})},clearOffsetParent:function(){this.offsetParent=a},clearDimensions:function(){this.traverse(function(t){t._clearDimensions()})},traverse:function(t){t(this);for(var e=this.containers.length;e--;)this.containers[e].traverse(t)},_clearDimensions:function(){this.containerDimensions=a},_destroy:function(){e[this.options.group]=a}},m.prototype={dragInit:function(t){var e=this.rootGroup;!this.disabled&&!e.dragInitDone&&this.options.drag&&this.isValidDrag(t)&&e.dragInit(t,this)},isValidDrag:function(t){return 1==t.which||"touchstart"==t.type&&1==t.originalEvent.touches.length},searchValidTarget:function(t,e){var i=d(this.getItemDimensions(),t,e),o=i.length,s=this.rootGroup,n=!s.options.isValidTarget||s.options.isValidTarget(s.item,this);if(!o&&n)return s.movePlaceholder(this,this.target,"append"),!0;for(;o--;){var r=i[o][0];if(!i[o][1]&&this.hasChildGroup(r)){if(this.getContainerGroup(r).searchValidTarget(t,e))return!0}else if(n)return this.movePlaceholder(r,t),!0}},movePlaceholder:function(t,e){var i=u(this.items[t]),o=this.itemDimensions[t],s="after",n=i.outerWidth(),r=i.outerHeight(),a=i.offset(),h={left:a.left,right:a.left+n,top:a.top,bottom:a.top+r};if(this.options.vertical){var l=(o[2]+o[3])/2;e.top<=l?(s="before",h.bottom-=r/2):h.top+=r/2}else{var c=(o[0]+o[1])/2;e.left<=c?(s="before",h.right-=n/2):h.left+=n/2}this.hasChildGroup(t)&&(h=p),this.rootGroup.movePlaceholder(this,i,s,h)},getItemDimensions:function(){return this.itemDimensions||(this.items=this.$getChildren(this.el,"item").filter(":not(."+this.group.options.placeholderClass+", ."+this.group.options.draggedClass+")").get(),t(this.items,this.itemDimensions=[],this.options.tolerance)),this.itemDimensions},getItemOffsetParent:function(){var t=this.el;return"relative"===t.css("position")||"absolute"===t.css("position")||"fixed"===t.css("position")?t:t.offsetParent()},hasChildGroup:function(t){return this.options.nested&&this.getContainerGroup(t)},getContainerGroup:function(t){var e=u.data(this.items[t],l);if(e===a){var i=this.$getChildren(this.items[t],"container");if(e=!1,i[0]){var o=u.extend({},this.options,{rootGroup:this.rootGroup,group:r++});e=i[s](o).data(s).group}u.data(this.items[t],l,e)}return e},$getChildren:function(t,e){var i=this.rootGroup.options,o=i[e+"Path"],s=i[e+"Selector"];return t=u(t),o&&(t=t.find(o)),t.children(s)},_serialize:function(t,e){var i=this,o=e?"item":"container",s=this.$getChildren(t,o).not(this.options.exclude).map(function(){return i._serialize(u(this),!e)}).get();return this.rootGroup.options.serialize(t,s,e)},traverse:function(i){u.each(this.items||[],function(t){var e=u.data(this,l);e&&e.traverse(i)}),i(this)},_clearDimensions:function(){this.itemDimensions=a},_destroy:function(){var e=this;this.target.off(h.start,this.handle),this.el.removeData(s),this.options.drop&&(this.group.containers=u.grep(this.group.containers,function(t){return t!=e})),u.each(this.items||[],function(){u.removeData(this,l)})}};var v={enable:function(){this.traverse(function(t){t.disabled=!1})},disable:function(){this.traverse(function(t){t.disabled=!0})},serialize:function(){return this._serialize(this.el,!0)},refresh:function(){this.traverse(function(t){t._clearDimensions()})},destroy:function(){this.traverse(function(t){t._destroy()})}};u.extend(m.prototype,v),u.fn[s]=function(i){var o=Array.prototype.slice.call(arguments,1);return this.map(function(){var t=u(this),e=t.data(s);return e&&v[i]?v[i].apply(e,o)||this:(e||i!==a&&"object"!==_typeof(i)||t.data(s,new m(t,i)),this)})}}(jQuery,(window,"wf_sortable"));
2
+ //# sourceMappingURL=jquery-sortable.min.js.map
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/js/jquery-sortable.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["jquery-sortable.js"],"names":["Symbol","iterator","nested","$","pluginName","undefined","containerDefaults","drag","groupDefaults","exclude","containerPath","containerSelector","afterMove","distance","draggedClass","handle","itemPath","itemSelector","bodyClass","onDrag","isValidTarget","css","$item","position","addClass","onDragStart","container","removeClass","onMousedown","event","preventDefault","group","options","placeholderClass","removeAttr","_super","target","nodeName","match","placeholder","pullPlaceholder","parentIsContainer","result","sortable","serialize","$parent","$children","extend","data","containerGroups","groupCounter","emptyBox","subContainers","drop","subContainerKey","x","Math","i","length","d","a","b","top","offsetMethod","left","parseInt","el","getRelativePosition","element","sortByDistanceDesc","tolerance","offset","pointer","pos","distances","dimensions","outerWidth","outerHeight","dim","dropProxy","dragProxy","sort","proxy","ContainerGroup","get","this","containers","rootGroup","closestItem","item","disabled","itemDimensions","right","which","find","originalEvent","bottom","on","eventNames","start","dragInit","searchValidTarget","push","setPointer","dragInitDone","prototype","dragging","setupDelayTimer","box","itemContainer","e","toggleListeners","onCancel","detach","delayMet","clearDimensions","clearOffsetParent","relativePointer","lastPointer","sameResultBox","t","offsetParent","lastRelativePointer","getContainer","getContainerDimensions","onDrop","movePlaceholder","lastAppendedItem","$getOffsetParent","containerDimensions","setDimensions","closest","method","getPointer","getItemOffsetParent","that","distanceMet","events","$document","pageX","pageY","currentPointer","clearTimeout","abs","_mouseDelayTimer","o","touches","scroll","_clearDimensions","delay","each","setTimeout","callback","traverse","object","isValidDrag","Container","validTarget","_destroy","inUpperHalf","xCenter","inLeftHalf","index","getItemDimensions","hasChildGroup","items","getContainerGroup","childGroup","childContainers","yCenter","height","path","_serialize","width","removeData","enable","$getChildren","parent","type","isContainer","childType","children","selector","not","map","disable","off","grep","val","destroy","args","$t","API"],"mappings":"gDAAA,mBAAAA,QAAA,iBAAAA,OAAAC,4JAoCYC,SAAAC,EANgBC,EAAAC,GAOT,IAAAC,EAAA,CAPSC,MAAxB,EAUQC,MAAAA,EAGQC,QAAA,GAIRC,QAAAA,EAEAC,UAAAA,GAIAD,EAAAA,CAKAE,UAAA,aAbYF,cAAA,GAiBJC,kBAAA,SAERE,SAAA,EAGAC,MAAAA,EAEAC,OAAA,GAIAC,SAjCA,GAmCAC,aAAA,KA9BYC,UAAA,WAmCZC,aAAA,UAKQC,cAAA,WACEC,OAAAA,GAIVC,SAAAD,aAAAF,OAAA,SAAAG,EAAAC,GAIcD,EAAAA,IAAAE,IAOdC,YA7DA,SAAAH,EAAAI,GA8DQJ,EAAAD,IAAA,CACEM,OAAAA,EAAAA,cACJC,MAAAA,EAAQD,eAEdE,EAAAA,SAAAC,EAAAC,MAAAC,QAAAlB,cACAX,EAAA,QAAAqB,SAAAE,EAAAK,MAAAC,QAAAd,YAGQW,OAAAA,SAAAA,EAAAA,GACAI,EAAAA,YAAAP,EAAAK,MAvERC,QAAAlB,cAAAoB,WAAA,SAwEK/B,EAAA,QAAAwB,YAAAD,EAAAK,MAAAC,QAAAd,YAILU,YAAA,SAAAN,EAAAa,EAAAN,GACA,IAAAA,EAAAO,OAAAC,SAAAC,MAAA,8BAEAC,OADAC,EAAAA,kBACAD,GAKAN,iBAAAQ,cAWWC,YAAOC,gCAKlBH,iBAAA,EA9GRI,UAAA,SAAAC,EAAAC,EAAAL,GAAA,IAgHOC,EAAAvC,EAAA4C,OAAA,GAAAF,EAAAG,QACHC,OAAAA,EAjHJ,CAAAH,IAkHII,EAlHJ,KAAAR,EAmHIS,SAAWL,UAAAJ,EAAAU,qBAAAV,EAAAC,SAIDD,IAIAW,UAAA,GAFGJ,EAzHjB,GAAAC,EA+HII,EAEJH,EAAA,gCAKQI,EAAQC,CAARD,MACIC,yCACRH,KAAA,0DACH9C,KAAA,kEAGOkD,EAAUC,gBAKJ,SACNC,EAAAC,EAAAC,GAGIC,OAFSC,KAAAA,IAAAA,EAAAA,EAAAA,GAAAA,EAFP,GAAAF,EAAA,GAAAD,EAAA,IAGFI,KAAJA,IAAIA,EAAQC,EAAAA,GAAY5C,EAAH6C,GAAO7C,EAAA,GAAAuC,EAAA,IAc5BI,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,kBADGD,EAAPI,EAAO,SAAPC,WAMKC,IAFRC,EAAAA,GAAAC,EAEQF,KAAAA,CACEP,IAAAA,EAAIU,EAAQR,GAAAA,GAAMQ,EAAQV,GAAAA,GAAAA,EAAAA,EAAAA,IAGjCW,EAAAP,EAAAH,+CAAAU,EAAAX,KAEIY,SAAAA,EAAAA,IAFJC,cAAAH,IAHAA,EAAUf,GAACe,CAAAA,EAAQR,KAAMQ,EAAzBC,EAAAT,KAAAE,EAAAU,aAAAN,EAAAG,EAAAX,IAAAQ,EAAAG,EAAAX,IAAAI,EAAAW,cAAAP,IASII,SAJAA,EAIAA,EAAAA,oBAGA,MAAA,CAGJI,KAAAN,EAAAG,KAAAJ,EAAAP,KANIU,IAAAA,EAAUjB,IAAMA,EAAIqB,KAGpB,SAAAT,EAAuBM,EAAhBH,EAAqCZ,GAOpDY,EAEI,CAAAA,EAAAR,KAAAQ,EAAAV,yBAKI,IAVJ,IAAAgB,EAOArB,EAAAkB,EAAAjB,YAGSqB,KACLD,EAAKvC,EAALkB,6BAIH,OANGiB,EAAKM,EAAaC,KAACC,SAAW3E,EAAbsD,GASzBsB,OAAAA,EAAeC,GAAAA,EAAAA,IAAMF,EAAAA,GAAWlD,EAAAA,IAAX6B,EAAoB,GAAzCsB,EAAAA,KAAAA,SAAAA,EAAqBnD,GAWrBmD,KAAAA,QAAAA,EAAAA,OAAAnD,GAAAA,EAA2BA,GACfqD,KAAAC,WAAEvD,GAMNsD,KAAArD,QAAAuD,uDACAF,KAAAL,UAAIQ,EAAAA,MAAoBxD,KAAAA,KAAAD,MAnBhCsD,KAAAN,UAAA5E,EAAA+E,MAAAG,KAAAhC,KAAAgC,mDAWAF,EAAc/D,gBAAaiE,KAAArD,QAAAZ,cAAAf,IAsOL,SAAAkF,EAAAnB,EAAAmB,aA2CVE,KAAAA,QAASC,EAAAA,OAAL,GACEH,EAAKI,GAGLJ,KAAAA,MAAAA,EAJVH,IAIUC,KAAArD,SACNuC,KAAAA,UAAAA,KAAAA,QAAAA,WAAAA,KAAAA,MALJc,KAJStE,OAAAsE,KAAAE,UAAAvD,QAAAjB,QAAAsE,KAAAE,UAAAvD,QAAAf,aAWD+C,IAAAA,EAAaA,KAAAA,UAAAA,QAAAA,SACb4B,KAAAA,OAAaC,EAANtB,KACFA,GAAFuB,KAAShC,GAATuB,KAHSU,GAIZC,KAdC5D,OAAA6D,GAAAC,EAAAC,MAAAd,KAAAtE,OAAAZ,EAAA+E,MAAAG,KAAAe,SAAAf,OAITgB,KAAAA,QAAAA,MAAAhB,KAAAtD,MAAAuD,WAAAgB,KAAA9B,MAnQIW,EAAKoB,IAAL,SAAAnE,UAEAa,EAAAjB,EAAAD,oCACAkB,EAAKuD,EAAe9C,OAApB,IAAAyB,EAAAnD,gBAKImD,EAAAsB,UAAA,wBAGCzE,KAAAA,UAAQP,EAAAA,EAARO,GAAAA,GAAAA,eAEA0E,IAAAA,EAALC,EAAAA,EAAAA,QAAKD,QAAAA,KAAAA,QAAAA,cAGT,GA9BmBlB,EAAA9B,OAAA,CAyChB,GArBPnD,KAAIkF,KAAED,EAYGxD,KAAAA,cAAAA,EASFqD,KAAWrD,KAAAA,GAAHP,KAAAA,QAAuBmF,WAAAvB,KAAAwB,QAAAA,YAA8B7C,KAAaA,KAAAA,EAA1EpC,YAAAkF,GAEUvE,0BAIX8C,KAAA0B,gBA3Bc,6BA8BXP,KAAAA,cAALrF,IAKQZ,KAAA,SAEayG,GAhBrB,IAAA3B,KAAIuB,SAAW9C,CAEP,IAAAuB,KAAK9C,YAAY0E,KAAjB5B,KAAA6B,SAAA,OAmBCC,KAAAA,QAAAA,YAAAA,KAAL9G,KAAAA,KAAK8G,cAAAA,EAAAA,YAAAA,GACAC,KAAAA,KAAAA,OAAAA,KAAAA,aACL/B,KAhEeqB,UAAA,EAoEvBL,KAAAA,WAAAA,GAEQ7B,KAAAA,QAAUkC,OAAVlC,KAAe6C,KAAAA,EAAAA,KAAAA,QAAAA,KAAAA,KAAAA,gBAAAA,EAAAA,OAAAA,GACfC,IAAAA,EAAAA,KAAAA,WAAAA,GACHV,EAAAvB,KAAAkC,cAjBOC,EAAAnC,KAAArD,QAAKO,YAmBTmC,GAAYL,EAAAA,IAAAA,EAAAA,EAAAA,KAAAA,EAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAAA,KAAAA,EAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,EAAAA,QAGRK,KAAAA,sBAnBHW,KAAA9C,YAAA0E,oCAID5D,KAAA,SAAK8D,GAqBDtG,KAAAA,gBAADuG,OACK1F,KAAAA,cAAAA,EACJ2D,KAAAqB,WAEQL,KAAAA,YAAIoB,QAAAA,QAAAA,GACJjD,KAAAA,YAAUL,OAAAA,KAAAA,MAAAA,SAEbmD,KAAAA,QAAAA,SAAAI,KAAAA,KAAAA,KAAAA,cAAAJ,EAAAN,SAAAF,GAGJzB,KAAArD,QAAA0C,OAAAL,KAAAA,KAAAA,KAAAsD,aAAAC,KAAAA,MAAAA,EAAAC,OAERP,0BA/FkBjC,KAAA+B,oBAmGvBU,KAAAA,iBAAiBpD,KAAA6C,cAAjBO,EAAAA,KAAAA,UACwB,IAKfC,kBAAAA,SAAAA,EAAAA,OACAR,EAAAA,KAAL7F,iBAAA2D,KAAAb,QACa5D,EAAbyE,KAAuB2C,qBAAkBtG,KAAAA,aA3GtB,IA8GVuG,IAAAA,EAAAA,EACLC,KAAAA,yBAAoCD,EAD/BA,GAEGA,EAAAA,EAAAA,OAhHOxE,KAAA,CAmHJ0E,IAAAA,EAAAA,EAAAA,GAAAA,OAnHIzD,EAAAjB,GAAA,kCAsHhB,IAAA/B,EAAK+F,KAAAA,WACSnC,GApBrBwC,IAAAA,EAAepC,SAAE,CAuBN,IAACqC,KAAAA,mBAAuBA,CACvB,IAAAR,EAAA7F,EAAUqG,sBAGFtC,EAAAtB,EAAAK,EAAAiD,GACAH,EAAAS,EAAAT,EAAAG,GA/HG,GAAA/F,EAAA2E,kBAAA7B,EAAA8C,GAAA,OAAA,IAwIlBK,KAAAA,gBAAAtC,KAAAkC,cAAAlH,IACDyH,gBAzImB,SAAApG,EAAA+D,EAAA2C,EAAAb,GAAAS,IAAAA,EAAA3C,KAAA0C,kBA2IvBxB,GAAYkB,GAAaM,EAAA,KAAAtC,EAAA,KACjBjB,EAAAA,GAAUa,KAAKgD,aAAf7D,KAAAA,iBApBmBiB,uBAuBf4B,KAAAA,QAAAA,UAAkBlD,KAAAA,YAAAA,EAAAA,KAEjBkD,uBAAAA,WAnBO,OAoBfhC,KAAA4C,qBAAAC,EAAA7C,KAAAC,WAAAD,KAAA4C,oBAAA,GAAA5C,KAAArD,QAAAsC,WAAAe,KAAA2C,oBApBe3C,KAAA4C,qBAuBhBN,aAAA,SAAAvD,GArJmBqD,OAAAA,EAAAA,QAAApC,KAAArD,QAAArB,mBAAAqC,KAAA5C,IAwJD4H,iBAAA,WACV,GAAA3C,KAAAoC,eAAApH,EAAA,CAzJW,IAAAoD,EAAA4B,KAAAC,WAAA5B,OAAA,6CAgKZ,IAAA2B,KAAArD,QAAAuD,oBACC,GAAAkC,EAAEA,IAAAA,KAAFnC,WAAA7B,GAAA6E,sBAAA,GAAA,CAKJC,GAAOP,EACNd,MAMGqB,KAAAA,aAAAA,EA7KWC,OAAAA,KAAAf,cAkLdN,WAAAA,SACAC,GAGL,IAtLmB5C,EAAAa,KAAAgD,WAAAvB,GAyLnB,GAAAzB,KAAOoD,mBAAP,CACQ,IAAApB,EAACqB,EAAAA,EAAAA,KAAAA,oBADT1E,KAAAA,oBAAA2E,KACSD,gBA1LU5E,KAAAA,gBAAA8E,EAAAjC,KAAAA,YAAAtB,KAAAb,QAgMvBa,KAAAb,QAAAA,2BAEI,IAAAqE,EAAAxD,KAAAgD,WAAAvB,GAlMmBgC,OAAAA,KAAAA,IAAAA,KAAAC,IAAAC,KAAAA,QAAAA,KAAAH,EAAA7E,MAAAR,KAAAuF,IAAA1D,KAAAb,QAAAV,IAAA+E,EAAA/E,OAAAuB,KAAArD,QAAAnB,UAuMnB0H,WAAA,SAAAzB,GACQ,IAAAmC,EAAK3D,EAAAA,eAFPwB,EAAAf,cAAAmD,SAAApC,EAAAf,cAAAmD,QAAA,GAvBL,MAAA,CA0BDlF,KAzMmB8C,EAAA6B,OAAAM,EAAAN,MA0MfQ,IAAAA,EAAK7D,OAAAA,EAAAA,QAGb8D,gBA7MuB,WA8MnBrC,IAAAA,EAAAA,KA9MmB1B,KAAA6B,UAAA7B,KAAArD,QAAAqH,MAkNtBC,KAAAb,WAlNLF,aAAAG,KAAAM,kBA2LS3D,KAuBJ2D,iBAAAO,WAAA,WAlNsBhB,EAAArB,UAAA,GAsNvBE,KAAAA,QAAAA,SAIA+B,OAAA,WACAhC,KAAAA,kBAEInG,KAAAA,qBAGCoB,gBAHDpB,SAAAA,GAKD,IAlOoBuH,EAAAlD,KAuMnBmE,EAAAA,KA6BP,CAAA,OAAA,OAAA,UA7BgB,SAAT/F,EAAA5B,GA+BE4E,EAAAA,UAAYnB,GAAAA,EAAZmB,GAAAA,EAAAA,EAAAA,aAEElB,kBAASD,WA7BZD,KAAAoC,aAAApH,GAoCA8G,gBAAAc,WATa5C,KAtOKoE,SAAA,SAAAC,GAiPvBC,EAAAA,sBAjPuBF,SAA3B,SAAAD,WAsPQ,IAAA,IAAA/F,EAGKmG,KAAAA,WAAYxF,OAEbyF,KAGJxE,KAAGtD,WAAM8H,GAAAA,SAAYzE,IAKbgE,iBAAY1E,WAAZW,KAAA4C,oBACyBxE,GAGrBqG,SAAA,WAIA7G,EAAAoC,KAAArD,QAAAD,OAAA1B,IArBZuJ,EAIIrE,UAAY,CAJhBa,SA0CO2D,SAAYxE,yBAKZA,KAAAA,WAAAuC,EAAAtB,cAAAnB,KAAArD,QAAAzB,MAAA8E,KAAAsE,YAAA7C,IACCkD,EAAAA,SAAAA,EAAAA,OAEDC,YACUpJ,SAATiG,+EAGAS,kBAAA,SAAA2C,EAAA7D,GACP,IAAA3B,EAAAL,EArCegB,KAAA8E,oBAAA3F,EAAA8C,GAsCR8C,EAAAA,EAEOtC,OA1EDvC,EAAAuC,KAAAA,UA4EC+B,GAAAtE,EAAAvD,QAAAZ,eAAAmE,EAAAvD,QAAAZ,cAAAmE,EAAAE,KAAAJ,MAENgF,IAAAA,GAAAA,EAIRvC,OADGI,EA1CKJ,gBAAAzC,KAAAA,KAAAjD,OAAA,WA2CR0F,EAvCD,KAwCOhD,KAAKa,CAxCZ,IAAAuE,EA3CcxF,EA2CdjB,GAAA,GAAA,IA0CJ6E,EAAqB1D,GAAAA,IAGjBa,KAAAlB,cA7CA2F,IAOQlG,GAuCRuD,KAAA+C,kBAAAJ,GAAA7D,kBAAA7B,EAAA8C,GAvCc/C,OAAOP,OAwCX4B,GAAPrB,EA1FWyB,OA8FPyB,KAAAA,gBALPyC,EAAA1F,IAzFcwB,IAAA8B,gBAAA,SAAAoC,EAAA1F,GAAA,IAAAiB,EAmGlB6E,EAAAA,KAAAA,MAAmB9F,6BACX+F,EAAAA,QAzCInC,EAAAA,EAAMxD,aA0CA2C,EAAAA,EAAAA,cACNiD,EAFJD,EAGUhD,SAxCbA,EAAM,CA0CAiD,KAAAA,EAAAA,KAAAA,MACKxI,EAAAA,KAAmBwC,YACnBe,OAAAA,EAAAA,IAAgBA,GAGpBgF,GAAAA,KAHIhF,QAIPgC,SAAAvD,CAxCJ,IAAAyG,GAAA3F,EAAA,GAAAA,EAAA,IAAA,YAhCQsD,EAAA,SAvCK+B,EAAAA,QAAAO,EAAA,GAoHNnD,EAAE5B,KAAA+E,EAAA,MACN1I,CAIMkG,IAAAA,GAAAA,EAAV,GAAAmC,EAAA,IAAA,EACGM,EAAAA,MAAAA,GAnFMvC,EAAA,SAwFbwC,EAAAA,OAAYC,EAAA,GACApD,EAAJc,MAAAA,EAAAA,+BAGWlD,KAAAE,UAHfuC,gBAAAzC,KAAAI,EAAA2C,EAAAb,IAWI4C,kBApGK,kBAqGLC,KAAAA,iBAFJ/E,KAAAgF,MAAAhF,KAAArD,aAAAqD,KAAAnB,GAAAoG,QAAAA,OAAAJ,SAAA7E,KAAAtD,MAAAC,QAAAC,iBAAA,MAAAoD,KAAAtD,MAAAC,QAAAlB,aAAA,KAAAsE,MAMAoE,EAzGSnE,KAAAgF,MAAAhF,KAAAM,eAAA,GAAAN,KAAArD,QAAAsC,iCAvCKgE,oBAAAkC,WAqJRD,cAIN,MAGejF,aADCjC,EAAAA,IAAAA,aAFhB,aAAAa,EAAA7C,IAAA,aAAA,UAAA6C,EAAA7C,IAAA,YAAA6C,EAIQhB,EAAAA,gBAIF4H,cAAAA,SAAAA,0DAETR,kBAAA,SAAAJ,iCAGE,GA/HUK,IAAAlK,EAAA,CAgIb0K,IAAAA,EAAQ1F,KAAA2F,aAAWC,KAAAC,MAAAhB,GAAA,aACVT,GAAAA,GAAS,EAATA,EAALzH,GAAA,CAIGiJ,IAAAA,EAAEA,EAAAA,OAAF,GAAA5F,KAAArD,QAAA,CACEyH,UACM/D,KAAAA,UART3D,MAAAkJ,MAYFL,EAAYA,EAAAA,GAAoBO,GAApBP,KAAZxK,GAAA2B,MAZE5B,EAAA6C,KAgBSoG,KAAAA,MAAAA,GAAP4B,EAAAI,GAIC3B,OAAAA,GAALA,aAAA,SAAAD,EAAA0B,GAGH/K,IAAA6B,EAAAqD,KAAAgF,UAAArI,QAvBL2I,EAAA3I,EAAAkJ,EAAA,QA0BStB,EAAAA,EAET7H,EAAA0H,YAjDK,OAHIwB,EA+CJ9K,EAAA8K,GA7CGzB,IAAAA,EAAAyB,EAAAnF,KAAA6E,IAzGSM,EAAAI,SAAAC,IA4GTV,WAAKjF,SAAiBtF,EAAtB8K,GACH,IA7GY5C,EAAAlD,KAkKZjF,EAAL+K,EAAA,OAAmB,YACPE,EAAQhG,KAACoB,aAATwE,EAAAG,GAAAG,IAAAlG,KAAArD,QAAAvB,SAAA+K,IAAA,WAGE,OAAKpJ,EAALwI,WAAN1E,EAAAA,OAAMiF,KACFzB,MAQJ,OAAOrE,KAAPrD,UAAAqB,QAVJT,UAAA0C,EAAA+F,EAAAF,IAxoBP1B,SAwoBO,SAAAD,GA5CIrJ,EAAAA,KAAEmJ,KAAKe,OAAA,GAAc,SAAI5E,GACrBtF,IAAAA,EAAE2K,EAAAA,KAAWzF,KAAM/B,GADvBvB,GAAAA,EAAA0H,SAAAD,KAzHSA,EAAAnE,OAgIb0F,iBAAQ,WACJ1F,KAAAM,eAActF,GAEbyJ,SAFD,WAGH,IALKvB,EAAAlD,KAMNoG,KAAAA,OAASC,IAAAxF,EAAAC,MAAWd,KAAAtE,QAChBsE,KAAAnB,GAAKuF,WAASrJ,GACVsJ,KAAAA,QAAOhE,OAAWL,KAAlBtD,MAAAuD,WAAAnF,EAAAwL,KAAAtG,KAAAtD,MAAAuD,WAAA,SAAAsG,GACH,OAFDA,GAAArD,KAIJ3F,EAAAA,KAAAA,KAAWyH,OAAA,GAAA,WACPlK,EAAA2K,WAAOzF,KAAKuF,OAIRlB,IAAAA,EAAAA,CACHqB,OAFD,WAGH1F,KAlBKoE,SAAA,SAAAC,GAmBNmC,EAAOnG,UAAE,KAGJ+F,QAFD,WAGHpG,KAAAoE,SAAA,SAAAC,GAvBLA,EAAAhE,UAAA,mIAoCImG,QAAIC,WAEJzG,KAAAoE,SAAY+B,SAAI9B,GACZA,EAAIqC,eAUP5L,EAAA4C,OAXD6G,EAAAnD,UAAAuF,+NAjoBI9L","file":"jquery-sortable.min.js","sourcesContent":["/* ===================================================\n * jquery-sortable.js v0.9.13\n * http://johnny.github.com/jquery-sortable/\n * ===================================================\n * Copyright (c) 2012 Jonas von Andrian\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * The name of the author may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n * ========================================================== */\n/* eslint-disable */\n!function ( $, window, pluginName, undefined){\n var containerDefaults = {\n // If true, items can be dragged from this container\n drag: true,\n // If true, items can be droped onto this container\n drop: true,\n // Exclude items from being draggable, if the\n // selector matches the item\n exclude: \"\",\n // If true, search for nested containers within an item.If you nest containers,\n // either the original selector with which you call the plugin must only match the top containers,\n // or you need to specify a group (see the bootstrap nav example)\n nested: true,\n // If true, the items are assumed to be arranged vertically\n vertical: true\n }, // end container defaults\n groupDefaults = {\n // This is executed after the placeholder has been moved.\n // $closestItemOrContainer contains the closest item, the placeholder\n // has been put at or the closest empty Container, the placeholder has\n // been appended to.\n afterMove: function ($placeholder, container, $closestItemOrContainer) {\n },\n // The exact css path between the container and its items, e.g. \"> tbody\"\n containerPath: \"\",\n // The css selector of the containers\n containerSelector: \"ol, ul\",\n // Distance the mouse has to travel to start dragging\n distance: 0,\n // Time in milliseconds after mousedown until dragging should start.\n // This option can be used to prevent unwanted drags when clicking on an element.\n delay: 0,\n // The css selector of the drag handle\n handle: \"\",\n // The exact css path between the item and its subcontainers.\n // It should only match the immediate items of a container.\n // No item of a subcontainer should be matched. E.g. for ol>div>li the itemPath is \"> div\"\n itemPath: \"\",\n // The css selector of the items\n itemSelector: \"li\",\n // The class given to \"body\" while an item is being dragged\n bodyClass: \"dragging\",\n // The class giving to an item while being dragged\n draggedClass: \"dragged\",\n // Check if the dragged item may be inside the container.\n // Use with care, since the search for a valid container entails a depth first search\n // and may be quite expensive.\n isValidTarget: function ($item, container) {\n return true\n },\n // Executed before onDrop if placeholder is detached.\n // This happens if pullPlaceholder is set to false and the drop occurs outside a container.\n onCancel: function ($item, container, _super, event) {\n },\n // Executed at the beginning of a mouse move event.\n // The Placeholder has not been moved yet.\n onDrag: function ($item, position, _super, event) {\n $item.css(position)\n },\n // Called after the drag has been started,\n // that is the mouse button is being held down and\n // the mouse is moving.\n // The container is the closest initialized container.\n // Therefore it might not be the container, that actually contains the item.\n onDragStart: function ($item, container, _super, event) {\n $item.css({\n height: $item.outerHeight(),\n width: $item.outerWidth()\n })\n $item.addClass(container.group.options.draggedClass)\n $(\"body\").addClass(container.group.options.bodyClass)\n },\n // Called when the mouse button is being released\n onDrop: function ($item, container, _super, event) {\n $item.removeClass(container.group.options.draggedClass).removeAttr(\"style\")\n $(\"body\").removeClass(container.group.options.bodyClass)\n },\n // Called on mousedown. If falsy value is returned, the dragging will not start.\n // Ignore if element clicked is input, select or textarea\n onMousedown: function ($item, _super, event) {\n if (!event.target.nodeName.match(/^(input|select|textarea)$/i)) {\n event.preventDefault()\n return true\n }\n },\n // The class of the placeholder (must match placeholder option markup)\n placeholderClass: \"placeholder\",\n // Template for the placeholder. Can be any valid jQuery input\n // e.g. a string, a DOM element.\n // The placeholder must have the class \"placeholder\"\n placeholder: '<li class=\"placeholder\"></li>',\n // If true, the position of the placeholder is calculated on every mousemove.\n // If false, it is only calculated when the mouse is above a container.\n pullPlaceholder: true,\n // Specifies serialization of the container group.\n // The pair $parent/$children is either container/items or item/subcontainers.\n serialize: function ($parent, $children, parentIsContainer) {\n var result = $.extend({}, $parent.data())\n\n if(parentIsContainer)\n return [$children]\n else if ($children[0]){\n result.children = $children\n }\n\n delete result.subContainers\n delete result.sortable\n\n return result\n },\n // Set tolerance while dragging. Positive values decrease sensitivity,\n // negative values increase it.\n tolerance: 0\n }, // end group defaults\n containerGroups = {},\n groupCounter = 0,\n emptyBox = {\n left: 0,\n top: 0,\n bottom: 0,\n right:0\n },\n eventNames = {\n start: \"touchstart.sortable mousedown.sortable\",\n drop: \"touchend.sortable touchcancel.sortable mouseup.sortable\",\n drag: \"touchmove.sortable mousemove.sortable\",\n scroll: \"scroll.sortable\"\n },\n subContainerKey = \"subContainers\"\n\n /*\n * a is Array [left, right, top, bottom]\n * b is array [left, top]\n */\n function d(a,b) {\n var x = Math.max(0, a[0] - b[0], b[0] - a[1]),\n y = Math.max(0, a[2] - b[1], b[1] - a[3])\n return x+y;\n }\n\n function setDimensions(array, dimensions, tolerance, useOffset) {\n var i = array.length,\n offsetMethod = useOffset ? \"offset\" : \"position\"\n tolerance = tolerance || 0\n\n while(i--){\n var el = array[i].el ? array[i].el : $(array[i]),\n // use fitting method\n pos = el[offsetMethod]()\n pos.left += parseInt(el.css('margin-left'), 10)\n pos.top += parseInt(el.css('margin-top'),10)\n dimensions[i] = [\n pos.left - tolerance,\n pos.left + el.outerWidth() + tolerance,\n pos.top - tolerance,\n pos.top + el.outerHeight() + tolerance\n ]\n }\n }\n\n function getRelativePosition(pointer, element) {\n var offset = element.offset()\n return {\n left: pointer.left - offset.left,\n top: pointer.top - offset.top\n }\n }\n\n function sortByDistanceDesc(dimensions, pointer, lastPointer) {\n pointer = [pointer.left, pointer.top]\n lastPointer = lastPointer && [lastPointer.left, lastPointer.top]\n\n var dim,\n i = dimensions.length,\n distances = []\n\n while(i--){\n dim = dimensions[i]\n distances[i] = [i,d(dim,pointer), lastPointer && d(dim, lastPointer)]\n }\n distances = distances.sort(function (a,b) {\n return b[1] - a[1] || b[2] - a[2] || b[0] - a[0]\n })\n\n // last entry is the closest\n return distances\n }\n\n function ContainerGroup(options) {\n this.options = $.extend({}, groupDefaults, options)\n this.containers = []\n\n if(!this.options.rootGroup){\n this.scrollProxy = $.proxy(this.scroll, this)\n this.dragProxy = $.proxy(this.drag, this)\n this.dropProxy = $.proxy(this.drop, this)\n this.placeholder = $(this.options.placeholder)\n\n if(!options.isValidTarget)\n this.options.isValidTarget = undefined\n }\n }\n\n ContainerGroup.get = function (options) {\n if(!containerGroups[options.group]) {\n if(options.group === undefined)\n options.group = groupCounter ++\n\n containerGroups[options.group] = new ContainerGroup(options)\n }\n\n return containerGroups[options.group]\n }\n\n ContainerGroup.prototype = {\n dragInit: function (e, itemContainer) {\n this.$document = $(itemContainer.el[0].ownerDocument)\n\n // get item to drag\n var closestItem = $(e.target).closest(this.options.itemSelector);\n // using the length of this item, prevents the plugin from being started if there is no handle being clicked on.\n // this may also be helpful in instantiating multidrag.\n if (closestItem.length) {\n this.item = closestItem;\n this.itemContainer = itemContainer;\n if (this.item.is(this.options.exclude) || !this.options.onMousedown(this.item, groupDefaults.onMousedown, e)) {\n return;\n }\n this.setPointer(e);\n this.toggleListeners('on');\n this.setupDelayTimer();\n this.dragInitDone = true;\n }\n },\n drag: function (e) {\n if(!this.dragging){\n if(!this.distanceMet(e) || !this.delayMet)\n return\n\n this.options.onDragStart(this.item, this.itemContainer, groupDefaults.onDragStart, e)\n this.item.before(this.placeholder)\n this.dragging = true\n }\n\n this.setPointer(e)\n // place item under the cursor\n this.options.onDrag(this.item,\n getRelativePosition(this.pointer, this.item.offsetParent()),\n groupDefaults.onDrag,\n e)\n\n var p = this.getPointer(e),\n box = this.sameResultBox,\n t = this.options.tolerance\n\n if(!box || box.top - t > p.top || box.bottom + t < p.top || box.left - t > p.left || box.right + t < p.left)\n if(!this.searchValidTarget()){\n this.placeholder.detach()\n this.lastAppendedItem = undefined\n }\n },\n drop: function (e) {\n this.toggleListeners('off')\n\n this.dragInitDone = false\n\n if(this.dragging){\n // processing Drop, check if placeholder is detached\n if(this.placeholder.closest(\"html\")[0]){\n this.placeholder.before(this.item).detach()\n } else {\n this.options.onCancel(this.item, this.itemContainer, groupDefaults.onCancel, e)\n }\n this.options.onDrop(this.item, this.getContainer(this.item), groupDefaults.onDrop, e)\n\n // cleanup\n this.clearDimensions()\n this.clearOffsetParent()\n this.lastAppendedItem = this.sameResultBox = undefined\n this.dragging = false\n }\n },\n searchValidTarget: function (pointer, lastPointer) {\n if(!pointer){\n pointer = this.relativePointer || this.pointer\n lastPointer = this.lastRelativePointer || this.lastPointer\n }\n\n var distances = sortByDistanceDesc(this.getContainerDimensions(),\n pointer,\n lastPointer),\n i = distances.length\n\n while(i--){\n var index = distances[i][0],\n distance = distances[i][1]\n\n if(!distance || this.options.pullPlaceholder){\n var container = this.containers[index]\n if(!container.disabled){\n if(!this.$getOffsetParent()){\n var offsetParent = container.getItemOffsetParent()\n pointer = getRelativePosition(pointer, offsetParent)\n lastPointer = getRelativePosition(lastPointer, offsetParent)\n }\n if(container.searchValidTarget(pointer, lastPointer))\n return true\n }\n }\n }\n if(this.sameResultBox)\n this.sameResultBox = undefined\n },\n movePlaceholder: function (container, item, method, sameResultBox) {\n var lastAppendedItem = this.lastAppendedItem\n if(!sameResultBox && lastAppendedItem && lastAppendedItem[0] === item[0])\n return;\n\n item[method](this.placeholder)\n this.lastAppendedItem = item\n this.sameResultBox = sameResultBox\n this.options.afterMove(this.placeholder, container, item)\n },\n getContainerDimensions: function () {\n if(!this.containerDimensions)\n setDimensions(this.containers, this.containerDimensions = [], this.options.tolerance, !this.$getOffsetParent())\n return this.containerDimensions\n },\n getContainer: function (element) {\n return element.closest(this.options.containerSelector).data(pluginName)\n },\n $getOffsetParent: function () {\n if(this.offsetParent === undefined){\n var i = this.containers.length - 1,\n offsetParent = this.containers[i].getItemOffsetParent()\n\n if(!this.options.rootGroup){\n while(i--){\n if(offsetParent[0] != this.containers[i].getItemOffsetParent()[0]){\n // If every container has the same offset parent,\n // use position() which is relative to this parent,\n // otherwise use offset()\n // compare #setDimensions\n offsetParent = false\n break;\n }\n }\n }\n\n this.offsetParent = offsetParent\n }\n return this.offsetParent\n },\n setPointer: function (e) {\n var pointer = this.getPointer(e)\n\n if(this.$getOffsetParent()){\n var relativePointer = getRelativePosition(pointer, this.$getOffsetParent())\n this.lastRelativePointer = this.relativePointer\n this.relativePointer = relativePointer\n }\n\n this.lastPointer = this.pointer\n this.pointer = pointer\n },\n distanceMet: function (e) {\n var currentPointer = this.getPointer(e)\n return (Math.max(\n Math.abs(this.pointer.left - currentPointer.left),\n Math.abs(this.pointer.top - currentPointer.top)\n ) >= this.options.distance)\n },\n getPointer: function(e) {\n var o = e.originalEvent || e.originalEvent.touches && e.originalEvent.touches[0]\n return {\n left: e.pageX || o.pageX,\n top: e.pageY || o.pageY\n }\n },\n setupDelayTimer: function () {\n var that = this\n this.delayMet = !this.options.delay\n\n // init delay timer if needed\n if (!this.delayMet) {\n clearTimeout(this._mouseDelayTimer);\n this._mouseDelayTimer = setTimeout(function() {\n that.delayMet = true\n }, this.options.delay)\n }\n },\n scroll: function (e) {\n this.clearDimensions()\n this.clearOffsetParent() // TODO is this needed?\n },\n toggleListeners: function (method) {\n var that = this,\n events = ['drag','drop','scroll']\n\n $.each(events,function (i,event) {\n that.$document[method](eventNames[event], that[event + 'Proxy'])\n })\n },\n clearOffsetParent: function () {\n this.offsetParent = undefined\n },\n // Recursively clear container and item dimensions\n clearDimensions: function () {\n this.traverse(function(object){\n object._clearDimensions()\n })\n },\n traverse: function(callback) {\n callback(this)\n var i = this.containers.length\n while(i--){\n this.containers[i].traverse(callback)\n }\n },\n _clearDimensions: function(){\n this.containerDimensions = undefined\n },\n _destroy: function () {\n containerGroups[this.options.group] = undefined\n }\n }\n\n function Container(element, options) {\n this.el = element\n this.options = $.extend( {}, containerDefaults, options)\n\n this.group = ContainerGroup.get(this.options)\n this.rootGroup = this.options.rootGroup || this.group\n this.handle = this.rootGroup.options.handle || this.rootGroup.options.itemSelector\n\n var itemPath = this.rootGroup.options.itemPath\n this.target = itemPath ? this.el.find(itemPath) : this.el\n\n this.target.on(eventNames.start, this.handle, $.proxy(this.dragInit, this))\n\n if(this.options.drop)\n this.group.containers.push(this)\n }\n\n Container.prototype = {\n dragInit: function (e) {\n var rootGroup = this.rootGroup\n\n if( !this.disabled &&\n !rootGroup.dragInitDone &&\n this.options.drag &&\n this.isValidDrag(e)) {\n rootGroup.dragInit(e, this)\n }\n },\n isValidDrag: function(e) {\n return e.which == 1 ||\n e.type == \"touchstart\" && e.originalEvent.touches.length == 1\n },\n searchValidTarget: function (pointer, lastPointer) {\n var distances = sortByDistanceDesc(this.getItemDimensions(),\n pointer,\n lastPointer),\n i = distances.length,\n rootGroup = this.rootGroup,\n validTarget = !rootGroup.options.isValidTarget ||\n rootGroup.options.isValidTarget(rootGroup.item, this)\n\n if(!i && validTarget){\n rootGroup.movePlaceholder(this, this.target, \"append\")\n return true\n } else\n while(i--){\n var index = distances[i][0],\n distance = distances[i][1]\n if(!distance && this.hasChildGroup(index)){\n var found = this.getContainerGroup(index).searchValidTarget(pointer, lastPointer)\n if(found)\n return true\n }\n else if(validTarget){\n this.movePlaceholder(index, pointer)\n return true\n }\n }\n },\n movePlaceholder: function (index, pointer) {\n var item = $(this.items[index]),\n dim = this.itemDimensions[index],\n method = \"after\",\n width = item.outerWidth(),\n height = item.outerHeight(),\n offset = item.offset(),\n sameResultBox = {\n left: offset.left,\n right: offset.left + width,\n top: offset.top,\n bottom: offset.top + height\n }\n if(this.options.vertical){\n var yCenter = (dim[2] + dim[3]) / 2,\n inUpperHalf = pointer.top <= yCenter\n if(inUpperHalf){\n method = \"before\"\n sameResultBox.bottom -= height / 2\n } else\n sameResultBox.top += height / 2\n } else {\n var xCenter = (dim[0] + dim[1]) / 2,\n inLeftHalf = pointer.left <= xCenter\n if(inLeftHalf){\n method = \"before\"\n sameResultBox.right -= width / 2\n } else\n sameResultBox.left += width / 2\n }\n if(this.hasChildGroup(index))\n sameResultBox = emptyBox\n this.rootGroup.movePlaceholder(this, item, method, sameResultBox)\n },\n getItemDimensions: function () {\n if(!this.itemDimensions){\n this.items = this.$getChildren(this.el, \"item\").filter(\n \":not(.\" + this.group.options.placeholderClass + \", .\" + this.group.options.draggedClass + \")\"\n ).get()\n setDimensions(this.items, this.itemDimensions = [], this.options.tolerance)\n }\n return this.itemDimensions\n },\n getItemOffsetParent: function () {\n var offsetParent,\n el = this.el\n // Since el might be empty we have to check el itself and\n // can not do something like el.children().first().offsetParent()\n if(el.css(\"position\") === \"relative\" || el.css(\"position\") === \"absolute\" || el.css(\"position\") === \"fixed\")\n offsetParent = el\n else\n offsetParent = el.offsetParent()\n return offsetParent\n },\n hasChildGroup: function (index) {\n return this.options.nested && this.getContainerGroup(index)\n },\n getContainerGroup: function (index) {\n var childGroup = $.data(this.items[index], subContainerKey)\n if( childGroup === undefined){\n var childContainers = this.$getChildren(this.items[index], \"container\")\n childGroup = false\n\n if(childContainers[0]){\n var options = $.extend({}, this.options, {\n rootGroup: this.rootGroup,\n group: groupCounter ++\n })\n childGroup = childContainers[pluginName](options).data(pluginName).group\n }\n $.data(this.items[index], subContainerKey, childGroup)\n }\n return childGroup\n },\n $getChildren: function (parent, type) {\n var options = this.rootGroup.options,\n path = options[type + \"Path\"],\n selector = options[type + \"Selector\"]\n\n parent = $(parent)\n if(path)\n parent = parent.find(path)\n\n return parent.children(selector)\n },\n _serialize: function (parent, isContainer) {\n var that = this,\n childType = isContainer ? \"item\" : \"container\",\n\n children = this.$getChildren(parent, childType).not(this.options.exclude).map(function () {\n return that._serialize($(this), !isContainer)\n }).get()\n\n return this.rootGroup.options.serialize(parent, children, isContainer)\n },\n traverse: function(callback) {\n $.each(this.items || [], function(item){\n var group = $.data(this, subContainerKey)\n if(group)\n group.traverse(callback)\n });\n\n callback(this)\n },\n _clearDimensions: function () {\n this.itemDimensions = undefined\n },\n _destroy: function() {\n var that = this;\n\n this.target.off(eventNames.start, this.handle);\n this.el.removeData(pluginName)\n\n if(this.options.drop)\n this.group.containers = $.grep(this.group.containers, function(val){\n return val != that\n })\n\n $.each(this.items || [], function(){\n $.removeData(this, subContainerKey)\n })\n }\n }\n\n var API = {\n enable: function() {\n this.traverse(function(object){\n object.disabled = false\n })\n },\n disable: function (){\n this.traverse(function(object){\n object.disabled = true\n })\n },\n serialize: function () {\n return this._serialize(this.el, true)\n },\n refresh: function() {\n this.traverse(function(object){\n object._clearDimensions()\n })\n },\n destroy: function () {\n this.traverse(function(object){\n object._destroy();\n })\n }\n }\n\n $.extend(Container.prototype, API)\n\n /**\n * jQuery API\n *\n * Parameters are\n * either options on init\n * or a method name followed by arguments to pass to the method\n */\n $.fn[pluginName] = function(methodOrOptions) {\n var args = Array.prototype.slice.call(arguments, 1)\n\n return this.map(function(){\n var $t = $(this),\n object = $t.data(pluginName)\n\n if(object && API[methodOrOptions])\n return API[methodOrOptions].apply(object, args) || this\n else if(!object && (methodOrOptions === undefined ||\n typeof methodOrOptions === \"object\"))\n $t.data(pluginName, new Container($t, methodOrOptions))\n\n return this\n });\n };\n\n}(jQuery, window, 'wf_sortable');\n"]}
admin/js/woo-feed-admin-pro.min.js CHANGED
@@ -1,8 +1,2 @@
1
- /**!
2
- * WooFeed Pro Scripts
3
- * @version 1.0.0
4
- * @package WooFeed
5
- * @copyright 2020 WebAppick
6
- *
7
- */
8
- !function(a,o){"use strict";a(o).load(function(){var o=a(".wapk-slider");o.length&&o.slick({autoplay:!0,dots:!0,centerMode:!0,arrows:!1,slidesToShow:1,slidesToScroll:1,lazyLoad:"progressive"})})}(jQuery,window,(document,wp.ajax,wpf_ajax_obj));
1
+ "use strict";!function(a,o){a(o).load(function(){var o=a(".wapk-slider");o.length&&o.slick({autoplay:!0,dots:!0,centerMode:!0,arrows:!1,slidesToShow:1,slidesToScroll:1,lazyLoad:"progressive"})})}(jQuery,window,(document,wp.ajax,wpf_ajax_obj));
2
+ //# sourceMappingURL=woo-feed-admin-pro.min.js.map
 
 
 
 
 
 
admin/js/woo-feed-admin-pro.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["woo-feed-admin-pro.js"],"names":["$","window","load","sliders","slick","autoplay","dots","centerMode","length","slidesToScroll","lazyLoad","wp","ajax","wpf_ajax_obj"],"mappings":"cAQC,SAAAA,EAAAC,GAAAD,EAAAC,GAAAC,KAAA,WAEG,IAAAC,EAAAH,EAAAA,gBAIIG,EAAIA,QAHED,EAAAA,MAAKE,CACXC,UAAAA,EACWC,MAAAA,EAKHC,YAAAA,EAJIC,QAAAA,EACAJ,aAAAA,EACIK,eAAAA,EACFC,SAAAA,kBATrB,CAaeD,OAAAA,QAAAA,SANUE,GAAAC,KAAAC","file":"woo-feed-admin-pro.min.js","sourcesContent":["// noinspection JSUnresolvedVariable,ES6ConvertVarToLetConst,SpellCheckingInspection\r\n/**!\r\n * WooFeed Pro Scripts\r\n * @version 1.0.0\r\n * @package WooFeed\r\n * @copyright 2020 WebAppick\r\n *\r\n */\r\n(function ($, window, document, wpAjax, opts) {\r\n \"use strict\";\r\n /* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */\r\n $(window).load(function () {\r\n // noinspection ES6ConvertVarToLetConst,SpellCheckingInspection\r\n var sliders = $('.wapk-slider');\r\n if( sliders.length ) {\r\n sliders.slick({\r\n autoplay: true,\r\n dots: true,\r\n centerMode: true,\r\n arrows: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n lazyLoad: 'progressive'\r\n });\r\n }\r\n } );\r\n}( jQuery, window, document, wp.ajax, wpf_ajax_obj ));"]}
admin/js/woo-feed-admin.js CHANGED
@@ -1,4 +1,4 @@
1
- // noinspection JSUnresolvedVariable
2
  /**!
3
  * WooFeed Scripts
4
  * @version 3.3.6
@@ -6,474 +6,892 @@
6
  * @copyright 2020 WebAppick
7
  *
8
  */
9
- (function ($, window, document, wpAjax, opts) {
10
- "use strict";
11
- /**
12
- * All of the code for your admin-facing JavaScript source
13
- * should reside in this file.
14
- *
15
- * Note: It has been assumed you will write jQuery code here, so the
16
- * $ function reference has been prepared for usage within the scope
17
- * of this function.
18
- *
19
- * This enables you to define handlers, for when the DOM is ready:
20
- */
21
-
22
- /**
23
- * disable element utility
24
- *
25
- * @since 3.1.9
26
- *
27
- * @param {*} status
28
- * @returns {jQuery|HTMLElement}
29
- */
30
- $.fn.disabled = function( status ) {
31
- $(this).each( function(){
32
- let self = $(this), prop = 'disabled';
33
- if( typeof( self.prop( prop ) ) !== 'undefined' ) {
34
- self.prop( prop, status === void 0 || status === true );
35
- } else {
36
- ! 0 === status ? self.addClass( prop ) : self.removeClass( prop );
37
- }
38
- } );
39
- return self; // method chaining
40
- };
41
- /**
42
- * Check if a HTMLElement or jQuery is disabled
43
- */
44
- $.fn.isDisabled = function() {
45
- let self = $(this), prop = 'disabled';
46
- return ( typeof( self.prop( prop ) ) !== 'undefined' ) ? self.prop( prop ) : self.hasClass( prop );
47
- };
48
-
49
- /**
50
- * Clear Tooltip for clip board js
51
- * @param {Object} event
52
- */
53
- function clearTooltip( event ) {
54
- $(event.currentTarget).removeClass( function (index, className) {
55
- return (className.match (/\btooltipped-\S+/g) || []).join(' ');
56
- } ).removeClass('tooltipped').removeAttr('aria-label');
57
- }
58
-
59
- function showTooltip( elem, msg ) {
60
- $( elem ).addClass('tooltipped tooltipped-s').attr( 'aria-label', msg );
61
- }
62
-
63
- function fallbackMessage(action) {
64
- let actionMsg, actionKey = (action === 'cut' ? 'X' : 'C');
65
- if (/iPhone|iPad/i.test(navigator.userAgent)) {
66
- actionMsg = 'No support :(';
67
- } else if (/Mac/i.test(navigator.userAgent)) {
68
- actionMsg = 'Press ⌘-' + actionKey + ' to ' + action;
69
- } else {
70
- actionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;
71
- }
72
- return actionMsg;
73
- }
74
 
75
- /* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */
76
- /**
77
- * Alias of jQuery.extend()
78
- * @param {Object} _default
79
- * @param {Object} _args
80
- */
81
- const extend = ( _default, _args ) => $.extend( true, {}, _default, _args );
82
- let $copyBtn, clipboard, googleCategories,
83
- helper = {
84
- in_array: function( needle, haystack ) {
85
- try {
86
- return haystack.indexOf( needle ) !== -1;
87
- } catch( e ) {
88
- return false;
89
- }
90
- },
91
- selectize_render_item: function( data, escape ) {
92
- return '<div class="item wapk-selectize-item">' + escape(data.text) + '</div>'; // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found
93
- },
94
- ajax_fail: function ( e ) {
95
- console.warn( e );
96
- alert( ( e.hasOwnProperty( 'statusText' ) && e.hasOwnProperty( 'status' ) ) ? opts.ajax.error + '\n' + e.statusText + ' (' + e.status + ')' : e );
97
- },
98
- sortable: function( el, config ) {
99
- return (el || $('.sorted_table')).each(function () {
100
- let self = $(this), column = self.find('tbody > tr:eq(0) > td').length;
101
- self.wf_sortable(extend({
102
- containerSelector: 'table',
103
- itemPath: '> tbody',
104
- itemSelector: 'tr',
105
- handle: 'i.wf_sortedtable',
106
- placeholder: `<tr class="placeholder"><td colspan="${column}"></td></tr>`,
107
- }, config));
108
- });
109
- },
110
- selectize: function( el, config ) {
111
- return (el || $('select.selectize')).not('.selectized').each(function () {
112
- let self = $(this);
113
- self.selectize(extend({
114
- create: self.data('create') || false,
115
- plugins: self.data('plugins') ? self.data('plugins').split(',').map(s => s.trim()) : [],//['remove_button'],
116
- render: {item: helper.selectize_render_item,}
117
- }, config));
118
- });
119
- }
120
- }, // helper functions
121
- feedEditor = {
122
- /**
123
- * The Editor Form Elem.
124
- * @type {jQuery|HTMLElement}
125
- */
126
- form: null,
127
- /**
128
- * Initialize The Feed Editor {Tabs...}
129
- * @returns {void}
130
- */
131
- init: function() {
132
- let self = this;
133
- self.form = $('.generateFeed');
134
- if( ! self.form.length ) return;
135
- let outOfStockVisibilityRow = $('.out-of-stock-visibility');
136
- // Initialize Table Sorting
137
- // noinspection JSUnresolvedFunction
138
- helper.sortable();
139
- helper.selectize();
140
- $(document)
141
- .on('change', '[name="is_outOfStock"], [name="product_visibility"]', function () {
142
- if ($('[name="is_outOfStock"]:checked').val() === 'n' && $('[name="product_visibility"]:checked').val() === '1') {
143
- outOfStockVisibilityRow.show();
144
- } else {
145
- outOfStockVisibilityRow.hide();
146
- }
147
- })
148
- .on('change', '.attr_type', function () {
149
- // Attribute type selection
150
- let type = $(this).val(), row = $(this).closest('tr');
151
- if (type === 'pattern') {
152
- row.find('.wf_attr').hide();
153
- row.find('.wf_attr').val('');
154
- row.find('.wf_default').show();
155
- } else {
156
- row.find('.wf_attr').show();
157
- row.find('.wf_default').hide();
158
- row.find('.wf_default').val('');
159
- }
160
- })
161
- .on('change', '.wf_mattributes, .attr_type', function () {
162
- let row = $(this).closest('tr'),
163
- attribute = row.find('.wf_mattributes'),
164
- type = row.find('.attr_type'),
165
- valueColumn = row.find('td:eq(4)'),
166
- provider = $('#provider').val();
167
- if (attribute.val() === 'current_category' && type.val() === 'pattern' && helper.in_array(provider, ['google', 'facebook', 'pinterest'])) {
168
- if (valueColumn.find('select.selectize').length === 0) {
169
- let selectizeOpts = {
170
- options: googleCategories,
171
- config: {render: {item: helper.selectize_render_item,}},
172
- };
173
- valueColumn.find('input.wf_default').remove();
174
- valueColumn.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>');
175
- // valueColumn.find('.wf_attributes select').selectize({render: {item: helper.selectize_render_item,}});
176
- valueColumn.append('<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">' + opts.learn_more + '</a></span>');
177
- if( ! googleCategories ) {
178
- valueColumn.append('<span class="spinner is-active" style="margin: 0;"></span>');
179
- }
180
- const select = valueColumn.find('.wf_attributes select');
181
- helper.selectize( select, {
182
- preload: true,
183
- placeholder: opts.form.select_category,
184
- load: function( query, cb ) {
185
- if( ! googleCategories ) {
186
- wpAjax.send('get_google_categories', {
187
- type: 'GET',
188
- data: {
189
- _ajax_nonce: opts.nonce,
190
- action: "get_google_categories",
191
- provider: provider
192
- }
193
- }).then(function (r) {
194
- googleCategories = r;
195
- cb( googleCategories );
196
- valueColumn.find('.spinner').remove();
197
- }).fail(helper.ajax_fail);
198
- } else {
199
- cb( googleCategories );
200
- }
201
- }
202
- } );
203
- }
204
- } else {
205
- if (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {
206
- valueColumn.find('span').remove();
207
- valueColumn.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">');
208
- if (type.val() !== 'pattern') {
209
- valueColumn.find('input.wf_default').hide();
210
- }
211
- }
212
- }
213
- })
214
- .trigger('change');
215
- $('.outputType').fancySelect();
216
- $(document).trigger(new jQuery.Event('feedEditor.init', {target: this.form}));
217
- },
218
- /**
219
- * Render Merchant info ajax response and handle allowed feed type for selected merchant
220
- * @param {jQuery|HTMLElement} merchantInfo jQuery dom object
221
- * @param {jQuery|HTMLElement} feedType jQuery dom object
222
- * @param {Object} r ajax response object
223
- */
224
- renderMerchantInfo: function( merchantInfo, feedType, r ) {
225
- for( let k in r ) {
226
- if( r.hasOwnProperty( k ) ) {
227
- merchantInfo.find( '.merchant-info-section.' + k + ' .data' ).html( r[k] ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
228
- if( 'feed_file_type' === k ) {
229
- let types = r[k].split(",").map(function(t){return t.trim().toLowerCase()}).filter(function(t){
230
- return t !== '' && t !== opts.na.toLowerCase()
231
- });
232
- if( types.length ) {
233
- feedType.find('option').removeAttr('selected').each( function(){
234
- let opt = $(this);
235
- opt.val() && ! helper.in_array(opt.val(),types) ? opt.disabled( ! 0) : opt.disabled( ! 1);
236
- } );
237
- if( types.length === 1 ) feedType.find('option[value="' + types[0] + '"]').attr( 'selected', 'selected' );
238
- } else feedType.find('option').disabled( ! 1 );
239
- }
240
- }
241
- }
242
- merchantInfo.find( '.spinner' ).removeClass( 'is-active' );
243
- feedType.disabled( ! 1 );
244
- feedType.trigger('change');
245
- feedType.parent().find('.spinner').removeClass( 'is-active' );
246
- },
247
- /**
248
- * Render Feed Template Tabs and settings while creating new feed.
249
- * @param {jQuery|HTMLElement} feedForm feed from query dom object
250
- * @param {object} r merchant template ajax response object
251
- */
252
- renderMerchantTemplate: function( feedForm, r ) {
253
- for ( let k in r ) {
254
- if ( r.hasOwnProperty( k ) ) {
255
- if ( 'tabs' === k ) {
256
- feedForm.html( r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
257
- } else {
258
- let contentSettings = $('[name="'+k+'"]');
259
- if ( contentSettings.length ) {
260
- contentSettings.each( function() {
261
- let elem = $(this);
262
- if ( elem.is( 'select' ) ) {
263
- elem.find( '[value="'+r[k]+'"]').prop( 'selected', true );
264
- } else if ( ( elem.is('[type=checkbox]') || elem.is('[type=radio]') ) && elem.val() === r[k] ) {
265
- elem.prop( 'checked', true )
266
- } else {
267
- elem.val( r[k] ); // type=text
268
- }
269
- } ).trigger('change');
270
- }
271
- }
272
- }
273
- }
274
- feedEditor.init();
275
- }
276
- }, // Feed Editor Table
277
- merchantInfoCache = [],
278
- merchantTemplateCache = [];
279
- // expose to the global scope
280
- window.wf = { helper, feedEditor };
281
- $(window).load(function () {
282
- $copyBtn = $('.toClipboard');
283
 
284
- // Template loading ui conflict
285
- if( $(location). attr("href").match( /webappick.*feed/g ) != null ) {
286
- $('#wpbody-content').addClass('woofeed-body-content');
287
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
 
289
- $('[data-toggle_slide]').on('click', function(e) {
290
- e.preventDefault();
291
- $($(this).data('toggle_slide')).slideToggle('fast');
292
- });
293
- postboxes.add_postbox_toggles(pagenow);
294
- if( ! ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent) ) {
295
- $copyBtn.find('img').hide(0);
296
- } else {
297
- $copyBtn.each( function(){
298
- $(this).on( 'mouseleave', clearTooltip ).on( 'blur', clearTooltip );
299
- } );
300
- clipboard = new ClipboardJS('.toClipboard');
301
- clipboard.on( 'error', function( event ) { showTooltip( event.trigger, fallbackMessage( event.action ) ) } )
302
- .on( 'success', function( event ) { showTooltip( event.trigger, 'Copied!' ) } );
303
- }
304
- // initialize editor
305
- feedEditor.init();
306
- helper.selectize(); // render all other selectize
307
 
308
- // Generate Feed Add Table Row
309
- $(document).on('click', '#wf_newRow', function () {
310
- $("#table-1 tbody tr:first").clone().find('input').val('').end().find("select:not('.wfnoempty')").val('').end().insertAfter("#table-1 tbody tr:last");
311
- $('.outputType').each(function (index) {
312
- //do stuff to each individually.
313
- $(this).attr('name', "output_type[" + index + "][]"); //sets the val to the index of the element, which, you know, is useless
314
- });
315
- });
316
 
317
- // XML Feed Wrapper
318
- $('#feedType,#provider').on('change', function () {
319
- let type = $('#feedType').val(), provider = $('#provider').val(), itemWrapper = $('.itemWrapper'), wf_csv_txt = $('.wf_csvtxt');
320
- const hidden = [
321
- 'google', 'facebook', 'pinterest', 'fruugo.au', 'stylight.com', 'nextad', 'skinflint.co.uk',
322
- 'comparer.be', 'dooyoo', 'hintaseuranta.fi', 'incurvy', 'kijiji.ca', 'marktplaats.nl',
323
- 'rakuten.de', 'shopalike.fr', 'spartoo.fi', 'webmarchand',
324
- ];
325
- if (type !== '' && helper.in_array(provider, hidden)) {
326
- itemWrapper.hide();
327
- } else if ( type === 'xml' ) {
328
- itemWrapper.show();
329
- wf_csv_txt.hide();
330
- } else if ( type === 'csv' || type === 'txt' ) {
331
- itemWrapper.hide();
332
- wf_csv_txt.show();
333
- } else {
334
- itemWrapper.hide();
335
- wf_csv_txt.hide();
336
- }
337
 
338
- }).trigger( 'change' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
339
 
340
- // Tooltip only Text
341
- $('.wfmasterTooltip').hover(function () {
342
- // Hover over code
343
- let title = $(this).attr('wftitle');
344
- $(this).data('tipText', title).removeAttr('wftitle');
345
- $('<p class="wftooltip"></p>').text(title).appendTo('body').fadeIn('slow');
346
- }, function () { // Hover out code
347
- $(this).attr('wftitle', $(this).data('tipText'));
348
- $('.wftooltip').remove();
349
- }).mousemove(function (e) {
350
- $('.wftooltip').css({top: e.pageY + 10, left: e.pageX + 20})
351
- });
 
 
352
 
353
- // Attribute type selection for dynamic attribute
354
- $(document).on('change', '.dType', function () {
355
- let type = $(this).val(), row = $(this).closest('tr');
356
- if (type === 'pattern') {
357
- row.find('.value_attribute').hide();
358
- row.find('.value_pattern').show();
359
- } else if (type === 'attribute') {
360
- row.find('.value_attribute').show();
361
- row.find('.value_pattern').hide();
362
- } else if (type === 'remove') {
363
- row.find('.value_attribute').hide();
364
- row.find('.value_pattern').hide();
365
- }
366
- });
367
 
368
- // Generate Feed Table Row Delete
369
- $(document).on('click', '.delRow', function ( e ) {
370
- e.preventDefault();
371
- $(this).closest('tr').remove();
372
- });
 
 
 
373
 
374
- // Generate Feed Form Submit
375
- $(".generateFeed").validate();
376
- $(document).on('submit', '#generateFeed', function () {
377
- //event.preventDefault();
378
- // Feed Generating form validation
379
- $(this).validate();
380
- if ($(this).valid()) {
381
- $(".makeFeedResponse").show().html( '<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> ' + opts.form.generate + '</b>' ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found
382
- }
383
- });
 
384
 
385
- // Generate Update Feed Form Submit
386
- $(".updatefeed").validate();
387
- $('[name="save_feed_config"]').on( 'click', function( e ) {
388
- e.preventDefault();
389
- $('#updatefeed').trigger( 'submit', { save: true } );
390
- } );
391
- $(document).on('submit', '#updatefeed', function ( e, data ) {
392
- // Feed Generating form validation
393
- $(this).validate();
394
- if ( $(this).valid() ) {
395
- $(".makeFeedResponse").show().html( '<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> ' + ( data && data.save ? opts.form.save : opts.form.generate ) + '</b>' ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found
396
- }
397
- });
398
 
399
- // Get Merchant View
400
- $("#provider").on('change', function ( event ) {
401
- event.preventDefault();
402
- if( ! $(this).closest('.generateFeed').hasClass('add-new') ) return; // only for new feed.
403
- let merchant = $(this).val(),
404
- feedType = $("#feedType"),
405
- feedForm = $("#providerPage"),
406
- merchantInfo = $('#feed_merchant_info');
407
- // set loading..
408
- feedForm.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> ' + opts.form.loading_tmpl + '</h3>'); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found
409
- merchantInfo.find( '.spinner' ).addClass( 'is-active' );
410
- feedType.disabled( ! 0 ); // disable dropdown
411
- feedType.parent().find('.spinner').addClass( 'is-active' );
412
- merchantInfo.find( '.merchant-info-section .data' ).html(''); // remove previous data
413
- // Get Merchant info for selected Provider/Merchant
414
- if( merchantInfoCache.hasOwnProperty( merchant ) ) {
415
- feedEditor.renderMerchantInfo( merchantInfo, feedType, merchantInfoCache[merchant] );
416
- } else {
417
- wpAjax.send( 'woo_feed_get_merchant_info', {
418
- type: 'GET',
419
- data: { nonce: opts.nonce, provider: merchant }
420
- } ).then( function( r ) {
421
- merchantInfoCache[merchant] = r;
422
- feedEditor.renderMerchantInfo( merchantInfo, feedType, r );
423
- } ).fail( helper.ajax_fail );
424
- }
425
 
426
- // Get FeedForm For Selected Provider/Merchant
427
- if( merchantTemplateCache.hasOwnProperty( merchant ) ) {
428
- feedEditor.renderMerchantTemplate( feedForm, merchantTemplateCache[merchant] );
429
- } else {
430
- wpAjax.post( 'get_feed_merchant', {
431
- _ajax_nonce: opts.nonce, merchant: merchant
432
- }, )
433
- .then( function( r ) {
434
- merchantTemplateCache[merchant] = r;
435
- feedEditor.renderMerchantTemplate( feedForm, r );
436
- } ).fail( helper.ajax_fail );
437
- }
438
- });
439
 
440
- // Feed Active and Inactive status change via ajax
441
- $('.woo_feed_status_input').on('change',function(){
442
- let $feedName = $(this).val(), counter = ( $(this)[0].checked ) ? 1 : 0;
443
- wpAjax.post( 'update_feed_status', { _ajax_nonce: opts.nonce, feedName: $feedName, status: counter }, );
444
- });
 
 
 
 
 
 
 
445
 
446
- // Adding for Copy-to-Clipboard functionality in the settings page
447
- $("#woo_feed_settings_error_copy_clipboard_button").on('click', function() {
448
- $('#woo_feed_settings_error_report').select();
449
- document.execCommand('copy');
450
- if (window.getSelection) {window.getSelection().removeAllRanges();}
451
- else if (document.selection) {document.selection.empty();}
452
- });
453
 
454
- //Checking whether php ssh2 extension is added or not
455
- $(document).on('change', '.ftporsftp', function () {
456
- let server = $(this).val(), status = $('.ssh2_status');
457
- if (server === 'sftp') {
458
- status.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);
459
- wpAjax.post('get_ssh2_status', {_ajax_nonce: opts.nonce, server: server})
460
- .then(function (response) {
461
- if ( response === 'exists' ) {
462
- status.css('color', '#2CC185').text(opts.form.sftp_available);
463
- setTimeout( function () {
464
- status.hide();
465
- }, 1500 );
466
- } else {
467
- status.show().css('color', 'red').text(opts.form.sftp_warning);
468
- }
469
- })
470
- .fail( function( e ) {
471
- status.hide();
472
- helper.ajax_fail( e );
473
- } );
474
- } else {
475
- status.hide();
476
- }
477
- });
478
- });
479
- }( jQuery, window, document, wp.ajax, wpf_ajax_obj ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // noinspection JSUnresolvedletiable
2
  /**!
3
  * WooFeed Scripts
4
  * @version 3.3.6
6
  * @copyright 2020 WebAppick
7
  *
8
  */
9
+ /* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */
10
+ // noinspection JSUnresolvedVariable
11
+ (function($, window, document, wpAjax, opts) {
12
+ "use strict";
13
+ /**
14
+ * All of the code for your admin-facing JavaScript source
15
+ * should reside in this file.
16
+ *
17
+ * Note: It has been assumed you will write jQuery code here, so the
18
+ * $ function reference has been prepared for usage within the scope
19
+ * of this function.
20
+ *
21
+ * This enables you to define handlers, for when the DOM is ready:
22
+ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
+ /**
25
+ * disable element utility
26
+ *
27
+ * @since 3.1.9
28
+ *
29
+ * @param {*} status
30
+ * @returns {jQuery|HTMLElement}
31
+ */
32
+ $.fn.disabled = function(status) {
33
+ $(this).each(function() {
34
+ let self = $(this),
35
+ prop = 'disabled';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
+ if (typeof self.prop(prop) !== 'undefined') {
38
+ self.prop(prop, status === void 0 || status === true);
39
+ } else {
40
+ !0 === status ? self.addClass(prop) : self.removeClass(prop);
41
+ }
42
+ });
43
+ return self; // method chaining
44
+ };
45
+
46
+ /**
47
+ * Check if a HTMLElement or jQuery is disabled
48
+ */
49
+ $.fn.isDisabled = function() {
50
+ let self = $(this),
51
+ prop = 'disabled';
52
+ return typeof self.prop(prop) !== 'undefined' ? self.prop(prop) : self.hasClass(prop);
53
+ };
54
+
55
+ /**
56
+ * Clear Tooltip for clip board js
57
+ * @param {Object} event
58
+ */
59
+ const clearTooltip = (event) => {
60
+ $(event.currentTarget).removeClass( (index, className) => (className.match(/\btooltipped-\S+/g) || []).join(' ') ).removeClass('tooltipped').removeAttr('aria-label');
61
+ };
62
 
63
+ const showTooltip = (elem, msg) => {
64
+ $(elem).addClass('tooltipped tooltipped-s').attr('aria-label', msg);
65
+ };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
+ const fallbackMessage = (action) =>{
68
+ let actionMsg,
69
+ actionKey = action === 'cut' ? 'X' : 'C';
 
 
 
 
 
70
 
71
+ if (/iPhone|iPad/i.test(navigator.userAgent)) {
72
+ actionMsg = 'No support :(';
73
+ } else if (/Mac/i.test(navigator.userAgent)) {
74
+ actionMsg = 'Press ⌘-' + actionKey + ' to ' + action;
75
+ } else {
76
+ actionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;
77
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
+ return actionMsg;
80
+ };
81
+
82
+ /**
83
+ * Alias of jQuery.extend()
84
+ * @param {Object} _default
85
+ * @param {Object} _args
86
+ */
87
+ const extend = (_default, _args) => $.extend(true, {}, _default, _args);
88
+
89
+ let $copyBtn,
90
+ clipboard,
91
+ googleCategories,
92
+ helper = {
93
+ in_array: (needle, haystack) => {
94
+ try {
95
+ return haystack.indexOf(needle) !== -1;
96
+ } catch (e) {
97
+ return false;
98
+ }
99
+ },
100
+ selectize_render_item: (data, escape) => `<div class="item wapk-selectize-item">${ escape(data.text)}</div>`, // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found,
101
+ ajax_fail: e => {
102
+ console.warn(e);
103
+ alert(e.hasOwnProperty('statusText') && e.hasOwnProperty('status') ? opts.ajax.error + '\n' + e.statusText + ' (' + e.status + ')' : e);
104
+ },
105
+ /**
106
+ * Initialize Sortable
107
+ * @param {jQuery|HTMLElement} el
108
+ * @param {object} config
109
+ * @param {int|boolean} column
110
+ * @param {function} onDrop
111
+ * @return {jQuery|HTMLElement}
112
+ */
113
+ sortable: (el, config, column, onDrop) => {
114
+ return (el || $('.sorted_table')).each(function() {
115
+ let self = $(this),
116
+ column_count = self.find('tbody > tr:eq(0) > td').length || column || 9;
117
+ self.wf_sortable(extend({
118
+ containerSelector: 'table',
119
+ itemPath: '> tbody',
120
+ itemSelector: 'tr',
121
+ handle: 'i.wf_sortedtable',
122
+ placeholder: `<tr class="placeholder"><td colspan="${column_count}"></td></tr>`,
123
+ onDrop: ($item, container, _super, event) => {
124
+ $item.removeClass(container.group.options.draggedClass).removeAttr('style');
125
+ $("body").removeClass(container.group.options.bodyClass);
126
+ if ( onDrop && 'function' === typeof( onDrop ) ) {
127
+ onDrop( $item, container, _super, event );
128
+ }
129
+ },
130
+ }, config));
131
+ });
132
+ },
133
+ selectize: (el, config) => {
134
+ return (el || $('select.selectize')).not('.selectized').each(function() {
135
+ let self = $(this);
136
+ self.selectize(extend({
137
+ create: self.data('create') || false,
138
+ plugins: self.data('plugins') ? self.data('plugins').split(',').map(function(s) {
139
+ return s.trim();
140
+ }) : [],
141
+ //['remove_button'],
142
+ render: {
143
+ item: helper.selectize_render_item
144
+ }
145
+ }, config));
146
+ });
147
+ },
148
+ fancySelect: (el, config) => {
149
+ return (el || $('select.fancySelect')).not('.FancySelectInit').each(function() {
150
+ let self = $(this);
151
+ self.fancySelect(extend({
152
+ maxItemShow: 3
153
+ }, config));
154
+ });
155
+ },
156
+ reindex_config_table: () => {
157
+ $('#table-1').find('tbody tr').each( ( x, el ) => {
158
+ $(el).find('[name]').each( ( x1, el ) => {
159
+ $(el).attr('name', $(el).attr('name').replace(/(\[\d\])/g, `[${x}]`));
160
+ } );
161
+ } );
162
+ },
163
+ common: () => {
164
+ helper.sortable( $('.sorted_table'), {}, 9, helper.reindex_config_table );
165
+ helper.selectize();
166
+ helper.fancySelect($('.outputType'));
167
+ }
168
+ },
169
+ // helper functions
170
+ feedEditor = {
171
+ /**
172
+ * The Editor Form Elem.
173
+ * @type {jQuery|HTMLElement}
174
+ */
175
+ form: null,
176
 
177
+ /**
178
+ * Initialize The Feed Editor {Tabs...}
179
+ * @returns {void}
180
+ */
181
+ init: function () {
182
+ let self = this;
183
+ self.form = $('.generateFeed');
184
+ if (!self.form.length) return;
185
+ helper.common();
186
+ // noinspection JSUnresolvedVariable
187
+ $(document).trigger(new jQuery.Event('feedEditor.init', {
188
+ target: this.form
189
+ }));
190
+ },
191
 
192
+ /**
193
+ * Render Merchant info ajax response and handle allowed feed type for selected merchant
194
+ * @param {jQuery|HTMLElement} merchantInfo jQuery dom object
195
+ * @param {jQuery|HTMLElement} feedType jQuery dom object
196
+ * @param {Object} r ajax response object
197
+ */
198
+ renderMerchantInfo: function (merchantInfo, feedType, r) {
199
+ for (let k in r) {
200
+ if (r.hasOwnProperty(k)) {
201
+ merchantInfo.find('.merchant-info-section.' + k + ' .data').html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
 
 
 
 
202
 
203
+ if ('feed_file_type' === k) {
204
+ (function() {
205
+ let types = r[k].split(",").map(function(t) {
206
+ return t.trim().toLowerCase();
207
+ }).filter(function(t) {
208
+ // noinspection JSUnresolvedVariable
209
+ return t !== '' && t !== opts.na.toLowerCase();
210
+ });
211
 
212
+ if (types.length) {
213
+ feedType.find('option').removeAttr('selected').each(function() {
214
+ let opt = $(this);
215
+ opt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);
216
+ });
217
+ if (types.length === 1) feedType.find('option[value="' + types[0] + '"]').attr('selected', 'selected');
218
+ } else feedType.find('option').disabled(!1);
219
+ })();
220
+ }
221
+ }
222
+ }
223
 
224
+ merchantInfo.find('.spinner').removeClass('is-active');
225
+ feedType.disabled(!1);
226
+ feedType.trigger('change');
227
+ feedType.parent().find('.spinner').removeClass('is-active');
228
+ },
 
 
 
 
 
 
 
 
229
 
230
+ /**
231
+ * Render Feed Template Tabs and settings while creating new feed.
232
+ * @param {jQuery|HTMLElement} feedForm feed from query dom object
233
+ * @param {object} r merchant template ajax response object
234
+ */
235
+ renderMerchantTemplate: function (feedForm, r) {
236
+ let _loop = function _loop(k) {
237
+ if (r.hasOwnProperty(k)) {
238
+ if ('tabs' === k) {
239
+ // noinspection JSUnresolvedFunction
240
+ feedForm.html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html
241
+ } else {
242
+ let contentSettings = $('[name="' + k + '"]');
 
 
 
 
 
 
 
 
 
 
 
 
 
243
 
244
+ if (contentSettings.length) {
245
+ contentSettings.each(function() {
246
+ let elem = $(this);
 
 
 
 
 
 
 
 
 
 
247
 
248
+ if (elem.is('select')) {
249
+ elem.find('[value="' + r[k] + '"]').prop('selected', true);
250
+ } else if ((elem.is('[type=checkbox]') || elem.is('[type=radio]')) && elem.val() === r[k]) {
251
+ elem.prop('checked', true);
252
+ } else {
253
+ elem.val(r[k]); // type=text
254
+ }
255
+ }).trigger('change');
256
+ }
257
+ }
258
+ }
259
+ };
260
 
261
+ for (let k in r) {
262
+ _loop(k);
263
+ }
 
 
 
 
264
 
265
+ feedEditor.init();
266
+ }
267
+ },
268
+ // Feed Editor Table
269
+ merchantInfoCache = [],
270
+ merchantTemplateCache = [],
271
+ tooltip = () => {
272
+ // Tooltip only Text
273
+ $('.wfmasterTooltip')
274
+ .hover(function () {
275
+ // Hover over code
276
+ let self = $(this), title = self.attr('wftitle');
277
+ self.data('tipText', title).removeAttr('wftitle');
278
+ $('<p class="wftooltip"></p>').text(title).appendTo('body').fadeIn('slow');
279
+ }, function () {
280
+ // Hover out code
281
+ let self = $(this);
282
+ self.attr('wftitle', self.data('tipText'));
283
+ $('.wftooltip').remove();
284
+ })
285
+ .mousemove(function (e) {
286
+ $('.wftooltip').css({
287
+ top: e.pageY + 10,
288
+ left: e.pageX + 20
289
+ });
290
+ });
291
+ },
292
+ clip = () => {
293
+ $copyBtn = $('.toClipboard');
294
+ if (!ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent)) {
295
+ $copyBtn.find('img').hide(0);
296
+ } else {
297
+ $copyBtn.each(function() {
298
+ $(this).on('mouseleave', clearTooltip).on('blur', clearTooltip);
299
+ });
300
+ clipboard = new ClipboardJS('.toClipboard');
301
+ clipboard.on('error', function(event) {
302
+ showTooltip(event.trigger, fallbackMessage(event.action));
303
+ }).on('success', function(event) {
304
+ showTooltip(event.trigger, 'Copied!');
305
+ });
306
+ }
307
+ };
308
+
309
+ /**
310
+ * Feed Generator Module
311
+ */
312
+ class feedGenerator {
313
+
314
+ /**
315
+ * Constructor
316
+ * @constructor
317
+ */
318
+ constructor() {
319
+ this._feed = opts.generator.feed; // wf_config+xxxx
320
+ this._limit = opts.generator.limit;
321
+ this._progress = 0;
322
+ this._timer = null;
323
+ this._color = false;
324
+ // batch info
325
+ this._total_batch = 0;
326
+ this._current_batch = 0;
327
+ this._product_ids = [];
328
+ this._progress_per_batch = 0;
329
+ this._refresh = true;
330
+ // noinspection JSUnresolvedVariable
331
+ this._regenerate = opts.generator.regenerate;
332
+ window.isRegenerating = false;
333
+ this._all_btn = $('.wpf_regenerate');
334
+ this._current_btn = $(`#${this._feed.replace( 'wf_config', 'wf_feed_' )}`);
335
+ this._current_btn_label = '';
336
+ }
337
+
338
+ /**
339
+ * Init Hooks (Event)
340
+ * @return {feedGenerator}
341
+ */
342
+ init() {
343
+ let self = this;
344
+ if ( '' !== this._feed && this._regenerate && false === window.isRegenerating ) {
345
+ this.generate();
346
+ }
347
+ $(document).on('click', '.wpf_regenerate', function(event) {
348
+ event.preventDefault();
349
+ self._current_btn = $( this );
350
+ if( self._current_btn.hasClass('disabled') || window.isRegenerating === true ) return;
351
+ self._feed = self._current_btn.attr('id').replace( 'wf_feed_', 'wf_config' );
352
+ if( '' !== self._feed ) {
353
+ self.generate();
354
+ }
355
+ });
356
+ return this;
357
+ }
358
+
359
+ _block_button() {
360
+ if ( this._all_btn.length ) {
361
+ this._all_btn.addClass('disabled');
362
+ }
363
+ if ( this._current_btn.length ) {
364
+ this._current_btn.find('span').addClass('wpf_spin reverse_spin');
365
+ this._current_btn_label = this._current_btn.attr('title');
366
+ // noinspection JSUnresolvedVariable
367
+ this._current_btn.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );
368
+ }
369
+ }
370
+
371
+ _unblock_button() {
372
+ if ( this._all_btn.length ) {
373
+ this._all_btn.removeClass('disabled');
374
+ }
375
+ if ( this._current_btn.length ) {
376
+ this._current_btn.find('span').removeClass('wpf_spin');
377
+ this._current_btn.find('span').removeClass('reverse_spin');
378
+ this._current_btn.attr( 'aria-label', this._current_btn_label ).attr( 'title', this._current_btn_label );
379
+ }
380
+ }
381
+
382
+ /**
383
+ * Generate Feed
384
+ * @return void
385
+ */
386
+ generate() {
387
+ let self = this;
388
+ window.isRegenerating = true;
389
+ this._block_button();
390
+ this._resetProgressBar();
391
+ this._progressBarActive();
392
+ this._log( 'Counting Total Products' );
393
+ this._updateProgressStatus( 'Fetching products.' );
394
+ this._get_product_ids().then( response => {
395
+ this._progress = 10;
396
+ self._log( {response} );
397
+ if(response.success) {
398
+ self._log( `Total ${response.total} Products found.` );
399
+ self._product_ids = response.product;
400
+ self._total_batch = this._product_ids.length;
401
+ self._current_batch = 0;
402
+ self._progress_per_batch = ( 90 - this._progress ) / this._total_batch;
403
+ self._process_batch();
404
+ self._updateProgressStatus( 'Processing Products...' );
405
+ } else {
406
+ self._updateProgressStatus( response.data.message );
407
+ }
408
+ }).fail( error => {
409
+ self._log( error );
410
+ self._updateProgressStatus( error.message );
411
+ self._color = 'red';
412
+ setTimeout( function(){
413
+ self._stopProgressBar();
414
+ self._unblock_button();
415
+ }, 1500 );
416
+ } );
417
+ }
418
+
419
+ /**
420
+ * Get Product Ids
421
+ * @returns {$.promise}
422
+ * @private
423
+ */
424
+ _get_product_ids() {
425
+ this._progress = 5;
426
+ return wpAjax.post( 'get_product_information', {
427
+ _ajax_nonce: opts.nonce,
428
+ feed: this._feed,
429
+ limit: this._limit,
430
+ } );
431
+ }
432
+
433
+ /**
434
+ * Run the Batch
435
+ * @private
436
+ */
437
+ _process_batch() {
438
+ let self = this;
439
+ let status = `Processing Batch ${this._current_batch+1} of ${this._total_batch}`;
440
+ this._updateProgressStatus( status );
441
+ this._log( status );
442
+ wpAjax.post( 'make_batch_feed', {
443
+ _ajax_nonce: opts.nonce,
444
+ feed: this._feed,
445
+ products: this._product_ids[this._current_batch],
446
+ loop: this._current_batch,
447
+ } ).then( response => {
448
+ self._current_batch++;
449
+ self._log( `Batch ${self._current_batch} Completed` );
450
+ self._log( response );
451
+ if ( self._current_batch < self._total_batch ) {
452
+ self._process_batch();
453
+ self._progress += self._progress_per_batch;
454
+ }
455
+ if ( self._current_batch === self._total_batch ) {
456
+ self._save_feed_file();
457
+ }
458
+ } ).fail( error => {
459
+ self._log( error );
460
+ self._updateProgressStatus( error.message );
461
+ self._color = 'red';
462
+ setTimeout( function(){
463
+ self._stopProgressBar();
464
+ self._unblock_button();
465
+ }, 1500 );
466
+ } );
467
+ }
468
+
469
+ /**
470
+ * Save Feed Data from temp to feed file
471
+ * @private
472
+ */
473
+ _save_feed_file() {
474
+ let self = this;
475
+ this._log( 'Saving feed file' );
476
+ this._updateProgressStatus( 'Saving feed file' );
477
+ wpAjax.post( 'save_feed_file', {
478
+ _ajax_nonce: opts.nonce,
479
+ feed: this._feed,
480
+ } ).then( response => {
481
+ self._log( response );
482
+ self._progress = 100;
483
+ if ( self._refresh ) {
484
+ window.location.href = `${opts.pages.list.feed}&link=${response.url}&cat=${response.cat}`;
485
+ }
486
+ setTimeout( function(){
487
+ self._stopProgressBar();
488
+ setTimeout( function(){
489
+ self._resetProgressBar( true );
490
+ self._unblock_button();
491
+ }, 3000 );
492
+ }, 2500 );
493
+ } ).fail( error => {
494
+ self._log( error );
495
+ self._updateProgressStatus( error.message );
496
+ self._color = 'red';
497
+ setTimeout( function(){
498
+ self._stopProgressBar();
499
+ self._unblock_button();
500
+ }, 1500 );
501
+ } );
502
+ }
503
+
504
+ /**
505
+ * Console log wrapper with debug settings.
506
+ * @param data
507
+ * @returns {feedGenerator}
508
+ * @private
509
+ */
510
+ _log( data ) {
511
+ // noinspection JSUnresolvedVariable
512
+ if ( opts.wpf_debug ) {
513
+ console.log( data );
514
+ }
515
+ return this;
516
+ }
517
+
518
+ /**
519
+ * Run the progressbar refresh interval
520
+ * @param {int} refreshInterval
521
+ * @returns {feedGenerator}
522
+ * @private
523
+ */
524
+ _progressBarActive( refreshInterval = 0 ) {
525
+ let self = this;
526
+ this._toggleProgressBar( true );
527
+ this._timer = setInterval( function(){
528
+ self._updateProgressBar();
529
+ }, refreshInterval || 1000 );
530
+ return this;
531
+ }
532
+
533
+ /**
534
+ * Stop Progressbar
535
+ * @returns {feedGenerator}
536
+ * @private
537
+ */
538
+ _stopProgressBar() {
539
+ clearInterval( this._timer );
540
+ return this;
541
+ }
542
+
543
+ /**
544
+ * Reset Progressbar
545
+ * @returns {feedGenerator}
546
+ * @private
547
+ */
548
+ _resetProgressBar( update ) {
549
+ this._toggleProgressBar( false );
550
+ this._updateProgressStatus( '' );
551
+ clearInterval( this._timer );
552
+ this._color = false;
553
+ this._timer = null;
554
+ this._progress = 0;
555
+ if ( update ) {
556
+ this._updateProgressBar();
557
+ }
558
+ return this;
559
+ }
560
+
561
+ /**
562
+ * Show hide the progress bar el
563
+ * @param status
564
+ * @returns {feedGenerator}
565
+ * @private
566
+ */
567
+ _toggleProgressBar( status ) {
568
+ let table = $('#feed_progress_table');
569
+ if ( status ) {
570
+ table.show();
571
+ } else {
572
+ table.hide();
573
+ }
574
+ return this;
575
+ }
576
+
577
+ /**
578
+ * Update Progress bar text status
579
+ * @param {string} status
580
+ * @returns {feedGenerator}
581
+ * @private
582
+ */
583
+ _updateProgressStatus( status ) {
584
+ $( '.feed-progress-status' ).text( status );
585
+ return this;
586
+ }
587
+
588
+ /**
589
+ * Update Progress Data
590
+ * hooked with setInterval
591
+ * @private
592
+ */
593
+ _updateProgressBar() {
594
+ let percentage = $( '.feed-progress-percentage' ),
595
+ bar = $( '.feed-progress-bar-fill' ),
596
+ _progress = `${Math.round( this._progress )}%`;
597
+ bar.css( {
598
+ width: _progress,
599
+ background: this._color || "#3DC264",
600
+ } );
601
+ percentage.text( _progress );
602
+ }
603
+ }
604
+ // expose to the global scope
605
+ window.wf = {
606
+ helper: helper,
607
+ feedEditor: feedEditor,
608
+ generator: feedGenerator,
609
+ };
610
+ $(window).load(function() {
611
+ // Template loading ui conflict
612
+ if ($(location).attr("href").match(/webappick.*feed/g) !== null) {
613
+ $('#wpbody-content').addClass('woofeed-body-content');
614
+ }
615
+ // ClipBoardJS
616
+ clip();
617
+ // postbox toggle
618
+ postboxes.add_postbox_toggles(pagenow);
619
+ // initialize generator
620
+ let generator = new feedGenerator();
621
+ generator.init();
622
+ // noinspection JSUnresolvedVariable
623
+ if( '' !== opts.generator.feed && opts.generator.regenerate ) {
624
+
625
+ }
626
+ // initialize editor
627
+ feedEditor.init();
628
+ helper.common(); // Generate Feed Add Table Row
629
+ tooltip();
630
+ // validate feed editor
631
+ $(".generateFeed").validate();
632
+ // document events
633
+ $(document)
634
+ .on('click', '[data-toggle_slide]', function(e) {
635
+ e.preventDefault();
636
+ $($(this).data('toggle_slide')).slideToggle('fast');
637
+ })
638
+ // XML Feed Wrapper
639
+ .on('click', '#wf_newRow', function () {
640
+ let tbody = $('#table-1 tbody'),
641
+ template = $('#feed_config_template').text().trim().replace(/__idx__/g, tbody.find('tr').length);
642
+ tbody.append(template);
643
+ helper.fancySelect($('.outputType'));
644
+ })
645
+ // feed delete alert.
646
+ .on('click', '.single-feed-delete', function (event) {
647
+ event.preventDefault();
648
+ // noinspection JSUnresolvedVariable
649
+ if (confirm(opts.form.del_confirm)) {
650
+ window.location.href = $(this).attr('val');
651
+ }
652
+ })
653
+ // bulk delete alert.
654
+ .on('click', '#doaction, #doaction2', function () {
655
+ // noinspection JSUnresolvedVariable
656
+ return confirm(opts.form.del_confirm_multi);
657
+ })
658
+ // Generate Feed Table Row Delete
659
+ .on('change', '.dType', function () {
660
+ let self = $(this),
661
+ type = self.val(),
662
+ row = self.closest('tr');
663
+
664
+ if (type === 'pattern') {
665
+ row.find('.value_attribute').hide();
666
+ row.find('.value_pattern').show();
667
+ } else if (type === 'attribute') {
668
+ row.find('.value_attribute').show();
669
+ row.find('.value_pattern').hide();
670
+ } else if (type === 'remove') {
671
+ row.find('.value_attribute').hide();
672
+ row.find('.value_pattern').hide();
673
+ }
674
+ })
675
+ // Generate Feed Form Submit
676
+ .on('click', '.delRow', function (e) {
677
+ e.preventDefault();
678
+ $(this).closest('tr').remove();
679
+ helper.reindex_config_table();
680
+ })
681
+ .on('submit', '#generateFeed', function () {
682
+ // Feed Generating form validation
683
+ $(this).validate();
684
+
685
+ if ($(this).valid()) {
686
+ $(".makeFeedResponse")
687
+ .show()
688
+ .html(`<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> ${opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found
689
+ }
690
+ })
691
+ // Generate Update Feed Form Submit
692
+ .on('submit', '#updatefeed', function (e, data) {
693
+ // Feed Generating form validation
694
+ $(this).validate();
695
+
696
+ if ($(this).valid()) {
697
+ $(".makeFeedResponse")
698
+ .show()
699
+ .html(`<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> ${data && data.save ? opts.form.save : opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found
700
+ }
701
+ })
702
+ .on('change', '.ftporsftp', function () {
703
+ let server = $(this).val(),
704
+ status = $('.ssh2_status');
705
+
706
+ if (server === 'sftp') {
707
+ // noinspection JSUnresolvedVariable
708
+ status.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);
709
+ wpAjax.post('get_ssh2_status', {
710
+ _ajax_nonce: opts.nonce,
711
+ server: server
712
+ }).then(function (response) {
713
+ if (response === 'exists') {
714
+ // noinspection JSUnresolvedVariable
715
+ status.css('color', '#2CC185').text(opts.form.sftp_available);
716
+ setTimeout(function () {
717
+ status.hide();
718
+ }, 1500);
719
+ } else {
720
+ // noinspection JSUnresolvedVariable
721
+ status.show().css('color', 'red').text(opts.form.sftp_warning);
722
+ }
723
+ }).fail(function (e) {
724
+ status.hide();
725
+ helper.ajax_fail(e);
726
+ });
727
+ } else {
728
+ status.hide();
729
+ }
730
+ })
731
+ .on('click', '[name="save_feed_config"]', function (e) {
732
+ e.preventDefault();
733
+ $('#updatefeed').trigger('submit', {
734
+ save: true
735
+ });
736
+ })
737
+ .on('change', '#provider', function (event) {
738
+ event.preventDefault();
739
+
740
+ if (!$(this).closest('.generateFeed').hasClass('add-new')) return; // only for new feed.
741
+
742
+ let merchant = $(this).val(),
743
+ feedType = $("#feedType"),
744
+ feedForm = $("#providerPage"),
745
+ merchantInfo = $('#feed_merchant_info'); // set loading..
746
+
747
+ // noinspection JSUnresolvedVariable
748
+ feedForm.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> ' + opts.form.loading_tmpl + '</h3>'); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found
749
+
750
+ merchantInfo.find('.spinner').addClass('is-active');
751
+ feedType.disabled(!0); // disable dropdown
752
+
753
+ feedType.parent().find('.spinner').addClass('is-active');
754
+ merchantInfo.find('.merchant-info-section .data').html(''); // remove previous data
755
+ // Get Merchant info for selected Provider/Merchant
756
+
757
+ if (merchantInfoCache.hasOwnProperty(merchant)) {
758
+ feedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);
759
+ } else {
760
+ wpAjax.send('woo_feed_get_merchant_info', {
761
+ type: 'GET',
762
+ data: {
763
+ nonce: opts.nonce,
764
+ provider: merchant
765
+ }
766
+ }).then(function (r) {
767
+ merchantInfoCache[merchant] = r;
768
+ feedEditor.renderMerchantInfo(merchantInfo, feedType, r);
769
+ }).fail(helper.ajax_fail);
770
+ } // Get FeedForm For Selected Provider/Merchant
771
+
772
+
773
+ if (merchantTemplateCache.hasOwnProperty(merchant)) {
774
+ feedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);
775
+ } else {
776
+ wpAjax.post('get_feed_merchant', {
777
+ _ajax_nonce: opts.nonce,
778
+ merchant: merchant
779
+ }).then(function (r) {
780
+ merchantTemplateCache[merchant] = r;
781
+ feedEditor.renderMerchantTemplate(feedForm, r);
782
+ }).fail(helper.ajax_fail);
783
+ }
784
+ })
785
+ // Feed Active and Inactive status change via ajax
786
+ .on('change', '.woo_feed_status_input', function () {
787
+ let self = $(this);
788
+ wpAjax.post('update_feed_status', {
789
+ _ajax_nonce: opts.nonce,
790
+ feedName: self.val(),
791
+ status: self[0].checked ? 1 : 0
792
+ });
793
+ });
794
+ // event with trigger
795
+ $(document)
796
+ .on('change', '[name="is_outOfStock"], [name="product_visibility"]', function () {
797
+ let outOfStockVisibilityRow = $('.out-of-stock-visibility');
798
+ if ($('[name="is_outOfStock"]:checked').val() === 'n' && $('[name="product_visibility"]:checked').val() === '1') {
799
+ outOfStockVisibilityRow.show();
800
+ } else {
801
+ outOfStockVisibilityRow.hide();
802
+ }
803
+ })
804
+ .on('change', '.attr_type', function () {
805
+ // Attribute type selection
806
+ let self = $(this),
807
+ type = self.val(),
808
+ row = self.closest('tr');
809
+
810
+ if (type === 'pattern') {
811
+ row.find('.wf_attr').hide();
812
+ row.find('.wf_attr').val('');
813
+ row.find('.wf_default').show();
814
+ } else {
815
+ row.find('.wf_attr').show();
816
+ row.find('.wf_default').hide();
817
+ row.find('.wf_default').val('');
818
+ }
819
+ })
820
+ .on('change', '.wf_mattributes, .attr_type', function () {
821
+ let row = $(this).closest('tr'),
822
+ attribute = row.find('.wf_mattributes'),
823
+ type = row.find('.attr_type'),
824
+ valueColumn = row.find('td:eq(4)'),
825
+ provider = $('#provider').val();
826
+
827
+ // noinspection JSUnresolvedVariable
828
+ if (opts.form.google_category.hasOwnProperty(attribute.val()) && type.val() === 'pattern' && helper.in_array(provider, opts.form.google_category[attribute.val()])) {
829
+ if (valueColumn.find('select.selectize').length === 0) {
830
+ valueColumn.find('input.wf_default').remove();
831
+ valueColumn.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>');
832
+ // noinspection JSUnresolvedVariable
833
+ valueColumn.append(`<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">${opts.learn_more}</a></span>`);
834
+
835
+ if (!googleCategories) {
836
+ valueColumn.append('<span class="spinner is-active" style="margin: 0;"></span>');
837
+ }
838
+
839
+ let select = valueColumn.find('.wf_attributes select');
840
+ // noinspection JSUnresolvedVariable
841
+ helper.selectize(select, {
842
+ preload: true,
843
+ placeholder: opts.form.select_category,
844
+ load: function load(query, cb) {
845
+ if (!googleCategories) {
846
+ wpAjax.send('get_google_categories', {
847
+ type: 'GET',
848
+ data: {
849
+ _ajax_nonce: opts.nonce,
850
+ action: "get_google_categories",
851
+ provider: provider
852
+ }
853
+ }).then(function (r) {
854
+ googleCategories = r;
855
+ cb(googleCategories);
856
+ valueColumn.find('.spinner').remove();
857
+ }).fail(helper.ajax_fail);
858
+ } else {
859
+ cb(googleCategories);
860
+ }
861
+ }
862
+ });
863
+ }
864
+ } else {
865
+ if (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {
866
+ valueColumn.find('span').remove();
867
+ valueColumn.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">');
868
+
869
+ if (type.val() !== 'pattern') {
870
+ valueColumn.find('input.wf_default').hide();
871
+ }
872
+ }
873
+ }
874
+ })
875
+ .on('change', '#feedType,#provider', function () {
876
+ let type = $('#feedType').val(),
877
+ provider = $('#provider').val(),
878
+ itemWrapper = $('.itemWrapper'),
879
+ wf_csv_txt = $('.wf_csvtxt');
880
+
881
+ // noinspection JSUnresolvedVariable
882
+ if (type !== '' && helper.in_array(provider, opts.form.item_wrapper_hidden)) {
883
+ itemWrapper.hide();
884
+ } else if (type === 'xml') {
885
+ itemWrapper.show();
886
+ wf_csv_txt.hide();
887
+ } else if (type === 'csv' || type === 'txt') {
888
+ itemWrapper.hide();
889
+ wf_csv_txt.show();
890
+ } else {
891
+ itemWrapper.hide();
892
+ wf_csv_txt.hide();
893
+ }
894
+ })
895
+ .trigger('change');
896
+ });
897
+ })(jQuery, window, document, wp.ajax, wpf_ajax_obj);
admin/js/woo-feed-admin.min.js CHANGED
@@ -1,8 +1,2 @@
1
- /**!
2
- * WooFeed Scripts
3
- * @version 3.3.6
4
- * @package WooFeed
5
- * @copyright 2020 WebAppick
6
- *
7
- */
8
- !function(r,e,t,s,l){"use strict";function n(e){r(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function a(e,t){r(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}r.fn.disabled=function(n){return r(this).each(function(){var e=r(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===n||!0===n):!0===n?e.addClass(t):e.removeClass(t)}),self},r.fn.isDisabled=function(){var e=r(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function i(e,t){return r.extend(!0,{},e,t)}var o,c,d={in_array:function(e,t){try{return-1!==t.indexOf(e)}catch(e){return!1}},selectize_render_item:function(e,t){return'<div class="item wapk-selectize-item">'+t(e.text)+"</div>"},ajax_fail:function(e){console.warn(e),alert(e.hasOwnProperty("statusText")&&e.hasOwnProperty("status")?l.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,n){return(e||r(".sorted_table")).each(function(){var e=r(this),t=e.find("tbody > tr:eq(0) > td").length;e.wf_sortable(i({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",handle:"i.wf_sortedtable",placeholder:'<tr class="placeholder"><td colspan="'.concat(t,'"></td></tr>')},n))})},selectize:function(e,t){return(e||r("select.selectize")).not(".selectized").each(function(){var e=r(this);e.selectize(i({create:e.data("create")||!1,plugins:e.data("plugins")?e.data("plugins").split(",").map(function(e){return e.trim()}):[],render:{item:d.selectize_render_item}},t))})}},f={form:null,init:function(){if(this.form=r(".generateFeed"),this.form.length){var e=r(".out-of-stock-visibility");d.sortable(),d.selectize(),r(t).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){"n"===r('[name="is_outOfStock"]:checked').val()&&"1"===r('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=r(this).val(),t=r(this).closest("tr");"pattern"===e?(t.find(".wf_attr").hide(),t.find(".wf_attr").val(""),t.find(".wf_default").show()):(t.find(".wf_attr").show(),t.find(".wf_default").hide(),t.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=r(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),a=e.find("td:eq(4)"),i=r("#provider").val();if("current_category"===t.val()&&"pattern"===n.val()&&d.in_array(i,["google","facebook","pinterest"])){if(0===a.find("select.selectize").length){d.selectize_render_item;a.find("input.wf_default").remove(),a.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),a.append('<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">'+l.learn_more+"</a></span>"),c||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var o=a.find(".wf_attributes select");d.selectize(o,{preload:!0,placeholder:l.form.select_category,load:function(e,t){c?t(c):s.send("get_google_categories",{type:"GET",data:{_ajax_nonce:l.nonce,action:"get_google_categories",provider:i}}).then(function(e){t(c=e),a.find(".spinner").remove()}).fail(d.ajax_fail)}})}}else"current_category"!==t.val()&&0===a.find("input.wf_default").length&&(a.find("span").remove(),a.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==n.val()&&a.find("input.wf_default").hide())}).trigger("change"),r(".outputType").fancySelect(),r(t).trigger(new jQuery.Event("feedEditor.init",{target:this.form}))}},renderMerchantInfo:function(e,n,a){for(var i in a)a.hasOwnProperty(i)&&(e.find(".merchant-info-section."+i+" .data").html(a[i]),"feed_file_type"===i&&function(){var t=a[i].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==l.na.toLowerCase()});t.length?(n.find("option").removeAttr("selected").each(function(){var e=r(this);e.val()&&!d.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&n.find('option[value="'+t[0]+'"]').attr("selected","selected")):n.find("option").disabled(!1)}());e.find(".spinner").removeClass("is-active"),n.disabled(!1),n.trigger("change"),n.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(n,a){function e(t){if(a.hasOwnProperty(t))if("tabs"===t)n.html(a[t]);else{var e=r('[name="'+t+'"]');e.length&&e.each(function(){var e=r(this);e.is("select")?e.find('[value="'+a[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===a[t]?e.prop("checked",!0):e.val(a[t])}).trigger("change")}}for(var t in a)e(t);f.init()}},p=[],u=[];e.wf={helper:d,feedEditor:f},r(e).load(function(){o=r(".toClipboard"),null!=r(location).attr("href").match(/webappick.*feed/g)&&r("#wpbody-content").addClass("woofeed-body-content"),r("[data-toggle_slide]").on("click",function(e){e.preventDefault(),r(r(this).data("toggle_slide")).slideToggle("fast")}),postboxes.add_postbox_toggles(pagenow),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?o.find("img").hide(0):(o.each(function(){r(this).on("mouseleave",n).on("blur",n)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;a(e.trigger,(t=e.action,n="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+n+" to "+t:"Press Ctrl-"+n+" to "+t))}).on("success",function(e){a(e.trigger,"Copied!")})),f.init(),d.selectize(),r(t).on("click","#wf_newRow",function(){r("#table-1 tbody tr:first").clone().find("input").val("").end().find("select:not('.wfnoempty')").val("").end().insertAfter("#table-1 tbody tr:last"),r(".outputType").each(function(e){r(this).attr("name","output_type["+e+"][]")})}),r("#feedType,#provider").on("change",function(){var e=r("#feedType").val(),t=r("#provider").val(),n=r(".itemWrapper"),a=r(".wf_csvtxt");""!==e&&d.in_array(t,["google","facebook","pinterest","fruugo.au","stylight.com","nextad","skinflint.co.uk","comparer.be","dooyoo","hintaseuranta.fi","incurvy","kijiji.ca","marktplaats.nl","rakuten.de","shopalike.fr","spartoo.fi","webmarchand"])?n.hide():"xml"===e?(n.show(),a.hide()):"csv"===e||"txt"===e?(n.hide(),a.show()):(n.hide(),a.hide())}).trigger("change"),r(".wfmasterTooltip").hover(function(){var e=r(this).attr("wftitle");r(this).data("tipText",e).removeAttr("wftitle"),r('<p class="wftooltip"></p>').text(e).appendTo("body").fadeIn("slow")},function(){r(this).attr("wftitle",r(this).data("tipText")),r(".wftooltip").remove()}).mousemove(function(e){r(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),r(t).on("change",".dType",function(){var e=r(this).val(),t=r(this).closest("tr");"pattern"===e?(t.find(".value_attribute").hide(),t.find(".value_pattern").show()):"attribute"===e?(t.find(".value_attribute").show(),t.find(".value_pattern").hide()):"remove"===e&&(t.find(".value_attribute").hide(),t.find(".value_pattern").hide())}),r(t).on("click",".delRow",function(e){e.preventDefault(),r(this).closest("tr").remove()}),r(".generateFeed").validate(),r(t).on("submit","#generateFeed",function(){r(this).validate(),r(this).valid()&&r(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '+l.form.generate+"</b>")}),r(".updatefeed").validate(),r('[name="save_feed_config"]').on("click",function(e){e.preventDefault(),r("#updatefeed").trigger("submit",{save:!0})}),r(t).on("submit","#updatefeed",function(e,t){r(this).validate(),r(this).valid()&&r(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '+(t&&t.save?l.form.save:l.form.generate)+"</b>")}),r("#provider").on("change",function(e){if(e.preventDefault(),r(this).closest(".generateFeed").hasClass("add-new")){var t=r(this).val(),n=r("#feedType"),a=r("#providerPage"),i=r("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+l.form.loading_tmpl+"</h3>"),i.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),i.find(".merchant-info-section .data").html(""),p.hasOwnProperty(t)?f.renderMerchantInfo(i,n,p[t]):s.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:l.nonce,provider:t}}).then(function(e){p[t]=e,f.renderMerchantInfo(i,n,e)}).fail(d.ajax_fail),u.hasOwnProperty(t)?f.renderMerchantTemplate(a,u[t]):s.post("get_feed_merchant",{_ajax_nonce:l.nonce,merchant:t}).then(function(e){u[t]=e,f.renderMerchantTemplate(a,e)}).fail(d.ajax_fail)}}),r(".woo_feed_status_input").on("change",function(){var e=r(this).val(),t=r(this)[0].checked?1:0;s.post("update_feed_status",{_ajax_nonce:l.nonce,feedName:e,status:t})}),r("#woo_feed_settings_error_copy_clipboard_button").on("click",function(){r("#woo_feed_settings_error_report").select(),t.execCommand("copy"),e.getSelection?e.getSelection().removeAllRanges():t.selection&&t.selection.empty()}),r(t).on("change",".ftporsftp",function(){var e=r(this).val(),t=r(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(l.form.sftp_checking),s.post("get_ssh2_status",{_ajax_nonce:l.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(l.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(l.form.sftp_warning)}).fail(function(e){t.hide(),d.ajax_fail(e)})):t.hide()})})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
1
+ "use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}!function(i,a,n,s,c){i.fn.disabled=function(n){return i(this).each(function(){var e=i(this),t="disabled";void 0!==e.prop(t)?e.prop(t,void 0===n||!0===n):!0===n?e.addClass(t):e.removeClass(t)}),self},i.fn.isDisabled=function(){var e=i(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function e(e){i(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function r(e,t){i(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function o(e,t){return i.extend(!0,{},e,t)}function t(){l=i(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?l.find("img").hide(0):(l.each(function(){i(this).on("mouseleave",e).on("blur",e)}),new ClipboardJS(".toClipboard").on("error",function(e){var t,n;r(e.trigger,(t=e.action,n="cut"===t?"X":"C",/iPhone|iPad/i.test(navigator.userAgent)?"No support :(":/Mac/i.test(navigator.userAgent)?"Press ⌘-"+n+" to "+t:"Press Ctrl-"+n+" to "+t))}).on("success",function(e){r(e.trigger,"Copied!")}))}var l,_,f={in_array:function(e,t){try{return-1!==t.indexOf(e)}catch(e){return!1}},selectize_render_item:function(e,t){return'<div class="item wapk-selectize-item">'.concat(t(e.text),"</div>")},ajax_fail:function(e){console.warn(e),alert(e.hasOwnProperty("statusText")&&e.hasOwnProperty("status")?c.ajax.error+"\n"+e.statusText+" ("+e.status+")":e)},sortable:function(e,n,a,r){return(e||i(".sorted_table")).each(function(){var e=i(this),t=e.find("tbody > tr:eq(0) > td").length||a||9;e.wf_sortable(o({containerSelector:"table",itemPath:"> tbody",itemSelector:"tr",handle:"i.wf_sortedtable",placeholder:'<tr class="placeholder"><td colspan="'.concat(t,'"></td></tr>'),onDrop:function(e,t,n,a){e.removeClass(t.group.options.draggedClass).removeAttr("style"),i("body").removeClass(t.group.options.bodyClass),r&&"function"==typeof r&&r(e,t,n,a)}},n))})},selectize:function(e,t){return(e||i("select.selectize")).not(".selectized").each(function(){var e=i(this);e.selectize(o({create:e.data("create")||!1,plugins:e.data("plugins")?e.data("plugins").split(",").map(function(e){return e.trim()}):[],render:{item:f.selectize_render_item}},t))})},fancySelect:function(e,t){return(e||i("select.fancySelect")).not(".FancySelectInit").each(function(){i(this).fancySelect(o({maxItemShow:3},t))})},reindex_config_table:function(){i("#table-1").find("tbody tr").each(function(n,e){i(e).find("[name]").each(function(e,t){i(t).attr("name",i(t).attr("name").replace(/(\[\d\])/g,"[".concat(n,"]")))})})},common:function(){f.sortable(i(".sorted_table"),{},9,f.reindex_config_table),f.selectize(),f.fancySelect(i(".outputType"))}},d={form:null,init:function(){this.form=i(".generateFeed"),this.form.length&&(f.common(),i(n).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,r){function e(e){var t;r.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(r[e]),"feed_file_type"===e&&((t=r[e].split(",").map(function(e){return e.trim().toLowerCase()}).filter(function(e){return""!==e&&e!==c.na.toLowerCase()})).length?(a.find("option").removeAttr("selected").each(function(){var e=i(this);e.val()&&!f.in_array(e.val(),t)?e.disabled(!0):e.disabled(!1)}),1===t.length&&a.find('option[value="'+t[0]+'"]').attr("selected","selected")):a.find("option").disabled(!1)))}for(var t in r)e(t);n.find(".spinner").removeClass("is-active"),a.disabled(!1),a.trigger("change"),a.parent().find(".spinner").removeClass("is-active")},renderMerchantTemplate:function(n,a){function e(t){if(a.hasOwnProperty(t))if("tabs"===t)n.html(a[t]);else{var e=i('[name="'+t+'"]');e.length&&e.each(function(){var e=i(this);e.is("select")?e.find('[value="'+a[t]+'"]').prop("selected",!0):(e.is("[type=checkbox]")||e.is("[type=radio]"))&&e.val()===a[t]?e.prop("checked",!0):e.val(a[t])}).trigger("change")}}for(var t in a)e(t);d.init()}},u=[],h=[],p=function(){function e(){_classCallCheck(this,e),this._feed=c.generator.feed,this._limit=c.generator.limit,this._progress=0,this._timer=null,this._color=!1,this._total_batch=0,this._current_batch=0,this._product_ids=[],this._progress_per_batch=0,this._refresh=!0,this._regenerate=c.generator.regenerate,a.isRegenerating=!1,this._all_btn=i(".wpf_regenerate"),this._current_btn=i("#".concat(this._feed.replace("wf_config","wf_feed_"))),this._current_btn_label=""}return _createClass(e,[{key:"init",value:function(){var t=this;return""!==this._feed&&this._regenerate&&!1===a.isRegenerating&&this.generate(),i(n).on("click",".wpf_regenerate",function(e){e.preventDefault(),t._current_btn=i(this),t._current_btn.hasClass("disabled")||!0===a.isRegenerating||(t._feed=t._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==t._feed&&t.generate())}),this}},{key:"_block_button",value:function(){this._all_btn.length&&this._all_btn.addClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").addClass("wpf_spin reverse_spin"),this._current_btn_label=this._current_btn.attr("title"),this._current_btn.attr("aria-label",c.regenerate).attr("title",c.regenerate))}},{key:"_unblock_button",value:function(){this._all_btn.length&&this._all_btn.removeClass("disabled"),this._current_btn.length&&(this._current_btn.find("span").removeClass("wpf_spin"),this._current_btn.find("span").removeClass("reverse_spin"),this._current_btn.attr("aria-label",this._current_btn_label).attr("title",this._current_btn_label))}},{key:"generate",value:function(){var t=this,n=this;a.isRegenerating=!0,this._block_button(),this._resetProgressBar(),this._progressBarActive(),this._log("Counting Total Products"),this._updateProgressStatus("Fetching products."),this._get_product_ids().then(function(e){t._progress=10,n._log({response:e}),e.success?(n._log("Total ".concat(e.total," Products found.")),n._product_ids=e.product,n._total_batch=t._product_ids.length,n._current_batch=0,n._progress_per_batch=(90-t._progress)/t._total_batch,n._process_batch(),n._updateProgressStatus("Processing Products...")):n._updateProgressStatus(e.data.message)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red",setTimeout(function(){n._stopProgressBar(),n._unblock_button()},1500)})}},{key:"_get_product_ids",value:function(){return this._progress=5,s.post("get_product_information",{_ajax_nonce:c.nonce,feed:this._feed,limit:this._limit})}},{key:"_process_batch",value:function(){var t=this,e="Processing Batch ".concat(this._current_batch+1," of ").concat(this._total_batch);this._updateProgressStatus(e),this._log(e),s.post("make_batch_feed",{_ajax_nonce:c.nonce,feed:this._feed,products:this._product_ids[this._current_batch],loop:this._current_batch}).then(function(e){t._current_batch++,t._log("Batch ".concat(t._current_batch," Completed")),t._log(e),t._current_batch<t._total_batch&&(t._process_batch(),t._progress+=t._progress_per_batch),t._current_batch===t._total_batch&&t._save_feed_file()}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_save_feed_file",value:function(){var t=this;this._log("Saving feed file"),this._updateProgressStatus("Saving feed file"),s.post("save_feed_file",{_ajax_nonce:c.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(a.location.href="".concat(c.pages.list.feed,"&link=").concat(e.url,"&cat=").concat(e.cat)),setTimeout(function(){t._stopProgressBar(),setTimeout(function(){t._resetProgressBar(!0),t._unblock_button()},3e3)},2500)}).fail(function(e){t._log(e),t._updateProgressStatus(e.message),t._color="red",setTimeout(function(){t._stopProgressBar(),t._unblock_button()},1500)})}},{key:"_log",value:function(e){return c.wpf_debug&&console.log(e),this}},{key:"_progressBarActive",value:function(e){var t=0<arguments.length&&void 0!==e?e:0,n=this;return this._toggleProgressBar(!0),this._timer=setInterval(function(){n._updateProgressBar()},t||1e3),this}},{key:"_stopProgressBar",value:function(){return clearInterval(this._timer),this}},{key:"_resetProgressBar",value:function(e){return this._toggleProgressBar(!1),this._updateProgressStatus(""),clearInterval(this._timer),this._color=!1,this._timer=null,this._progress=0,e&&this._updateProgressBar(),this}},{key:"_toggleProgressBar",value:function(e){var t=i("#feed_progress_table");return e?t.show():t.hide(),this}},{key:"_updateProgressStatus",value:function(e){return i(".feed-progress-status").text(e),this}},{key:"_updateProgressBar",value:function(){var e=i(".feed-progress-percentage"),t=i(".feed-progress-bar-fill"),n="".concat(Math.round(this._progress),"%");t.css({width:n,background:this._color||"#3DC264"}),e.text(n)}}]),e}();a.wf={helper:f,feedEditor:d,generator:p},i(a).load(function(){null!==i(location).attr("href").match(/webappick.*feed/g)&&i("#wpbody-content").addClass("woofeed-body-content"),t(),postboxes.add_postbox_toggles(pagenow),(new p).init(),""!==c.generator.feed&&c.generator.regenerate,d.init(),f.common(),i(".wfmasterTooltip").hover(function(){var e=i(this),t=e.attr("wftitle");e.data("tipText",t).removeAttr("wftitle"),i('<p class="wftooltip"></p>').text(t).appendTo("body").fadeIn("slow")},function(){var e=i(this);e.attr("wftitle",e.data("tipText")),i(".wftooltip").remove()}).mousemove(function(e){i(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),i(".generateFeed").validate(),i(n).on("click","[data-toggle_slide]",function(e){e.preventDefault(),i(i(this).data("toggle_slide")).slideToggle("fast")}).on("click","#wf_newRow",function(){var e=i("#table-1 tbody"),t=i("#feed_config_template").text().trim().replace(/__idx__/g,e.find("tr").length);e.append(t),f.fancySelect(i(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(c.form.del_confirm)&&(a.location.href=i(this).attr("val"))}).on("click","#doaction, #doaction2",function(){return confirm(c.form.del_confirm_multi)}).on("change",".dType",function(){var e=i(this),t=e.val(),n=e.closest("tr");"pattern"===t?(n.find(".value_attribute").hide(),n.find(".value_pattern").show()):"attribute"===t?(n.find(".value_attribute").show(),n.find(".value_pattern").hide()):"remove"===t&&(n.find(".value_attribute").hide(),n.find(".value_pattern").hide())}).on("click",".delRow",function(e){e.preventDefault(),i(this).closest("tr").remove(),f.reindex_config_table()}).on("submit","#generateFeed",function(){i(this).validate(),i(this).valid()&&i(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(c.form.generate,"</b>"))}).on("submit","#updatefeed",function(e,t){i(this).validate(),i(this).valid()&&i(".makeFeedResponse").show().html('<b style="color: darkblue;"><i class="dashicons dashicons-sos wpf_spin"></i> '.concat(t&&t.save?c.form.save:c.form.generate,"</b>"))}).on("change",".ftporsftp",function(){var e=i(this).val(),t=i(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(c.form.sftp_checking),s.post("get_ssh2_status",{_ajax_nonce:c.nonce,server:e}).then(function(e){"exists"===e?(t.css("color","#2CC185").text(c.form.sftp_available),setTimeout(function(){t.hide()},1500)):t.show().css("color","red").text(c.form.sftp_warning)}).fail(function(e){t.hide(),f.ajax_fail(e)})):t.hide()}).on("click",'[name="save_feed_config"]',function(e){e.preventDefault(),i("#updatefeed").trigger("submit",{save:!0})}).on("change","#provider",function(e){if(e.preventDefault(),i(this).closest(".generateFeed").hasClass("add-new")){var t=i(this).val(),n=i("#feedType"),a=i("#providerPage"),r=i("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+c.form.loading_tmpl+"</h3>"),r.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),r.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?d.renderMerchantInfo(r,n,u[t]):s.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:c.nonce,provider:t}}).then(function(e){u[t]=e,d.renderMerchantInfo(r,n,e)}).fail(f.ajax_fail),h.hasOwnProperty(t)?d.renderMerchantTemplate(a,h[t]):s.post("get_feed_merchant",{_ajax_nonce:c.nonce,merchant:t}).then(function(e){h[t]=e,d.renderMerchantTemplate(a,e)}).fail(f.ajax_fail)}}).on("change",".woo_feed_status_input",function(){var e=i(this);s.post("update_feed_status",{_ajax_nonce:c.nonce,feedName:e.val(),status:e[0].checked?1:0})}),i(n).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){var e=i(".out-of-stock-visibility");"n"===i('[name="is_outOfStock"]:checked').val()&&"1"===i('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=i(this),t=e.val(),n=e.closest("tr");"pattern"===t?(n.find(".wf_attr").hide(),n.find(".wf_attr").val(""),n.find(".wf_default").show()):(n.find(".wf_attr").show(),n.find(".wf_default").hide(),n.find(".wf_default").val(""))}).on("change",".wf_mattributes, .attr_type",function(){var e=i(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),a=e.find("td:eq(4)"),r=i("#provider").val();if(c.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&f.in_array(r,c.form.google_category[t.val()])){if(0===a.find("select.selectize").length){a.find("input.wf_default").remove(),a.append('<span class="wf_default wf_attributes"><select name="default[]" class="selectize"></select></span>'),a.append('<span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">'.concat(c.learn_more,"</a></span>")),_||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var o=a.find(".wf_attributes select");f.selectize(o,{preload:!0,placeholder:c.form.select_category,load:function(e,t){_?t(_):s.send("get_google_categories",{type:"GET",data:{_ajax_nonce:c.nonce,action:"get_google_categories",provider:r}}).then(function(e){t(_=e),a.find(".spinner").remove()}).fail(f.ajax_fail)}})}}else"current_category"!==t.val()&&0===a.find("input.wf_default").length&&(a.find("span").remove(),a.append('<input autocomplete="off" class="wf_default wf_attributes" type="text" name="default[]" value="">'),"pattern"!==n.val()&&a.find("input.wf_default").hide())}).on("change","#feedType,#provider",function(){var e=i("#feedType").val(),t=i("#provider").val(),n=i(".itemWrapper"),a=i(".wf_csvtxt");""!==e&&f.in_array(t,c.form.item_wrapper_hidden)?n.hide():"xml"===e?(n.show(),a.hide()):"csv"===e||"txt"===e?(n.hide(),a.show()):(n.hide(),a.hide())}).trigger("change")})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
+ //# sourceMappingURL=woo-feed-admin.min.js.map
 
 
 
 
 
 
admin/js/woo-feed-admin.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["woo-feed-admin.js"],"names":["_defineProperties","target","props","descriptor","i","_createClass","Constructor","protoProps","staticProps","prototype","window","wpAjax","self","prop","showTooltip","$","hasClass","currentTarget","clearTooltip","removeClass","actionMsg","className","match","index","action","removeAttr","actionKey","elem","addClass","attr","msg","extend","_default","_args","clip","$copyBtn","feedGenerator","left","event","trigger","test","navigator","on","console","googleCategories","in_array","needle","haystack","sortable","escape","data","text","ajax_fail","column_count","find","warn","wf_sortable","selectize_render_item","e","hasOwnProperty","opts","ajax","error","statusText","status","el","config","column","_onDrop","each","this","length","selectize","itemPath","create","concat","plugins","$item","container","containerSelector","group","options","bodyClass","itemSelector","handle","onDrop","fancySelect","maxItemShow","split","map","s","trim","helper","render","item","replace","x","form","merchantInfo","document","jQuery","k","init","renderMerchantInfo","opt","feedType","r","types","html","t","toLowerCase","na","disabled","val","_loop2","feedForm","contentSettings","renderMerchantTemplate","feedEditor","is","merchantInfoCache","tooltip","css","top","isRegenerating","_feed","_current_btn","feed","_limit","generator","limit","_progress","_product_ids","_progress_per_batch","_refresh","_all_btn","generate","key","value","_regenerate","_current_btn_label","regenerate","_this","_log","response","_updateProgressStatus","message","product","setTimeout","_stopProgressBar","_process_batch","_color","_resetProgressBar","_ajax_nonce","post","_save_feed_file","_current_batch","_total_batch","_unblock_button","then","refreshInterval","arguments","undefined","_timer","setInterval","_updateProgressBar","clearInterval","update","table","show","hide","width","bar","percentage","load","background","preventDefault","pagenow","template","common","hover","title","appendTo","userAgent","merchantTemplateCache","remove","ClipboardJS","clipboard","location","slideToggle","tbody","append","row","confirm","type","del_confirm","href","del_confirm_multi","closest","reindex_config_table","valid","server","save","sftp_checking","nonce","sftp_available","sftp_warning","provider","merchant","fail","feedName","outOfStockVisibilityRow","checked","valueColumn","select","preload","google_category","query","attribute","cb","itemWrapper"],"mappings":"yHAAA,SAAAA,kBAAAC,EAAAC,+BACA,IAAAC,EAAAD,EAAAE,kHADA,SAAAC,aAAAC,EAAAC,EAAAC,GAWC,OAFDD,GAAAP,kBAAAM,EAAAG,UAAAF,GARAC,GAAAE,kBAAAC,EAAAH,GAUCF,gFA0BGM,IAAAA,EAAAA,EAAAA,MACAC,EAAAD,gBAEA,IAAAA,EAAAA,KAAAC,GAHAD,EAAAA,KAAAA,OAAAA,IAAAA,IAAAA,IAAAA,4EAYF,IAAAE,EAAAA,EAAAA,MAEAC,EAAA,WACA,YAHA,IAAAH,EAAAC,KAAAA,GAAAD,EAAAC,KAAAA,GAAAD,EAAAI,SAAAH,IAUQI,SAWRC,EAXuBC,GAAaC,EAAAA,EAAAA,eAAuBC,YAAUC,SAAMC,EAAhBC,GAAvB,OAA+EL,EAAAA,MAAAA,sBAAAA,IAAAA,KAAAA,OADpHC,YAAA,cAAAK,WAAAC,cAKGC,SAAFZ,EAAAA,EAAAA,GACAA,EAEDY,GAAAC,SAAA,2BAAAC,KAAA,aAAAC,GAiCyB,SAAAC,EAAAC,EAAAC,GAAA,OAvBvBlB,EAAAgB,QAAA,EAAA,GAAAC,EAAAC,GAHAb,SA8MEc,IAEAtB,EAAAA,EAAAA,4GAxRLuB,EA4RMC,KAAAA,WAEAC,EAAAA,MAAAA,GAAAA,aAAAA,GAAAA,GAAAA,OAAAA,oEAvMLvB,EAAAwB,EAAAC,WA2MQD,EAAAd,oEA5NG,gBAATO,OAAAS,KAAAC,UAAAT,WAAAZ,WAAAA,EAAAA,OAAAA,EAEAA,cAAAA,EAAAA,OAAAA,MA0NMsB,GAAA,UAAA,SAAAJ,6BAxOPvB,IA0CE4B,EAfYC,KAAfC,SAAA,SAAAC,EAAAC,uFAQIC,MAAAA,yCAAwBF,OAAaG,EAAAC,EAAAC,MAAA,WAErCC,UACAC,SAAAC,GANM1C,QAAA2C,KAAAC,GAQRC,MAAAA,EAAAA,eAAAA,eARQC,EAAAC,eAAA,UAAAC,EAAAC,KAAAC,MAAA,KAAAJ,EAAAK,WAAA,KAAAL,EAAAM,OAAA,IAAAN,IAoCHV,SAAA,SAAAiB,EAAAC,EAAAC,EAAAC,GACD,OAAAH,GAAAlD,EAAA,kBAAAsD,KAAA,WArCI,IAAAzD,EAsCHsD,EAtCGI,MAuCNjB,EAnCAzC,EAAA0C,KAAA,yBAAAiB,QAAAJ,GAAA,EAnBFvD,EAAA4C,YAAAzB,EAAA,CAwDAyC,kBAAW,QACVC,SAAU,UArBXzB,aAAU,KACTpC,OAAA4D,mBACCE,YAAI9D,wCADW+D,OAAAtB,EAAA,gBACfuB,OAAAA,SACaC,EAAAC,EAAa5B,EAAAZ,GAC1B1B,EAAAA,YAAK4C,EAAL5C,MAAAA,QAAAA,cAAAA,WAAAA,SACCmE,EAAAA,QAJc5D,YAAA2D,EAAAE,MAAAC,QAAAC,WAMdC,GAAAA,mBAAAA,GACAC,EAAAA,EAAAA,EAAQ3B,EAAAA,KAaVS,OARGM,UAAAP,SAAKoB,EAAAA,GACJA,OAAAA,GAAAA,EAAAA,qBAAAA,IAAAA,eAAAA,KAAAA,WACAzE,IAAAA,EAAA0E,EAAAA,MACDC,EAAAA,UAAAA,EAAA,CADCb,OAXqBR,EAWrBhB,KAAA,YAAA,EAGH0B,QALEhE,EAAAsC,KAAA,WAAAtC,EAAAsC,KAAA,WAAAsC,MAAA,KAAAC,IAAA,SAAAC,GAjDJ,OAAAA,EAAAC,SAwDAnB,GAEEzD,OAAAuC,CACA1C,KAAAA,EAAAA,wBAFDsD,OAOE0B,YAAA5C,SAAAiB,EAAAC,GACA2B,OAAAA,GAAAA,EAAAA,uBAAAA,IAAAA,oBAAAA,KAAAA,WACCC,EAAAA,MADOR,YAAAvD,EAAA,CApEXX,YAAAA,GAwEE8C,gIAMCqB,EAAAA,GAAAA,KA5DK,OAAAxE,EAAAkD,GAAApC,KAAA,QAAAkE,QAAA,YAAA,IAAApB,OAAAqB,EAAA,yFAkENjF,EAACyD,YACAzD,EAAAA,YAAAA,EAAAA,+CAgBHkF,KALYA,KAAAlF,EAAA,iBAKZkF,KAEAtC,KAAAA,SAwBGuC,EAAAA,SAEAnF,EAAAoF,GAAI5D,QAAA,IAAA6D,OAAqBC,MAAG,kBAAA,CAtB/BC,OAAIhC,KAAA2B,UAiCGM,mBAAIC,SAAJN,EAAAO,EAAAC,GAtBPF,SAAAA,EAAAZ,GA4BI,IAtBJW,EAkBOG,EAAA/C,eA9CK0C,KA+CNH,EAAA5C,KAAIqD,0BAA6BrD,EAAK,UAAAsD,KAAAF,EAAmBC,IAE1D,mBAtCLL,KAiBAC,EAAAA,EAAAA,GAAAA,MAAAA,KAAAA,IAAAA,SAAAA,GA5BY,OAAAM,EAAAlB,OAAAmB,mCA6BM,MAAA,KAAAD,GAAAA,IAAAjD,EAAAmD,GAAAD,iBAEfZ,QAwBFO,EAASO,KAAT,UAAAvF,WAAA,YAAA4C,KAAA,WAtBEoC,IAAAD,EAAAjE,EAAA+B,MACCmC,EAAAQ,QAAC3D,EAAWT,SAAZ2D,EAAYrF,MAAAA,GAAAqF,EAAZQ,UAAA,GAAAR,EAAAQ,UAAA,mFAGEP,EAAAnD,KAAA,UAAA0D,UAAA,KAMAP,IAAAA,IAAAA,KAAAA,EACCS,EAAAR,GAGDS,EAAAA,KAAAP,YAAUrC,YAAAA,aACVkC,EAHCD,UAGD,GACDC,EAAAlE,QAAA6E,gEAKJlB,uBAAAA,SAAAA,EAAAA,GACAO,SAAAA,EAASO,GACTP,GAAAA,EAAAA,eAAAA,GACAA,GAAAA,SAAAA,EA6BIU,EAAAP,KAAAF,EAAAL,QA1BL,CA4BG,IAAAe,EAAArG,EAAA,UAAAsF,EAAA,gBAGFe,EAAiB/C,KAAA,WA1BlBgD,IAAAA,EAAAA,EAAAA,qBAGGC,EAAAA,KAAIhB,WAAJI,EAAAL,GAAA,MAAAxF,KAAA,YAAA,IACCc,EAAA4F,GAAA,oBAAA5F,EAAA4F,GAAA,kBAAA5F,EAAAsF,QAAAP,EAAAL,GArKJjF,EAAAA,KAAAA,WAAAA,GAwKIoG,EAAAA,IAAIJ,EAAAA,MAEJK,QAAA,WAMG7G,IAAAA,IAAAsC,KAAAwD,EACA/E,EAAAA,GAGA2F,EAAAhB,SAKLvF,EAvBD2G,GAmDEC,EAnDF,GA+DCvF,EAAA,WAKAtB,SAAAA,IACAJ,gBAJDkH,KAAAA,GApNHtD,KAAAuD,MAAAC,EAAAA,UAAAC,KAuPEzD,KAAA0D,OAAApE,EAAAqE,UAAAC,MAED5D,KAAA6D,UAAA,4EAhVF7D,KAAA8D,aAAA,GAAA9D,KAAA+D,oBAAA,EAAA/D,KAAAgE,UAAA,0CAsVG5H,EAAAkH,gBAAiBC,EA1BlBvD,KAAAiE,SAAAC,EAAAA,mBAAclE,KAAAwD,aAAA/G,EAAA,IAAA4D,OAAAL,KAAAuD,MAAA9B,QAAA,YAAA,yCA0Sd7D,OArSCtB,aAAAA,EAAA,CAAA,CA+BE6H,IAAA,OA7BFC,MAsBA,WArBA,IAAA9H,EAAA0D,KA2CA,MA/WH,KAAAA,KAAAuD,OAAAvD,KAAAqE,cAAA,IAAAjI,EAAAkH,gBAAAtD,KAAAkE,WAyUGzH,EAAAoF,GAAAoC,GAAAA,QAAKI,kBAAL,SAAArG,GACA5B,EAAAA,wCACAE,EAAAkH,aAAKS,SAAL,cAAkB,IAAA7H,EAAAkH,iBAClBhH,EAAAiH,MAAAC,EAAAA,aAAqBjG,KAAAD,MAAAA,QAAUiG,WAAAA,aAC/B,KAAAe,EAAAA,uBAkCAtE,OA/WH,CAAAmE,IAAA,gBAkXGC,MAAA,WAzW0CpE,KAAAiE,SAAAA,QAAAjE,KAAAiE,SAAA3G,SAAA,YA4U1C0C,KAAAwD,aAAAA,kIAECxD,KAAAwD,aAAAjG,KAAA,aAAA+B,EAAAiF,YAAAhH,KAAA,QAAA+B,EAAAiF,6EAvVJvE,KAAAiE,SAAApH,YAAA,YA6VIP,KAAAA,aAAAA,gEACAF,KAAAA,aAAAkH,KAAAA,QAAAzG,YAAA,gBACCP,KAAAA,aAAAA,KAAAA,aAAAA,KAAAA,oBAAAA,KAAAA,QAAAA,KAAAA,uBAIF,gBA1V0C8H,MAAA,WAAA,IAAAI,EAAAX,KAAAvH,EAAAmI,KAAAC,EAAAA,gBAAAA,uBA8VzCpI,KAAAA,oBACAA,KAAAA,qBACDA,KAAAA,KAAAA,qHAECA,EAAAA,UAAAqI,GAEArI,EAAAA,KAAAA,CACAoI,SAAAA,eArWyCpI,EAAAA,KAAAqI,SAAAA,OAAAA,EAAAnF,MAAAoF,qBAAAtI,EAAAA,aAAAoI,EAAAG,QAyW1CC,EAAAA,aAAKN,EAAAV,aAAc7D,OAClB3D,EAAAA,eAAAyI,wDA0CCzI,EA3CG0I,iBAIJ1I,EAAAqI,sBAAA,gGAtXJrI,EAAAqI,sBAAAnF,EAAAoF,SAAAtI,EAAA2I,OAAA,MAuaGH,WAAKjB,WACLvH,EAAAyI,mBAECtB,EAAAA,mBAjayCG,UAT7C,CAAAO,IAAA,mBAobGC,MAAA,kBAhDApE,KAAA6D,UAAKqB,oCAkDLC,YAAKR,EAAAA,sBAjDLf,MAAA5D,KAAA0D,WAICpH,sBAsDAA,MAAAA,sBArDAA,EAAAA,oBAAAA,OAAAA,KAAAA,eAAAA,EAAAA,QAAAA,OAAAA,KAAAA,cAAYoI,KAAAA,sBAAAA,gBACZrI,EAAA+I,KAAA,kBAAA,qBACC9I,KAAAA,KAAAA,MA0DAA,SAAAA,KAAK+I,aAALrF,KAAAsF,gBAzDAhJ,KAAAA,KAAAA,iBACAA,KAAAA,SAAAA,GACAA,EAAAA,iBACAA,EAAAA,KAAAA,SAAAA,OAAAA,EAAAA,eAAAA,eA2DDA,EAAAA,KAAK2I,GAEJ3I,EAAAA,eAAKyI,EAALQ,kCA1DAjJ,EAFAA,WAAAA,EAAAA,qBAMDA,EAAAA,iBAAAA,EAAAA,+DAvZJA,EAAAqI,sBAAAnF,EAAAoF,SA0ZIE,EAAAA,OAAAA,4BACCxI,EAAAA,mBA+DFA,EAAAkJ,8BAOCrB,IAAA,kBACC/H,MAAAA,WACA,IAAAE,EAAA0D,KACD8E,KAAAA,KAAAA,mEA3dyCxI,EAAAA,KAAAA,iBAAA4I,qBA8Z1C5I,KAAAA,KAAAA,QACAmJ,KAAA,SA/Z0Cf,GAgazCS,EAAAA,KAAAA,GAEAvB,EAAAA,UAAKpE,IAHyClD,EAAA0H,sGAwE7C1H,WAAI,gCAEJwI,WAnEH,WAoEExI,EAvFCA,mBAAAA,GAnZwCA,EAAAkJ,+FAT7ClJ,EAAA2I,OAAA,MAAAH,WAAA,WA6fGxI,EAAAyI,mBApECI,EAAAA,mBACA1B,WA1bJU,IAAA,OAAAC,MAAA,SAAAxF,UAicoC2G,EAAtBD,WACThJ,QAAAA,IAAAA,sDAlcL,IAAAoJ,EAAA,EAAAC,UAAA1F,aAAA2F,QAAA,EAAAtJ,EAAA0D,YA4cI8E,KAAAA,oBAAYe,GA+Eb7F,KAAA6F,OAAAC,YAAA,WA5EExJ,EAAAyJ,sCAqFF5B,IAAA,oCA3hB0C,OAAA6B,cAAAA,KAAAH,QAAA7F,OAid1C,CAmFAmE,IAAA,oBAjFCgB,MAAAA,SAAAA,GA6FA,4GAzjBJnF,KAAA6F,OAAA,KAAA7F,KAAA6D,UAAA,EAieIoC,6BACC7J,0FAleLsD,EAAAwG,EAAAC,OAukBGD,EAAAE,cAjFD,CAAAjC,IAAA,0CA8FEkC,OADDC,EAAAA,yBAASzH,KAAAa,GACR2G,OAplBJ,2CA8fGjK,IAAAmK,EAAKjH,EAAAA,6BACJjB,EAAAA,EAAAA,2BACA2E,EAAAA,GAAAA,OAFI1D,KAAAA,MAAAA,KAAAA,WAAAA,KAALgH,EAAAlD,IAAA,CAIAhH,MAAAoK,EAEDC,WAAAzG,KAAAiF,QAAA,YA+FCxI,EAAEoC,KAAAgF,OAGC/F,EA7TD,GAhSwC1B,EAAAuH,GAAAA,CAigBDA,OAAAA,eAmG1CA,UAAI7F,wBA9FA4H,OAAFpE,EAAAA,UAAA/D,KAAEmI,QAAAA,MAAAA,+EA0GFtG,UAAEsH,oBAAFC,UAhnByC,IAAA7I,GAAAkE,OAghB1CgE,KACAY,EAAAjD,UAAOF,MAAAnE,EAAAqE,UAAP9E,WAwGCmE,EACDhB,OAZDV,EAaKuF,SA/XFpK,EAjBI,oBAAAqK,MAAA,WA5KNhK,IA+LCkG,EAAAA,EAAAA,MACAnF,EAAAvB,EAAAiB,KAAA,qDAjLHd,EAAA,6BAAAoC,KAAAkI,GAAAC,SAAA9I,QAAAC,OAAA8I,SAAApJ,WAAAA,IAAAA,EAqLCqJ,EAAAA,MArLDzK,EAsLC0G,KAAAA,UAAU7G,EAAAsC,KAAVuE,YACC1G,EAAA,cAvLF0K,WAwLE1K,UAAE,SAAA2K,GAEAC,EAAAA,cAAAjE,IAAA,CACA5G,IAAAA,EAAAA,MAAWC,GAAXsB,KADAqB,EACoB2H,MADpB,OAxQwC3K,EAAAA,iBAAAkL,WA0hB1C7K,EAAAoF,GAwGAzD,GAAA,QAAA,sBAAA,SAAAgB,GApBDA,EAnFChB,iBAyGC3B,EAAAA,EAAAuD,MAAApB,KAAA,iBAAA2I,YAAA,UAvGDnJ,GAiFD,QAhFC,aAAA,WAgFD,IAAAoJ,EA/EC/K,EA+ED,kBA2BEmK,EAAQnK,EAAGA,yBAAXoC,OAAAwC,OAAAI,QAAA,WAAA+F,EAAAxI,KAAA,MAAAiB,QAAAuH,EAAAC,OAzGDb,GAyGCtF,EAxGAoG,YAAK3B,EAAAA,kBA4GL3H,GAAA,QAAQ,sBAAgB,SAAAJ,GA1GzB0J,EAAAA,iBA0GCC,QAvGFrI,EAAAsI,KAAAC,eA2GGH,EAAGJ,SAAMQ,KAAArL,EAAAuD,MAATzC,KAA6B4I,UAG7BuB,GAAAA,QAAI1I,wBAAyBoH,WAE7B,OAAAuB,QAAArI,EAAAqC,KAAAoG,qBAxCH3J,GA9mB2CA,SA8mB3C,SAAA,WAjECgB,IAAA9C,EAAAoK,EAAAA,MA8GCjK,EAAEH,EAAM0L,MA7GT1G,EAAAA,EAAA2G,QAAAA,MAGC/B,YAAAA,GACAzJ,EAAAuC,KAAA,oBAAAoH,wCACD,cAAAwB,GACAnL,EAAAA,KAAA,oBAED0J,OAgHGuB,EAAA1I,KAAA,kBAAAoH,QAEF,WAAAwB,IA1DDF,EA2DK1I,KAAA,oBAAyBoH,OAC5BsB,EAAA1I,KAAA,kBAAAoH,UA1qByChI,GAAA,QAAA,UAAA,SAAAgB,GA6jB1C3C,EAAAA,iBAIDA,EAAAuD,MAAAgI,QAAA,MAAAb,SAiHE7F,EACG2G,yBACH7J,GAAA,SAAU,gBAAV,8BAprByC3B,EAAAuD,MAAAkI,SAAAxI,EAAAA,qBAAAyG,OAAA7D,KAAA,gFAAAjC,OAAAf,EAAAqC,KAAAuC,SAAA,WAukB1CiE,GAAAA,SAECtE,cAAAA,SAAAA,EAAAA,GACDyC,EAAAA,MAAAA,WAECG,EAAAA,MAAAA,SAFQ3B,EAAAA,qBAATqB,OAAA7D,KAAA,gFAAAjC,OAAAzB,GAAAA,EAAAwJ,KAAA9I,EAAAqC,KAAAyG,KAAA9I,EAAAqC,KAAAuC,SAAA,WAKA9F,GAAA,SAAA,aALS,WA1kBiC,IAAA+J,EA0kB1C7B,EA1kB0CtG,MAAA2C,MAqsBtCjD,EAAAjD,EAAA,gBApHN,SAAA0L,GAwHKzI,EAAAA,OAAO0G,IAAP,QAAA,cAAAvH,KAAAS,EAAAqC,KAAA0G,eAvHLjM,EAAAA,KAAA,kBAAAA,CACCkF,YAZChC,EAAAgJ,MAaDtF,OAAAA,IACAW,KAAAA,SAAAA,GAHD,WAAAe,GAOCtF,EAAAsH,IAAAA,QAAA,WAAA7H,KAAAS,EAAAqC,KAAA4G,gBACC9L,WAAAA,WAHwB2L,EAKzBhC,QAFC3J,OA+HCiD,EAAOyG,OAAM6B,IAAAA,QAAQ,OAAAnJ,KAAiBnC,EAAAA,KAAS8L,gBAvHjD7E,KAAAA,SAAAlH,GAAAkH,EA0HGxB,OA1HHwB,EAEAd,UAAWvD,oEAMX6D,EAAAA,iBA0HEhB,EAAAA,eAASO,QAtIX,SAsIyB,aAtHzBjG,GAAAA,SACE2B,YAAG,SAAAJ,MACHoB,EAAAA,uEAIAhB,IAAAA,EANF3B,EAAAwF,MAAAA,MAOEE,EAAIqF,EAAAA,aAAJnL,EACCuK,EAAAA,iBACDY,EAAMC,EADM,uBARdgB,EAAAA,KAAAA,oFAacC,EAAAA,KAAAA,aAAAA,SALA9G,EA6HH5C,KAAA,YAAa1B,SAAA,aArHtB4F,EAAAA,UAAAA,GAECf,EAAAwG,SAAArH,KAAAxC,YAXDxB,SAAA,aAPFsE,EAAA5C,KAAA,gCAAAsD,KAAA,IAuBEY,EAAAgE,eAAe7H,GAvBjB2D,EAAAA,mBAyBCD,EAAAF,EAAAqE,EAAAwB,IAECrM,EAAAA,KAAIC,6BAAJ,CAAA6I,KAAAA,MAAAuD,KAAAA,CAAAJ,MAuHI7C,EAAK6C,MAnHTpB,SAAAA,KAECQ,KAAAA,SAAI1I,GACJkE,EAAAwF,GAAAtG,EAlCHY,EAoCG0E,mBAAAA,EAAAA,EAAAA,KApCHiB,KAkCSrH,EAGIsG,WArCbgB,EAuC8BxC,eAAAA,GAI5BhI,EAAG2E,uBAAoBF,EAAAqE,EAAAwB,IAEvBjM,EACA6E,KAAAA,oBAAAA,qBACAoH,SAAAA,IAGAjM,KAAEoM,SAAAA,UAmHF7F,EAAMD,uBAAAF,EAAFT,KAjHJyG,KAAAA,EAAAA,cApDFzK,GAAA,SAAA,yBAAA,WAAA,IA4DEA,EAAA3B,EAAAuD,MACAvD,EAAAA,KAAAA,qBAAAA,CAgHA0I,YAAW1I,EAAE6L,MAAbM,SA9GAtM,EAAMA,MA8GNoD,OA7GCjD,EAAEH,GAAAwM,QAAA,EA6GH,MAvGApB,EAAAA,GAAA1I,GACCU,SADD,sDAAA,WA8GCgI,IAAAA,EAAwBvB,EAAAA,4BA1GxB,MAAAuB,EAAAA,kCAAA/E,OAAA,MAAAlG,EAAA,uCAAAkG,MACAjD,EAAMyG,OAELhB,EAAAA,SAGA/G,GAAA,SAAIsG,aAAa,WAAjB,IAAApI,EAECoD,EAAAA,MAFDkI,EAGC9C,EAAAA,MAHD4C,EAIEhI,EAAAA,QAAAA,MAGDiC,YAAAiG,GACAlI,EAAAA,KAAAA,YAAOyG,OACP4C,EAAAA,KAAAA,YAAA/J,IAAA,IACD+J,EAAAA,KAAAA,eAAA5C,SAEA7E,EAAAA,KAAAA,YAAOxC,oCAER4I,EAAA1I,KAAA,eArBDV,IAqBC,OAEAF,GAAA,SAAA,8BAAA,uCAGDgB,EAAEsH,EAAAA,KAAAA,0CAED0B,EAAIlI,EAAAA,KAAE8I,YADPC,EAAAA,EAAAA,aACOtG,MAIP3E,GAAAA,EAAAA,KAAKkL,gBAALC,eAAAC,EAAAzG,QAAA,YAAAiF,EAAAjF,OAAArB,EAAA/C,SAAAkK,EAAAnJ,EAAAqC,KAAAuH,gBAAAE,EAAAzG,SAEA,GAAqB,IAArBoG,EAAOzK,KAAAA,oBAAc2B,OAAA,CA0GhB5D,EAAAA,KAAM,oBAAM8K,SAxGbuB,EAAAA,OAAAA,sGAEH7F,EAAAA,OAAAA,gLADAV,OAAAA,EAAAA,WAAAA,gBAIDsG,GAJCtG,EAAAA,OAAAA,8DAODP,IAAAA,EAAAA,EAAAA,KAAAA,yBA2GMN,EAAApB,UAAEyI,EAAW,CAxGnBxG,SAbA,EAcAP,YAAAA,EAAAA,KAAAA,gBACA4E,KAAA,SAAA2C,EAAAE,GA0GI/K,EAeJ+K,EAAIzB,GA9IGvL,EAAN+L,KAAAA,wBAAAA,CAwBApF,KAAAA,MAtCEpE,KAqCH,CAGCvC,YAAAsG,EAAAtG,MACCuL,OAAAA,wBACAhJ,SAAAA,KAEC6J,KAAAA,SAAAA,GAJwCY,EAEnCN,EAAA3G,GAKNc,EAAAA,KAAAA,YAAAA,WACAF,KAAAA,EAAAA,mBAUA0F,qBAAAA,EAAAA,OAAAA,IAAAA,EAAAA,KAAAA,oBAAAA,SAFgCK,EAAjCnB,KAGQ,QAAAT,SACPD,EAAAA,OAAAA,sGAEO5F,YAHLmE,EAGAkD,OACHW,EAAAA,KAAAlD,oBAAAA,UAKD/J,GAAAA,SAAO+I,sBAAP/I,WACC8I,IAAAA,EAAAA,EAAAA,aAAAA,MACAyD,EACAlJ,EAAAA,aA/GDiD,MApKD2G,EAAA7M,EAAA,gBAqRCqF,EAvxBJrF,EAwxBEoF","file":"woo-feed-admin.min.js","sourcesContent":["// noinspection JSUnresolvedletiable\n/**!\n * WooFeed Scripts\n * @version 3.3.6\n * @package WooFeed\n * @copyright 2020 WebAppick\n *\n */\n/* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */\n// noinspection JSUnresolvedVariable\n(function($, window, document, wpAjax, opts) {\n\t\"use strict\";\n\t/**\n\t * All of the code for your admin-facing JavaScript source\n\t * should reside in this file.\n\t *\n\t * Note: It has been assumed you will write jQuery code here, so the\n\t * $ function reference has been prepared for usage within the scope\n\t * of this function.\n\t *\n\t * This enables you to define handlers, for when the DOM is ready:\n\t */\n\n\t/**\n\t * disable element utility\n\t *\n\t * @since 3.1.9\n\t *\n\t * @param {*} status\n\t * @returns {jQuery|HTMLElement}\n\t */\n\t$.fn.disabled = function(status) {\n\t\t$(this).each(function() {\n\t\t\tlet self = $(this),\n\t\t\t\tprop = 'disabled';\n\n\t\t\tif (typeof self.prop(prop) !== 'undefined') {\n\t\t\t\tself.prop(prop, status === void 0 || status === true);\n\t\t\t} else {\n\t\t\t\t!0 === status ? self.addClass(prop) : self.removeClass(prop);\n\t\t\t}\n\t\t});\n\t\treturn self; // method chaining\n\t};\n\t\n\t/**\n\t * Check if a HTMLElement or jQuery is disabled\n\t */\n\t$.fn.isDisabled = function() {\n\t\tlet self = $(this),\n\t\t\tprop = 'disabled';\n\t\treturn typeof self.prop(prop) !== 'undefined' ? self.prop(prop) : self.hasClass(prop);\n\t};\n\t\n\t/**\n\t * Clear Tooltip for clip board js\n\t * @param {Object} event\n\t */\n\tconst clearTooltip = (event) => {\n\t\t$(event.currentTarget).removeClass( (index, className) => (className.match(/\\btooltipped-\\S+/g) || []).join(' ') ).removeClass('tooltipped').removeAttr('aria-label');\n\t};\n\n\tconst showTooltip = (elem, msg) => {\n\t\t$(elem).addClass('tooltipped tooltipped-s').attr('aria-label', msg);\n\t};\n\n\tconst fallbackMessage = (action) =>{\n\t\tlet actionMsg,\n\t\t\tactionKey = action === 'cut' ? 'X' : 'C';\n\n\t\tif (/iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\tactionMsg = 'No support :(';\n\t\t} else if (/Mac/i.test(navigator.userAgent)) {\n\t\t\tactionMsg = 'Press ⌘-' + actionKey + ' to ' + action;\n\t\t} else {\n\t\t\tactionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;\n\t\t}\n\n\t\treturn actionMsg;\n\t};\n\t\n\t/**\n\t * Alias of jQuery.extend()\n\t * @param {Object} _default\n\t * @param {Object} _args\n\t */\n\tconst extend = (_default, _args) => $.extend(true, {}, _default, _args);\n\t\n\tlet $copyBtn,\n\t\tclipboard,\n\t\tgoogleCategories,\n\t\thelper = {\n\t\t\tin_array: (needle, haystack) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn haystack.indexOf(needle) !== -1;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tselectize_render_item: (data, escape) => `<div class=\"item wapk-selectize-item\">${ escape(data.text)}</div>`, // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found,\n\t\t\tajax_fail: e => {\n\t\t\t\tconsole.warn(e);\n\t\t\t\talert(e.hasOwnProperty('statusText') && e.hasOwnProperty('status') ? opts.ajax.error + '\\n' + e.statusText + ' (' + e.status + ')' : e);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Initialize Sortable\n\t\t\t * @param {jQuery|HTMLElement} el\n\t\t\t * @param {object} config\n\t\t\t * @param {int|boolean} column\n\t\t\t * @param {function} onDrop\n\t\t\t * @return {jQuery|HTMLElement}\n\t\t\t */\n\t\t\tsortable: (el, config, column, onDrop) => {\n\t\t\t\treturn (el || $('.sorted_table')).each(function() {\n\t\t\t\t\tlet self = $(this),\n\t\t\t\t\t\tcolumn_count = self.find('tbody > tr:eq(0) > td').length || column || 9;\n\t\t\t\t\tself.wf_sortable(extend({\n\t\t\t\t\t\tcontainerSelector: 'table',\n\t\t\t\t\t\titemPath: '> tbody',\n\t\t\t\t\t\titemSelector: 'tr',\n\t\t\t\t\t\thandle: 'i.wf_sortedtable',\n\t\t\t\t\t\tplaceholder: `<tr class=\"placeholder\"><td colspan=\"${column_count}\"></td></tr>`,\n\t\t\t\t\t\tonDrop: ($item, container, _super, event) => {\n\t\t\t\t\t\t\t$item.removeClass(container.group.options.draggedClass).removeAttr('style');\n\t\t\t\t\t\t\t$(\"body\").removeClass(container.group.options.bodyClass);\n\t\t\t\t\t\t\tif ( onDrop && 'function' === typeof( onDrop ) ) {\n\t\t\t\t\t\t\t\tonDrop( $item, container, _super, event );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\tselectize: (el, config) => {\n\t\t\t\treturn (el || $('select.selectize')).not('.selectized').each(function() {\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.selectize(extend({\n\t\t\t\t\t\tcreate: self.data('create') || false,\n\t\t\t\t\t\tplugins: self.data('plugins') ? self.data('plugins').split(',').map(function(s) {\n\t\t\t\t\t\t\treturn s.trim();\n\t\t\t\t\t\t}) : [],\n\t\t\t\t\t\t//['remove_button'],\n\t\t\t\t\t\trender: {\n\t\t\t\t\t\t\titem: helper.selectize_render_item\n\t\t\t\t\t\t}\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\tfancySelect: (el, config) => {\n\t\t\t\treturn (el || $('select.fancySelect')).not('.FancySelectInit').each(function() {\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.fancySelect(extend({\n\t\t\t\t\t\tmaxItemShow: 3\n\t\t\t\t\t}, config));\n\t\t\t\t});\n\t\t\t},\n\t\t\treindex_config_table: () => {\n\t\t\t\t$('#table-1').find('tbody tr').each( ( x, el ) => {\n\t\t\t\t\t$(el).find('[name]').each( ( x1, el ) => {\n\t\t\t\t\t\t$(el).attr('name', $(el).attr('name').replace(/(\\[\\d\\])/g, `[${x}]`));\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\tcommon: () => {\n\t\t\t\thelper.sortable( $('.sorted_table'), {}, 9, helper.reindex_config_table );\n\t\t\t\thelper.selectize();\n\t\t\t\thelper.fancySelect($('.outputType'));\n\t\t\t}\n\t\t},\n\t\t// helper functions\n\t\tfeedEditor = {\n\t\t\t/**\n\t\t\t * The Editor Form Elem.\n\t\t\t * @type {jQuery|HTMLElement}\n\t\t\t */\n\t\t\tform: null,\n\n\t\t\t/**\n\t\t\t * Initialize The Feed Editor {Tabs...}\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tinit: function () {\n\t\t\t\tlet self = this;\n\t\t\t\tself.form = $('.generateFeed');\n\t\t\t\tif (!self.form.length) return;\n\t\t\t\thelper.common();\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t$(document).trigger(new jQuery.Event('feedEditor.init', {\n\t\t\t\t\ttarget: this.form\n\t\t\t\t}));\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Render Merchant info ajax response and handle allowed feed type for selected merchant\n\t\t\t * @param {jQuery|HTMLElement} merchantInfo jQuery dom object\n\t\t\t * @param {jQuery|HTMLElement} feedType jQuery dom object\n\t\t\t * @param {Object} r ajax response object\n\t\t\t */\n\t\t\trenderMerchantInfo: function (merchantInfo, feedType, r) {\n\t\t\t\tfor (let k in r) {\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\n\t\t\t\t\t\tmerchantInfo.find('.merchant-info-section.' + k + ' .data').html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\n\t\t\t\t\t\tif ('feed_file_type' === k) {\n\t\t\t\t\t\t\t(function() {\n\t\t\t\t\t\t\t\tlet types = r[k].split(\",\").map(function(t) {\n\t\t\t\t\t\t\t\t\treturn t.trim().toLowerCase();\n\t\t\t\t\t\t\t\t}).filter(function(t) {\n\t\t\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\t\t\treturn t !== '' && t !== opts.na.toLowerCase();\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (types.length) {\n\t\t\t\t\t\t\t\t\tfeedType.find('option').removeAttr('selected').each(function() {\n\t\t\t\t\t\t\t\t\t\tlet opt = $(this);\n\t\t\t\t\t\t\t\t\t\topt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (types.length === 1) feedType.find('option[value=\"' + types[0] + '\"]').attr('selected', 'selected');\n\t\t\t\t\t\t\t\t} else feedType.find('option').disabled(!1);\n\t\t\t\t\t\t\t})();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmerchantInfo.find('.spinner').removeClass('is-active');\n\t\t\t\tfeedType.disabled(!1);\n\t\t\t\tfeedType.trigger('change');\n\t\t\t\tfeedType.parent().find('.spinner').removeClass('is-active');\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Render Feed Template Tabs and settings while creating new feed.\n\t\t\t * @param {jQuery|HTMLElement} feedForm feed from query dom object\n\t\t\t * @param {object} r merchant template ajax response object\n\t\t\t */\n\t\t\trenderMerchantTemplate: function (feedForm, r) {\n\t\t\t\tlet _loop = function _loop(k) {\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\n\t\t\t\t\t\tif ('tabs' === k) {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedFunction\n\t\t\t\t\t\t\tfeedForm.html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet contentSettings = $('[name=\"' + k + '\"]');\n\n\t\t\t\t\t\t\tif (contentSettings.length) {\n\t\t\t\t\t\t\t\tcontentSettings.each(function() {\n\t\t\t\t\t\t\t\t\tlet elem = $(this);\n\n\t\t\t\t\t\t\t\t\tif (elem.is('select')) {\n\t\t\t\t\t\t\t\t\t\telem.find('[value=\"' + r[k] + '\"]').prop('selected', true);\n\t\t\t\t\t\t\t\t\t} else if ((elem.is('[type=checkbox]') || elem.is('[type=radio]')) && elem.val() === r[k]) {\n\t\t\t\t\t\t\t\t\t\telem.prop('checked', true);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telem.val(r[k]); // type=text\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).trigger('change');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tfor (let k in r) {\n\t\t\t\t\t_loop(k);\n\t\t\t\t}\n\n\t\t\t\tfeedEditor.init();\n\t\t\t}\n\t\t},\n\t\t// Feed Editor Table\n\t\tmerchantInfoCache = [],\n\t\tmerchantTemplateCache = [],\n\t\ttooltip = () => {\n\t\t\t// Tooltip only Text\n\t\t\t$('.wfmasterTooltip')\n\t\t\t\t.hover(function () {\n\t\t\t\t\t// Hover over code\n\t\t\t\t\tlet self = $(this), title = self.attr('wftitle');\n\t\t\t\t\tself.data('tipText', title).removeAttr('wftitle');\n\t\t\t\t\t$('<p class=\"wftooltip\"></p>').text(title).appendTo('body').fadeIn('slow');\n\t\t\t\t}, function () {\n\t\t\t\t\t// Hover out code\n\t\t\t\t\tlet self = $(this);\n\t\t\t\t\tself.attr('wftitle', self.data('tipText'));\n\t\t\t\t\t$('.wftooltip').remove();\n\t\t\t\t})\n\t\t\t\t.mousemove(function (e) {\n\t\t\t\t\t$('.wftooltip').css({\n\t\t\t\t\t\ttop: e.pageY + 10,\n\t\t\t\t\t\tleft: e.pageX + 20\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t\tclip = () => {\n\t\t\t$copyBtn = $('.toClipboard');\n\t\t\tif (!ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\t\t$copyBtn.find('img').hide(0);\n\t\t\t} else {\n\t\t\t\t$copyBtn.each(function() {\n\t\t\t\t\t$(this).on('mouseleave', clearTooltip).on('blur', clearTooltip);\n\t\t\t\t});\n\t\t\t\tclipboard = new ClipboardJS('.toClipboard');\n\t\t\t\tclipboard.on('error', function(event) {\n\t\t\t\t\tshowTooltip(event.trigger, fallbackMessage(event.action));\n\t\t\t\t}).on('success', function(event) {\n\t\t\t\t\tshowTooltip(event.trigger, 'Copied!');\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\n\t/**\n\t * Feed Generator Module\n\t */\n\tclass feedGenerator {\n\t\t\n\t\t/**\n\t\t * Constructor\n\t\t * @constructor\n\t\t */\n\t\tconstructor() {\n\t\t\tthis._feed = opts.generator.feed; // wf_config+xxxx\n\t\t\tthis._limit = opts.generator.limit;\n\t\t\tthis._progress = 0;\n\t\t\tthis._timer = null;\n\t\t\tthis._color = false;\n\t\t\t// batch info\n\t\t\tthis._total_batch = 0;\n\t\t\tthis._current_batch = 0;\n\t\t\tthis._product_ids = [];\n\t\t\tthis._progress_per_batch = 0;\n\t\t\tthis._refresh = true;\n\t\t\t// noinspection JSUnresolvedVariable\n\t\t\tthis._regenerate = opts.generator.regenerate;\n\t\t\twindow.isRegenerating = false;\n\t\t\tthis._all_btn = $('.wpf_regenerate');\n\t\t\tthis._current_btn = $(`#${this._feed.replace( 'wf_config', 'wf_feed_' )}`);\n\t\t\tthis._current_btn_label = '';\n\t\t}\n\t\t\n\t\t/**\n\t\t * Init Hooks (Event)\n\t\t * @return {feedGenerator}\n\t\t */\n\t\tinit() {\n\t\t\tlet self = this;\n\t\t\tif ( '' !== this._feed && this._regenerate && false === window.isRegenerating ) {\n\t\t\t\tthis.generate();\n\t\t\t}\n\t\t\t$(document).on('click', '.wpf_regenerate', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tself._current_btn = $( this );\n\t\t\t\tif( self._current_btn.hasClass('disabled') || window.isRegenerating === true ) return;\n\t\t\t\tself._feed = self._current_btn.attr('id').replace( 'wf_feed_', 'wf_config' );\n\t\t\t\tif( '' !== self._feed ) {\n\t\t\t\t\tself.generate();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t_block_button() {\n\t\t\tif ( this._all_btn.length ) {\n\t\t\t\tthis._all_btn.addClass('disabled');\n\t\t\t}\n\t\t\tif ( this._current_btn.length ) {\n\t\t\t\tthis._current_btn.find('span').addClass('wpf_spin reverse_spin');\n\t\t\t\tthis._current_btn_label = this._current_btn.attr('title');\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tthis._current_btn.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );\n\t\t\t}\n\t\t}\n\t\t\n\t\t_unblock_button() {\n\t\t\tif ( this._all_btn.length ) {\n\t\t\t\tthis._all_btn.removeClass('disabled');\n\t\t\t}\n\t\t\tif ( this._current_btn.length ) {\n\t\t\t\tthis._current_btn.find('span').removeClass('wpf_spin');\n\t\t\t\tthis._current_btn.find('span').removeClass('reverse_spin');\n\t\t\t\tthis._current_btn.attr( 'aria-label', this._current_btn_label ).attr( 'title', this._current_btn_label );\n\t\t\t}\n\t\t}\n\t\t\n\t\t/**\n\t\t * Generate Feed\n\t\t * @return void\n\t\t */\n\t\tgenerate() {\n\t\t\tlet self = this;\n\t\t\twindow.isRegenerating = true;\n\t\t\tthis._block_button();\n\t\t\tthis._resetProgressBar();\n\t\t\tthis._progressBarActive();\n\t\t\tthis._log( 'Counting Total Products' );\n\t\t\tthis._updateProgressStatus( 'Fetching products.' );\n\t\t\tthis._get_product_ids().then( response => {\n\t\t\t\tthis._progress = 10;\n\t\t\t\tself._log( {response} );\n\t\t\t\tif(response.success) {\n\t\t\t\t\tself._log( `Total ${response.total} Products found.` );\n\t\t\t\t\tself._product_ids = response.product;\n\t\t\t\t\tself._total_batch = this._product_ids.length;\n\t\t\t\t\tself._current_batch = 0;\n\t\t\t\t\tself._progress_per_batch = ( 90 - this._progress ) / this._total_batch;\n\t\t\t\t\tself._process_batch();\n\t\t\t\t\tself._updateProgressStatus( 'Processing Products...' );\n\t\t\t\t} else {\n\t\t\t\t\tself._updateProgressStatus( response.data.message );\n\t\t\t\t}\n\t\t\t}).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Get Product Ids\n\t\t * @returns {$.promise}\n\t\t * @private\n\t\t */\n\t\t_get_product_ids() {\n\t\t\tthis._progress = 5;\n\t\t\treturn wpAjax.post( 'get_product_information', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t\tlimit: this._limit,\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Run the Batch\n\t\t * @private\n\t\t */\n\t\t_process_batch() {\n\t\t\tlet self = this;\n\t\t\tlet status = `Processing Batch ${this._current_batch+1} of ${this._total_batch}`;\n\t\t\tthis._updateProgressStatus( status );\n\t\t\tthis._log( status );\n\t\t\twpAjax.post( 'make_batch_feed', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t\tproducts: this._product_ids[this._current_batch],\n\t\t\t\tloop: this._current_batch,\n\t\t\t} ).then( response => {\n\t\t\t\tself._current_batch++;\n\t\t\t\tself._log( `Batch ${self._current_batch} Completed` );\n\t\t\t\tself._log( response );\n\t\t\t\tif ( self._current_batch < self._total_batch ) {\n\t\t\t\t\tself._process_batch();\n\t\t\t\t\tself._progress += self._progress_per_batch;\n\t\t\t\t}\n\t\t\t\tif ( self._current_batch === self._total_batch ) {\n\t\t\t\t\tself._save_feed_file();\n\t\t\t\t}\n\t\t\t} ).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Save Feed Data from temp to feed file\n\t\t * @private\n\t\t */\n\t\t_save_feed_file() {\n\t\t\tlet self = this;\n\t\t\tthis._log( 'Saving feed file' );\n\t\t\tthis._updateProgressStatus( 'Saving feed file' );\n\t\t\twpAjax.post( 'save_feed_file', {\n\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\tfeed: this._feed,\n\t\t\t} ).then( response => {\n\t\t\t\tself._log( response );\n\t\t\t\tself._progress = 100;\n\t\t\t\tif ( self._refresh ) {\n\t\t\t\t\twindow.location.href = `${opts.pages.list.feed}&link=${response.url}&cat=${response.cat}`;\n\t\t\t\t}\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tsetTimeout( function(){\n\t\t\t\t\t\tself._resetProgressBar( true );\n\t\t\t\t\t\tself._unblock_button();\n\t\t\t\t\t}, 3000 );\n\t\t\t\t}, 2500 );\n\t\t\t} ).fail( error => {\n\t\t\t\tself._log( error );\n\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\tself._color = 'red';\n\t\t\t\tsetTimeout( function(){\n\t\t\t\t\tself._stopProgressBar();\n\t\t\t\t\tself._unblock_button();\n\t\t\t\t}, 1500 );\n\t\t\t} );\n\t\t}\n\t\t\n\t\t/**\n\t\t * Console log wrapper with debug settings.\n\t\t * @param data\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_log( data ) {\n\t\t\t// noinspection JSUnresolvedVariable\n\t\t\tif ( opts.wpf_debug ) {\n\t\t\t\tconsole.log( data );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Run the progressbar refresh interval\n\t\t * @param {int} refreshInterval\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_progressBarActive( refreshInterval = 0 ) {\n\t\t\tlet self = this;\n\t\t\tthis._toggleProgressBar( true );\n\t\t\tthis._timer = setInterval( function(){\n\t\t\t\tself._updateProgressBar();\n\t\t\t}, refreshInterval || 1000 );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Stop Progressbar\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_stopProgressBar() {\n\t\t\tclearInterval( this._timer );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Reset Progressbar\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_resetProgressBar( update ) {\n\t\t\tthis._toggleProgressBar( false );\n\t\t\tthis._updateProgressStatus( '' );\n\t\t\tclearInterval( this._timer );\n\t\t\tthis._color = false;\n\t\t\tthis._timer = null;\n\t\t\tthis._progress = 0;\n\t\t\tif ( update ) {\n\t\t\t\tthis._updateProgressBar();\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Show hide the progress bar el\n\t\t * @param status\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_toggleProgressBar( status ) {\n\t\t\tlet table = $('#feed_progress_table');\n\t\t\tif ( status ) {\n\t\t\t\ttable.show();\n\t\t\t} else {\n\t\t\t\ttable.hide();\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update Progress bar text status\n\t\t * @param {string} status\n\t\t * @returns {feedGenerator}\n\t\t * @private\n\t\t */\n\t\t_updateProgressStatus( status ) {\n\t\t\t$( '.feed-progress-status' ).text( status );\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t/**\n\t\t * Update Progress Data\n\t\t * hooked with setInterval\n\t\t * @private\n\t\t */\n\t\t_updateProgressBar() {\n\t\t\tlet percentage = $( '.feed-progress-percentage' ),\n\t\t\t\tbar = $( '.feed-progress-bar-fill' ),\n\t\t\t\t_progress = `${Math.round( this._progress )}%`;\n\t\t\tbar.css( {\n\t\t\t\twidth: _progress,\n\t\t\t\tbackground: this._color || \"#3DC264\",\n\t\t\t} );\n\t\t\tpercentage.text( _progress );\n\t\t}\n\t}\n\t// expose to the global scope\n\twindow.wf = {\n\t\thelper: helper,\n\t\tfeedEditor: feedEditor,\n\t\tgenerator: feedGenerator,\n\t};\n\t$(window).load(function() {\n\t\t// Template loading ui conflict\n\t\tif ($(location).attr(\"href\").match(/webappick.*feed/g) !== null) {\n\t\t\t$('#wpbody-content').addClass('woofeed-body-content');\n\t\t}\n\t\t// ClipBoardJS\n\t\tclip();\n\t\t// postbox toggle\n\t\tpostboxes.add_postbox_toggles(pagenow);\n\t\t// initialize generator\n\t\tlet generator = new feedGenerator();\n\t\tgenerator.init();\n\t\t// noinspection JSUnresolvedVariable\n\t\tif( '' !== opts.generator.feed && opts.generator.regenerate ) {\n\t\t\n\t\t}\n\t\t// initialize editor\n\t\tfeedEditor.init();\n\t\thelper.common(); // Generate Feed Add Table Row\n\t\ttooltip();\n\t\t// validate feed editor\n\t\t$(\".generateFeed\").validate();\n\t\t// document events\n\t\t$(document)\n\t\t\t.on('click', '[data-toggle_slide]', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$($(this).data('toggle_slide')).slideToggle('fast');\n\t\t\t})\n\t\t\t// XML Feed Wrapper\n\t\t\t.on('click', '#wf_newRow', function () {\n\t\t\t\tlet tbody = $('#table-1 tbody'),\n\t\t\t\t\ttemplate = $('#feed_config_template').text().trim().replace(/__idx__/g, tbody.find('tr').length);\n\t\t\t\ttbody.append(template);\n\t\t\t\thelper.fancySelect($('.outputType'));\n\t\t\t})\n\t\t\t// feed delete alert.\n\t\t\t.on('click', '.single-feed-delete', function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (confirm(opts.form.del_confirm)) {\n\t\t\t\t\twindow.location.href = $(this).attr('val');\n\t\t\t\t}\n\t\t\t})\n\t\t\t// bulk delete alert.\n\t\t\t.on('click', '#doaction, #doaction2', function () {\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\treturn confirm(opts.form.del_confirm_multi);\n\t\t\t})\n\t\t\t// Generate Feed Table Row Delete\n\t\t\t.on('change', '.dType', function () {\n\t\t\t\tlet self = $(this),\n\t\t\t\t\ttype = self.val(),\n\t\t\t\t\trow = self.closest('tr');\n\t\t\t\t\n\t\t\t\tif (type === 'pattern') {\n\t\t\t\t\trow.find('.value_attribute').hide();\n\t\t\t\t\trow.find('.value_pattern').show();\n\t\t\t\t} else if (type === 'attribute') {\n\t\t\t\t\trow.find('.value_attribute').show();\n\t\t\t\t\trow.find('.value_pattern').hide();\n\t\t\t\t} else if (type === 'remove') {\n\t\t\t\t\trow.find('.value_attribute').hide();\n\t\t\t\t\trow.find('.value_pattern').hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Generate Feed Form Submit\n\t\t\t.on('click', '.delRow', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).closest('tr').remove();\n\t\t\t\thelper.reindex_config_table();\n\t\t\t})\n\t\t\t.on('submit', '#generateFeed', function () {\n\t\t\t\t// Feed Generating form validation\n\t\t\t\t$(this).validate();\n\t\t\t\t\n\t\t\t\tif ($(this).valid()) {\n\t\t\t\t\t$(\".makeFeedResponse\")\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.html(`<b style=\"color: darkblue;\"><i class=\"dashicons dashicons-sos wpf_spin\"></i> ${opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Generate Update Feed Form Submit\n\t\t\t.on('submit', '#updatefeed', function (e, data) {\n\t\t\t\t// Feed Generating form validation\n\t\t\t\t$(this).validate();\n\t\t\t\t\n\t\t\t\tif ($(this).valid()) {\n\t\t\t\t\t$(\".makeFeedResponse\")\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.html(`<b style=\"color: darkblue;\"><i class=\"dashicons dashicons-sos wpf_spin\"></i> ${data && data.save ? opts.form.save : opts.form.generate}</b>`); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.ftporsftp', function () {\n\t\t\t\tlet server = $(this).val(),\n\t\t\t\t\tstatus = $('.ssh2_status');\n\t\t\t\t\n\t\t\t\tif (server === 'sftp') {\n\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\tstatus.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);\n\t\t\t\t\twpAjax.post('get_ssh2_status', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tserver: server\n\t\t\t\t\t}).then(function (response) {\n\t\t\t\t\t\tif (response === 'exists') {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\tstatus.css('color', '#2CC185').text(opts.form.sftp_available);\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tstatus.hide();\n\t\t\t\t\t\t\t}, 1500);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\t\tstatus.show().css('color', 'red').text(opts.form.sftp_warning);\n\t\t\t\t\t\t}\n\t\t\t\t\t}).fail(function (e) {\n\t\t\t\t\t\tstatus.hide();\n\t\t\t\t\t\thelper.ajax_fail(e);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tstatus.hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('click', '[name=\"save_feed_config\"]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$('#updatefeed').trigger('submit', {\n\t\t\t\t\tsave: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('change', '#provider', function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t\n\t\t\t\tif (!$(this).closest('.generateFeed').hasClass('add-new')) return; // only for new feed.\n\t\t\t\t\n\t\t\t\tlet merchant = $(this).val(),\n\t\t\t\t\tfeedType = $(\"#feedType\"),\n\t\t\t\t\tfeedForm = $(\"#providerPage\"),\n\t\t\t\t\tmerchantInfo = $('#feed_merchant_info'); // set loading..\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tfeedForm.html('<h3><span style=\"float:none;margin: -3px 0 0;\" class=\"spinner is-active\"></span> ' + opts.form.loading_tmpl + '</h3>'); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html, WordPressVIPMinimum.JS.StringConcat.Found\n\t\t\t\t\n\t\t\t\tmerchantInfo.find('.spinner').addClass('is-active');\n\t\t\t\tfeedType.disabled(!0); // disable dropdown\n\t\t\t\t\n\t\t\t\tfeedType.parent().find('.spinner').addClass('is-active');\n\t\t\t\tmerchantInfo.find('.merchant-info-section .data').html(''); // remove previous data\n\t\t\t\t// Get Merchant info for selected Provider/Merchant\n\t\t\t\t\n\t\t\t\tif (merchantInfoCache.hasOwnProperty(merchant)) {\n\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);\n\t\t\t\t} else {\n\t\t\t\t\twpAjax.send('woo_feed_get_merchant_info', {\n\t\t\t\t\t\ttype: 'GET',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tnonce: opts.nonce,\n\t\t\t\t\t\t\tprovider: merchant\n\t\t\t\t\t\t}\n\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\tmerchantInfoCache[merchant] = r;\n\t\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, r);\n\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t} // Get FeedForm For Selected Provider/Merchant\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif (merchantTemplateCache.hasOwnProperty(merchant)) {\n\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);\n\t\t\t\t} else {\n\t\t\t\t\twpAjax.post('get_feed_merchant', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tmerchant: merchant\n\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\tmerchantTemplateCache[merchant] = r;\n\t\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, r);\n\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Feed Active and Inactive status change via ajax\n\t\t\t.on('change', '.woo_feed_status_input', function () {\n\t\t\t\tlet self = $(this);\n\t\t\t\twpAjax.post('update_feed_status', {\n\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\tfeedName: self.val(),\n\t\t\t\t\tstatus: self[0].checked ? 1 : 0\n\t\t\t\t});\n\t\t\t});\n\t\t// event with trigger\n\t\t$(document)\n\t\t\t.on('change', '[name=\"is_outOfStock\"], [name=\"product_visibility\"]', function () {\n\t\t\t\tlet outOfStockVisibilityRow = $('.out-of-stock-visibility');\n\t\t\t\tif ($('[name=\"is_outOfStock\"]:checked').val() === 'n' && $('[name=\"product_visibility\"]:checked').val() === '1') {\n\t\t\t\t\toutOfStockVisibilityRow.show();\n\t\t\t\t} else {\n\t\t\t\t\toutOfStockVisibilityRow.hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.attr_type', function () {\n\t\t\t\t// Attribute type selection\n\t\t\t\tlet self = $(this),\n\t\t\t\t\ttype = self.val(),\n\t\t\t\t\trow = self.closest('tr');\n\t\t\t\t\n\t\t\t\tif (type === 'pattern') {\n\t\t\t\t\trow.find('.wf_attr').hide();\n\t\t\t\t\trow.find('.wf_attr').val('');\n\t\t\t\t\trow.find('.wf_default').show();\n\t\t\t\t} else {\n\t\t\t\t\trow.find('.wf_attr').show();\n\t\t\t\t\trow.find('.wf_default').hide();\n\t\t\t\t\trow.find('.wf_default').val('');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '.wf_mattributes, .attr_type', function () {\n\t\t\t\tlet row = $(this).closest('tr'),\n\t\t\t\t\tattribute = row.find('.wf_mattributes'),\n\t\t\t\t\ttype = row.find('.attr_type'),\n\t\t\t\t\tvalueColumn = row.find('td:eq(4)'),\n\t\t\t\t\tprovider = $('#provider').val();\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (opts.form.google_category.hasOwnProperty(attribute.val()) && type.val() === 'pattern' && helper.in_array(provider, opts.form.google_category[attribute.val()])) {\n\t\t\t\t\tif (valueColumn.find('select.selectize').length === 0) {\n\t\t\t\t\t\tvalueColumn.find('input.wf_default').remove();\n\t\t\t\t\t\tvalueColumn.append('<span class=\"wf_default wf_attributes\"><select name=\"default[]\" class=\"selectize\"></select></span>');\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\tvalueColumn.append(`<span style=\"font-size:x-small;\"><a style=\"color: red\" href=\"http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category\" target=\"_blank\">${opts.learn_more}</a></span>`);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!googleCategories) {\n\t\t\t\t\t\t\tvalueColumn.append('<span class=\"spinner is-active\" style=\"margin: 0;\"></span>');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet select = valueColumn.find('.wf_attributes select');\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\t\t\thelper.selectize(select, {\n\t\t\t\t\t\t\tpreload: true,\n\t\t\t\t\t\t\tplaceholder: opts.form.select_category,\n\t\t\t\t\t\t\tload: function load(query, cb) {\n\t\t\t\t\t\t\t\tif (!googleCategories) {\n\t\t\t\t\t\t\t\t\twpAjax.send('get_google_categories', {\n\t\t\t\t\t\t\t\t\t\ttype: 'GET',\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\t\t\t\t\t\taction: \"get_google_categories\",\n\t\t\t\t\t\t\t\t\t\t\tprovider: provider\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}).then(function (r) {\n\t\t\t\t\t\t\t\t\t\tgoogleCategories = r;\n\t\t\t\t\t\t\t\t\t\tcb(googleCategories);\n\t\t\t\t\t\t\t\t\t\tvalueColumn.find('.spinner').remove();\n\t\t\t\t\t\t\t\t\t}).fail(helper.ajax_fail);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcb(googleCategories);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {\n\t\t\t\t\t\tvalueColumn.find('span').remove();\n\t\t\t\t\t\tvalueColumn.append('<input autocomplete=\"off\" class=\"wf_default wf_attributes\" type=\"text\" name=\"default[]\" value=\"\">');\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (type.val() !== 'pattern') {\n\t\t\t\t\t\t\tvalueColumn.find('input.wf_default').hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('change', '#feedType,#provider', function () {\n\t\t\t\tlet type = $('#feedType').val(),\n\t\t\t\t\tprovider = $('#provider').val(),\n\t\t\t\t\titemWrapper = $('.itemWrapper'),\n\t\t\t\t\twf_csv_txt = $('.wf_csvtxt');\n\t\t\t\t\n\t\t\t\t// noinspection JSUnresolvedVariable\n\t\t\t\tif (type !== '' && helper.in_array(provider, opts.form.item_wrapper_hidden)) {\n\t\t\t\t\titemWrapper.hide();\n\t\t\t\t} else if (type === 'xml') {\n\t\t\t\t\titemWrapper.show();\n\t\t\t\t\twf_csv_txt.hide();\n\t\t\t\t} else if (type === 'csv' || type === 'txt') {\n\t\t\t\t\titemWrapper.hide();\n\t\t\t\t\twf_csv_txt.show();\n\t\t\t\t} else {\n\t\t\t\t\titemWrapper.hide();\n\t\t\t\t\twf_csv_txt.hide();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.trigger('change');\n\t});\n})(jQuery, window, document, wp.ajax, wpf_ajax_obj);\n"]}
admin/partials/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/partials/templates/comparer.be.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/daisycon.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_automotive.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_books.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_cosmetics.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_daily_offers.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_electronics.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_fashion.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_food_drinks.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_holidays_accommodations.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_holidays_accommodations_and_transport.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_holidays_trips.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_home_garden.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_housing.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_magazines.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_studies_trainings.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_telecom_accessories.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_telecom_all_in_one.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_telecom_gsm.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_telecom_gsm_subscription.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_telecom_sim.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/daisycon_work_jobs.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
3
+ <channel>
4
+ <title><![CDATA[ {BlogName} ]]></title>
5
+ <link><![CDATA[ {BlogURL} ]]></link>
6
+ <description><![CDATA[ {BlogDescription} ]]></description>
7
+ <updated_at>{DateTimeNow}</updated_at>
8
+ {separator}
9
+ </channel>
10
+ </rss>
admin/partials/templates/dooyoo.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/fruugo.au.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/hintaseuranta.fi.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/incurvy.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/partials/templates/kijiji.ca.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/marktplaats.nl.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/myshopping.com.au.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <productset>
2
+ {separator}
3
+ </productset>
admin/partials/templates/nextad.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/rakuten.de.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/shopalike.fr.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/skinflint.co.uk.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/skroutz.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <mywebstore>
3
+ <created_at>{DateTimeNow}</created_at>
4
+ {separator}
5
+ </mywebstore>
admin/partials/templates/spartoo.fi.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/stylight.com.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/taxonomies/google_taxonomy.txt ADDED
@@ -0,0 +1,5583 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Google_Product_Taxonomy_Version: 2019-07-10 https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt
2
+ 1 - Animals & Pet Supplies
3
+ 3237 - Animals & Pet Supplies > Live Animals
4
+ 2 - Animals & Pet Supplies > Pet Supplies
5
+ 3 - Animals & Pet Supplies > Pet Supplies > Bird Supplies
6
+ 7385 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Cage Accessories
7
+ 499954 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Cage Accessories > Bird Cage Bird Baths
8
+ 7386 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Cage Accessories > Bird Cage Food & Water Dishes
9
+ 4989 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Cages & Stands
10
+ 4990 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Food
11
+ 7398 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Gyms & Playstands
12
+ 4991 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Ladders & Perches
13
+ 4992 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Toys
14
+ 4993 - Animals & Pet Supplies > Pet Supplies > Bird Supplies > Bird Treats
15
+ 4 - Animals & Pet Supplies > Pet Supplies > Cat Supplies
16
+ 5082 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Apparel
17
+ 4433 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Beds
18
+ 3367 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Food
19
+ 543684 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Food > Non-prescription Cat Food
20
+ 543683 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Food > Prescription Cat Food
21
+ 4997 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Furniture
22
+ 500059 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Furniture Accessories
23
+ 4999 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Litter
24
+ 8069 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Litter Box Liners
25
+ 7142 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Litter Box Mats
26
+ 5000 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Litter Boxes
27
+ 5001 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Toys
28
+ 5002 - Animals & Pet Supplies > Pet Supplies > Cat Supplies > Cat Treats
29
+ 5 - Animals & Pet Supplies > Pet Supplies > Dog Supplies
30
+ 5004 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Apparel
31
+ 4434 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds
32
+ 7372 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Diaper Pads & Liners
33
+ 499900 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Diapers
34
+ 3530 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Food
35
+ 543682 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Food > Non-prescription Dog Food
36
+ 543681 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Food > Prescription Dog Food
37
+ 5094 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Houses
38
+ 7428 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Kennel & Run Accessories
39
+ 7274 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Kennels & Runs
40
+ 5010 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Toys
41
+ 8123 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Treadmills
42
+ 5011 - Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Treats
43
+ 6 - Animals & Pet Supplies > Pet Supplies > Fish Supplies
44
+ 505303 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium & Pond Tubing
45
+ 505307 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Air Stones & Diffusers
46
+ 500038 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Cleaning Supplies
47
+ 5019 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Decor
48
+ 5020 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Filters
49
+ 505306 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Fish Nets
50
+ 5021 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Gravel & Substrates
51
+ 5079 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Lighting
52
+ 6951 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Overflow Boxes
53
+ 5023 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Stands
54
+ 500062 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Temperature Controllers
55
+ 5161 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquarium Water Treatments
56
+ 3238 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquariums
57
+ 6085 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Aquatic Plant Fertilizers
58
+ 6403 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Fish Feeders
59
+ 5024 - Animals & Pet Supplies > Pet Supplies > Fish Supplies > Fish Food
60
+ 6983 - Animals & Pet Supplies > Pet Supplies > Pet Agility Equipment
61
+ 6811 - Animals & Pet Supplies > Pet Supplies > Pet Apparel Hangers
62
+ 500084 - Animals & Pet Supplies > Pet Supplies > Pet Bed Accessories
63
+ 5092 - Animals & Pet Supplies > Pet Supplies > Pet Bells & Charms
64
+ 6978 - Animals & Pet Supplies > Pet Supplies > Pet Biometric Monitors
65
+ 6980 - Animals & Pet Supplies > Pet Supplies > Pet Biometric Monitors > Pet Glucose Meters
66
+ 6982 - Animals & Pet Supplies > Pet Supplies > Pet Biometric Monitors > Pet Pedometers
67
+ 6981 - Animals & Pet Supplies > Pet Supplies > Pet Biometric Monitors > Pet Thermometers
68
+ 7143 - Animals & Pet Supplies > Pet Supplies > Pet Bowl Mats
69
+ 8513 - Animals & Pet Supplies > Pet Supplies > Pet Bowl Stands
70
+ 6252 - Animals & Pet Supplies > Pet Supplies > Pet Bowls, Feeders & Waterers
71
+ 500026 - Animals & Pet Supplies > Pet Supplies > Pet Carrier & Crate Accessories
72
+ 6251 - Animals & Pet Supplies > Pet Supplies > Pet Carriers & Crates
73
+ 6250 - Animals & Pet Supplies > Pet Supplies > Pet Collars & Harnesses
74
+ 6321 - Animals & Pet Supplies > Pet Supplies > Pet Containment Systems
75
+ 505811 - Animals & Pet Supplies > Pet Supplies > Pet Door Accessories
76
+ 4497 - Animals & Pet Supplies > Pet Supplies > Pet Doors
77
+ 8050 - Animals & Pet Supplies > Pet Supplies > Pet Eye Drops & Lubricants
78
+ 8068 - Animals & Pet Supplies > Pet Supplies > Pet First Aid & Emergency Kits
79
+ 6248 - Animals & Pet Supplies > Pet Supplies > Pet Flea & Tick Control
80
+ 5162 - Animals & Pet Supplies > Pet Supplies > Pet Food Containers
81
+ 5163 - Animals & Pet Supplies > Pet Supplies > Pet Food Scoops
82
+ 6383 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies
83
+ 6385 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Combs & Brushes
84
+ 503733 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Fragrances & Deodorizing Sprays
85
+ 6384 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Hair Clippers & Trimmers
86
+ 8167 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Hair Dryers
87
+ 7318 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Nail Polish
88
+ 7319 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Nail Tools
89
+ 6406 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Shampoo & Conditioner
90
+ 499917 - Animals & Pet Supplies > Pet Supplies > Pet Grooming Supplies > Pet Wipes
91
+ 500110 - Animals & Pet Supplies > Pet Supplies > Pet Heating Pad Accessories
92
+ 499743 - Animals & Pet Supplies > Pet Supplies > Pet Heating Pads
93
+ 5093 - Animals & Pet Supplies > Pet Supplies > Pet ID Tags
94
+ 6253 - Animals & Pet Supplies > Pet Supplies > Pet Leash Extensions
95
+ 6249 - Animals & Pet Supplies > Pet Supplies > Pet Leashes
96
+ 5145 - Animals & Pet Supplies > Pet Supplies > Pet Medical Collars
97
+ 6861 - Animals & Pet Supplies > Pet Supplies > Pet Medical Tape & Bandages
98
+ 5086 - Animals & Pet Supplies > Pet Supplies > Pet Medicine
99
+ 5144 - Animals & Pet Supplies > Pet Supplies > Pet Muzzles
100
+ 7144 - Animals & Pet Supplies > Pet Supplies > Pet Oral Care Supplies
101
+ 5087 - Animals & Pet Supplies > Pet Supplies > Pet Playpens
102
+ 6973 - Animals & Pet Supplies > Pet Supplies > Pet Steps & Ramps
103
+ 6276 - Animals & Pet Supplies > Pet Supplies > Pet Strollers
104
+ 7396 - Animals & Pet Supplies > Pet Supplies > Pet Sunscreen
105
+ 505314 - Animals & Pet Supplies > Pet Supplies > Pet Training Aids
106
+ 505313 - Animals & Pet Supplies > Pet Supplies > Pet Training Aids > Pet Training Clickers & Treat Dispensers
107
+ 505304 - Animals & Pet Supplies > Pet Supplies > Pet Training Aids > Pet Training Pad Holders
108
+ 6846 - Animals & Pet Supplies > Pet Supplies > Pet Training Aids > Pet Training Pads
109
+ 505311 - Animals & Pet Supplies > Pet Supplies > Pet Training Aids > Pet Training Sprays & Solutions
110
+ 5081 - Animals & Pet Supplies > Pet Supplies > Pet Vitamins & Supplements
111
+ 502982 - Animals & Pet Supplies > Pet Supplies > Pet Waste Bag Dispensers & Holders
112
+ 8070 - Animals & Pet Supplies > Pet Supplies > Pet Waste Bags
113
+ 505297 - Animals & Pet Supplies > Pet Supplies > Pet Waste Disposal Systems & Tools
114
+ 7 - Animals & Pet Supplies > Pet Supplies > Reptile & Amphibian Supplies
115
+ 5026 - Animals & Pet Supplies > Pet Supplies > Reptile & Amphibian Supplies > Reptile & Amphibian Food
116
+ 5027 - Animals & Pet Supplies > Pet Supplies > Reptile & Amphibian Supplies > Reptile & Amphibian Habitat Accessories
117
+ 5028 - Animals & Pet Supplies > Pet Supplies > Reptile & Amphibian Supplies > Reptile & Amphibian Habitat Heating & Lighting
118
+ 5029 - Animals & Pet Supplies > Pet Supplies > Reptile & Amphibian Supplies > Reptile & Amphibian Habitats
119
+ 5030 - Animals & Pet Supplies > Pet Supplies > Reptile & Amphibian Supplies > Reptile & Amphibian Substrates
120
+ 5013 - Animals & Pet Supplies > Pet Supplies > Small Animal Supplies
121
+ 5014 - Animals & Pet Supplies > Pet Supplies > Small Animal Supplies > Small Animal Bedding
122
+ 5015 - Animals & Pet Supplies > Pet Supplies > Small Animal Supplies > Small Animal Food
123
+ 5016 - Animals & Pet Supplies > Pet Supplies > Small Animal Supplies > Small Animal Habitat Accessories
124
+ 5017 - Animals & Pet Supplies > Pet Supplies > Small Animal Supplies > Small Animal Habitats & Cages
125
+ 7517 - Animals & Pet Supplies > Pet Supplies > Small Animal Supplies > Small Animal Treats
126
+ 8474 - Animals & Pet Supplies > Pet Supplies > Vehicle Pet Barriers
127
+ 166 - Apparel & Accessories
128
+ 1604 - Apparel & Accessories > Clothing
129
+ 5322 - Apparel & Accessories > Clothing > Activewear
130
+ 5697 - Apparel & Accessories > Clothing > Activewear > Bicycle Activewear
131
+ 3128 - Apparel & Accessories > Clothing > Activewear > Bicycle Activewear > Bicycle Bibs
132
+ 3455 - Apparel & Accessories > Clothing > Activewear > Bicycle Activewear > Bicycle Jerseys
133
+ 3188 - Apparel & Accessories > Clothing > Activewear > Bicycle Activewear > Bicycle Shorts & Briefs
134
+ 6087 - Apparel & Accessories > Clothing > Activewear > Bicycle Activewear > Bicycle Skinsuits
135
+ 3729 - Apparel & Accessories > Clothing > Activewear > Bicycle Activewear > Bicycle Tights
136
+ 5378 - Apparel & Accessories > Clothing > Activewear > Boxing Shorts
137
+ 499979 - Apparel & Accessories > Clothing > Activewear > Dance Dresses, Skirts & Costumes
138
+ 3951 - Apparel & Accessories > Clothing > Activewear > Football Pants
139
+ 5460 - Apparel & Accessories > Clothing > Activewear > Hunting Clothing
140
+ 5462 - Apparel & Accessories > Clothing > Activewear > Hunting Clothing > Ghillie Suits
141
+ 5461 - Apparel & Accessories > Clothing > Activewear > Hunting Clothing > Hunting & Fishing Vests
142
+ 5552 - Apparel & Accessories > Clothing > Activewear > Hunting Clothing > Hunting & Tactical Pants
143
+ 5379 - Apparel & Accessories > Clothing > Activewear > Martial Arts Shorts
144
+ 5517 - Apparel & Accessories > Clothing > Activewear > Motorcycle Protective Clothing
145
+ 6006 - Apparel & Accessories > Clothing > Activewear > Motorcycle Protective Clothing > Motorcycle Jackets
146
+ 7003 - Apparel & Accessories > Clothing > Activewear > Motorcycle Protective Clothing > Motorcycle Pants
147
+ 5463 - Apparel & Accessories > Clothing > Activewear > Motorcycle Protective Clothing > Motorcycle Suits
148
+ 5555 - Apparel & Accessories > Clothing > Activewear > Paintball Clothing
149
+ 182 - Apparel & Accessories > Clothing > Baby & Toddler Clothing
150
+ 5408 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Bottoms
151
+ 5549 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Diaper Covers
152
+ 5424 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Dresses
153
+ 5425 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Outerwear
154
+ 5622 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Outfits
155
+ 5412 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Sleepwear
156
+ 5423 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Socks & Tights
157
+ 5409 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Swimwear
158
+ 5410 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby & Toddler Tops
159
+ 5411 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Baby One-Pieces
160
+ 5621 - Apparel & Accessories > Clothing > Baby & Toddler Clothing > Toddler Underwear
161
+ 2271 - Apparel & Accessories > Clothing > Dresses
162
+ 5182 - Apparel & Accessories > Clothing > One-Pieces
163
+ 5250 - Apparel & Accessories > Clothing > One-Pieces > Jumpsuits & Rompers
164
+ 5490 - Apparel & Accessories > Clothing > One-Pieces > Leotards & Unitards
165
+ 7132 - Apparel & Accessories > Clothing > One-Pieces > Overalls
166
+ 203 - Apparel & Accessories > Clothing > Outerwear
167
+ 5506 - Apparel & Accessories > Clothing > Outerwear > Chaps
168
+ 5598 - Apparel & Accessories > Clothing > Outerwear > Coats & Jackets
169
+ 5514 - Apparel & Accessories > Clothing > Outerwear > Rain Pants
170
+ 3066 - Apparel & Accessories > Clothing > Outerwear > Rain Suits
171
+ 5909 - Apparel & Accessories > Clothing > Outerwear > Snow Pants & Suits
172
+ 1831 - Apparel & Accessories > Clothing > Outerwear > Vests
173
+ 7313 - Apparel & Accessories > Clothing > Outfit Sets
174
+ 204 - Apparel & Accessories > Clothing > Pants
175
+ 212 - Apparel & Accessories > Clothing > Shirts & Tops
176
+ 207 - Apparel & Accessories > Clothing > Shorts
177
+ 1581 - Apparel & Accessories > Clothing > Skirts
178
+ 5344 - Apparel & Accessories > Clothing > Skorts
179
+ 208 - Apparel & Accessories > Clothing > Sleepwear & Loungewear
180
+ 5713 - Apparel & Accessories > Clothing > Sleepwear & Loungewear > Loungewear
181
+ 5513 - Apparel & Accessories > Clothing > Sleepwear & Loungewear > Nightgowns
182
+ 2580 - Apparel & Accessories > Clothing > Sleepwear & Loungewear > Pajamas
183
+ 2302 - Apparel & Accessories > Clothing > Sleepwear & Loungewear > Robes
184
+ 1594 - Apparel & Accessories > Clothing > Suits
185
+ 5183 - Apparel & Accessories > Clothing > Suits > Pant Suits
186
+ 1516 - Apparel & Accessories > Clothing > Suits > Skirt Suits
187
+ 1580 - Apparel & Accessories > Clothing > Suits > Tuxedos
188
+ 211 - Apparel & Accessories > Clothing > Swimwear
189
+ 5388 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing
190
+ 6031 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Dirndls
191
+ 5674 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Hakama Trousers
192
+ 6227 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Japanese Black Formal Wear
193
+ 5673 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Kimono Outerwear
194
+ 5343 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Kimonos
195
+ 5483 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Religious Ceremonial Clothing
196
+ 8149 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Religious Ceremonial Clothing > Baptism & Communion Dresses
197
+ 8248 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Saris & Lehengas
198
+ 7281 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Traditional Leather Pants
199
+ 5676 - Apparel & Accessories > Clothing > Traditional & Ceremonial Clothing > Yukata
200
+ 213 - Apparel & Accessories > Clothing > Underwear & Socks
201
+ 7207 - Apparel & Accessories > Clothing > Underwear & Socks > Bra Accessories
202
+ 7208 - Apparel & Accessories > Clothing > Underwear & Socks > Bra Accessories > Bra Strap Pads
203
+ 7211 - Apparel & Accessories > Clothing > Underwear & Socks > Bra Accessories > Bra Straps & Extenders
204
+ 7210 - Apparel & Accessories > Clothing > Underwear & Socks > Bra Accessories > Breast Enhancing Inserts
205
+ 7209 - Apparel & Accessories > Clothing > Underwear & Socks > Bra Accessories > Breast Petals & Concealers
206
+ 214 - Apparel & Accessories > Clothing > Underwear & Socks > Bras
207
+ 215 - Apparel & Accessories > Clothing > Underwear & Socks > Hosiery
208
+ 5327 - Apparel & Accessories > Clothing > Underwear & Socks > Jock Straps
209
+ 1772 - Apparel & Accessories > Clothing > Underwear & Socks > Lingerie
210
+ 2563 - Apparel & Accessories > Clothing > Underwear & Socks > Lingerie Accessories
211
+ 2160 - Apparel & Accessories > Clothing > Underwear & Socks > Lingerie Accessories > Garter Belts
212
+ 1675 - Apparel & Accessories > Clothing > Underwear & Socks > Lingerie Accessories > Garters
213
+ 1807 - Apparel & Accessories > Clothing > Underwear & Socks > Long Johns
214
+ 2963 - Apparel & Accessories > Clothing > Underwear & Socks > Petticoats & Pettipants
215
+ 1578 - Apparel & Accessories > Clothing > Underwear & Socks > Shapewear
216
+ 209 - Apparel & Accessories > Clothing > Underwear & Socks > Socks
217
+ 2745 - Apparel & Accessories > Clothing > Underwear & Socks > Undershirts
218
+ 2562 - Apparel & Accessories > Clothing > Underwear & Socks > Underwear
219
+ 5834 - Apparel & Accessories > Clothing > Underwear & Socks > Underwear Slips
220
+ 2306 - Apparel & Accessories > Clothing > Uniforms
221
+ 5484 - Apparel & Accessories > Clothing > Uniforms > Contractor Pants & Coveralls
222
+ 5878 - Apparel & Accessories > Clothing > Uniforms > Flight Suits
223
+ 7235 - Apparel & Accessories > Clothing > Uniforms > Food Service Uniforms
224
+ 7237 - Apparel & Accessories > Clothing > Uniforms > Food Service Uniforms > Chef's Hats
225
+ 2396 - Apparel & Accessories > Clothing > Uniforms > Food Service Uniforms > Chef's Jackets
226
+ 7236 - Apparel & Accessories > Clothing > Uniforms > Food Service Uniforms > Chef's Pants
227
+ 5949 - Apparel & Accessories > Clothing > Uniforms > Military Uniforms
228
+ 206 - Apparel & Accessories > Clothing > Uniforms > School Uniforms
229
+ 3414 - Apparel & Accessories > Clothing > Uniforms > Security Uniforms
230
+ 3598 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms
231
+ 3191 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Baseball Uniforms
232
+ 3439 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Basketball Uniforms
233
+ 3683 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Cheerleading Uniforms
234
+ 3724 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Cricket Uniforms
235
+ 3888 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Football Uniforms
236
+ 3958 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Hockey Uniforms
237
+ 4003 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Martial Arts Uniforms
238
+ 3253 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Officiating Uniforms
239
+ 5564 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Soccer Uniforms
240
+ 3379 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Softball Uniforms
241
+ 3852 - Apparel & Accessories > Clothing > Uniforms > Sports Uniforms > Wrestling Uniforms
242
+ 2292 - Apparel & Accessories > Clothing > Uniforms > White Coats
243
+ 5441 - Apparel & Accessories > Clothing > Wedding & Bridal Party Dresses
244
+ 5330 - Apparel & Accessories > Clothing > Wedding & Bridal Party Dresses > Bridal Party Dresses
245
+ 5329 - Apparel & Accessories > Clothing > Wedding & Bridal Party Dresses > Wedding Dresses
246
+ 167 - Apparel & Accessories > Clothing Accessories
247
+ 5942 - Apparel & Accessories > Clothing Accessories > Arm Warmers & Sleeves
248
+ 5422 - Apparel & Accessories > Clothing Accessories > Baby & Toddler Clothing Accessories
249
+ 5623 - Apparel & Accessories > Clothing Accessories > Baby & Toddler Clothing Accessories > Baby & Toddler Belts
250
+ 5624 - Apparel & Accessories > Clothing Accessories > Baby & Toddler Clothing Accessories > Baby & Toddler Gloves & Mittens
251
+ 5625 - Apparel & Accessories > Clothing Accessories > Baby & Toddler Clothing Accessories > Baby & Toddler Hats
252
+ 5626 - Apparel & Accessories > Clothing Accessories > Baby & Toddler Clothing Accessories > Baby Protective Wear
253
+ 1786 - Apparel & Accessories > Clothing Accessories > Balaclavas
254
+ 168 - Apparel & Accessories > Clothing Accessories > Bandanas & Headties
255
+ 543586 - Apparel & Accessories > Clothing Accessories > Bandanas & Headties > Bandanas
256
+ 543587 - Apparel & Accessories > Clothing Accessories > Bandanas & Headties > Hair Care Wraps
257
+ 3913 - Apparel & Accessories > Clothing Accessories > Belt Buckles
258
+ 169 - Apparel & Accessories > Clothing Accessories > Belts
259
+ 5443 - Apparel & Accessories > Clothing Accessories > Bridal Accessories
260
+ 5446 - Apparel & Accessories > Clothing Accessories > Bridal Accessories > Bridal Veils
261
+ 6985 - Apparel & Accessories > Clothing Accessories > Button Studs
262
+ 6984 - Apparel & Accessories > Clothing Accessories > Collar Stays
263
+ 193 - Apparel & Accessories > Clothing Accessories > Cufflinks
264
+ 5114 - Apparel & Accessories > Clothing Accessories > Decorative Fans
265
+ 6238 - Apparel & Accessories > Clothing Accessories > Earmuffs
266
+ 170 - Apparel & Accessories > Clothing Accessories > Gloves & Mittens
267
+ 171 - Apparel & Accessories > Clothing Accessories > Hair Accessories
268
+ 8451 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Bun & Volume Shapers
269
+ 2477 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Combs
270
+ 4057 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Extensions
271
+ 1948 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Forks & Sticks
272
+ 6183 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Nets
273
+ 502988 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Pins, Claws & Clips
274
+ 543646 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Pins, Claws & Clips > Barrettes
275
+ 543645 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Pins, Claws & Clips > Hair Claws & Clips
276
+ 543644 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Pins, Claws & Clips > Hair Pins
277
+ 5915 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Hair Wreaths
278
+ 1662 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Headbands
279
+ 1483 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Ponytail Holders
280
+ 5914 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Tiaras
281
+ 7305 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Wig Accessories
282
+ 7307 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Wig Accessories > Wig Caps
283
+ 7306 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Wig Accessories > Wig Glue & Tape
284
+ 181 - Apparel & Accessories > Clothing Accessories > Hair Accessories > Wigs
285
+ 7133 - Apparel & Accessories > Clothing Accessories > Hand Muffs
286
+ 5207 - Apparel & Accessories > Clothing Accessories > Handkerchiefs
287
+ 173 - Apparel & Accessories > Clothing Accessories > Hats
288
+ 2020 - Apparel & Accessories > Clothing Accessories > Headwear
289
+ 7054 - Apparel & Accessories > Clothing Accessories > Headwear > Fascinators
290
+ 1922 - Apparel & Accessories > Clothing Accessories > Headwear > Headdresses
291
+ 5939 - Apparel & Accessories > Clothing Accessories > Headwear > Turbans
292
+ 5941 - Apparel & Accessories > Clothing Accessories > Leg Warmers
293
+ 6268 - Apparel & Accessories > Clothing Accessories > Leis
294
+ 502987 - Apparel & Accessories > Clothing Accessories > Maternity Belts & Support Bands
295
+ 7230 - Apparel & Accessories > Clothing Accessories > Neck Gaiters
296
+ 176 - Apparel & Accessories > Clothing Accessories > Neckties
297
+ 4179 - Apparel & Accessories > Clothing Accessories > Pinback Buttons
298
+ 499972 - Apparel & Accessories > Clothing Accessories > Sashes
299
+ 177 - Apparel & Accessories > Clothing Accessories > Scarves & Shawls
300
+ 543673 - Apparel & Accessories > Clothing Accessories > Scarves & Shawls > Scarves
301
+ 543674 - Apparel & Accessories > Clothing Accessories > Scarves & Shawls > Shawls
302
+ 178 - Apparel & Accessories > Clothing Accessories > Sunglasses
303
+ 179 - Apparel & Accessories > Clothing Accessories > Suspenders
304
+ 180 - Apparel & Accessories > Clothing Accessories > Tie Clips
305
+ 5390 - Apparel & Accessories > Clothing Accessories > Traditional Clothing Accessories
306
+ 5687 - Apparel & Accessories > Clothing Accessories > Traditional Clothing Accessories > Obis
307
+ 5685 - Apparel & Accessories > Clothing Accessories > Traditional Clothing Accessories > Tabi Socks
308
+ 1893 - Apparel & Accessories > Clothing Accessories > Wristbands
309
+ 184 - Apparel & Accessories > Costumes & Accessories
310
+ 5192 - Apparel & Accessories > Costumes & Accessories > Costume Accessories
311
+ 7304 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Bald Caps
312
+ 8017 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Costume Accessory Sets
313
+ 5907 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Costume Capes
314
+ 8200 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Costume Gloves
315
+ 5426 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Costume Hats
316
+ 500118 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Costume Special Effects
317
+ 500008 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Costume Tobacco Products
318
+ 8018 - Apparel & Accessories > Costumes & Accessories > Costume Accessories > Pretend Jewelry
319
+ 5387 - Apparel & Accessories > Costumes & Accessories > Costume Shoes
320
+ 5193 - Apparel & Accessories > Costumes & Accessories > Costumes
321
+ 5194 - Apparel & Accessories > Costumes & Accessories > Masks
322
+ 6552 - Apparel & Accessories > Handbag & Wallet Accessories
323
+ 6460 - Apparel & Accessories > Handbag & Wallet Accessories > Checkbook Covers
324
+ 175 - Apparel & Accessories > Handbag & Wallet Accessories > Keychains
325
+ 6277 - Apparel & Accessories > Handbag & Wallet Accessories > Lanyards
326
+ 5841 - Apparel & Accessories > Handbag & Wallet Accessories > Wallet Chains
327
+ 6551 - Apparel & Accessories > Handbags, Wallets & Cases
328
+ 6170 - Apparel & Accessories > Handbags, Wallets & Cases > Badge & Pass Holders
329
+ 6169 - Apparel & Accessories > Handbags, Wallets & Cases > Business Card Cases
330
+ 3032 - Apparel & Accessories > Handbags, Wallets & Cases > Handbags
331
+ 2668 - Apparel & Accessories > Handbags, Wallets & Cases > Wallets & Money Clips
332
+ 188 - Apparel & Accessories > Jewelry
333
+ 189 - Apparel & Accessories > Jewelry > Anklets
334
+ 190 - Apparel & Accessories > Jewelry > Body Jewelry
335
+ 191 - Apparel & Accessories > Jewelry > Bracelets
336
+ 197 - Apparel & Accessories > Jewelry > Brooches & Lapel Pins
337
+ 192 - Apparel & Accessories > Jewelry > Charms & Pendants
338
+ 194 - Apparel & Accessories > Jewelry > Earrings
339
+ 6463 - Apparel & Accessories > Jewelry > Jewelry Sets
340
+ 196 - Apparel & Accessories > Jewelry > Necklaces
341
+ 200 - Apparel & Accessories > Jewelry > Rings
342
+ 5122 - Apparel & Accessories > Jewelry > Watch Accessories
343
+ 5123 - Apparel & Accessories > Jewelry > Watch Accessories > Watch Bands
344
+ 7471 - Apparel & Accessories > Jewelry > Watch Accessories > Watch Stickers & Decals
345
+ 6870 - Apparel & Accessories > Jewelry > Watch Accessories > Watch Winders
346
+ 201 - Apparel & Accessories > Jewelry > Watches
347
+ 1933 - Apparel & Accessories > Shoe Accessories
348
+ 5567 - Apparel & Accessories > Shoe Accessories > Boot Liners
349
+ 7078 - Apparel & Accessories > Shoe Accessories > Gaiters
350
+ 5385 - Apparel & Accessories > Shoe Accessories > Shoe Covers
351
+ 1856 - Apparel & Accessories > Shoe Accessories > Shoelaces
352
+ 2427 - Apparel & Accessories > Shoe Accessories > Spurs
353
+ 187 - Apparel & Accessories > Shoes
354
+ 8 - Arts & Entertainment
355
+ 499969 - Arts & Entertainment > Event Tickets
356
+ 5710 - Arts & Entertainment > Hobbies & Creative Arts
357
+ 16 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts
358
+ 505370 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits
359
+ 505374 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Candle Making Kits
360
+ 4778 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Drawing & Painting Kits
361
+ 6382 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Fabric Repair Kits
362
+ 6989 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Incense Making Kits
363
+ 502979 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Jewelry Making Kits
364
+ 6829 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Mosaic Kits
365
+ 7096 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Needlecraft Kits
366
+ 503758 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Scrapbooking & Stamping Kits
367
+ 4986 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Craft Kits > Toy Craft Kits
368
+ 505372 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials
369
+ 24 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper
370
+ 505399 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Cardstock & Scrapbooking Paper
371
+ 543510 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Cardstock & Scrapbooking Paper > Cardstock
372
+ 543511 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Cardstock & Scrapbooking Paper > Scrapbooking Paper
373
+ 2532 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Construction Paper
374
+ 8168 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Craft Foil
375
+ 505400 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Drawing & Painting Paper
376
+ 2967 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Origami Paper
377
+ 6110 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Transfer Paper
378
+ 2741 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Art & Craft Paper > Vellum Paper
379
+ 505380 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Fasteners & Closures
380
+ 4226 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Fasteners & Closures > Buttons & Snaps
381
+ 505408 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Fasteners & Closures > Clasps & Hooks
382
+ 505409 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Fasteners & Closures > Eyelets & Grommets
383
+ 6145 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Fasteners & Closures > Hook and Loop Fasteners
384
+ 500056 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Fasteners & Closures > Zipper Pulls
385
+ 4174 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Fasteners & Closures > Zippers
386
+ 505378 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze
387
+ 505417 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze > Art & Craft Paint
388
+ 500094 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze > Art Fixatives
389
+ 505416 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze > Art Ink
390
+ 499879 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze > Ceramic & Pottery Glazes
391
+ 505415 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze > Craft Dyes
392
+ 505414 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze > Ink Pads
393
+ 6558 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Paint, Ink & Glaze > Paint Mediums
394
+ 505381 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Shapes & Bases
395
+ 6117 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Shapes & Bases > Craft Foam & Styrofoam
396
+ 505404 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Shapes & Bases > Craft Wood & Shapes
397
+ 505403 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Shapes & Bases > Papier Mache Shapes
398
+ 504419 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Craft Shapes & Bases > Wreath & Floral Frames
399
+ 505376 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Adhesives & Magnets
400
+ 503745 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Adhesives & Magnets > Craft & Office Glue
401
+ 36 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Adhesives & Magnets > Craft Magnets
402
+ 505419 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Adhesives & Magnets > Decorative Tape
403
+ 7192 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Adhesives & Magnets > Floral Tape
404
+ 6418 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Adhesives & Magnets > Fusible Tape
405
+ 505382 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Fibers
406
+ 6540 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Fibers > Jewelry & Beading Cord
407
+ 49 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Fibers > Thread & Floss
408
+ 6140 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Fibers > Unspun Fiber
409
+ 2669 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Fibers > Yarn
410
+ 505377 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Wire
411
+ 5062 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Wire > Craft Pipe Cleaners
412
+ 505418 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Wire > Floral Wire
413
+ 6102 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Crafting Wire > Jewelry & Beading Wire
414
+ 505379 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims
415
+ 6955 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Appliques & Patches
416
+ 32 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Beads
417
+ 505413 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Bows & Yo-Yos
418
+ 4054 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Decorative Stickers
419
+ 6146 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Elastic
420
+ 505411 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Feathers
421
+ 5996 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Jewelry Findings
422
+ 198 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Loose Stones
423
+ 5982 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Rhinestones & Flatbacks
424
+ 505412 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Ribbons & Trim
425
+ 505410 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Sequins & Glitter
426
+ 1927 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embellishments & Trims > Sew-in Labels
427
+ 6121 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Embossing Powder
428
+ 6142 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Filling & Padding Material
429
+ 505407 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Filling & Padding Material > Batting & Stuffing
430
+ 505406 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Filling & Padding Material > Filling Pellets
431
+ 505405 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Filling & Padding Material > Pillow Forms
432
+ 505383 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Leather & Vinyl
433
+ 44 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials
434
+ 3692 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough
435
+ 543628 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Clay
436
+ 543629 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Clay & Modeling Dough > Modeling Dough
437
+ 505401 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Papier Mache Mixes
438
+ 505804 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Plaster Gauze
439
+ 505402 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Pottery & Sculpting Materials > Pottery Slips
440
+ 505375 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Raw Candle Wax
441
+ 505384 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles
442
+ 505397 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles > Crafting Canvas
443
+ 505398 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles > Crafting Canvas > Needlecraft Canvas
444
+ 19 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles > Crafting Canvas > Painting Canvas
445
+ 6144 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles > Crafting Canvas > Plastic Canvas
446
+ 47 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles > Fabric
447
+ 7076 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles > Interfacing
448
+ 505396 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Textiles > Printable Fabric
449
+ 7403 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Wick Tabs
450
+ 7402 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Materials > Wicks
451
+ 504643 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories
452
+ 232168 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories > Craft Knife Blades
453
+ 4580 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories > Craft Machine Cases & Covers
454
+ 505286 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories > Sewing Machine Extension Tables
455
+ 5120 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories > Sewing Machine Feet
456
+ 503348 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories > Sewing Machine Replacement Parts
457
+ 6136 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories > Spinning Wheel Accessories
458
+ 499918 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tool Accessories > Stamp Blocks
459
+ 504639 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools
460
+ 6152 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Blocking Mats
461
+ 6151 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Blocking Wires
462
+ 505391 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Color Mixing Tools
463
+ 1653 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Color Mixing Tools > Palette Knives
464
+ 1719 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Color Mixing Tools > Palettes
465
+ 504640 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools
466
+ 504641 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Craft & Office Scissors
467
+ 504642 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Craft Cutters & Embossers
468
+ 5136 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Craft Knives
469
+ 6119 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Craft Scoring Tools
470
+ 7340 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Embossing Heat Tools
471
+ 6122 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Embossing Pens & Styluses
472
+ 6161 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Seam Rippers
473
+ 6447 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Cutting & Embossing Tools > Thread & Yarn Cutters
474
+ 505386 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Decoration Makers
475
+ 505392 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools
476
+ 18 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Art Brushes
477
+ 6126 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Brayer Rollers
478
+ 4032 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Decorative Stamps
479
+ 3083 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Drafting Compasses
480
+ 6125 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Screen Printing Squeegees
481
+ 5883 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Stencil Machines
482
+ 2671 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Stencils & Die Cuts
483
+ 6160 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Stitch Markers & Counters
484
+ 6157 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Textile Art Gauges & Rulers
485
+ 505420 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Craft Measuring & Marking Tools > Wood Burning Tools
486
+ 5137 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Cutting Mats
487
+ 6150 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Dress Forms
488
+ 6133 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Felting Pads & Mats
489
+ 6158 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Frames, Hoops & Stretchers
490
+ 4073 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Glue Guns
491
+ 5921 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Light Boxes
492
+ 505393 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Needles & Hooks
493
+ 6127 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Needles & Hooks > Crochet Hooks
494
+ 5992 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Needles & Hooks > Hand-Sewing Needles
495
+ 6139 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Needles & Hooks > Knitting Needles
496
+ 6168 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Needles & Hooks > Latch & Locker Hooks
497
+ 4579 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Needles & Hooks > Sewing Machine Needles
498
+ 6101 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Safety Pins
499
+ 6159 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Straight Pins
500
+ 505388 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Textile Craft Machines
501
+ 6134 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Textile Craft Machines > Felting Needles & Machines
502
+ 505422 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Textile Craft Machines > Hand Looms
503
+ 505421 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Textile Craft Machines > Mechanical Looms
504
+ 615 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Textile Craft Machines > Sewing Machines
505
+ 6137 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Textile Craft Machines > Spinning Wheels
506
+ 6156 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thimbles & Sewing Palms
507
+ 543639 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thimbles & Sewing Palms > Sewing Palms
508
+ 543638 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thimbles & Sewing Palms > Thimbles
509
+ 505387 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools
510
+ 6164 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Fiber Cards & Brushes
511
+ 6138 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Hand Spindles
512
+ 6163 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Needle Threaders
513
+ 6155 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Thread & Yarn Guides
514
+ 6154 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Thread & Yarn Spools
515
+ 6153 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Thread, Yarn & Bobbin Winders
516
+ 6167 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Weaving Beaters
517
+ 6166 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Art & Crafting Tools > Thread & Yarn Tools > Weaving Shuttles
518
+ 505369 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Craft Organization
519
+ 505394 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Craft Organization > Needle, Pin & Hook Organizers
520
+ 499971 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Craft Organization > Sewing Baskets & Kits
521
+ 505395 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Craft Organization > Thread & Yarn Organizers
522
+ 505371 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Crafting Patterns & Molds
523
+ 6999 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Crafting Patterns & Molds > Beading Patterns
524
+ 8007 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Crafting Patterns & Molds > Craft Molds
525
+ 6135 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Crafting Patterns & Molds > Felting Molds
526
+ 505373 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Crafting Patterns & Molds > Needlecraft Patterns
527
+ 3697 - Arts & Entertainment > Hobbies & Creative Arts > Arts & Crafts > Crafting Patterns & Molds > Sewing Patterns
528
+ 216 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles
529
+ 3599 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Autographs
530
+ 217 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Coins & Currency
531
+ 543607 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Coins & Currency > Collectible Banknotes
532
+ 543606 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Coins & Currency > Collectible Coins
533
+ 6997 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Trading Cards
534
+ 220 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Weapons
535
+ 499953 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Weapons > Collectible Guns
536
+ 5311 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Weapons > Collectible Knives
537
+ 221 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Weapons > Collectible Swords
538
+ 1340 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Collectible Weapons > Sword Stands & Displays
539
+ 219 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Postage Stamps
540
+ 218 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Rocks & Fossils
541
+ 6000 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Scale Model Accessories
542
+ 37 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Scale Models
543
+ 1312 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Seal Stamps
544
+ 3865 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles
545
+ 4333 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia
546
+ 4180 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Auto Racing Autographed Paraphernalia
547
+ 4149 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Baseball & Softball Autographed Paraphernalia
548
+ 4279 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Basketball Autographed Paraphernalia
549
+ 8210 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Boxing Autographed Paraphernalia
550
+ 4124 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Football Autographed Paraphernalia
551
+ 4144 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Hockey Autographed Paraphernalia
552
+ 4093 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Soccer Autographed Paraphernalia
553
+ 6186 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Autographed Sports Paraphernalia > Tennis Autographed Sports Paraphernalia
554
+ 3515 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories
555
+ 1051 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories > Auto Racing Fan Accessories
556
+ 1074 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories > Baseball & Softball Fan Accessories
557
+ 1084 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories > Basketball Fan Accessories
558
+ 1095 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories > Football Fan Accessories
559
+ 4006 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories > Hockey Fan Accessories
560
+ 3576 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories > Soccer Fan Accessories
561
+ 6187 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Sports Collectibles > Sports Fan Accessories > Tennis Fan Accessories
562
+ 3893 - Arts & Entertainment > Hobbies & Creative Arts > Collectibles > Vintage Advertisements
563
+ 3577 - Arts & Entertainment > Hobbies & Creative Arts > Homebrewing & Winemaking Supplies
564
+ 3014 - Arts & Entertainment > Hobbies & Creative Arts > Homebrewing & Winemaking Supplies > Beer Brewing Grains & Malts
565
+ 502980 - Arts & Entertainment > Hobbies & Creative Arts > Homebrewing & Winemaking Supplies > Bottling Bottles
566
+ 499891 - Arts & Entertainment > Hobbies & Creative Arts > Homebrewing & Winemaking Supplies > Homebrewing & Winemaking Kits
567
+ 2579 - Arts & Entertainment > Hobbies & Creative Arts > Homebrewing & Winemaking Supplies > Wine Making
568
+ 33 - Arts & Entertainment > Hobbies & Creative Arts > Juggling
569
+ 35 - Arts & Entertainment > Hobbies & Creative Arts > Magic & Novelties
570
+ 5999 - Arts & Entertainment > Hobbies & Creative Arts > Model Making
571
+ 3885 - Arts & Entertainment > Hobbies & Creative Arts > Model Making > Model Rocketry
572
+ 5151 - Arts & Entertainment > Hobbies & Creative Arts > Model Making > Model Train Accessories
573
+ 5150 - Arts & Entertainment > Hobbies & Creative Arts > Model Making > Model Trains & Train Sets
574
+ 4175 - Arts & Entertainment > Hobbies & Creative Arts > Model Making > Scale Model Kits
575
+ 55 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories
576
+ 57 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories
577
+ 4797 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Care & Cleaning
578
+ 4891 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Care & Cleaning > Brass Instrument Care Kits
579
+ 4892 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Care & Cleaning > Brass Instrument Cleaners & Sanitizers
580
+ 4890 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Care & Cleaning > Brass Instrument Cleaning Tools
581
+ 4893 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Care & Cleaning > Brass Instrument Guards
582
+ 4894 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Care & Cleaning > Brass Instrument Lubricants
583
+ 4895 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Care & Cleaning > Brass Instrument Polishing Cloths
584
+ 505310 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Cases & Gigbags
585
+ 505308 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Mouthpieces
586
+ 505768 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Mutes
587
+ 4798 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Replacement Parts
588
+ 505309 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Brass Instrument Accessories > Brass Instrument Straps & Stands
589
+ 505288 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Conductor Batons
590
+ 3270 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Electronic Tuners
591
+ 505365 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Metronomes
592
+ 505328 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Music Benches & Stools
593
+ 500001 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Music Lyres & Flip Folders
594
+ 7277 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Music Stand Accessories
595
+ 7279 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Music Stand Accessories > Music Stand Bags
596
+ 7280 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Music Stand Accessories > Music Stand Lights
597
+ 7278 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Music Stand Accessories > Sheet Music Clips
598
+ 4142 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Music Stands
599
+ 8072 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifier Accessories
600
+ 6970 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifier Accessories > Musical Instrument Amplifier Cabinets
601
+ 8461 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifier Accessories > Musical Instrument Amplifier Covers & Cases
602
+ 8073 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifier Accessories > Musical Instrument Amplifier Footswitches
603
+ 8462 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifier Accessories > Musical Instrument Amplifier Knobs
604
+ 7364 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifier Accessories > Musical Instrument Amplifier Stands
605
+ 8480 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifier Accessories > Musical Instrument Amplifier Tubes
606
+ 56 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Instrument Amplifiers
607
+ 60 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Keyboard Accessories
608
+ 7357 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Keyboard Accessories > Musical Keyboard Bags & Cases
609
+ 3588 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Keyboard Accessories > Musical Keyboard Stands
610
+ 3324 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Musical Keyboard Accessories > Sustain Pedals
611
+ 3465 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories
612
+ 7100 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Cymbal & Drum Cases
613
+ 7231 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Cymbal & Drum Mutes
614
+ 7153 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Heads
615
+ 7152 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Keys
616
+ 7099 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Kit Hardware
617
+ 7103 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Kit Hardware > Bass Drum Beaters
618
+ 7102 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Kit Hardware > Drum Kit Mounting Hardware
619
+ 7101 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Kit Hardware > Drum Pedals
620
+ 7150 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Stick & Brush Accessories
621
+ 7151 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Stick & Brush Accessories > Drum Stick & Brush Bags & Holders
622
+ 59 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Drum Sticks & Brushes
623
+ 7455 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Electronic Drum Modules
624
+ 7282 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Hand Percussion Accessories
625
+ 7283 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Hand Percussion Accessories > Hand Percussion Bags & Cases
626
+ 7284 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Hand Percussion Accessories > Hand Percussion Stands & Mounts
627
+ 4631 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Percussion Mallets
628
+ 7308 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Percussion Accessories > Percussion Stands
629
+ 61 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories
630
+ 3502 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories
631
+ 3775 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Acoustic Guitar Pickups
632
+ 5367 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Capos
633
+ 3412 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Electric Guitar Pickups
634
+ 3882 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Cases & Gig Bags
635
+ 503032 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Fittings & Parts
636
+ 3392 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Humidifiers
637
+ 4111 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Picks
638
+ 5368 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Slides
639
+ 3646 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Stands
640
+ 499688 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Straps
641
+ 503721 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar String Winders
642
+ 3178 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Strings
643
+ 3176 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Guitar Accessories > Guitar Tuning Pegs
644
+ 503033 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories
645
+ 8209 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Bow Cases
646
+ 503040 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Bows
647
+ 503039 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Cases
648
+ 503038 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Fittings & Parts
649
+ 503037 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Mutes
650
+ 503036 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Pickups
651
+ 503035 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Stands
652
+ 503034 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > Orchestral String Instrument Accessories > Orchestral String Instrument Strings
653
+ 4806 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > String Instrument Care & Cleaning
654
+ 3374 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > String Instrument Care & Cleaning > Bow Rosin
655
+ 4911 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > String Instrument Care & Cleaning > String Instrument Cleaning Cloths
656
+ 4912 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > String Instrument Accessories > String Instrument Care & Cleaning > String Instrument Polish
657
+ 62 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories
658
+ 4790 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories
659
+ 4809 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Care & Cleaning
660
+ 4815 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Care & Cleaning > Bassoon Swabs
661
+ 4810 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Cases & Gigbags
662
+ 4811 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Parts
663
+ 4816 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Parts > Bassoon Bocals
664
+ 4817 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Parts > Bassoon Small Parts
665
+ 4812 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Reeds
666
+ 4813 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Stands
667
+ 4814 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Bassoon Accessories > Bassoon Straps & Supports
668
+ 4791 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories
669
+ 4818 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Care & Cleaning
670
+ 4826 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Care & Cleaning > Clarinet Care Kits
671
+ 4827 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Care & Cleaning > Clarinet Pad Savers
672
+ 4828 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Care & Cleaning > Clarinet Swabs
673
+ 4819 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Cases & Gigbags
674
+ 4820 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Ligatures & Caps
675
+ 4822 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Parts
676
+ 4829 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Parts > Clarinet Barrels
677
+ 4830 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Parts > Clarinet Bells
678
+ 4831 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Parts > Clarinet Mouthpieces
679
+ 4832 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Parts > Clarinet Small Parts
680
+ 4823 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Pegs & Stands
681
+ 4824 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Reeds
682
+ 4825 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Clarinet Accessories > Clarinet Straps & Supports
683
+ 4792 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories
684
+ 4833 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Care & Cleaning
685
+ 4838 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Care & Cleaning > Flute Care Kits
686
+ 4839 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Care & Cleaning > Flute Cleaning Rods
687
+ 4840 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Care & Cleaning > Flute Swabs
688
+ 4834 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Cases & Gigbags
689
+ 4836 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Parts
690
+ 4841 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Parts > Flute Headjoints
691
+ 4842 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Parts > Flute Small Parts
692
+ 4837 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Flute Accessories > Flute Pegs & Stands
693
+ 4955 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Harmonica Accessories
694
+ 4956 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Harmonica Accessories > Harmonica Cases
695
+ 5046 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Harmonica Accessories > Harmonica Holders
696
+ 4793 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories
697
+ 4843 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Care & Cleaning
698
+ 4849 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Care & Cleaning > Oboe Care Kits
699
+ 4850 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Care & Cleaning > Oboe Swabs
700
+ 4844 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Cases & Gigbags
701
+ 4845 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Parts
702
+ 4851 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Parts > Oboe Small Parts
703
+ 4846 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Pegs & Stands
704
+ 4847 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Reeds
705
+ 4848 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Oboe & English Horn Accessories > Oboe Straps & Supports
706
+ 503747 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Recorder Accessories
707
+ 503749 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Recorder Accessories > Recorder Care & Cleaning
708
+ 503748 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Recorder Accessories > Recorder Cases
709
+ 503750 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Recorder Accessories > Recorder Parts
710
+ 4794 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories
711
+ 4852 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Care & Cleaning
712
+ 4860 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Care & Cleaning > Saxophone Care Kits
713
+ 4861 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Care & Cleaning > Saxophone Pad Savers
714
+ 4862 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Care & Cleaning > Saxophone Swabs
715
+ 4853 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Cases & Gigbags
716
+ 4854 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Ligatures & Caps
717
+ 4856 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Parts
718
+ 4863 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Parts > Saxophone Mouthpieces
719
+ 4864 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Parts > Saxophone Necks
720
+ 4865 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Parts > Saxophone Small Parts
721
+ 4857 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Pegs & Stands
722
+ 4858 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Reeds
723
+ 4859 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Saxophone Accessories > Saxophone Straps & Supports
724
+ 4866 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Woodwind Cork Grease
725
+ 4867 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Woodwind Polishing Cloths
726
+ 4957 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Woodwind Reed Cases
727
+ 4939 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instrument & Orchestra Accessories > Woodwind Instrument Accessories > Woodwind Reed Knives
728
+ 54 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments
729
+ 4983 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Accordions & Concertinas
730
+ 4984 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Bagpipes
731
+ 63 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Brass Instruments
732
+ 505769 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Brass Instruments > Alto & Baritone Horns
733
+ 65 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Brass Instruments > Euphoniums
734
+ 67 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Brass Instruments > French Horns
735
+ 70 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Brass Instruments > Trombones
736
+ 505770 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Brass Instruments > Trumpets & Cornets
737
+ 72 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Brass Instruments > Tubas
738
+ 6001 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Electronic Musical Instruments
739
+ 245 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Electronic Musical Instruments > Audio Samplers
740
+ 6002 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Electronic Musical Instruments > MIDI Controllers
741
+ 74 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Electronic Musical Instruments > Musical Keyboards
742
+ 6003 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Electronic Musical Instruments > Sound Synthesizers
743
+ 75 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion
744
+ 2917 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Bass Drums
745
+ 3043 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Cymbals
746
+ 2518 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Drum Kits
747
+ 2856 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Electronic Drums
748
+ 7431 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Glockenspiels & Xylophones
749
+ 6098 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Gongs
750
+ 7285 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion
751
+ 7289 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Claves & Castanets
752
+ 7288 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Finger & Hand Cymbals
753
+ 7555 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Bells & Chimes
754
+ 7295 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums
755
+ 7298 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums > Bongos
756
+ 7297 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums > Cajons
757
+ 7296 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums > Congas
758
+ 7300 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums > Frame Drums
759
+ 7299 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums > Goblet Drums
760
+ 7302 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums > Tablas
761
+ 7301 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Hand Drums > Talking Drums
762
+ 7291 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Musical Blocks
763
+ 7293 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Musical Cowbells
764
+ 7286 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Musical Scrapers & Ratchets
765
+ 7287 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Musical Shakers
766
+ 7290 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Musical Triangles
767
+ 2515 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Tambourines
768
+ 7294 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hand Percussion > Vibraslaps
769
+ 3015 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Hi-Hats
770
+ 7232 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Practice Pads
771
+ 2797 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Snare Drums
772
+ 3005 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Percussion > Tom-Toms
773
+ 76 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Pianos
774
+ 77 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > String Instruments
775
+ 79 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > String Instruments > Cellos
776
+ 80 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > String Instruments > Guitars
777
+ 84 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > String Instruments > Harps
778
+ 78 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > String Instruments > Upright Basses
779
+ 85 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > String Instruments > Violas
780
+ 86 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > String Instruments > Violins
781
+ 87 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds
782
+ 4540 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Bassoons
783
+ 88 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Clarinets
784
+ 89 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Flutes
785
+ 7188 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Flutophones
786
+ 4743 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Harmonicas
787
+ 4744 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Jew's Harps
788
+ 5481 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Melodicas
789
+ 7250 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Musical Pipes
790
+ 4541 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Oboes & English Horns
791
+ 7249 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Ocarinas
792
+ 90 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Recorders
793
+ 91 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Saxophones
794
+ 6721 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Tin Whistles
795
+ 6728 - Arts & Entertainment > Hobbies & Creative Arts > Musical Instruments > Woodwinds > Train Whistles
796
+ 5709 - Arts & Entertainment > Party & Celebration
797
+ 2559 - Arts & Entertainment > Party & Celebration > Gift Giving
798
+ 6100 - Arts & Entertainment > Party & Celebration > Gift Giving > Corsage & Boutonnière Pins
799
+ 5916 - Arts & Entertainment > Party & Celebration > Gift Giving > Corsages & Boutonnières
800
+ 2899 - Arts & Entertainment > Party & Celebration > Gift Giving > Fresh Cut Flowers
801
+ 53 - Arts & Entertainment > Party & Celebration > Gift Giving > Gift Cards & Certificates
802
+ 94 - Arts & Entertainment > Party & Celebration > Gift Giving > Gift Wrapping
803
+ 5838 - Arts & Entertainment > Party & Celebration > Gift Giving > Gift Wrapping > Gift Bags
804
+ 5091 - Arts & Entertainment > Party & Celebration > Gift Giving > Gift Wrapping > Gift Boxes & Tins
805
+ 8213 - Arts & Entertainment > Party & Celebration > Gift Giving > Gift Wrapping > Gift Tags & Labels
806
+ 6712 - Arts & Entertainment > Party & Celebration > Gift Giving > Gift Wrapping > Tissue Paper
807
+ 2816 - Arts & Entertainment > Party & Celebration > Gift Giving > Gift Wrapping > Wrapping Paper
808
+ 95 - Arts & Entertainment > Party & Celebration > Gift Giving > Greeting & Note Cards
809
+ 96 - Arts & Entertainment > Party & Celebration > Party Supplies
810
+ 328061 - Arts & Entertainment > Party & Celebration > Party Supplies > Advice Cards
811
+ 6311 - Arts & Entertainment > Party & Celebration > Party Supplies > Balloon Kits
812
+ 2587 - Arts & Entertainment > Party & Celebration > Party Supplies > Balloons
813
+ 2531 - Arts & Entertainment > Party & Celebration > Party Supplies > Banners
814
+ 4730 - Arts & Entertainment > Party & Celebration > Party Supplies > Birthday Candles
815
+ 505763 - Arts & Entertainment > Party & Celebration > Party Supplies > Chair Sashes
816
+ 7007 - Arts & Entertainment > Party & Celebration > Party Supplies > Cocktail Decorations
817
+ 2781 - Arts & Entertainment > Party & Celebration > Party Supplies > Confetti
818
+ 8216 - Arts & Entertainment > Party & Celebration > Party Supplies > Decorative Pom-Poms
819
+ 3735 - Arts & Entertainment > Party & Celebration > Party Supplies > Drinking Games
820
+ 3361 - Arts & Entertainment > Party & Celebration > Party Supplies > Drinking Games > Beer Pong
821
+ 3440 - Arts & Entertainment > Party & Celebration > Party Supplies > Drinking Games > Beer Pong > Beer Pong Tables
822
+ 5043 - Arts & Entertainment > Party & Celebration > Party Supplies > Drinking Straws & Stirrers
823
+ 1484 - Arts & Entertainment > Party & Celebration > Party Supplies > Envelope Seals
824
+ 8038 - Arts & Entertainment > Party & Celebration > Party Supplies > Event Programs
825
+ 4914 - Arts & Entertainment > Party & Celebration > Party Supplies > Fireworks & Firecrackers
826
+ 8110 - Arts & Entertainment > Party & Celebration > Party Supplies > Inflatable Party Decorations
827
+ 1371 - Arts & Entertainment > Party & Celebration > Party Supplies > Invitations
828
+ 2783 - Arts & Entertainment > Party & Celebration > Party Supplies > Noisemakers & Party Blowers
829
+ 5452 - Arts & Entertainment > Party & Celebration > Party Supplies > Party Favors
830
+ 5453 - Arts & Entertainment > Party & Celebration > Party Supplies > Party Favors > Wedding Favors
831
+ 7160 - Arts & Entertainment > Party & Celebration > Party Supplies > Party Games
832
+ 6906 - Arts & Entertainment > Party & Celebration > Party Supplies > Party Hats
833
+ 502981 - Arts & Entertainment > Party & Celebration > Party Supplies > Party Streamers & Curtains
834
+ 502972 - Arts & Entertainment > Party & Celebration > Party Supplies > Party Supply Kits
835
+ 3994 - Arts & Entertainment > Party & Celebration > Party Supplies > Piñatas
836
+ 5472 - Arts & Entertainment > Party & Celebration > Party Supplies > Place Card Holders
837
+ 2104 - Arts & Entertainment > Party & Celebration > Party Supplies > Place Cards
838
+ 1887 - Arts & Entertainment > Party & Celebration > Party Supplies > Response Cards
839
+ 4915 - Arts & Entertainment > Party & Celebration > Party Supplies > Sparklers
840
+ 7097 - Arts & Entertainment > Party & Celebration > Party Supplies > Special Occasion Card Boxes & Holders
841
+ 4351 - Arts & Entertainment > Party & Celebration > Party Supplies > Spray String
842
+ 408 - Arts & Entertainment > Party & Celebration > Special Effects
843
+ 5711 - Arts & Entertainment > Party & Celebration > Special Effects > Disco Balls
844
+ 409 - Arts & Entertainment > Party & Celebration > Special Effects > Fog Machines
845
+ 5967 - Arts & Entertainment > Party & Celebration > Special Effects > Special Effects Controllers
846
+ 503028 - Arts & Entertainment > Party & Celebration > Special Effects > Special Effects Light Stands
847
+ 410 - Arts & Entertainment > Party & Celebration > Special Effects > Special Effects Lighting
848
+ 5868 - Arts & Entertainment > Party & Celebration > Trophies & Awards
849
+ 543656 - Arts & Entertainment > Party & Celebration > Trophies & Awards > Award Certificates
850
+ 543655 - Arts & Entertainment > Party & Celebration > Trophies & Awards > Award Pins & Medals
851
+ 543657 - Arts & Entertainment > Party & Celebration > Trophies & Awards > Award Plaques
852
+ 543654 - Arts & Entertainment > Party & Celebration > Trophies & Awards > Award Ribbons
853
+ 543653 - Arts & Entertainment > Party & Celebration > Trophies & Awards > Trophies
854
+ 537 - Baby & Toddler
855
+ 4678 - Baby & Toddler > Baby Bathing
856
+ 4679 - Baby & Toddler > Baby Bathing > Baby Bathtubs & Bath Seats
857
+ 7082 - Baby & Toddler > Baby Bathing > Shower Visors
858
+ 5859 - Baby & Toddler > Baby Gift Sets
859
+ 5252 - Baby & Toddler > Baby Health
860
+ 6290 - Baby & Toddler > Baby Health > Baby Health & Grooming Kits
861
+ 5253 - Baby & Toddler > Baby Health > Nasal Aspirators
862
+ 7016 - Baby & Toddler > Baby Health > Pacifier Clips & Holders
863
+ 7309 - Baby & Toddler > Baby Health > Pacifier Wipes
864
+ 566 - Baby & Toddler > Baby Health > Pacifiers & Teethers
865
+ 540 - Baby & Toddler > Baby Safety
866
+ 6869 - Baby & Toddler > Baby Safety > Baby & Pet Gate Accessories
867
+ 542 - Baby & Toddler > Baby Safety > Baby & Pet Gates
868
+ 541 - Baby & Toddler > Baby Safety > Baby Monitors
869
+ 5049 - Baby & Toddler > Baby Safety > Baby Safety Harnesses & Leashes
870
+ 543 - Baby & Toddler > Baby Safety > Baby Safety Locks & Guards
871
+ 544 - Baby & Toddler > Baby Safety > Baby Safety Rails
872
+ 2847 - Baby & Toddler > Baby Toys & Activity Equipment
873
+ 3661 - Baby & Toddler > Baby Toys & Activity Equipment > Alphabet Toys
874
+ 7198 - Baby & Toddler > Baby Toys & Activity Equipment > Baby Activity Toys
875
+ 555 - Baby & Toddler > Baby Toys & Activity Equipment > Baby Bouncers & Rockers
876
+ 560 - Baby & Toddler > Baby Toys & Activity Equipment > Baby Jumpers & Swings
877
+ 7191 - Baby & Toddler > Baby Toys & Activity Equipment > Baby Mobile Accessories
878
+ 1242 - Baby & Toddler > Baby Toys & Activity Equipment > Baby Mobiles
879
+ 7360 - Baby & Toddler > Baby Toys & Activity Equipment > Baby Soothers
880
+ 1241 - Baby & Toddler > Baby Toys & Activity Equipment > Baby Walkers & Entertainers
881
+ 1243 - Baby & Toddler > Baby Toys & Activity Equipment > Play Mats & Gyms
882
+ 543613 - Baby & Toddler > Baby Toys & Activity Equipment > Play Mats & Gyms > Play Gyms
883
+ 543612 - Baby & Toddler > Baby Toys & Activity Equipment > Play Mats & Gyms > Play Mats
884
+ 539 - Baby & Toddler > Baby Toys & Activity Equipment > Play Yards
885
+ 3459 - Baby & Toddler > Baby Toys & Activity Equipment > Push & Pull Toys
886
+ 1244 - Baby & Toddler > Baby Toys & Activity Equipment > Rattles
887
+ 3860 - Baby & Toddler > Baby Toys & Activity Equipment > Sorting & Stacking Toys
888
+ 2764 - Baby & Toddler > Baby Transport
889
+ 547 - Baby & Toddler > Baby Transport > Baby & Toddler Car Seats
890
+ 538 - Baby & Toddler > Baby Transport > Baby Carriers
891
+ 568 - Baby & Toddler > Baby Transport > Baby Strollers
892
+ 4386 - Baby & Toddler > Baby Transport Accessories
893
+ 4486 - Baby & Toddler > Baby Transport Accessories > Baby & Toddler Car Seat Accessories
894
+ 4916 - Baby & Toddler > Baby Transport Accessories > Baby Carrier Accessories
895
+ 4387 - Baby & Toddler > Baby Transport Accessories > Baby Stroller Accessories
896
+ 8537 - Baby & Toddler > Baby Transport Accessories > Baby Transport Liners & Sacks
897
+ 5845 - Baby & Toddler > Baby Transport Accessories > Shopping Cart & High Chair Covers
898
+ 548 - Baby & Toddler > Diapering
899
+ 7200 - Baby & Toddler > Diapering > Baby Wipe Dispensers & Warmers
900
+ 553 - Baby & Toddler > Diapering > Baby Wipes
901
+ 502999 - Baby & Toddler > Diapering > Changing Mat & Tray Covers
902
+ 5628 - Baby & Toddler > Diapering > Changing Mats & Trays
903
+ 7014 - Baby & Toddler > Diapering > Diaper Kits
904
+ 6949 - Baby & Toddler > Diapering > Diaper Liners
905
+ 6883 - Baby & Toddler > Diapering > Diaper Organizers
906
+ 7001 - Baby & Toddler > Diapering > Diaper Pail Accessories
907
+ 550 - Baby & Toddler > Diapering > Diaper Pails
908
+ 2949 - Baby & Toddler > Diapering > Diaper Rash Treatments
909
+ 6971 - Baby & Toddler > Diapering > Diaper Wet Bags
910
+ 551 - Baby & Toddler > Diapering > Diapers
911
+ 561 - Baby & Toddler > Nursing & Feeding
912
+ 562 - Baby & Toddler > Nursing & Feeding > Baby & Toddler Food
913
+ 5721 - Baby & Toddler > Nursing & Feeding > Baby & Toddler Food > Baby Cereal
914
+ 5718 - Baby & Toddler > Nursing & Feeding > Baby & Toddler Food > Baby Drinks
915
+ 5719 - Baby & Toddler > Nursing & Feeding > Baby & Toddler Food > Baby Food
916
+ 563 - Baby & Toddler > Nursing & Feeding > Baby & Toddler Food > Baby Formula
917
+ 5720 - Baby & Toddler > Nursing & Feeding > Baby & Toddler Food > Baby Snacks
918
+ 8436 - Baby & Toddler > Nursing & Feeding > Baby & Toddler Food > Toddler Nutrition Drinks & Shakes
919
+ 5630 - Baby & Toddler > Nursing & Feeding > Baby Bottle Nipples & Liners
920
+ 543637 - Baby & Toddler > Nursing & Feeding > Baby Bottle Nipples & Liners > Baby Bottle Liners
921
+ 543636 - Baby & Toddler > Nursing & Feeding > Baby Bottle Nipples & Liners > Baby Bottle Nipples
922
+ 564 - Baby & Toddler > Nursing & Feeding > Baby Bottles
923
+ 4768 - Baby & Toddler > Nursing & Feeding > Baby Care Timers
924
+ 2125 - Baby & Toddler > Nursing & Feeding > Bibs
925
+ 5296 - Baby & Toddler > Nursing & Feeding > Bottle Warmers & Sterilizers
926
+ 7234 - Baby & Toddler > Nursing & Feeding > Breast Milk Storage Containers
927
+ 505366 - Baby & Toddler > Nursing & Feeding > Breast Pump Accessories
928
+ 565 - Baby & Toddler > Nursing & Feeding > Breast Pumps
929
+ 5629 - Baby & Toddler > Nursing & Feeding > Burp Cloths
930
+ 5843 - Baby & Toddler > Nursing & Feeding > Nursing Covers
931
+ 503762 - Baby & Toddler > Nursing & Feeding > Nursing Pads & Shields
932
+ 8075 - Baby & Toddler > Nursing & Feeding > Nursing Pillow Covers
933
+ 5298 - Baby & Toddler > Nursing & Feeding > Nursing Pillows
934
+ 6950 - Baby & Toddler > Nursing & Feeding > Sippy Cups
935
+ 6952 - Baby & Toddler > Potty Training
936
+ 552 - Baby & Toddler > Potty Training > Potty Seats
937
+ 6953 - Baby & Toddler > Potty Training > Potty Training Kits
938
+ 6899 - Baby & Toddler > Swaddling & Receiving Blankets
939
+ 543664 - Baby & Toddler > Swaddling & Receiving Blankets > Receiving Blankets
940
+ 543665 - Baby & Toddler > Swaddling & Receiving Blankets > Swaddling Blankets
941
+ 111 - Business & Industrial
942
+ 5863 - Business & Industrial > Advertising & Marketing
943
+ 5884 - Business & Industrial > Advertising & Marketing > Brochures
944
+ 5864 - Business & Industrial > Advertising & Marketing > Trade Show Counters
945
+ 5865 - Business & Industrial > Advertising & Marketing > Trade Show Displays
946
+ 112 - Business & Industrial > Agriculture
947
+ 6991 - Business & Industrial > Agriculture > Animal Husbandry
948
+ 499997 - Business & Industrial > Agriculture > Animal Husbandry > Egg Incubators
949
+ 505821 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Feed
950
+ 543545 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Feed > Cattle Feed
951
+ 543544 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Feed > Chicken Feed
952
+ 543547 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Feed > Goat & Sheep Feed
953
+ 543548 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Feed > Mixed Herd Feed
954
+ 543546 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Feed > Pig Feed
955
+ 6990 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Feeders & Waterers
956
+ 499946 - Business & Industrial > Agriculture > Animal Husbandry > Livestock Halters
957
+ 7261 - Business & Industrial > Automation Control Components
958
+ 7263 - Business & Industrial > Automation Control Components > Programmable Logic Controllers
959
+ 7262 - Business & Industrial > Automation Control Components > Variable Frequency & Adjustable Speed Drives
960
+ 114 - Business & Industrial > Construction
961
+ 134 - Business & Industrial > Construction > Surveying
962
+ 8278 - Business & Industrial > Construction > Traffic Cones & Barrels
963
+ 7497 - Business & Industrial > Dentistry
964
+ 7500 - Business & Industrial > Dentistry > Dental Cement
965
+ 7499 - Business & Industrial > Dentistry > Dental Tools
966
+ 8490 - Business & Industrial > Dentistry > Dental Tools > Dappen Dishes
967
+ 7498 - Business & Industrial > Dentistry > Dental Tools > Dental Mirrors
968
+ 7531 - Business & Industrial > Dentistry > Dental Tools > Dental Tool Sets
969
+ 8121 - Business & Industrial > Dentistry > Dental Tools > Prophy Cups
970
+ 8120 - Business & Industrial > Dentistry > Dental Tools > Prophy Heads
971
+ 8130 - Business & Industrial > Dentistry > Prophy Paste
972
+ 2155 - Business & Industrial > Film & Television
973
+ 1813 - Business & Industrial > Finance & Insurance
974
+ 7565 - Business & Industrial > Finance & Insurance > Bullion
975
+ 135 - Business & Industrial > Food Service
976
+ 7303 - Business & Industrial > Food Service > Bakery Boxes
977
+ 4217 - Business & Industrial > Food Service > Bus Tubs
978
+ 8532 - Business & Industrial > Food Service > Check Presenters
979
+ 5102 - Business & Industrial > Food Service > Concession Food Containers
980
+ 8059 - Business & Industrial > Food Service > Disposable Lids
981
+ 7088 - Business & Industrial > Food Service > Disposable Serveware
982
+ 7089 - Business & Industrial > Food Service > Disposable Serveware > Disposable Serving Trays
983
+ 4632 - Business & Industrial > Food Service > Disposable Tableware
984
+ 5098 - Business & Industrial > Food Service > Disposable Tableware > Disposable Bowls
985
+ 5099 - Business & Industrial > Food Service > Disposable Tableware > Disposable Cups
986
+ 5100 - Business & Industrial > Food Service > Disposable Tableware > Disposable Cutlery
987
+ 5101 - Business & Industrial > Food Service > Disposable Tableware > Disposable Plates
988
+ 4096 - Business & Industrial > Food Service > Food Service Baskets
989
+ 4742 - Business & Industrial > Food Service > Food Service Carts
990
+ 6786 - Business & Industrial > Food Service > Food Washers & Dryers
991
+ 6517 - Business & Industrial > Food Service > Hot Dog Rollers
992
+ 7353 - Business & Industrial > Food Service > Ice Bins
993
+ 5104 - Business & Industrial > Food Service > Plate & Dish Warmers
994
+ 8533 - Business & Industrial > Food Service > Sneeze Guards
995
+ 5097 - Business & Industrial > Food Service > Take-Out Containers
996
+ 7553 - Business & Industrial > Food Service > Tilt Skillets
997
+ 137 - Business & Industrial > Food Service > Vending Machines
998
+ 1827 - Business & Industrial > Forestry & Logging
999
+ 7240 - Business & Industrial > Hairdressing & Cosmetology
1000
+ 505670 - Business & Industrial > Hairdressing & Cosmetology > Hairdressing Capes & Neck Covers
1001
+ 7242 - Business & Industrial > Hairdressing & Cosmetology > Pedicure Chairs
1002
+ 7241 - Business & Industrial > Hairdressing & Cosmetology > Salon Chairs
1003
+ 1795 - Business & Industrial > Heavy Machinery
1004
+ 2072 - Business & Industrial > Heavy Machinery > Chippers
1005
+ 1475 - Business & Industrial > Hotel & Hospitality
1006
+ 5830 - Business & Industrial > Industrial Storage
1007
+ 5832 - Business & Industrial > Industrial Storage > Industrial Cabinets
1008
+ 5833 - Business & Industrial > Industrial Storage > Industrial Shelving
1009
+ 5831 - Business & Industrial > Industrial Storage > Shipping Containers
1010
+ 8274 - Business & Industrial > Industrial Storage > Wire Partitions, Enclosures & Doors
1011
+ 8025 - Business & Industrial > Industrial Storage Accessories
1012
+ 500086 - Business & Industrial > Janitorial Carts & Caddies
1013
+ 1556 - Business & Industrial > Law Enforcement
1014
+ 1906 - Business & Industrial > Law Enforcement > Cuffs
1015
+ 361 - Business & Industrial > Law Enforcement > Metal Detectors
1016
+ 1470 - Business & Industrial > Manufacturing
1017
+ 6987 - Business & Industrial > Material Handling
1018
+ 6988 - Business & Industrial > Material Handling > Conveyors
1019
+ 131 - Business & Industrial > Material Handling > Lifts & Hoists
1020
+ 503768 - Business & Industrial > Material Handling > Lifts & Hoists > Hoists, Cranes & Trolleys
1021
+ 503771 - Business & Industrial > Material Handling > Lifts & Hoists > Jacks & Lift Trucks
1022
+ 503767 - Business & Industrial > Material Handling > Lifts & Hoists > Personnel Lifts
1023
+ 503769 - Business & Industrial > Material Handling > Lifts & Hoists > Pulleys, Blocks & Sheaves
1024
+ 503772 - Business & Industrial > Material Handling > Lifts & Hoists > Winches
1025
+ 503011 - Business & Industrial > Material Handling > Pallets & Loading Platforms
1026
+ 2496 - Business & Industrial > Medical
1027
+ 6275 - Business & Industrial > Medical > Hospital Curtains
1028
+ 1898 - Business & Industrial > Medical > Hospital Gowns
1029
+ 6303 - Business & Industrial > Medical > Medical Bedding
1030
+ 3477 - Business & Industrial > Medical > Medical Equipment
1031
+ 3230 - Business & Industrial > Medical > Medical Equipment > Automated External Defibrillators
1032
+ 503006 - Business & Industrial > Medical > Medical Equipment > Gait Belts
1033
+ 6972 - Business & Industrial > Medical > Medical Equipment > Medical Reflex Hammers & Tuning Forks
1034
+ 499858 - Business & Industrial > Medical > Medical Equipment > Medical Stretchers & Gurneys
1035
+ 4245 - Business & Industrial > Medical > Medical Equipment > Otoscopes & Ophthalmoscopes
1036
+ 7522 - Business & Industrial > Medical > Medical Equipment > Patient Lifts
1037
+ 4364 - Business & Industrial > Medical > Medical Equipment > Stethoscopes
1038
+ 6714 - Business & Industrial > Medical > Medical Equipment > Vital Signs Monitor Accessories
1039
+ 6280 - Business & Industrial > Medical > Medical Equipment > Vital Signs Monitors
1040
+ 5167 - Business & Industrial > Medical > Medical Furniture
1041
+ 5168 - Business & Industrial > Medical > Medical Furniture > Chiropractic Tables
1042
+ 5169 - Business & Industrial > Medical > Medical Furniture > Examination Chairs & Tables
1043
+ 4435 - Business & Industrial > Medical > Medical Furniture > Homecare & Hospital Beds
1044
+ 5170 - Business & Industrial > Medical > Medical Furniture > Medical Cabinets
1045
+ 5171 - Business & Industrial > Medical > Medical Furniture > Medical Carts
1046
+ 5173 - Business & Industrial > Medical > Medical Furniture > Medical Carts > Crash Carts
1047
+ 5174 - Business & Industrial > Medical > Medical Furniture > Medical Carts > IV Poles & Carts
1048
+ 5172 - Business & Industrial > Medical > Medical Furniture > Surgical Tables
1049
+ 230913 - Business & Industrial > Medical > Medical Instruments
1050
+ 6281 - Business & Industrial > Medical > Medical Instruments > Medical Forceps
1051
+ 232166 - Business & Industrial > Medical > Medical Instruments > Scalpel Blades
1052
+ 8026 - Business & Industrial > Medical > Medical Instruments > Scalpels
1053
+ 499935 - Business & Industrial > Medical > Medical Instruments > Surgical Needles & Sutures
1054
+ 2907 - Business & Industrial > Medical > Medical Supplies
1055
+ 511 - Business & Industrial > Medical > Medical Supplies > Disposable Gloves
1056
+ 7063 - Business & Industrial > Medical > Medical Supplies > Finger Cots
1057
+ 499696 - Business & Industrial > Medical > Medical Supplies > Medical Needles & Syringes
1058
+ 543672 - Business & Industrial > Medical > Medical Supplies > Medical Needles & Syringes > Medical Needle & Syringe Sets
1059
+ 543670 - Business & Industrial > Medical > Medical Supplies > Medical Needles & Syringes > Medical Needles
1060
+ 543671 - Business & Industrial > Medical > Medical Supplies > Medical Needles & Syringes > Medical Syringes
1061
+ 505828 - Business & Industrial > Medical > Medical Supplies > Ostomy Supplies
1062
+ 7324 - Business & Industrial > Medical > Medical Supplies > Tongue Depressors
1063
+ 6490 - Business & Industrial > Medical > Medical Teaching Equipment
1064
+ 6491 - Business & Industrial > Medical > Medical Teaching Equipment > Medical & Emergency Response Training Mannequins
1065
+ 5602 - Business & Industrial > Medical > Scrub Caps
1066
+ 2928 - Business & Industrial > Medical > Scrubs
1067
+ 1645 - Business & Industrial > Medical > Surgical Gowns
1068
+ 2187 - Business & Industrial > Mining & Quarrying
1069
+ 4285 - Business & Industrial > Piercing & Tattooing
1070
+ 4350 - Business & Industrial > Piercing & Tattooing > Piercing Supplies
1071
+ 4122 - Business & Industrial > Piercing & Tattooing > Piercing Supplies > Piercing Needles
1072
+ 4326 - Business & Industrial > Piercing & Tattooing > Tattooing Supplies
1073
+ 5853 - Business & Industrial > Piercing & Tattooing > Tattooing Supplies > Tattoo Cover-Ups
1074
+ 4215 - Business & Industrial > Piercing & Tattooing > Tattooing Supplies > Tattooing Inks
1075
+ 4379 - Business & Industrial > Piercing & Tattooing > Tattooing Supplies > Tattooing Machines
1076
+ 4072 - Business & Industrial > Piercing & Tattooing > Tattooing Supplies > Tattooing Needles
1077
+ 138 - Business & Industrial > Retail
1078
+ 4244 - Business & Industrial > Retail > Clothing Display Racks
1079
+ 3803 - Business & Industrial > Retail > Display Mannequins
1080
+ 7128 - Business & Industrial > Retail > Mannequin Parts
1081
+ 4181 - Business & Industrial > Retail > Money Handling
1082
+ 4290 - Business & Industrial > Retail > Money Handling > Banknote Verifiers
1083
+ 505825 - Business & Industrial > Retail > Money Handling > Cash Register & POS Terminal Accessories
1084
+ 4283 - Business & Industrial > Retail > Money Handling > Cash Register & POS Terminal Accessories > Cash Drawers & Trays
1085
+ 505808 - Business & Industrial > Retail > Money Handling > Cash Register & POS Terminal Accessories > Credit Card Terminals
1086
+ 5310 - Business & Industrial > Retail > Money Handling > Cash Register & POS Terminal Accessories > Signature Capture Pads
1087
+ 505824 - Business & Industrial > Retail > Money Handling > Cash Registers & POS Terminals
1088
+ 543647 - Business & Industrial > Retail > Money Handling > Cash Registers & POS Terminals > Cash Registers
1089
+ 543648 - Business & Industrial > Retail > Money Handling > Cash Registers & POS Terminals > POS Terminals
1090
+ 4151 - Business & Industrial > Retail > Money Handling > Coin & Bill Counters
1091
+ 3273 - Business & Industrial > Retail > Money Handling > Money Changers
1092
+ 4329 - Business & Industrial > Retail > Money Handling > Money Deposit Bags
1093
+ 4055 - Business & Industrial > Retail > Money Handling > Paper Coin Wrappers & Bill Straps
1094
+ 1837 - Business & Industrial > Retail > Paper & Plastic Shopping Bags
1095
+ 4127 - Business & Industrial > Retail > Pricing Guns
1096
+ 4160 - Business & Industrial > Retail > Retail Display Cases
1097
+ 499897 - Business & Industrial > Retail > Retail Display Props & Models
1098
+ 1624 - Business & Industrial > Science & Laboratory
1099
+ 6975 - Business & Industrial > Science & Laboratory > Biochemicals
1100
+ 7325 - Business & Industrial > Science & Laboratory > Dissection Kits
1101
+ 3002 - Business & Industrial > Science & Laboratory > Laboratory Chemicals
1102
+ 4335 - Business & Industrial > Science & Laboratory > Laboratory Equipment
1103
+ 4116 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Autoclaves
1104
+ 4336 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Centrifuges
1105
+ 7218 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Dry Ice Makers
1106
+ 500057 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Freeze-Drying Machines
1107
+ 4474 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Laboratory Blenders
1108
+ 500114 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Laboratory Freezers
1109
+ 503722 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Laboratory Funnels
1110
+ 4133 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Laboratory Hot Plates
1111
+ 4231 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Laboratory Ovens
1112
+ 4555 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microscope Accessories
1113
+ 4557 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microscope Accessories > Microscope Cameras
1114
+ 4556 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microscope Accessories > Microscope Eyepieces & Adapters
1115
+ 4665 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microscope Accessories > Microscope Objective Lenses
1116
+ 4664 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microscope Accessories > Microscope Replacement Bulbs
1117
+ 4558 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microscope Accessories > Microscope Slides
1118
+ 158 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microscopes
1119
+ 7437 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Microtomes
1120
+ 7468 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Spectrometer Accessories
1121
+ 7393 - Business & Industrial > Science & Laboratory > Laboratory Equipment > Spectrometers
1122
+ 8119 - Business & Industrial > Science & Laboratory > Laboratory Specimens
1123
+ 4255 - Business & Industrial > Science & Laboratory > Laboratory Supplies
1124
+ 4310 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Beakers
1125
+ 4061 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Graduated Cylinders
1126
+ 4036 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Laboratory Flasks
1127
+ 4276 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Petri Dishes
1128
+ 4075 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Pipettes
1129
+ 4155 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Test Tube Racks
1130
+ 4306 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Test Tubes
1131
+ 4140 - Business & Industrial > Science & Laboratory > Laboratory Supplies > Wash Bottles
1132
+ 976 - Business & Industrial > Signage
1133
+ 7322 - Business & Industrial > Signage > Business Hour Signs
1134
+ 8155 - Business & Industrial > Signage > Digital Signs
1135
+ 4297 - Business & Industrial > Signage > Electric Signs
1136
+ 4131 - Business & Industrial > Signage > Electric Signs > LED Signs
1137
+ 4070 - Business & Industrial > Signage > Electric Signs > Neon Signs
1138
+ 5894 - Business & Industrial > Signage > Emergency & Exit Signs
1139
+ 5897 - Business & Industrial > Signage > Facility Identification Signs
1140
+ 7323 - Business & Industrial > Signage > Open & Closed Signs
1141
+ 5896 - Business & Industrial > Signage > Parking Signs & Permits
1142
+ 5900 - Business & Industrial > Signage > Policy Signs
1143
+ 5898 - Business & Industrial > Signage > Retail & Sale Signs
1144
+ 5895 - Business & Industrial > Signage > Road & Traffic Signs
1145
+ 5892 - Business & Industrial > Signage > Safety & Warning Signs
1146
+ 5893 - Business & Industrial > Signage > Security Signs
1147
+ 5899 - Business & Industrial > Signage > Sidewalk & Yard Signs
1148
+ 2047 - Business & Industrial > Work Safety Protective Gear
1149
+ 2389 - Business & Industrial > Work Safety Protective Gear > Bullet Proof Vests
1150
+ 8269 - Business & Industrial > Work Safety Protective Gear > Gas Mask & Respirator Accessories
1151
+ 2723 - Business & Industrial > Work Safety Protective Gear > Hardhats
1152
+ 2808 - Business & Industrial > Work Safety Protective Gear > Hazardous Material Suits
1153
+ 6764 - Business & Industrial > Work Safety Protective Gear > Protective Aprons
1154
+ 2227 - Business & Industrial > Work Safety Protective Gear > Protective Eyewear
1155
+ 503724 - Business & Industrial > Work Safety Protective Gear > Protective Masks
1156
+ 7407 - Business & Industrial > Work Safety Protective Gear > Protective Masks > Dust Masks
1157
+ 2349 - Business & Industrial > Work Safety Protective Gear > Protective Masks > Fireman's Masks
1158
+ 2473 - Business & Industrial > Work Safety Protective Gear > Protective Masks > Gas Masks & Respirators
1159
+ 513 - Business & Industrial > Work Safety Protective Gear > Protective Masks > Medical Masks
1160
+ 5591 - Business & Industrial > Work Safety Protective Gear > Safety Gloves
1161
+ 499961 - Business & Industrial > Work Safety Protective Gear > Safety Knee Pads
1162
+ 499927 - Business & Industrial > Work Safety Protective Gear > Welding Helmets
1163
+ 499708 - Business & Industrial > Work Safety Protective Gear > Work Safety Harnesses
1164
+ 7085 - Business & Industrial > Work Safety Protective Gear > Work Safety Tethers
1165
+ 141 - Cameras & Optics
1166
+ 2096 - Cameras & Optics > Camera & Optic Accessories
1167
+ 463625 - Cameras & Optics > Camera & Optic Accessories > Camera & Optic Replacement Cables
1168
+ 149 - Cameras & Optics > Camera & Optic Accessories > Camera & Video Camera Lenses
1169
+ 4432 - Cameras & Optics > Camera & Optic Accessories > Camera & Video Camera Lenses > Camera Lenses
1170
+ 5346 - Cameras & Optics > Camera & Optic Accessories > Camera & Video Camera Lenses > Surveillance Camera Lenses
1171
+ 5280 - Cameras & Optics > Camera & Optic Accessories > Camera & Video Camera Lenses > Video Camera Lenses
1172
+ 2911 - Cameras & Optics > Camera & Optic Accessories > Camera Lens Accessories
1173
+ 5588 - Cameras & Optics > Camera & Optic Accessories > Camera Lens Accessories > Lens & Filter Adapter Rings
1174
+ 4441 - Cameras & Optics > Camera & Optic Accessories > Camera Lens Accessories > Lens Bags
1175
+ 2829 - Cameras & Optics > Camera & Optic Accessories > Camera Lens Accessories > Lens Caps
1176
+ 4416 - Cameras & Optics > Camera & Optic Accessories > Camera Lens Accessories > Lens Converters
1177
+ 147 - Cameras & Optics > Camera & Optic Accessories > Camera Lens Accessories > Lens Filters
1178
+ 2627 - Cameras & Optics > Camera & Optic Accessories > Camera Lens Accessories > Lens Hoods
1179
+ 143 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories
1180
+ 8174 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Accessory Sets
1181
+ 6308 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Bags & Cases
1182
+ 296246 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Body Replacement Panels & Doors
1183
+ 298420 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Digital Backs
1184
+ 153 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Film
1185
+ 5479 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Flash Accessories
1186
+ 148 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Flashes
1187
+ 500104 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Focus Devices
1188
+ 461567 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Gears
1189
+ 500037 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Grips
1190
+ 296248 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Image Sensors
1191
+ 461568 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Lens Zoom Units
1192
+ 5532 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Remote Controls
1193
+ 296247 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Replacement Buttons & Knobs
1194
+ 296249 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Replacement Screens & Displays
1195
+ 503020 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Silencers & Sound Blimps
1196
+ 499998 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Stabilizers & Supports
1197
+ 5429 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Straps
1198
+ 503019 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Camera Sun Hoods & Viewfinder Attachments
1199
+ 2987 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Flash Brackets
1200
+ 500107 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > On-Camera Monitors
1201
+ 5937 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Surveillance Camera Accessories
1202
+ 8535 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Underwater Camera Housing Accessories
1203
+ 6307 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Underwater Camera Housings
1204
+ 2394 - Cameras & Optics > Camera & Optic Accessories > Camera Parts & Accessories > Video Camera Lights
1205
+ 160 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories
1206
+ 5282 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories > Binocular & Monocular Accessories
1207
+ 5545 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories > Optics Bags & Cases
1208
+ 5283 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories > Rangefinder Accessories
1209
+ 5542 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories > Spotting Scope Accessories
1210
+ 5284 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories > Telescope Accessories
1211
+ 4274 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories > Thermal Optic Accessories
1212
+ 5543 - Cameras & Optics > Camera & Optic Accessories > Optic Accessories > Weapon Scope & Sight Accessories
1213
+ 4638 - Cameras & Optics > Camera & Optic Accessories > Tripod & Monopod Accessories
1214
+ 4640 - Cameras & Optics > Camera & Optic Accessories > Tripod & Monopod Accessories > Tripod & Monopod Cases
1215
+ 4639 - Cameras & Optics > Camera & Optic Accessories > Tripod & Monopod Accessories > Tripod & Monopod Heads
1216
+ 3035 - Cameras & Optics > Camera & Optic Accessories > Tripod & Monopod Accessories > Tripod Collars & Mounts
1217
+ 503726 - Cameras & Optics > Camera & Optic Accessories > Tripod & Monopod Accessories > Tripod Handles
1218
+ 503016 - Cameras & Optics > Camera & Optic Accessories > Tripod & Monopod Accessories > Tripod Spreaders
1219
+ 150 - Cameras & Optics > Camera & Optic Accessories > Tripods & Monopods
1220
+ 142 - Cameras & Optics > Cameras
1221
+ 499976 - Cameras & Optics > Cameras > Borescopes
1222
+ 152 - Cameras & Optics > Cameras > Digital Cameras
1223
+ 4024 - Cameras & Optics > Cameras > Disposable Cameras
1224
+ 154 - Cameras & Optics > Cameras > Film Cameras
1225
+ 362 - Cameras & Optics > Cameras > Surveillance Cameras
1226
+ 5402 - Cameras & Optics > Cameras > Trail Cameras
1227
+ 155 - Cameras & Optics > Cameras > Video Cameras
1228
+ 312 - Cameras & Optics > Cameras > Webcams
1229
+ 156 - Cameras & Optics > Optics
1230
+ 157 - Cameras & Optics > Optics > Binoculars
1231
+ 4164 - Cameras & Optics > Optics > Monoculars
1232
+ 161 - Cameras & Optics > Optics > Rangefinders
1233
+ 4040 - Cameras & Optics > Optics > Scopes
1234
+ 4136 - Cameras & Optics > Optics > Scopes > Spotting Scopes
1235
+ 165 - Cameras & Optics > Optics > Scopes > Telescopes
1236
+ 1695 - Cameras & Optics > Optics > Scopes > Weapon Scopes & Sights
1237
+ 39 - Cameras & Optics > Photography
1238
+ 41 - Cameras & Optics > Photography > Darkroom
1239
+ 2234 - Cameras & Optics > Photography > Darkroom > Developing & Processing Equipment
1240
+ 2625 - Cameras & Optics > Photography > Darkroom > Developing & Processing Equipment > Copystands
1241
+ 2999 - Cameras & Optics > Photography > Darkroom > Developing & Processing Equipment > Darkroom Sinks
1242
+ 2650 - Cameras & Optics > Photography > Darkroom > Developing & Processing Equipment > Developing Tanks & Reels
1243
+ 2728 - Cameras & Optics > Photography > Darkroom > Developing & Processing Equipment > Print Trays, Washers & Dryers
1244
+ 2516 - Cameras & Optics > Photography > Darkroom > Developing & Processing Equipment > Retouching Equipment & Supplies
1245
+ 2520 - Cameras & Optics > Photography > Darkroom > Enlarging Equipment
1246
+ 2969 - Cameras & Optics > Photography > Darkroom > Enlarging Equipment > Darkroom Easels
1247
+ 2543 - Cameras & Optics > Photography > Darkroom > Enlarging Equipment > Darkroom Timers
1248
+ 3029 - Cameras & Optics > Photography > Darkroom > Enlarging Equipment > Focusing Aids
1249
+ 2815 - Cameras & Optics > Photography > Darkroom > Enlarging Equipment > Photographic Analyzers
1250
+ 2698 - Cameras & Optics > Photography > Darkroom > Enlarging Equipment > Photographic Enlargers
1251
+ 1622 - Cameras & Optics > Photography > Darkroom > Photographic Chemicals
1252
+ 2804 - Cameras & Optics > Photography > Darkroom > Photographic Paper
1253
+ 2600 - Cameras & Optics > Photography > Darkroom > Safelights
1254
+ 42 - Cameras & Optics > Photography > Lighting & Studio
1255
+ 5499 - Cameras & Optics > Photography > Lighting & Studio > Light Meter Accessories
1256
+ 1548 - Cameras & Optics > Photography > Lighting & Studio > Light Meters
1257
+ 1611 - Cameras & Optics > Photography > Lighting & Studio > Studio Backgrounds
1258
+ 503018 - Cameras & Optics > Photography > Lighting & Studio > Studio Light & Flash Accessories
1259
+ 2475 - Cameras & Optics > Photography > Lighting & Studio > Studio Lighting Controls
1260
+ 3056 - Cameras & Optics > Photography > Lighting & Studio > Studio Lighting Controls > Flash Diffusers
1261
+ 5431 - Cameras & Optics > Photography > Lighting & Studio > Studio Lighting Controls > Flash Reflectors
1262
+ 2490 - Cameras & Optics > Photography > Lighting & Studio > Studio Lighting Controls > Lighting Filters & Gobos
1263
+ 5432 - Cameras & Optics > Photography > Lighting & Studio > Studio Lighting Controls > Softboxes
1264
+ 2926 - Cameras & Optics > Photography > Lighting & Studio > Studio Lights & Flashes
1265
+ 503017 - Cameras & Optics > Photography > Lighting & Studio > Studio Stand & Mount Accessories
1266
+ 2007 - Cameras & Optics > Photography > Lighting & Studio > Studio Stands & Mounts
1267
+ 503735 - Cameras & Optics > Photography > Photo Mounting Supplies
1268
+ 4368 - Cameras & Optics > Photography > Photo Negative & Slide Storage
1269
+ 222 - Electronics
1270
+ 3356 - Electronics > Arcade Equipment
1271
+ 8085 - Electronics > Arcade Equipment > Basketball Arcade Games
1272
+ 3946 - Electronics > Arcade Equipment > Pinball Machine Accessories
1273
+ 3140 - Electronics > Arcade Equipment > Pinball Machines
1274
+ 3681 - Electronics > Arcade Equipment > Skee-Ball Machines
1275
+ 3676 - Electronics > Arcade Equipment > Video Game Arcade Cabinet Accessories
1276
+ 3117 - Electronics > Arcade Equipment > Video Game Arcade Cabinets
1277
+ 223 - Electronics > Audio
1278
+ 1420 - Electronics > Audio > Audio Accessories
1279
+ 503008 - Electronics > Audio > Audio Accessories > Audio & Video Receiver Accessories
1280
+ 505797 - Electronics > Audio > Audio Accessories > Headphone & Headset Accessories
1281
+ 503004 - Electronics > Audio > Audio Accessories > Headphone & Headset Accessories > Headphone Cushions & Tips
1282
+ 5395 - Electronics > Audio > Audio Accessories > Karaoke System Accessories
1283
+ 5396 - Electronics > Audio > Audio Accessories > Karaoke System Accessories > Karaoke Chips
1284
+ 232 - Electronics > Audio > Audio Accessories > MP3 Player Accessories
1285
+ 7566 - Electronics > Audio > Audio Accessories > MP3 Player Accessories > MP3 Player & Mobile Phone Accessory Sets
1286
+ 3055 - Electronics > Audio > Audio Accessories > MP3 Player Accessories > MP3 Player Cases
1287
+ 3306 - Electronics > Audio > Audio Accessories > Microphone Accessories
1288
+ 3912 - Electronics > Audio > Audio Accessories > Microphone Stands
1289
+ 239 - Electronics > Audio > Audio Accessories > Satellite Radio Accessories
1290
+ 7163 - Electronics > Audio > Audio Accessories > Speaker Accessories
1291
+ 500112 - Electronics > Audio > Audio Accessories > Speaker Accessories > Speaker Bags, Covers & Cases
1292
+ 500120 - Electronics > Audio > Audio Accessories > Speaker Accessories > Speaker Components & Kits
1293
+ 8047 - Electronics > Audio > Audio Accessories > Speaker Accessories > Speaker Stand Bags
1294
+ 8049 - Electronics > Audio > Audio Accessories > Speaker Accessories > Speaker Stands & Mounts
1295
+ 500119 - Electronics > Audio > Audio Accessories > Speaker Accessories > Tactile Transducers
1296
+ 2372 - Electronics > Audio > Audio Accessories > Turntable Accessories
1297
+ 2165 - Electronics > Audio > Audio Components
1298
+ 241 - Electronics > Audio > Audio Components > Audio & Video Receivers
1299
+ 224 - Electronics > Audio > Audio Components > Audio Amplifiers
1300
+ 4493 - Electronics > Audio > Audio Components > Audio Amplifiers > Headphone Amplifiers
1301
+ 5381 - Electronics > Audio > Audio Components > Audio Amplifiers > Power Amplifiers
1302
+ 236 - Electronics > Audio > Audio Components > Audio Mixers
1303
+ 5129 - Electronics > Audio > Audio Components > Audio Transmitters
1304
+ 5130 - Electronics > Audio > Audio Components > Audio Transmitters > Bluetooth Transmitters
1305
+ 4035 - Electronics > Audio > Audio Components > Audio Transmitters > FM Transmitters
1306
+ 6545 - Electronics > Audio > Audio Components > Channel Strips
1307
+ 6546 - Electronics > Audio > Audio Components > Direct Boxes
1308
+ 505771 - Electronics > Audio > Audio Components > Headphones & Headsets
1309
+ 543626 - Electronics > Audio > Audio Components > Headphones & Headsets > Headphones
1310
+ 543627 - Electronics > Audio > Audio Components > Headphones & Headsets > Headsets
1311
+ 234 - Electronics > Audio > Audio Components > Microphones
1312
+ 246 - Electronics > Audio > Audio Components > Signal Processors
1313
+ 5435 - Electronics > Audio > Audio Components > Signal Processors > Crossovers
1314
+ 247 - Electronics > Audio > Audio Components > Signal Processors > Effects Processors
1315
+ 248 - Electronics > Audio > Audio Components > Signal Processors > Equalizers
1316
+ 5597 - Electronics > Audio > Audio Components > Signal Processors > Loudspeaker Management Systems
1317
+ 3945 - Electronics > Audio > Audio Components > Signal Processors > Microphone Preamps
1318
+ 5596 - Electronics > Audio > Audio Components > Signal Processors > Noise Gates & Compressors
1319
+ 5369 - Electronics > Audio > Audio Components > Signal Processors > Phono Preamps
1320
+ 249 - Electronics > Audio > Audio Components > Speakers
1321
+ 505298 - Electronics > Audio > Audio Components > Studio Recording Bundles
1322
+ 242 - Electronics > Audio > Audio Players & Recorders
1323
+ 225 - Electronics > Audio > Audio Players & Recorders > Boomboxes
1324
+ 226 - Electronics > Audio > Audio Players & Recorders > CD Players & Recorders
1325
+ 243 - Electronics > Audio > Audio Players & Recorders > Cassette Players & Recorders
1326
+ 252 - Electronics > Audio > Audio Players & Recorders > Home Theater Systems
1327
+ 4652 - Electronics > Audio > Audio Players & Recorders > Jukeboxes
1328
+ 230 - Electronics > Audio > Audio Players & Recorders > Karaoke Systems
1329
+ 233 - Electronics > Audio > Audio Players & Recorders > MP3 Players
1330
+ 235 - Electronics > Audio > Audio Players & Recorders > MiniDisc Players & Recorders
1331
+ 5434 - Electronics > Audio > Audio Players & Recorders > Multitrack Recorders
1332
+ 6886 - Electronics > Audio > Audio Players & Recorders > Radios
1333
+ 8271 - Electronics > Audio > Audio Players & Recorders > Reel-to-Reel Tape Players & Recorders
1334
+ 251 - Electronics > Audio > Audio Players & Recorders > Stereo Systems
1335
+ 256 - Electronics > Audio > Audio Players & Recorders > Turntables & Record Players
1336
+ 244 - Electronics > Audio > Audio Players & Recorders > Voice Recorders
1337
+ 8159 - Electronics > Audio > Bullhorns
1338
+ 4921 - Electronics > Audio > DJ & Specialty Audio
1339
+ 4922 - Electronics > Audio > DJ & Specialty Audio > DJ CD Players
1340
+ 4923 - Electronics > Audio > DJ & Specialty Audio > DJ Systems
1341
+ 2154 - Electronics > Audio > Public Address Systems
1342
+ 3727 - Electronics > Audio > Stage Equipment
1343
+ 3242 - Electronics > Audio > Stage Equipment > Wireless Transmitters
1344
+ 3702 - Electronics > Circuit Boards & Components
1345
+ 500027 - Electronics > Circuit Boards & Components > Circuit Board Accessories
1346
+ 7259 - Electronics > Circuit Boards & Components > Circuit Decoders & Encoders
1347
+ 3889 - Electronics > Circuit Boards & Components > Circuit Prototyping
1348
+ 4010 - Electronics > Circuit Boards & Components > Circuit Prototyping > Breadboards
1349
+ 7258 - Electronics > Circuit Boards & Components > Electronic Filters
1350
+ 3635 - Electronics > Circuit Boards & Components > Passive Circuit Components
1351
+ 3220 - Electronics > Circuit Boards & Components > Passive Circuit Components > Capacitors
1352
+ 7260 - Electronics > Circuit Boards & Components > Passive Circuit Components > Electronic Oscillators
1353
+ 3121 - Electronics > Circuit Boards & Components > Passive Circuit Components > Inductors
1354
+ 3424 - Electronics > Circuit Boards & Components > Passive Circuit Components > Resistors
1355
+ 7264 - Electronics > Circuit Boards & Components > Printed Circuit Boards
1356
+ 298419 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Camera Circuit Boards
1357
+ 499898 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Computer Circuit Boards
1358
+ 499899 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Computer Circuit Boards > Computer Inverter Boards
1359
+ 8546 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Computer Circuit Boards > Hard Drive Circuit Boards
1360
+ 289 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Computer Circuit Boards > Motherboards
1361
+ 3416 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Development Boards
1362
+ 499889 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Exercise Machine Circuit Boards
1363
+ 8545 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Household Appliance Circuit Boards
1364
+ 8549 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Pool & Spa Circuit Boards
1365
+ 8544 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Printer, Copier, & Fax Machine Circuit Boards
1366
+ 499675 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Scanner Circuit Boards
1367
+ 8516 - Electronics > Circuit Boards & Components > Printed Circuit Boards > Television Circuit Boards
1368
+ 3991 - Electronics > Circuit Boards & Components > Semiconductors
1369
+ 3632 - Electronics > Circuit Boards & Components > Semiconductors > Diodes
1370
+ 7257 - Electronics > Circuit Boards & Components > Semiconductors > Integrated Circuits & Chips
1371
+ 3949 - Electronics > Circuit Boards & Components > Semiconductors > Microcontrollers
1372
+ 3094 - Electronics > Circuit Boards & Components > Semiconductors > Transistors
1373
+ 262 - Electronics > Communications
1374
+ 266 - Electronics > Communications > Answering Machines
1375
+ 5275 - Electronics > Communications > Caller IDs
1376
+ 263 - Electronics > Communications > Communication Radio Accessories
1377
+ 2471 - Electronics > Communications > Communication Radios
1378
+ 2106 - Electronics > Communications > Communication Radios > CB Radios
1379
+ 4415 - Electronics > Communications > Communication Radios > Radio Scanners
1380
+ 273 - Electronics > Communications > Communication Radios > Two-Way Radios
1381
+ 5404 - Electronics > Communications > Intercom Accessories
1382
+ 360 - Electronics > Communications > Intercoms
1383
+ 268 - Electronics > Communications > Pagers
1384
+ 270 - Electronics > Communications > Telephony
1385
+ 4666 - Electronics > Communications > Telephony > Conference Phones
1386
+ 271 - Electronics > Communications > Telephony > Corded Phones
1387
+ 272 - Electronics > Communications > Telephony > Cordless Phones
1388
+ 264 - Electronics > Communications > Telephony > Mobile Phone Accessories
1389
+ 8111 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Camera Accessories
1390
+ 2353 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Cases
1391
+ 4550 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Charms & Straps
1392
+ 6030 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Pre-Paid Cards & SIM Cards
1393
+ 543515 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Pre-Paid Cards & SIM Cards > Mobile Phone Pre-Paid Cards
1394
+ 543516 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Pre-Paid Cards & SIM Cards > SIM Cards
1395
+ 7347 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Replacement Parts
1396
+ 5566 - Electronics > Communications > Telephony > Mobile Phone Accessories > Mobile Phone Stands
1397
+ 499916 - Electronics > Communications > Telephony > Mobile Phone Accessories > SIM Card Ejection Tools
1398
+ 267 - Electronics > Communications > Telephony > Mobile Phones
1399
+ 543513 - Electronics > Communications > Telephony > Mobile Phones > Contract Mobile Phones
1400
+ 543512 - Electronics > Communications > Telephony > Mobile Phones > Pre-paid Mobile Phones
1401
+ 543514 - Electronics > Communications > Telephony > Mobile Phones > Unlocked Mobile Phones
1402
+ 1924 - Electronics > Communications > Telephony > Satellite Phones
1403
+ 265 - Electronics > Communications > Telephony > Telephone Accessories
1404
+ 269 - Electronics > Communications > Telephony > Telephone Accessories > Phone Cards
1405
+ 274 - Electronics > Communications > Video Conferencing
1406
+ 1801 - Electronics > Components
1407
+ 7395 - Electronics > Components > Accelerometers
1408
+ 2182 - Electronics > Components > Converters
1409
+ 503001 - Electronics > Components > Converters > Audio Converters
1410
+ 2205 - Electronics > Components > Converters > Scan Converters
1411
+ 1977 - Electronics > Components > Electronics Component Connectors
1412
+ 1337 - Electronics > Components > Modulators
1413
+ 1544 - Electronics > Components > Splitters
1414
+ 278 - Electronics > Computers
1415
+ 5254 - Electronics > Computers > Barebone Computers
1416
+ 331 - Electronics > Computers > Computer Servers
1417
+ 325 - Electronics > Computers > Desktop Computers
1418
+ 298 - Electronics > Computers > Handheld Devices
1419
+ 5256 - Electronics > Computers > Handheld Devices > Data Collectors
1420
+ 3539 - Electronics > Computers > Handheld Devices > E-Book Readers
1421
+ 3769 - Electronics > Computers > Handheld Devices > PDAs
1422
+ 5255 - Electronics > Computers > Interactive Kiosks
1423
+ 328 - Electronics > Computers > Laptops
1424
+ 500002 - Electronics > Computers > Smart Glasses
1425
+ 4745 - Electronics > Computers > Tablet Computers
1426
+ 8539 - Electronics > Computers > Thin & Zero Clients
1427
+ 543668 - Electronics > Computers > Thin & Zero Clients > Thin Client Computers
1428
+ 543669 - Electronics > Computers > Thin & Zero Clients > Zero Client Computers
1429
+ 502995 - Electronics > Computers > Touch Table Computers
1430
+ 2082 - Electronics > Electronics Accessories
1431
+ 258 - Electronics > Electronics Accessories > Adapters
1432
+ 4463 - Electronics > Electronics Accessories > Adapters > Audio & Video Cable Adapters & Couplers
1433
+ 146 - Electronics > Electronics Accessories > Adapters > Memory Card Adapters
1434
+ 7182 - Electronics > Electronics Accessories > Adapters > USB Adapters
1435
+ 5476 - Electronics > Electronics Accessories > Antenna Accessories
1436
+ 5477 - Electronics > Electronics Accessories > Antenna Accessories > Antenna Mounts & Brackets
1437
+ 5478 - Electronics > Electronics Accessories > Antenna Accessories > Antenna Rotators
1438
+ 6016 - Electronics > Electronics Accessories > Antenna Accessories > Satellite LNBs
1439
+ 1718 - Electronics > Electronics Accessories > Antennas
1440
+ 8156 - Electronics > Electronics Accessories > Audio & Video Splitters & Switches
1441
+ 499944 - Electronics > Electronics Accessories > Audio & Video Splitters & Switches > DVI Splitters & Switches
1442
+ 8164 - Electronics > Electronics Accessories > Audio & Video Splitters & Switches > HDMI Splitters & Switches
1443
+ 499945 - Electronics > Electronics Accessories > Audio & Video Splitters & Switches > VGA Splitters & Switches
1444
+ 367 - Electronics > Electronics Accessories > Blank Media
1445
+ 3328 - Electronics > Electronics Accessories > Cable Management
1446
+ 3764 - Electronics > Electronics Accessories > Cable Management > Cable Clips
1447
+ 500036 - Electronics > Electronics Accessories > Cable Management > Cable Tie Guns
1448
+ 6402 - Electronics > Electronics Accessories > Cable Management > Cable Trays
1449
+ 5273 - Electronics > Electronics Accessories > Cable Management > Patch Panels
1450
+ 499686 - Electronics > Electronics Accessories > Cable Management > Wire & Cable Identification Markers
1451
+ 6780 - Electronics > Electronics Accessories > Cable Management > Wire & Cable Sleeves
1452
+ 4016 - Electronics > Electronics Accessories > Cable Management > Wire & Cable Ties
1453
+ 259 - Electronics > Electronics Accessories > Cables
1454
+ 1867 - Electronics > Electronics Accessories > Cables > Audio & Video Cables
1455
+ 3461 - Electronics > Electronics Accessories > Cables > KVM Cables
1456
+ 1480 - Electronics > Electronics Accessories > Cables > Network Cables
1457
+ 500035 - Electronics > Electronics Accessories > Cables > Storage & Data Transfer Cables
1458
+ 1763 - Electronics > Electronics Accessories > Cables > System & Power Cables
1459
+ 3541 - Electronics > Electronics Accessories > Cables > Telephone Cables
1460
+ 279 - Electronics > Electronics Accessories > Computer Accessories
1461
+ 500040 - Electronics > Electronics Accessories > Computer Accessories > Computer Accessory Sets
1462
+ 7530 - Electronics > Electronics Accessories > Computer Accessories > Computer Covers & Skins
1463
+ 5489 - Electronics > Electronics Accessories > Computer Accessories > Computer Risers & Stands
1464
+ 280 - Electronics > Electronics Accessories > Computer Accessories > Handheld Device Accessories
1465
+ 4736 - Electronics > Electronics Accessories > Computer Accessories > Handheld Device Accessories > E-Book Reader Accessories
1466
+ 4738 - Electronics > Electronics Accessories > Computer Accessories > Handheld Device Accessories > E-Book Reader Accessories > E-Book Reader Cases
1467
+ 4737 - Electronics > Electronics Accessories > Computer Accessories > Handheld Device Accessories > PDA Accessories
1468
+ 4739 - Electronics > Electronics Accessories > Computer Accessories > Handheld Device Accessories > PDA Accessories > PDA Cases
1469
+ 6291 - Electronics > Electronics Accessories > Computer Accessories > Keyboard & Mouse Wrist Rests
1470
+ 6979 - Electronics > Electronics Accessories > Computer Accessories > Keyboard Trays & Platforms
1471
+ 300 - Electronics > Electronics Accessories > Computer Accessories > Laptop Docking Stations
1472
+ 1993 - Electronics > Electronics Accessories > Computer Accessories > Mouse Pads
1473
+ 5669 - Electronics > Electronics Accessories > Computer Accessories > Stylus Pen Nibs & Refills
1474
+ 5308 - Electronics > Electronics Accessories > Computer Accessories > Stylus Pens
1475
+ 499956 - Electronics > Electronics Accessories > Computer Accessories > Tablet Computer Docks & Stands
1476
+ 285 - Electronics > Electronics Accessories > Computer Components
1477
+ 6932 - Electronics > Electronics Accessories > Computer Components > Blade Server Enclosures
1478
+ 8158 - Electronics > Electronics Accessories > Computer Components > Computer Backplates & I/O Shields
1479
+ 291 - Electronics > Electronics Accessories > Computer Components > Computer Power Supplies
1480
+ 292 - Electronics > Electronics Accessories > Computer Components > Computer Processors
1481
+ 293 - Electronics > Electronics Accessories > Computer Components > Computer Racks & Mounts
1482
+ 294 - Electronics > Electronics Accessories > Computer Components > Computer Starter Kits
1483
+ 295 - Electronics > Electronics Accessories > Computer Components > Computer System Cooling Parts
1484
+ 296 - Electronics > Electronics Accessories > Computer Components > Desktop Computer & Server Cases
1485
+ 8162 - Electronics > Electronics Accessories > Computer Components > E-Book Reader Parts
1486
+ 8163 - Electronics > Electronics Accessories > Computer Components > E-Book Reader Parts > E-Book Reader Screens & Screen Digitizers
1487
+ 287 - Electronics > Electronics Accessories > Computer Components > I/O Cards & Adapters
1488
+ 286 - Electronics > Electronics Accessories > Computer Components > I/O Cards & Adapters > Audio Cards & Adapters
1489
+ 505299 - Electronics > Electronics Accessories > Computer Components > I/O Cards & Adapters > Computer Interface Cards & Adapters
1490
+ 503755 - Electronics > Electronics Accessories > Computer Components > I/O Cards & Adapters > Riser Cards
1491
+ 1487 - Electronics > Electronics Accessories > Computer Components > I/O Cards & Adapters > TV Tuner Cards & Adapters
1492
+ 297 - Electronics > Electronics Accessories > Computer Components > I/O Cards & Adapters > Video Cards & Adapters
1493
+ 6475 - Electronics > Electronics Accessories > Computer Components > Input Device Accessories
1494
+ 6476 - Electronics > Electronics Accessories > Computer Components > Input Device Accessories > Barcode Scanner Stands
1495
+ 8008 - Electronics > Electronics Accessories > Computer Components > Input Device Accessories > Game Controller Accessories
1496
+ 503003 - Electronics > Electronics Accessories > Computer Components > Input Device Accessories > Keyboard Keys & Caps
1497
+ 500052 - Electronics > Electronics Accessories > Computer Components > Input Device Accessories > Mice & Trackball Accessories
1498
+ 1928 - Electronics > Electronics Accessories > Computer Components > Input Devices
1499
+ 139 - Electronics > Electronics Accessories > Computer Components > Input Devices > Barcode Scanners
1500
+ 5309 - Electronics > Electronics Accessories > Computer Components > Input Devices > Digital Note Taking Pens
1501
+ 505801 - Electronics > Electronics Accessories > Computer Components > Input Devices > Electronic Card Readers
1502
+ 5366 - Electronics > Electronics Accessories > Computer Components > Input Devices > Fingerprint Readers
1503
+ 301 - Electronics > Electronics Accessories > Computer Components > Input Devices > Game Controllers
1504
+ 543591 - Electronics > Electronics Accessories > Computer Components > Input Devices > Game Controllers > Game Racing Wheels
1505
+ 543590 - Electronics > Electronics Accessories > Computer Components > Input Devices > Game Controllers > Game Remotes
1506
+ 543589 - Electronics > Electronics Accessories > Computer Components > Input Devices > Game Controllers > Gaming Pads
1507
+ 543588 - Electronics > Electronics Accessories > Computer Components > Input Devices > Game Controllers > Joystick Controllers
1508
+ 543593 - Electronics > Electronics Accessories > Computer Components > Input Devices > Game Controllers > Musical Instrument Game Controllers
1509
+ 499950 - Electronics > Electronics Accessories > Computer Components > Input Devices > Gesture Control Input Devices
1510
+ 302 - Electronics > Electronics Accessories > Computer Components > Input Devices > Graphics Tablets
1511
+ 1562 - Electronics > Electronics Accessories > Computer Components > Input Devices > KVM Switches
1512
+ 303 - Electronics > Electronics Accessories > Computer Components > Input Devices > Keyboards
1513
+ 3580 - Electronics > Electronics Accessories > Computer Components > Input Devices > Memory Card Readers
1514
+ 304 - Electronics > Electronics Accessories > Computer Components > Input Devices > Mice & Trackballs
1515
+ 4512 - Electronics > Electronics Accessories > Computer Components > Input Devices > Numeric Keypads
1516
+ 308 - Electronics > Electronics Accessories > Computer Components > Input Devices > Touchpads
1517
+ 4224 - Electronics > Electronics Accessories > Computer Components > Laptop Parts
1518
+ 6416 - Electronics > Electronics Accessories > Computer Components > Laptop Parts > Laptop Hinges
1519
+ 4270 - Electronics > Electronics Accessories > Computer Components > Laptop Parts > Laptop Housings & Trim
1520
+ 7501 - Electronics > Electronics Accessories > Computer Components > Laptop Parts > Laptop Replacement Cables
1521
+ 4301 - Electronics > Electronics Accessories > Computer Components > Laptop Parts > Laptop Replacement Keyboards
1522
+ 4102 - Electronics > Electronics Accessories > Computer Components > Laptop Parts > Laptop Replacement Screens
1523
+ 43617 - Electronics > Electronics Accessories > Computer Components > Laptop Parts > Laptop Replacement Speakers
1524
+ 8160 - Electronics > Electronics Accessories > Computer Components > Laptop Parts > Laptop Screen Digitizers
1525
+ 2414 - Electronics > Electronics Accessories > Computer Components > Storage Devices
1526
+ 5268 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Disk Duplicators
1527
+ 376 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Disk Duplicators > CD/DVD Duplicators
1528
+ 5271 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Disk Duplicators > Hard Drive Duplicators
1529
+ 5112 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Disk Duplicators > USB Drive Duplicators
1530
+ 1301 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Floppy Drives
1531
+ 1623 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Hard Drive Accessories
1532
+ 381 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Hard Drive Accessories > Hard Drive Carrying Cases
1533
+ 4417 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Hard Drive Accessories > Hard Drive Docks
1534
+ 505767 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Hard Drive Accessories > Hard Drive Enclosures & Mounts
1535
+ 5272 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Hard Drive Arrays
1536
+ 380 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Hard Drives
1537
+ 5269 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Network Storage Systems
1538
+ 377 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Optical Drives
1539
+ 385 - Electronics > Electronics Accessories > Computer Components > Storage Devices > Tape Drives
1540
+ 3712 - Electronics > Electronics Accessories > Computer Components > Storage Devices > USB Flash Drives
1541
+ 7349 - Electronics > Electronics Accessories > Computer Components > Tablet Computer Parts
1542
+ 503002 - Electronics > Electronics Accessories > Computer Components > Tablet Computer Parts > Tablet Computer Housings & Trim
1543
+ 45262 - Electronics > Electronics Accessories > Computer Components > Tablet Computer Parts > Tablet Computer Replacement Speakers
1544
+ 500013 - Electronics > Electronics Accessories > Computer Components > Tablet Computer Parts > Tablet Computer Screens & Screen Digitizers
1545
+ 311 - Electronics > Electronics Accessories > Computer Components > USB & FireWire Hubs
1546
+ 4617 - Electronics > Electronics Accessories > Electronics Cleaners
1547
+ 5466 - Electronics > Electronics Accessories > Electronics Films & Shields
1548
+ 5523 - Electronics > Electronics Accessories > Electronics Films & Shields > Electronics Stickers & Decals
1549
+ 5469 - Electronics > Electronics Accessories > Electronics Films & Shields > Keyboard Protectors
1550
+ 5467 - Electronics > Electronics Accessories > Electronics Films & Shields > Privacy Filters
1551
+ 5468 - Electronics > Electronics Accessories > Electronics Films & Shields > Screen Protectors
1552
+ 288 - Electronics > Electronics Accessories > Memory
1553
+ 1665 - Electronics > Electronics Accessories > Memory > Cache Memory
1554
+ 384 - Electronics > Electronics Accessories > Memory > Flash Memory
1555
+ 3387 - Electronics > Electronics Accessories > Memory > Flash Memory > Flash Memory Cards
1556
+ 1733 - Electronics > Electronics Accessories > Memory > RAM
1557
+ 2130 - Electronics > Electronics Accessories > Memory > ROM
1558
+ 1767 - Electronics > Electronics Accessories > Memory > Video Memory
1559
+ 3422 - Electronics > Electronics Accessories > Memory Accessories
1560
+ 3672 - Electronics > Electronics Accessories > Memory Accessories > Memory Cases
1561
+ 499878 - Electronics > Electronics Accessories > Mobile Phone & Tablet Tripods & Monopods
1562
+ 275 - Electronics > Electronics Accessories > Power
1563
+ 276 - Electronics > Electronics Accessories > Power > Batteries
1564
+ 1722 - Electronics > Electronics Accessories > Power > Batteries > Camera Batteries
1565
+ 1880 - Electronics > Electronics Accessories > Power > Batteries > Cordless Phone Batteries
1566
+ 7551 - Electronics > Electronics Accessories > Power > Batteries > E-Book Reader Batteries
1567
+ 4928 - Electronics > Electronics Accessories > Power > Batteries > General Purpose Batteries
1568
+ 1564 - Electronics > Electronics Accessories > Power > Batteries > Laptop Batteries
1569
+ 499810 - Electronics > Electronics Accessories > Power > Batteries > MP3 Player Batteries
1570
+ 1745 - Electronics > Electronics Accessories > Power > Batteries > Mobile Phone Batteries
1571
+ 5133 - Electronics > Electronics Accessories > Power > Batteries > PDA Batteries
1572
+ 7438 - Electronics > Electronics Accessories > Power > Batteries > Tablet Computer Batteries
1573
+ 6289 - Electronics > Electronics Accessories > Power > Batteries > UPS Batteries
1574
+ 2222 - Electronics > Electronics Accessories > Power > Batteries > Video Camera Batteries
1575
+ 500117 - Electronics > Electronics Accessories > Power > Batteries > Video Game Console & Controller Batteries
1576
+ 7166 - Electronics > Electronics Accessories > Power > Battery Accessories
1577
+ 6817 - Electronics > Electronics Accessories > Power > Battery Accessories > Battery Charge Controllers
1578
+ 8243 - Electronics > Electronics Accessories > Power > Battery Accessories > Battery Holders
1579
+ 3130 - Electronics > Electronics Accessories > Power > Battery Accessories > Camera Battery Chargers
1580
+ 7167 - Electronics > Electronics Accessories > Power > Battery Accessories > General Purpose Battery Chargers
1581
+ 499928 - Electronics > Electronics Accessories > Power > Battery Accessories > General Purpose Battery Testers
1582
+ 2978 - Electronics > Electronics Accessories > Power > Fuel Cells
1583
+ 6933 - Electronics > Electronics Accessories > Power > Power Adapter & Charger Accessories
1584
+ 505295 - Electronics > Electronics Accessories > Power > Power Adapters & Chargers
1585
+ 6790 - Electronics > Electronics Accessories > Power > Power Control Units
1586
+ 3160 - Electronics > Electronics Accessories > Power > Power Strips & Surge Suppressors
1587
+ 5274 - Electronics > Electronics Accessories > Power > Power Supply Enclosures
1588
+ 5380 - Electronics > Electronics Accessories > Power > Surge Protection Devices
1589
+ 7135 - Electronics > Electronics Accessories > Power > Travel Converters & Adapters
1590
+ 1348 - Electronics > Electronics Accessories > Power > UPS
1591
+ 1375 - Electronics > Electronics Accessories > Power > UPS Accessories
1592
+ 341 - Electronics > Electronics Accessories > Remote Controls
1593
+ 5473 - Electronics > Electronics Accessories > Signal Boosters
1594
+ 5695 - Electronics > Electronics Accessories > Signal Jammers
1595
+ 5612 - Electronics > Electronics Accessories > Signal Jammers > GPS Jammers
1596
+ 5696 - Electronics > Electronics Accessories > Signal Jammers > Mobile Phone Jammers
1597
+ 5589 - Electronics > Electronics Accessories > Signal Jammers > Radar Jammers
1598
+ 3895 - Electronics > GPS Accessories
1599
+ 3781 - Electronics > GPS Accessories > GPS Cases
1600
+ 3213 - Electronics > GPS Accessories > GPS Mounts
1601
+ 339 - Electronics > GPS Navigation Systems
1602
+ 6544 - Electronics > GPS Tracking Devices
1603
+ 340 - Electronics > Marine Electronics
1604
+ 1550 - Electronics > Marine Electronics > Fish Finders
1605
+ 8134 - Electronics > Marine Electronics > Marine Audio & Video Receivers
1606
+ 2178 - Electronics > Marine Electronics > Marine Chartplotters & GPS
1607
+ 1552 - Electronics > Marine Electronics > Marine Radar
1608
+ 4450 - Electronics > Marine Electronics > Marine Radios
1609
+ 8473 - Electronics > Marine Electronics > Marine Speakers
1610
+ 342 - Electronics > Networking
1611
+ 1350 - Electronics > Networking > Bridges & Routers
1612
+ 5659 - Electronics > Networking > Bridges & Routers > Network Bridges
1613
+ 2358 - Electronics > Networking > Bridges & Routers > VoIP Gateways & Routers
1614
+ 5496 - Electronics > Networking > Bridges & Routers > Wireless Access Points
1615
+ 5497 - Electronics > Networking > Bridges & Routers > Wireless Routers
1616
+ 2479 - Electronics > Networking > Concentrators & Multiplexers
1617
+ 2455 - Electronics > Networking > Hubs & Switches
1618
+ 5576 - Electronics > Networking > Modem Accessories
1619
+ 343 - Electronics > Networking > Modems
1620
+ 290 - Electronics > Networking > Network Cards & Adapters
1621
+ 3742 - Electronics > Networking > Network Security & Firewall Devices
1622
+ 6508 - Electronics > Networking > Power Over Ethernet Adapters
1623
+ 3425 - Electronics > Networking > Print Servers
1624
+ 2121 - Electronics > Networking > Repeaters & Transceivers
1625
+ 345 - Electronics > Print, Copy, Scan & Fax
1626
+ 499682 - Electronics > Print, Copy, Scan & Fax > 3D Printer Accessories
1627
+ 6865 - Electronics > Print, Copy, Scan & Fax > 3D Printers
1628
+ 502990 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories
1629
+ 5258 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables
1630
+ 5259 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables > Printer Drums & Drum Kits
1631
+ 5266 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables > Printer Filters
1632
+ 5262 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables > Printer Maintenance Kits
1633
+ 5260 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables > Printer Ribbons
1634
+ 5261 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables > Printheads
1635
+ 7362 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables > Toner & Inkjet Cartridge Refills
1636
+ 356 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Consumables > Toner & Inkjet Cartridges
1637
+ 5265 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Duplexers
1638
+ 1683 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Memory
1639
+ 5459 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer Stands
1640
+ 502991 - Electronics > Print, Copy, Scan & Fax > Printer, Copier & Fax Machine Accessories > Printer, Copier & Fax Machine Replacement Parts
1641
+ 500106 - Electronics > Print, Copy, Scan & Fax > Printers, Copiers & Fax Machines
1642
+ 284 - Electronics > Print, Copy, Scan & Fax > Scanner Accessories
1643
+ 306 - Electronics > Print, Copy, Scan & Fax > Scanners
1644
+ 912 - Electronics > Radar Detectors
1645
+ 500091 - Electronics > Speed Radars
1646
+ 4488 - Electronics > Toll Collection Devices
1647
+ 386 - Electronics > Video
1648
+ 305 - Electronics > Video > Computer Monitors
1649
+ 396 - Electronics > Video > Projectors
1650
+ 397 - Electronics > Video > Projectors > Multimedia Projectors
1651
+ 398 - Electronics > Video > Projectors > Overhead Projectors
1652
+ 399 - Electronics > Video > Projectors > Slide Projectors
1653
+ 5561 - Electronics > Video > Satellite & Cable TV
1654
+ 5562 - Electronics > Video > Satellite & Cable TV > Cable TV Receivers
1655
+ 401 - Electronics > Video > Satellite & Cable TV > Satellite Receivers
1656
+ 404 - Electronics > Video > Televisions
1657
+ 2027 - Electronics > Video > Video Accessories
1658
+ 4760 - Electronics > Video > Video Accessories > 3D Glasses
1659
+ 283 - Electronics > Video > Video Accessories > Computer Monitor Accessories
1660
+ 5516 - Electronics > Video > Video Accessories > Computer Monitor Accessories > Color Calibrators
1661
+ 393 - Electronics > Video > Video Accessories > Projector Accessories
1662
+ 5599 - Electronics > Video > Video Accessories > Projector Accessories > Projection & Tripod Skirts
1663
+ 4570 - Electronics > Video > Video Accessories > Projector Accessories > Projection Screen Stands
1664
+ 395 - Electronics > Video > Video Accessories > Projector Accessories > Projection Screens
1665
+ 5257 - Electronics > Video > Video Accessories > Projector Accessories > Projector Mounts
1666
+ 394 - Electronics > Video > Video Accessories > Projector Accessories > Projector Replacement Lamps
1667
+ 2145 - Electronics > Video > Video Accessories > Rewinders
1668
+ 403 - Electronics > Video > Video Accessories > Television Parts & Accessories
1669
+ 4458 - Electronics > Video > Video Accessories > Television Parts & Accessories > TV & Monitor Mounts
1670
+ 5503 - Electronics > Video > Video Accessories > Television Parts & Accessories > TV Converter Boxes
1671
+ 5471 - Electronics > Video > Video Accessories > Television Parts & Accessories > TV Replacement Lamps
1672
+ 43616 - Electronics > Video > Video Accessories > Television Parts & Accessories > TV Replacement Speakers
1673
+ 1368 - Electronics > Video > Video Editing Hardware & Production Equipment
1674
+ 1634 - Electronics > Video > Video Multiplexers
1675
+ 387 - Electronics > Video > Video Players & Recorders
1676
+ 388 - Electronics > Video > Video Players & Recorders > DVD & Blu-ray Players
1677
+ 389 - Electronics > Video > Video Players & Recorders > DVD Recorders
1678
+ 390 - Electronics > Video > Video Players & Recorders > Digital Video Recorders
1679
+ 5276 - Electronics > Video > Video Players & Recorders > Streaming & Home Media Players
1680
+ 391 - Electronics > Video > Video Players & Recorders > VCRs
1681
+ 5278 - Electronics > Video > Video Servers
1682
+ 5450 - Electronics > Video > Video Transmitters
1683
+ 1270 - Electronics > Video Game Console Accessories
1684
+ 1505 - Electronics > Video Game Console Accessories > Home Game Console Accessories
1685
+ 2070 - Electronics > Video Game Console Accessories > Portable Game Console Accessories
1686
+ 1294 - Electronics > Video Game Consoles
1687
+ 412 - Food, Beverages & Tobacco
1688
+ 413 - Food, Beverages & Tobacco > Beverages
1689
+ 499676 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages
1690
+ 414 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Beer
1691
+ 7486 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Bitters
1692
+ 5725 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Cocktail Mixes
1693
+ 543537 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Cocktail Mixes > Frozen Cocktail Mixes
1694
+ 543536 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Cocktail Mixes > Shelf-stable Cocktail Mixes
1695
+ 5887 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Flavored Alcoholic Beverages
1696
+ 6761 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Hard Cider
1697
+ 417 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits
1698
+ 505761 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Absinthe
1699
+ 2364 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Brandy
1700
+ 1671 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Gin
1701
+ 2933 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Liqueurs
1702
+ 2605 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Rum
1703
+ 502976 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Shochu & Soju
1704
+ 543642 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Shochu & Soju > Shochu
1705
+ 543643 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Shochu & Soju > Soju
1706
+ 2220 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Tequila
1707
+ 2107 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Vodka
1708
+ 1926 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Liquor & Spirits > Whiskey
1709
+ 421 - Food, Beverages & Tobacco > Beverages > Alcoholic Beverages > Wine
1710
+ 6797 - Food, Beverages & Tobacco > Beverages > Buttermilk
1711
+ 1868 - Food, Beverages & Tobacco > Beverages > Coffee
1712
+ 8030 - Food, Beverages & Tobacco > Beverages > Eggnog
1713
+ 8036 - Food, Beverages & Tobacco > Beverages > Fruit Flavored Drinks
1714
+ 415 - Food, Beverages & Tobacco > Beverages > Hot Chocolate
1715
+ 2887 - Food, Beverages & Tobacco > Beverages > Juice
1716
+ 418 - Food, Beverages & Tobacco > Beverages > Milk
1717
+ 5724 - Food, Beverages & Tobacco > Beverages > Non-Dairy Milk
1718
+ 6848 - Food, Beverages & Tobacco > Beverages > Powdered Beverage Mixes
1719
+ 2628 - Food, Beverages & Tobacco > Beverages > Soda
1720
+ 5723 - Food, Beverages & Tobacco > Beverages > Sports & Energy Drinks
1721
+ 2073 - Food, Beverages & Tobacco > Beverages > Tea & Infusions
1722
+ 7528 - Food, Beverages & Tobacco > Beverages > Vinegar Drinks
1723
+ 420 - Food, Beverages & Tobacco > Beverages > Water
1724
+ 543531 - Food, Beverages & Tobacco > Beverages > Water > Carbonated Water
1725
+ 543534 - Food, Beverages & Tobacco > Beverages > Water > Carbonated Water > Flavored Carbonated Water
1726
+ 543535 - Food, Beverages & Tobacco > Beverages > Water > Carbonated Water > Unflavored Carbonated Water
1727
+ 543530 - Food, Beverages & Tobacco > Beverages > Water > Distilled Water
1728
+ 543533 - Food, Beverages & Tobacco > Beverages > Water > Flat Mineral Water
1729
+ 543532 - Food, Beverages & Tobacco > Beverages > Water > Spring Water
1730
+ 422 - Food, Beverages & Tobacco > Food Items
1731
+ 1876 - Food, Beverages & Tobacco > Food Items > Bakery
1732
+ 1573 - Food, Beverages & Tobacco > Food Items > Bakery > Bagels
1733
+ 5904 - Food, Beverages & Tobacco > Food Items > Bakery > Bakery Assortments
1734
+ 424 - Food, Beverages & Tobacco > Food Items > Bakery > Breads & Buns
1735
+ 2194 - Food, Beverages & Tobacco > Food Items > Bakery > Cakes & Dessert Bars
1736
+ 6196 - Food, Beverages & Tobacco > Food Items > Bakery > Coffee Cakes
1737
+ 2229 - Food, Beverages & Tobacco > Food Items > Bakery > Cookies
1738
+ 6195 - Food, Beverages & Tobacco > Food Items > Bakery > Cupcakes
1739
+ 5751 - Food, Beverages & Tobacco > Food Items > Bakery > Donuts
1740
+ 5054 - Food, Beverages & Tobacco > Food Items > Bakery > Fudge
1741
+ 5790 - Food, Beverages & Tobacco > Food Items > Bakery > Ice Cream Cones
1742
+ 1895 - Food, Beverages & Tobacco > Food Items > Bakery > Muffins
1743
+ 5750 - Food, Beverages & Tobacco > Food Items > Bakery > Pastries & Scones
1744
+ 5749 - Food, Beverages & Tobacco > Food Items > Bakery > Pies & Tarts
1745
+ 6891 - Food, Beverages & Tobacco > Food Items > Bakery > Taco Shells & Tostadas
1746
+ 5748 - Food, Beverages & Tobacco > Food Items > Bakery > Tortillas & Wraps
1747
+ 6219 - Food, Beverages & Tobacco > Food Items > Candied & Chocolate Covered Fruit
1748
+ 4748 - Food, Beverages & Tobacco > Food Items > Candy & Chocolate
1749
+ 427 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces
1750
+ 6772 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Cocktail Sauce
1751
+ 6905 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Curry Sauce
1752
+ 6845 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Dessert Toppings
1753
+ 6854 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Dessert Toppings > Fruit Toppings
1754
+ 6844 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Dessert Toppings > Ice Cream Syrup
1755
+ 5763 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Fish Sauce
1756
+ 5762 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Gravy
1757
+ 4947 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Honey
1758
+ 6782 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Horseradish Sauce
1759
+ 4614 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Hot Sauce
1760
+ 2018 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Ketchup
1761
+ 500074 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Marinades & Grilling Sauces
1762
+ 1568 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Mayonnaise
1763
+ 1387 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Mustard
1764
+ 5760 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Olives & Capers
1765
+ 5759 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Pasta Sauce
1766
+ 500076 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Pickled Fruits & Vegetables
1767
+ 6203 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Pizza Sauce
1768
+ 500075 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Relish & Chutney
1769
+ 1969 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Salad Dressing
1770
+ 4615 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Satay Sauce
1771
+ 4616 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Soy Sauce
1772
+ 500089 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Sweet and Sour Sauces
1773
+ 4943 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Syrup
1774
+ 4692 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Tahini
1775
+ 6783 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Tartar Sauce
1776
+ 500105 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > White & Cream Sauces
1777
+ 6246 - Food, Beverages & Tobacco > Food Items > Condiments & Sauces > Worcestershire Sauce
1778
+ 2660 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients
1779
+ 6754 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Baking Chips
1780
+ 5776 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Baking Chocolate
1781
+ 5775 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Baking Flavors & Extracts
1782
+ 2572 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Baking Mixes
1783
+ 2803 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Baking Powder
1784
+ 5774 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Baking Soda
1785
+ 6774 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Batter & Coating Mixes
1786
+ 4613 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Bean Paste
1787
+ 5773 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Bread Crumbs
1788
+ 500093 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Canned & Dry Milk
1789
+ 7506 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Cookie Decorating Kits
1790
+ 2126 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Cooking Oils
1791
+ 5771 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Cooking Starch
1792
+ 5777 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Cooking Wine
1793
+ 5770 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Corn Syrup
1794
+ 5752 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Dough
1795
+ 5755 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Dough > Bread & Pastry Dough
1796
+ 5756 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Dough > Cookie & Brownie Dough
1797
+ 5753 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Dough > Pie Crusts
1798
+ 6775 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Edible Baking Decorations
1799
+ 543549 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Egg Replacers
1800
+ 5105 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Floss Sugar
1801
+ 2775 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Flour
1802
+ 7127 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Food Coloring
1803
+ 5769 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Frosting & Icing
1804
+ 499986 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Lemon & Lime Juice
1805
+ 5767 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Marshmallows
1806
+ 8076 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Meal
1807
+ 5766 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Molasses
1808
+ 5800 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Pie & Pastry Fillings
1809
+ 5765 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Shortening & Lard
1810
+ 7354 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Starter Cultures
1811
+ 503734 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Sugar & Sweeteners
1812
+ 499707 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Tapioca Pearls
1813
+ 6922 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Tomato Paste
1814
+ 5768 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Unflavored Gelatin
1815
+ 2140 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Vinegar
1816
+ 5778 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Waffle & Pancake Mixes
1817
+ 2905 - Food, Beverages & Tobacco > Food Items > Cooking & Baking Ingredients > Yeast
1818
+ 428 - Food, Beverages & Tobacco > Food Items > Dairy Products
1819
+ 5827 - Food, Beverages & Tobacco > Food Items > Dairy Products > Butter & Margarine
1820
+ 429 - Food, Beverages & Tobacco > Food Items > Dairy Products > Cheese
1821
+ 4418 - Food, Beverages & Tobacco > Food Items > Dairy Products > Coffee Creamer
1822
+ 1855 - Food, Beverages & Tobacco > Food Items > Dairy Products > Cottage Cheese
1823
+ 5786 - Food, Beverages & Tobacco > Food Items > Dairy Products > Cream
1824
+ 5787 - Food, Beverages & Tobacco > Food Items > Dairy Products > Sour Cream
1825
+ 6821 - Food, Beverages & Tobacco > Food Items > Dairy Products > Whipped Cream
1826
+ 1954 - Food, Beverages & Tobacco > Food Items > Dairy Products > Yogurt
1827
+ 5740 - Food, Beverages & Tobacco > Food Items > Dips & Spreads
1828
+ 6204 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Apple Butter
1829
+ 6831 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Cheese Dips & Spreads
1830
+ 5785 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Cream Cheese
1831
+ 5742 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Guacamole
1832
+ 5741 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Hummus
1833
+ 2188 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Jams & Jellies
1834
+ 3965 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Nut Butters
1835
+ 1702 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Salsa
1836
+ 6784 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Tapenade
1837
+ 6830 - Food, Beverages & Tobacco > Food Items > Dips & Spreads > Vegetable Dip
1838
+ 136 - Food, Beverages & Tobacco > Food Items > Food Gift Baskets
1839
+ 5788 - Food, Beverages & Tobacco > Food Items > Frozen Desserts & Novelties
1840
+ 499991 - Food, Beverages & Tobacco > Food Items > Frozen Desserts & Novelties > Ice Cream & Frozen Yogurt
1841
+ 6873 - Food, Beverages & Tobacco > Food Items > Frozen Desserts & Novelties > Ice Cream Novelties
1842
+ 5789 - Food, Beverages & Tobacco > Food Items > Frozen Desserts & Novelties > Ice Pops
1843
+ 430 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables
1844
+ 5799 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Canned & Jarred Fruits
1845
+ 5798 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Canned & Jarred Vegetables
1846
+ 5797 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Canned & Prepared Beans
1847
+ 1755 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Dried Fruits
1848
+ 7387 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Dried Vegetables
1849
+ 5796 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Dry Beans
1850
+ 5795 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits
1851
+ 6566 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Apples
1852
+ 6571 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Atemoyas
1853
+ 6572 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Avocados
1854
+ 6573 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Babacos
1855
+ 6574 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Bananas
1856
+ 6582 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Berries
1857
+ 6589 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Breadfruit
1858
+ 6593 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Cactus Pears
1859
+ 6602 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Cherimoyas
1860
+ 503759 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits
1861
+ 6621 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits > Grapefruits
1862
+ 6632 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits > Kumquats
1863
+ 6636 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits > Lemons
1864
+ 6641 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits > Limequats
1865
+ 6642 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits > Limes
1866
+ 6658 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits > Oranges
1867
+ 6697 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Citrus Fruits > Tangelos
1868
+ 6809 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Coconuts
1869
+ 6812 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Dates
1870
+ 6614 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Feijoas
1871
+ 6810 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Figs
1872
+ 499906 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Fruit Mixes
1873
+ 6626 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Grapes
1874
+ 6625 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Guavas
1875
+ 6624 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Homely Fruits
1876
+ 6633 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Kiwis
1877
+ 6640 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Longan
1878
+ 6639 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Loquats
1879
+ 6638 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Lychees
1880
+ 6813 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Madroño
1881
+ 6647 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Mamey
1882
+ 6645 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Mangosteens
1883
+ 6649 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Melons
1884
+ 6661 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Papayas
1885
+ 6667 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Passion Fruit
1886
+ 6665 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Pears
1887
+ 6672 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Persimmons
1888
+ 6671 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Physalis
1889
+ 6670 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Pineapples
1890
+ 6676 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Pitahayas
1891
+ 6673 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Pomegranates
1892
+ 6679 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Quince
1893
+ 6678 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Rambutans
1894
+ 6688 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Sapodillo
1895
+ 6687 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Sapote
1896
+ 6691 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Soursops
1897
+ 6594 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Starfruits
1898
+ 503760 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Stone Fruits
1899
+ 6567 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Stone Fruits > Apricots
1900
+ 6601 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Stone Fruits > Cherries
1901
+ 6646 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Stone Fruits > Mangoes
1902
+ 505301 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Stone Fruits > Peaches & Nectarines
1903
+ 6675 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Stone Fruits > Plumcots
1904
+ 6674 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Stone Fruits > Plums
1905
+ 6814 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Sugar Apples
1906
+ 6698 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Fruits > Tamarindo
1907
+ 5793 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables
1908
+ 6716 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Arracachas
1909
+ 6570 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Artichokes
1910
+ 6568 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Asparagus
1911
+ 6577 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Beans
1912
+ 6580 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Beets
1913
+ 6587 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Borage
1914
+ 6591 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Broccoli
1915
+ 6590 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Brussel Sprouts
1916
+ 6592 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Cabbage
1917
+ 6808 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Cactus Leaves
1918
+ 6596 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Cardoon
1919
+ 6595 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Carrots
1920
+ 6600 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Cauliflower
1921
+ 6599 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Celery
1922
+ 6598 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Celery Roots
1923
+ 6609 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Corn
1924
+ 6608 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Cucumbers
1925
+ 6613 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Eggplants
1926
+ 6816 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Fennel Bulbs
1927
+ 6615 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Fiddlehead Ferns
1928
+ 6616 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Gai Choy
1929
+ 6617 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Gai Lan
1930
+ 6620 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Garlic
1931
+ 6619 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Ginger Root
1932
+ 6618 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Gobo Root
1933
+ 6622 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens
1934
+ 6569 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Arugula
1935
+ 6581 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Beet Greens
1936
+ 6584 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Bok Choy
1937
+ 6597 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Chard
1938
+ 6717 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Chicory
1939
+ 6610 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Choy Sum
1940
+ 6629 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Kale
1941
+ 6637 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Lettuce
1942
+ 6656 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > On Choy
1943
+ 5792 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Salad Mixes
1944
+ 6695 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Spinach
1945
+ 6706 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Greens > Yu Choy
1946
+ 6631 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Horseradish Root
1947
+ 6630 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Jicama
1948
+ 6628 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Kohlrabi
1949
+ 6627 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Leeks
1950
+ 6644 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Lotus Roots
1951
+ 6643 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Malangas
1952
+ 6653 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Mushrooms
1953
+ 6657 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Okra
1954
+ 6655 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Onions
1955
+ 6664 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Parsley Roots
1956
+ 6663 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Parsnips
1957
+ 6669 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Peas
1958
+ 6668 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Peppers
1959
+ 6586 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Potatoes
1960
+ 6682 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Radishes
1961
+ 6681 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Rhubarb
1962
+ 6818 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Shallots
1963
+ 503761 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Sprouts
1964
+ 505354 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Squashes & Gourds
1965
+ 6694 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Sugar Cane
1966
+ 6693 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Sunchokes
1967
+ 6585 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Sweet Potatoes
1968
+ 6692 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Tamarillos
1969
+ 6704 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Taro Root
1970
+ 6703 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Tomatoes
1971
+ 505329 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Turnips & Rutabagas
1972
+ 499905 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Vegetable Mixes
1973
+ 6701 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Water Chestnuts
1974
+ 6700 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Watercress
1975
+ 7193 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Wheatgrass
1976
+ 8515 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Yams
1977
+ 6705 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fresh & Frozen Vegetables > Yuca Root
1978
+ 5794 - Food, Beverages & Tobacco > Food Items > Fruits & Vegetables > Fruit Sauces
1979
+ 431 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal
1980
+ 4683 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Amaranth
1981
+ 4687 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Barley
1982
+ 4684 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Buckwheat
1983
+ 4689 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Cereal & Granola
1984
+ 7196 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Couscous
1985
+ 4686 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Millet
1986
+ 4690 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Oats, Grits & Hot Cereal
1987
+ 6259 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Quinoa
1988
+ 4682 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Rice
1989
+ 7374 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Rye
1990
+ 4688 - Food, Beverages & Tobacco > Food Items > Grains, Rice & Cereal > Wheat
1991
+ 432 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs
1992
+ 4627 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Eggs
1993
+ 543554 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Eggs > Egg Whites
1994
+ 543555 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Eggs > Liquid & Frozen Eggs
1995
+ 543556 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Eggs > Prepared Eggs
1996
+ 543557 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Eggs > Whole Eggs
1997
+ 4628 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Meat
1998
+ 5811 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Meat > Canned Meats
1999
+ 5805 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Meat > Fresh & Frozen Meats
2000
+ 5804 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Meat > Lunch & Deli Meats
2001
+ 4629 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Seafood
2002
+ 5813 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Seafood > Canned Seafood
2003
+ 5812 - Food, Beverages & Tobacco > Food Items > Meat, Seafood & Eggs > Seafood > Fresh & Frozen Seafood
2004
+ 433 - Food, Beverages & Tobacco > Food Items > Nuts & Seeds
2005
+ 434 - Food, Beverages & Tobacco > Food Items > Pasta & Noodles
2006
+ 5814 - Food, Beverages & Tobacco > Food Items > Prepared Foods
2007
+ 499989 - Food, Beverages & Tobacco > Food Items > Prepared Foods > Prepared Appetizers & Side Dishes
2008
+ 499988 - Food, Beverages & Tobacco > Food Items > Prepared Foods > Prepared Meals & Entrées
2009
+ 4608 - Food, Beverages & Tobacco > Food Items > Seasonings & Spices
2010
+ 1529 - Food, Beverages & Tobacco > Food Items > Seasonings & Spices > Herbs & Spices
2011
+ 4610 - Food, Beverages & Tobacco > Food Items > Seasonings & Spices > MSG
2012
+ 6199 - Food, Beverages & Tobacco > Food Items > Seasonings & Spices > Pepper
2013
+ 4611 - Food, Beverages & Tobacco > Food Items > Seasonings & Spices > Salt
2014
+ 423 - Food, Beverages & Tobacco > Food Items > Snack Foods
2015
+ 7159 - Food, Beverages & Tobacco > Food Items > Snack Foods > Breadsticks
2016
+ 5747 - Food, Beverages & Tobacco > Food Items > Snack Foods > Cereal & Granola Bars
2017
+ 543651 - Food, Beverages & Tobacco > Food Items > Snack Foods > Cereal & Granola Bars > Cereal Bars
2018
+ 543652 - Food, Beverages & Tobacco > Food Items > Snack Foods > Cereal & Granola Bars > Granola Bars
2019
+ 6192 - Food, Beverages & Tobacco > Food Items > Snack Foods > Cheese Puffs
2020
+ 2392 - Food, Beverages & Tobacco > Food Items > Snack Foods > Chips
2021
+ 1445 - Food, Beverages & Tobacco > Food Items > Snack Foods > Crackers
2022
+ 5746 - Food, Beverages & Tobacco > Food Items > Snack Foods > Croutons
2023
+ 5744 - Food, Beverages & Tobacco > Food Items > Snack Foods > Fruit Snacks
2024
+ 3284 - Food, Beverages & Tobacco > Food Items > Snack Foods > Jerky
2025
+ 1534 - Food, Beverages & Tobacco > Food Items > Snack Foods > Popcorn
2026
+ 6194 - Food, Beverages & Tobacco > Food Items > Snack Foods > Pork Rinds
2027
+ 3446 - Food, Beverages & Tobacco > Food Items > Snack Foods > Pretzels
2028
+ 5743 - Food, Beverages & Tobacco > Food Items > Snack Foods > Pudding & Gelatin Snacks
2029
+ 2432 - Food, Beverages & Tobacco > Food Items > Snack Foods > Puffed Rice Cakes
2030
+ 6847 - Food, Beverages & Tobacco > Food Items > Snack Foods > Salad Toppings
2031
+ 7427 - Food, Beverages & Tobacco > Food Items > Snack Foods > Sesame Sticks
2032
+ 6785 - Food, Beverages & Tobacco > Food Items > Snack Foods > Snack Cakes
2033
+ 7327 - Food, Beverages & Tobacco > Food Items > Snack Foods > Sticky Rice Cakes
2034
+ 5745 - Food, Beverages & Tobacco > Food Items > Snack Foods > Trail & Snack Mixes
2035
+ 2423 - Food, Beverages & Tobacco > Food Items > Soups & Broths
2036
+ 5807 - Food, Beverages & Tobacco > Food Items > Tofu, Soy & Vegetarian Products
2037
+ 6839 - Food, Beverages & Tobacco > Food Items > Tofu, Soy & Vegetarian Products > Cheese Alternatives
2038
+ 6843 - Food, Beverages & Tobacco > Food Items > Tofu, Soy & Vegetarian Products > Meat Alternatives
2039
+ 5808 - Food, Beverages & Tobacco > Food Items > Tofu, Soy & Vegetarian Products > Seitan
2040
+ 5810 - Food, Beverages & Tobacco > Food Items > Tofu, Soy & Vegetarian Products > Tempeh
2041
+ 5809 - Food, Beverages & Tobacco > Food Items > Tofu, Soy & Vegetarian Products > Tofu
2042
+ 435 - Food, Beverages & Tobacco > Tobacco Products
2043
+ 3916 - Food, Beverages & Tobacco > Tobacco Products > Chewing Tobacco
2044
+ 3151 - Food, Beverages & Tobacco > Tobacco Products > Cigarettes
2045
+ 3682 - Food, Beverages & Tobacco > Tobacco Products > Cigars
2046
+ 3741 - Food, Beverages & Tobacco > Tobacco Products > Loose Tobacco
2047
+ 499963 - Food, Beverages & Tobacco > Tobacco Products > Smoking Pipes
2048
+ 4091 - Food, Beverages & Tobacco > Tobacco Products > Vaporizers & Electronic Cigarettes
2049
+ 543635 - Food, Beverages & Tobacco > Tobacco Products > Vaporizers & Electronic Cigarettes > Electronic Cigarettes
2050
+ 543634 - Food, Beverages & Tobacco > Tobacco Products > Vaporizers & Electronic Cigarettes > Vaporizers
2051
+ 436 - Furniture
2052
+ 554 - Furniture > Baby & Toddler Furniture
2053
+ 6349 - Furniture > Baby & Toddler Furniture > Baby & Toddler Furniture Sets
2054
+ 7068 - Furniture > Baby & Toddler Furniture > Bassinet & Cradle Accessories
2055
+ 6393 - Furniture > Baby & Toddler Furniture > Bassinets & Cradles
2056
+ 558 - Furniture > Baby & Toddler Furniture > Changing Tables
2057
+ 7070 - Furniture > Baby & Toddler Furniture > Crib & Toddler Bed Accessories
2058
+ 7072 - Furniture > Baby & Toddler Furniture > Crib & Toddler Bed Accessories > Crib Bumpers & Liners
2059
+ 7071 - Furniture > Baby & Toddler Furniture > Crib & Toddler Bed Accessories > Crib Conversion Kits
2060
+ 6394 - Furniture > Baby & Toddler Furniture > Cribs & Toddler Beds
2061
+ 6969 - Furniture > Baby & Toddler Furniture > High Chair & Booster Seat Accessories
2062
+ 559 - Furniture > Baby & Toddler Furniture > High Chairs & Booster Seats
2063
+ 6433 - Furniture > Beds & Accessories
2064
+ 4437 - Furniture > Beds & Accessories > Bed & Bed Frame Accessories
2065
+ 505764 - Furniture > Beds & Accessories > Beds & Bed Frames
2066
+ 451 - Furniture > Beds & Accessories > Headboards & Footboards
2067
+ 2720 - Furniture > Beds & Accessories > Mattress Foundations
2068
+ 2696 - Furniture > Beds & Accessories > Mattresses
2069
+ 441 - Furniture > Benches
2070
+ 6850 - Furniture > Benches > Kitchen & Dining Benches
2071
+ 6851 - Furniture > Benches > Storage & Entryway Benches
2072
+ 4241 - Furniture > Benches > Vanity Benches
2073
+ 6356 - Furniture > Cabinets & Storage
2074
+ 4063 - Furniture > Cabinets & Storage > Armoires & Wardrobes
2075
+ 447 - Furniture > Cabinets & Storage > Buffets & Sideboards
2076
+ 448 - Furniture > Cabinets & Storage > China Cabinets & Hutches
2077
+ 4195 - Furniture > Cabinets & Storage > Dressers
2078
+ 463 - Furniture > Cabinets & Storage > File Cabinets
2079
+ 465846 - Furniture > Cabinets & Storage > Ironing Centers
2080
+ 6934 - Furniture > Cabinets & Storage > Kitchen Cabinets
2081
+ 6539 - Furniture > Cabinets & Storage > Magazine Racks
2082
+ 6358 - Furniture > Cabinets & Storage > Media Storage Cabinets & Racks
2083
+ 5938 - Furniture > Cabinets & Storage > Storage Cabinets & Lockers
2084
+ 4205 - Furniture > Cabinets & Storage > Storage Chests
2085
+ 6947 - Furniture > Cabinets & Storage > Storage Chests > Hope Chests
2086
+ 4268 - Furniture > Cabinets & Storage > Storage Chests > Toy Chests
2087
+ 4148 - Furniture > Cabinets & Storage > Vanities
2088
+ 2081 - Furniture > Cabinets & Storage > Vanities > Bathroom Vanities
2089
+ 6360 - Furniture > Cabinets & Storage > Vanities > Bedroom Vanities
2090
+ 6357 - Furniture > Cabinets & Storage > Wine & Liquor Cabinets
2091
+ 5578 - Furniture > Cabinets & Storage > Wine Racks
2092
+ 442 - Furniture > Carts & Islands
2093
+ 453 - Furniture > Carts & Islands > Kitchen & Dining Carts
2094
+ 6374 - Furniture > Carts & Islands > Kitchen Islands
2095
+ 7248 - Furniture > Chair Accessories
2096
+ 8206 - Furniture > Chair Accessories > Hanging Chair Replacement Parts
2097
+ 443 - Furniture > Chairs
2098
+ 6499 - Furniture > Chairs > Arm Chairs, Recliners & Sleeper Chairs
2099
+ 438 - Furniture > Chairs > Bean Bag Chairs
2100
+ 456 - Furniture > Chairs > Chaises
2101
+ 2919 - Furniture > Chairs > Electric Massaging Chairs
2102
+ 500051 - Furniture > Chairs > Floor Chairs
2103
+ 3358 - Furniture > Chairs > Folding Chairs & Stools
2104
+ 6800 - Furniture > Chairs > Gaming Chairs
2105
+ 7197 - Furniture > Chairs > Hanging Chairs
2106
+ 5886 - Furniture > Chairs > Kitchen & Dining Room Chairs
2107
+ 2002 - Furniture > Chairs > Rocking Chairs
2108
+ 6859 - Furniture > Chairs > Slipper Chairs
2109
+ 1463 - Furniture > Chairs > Table & Bar Stools
2110
+ 457 - Furniture > Entertainment Centers & TV Stands
2111
+ 6345 - Furniture > Furniture Sets
2112
+ 500000 - Furniture > Furniture Sets > Bathroom Furniture Sets
2113
+ 6346 - Furniture > Furniture Sets > Bedroom Furniture Sets
2114
+ 6347 - Furniture > Furniture Sets > Kitchen & Dining Furniture Sets
2115
+ 6348 - Furniture > Furniture Sets > Living Room Furniture Sets
2116
+ 6860 - Furniture > Futon Frames
2117
+ 2786 - Furniture > Futon Pads
2118
+ 450 - Furniture > Futons
2119
+ 6362 - Furniture > Office Furniture
2120
+ 4191 - Furniture > Office Furniture > Desks
2121
+ 2045 - Furniture > Office Furniture > Office Chairs
2122
+ 500061 - Furniture > Office Furniture > Office Furniture Sets
2123
+ 6363 - Furniture > Office Furniture > Workspace Tables
2124
+ 2242 - Furniture > Office Furniture > Workspace Tables > Art & Drafting Tables
2125
+ 4317 - Furniture > Office Furniture > Workspace Tables > Conference Room Tables
2126
+ 6908 - Furniture > Office Furniture > Workstations & Cubicles
2127
+ 503765 - Furniture > Office Furniture Accessories
2128
+ 503766 - Furniture > Office Furniture Accessories > Desk Parts & Accessories
2129
+ 7559 - Furniture > Office Furniture Accessories > Office Chair Accessories
2130
+ 6909 - Furniture > Office Furniture Accessories > Workstation & Cubicle Accessories
2131
+ 458 - Furniture > Ottomans
2132
+ 4299 - Furniture > Outdoor Furniture
2133
+ 6892 - Furniture > Outdoor Furniture > Outdoor Beds
2134
+ 6367 - Furniture > Outdoor Furniture > Outdoor Furniture Sets
2135
+ 6822 - Furniture > Outdoor Furniture > Outdoor Ottomans
2136
+ 6368 - Furniture > Outdoor Furniture > Outdoor Seating
2137
+ 5044 - Furniture > Outdoor Furniture > Outdoor Seating > Outdoor Benches
2138
+ 6828 - Furniture > Outdoor Furniture > Outdoor Seating > Outdoor Chairs
2139
+ 500111 - Furniture > Outdoor Furniture > Outdoor Seating > Outdoor Sectional Sofa Units
2140
+ 4513 - Furniture > Outdoor Furniture > Outdoor Seating > Outdoor Sofas
2141
+ 4105 - Furniture > Outdoor Furniture > Outdoor Seating > Sunloungers
2142
+ 7310 - Furniture > Outdoor Furniture > Outdoor Storage Boxes
2143
+ 2684 - Furniture > Outdoor Furniture > Outdoor Tables
2144
+ 6963 - Furniture > Outdoor Furniture Accessories
2145
+ 6964 - Furniture > Outdoor Furniture Accessories > Outdoor Furniture Covers
2146
+ 6915 - Furniture > Room Divider Accessories
2147
+ 4163 - Furniture > Room Dividers
2148
+ 464 - Furniture > Shelving
2149
+ 465 - Furniture > Shelving > Bookcases & Standing Shelves
2150
+ 6372 - Furniture > Shelving > Wall Shelves & Ledges
2151
+ 8023 - Furniture > Shelving Accessories
2152
+ 8024 - Furniture > Shelving Accessories > Replacement Shelves
2153
+ 7212 - Furniture > Sofa Accessories
2154
+ 7213 - Furniture > Sofa Accessories > Chair & Sofa Supports
2155
+ 500064 - Furniture > Sofa Accessories > Sectional Sofa Units
2156
+ 460 - Furniture > Sofas
2157
+ 6913 - Furniture > Table Accessories
2158
+ 6911 - Furniture > Table Accessories > Table Legs
2159
+ 6910 - Furniture > Table Accessories > Table Tops
2160
+ 6392 - Furniture > Tables
2161
+ 6369 - Furniture > Tables > Accent Tables
2162
+ 1395 - Furniture > Tables > Accent Tables > Coffee Tables
2163
+ 1549 - Furniture > Tables > Accent Tables > End Tables
2164
+ 1602 - Furniture > Tables > Accent Tables > Sofa Tables
2165
+ 6351 - Furniture > Tables > Activity Tables
2166
+ 4080 - Furniture > Tables > Folding Tables
2167
+ 4355 - Furniture > Tables > Kitchen & Dining Room Tables
2168
+ 4484 - Furniture > Tables > Kotatsu
2169
+ 462 - Furniture > Tables > Nightstands
2170
+ 2693 - Furniture > Tables > Poker & Game Tables
2171
+ 5121 - Furniture > Tables > Sewing Machine Tables
2172
+ 632 - Hardware
2173
+ 503739 - Hardware > Building Consumables
2174
+ 2277 - Hardware > Building Consumables > Chemicals
2175
+ 1735 - Hardware > Building Consumables > Chemicals > Acid Neutralizers
2176
+ 6795 - Hardware > Building Consumables > Chemicals > Ammonia
2177
+ 1479 - Hardware > Building Consumables > Chemicals > Chimney Cleaners
2178
+ 7504 - Hardware > Building Consumables > Chemicals > Concrete & Masonry Cleaners
2179
+ 6191 - Hardware > Building Consumables > Chemicals > De-icers
2180
+ 7503 - Hardware > Building Consumables > Chemicals > Deck & Fence Cleaners
2181
+ 1749 - Hardware > Building Consumables > Chemicals > Drain Cleaners
2182
+ 505319 - Hardware > Building Consumables > Chemicals > Electrical Freeze Sprays
2183
+ 500088 - Hardware > Building Consumables > Chemicals > Lighter Fluid
2184
+ 7470 - Hardware > Building Consumables > Chemicals > Septic Tank & Cesspool Treatments
2185
+ 503742 - Hardware > Building Consumables > Hardware Glue & Adhesives
2186
+ 2212 - Hardware > Building Consumables > Hardware Tape
2187
+ 1753 - Hardware > Building Consumables > Lubricants
2188
+ 503743 - Hardware > Building Consumables > Masonry Consumables
2189
+ 3031 - Hardware > Building Consumables > Masonry Consumables > Bricks & Concrete Blocks
2190
+ 2282 - Hardware > Building Consumables > Masonry Consumables > Cement, Mortar & Concrete Mixes
2191
+ 499876 - Hardware > Building Consumables > Masonry Consumables > Grout
2192
+ 503740 - Hardware > Building Consumables > Painting Consumables
2193
+ 1361 - Hardware > Building Consumables > Painting Consumables > Paint
2194
+ 2474 - Hardware > Building Consumables > Painting Consumables > Paint Binders
2195
+ 2058 - Hardware > Building Consumables > Painting Consumables > Primers
2196
+ 1648 - Hardware > Building Consumables > Painting Consumables > Stains
2197
+ 503738 - Hardware > Building Consumables > Painting Consumables > Varnishes & Finishes
2198
+ 505305 - Hardware > Building Consumables > Plumbing Primer
2199
+ 503744 - Hardware > Building Consumables > Protective Coatings & Sealants
2200
+ 1995 - Hardware > Building Consumables > Solder & Flux
2201
+ 503741 - Hardware > Building Consumables > Solvents, Strippers & Thinners
2202
+ 505802 - Hardware > Building Consumables > Wall Patching Compounds & Plaster
2203
+ 115 - Hardware > Building Materials
2204
+ 2729 - Hardware > Building Materials > Countertops
2205
+ 6343 - Hardware > Building Materials > Door Hardware
2206
+ 2972 - Hardware > Building Materials > Door Hardware > Door Bells & Chimes
2207
+ 6446 - Hardware > Building Materials > Door Hardware > Door Closers
2208
+ 503727 - Hardware > Building Materials > Door Hardware > Door Frames
2209
+ 99338 - Hardware > Building Materials > Door Hardware > Door Keyhole Escutcheons
2210
+ 1356 - Hardware > Building Materials > Door Hardware > Door Knobs & Handles
2211
+ 2795 - Hardware > Building Materials > Door Hardware > Door Knockers
2212
+ 499970 - Hardware > Building Materials > Door Hardware > Door Push Plates
2213
+ 2665 - Hardware > Building Materials > Door Hardware > Door Stops
2214
+ 6458 - Hardware > Building Materials > Door Hardware > Door Strikes
2215
+ 119 - Hardware > Building Materials > Doors
2216
+ 4468 - Hardware > Building Materials > Doors > Garage Doors
2217
+ 4634 - Hardware > Building Materials > Doors > Home Doors
2218
+ 503776 - Hardware > Building Materials > Drywall
2219
+ 2826 - Hardware > Building Materials > Flooring & Carpet
2220
+ 120 - Hardware > Building Materials > Glass
2221
+ 499949 - Hardware > Building Materials > Handrails & Railing Systems
2222
+ 2030 - Hardware > Building Materials > Hatches
2223
+ 122 - Hardware > Building Materials > Insulation
2224
+ 125 - Hardware > Building Materials > Lumber & Sheet Stock
2225
+ 7112 - Hardware > Building Materials > Molding
2226
+ 503777 - Hardware > Building Materials > Rebar & Remesh
2227
+ 123 - Hardware > Building Materials > Roofing
2228
+ 4544 - Hardware > Building Materials > Roofing > Gutter Accessories
2229
+ 121 - Hardware > Building Materials > Roofing > Gutters
2230
+ 2008 - Hardware > Building Materials > Roofing > Roof Flashings
2231
+ 8270 - Hardware > Building Materials > Roofing > Roofing Shingles & Tiles
2232
+ 6943 - Hardware > Building Materials > Shutters
2233
+ 503775 - Hardware > Building Materials > Siding
2234
+ 7439 - Hardware > Building Materials > Sound Dampening Panels & Foam
2235
+ 7004 - Hardware > Building Materials > Staircases
2236
+ 7136 - Hardware > Building Materials > Wall & Ceiling Tile
2237
+ 7053 - Hardware > Building Materials > Wall Paneling
2238
+ 505300 - Hardware > Building Materials > Weather Stripping & Weatherization Supplies
2239
+ 499772 - Hardware > Building Materials > Window Hardware
2240
+ 499773 - Hardware > Building Materials > Window Hardware > Window Cranks
2241
+ 503728 - Hardware > Building Materials > Window Hardware > Window Frames
2242
+ 124 - Hardware > Building Materials > Windows
2243
+ 128 - Hardware > Fencing & Barriers
2244
+ 502983 - Hardware > Fencing & Barriers > Fence & Gate Accessories
2245
+ 502973 - Hardware > Fencing & Barriers > Fence Panels
2246
+ 1352 - Hardware > Fencing & Barriers > Fence Pickets
2247
+ 1919 - Hardware > Fencing & Barriers > Fence Posts & Rails
2248
+ 502986 - Hardware > Fencing & Barriers > Garden Borders & Edging
2249
+ 1788 - Hardware > Fencing & Barriers > Gates
2250
+ 502984 - Hardware > Fencing & Barriers > Lattice
2251
+ 499958 - Hardware > Fencing & Barriers > Safety & Crowd Control Barriers
2252
+ 543575 - Hardware > Fuel
2253
+ 543703 - Hardware > Fuel > Home Heating Oil
2254
+ 543576 - Hardware > Fuel > Kerosene
2255
+ 543579 - Hardware > Fuel > Kerosene > Clear Kerosene
2256
+ 543578 - Hardware > Fuel > Kerosene > Dyed Kerosene
2257
+ 543577 - Hardware > Fuel > Propane
2258
+ 502975 - Hardware > Fuel Containers & Tanks
2259
+ 2878 - Hardware > Hardware Accessories
2260
+ 7092 - Hardware > Hardware Accessories > Brackets & Reinforcement Braces
2261
+ 4696 - Hardware > Hardware Accessories > Cabinet Hardware
2262
+ 232167 - Hardware > Hardware Accessories > Cabinet Hardware > Cabinet & Furniture Keyhole Escutcheons
2263
+ 4697 - Hardware > Hardware Accessories > Cabinet Hardware > Cabinet Backplates
2264
+ 4698 - Hardware > Hardware Accessories > Cabinet Hardware > Cabinet Catches
2265
+ 4699 - Hardware > Hardware Accessories > Cabinet Hardware > Cabinet Doors
2266
+ 4700 - Hardware > Hardware Accessories > Cabinet Hardware > Cabinet Knobs & Handles
2267
+ 499981 - Hardware > Hardware Accessories > Casters
2268
+ 502977 - Hardware > Hardware Accessories > Chain, Wire & Rope
2269
+ 6298 - Hardware > Hardware Accessories > Chain, Wire & Rope > Bungee Cords
2270
+ 1492 - Hardware > Hardware Accessories > Chain, Wire & Rope > Chains
2271
+ 4469 - Hardware > Hardware Accessories > Chain, Wire & Rope > Pull Chains
2272
+ 3053 - Hardware > Hardware Accessories > Chain, Wire & Rope > Ropes & Hardware Cable
2273
+ 6297 - Hardware > Hardware Accessories > Chain, Wire & Rope > Tie Down Straps
2274
+ 5119 - Hardware > Hardware Accessories > Chain, Wire & Rope > Twine
2275
+ 6904 - Hardware > Hardware Accessories > Chain, Wire & Rope > Utility Wire
2276
+ 1318 - Hardware > Hardware Accessories > Coils
2277
+ 7086 - Hardware > Hardware Accessories > Concrete Molds
2278
+ 7270 - Hardware > Hardware Accessories > Dowel Pins & Rods
2279
+ 8470 - Hardware > Hardware Accessories > Drawer Slides
2280
+ 1979 - Hardware > Hardware Accessories > Drop Cloths
2281
+ 1816 - Hardware > Hardware Accessories > Filters & Screens
2282
+ 7557 - Hardware > Hardware Accessories > Flagging & Caution Tape
2283
+ 6841 - Hardware > Hardware Accessories > Gas Hoses
2284
+ 8112 - Hardware > Hardware Accessories > Ground Spikes
2285
+ 500054 - Hardware > Hardware Accessories > Hardware Fasteners
2286
+ 1508 - Hardware > Hardware Accessories > Hardware Fasteners > Drywall Anchors
2287
+ 2408 - Hardware > Hardware Accessories > Hardware Fasteners > Nails
2288
+ 1739 - Hardware > Hardware Accessories > Hardware Fasteners > Nuts & Bolts
2289
+ 7062 - Hardware > Hardware Accessories > Hardware Fasteners > Rivets
2290
+ 2230 - Hardware > Hardware Accessories > Hardware Fasteners > Screw Posts
2291
+ 2251 - Hardware > Hardware Accessories > Hardware Fasteners > Screws
2292
+ 500055 - Hardware > Hardware Accessories > Hardware Fasteners > Threaded Rods
2293
+ 2195 - Hardware > Hardware Accessories > Hardware Fasteners > Washers
2294
+ 1771 - Hardware > Hardware Accessories > Hinges
2295
+ 503773 - Hardware > Hardware Accessories > Hooks, Buckles & Fasteners
2296
+ 503764 - Hardware > Hardware Accessories > Hooks, Buckles & Fasteners > Chain Connectors & Links
2297
+ 502978 - Hardware > Hardware Accessories > Hooks, Buckles & Fasteners > Gear Ties
2298
+ 503770 - Hardware > Hardware Accessories > Hooks, Buckles & Fasteners > Lifting Hooks, Clamps & Shackles
2299
+ 502992 - Hardware > Hardware Accessories > Hooks, Buckles & Fasteners > Utility Buckles
2300
+ 6770 - Hardware > Hardware Accessories > Lubrication Hoses
2301
+ 503731 - Hardware > Hardware Accessories > Metal Casting Molds
2302
+ 500030 - Hardware > Hardware Accessories > Moving & Soundproofing Blankets & Covers
2303
+ 6769 - Hardware > Hardware Accessories > Pneumatic Hoses
2304
+ 8113 - Hardware > Hardware Accessories > Post Base Plates
2305
+ 499933 - Hardware > Hardware Accessories > Springs
2306
+ 4988 - Hardware > Hardware Accessories > Tarps
2307
+ 3974 - Hardware > Hardware Accessories > Tool Storage & Organization
2308
+ 4199 - Hardware > Hardware Accessories > Tool Storage & Organization > Garden Hose Storage
2309
+ 2485 - Hardware > Hardware Accessories > Tool Storage & Organization > Tool & Equipment Belts
2310
+ 6876 - Hardware > Hardware Accessories > Tool Storage & Organization > Tool Bags
2311
+ 3980 - Hardware > Hardware Accessories > Tool Storage & Organization > Tool Boxes
2312
+ 3280 - Hardware > Hardware Accessories > Tool Storage & Organization > Tool Cabinets & Chests
2313
+ 500103 - Hardware > Hardware Accessories > Tool Storage & Organization > Tool Organizer Liners & Inserts
2314
+ 4031 - Hardware > Hardware Accessories > Tool Storage & Organization > Tool Sheaths
2315
+ 3919 - Hardware > Hardware Accessories > Tool Storage & Organization > Work Benches
2316
+ 505320 - Hardware > Hardware Accessories > Wall Jacks & Braces
2317
+ 500096 - Hardware > Hardware Pumps
2318
+ 500099 - Hardware > Hardware Pumps > Home Appliance Pumps
2319
+ 500098 - Hardware > Hardware Pumps > Pool, Fountain & Pond Pumps
2320
+ 500097 - Hardware > Hardware Pumps > Sprinkler, Booster & Irrigation System Pumps
2321
+ 500102 - Hardware > Hardware Pumps > Sump, Sewage & Effluent Pumps
2322
+ 500101 - Hardware > Hardware Pumps > Utility Pumps
2323
+ 500100 - Hardware > Hardware Pumps > Well Pumps & Systems
2324
+ 499873 - Hardware > Heating, Ventilation & Air Conditioning
2325
+ 500090 - Hardware > Heating, Ventilation & Air Conditioning > Air & Filter Dryers
2326
+ 499874 - Hardware > Heating, Ventilation & Air Conditioning > Air Ducts
2327
+ 1519 - Hardware > Heating, Ventilation & Air Conditioning > HVAC Controls
2328
+ 2238 - Hardware > Heating, Ventilation & Air Conditioning > HVAC Controls > Control Panels
2329
+ 500043 - Hardware > Heating, Ventilation & Air Conditioning > HVAC Controls > Humidistats
2330
+ 1897 - Hardware > Heating, Ventilation & Air Conditioning > HVAC Controls > Thermostats
2331
+ 2766 - Hardware > Heating, Ventilation & Air Conditioning > Vents & Flues
2332
+ 1974 - Hardware > Locks & Keys
2333
+ 6488 - Hardware > Locks & Keys > Key Blanks
2334
+ 8067 - Hardware > Locks & Keys > Key Caps
2335
+ 1870 - Hardware > Locks & Keys > Key Card Entry Systems
2336
+ 503730 - Hardware > Locks & Keys > Locks & Latches
2337
+ 133 - Hardware > Plumbing
2338
+ 1810 - Hardware > Plumbing > Plumbing Fittings & Supports
2339
+ 6732 - Hardware > Plumbing > Plumbing Fittings & Supports > Gaskets & O-Rings
2340
+ 499697 - Hardware > Plumbing > Plumbing Fittings & Supports > In-Wall Carriers & Mounting Frames
2341
+ 2068 - Hardware > Plumbing > Plumbing Fittings & Supports > Nozzles
2342
+ 2710 - Hardware > Plumbing > Plumbing Fittings & Supports > Pipe Adapters & Bushings
2343
+ 2909 - Hardware > Plumbing > Plumbing Fittings & Supports > Pipe Caps & Plugs
2344
+ 2359 - Hardware > Plumbing > Plumbing Fittings & Supports > Pipe Connectors
2345
+ 1694 - Hardware > Plumbing > Plumbing Fittings & Supports > Plumbing Flanges
2346
+ 2634 - Hardware > Plumbing > Plumbing Fittings & Supports > Plumbing Pipe Clamps
2347
+ 2611 - Hardware > Plumbing > Plumbing Fittings & Supports > Plumbing Regulators
2348
+ 2466 - Hardware > Plumbing > Plumbing Fittings & Supports > Plumbing Valves
2349
+ 504635 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts
2350
+ 2996 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Bathtub Accessories
2351
+ 505368 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Bathtub Accessories > Bathtub Bases & Feet
2352
+ 5508 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Bathtub Accessories > Bathtub Skirts
2353
+ 2463 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Bathtub Accessories > Bathtub Spouts
2354
+ 504637 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components
2355
+ 2851 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components > Drain Covers & Strainers
2356
+ 1514 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components > Drain Frames
2357
+ 2257 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components > Drain Liners
2358
+ 1932 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components > Drain Openers
2359
+ 1407 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components > Drain Rods
2360
+ 1319 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components > Plumbing Traps
2361
+ 2170 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drain Components > Plumbing Wastes
2362
+ 504636 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Drains
2363
+ 1489 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Faucet Accessories
2364
+ 8115 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Faucet Accessories > Faucet Aerators
2365
+ 8116 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Faucet Accessories > Faucet Handles & Controls
2366
+ 1458 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Fixture Plates
2367
+ 2206 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts
2368
+ 8320 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Bathtub & Shower Jets
2369
+ 8277 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Electric & Power Showers
2370
+ 504638 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Shower Arms & Connectors
2371
+ 4728 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Shower Bases
2372
+ 2088 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Shower Columns
2373
+ 1779 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Shower Doors & Enclosures
2374
+ 581 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Shower Heads
2375
+ 7130 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Shower Walls & Surrounds
2376
+ 5048 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Shower Parts > Shower Water Filters
2377
+ 1963 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Sink Accessories
2378
+ 2410 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Sink Accessories > Sink Legs
2379
+ 2691 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories
2380
+ 1425 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Ballcocks & Flappers
2381
+ 504634 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Bidet Faucets & Sprayers
2382
+ 1865 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Toilet & Bidet Seats
2383
+ 7358 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Toilet Seat Covers
2384
+ 7446 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Toilet Seat Lid Covers
2385
+ 5666 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Toilet Tank Covers
2386
+ 2817 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Toilet Tank Levers
2387
+ 5665 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Toilet Tanks
2388
+ 2478 - Hardware > Plumbing > Plumbing Fixture Hardware & Parts > Toilet & Bidet Accessories > Toilet Trim
2389
+ 1673 - Hardware > Plumbing > Plumbing Fixtures
2390
+ 499999 - Hardware > Plumbing > Plumbing Fixtures > Bathroom Suites
2391
+ 1636 - Hardware > Plumbing > Plumbing Fixtures > Bathtubs
2392
+ 2032 - Hardware > Plumbing > Plumbing Fixtures > Faucets
2393
+ 7244 - Hardware > Plumbing > Plumbing Fixtures > Shower Stalls & Kits
2394
+ 1687 - Hardware > Plumbing > Plumbing Fixtures > Sinks
2395
+ 2886 - Hardware > Plumbing > Plumbing Fixtures > Sinks > Bathroom Sinks
2396
+ 2757 - Hardware > Plumbing > Plumbing Fixtures > Sinks > Kitchen & Utility Sinks
2397
+ 2062 - Hardware > Plumbing > Plumbing Fixtures > Toilets & Bidets
2398
+ 2376 - Hardware > Plumbing > Plumbing Fixtures > Toilets & Bidets > Bidets
2399
+ 1921 - Hardware > Plumbing > Plumbing Fixtures > Toilets & Bidets > Toilets
2400
+ 1746 - Hardware > Plumbing > Plumbing Fixtures > Toilets & Bidets > Urinals
2401
+ 2570 - Hardware > Plumbing > Plumbing Hoses & Supply Lines
2402
+ 2216 - Hardware > Plumbing > Plumbing Pipes
2403
+ 2203 - Hardware > Plumbing > Plumbing Repair Kits
2404
+ 2273 - Hardware > Plumbing > Water Dispensing & Filtration
2405
+ 2055 - Hardware > Plumbing > Water Dispensing & Filtration > In-Line Water Filters
2406
+ 2343 - Hardware > Plumbing > Water Dispensing & Filtration > Water Dispensers
2407
+ 1821 - Hardware > Plumbing > Water Dispensing & Filtration > Water Dispensers > Drinking Fountains
2408
+ 1354 - Hardware > Plumbing > Water Dispensing & Filtration > Water Dispensers > Water Chillers
2409
+ 1390 - Hardware > Plumbing > Water Dispensing & Filtration > Water Distillers
2410
+ 2171 - Hardware > Plumbing > Water Dispensing & Filtration > Water Filtration Accessories
2411
+ 2063 - Hardware > Plumbing > Water Dispensing & Filtration > Water Filtration Accessories > Water Filter Cartridges
2412
+ 2406 - Hardware > Plumbing > Water Dispensing & Filtration > Water Filtration Accessories > Water Filter Housings
2413
+ 5646 - Hardware > Plumbing > Water Dispensing & Filtration > Water Softener Salt
2414
+ 1952 - Hardware > Plumbing > Water Dispensing & Filtration > Water Softeners
2415
+ 2243 - Hardware > Plumbing > Water Levelers
2416
+ 6832 - Hardware > Plumbing > Water Timers
2417
+ 1723 - Hardware > Plumbing > Well Supplies
2418
+ 127 - Hardware > Power & Electrical Supplies
2419
+ 500049 - Hardware > Power & Electrical Supplies > Armatures, Rotors & Stators
2420
+ 7183 - Hardware > Power & Electrical Supplies > Ballasts & Starters
2421
+ 499893 - Hardware > Power & Electrical Supplies > Carbon Brushes
2422
+ 6807 - Hardware > Power & Electrical Supplies > Circuit Breaker Panels
2423
+ 499768 - Hardware > Power & Electrical Supplies > Conduit & Housings
2424
+ 499770 - Hardware > Power & Electrical Supplies > Conduit & Housings > Electrical Conduit
2425
+ 3797 - Hardware > Power & Electrical Supplies > Conduit & Housings > Heat-Shrink Tubing
2426
+ 7275 - Hardware > Power & Electrical Supplies > Electrical Motors
2427
+ 2006 - Hardware > Power & Electrical Supplies > Electrical Mount Boxes & Brackets
2428
+ 5627 - Hardware > Power & Electrical Supplies > Electrical Plug Caps
2429
+ 6459 - Hardware > Power & Electrical Supplies > Electrical Switches
2430
+ 1935 - Hardware > Power & Electrical Supplies > Electrical Switches > Light Switches
2431
+ 499932 - Hardware > Power & Electrical Supplies > Electrical Switches > Specialty Electrical Switches & Relays
2432
+ 2345 - Hardware > Power & Electrical Supplies > Electrical Wires & Cable
2433
+ 6375 - Hardware > Power & Electrical Supplies > Extension Cord Accessories
2434
+ 4789 - Hardware > Power & Electrical Supplies > Extension Cords
2435
+ 4709 - Hardware > Power & Electrical Supplies > Generator Accessories
2436
+ 1218 - Hardware > Power & Electrical Supplies > Generators
2437
+ 2413 - Hardware > Power & Electrical Supplies > Home Automation Kits
2438
+ 2028 - Hardware > Power & Electrical Supplies > Phone & Data Jacks
2439
+ 5533 - Hardware > Power & Electrical Supplies > Power Converters
2440
+ 499966 - Hardware > Power & Electrical Supplies > Power Inlets
2441
+ 5142 - Hardware > Power & Electrical Supplies > Power Inverters
2442
+ 1869 - Hardware > Power & Electrical Supplies > Power Outlets & Sockets
2443
+ 4715 - Hardware > Power & Electrical Supplies > Solar Energy Kits
2444
+ 4714 - Hardware > Power & Electrical Supplies > Solar Panels
2445
+ 505318 - Hardware > Power & Electrical Supplies > Voltage Transformers & Regulators
2446
+ 2377 - Hardware > Power & Electrical Supplies > Wall Plates & Covers
2447
+ 6833 - Hardware > Power & Electrical Supplies > Wall Socket Controls & Sensors
2448
+ 2274 - Hardware > Power & Electrical Supplies > Wire Caps & Nuts
2449
+ 503729 - Hardware > Power & Electrical Supplies > Wire Terminals & Connectors
2450
+ 499982 - Hardware > Small Engines
2451
+ 1910 - Hardware > Storage Tanks
2452
+ 3650 - Hardware > Tool Accessories
2453
+ 6939 - Hardware > Tool Accessories > Abrasive Blaster Accessories
2454
+ 6940 - Hardware > Tool Accessories > Abrasive Blaster Accessories > Sandblasting Cabinets
2455
+ 7326 - Hardware > Tool Accessories > Axe Accessories
2456
+ 7370 - Hardware > Tool Accessories > Axe Accessories > Axe Handles
2457
+ 7369 - Hardware > Tool Accessories > Axe Accessories > Axe Heads
2458
+ 8117 - Hardware > Tool Accessories > Cutter Accessories
2459
+ 8118 - Hardware > Tool Accessories > Cutter Accessories > Nibbler Dies
2460
+ 3944 - Hardware > Tool Accessories > Drill & Screwdriver Accessories
2461
+ 1540 - Hardware > Tool Accessories > Drill & Screwdriver Accessories > Drill & Screwdriver Bits
2462
+ 7140 - Hardware > Tool Accessories > Drill & Screwdriver Accessories > Drill Bit Extensions
2463
+ 6378 - Hardware > Tool Accessories > Drill & Screwdriver Accessories > Drill Bit Sharpeners
2464
+ 8276 - Hardware > Tool Accessories > Drill & Screwdriver Accessories > Drill Chucks
2465
+ 8275 - Hardware > Tool Accessories > Drill & Screwdriver Accessories > Drill Stands & Guides
2466
+ 6806 - Hardware > Tool Accessories > Drill & Screwdriver Accessories > Hole Saws
2467
+ 6471 - Hardware > Tool Accessories > Driver Accessories
2468
+ 2447 - Hardware > Tool Accessories > Flashlight Accessories
2469
+ 499859 - Hardware > Tool Accessories > Grinder Accessories
2470
+ 499860 - Hardware > Tool Accessories > Grinder Accessories > Grinding Wheels & Points
2471
+ 7056 - Hardware > Tool Accessories > Hammer Accessories
2472
+ 7087 - Hardware > Tool Accessories > Hammer Accessories > Air Hammer Accessories
2473
+ 7055 - Hardware > Tool Accessories > Hammer Accessories > Hammer Handles
2474
+ 7057 - Hardware > Tool Accessories > Hammer Accessories > Hammer Heads
2475
+ 2380 - Hardware > Tool Accessories > Industrial Staples
2476
+ 6907 - Hardware > Tool Accessories > Jigs
2477
+ 7472 - Hardware > Tool Accessories > Magnetizers & Demagnetizers
2478
+ 505323 - Hardware > Tool Accessories > Mattock & Pickaxe Accessories
2479
+ 505324 - Hardware > Tool Accessories > Mattock & Pickaxe Accessories > Mattock & Pickaxe Handles
2480
+ 5526 - Hardware > Tool Accessories > Measuring Tool & Sensor Accessories
2481
+ 5557 - Hardware > Tool Accessories > Measuring Tool & Sensor Accessories > Electrical Testing Tool Accessories
2482
+ 5556 - Hardware > Tool Accessories > Measuring Tool & Sensor Accessories > Gas Detector Accessories
2483
+ 503007 - Hardware > Tool Accessories > Measuring Tool & Sensor Accessories > Measuring Scale Accessories
2484
+ 7415 - Hardware > Tool Accessories > Measuring Tool & Sensor Accessories > Multimeter Accessories
2485
+ 499886 - Hardware > Tool Accessories > Mixing Tool Paddles
2486
+ 7019 - Hardware > Tool Accessories > Paint Tool Accessories
2487
+ 6887 - Hardware > Tool Accessories > Paint Tool Accessories > Airbrush Accessories
2488
+ 328062 - Hardware > Tool Accessories > Paint Tool Accessories > Paint Brush Cleaning Solutions
2489
+ 7020 - Hardware > Tool Accessories > Paint Tool Accessories > Paint Roller Accessories
2490
+ 6295 - Hardware > Tool Accessories > Power Tool Batteries
2491
+ 6292 - Hardware > Tool Accessories > Power Tool Chargers
2492
+ 3744 - Hardware > Tool Accessories > Router Accessories
2493
+ 3673 - Hardware > Tool Accessories > Router Accessories > Router Bits
2494
+ 3300 - Hardware > Tool Accessories > Router Accessories > Router Tables
2495
+ 4487 - Hardware > Tool Accessories > Sanding Accessories
2496
+ 3240 - Hardware > Tool Accessories > Sanding Accessories > Sandpaper & Sanding Sponges
2497
+ 6549 - Hardware > Tool Accessories > Saw Accessories
2498
+ 7515 - Hardware > Tool Accessories > Saw Accessories > Band Saw Accessories
2499
+ 7345 - Hardware > Tool Accessories > Saw Accessories > Handheld Circular Saw Accessories
2500
+ 7346 - Hardware > Tool Accessories > Saw Accessories > Jigsaw Accessories
2501
+ 6503 - Hardware > Tool Accessories > Saw Accessories > Miter Saw Accessories
2502
+ 6501 - Hardware > Tool Accessories > Saw Accessories > Table Saw Accessories
2503
+ 3470 - Hardware > Tool Accessories > Shaper Accessories
2504
+ 3210 - Hardware > Tool Accessories > Shaper Accessories > Shaper Cutters
2505
+ 3281 - Hardware > Tool Accessories > Soldering Iron Accessories
2506
+ 3629 - Hardware > Tool Accessories > Soldering Iron Accessories > Soldering Iron Stands
2507
+ 3609 - Hardware > Tool Accessories > Soldering Iron Accessories > Soldering Iron Tips
2508
+ 2174 - Hardware > Tool Accessories > Tool Blades
2509
+ 505831 - Hardware > Tool Accessories > Tool Blades > Cutter & Scraper Blades
2510
+ 2202 - Hardware > Tool Accessories > Tool Blades > Saw Blades
2511
+ 505810 - Hardware > Tool Accessories > Tool Handle Wedges
2512
+ 8258 - Hardware > Tool Accessories > Tool Safety Tethers
2513
+ 5571 - Hardware > Tool Accessories > Tool Sockets
2514
+ 4658 - Hardware > Tool Accessories > Tool Stands
2515
+ 4659 - Hardware > Tool Accessories > Tool Stands > Saw Stands
2516
+ 505812 - Hardware > Tool Accessories > Wedge Tools
2517
+ 499947 - Hardware > Tool Accessories > Welding Accessories
2518
+ 1167 - Hardware > Tools
2519
+ 6938 - Hardware > Tools > Abrasive Blasters
2520
+ 1169 - Hardware > Tools > Anvils
2521
+ 1171 - Hardware > Tools > Axes
2522
+ 7271 - Hardware > Tools > Carpentry Jointers
2523
+ 1174 - Hardware > Tools > Carving Chisels & Gouges
2524
+ 1215 - Hardware > Tools > Caulking Tools
2525
+ 2792 - Hardware > Tools > Chimney Brushes
2526
+ 4325 - Hardware > Tools > Compactors
2527
+ 2015 - Hardware > Tools > Compressors
2528
+ 4672 - Hardware > Tools > Concrete Brooms
2529
+ 1180 - Hardware > Tools > Cutters
2530
+ 1181 - Hardware > Tools > Cutters > Bolt Cutters
2531
+ 1182 - Hardware > Tools > Cutters > Glass Cutters
2532
+ 1454 - Hardware > Tools > Cutters > Handheld Metal Shears & Nibblers
2533
+ 7562 - Hardware > Tools > Cutters > Nippers
2534
+ 2080 - Hardware > Tools > Cutters > Pipe Cutters
2535
+ 1824 - Hardware > Tools > Cutters > Rebar Cutters
2536
+ 2726 - Hardware > Tools > Cutters > Tile & Shingle Cutters
2537
+ 2411 - Hardware > Tools > Cutters > Utility Knives
2538
+ 1391 - Hardware > Tools > Deburrers
2539
+ 126 - Hardware > Tools > Dollies & Hand Trucks
2540
+ 1217 - Hardware > Tools > Drills
2541
+ 1367 - Hardware > Tools > Drills > Augers
2542
+ 1216 - Hardware > Tools > Drills > Drill Presses
2543
+ 2629 - Hardware > Tools > Drills > Handheld Power Drills
2544
+ 1465 - Hardware > Tools > Drills > Mortisers
2545
+ 1994 - Hardware > Tools > Drills > Pneumatic Drills
2546
+ 6461 - Hardware > Tools > Electrician Fish Tape
2547
+ 338 - Hardware > Tools > Flashlights & Headlamps
2548
+ 543689 - Hardware > Tools > Flashlights & Headlamps > Flashlights
2549
+ 2454 - Hardware > Tools > Flashlights & Headlamps > Headlamps
2550
+ 7556 - Hardware > Tools > Grease Guns
2551
+ 1219 - Hardware > Tools > Grinders
2552
+ 1185 - Hardware > Tools > Grips
2553
+ 1186 - Hardware > Tools > Hammers
2554
+ 2208 - Hardware > Tools > Hammers > Manual Hammers
2555
+ 505364 - Hardware > Tools > Hammers > Powered Hammers
2556
+ 499887 - Hardware > Tools > Handheld Power Mixers
2557
+ 5927 - Hardware > Tools > Hardware Torches
2558
+ 1220 - Hardware > Tools > Heat Guns
2559
+ 1221 - Hardware > Tools > Impact Wrenches & Drivers
2560
+ 2456 - Hardware > Tools > Industrial Vibrators
2561
+ 7416 - Hardware > Tools > Inspection Mirrors
2562
+ 130 - Hardware > Tools > Ladders & Scaffolding
2563
+ 2416 - Hardware > Tools > Ladders & Scaffolding > Ladder Carts
2564
+ 6928 - Hardware > Tools > Ladders & Scaffolding > Ladders
2565
+ 1866 - Hardware > Tools > Ladders & Scaffolding > Scaffolding
2566
+ 635 - Hardware > Tools > Ladders & Scaffolding > Step Stools
2567
+ 1809 - Hardware > Tools > Ladders & Scaffolding > Work Platforms
2568
+ 1663 - Hardware > Tools > Lathes
2569
+ 1603 - Hardware > Tools > Light Bulb Changers
2570
+ 503774 - Hardware > Tools > Lighters & Matches
2571
+ 7030 - Hardware > Tools > Log Splitters
2572
+ 5873 - Hardware > Tools > Magnetic Sweepers
2573
+ 1832 - Hardware > Tools > Marking Tools
2574
+ 1193 - Hardware > Tools > Masonry Tools
2575
+ 1668 - Hardware > Tools > Masonry Tools > Brick Tools
2576
+ 2305 - Hardware > Tools > Masonry Tools > Cement Mixers
2577
+ 1555 - Hardware > Tools > Masonry Tools > Construction Lines
2578
+ 2337 - Hardware > Tools > Masonry Tools > Floats
2579
+ 7484 - Hardware > Tools > Masonry Tools > Grout Sponges
2580
+ 1799 - Hardware > Tools > Masonry Tools > Masonry Edgers & Groovers
2581
+ 1450 - Hardware > Tools > Masonry Tools > Masonry Jointers
2582
+ 2181 - Hardware > Tools > Masonry Tools > Masonry Trowels
2583
+ 4132 - Hardware > Tools > Masonry Tools > Power Trowels
2584
+ 3932 - Hardware > Tools > Mattocks & Pickaxes
2585
+ 1305 - Hardware > Tools > Measuring Tools & Sensors
2586
+ 5515 - Hardware > Tools > Measuring Tools & Sensors > Air Quality Meters
2587
+ 4022 - Hardware > Tools > Measuring Tools & Sensors > Altimeters
2588
+ 500058 - Hardware > Tools > Measuring Tools & Sensors > Anemometers
2589
+ 3602 - Hardware > Tools > Measuring Tools & Sensors > Barometers
2590
+ 2192 - Hardware > Tools > Measuring Tools & Sensors > Calipers
2591
+ 1533 - Hardware > Tools > Measuring Tools & Sensors > Cruising Rods
2592
+ 5487 - Hardware > Tools > Measuring Tools & Sensors > Distance Meters
2593
+ 1850 - Hardware > Tools > Measuring Tools & Sensors > Dividers
2594
+ 503737 - Hardware > Tools > Measuring Tools & Sensors > Electrical Testing Tools
2595
+ 1640 - Hardware > Tools > Measuring Tools & Sensors > Flow Meters & Controllers
2596
+ 1991 - Hardware > Tools > Measuring Tools & Sensors > Gas Detectors
2597
+ 1732 - Hardware > Tools > Measuring Tools & Sensors > Gauges
2598
+ 5371 - Hardware > Tools > Measuring Tools & Sensors > Geiger Counters
2599
+ 4754 - Hardware > Tools > Measuring Tools & Sensors > Hygrometers
2600
+ 4506 - Hardware > Tools > Measuring Tools & Sensors > Infrared Thermometers
2601
+ 2330 - Hardware > Tools > Measuring Tools & Sensors > Knife Guides
2602
+ 1191 - Hardware > Tools > Measuring Tools & Sensors > Levels
2603
+ 4081 - Hardware > Tools > Measuring Tools & Sensors > Levels > Bubble Levels
2604
+ 4931 - Hardware > Tools > Measuring Tools & Sensors > Levels > Laser Levels
2605
+ 4294 - Hardware > Tools > Measuring Tools & Sensors > Levels > Sight Levels
2606
+ 1698 - Hardware > Tools > Measuring Tools & Sensors > Measuring Scales
2607
+ 1459 - Hardware > Tools > Measuring Tools & Sensors > Measuring Wheels
2608
+ 4755 - Hardware > Tools > Measuring Tools & Sensors > Moisture Meters
2609
+ 1785 - Hardware > Tools > Measuring Tools & Sensors > Probes & Finders
2610
+ 1198 - Hardware > Tools > Measuring Tools & Sensors > Protractors
2611
+ 1539 - Hardware > Tools > Measuring Tools & Sensors > Rebar Locators
2612
+ 2021 - Hardware > Tools > Measuring Tools & Sensors > Rulers
2613
+ 4756 - Hardware > Tools > Measuring Tools & Sensors > Seismometer
2614
+ 4757 - Hardware > Tools > Measuring Tools & Sensors > Sound Meters
2615
+ 1205 - Hardware > Tools > Measuring Tools & Sensors > Squares
2616
+ 1413 - Hardware > Tools > Measuring Tools & Sensors > Straight Edges
2617
+ 1207 - Hardware > Tools > Measuring Tools & Sensors > Stud Sensors
2618
+ 2481 - Hardware > Tools > Measuring Tools & Sensors > Tape Measures
2619
+ 4340 - Hardware > Tools > Measuring Tools & Sensors > Theodolites
2620
+ 6799 - Hardware > Tools > Measuring Tools & Sensors > Thermal Imaging Cameras
2621
+ 2093 - Hardware > Tools > Measuring Tools & Sensors > Thermocouples & Thermopiles
2622
+ 7394 - Hardware > Tools > Measuring Tools & Sensors > Transducers
2623
+ 4758 - Hardware > Tools > Measuring Tools & Sensors > UV Light Meters
2624
+ 4759 - Hardware > Tools > Measuring Tools & Sensors > Vibration Meters
2625
+ 1374 - Hardware > Tools > Measuring Tools & Sensors > Weather Forecasters & Stations
2626
+ 4074 - Hardware > Tools > Measuring Tools & Sensors > pH Meters
2627
+ 5077 - Hardware > Tools > Milling Machines
2628
+ 5587 - Hardware > Tools > Multifunction Power Tools
2629
+ 1194 - Hardware > Tools > Nail Pullers
2630
+ 1206 - Hardware > Tools > Nailers & Staplers
2631
+ 5828 - Hardware > Tools > Oil Filter Drains
2632
+ 2077 - Hardware > Tools > Paint Tools
2633
+ 2486 - Hardware > Tools > Paint Tools > Airbrushes
2634
+ 1300 - Hardware > Tools > Paint Tools > Paint Brushes
2635
+ 6556 - Hardware > Tools > Paint Tools > Paint Edgers
2636
+ 1774 - Hardware > Tools > Paint Tools > Paint Rollers
2637
+ 499888 - Hardware > Tools > Paint Tools > Paint Shakers
2638
+ 1699 - Hardware > Tools > Paint Tools > Paint Sponges
2639
+ 2465 - Hardware > Tools > Paint Tools > Paint Sprayers
2640
+ 505325 - Hardware > Tools > Paint Tools > Paint Strainers
2641
+ 6557 - Hardware > Tools > Paint Tools > Paint Trays
2642
+ 1196 - Hardware > Tools > Pickup Tools
2643
+ 1667 - Hardware > Tools > Pipe & Bar Benders
2644
+ 2053 - Hardware > Tools > Pipe & Tube Cleaners
2645
+ 1862 - Hardware > Tools > Pipe Brushes
2646
+ 6868 - Hardware > Tools > Planers
2647
+ 1187 - Hardware > Tools > Planes
2648
+ 1958 - Hardware > Tools > Pliers
2649
+ 1563 - Hardware > Tools > Plungers
2650
+ 1225 - Hardware > Tools > Polishers & Buffers
2651
+ 3501 - Hardware > Tools > Post Hole Diggers
2652
+ 1179 - Hardware > Tools > Pry Bars
2653
+ 505315 - Hardware > Tools > Punches & Awls
2654
+ 1202 - Hardware > Tools > Putty Knives & Scrapers
2655
+ 1819 - Hardware > Tools > Reamers
2656
+ 7064 - Hardware > Tools > Riveting Tools
2657
+ 7065 - Hardware > Tools > Riveting Tools > Rivet Guns
2658
+ 7066 - Hardware > Tools > Riveting Tools > Rivet Pliers
2659
+ 1841 - Hardware > Tools > Routing Tools
2660
+ 1188 - Hardware > Tools > Sanders
2661
+ 4419 - Hardware > Tools > Sanding Blocks
2662
+ 1201 - Hardware > Tools > Saw Horses
2663
+ 1235 - Hardware > Tools > Saws
2664
+ 3582 - Hardware > Tools > Saws > Band Saws
2665
+ 3516 - Hardware > Tools > Saws > Cut-Off Saws
2666
+ 3594 - Hardware > Tools > Saws > Hand Saws
2667
+ 3224 - Hardware > Tools > Saws > Handheld Circular Saws
2668
+ 3725 - Hardware > Tools > Saws > Jigsaws
2669
+ 7077 - Hardware > Tools > Saws > Masonry & Tile Saws
2670
+ 3517 - Hardware > Tools > Saws > Miter Saws
2671
+ 499985 - Hardware > Tools > Saws > Panel Saws
2672
+ 3494 - Hardware > Tools > Saws > Reciprocating Saws
2673
+ 4633 - Hardware > Tools > Saws > Scroll Saws
2674
+ 3706 - Hardware > Tools > Saws > Table Saws
2675
+ 1203 - Hardware > Tools > Screwdrivers
2676
+ 1923 - Hardware > Tools > Shapers
2677
+ 1644 - Hardware > Tools > Sharpeners
2678
+ 1195 - Hardware > Tools > Socket Drivers
2679
+ 1236 - Hardware > Tools > Soldering Irons
2680
+ 1787 - Hardware > Tools > Tap Reseaters
2681
+ 1184 - Hardware > Tools > Taps & Dies
2682
+ 1584 - Hardware > Tools > Threading Machines
2683
+ 2835 - Hardware > Tools > Tool Clamps & Vises
2684
+ 3745 - Hardware > Tools > Tool Files
2685
+ 1439 - Hardware > Tools > Tool Keys
2686
+ 2198 - Hardware > Tools > Tool Knives
2687
+ 4919 - Hardware > Tools > Tool Sets
2688
+ 6965 - Hardware > Tools > Tool Sets > Hand Tool Sets
2689
+ 4716 - Hardware > Tools > Tool Sets > Power Tool Combo Sets
2690
+ 1238 - Hardware > Tools > Welding Guns & Plasma Cutters
2691
+ 1469 - Hardware > Tools > Wire & Cable Hand Tools
2692
+ 5592 - Hardware > Tools > Work Lights
2693
+ 1632 - Hardware > Tools > Wrenches
2694
+ 469 - Health & Beauty
2695
+ 491 - Health & Beauty > Health Care
2696
+ 5849 - Health & Beauty > Health Care > Acupuncture
2697
+ 5850 - Health & Beauty > Health Care > Acupuncture > Acupuncture Models
2698
+ 5851 - Health & Beauty > Health Care > Acupuncture > Acupuncture Needles
2699
+ 7220 - Health & Beauty > Health Care > Bed Pans
2700
+ 5071 - Health & Beauty > Health Care > Biometric Monitor Accessories
2701
+ 505819 - Health & Beauty > Health Care > Biometric Monitor Accessories > Activity Monitor Accessories
2702
+ 3688 - Health & Beauty > Health Care > Biometric Monitor Accessories > Blood Glucose Meter Accessories
2703
+ 6323 - Health & Beauty > Health Care > Biometric Monitor Accessories > Blood Glucose Meter Accessories > Blood Glucose Control Solution
2704
+ 3905 - Health & Beauty > Health Care > Biometric Monitor Accessories > Blood Glucose Meter Accessories > Blood Glucose Test Strips
2705
+ 3111 - Health & Beauty > Health Care > Biometric Monitor Accessories > Blood Glucose Meter Accessories > Lancing Devices
2706
+ 6284 - Health & Beauty > Health Care > Biometric Monitor Accessories > Blood Pressure Monitor Accessories
2707
+ 6285 - Health & Beauty > Health Care > Biometric Monitor Accessories > Blood Pressure Monitor Accessories > Blood Pressure Monitor Cuffs
2708
+ 5072 - Health & Beauty > Health Care > Biometric Monitor Accessories > Body Weight Scale Accessories
2709
+ 494 - Health & Beauty > Health Care > Biometric Monitors
2710
+ 500009 - Health & Beauty > Health Care > Biometric Monitors > Activity Monitors
2711
+ 2246 - Health & Beauty > Health Care > Biometric Monitors > Blood Glucose Meters
2712
+ 495 - Health & Beauty > Health Care > Biometric Monitors > Blood Pressure Monitors
2713
+ 496 - Health & Beauty > Health Care > Biometric Monitors > Body Fat Analyzers
2714
+ 500 - Health & Beauty > Health Care > Biometric Monitors > Body Weight Scales
2715
+ 2633 - Health & Beauty > Health Care > Biometric Monitors > Breathalyzers
2716
+ 497 - Health & Beauty > Health Care > Biometric Monitors > Cholesterol Analyzers
2717
+ 505822 - Health & Beauty > Health Care > Biometric Monitors > Fertility Monitors and Ovulation Tests
2718
+ 543679 - Health & Beauty > Health Care > Biometric Monitors > Fertility Monitors and Ovulation Tests > Fertility Tests & Monitors
2719
+ 543680 - Health & Beauty > Health Care > Biometric Monitors > Fertility Monitors and Ovulation Tests > Ovulation Tests
2720
+ 501 - Health & Beauty > Health Care > Biometric Monitors > Medical Thermometers
2721
+ 4767 - Health & Beauty > Health Care > Biometric Monitors > Prenatal Heart Rate Monitors
2722
+ 5551 - Health & Beauty > Health Care > Biometric Monitors > Pulse Oximeters
2723
+ 775 - Health & Beauty > Health Care > Condoms
2724
+ 505820 - Health & Beauty > Health Care > Conductivity Gels & Lotions
2725
+ 7002 - Health & Beauty > Health Care > Contraceptive Cases
2726
+ 508 - Health & Beauty > Health Care > First Aid
2727
+ 2954 - Health & Beauty > Health Care > First Aid > Antiseptics & Cleaning Supplies
2728
+ 6206 - Health & Beauty > Health Care > First Aid > Cast & Bandage Protectors
2729
+ 4527 - Health & Beauty > Health Care > First Aid > Eye Wash Supplies
2730
+ 510 - Health & Beauty > Health Care > First Aid > First Aid Kits
2731
+ 516 - Health & Beauty > Health Care > First Aid > Hot & Cold Therapies
2732
+ 5848 - Health & Beauty > Health Care > First Aid > Hot & Cold Therapies > Heat Rubs
2733
+ 6205 - Health & Beauty > Health Care > First Aid > Hot & Cold Therapies > Heating Pads
2734
+ 4753 - Health & Beauty > Health Care > First Aid > Hot & Cold Therapies > Ice Packs
2735
+ 509 - Health & Beauty > Health Care > First Aid > Medical Tape & Bandages
2736
+ 2890 - Health & Beauty > Health Care > Fitness & Nutrition
2737
+ 2984 - Health & Beauty > Health Care > Fitness & Nutrition > Nutrition Bars
2738
+ 5702 - Health & Beauty > Health Care > Fitness & Nutrition > Nutrition Drinks & Shakes
2739
+ 6242 - Health & Beauty > Health Care > Fitness & Nutrition > Nutrition Gels & Chews
2740
+ 6871 - Health & Beauty > Health Care > Fitness & Nutrition > Nutritional Food Purées
2741
+ 7413 - Health & Beauty > Health Care > Fitness & Nutrition > Tube Feeding Supplements
2742
+ 525 - Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements
2743
+ 5690 - Health & Beauty > Health Care > Hearing Aids
2744
+ 517 - Health & Beauty > Health Care > Incontinence Aids
2745
+ 500087 - Health & Beauty > Health Care > Light Therapy Lamps
2746
+ 5966 - Health & Beauty > Health Care > Medical Alarm Systems
2747
+ 5965 - Health & Beauty > Health Care > Medical Identification Tags & Jewelry
2748
+ 505293 - Health & Beauty > Health Care > Medical Tests
2749
+ 499934 - Health & Beauty > Health Care > Medical Tests > Allergy Test Kits
2750
+ 7337 - Health & Beauty > Health Care > Medical Tests > Blood Typing Test Kits
2751
+ 2552 - Health & Beauty > Health Care > Medical Tests > Drug Tests
2752
+ 7336 - Health & Beauty > Health Care > Medical Tests > HIV Tests
2753
+ 1680 - Health & Beauty > Health Care > Medical Tests > Pregnancy Tests
2754
+ 505294 - Health & Beauty > Health Care > Medical Tests > Urinary Tract Infection Tests
2755
+ 518 - Health & Beauty > Health Care > Medicine & Drugs
2756
+ 519 - Health & Beauty > Health Care > Mobility & Accessibility
2757
+ 520 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Equipment
2758
+ 3512 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Equipment > Mobility Scooters
2759
+ 7138 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Equipment > Stair Lifts
2760
+ 502969 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Equipment > Transfer Boards & Sheets
2761
+ 3364 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Equipment > Wheelchairs
2762
+ 521 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Equipment Accessories
2763
+ 5488 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Furniture & Fixtures
2764
+ 7243 - Health & Beauty > Health Care > Mobility & Accessibility > Accessibility Furniture & Fixtures > Shower Benches & Seats
2765
+ 6929 - Health & Beauty > Health Care > Mobility & Accessibility > Walking Aid Accessories
2766
+ 5164 - Health & Beauty > Health Care > Mobility & Accessibility > Walking Aids
2767
+ 5165 - Health & Beauty > Health Care > Mobility & Accessibility > Walking Aids > Canes & Walking Sticks
2768
+ 4248 - Health & Beauty > Health Care > Mobility & Accessibility > Walking Aids > Crutches
2769
+ 5166 - Health & Beauty > Health Care > Mobility & Accessibility > Walking Aids > Walkers
2770
+ 5870 - Health & Beauty > Health Care > Occupational & Physical Therapy Equipment
2771
+ 8541 - Health & Beauty > Health Care > Occupational & Physical Therapy Equipment > Electrical Muscle Stimulators
2772
+ 505352 - Health & Beauty > Health Care > Occupational & Physical Therapy Equipment > Therapeutic Swings
2773
+ 3777 - Health & Beauty > Health Care > Pillboxes
2774
+ 4551 - Health & Beauty > Health Care > Respiratory Care
2775
+ 4552 - Health & Beauty > Health Care > Respiratory Care > Nebulizers
2776
+ 499692 - Health & Beauty > Health Care > Respiratory Care > Oxygen Tanks
2777
+ 7317 - Health & Beauty > Health Care > Respiratory Care > PAP Machines
2778
+ 7316 - Health & Beauty > Health Care > Respiratory Care > PAP Masks
2779
+ 505669 - Health & Beauty > Health Care > Respiratory Care > Steam Inhalers
2780
+ 8082 - Health & Beauty > Health Care > Specimen Cups
2781
+ 7186 - Health & Beauty > Health Care > Spermicides
2782
+ 8105 - Health & Beauty > Health Care > Stump Shrinkers
2783
+ 523 - Health & Beauty > Health Care > Supports & Braces
2784
+ 5923 - Health & Beauty > Health Care > Surgical Lubricants
2785
+ 5573 - Health & Beauty > Jewelry Cleaning & Care
2786
+ 499919 - Health & Beauty > Jewelry Cleaning & Care > Jewelry Cleaning Solutions & Polishes
2787
+ 500082 - Health & Beauty > Jewelry Cleaning & Care > Jewelry Cleaning Tools
2788
+ 5974 - Health & Beauty > Jewelry Cleaning & Care > Jewelry Holders
2789
+ 500083 - Health & Beauty > Jewelry Cleaning & Care > Jewelry Steam Cleaners
2790
+ 5124 - Health & Beauty > Jewelry Cleaning & Care > Watch Repair Kits
2791
+ 2915 - Health & Beauty > Personal Care
2792
+ 493 - Health & Beauty > Personal Care > Back Care
2793
+ 7404 - Health & Beauty > Personal Care > Back Care > Back & Lumbar Support Cushions
2794
+ 473 - Health & Beauty > Personal Care > Cosmetics
2795
+ 474 - Health & Beauty > Personal Care > Cosmetics > Bath & Body
2796
+ 499913 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Adult Hygienic Wipes
2797
+ 2503 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Bar Soap
2798
+ 2522 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Bath Additives
2799
+ 2876 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Bath Brushes
2800
+ 2875 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Bath Sponges & Loofahs
2801
+ 2747 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Body Wash
2802
+ 3691 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Hand Sanitizers & Wipes
2803
+ 3208 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Liquid Hand Soap
2804
+ 7417 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Powdered Hand Soap
2805
+ 4049 - Health & Beauty > Personal Care > Cosmetics > Bath & Body > Shower Caps
2806
+ 475 - Health & Beauty > Personal Care > Cosmetics > Bath & Body Gift Sets
2807
+ 6069 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Sets
2808
+ 6331 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tool Cleansers
2809
+ 2619 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools
2810
+ 2548 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools
2811
+ 7356 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Double Eyelid Glue & Tape
2812
+ 6555 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Eyebrow Stencils
2813
+ 6282 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Eyelash Curler Refills
2814
+ 2780 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Eyelash Curlers
2815
+ 476 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Face Mirrors
2816
+ 4121 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Facial Blotting Paper
2817
+ 502996 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > False Eyelash Accessories
2818
+ 7256 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > False Eyelash Accessories > False Eyelash Adhesive
2819
+ 7493 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > False Eyelash Accessories > False Eyelash Applicators
2820
+ 502997 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > False Eyelash Accessories > False Eyelash Remover
2821
+ 3025 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Makeup Brushes
2822
+ 4106 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Makeup Sponges
2823
+ 499822 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Makeup Tools > Refillable Makeup Palettes & Cases
2824
+ 2975 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools
2825
+ 2739 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Cuticle Pushers
2826
+ 3037 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Cuticle Scissors
2827
+ 7494 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Manicure & Pedicure Spacers
2828
+ 6300 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Manicure Tool Sets
2829
+ 6341 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Nail Buffers
2830
+ 2828 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Nail Clippers
2831
+ 499698 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Nail Drill Accessories
2832
+ 7490 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Nail Drills
2833
+ 5880 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Nail Dryers
2834
+ 2734 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Nail Tools > Nail Files & Emery Boards
2835
+ 2958 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools
2836
+ 6760 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Facial Saunas
2837
+ 7190 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Foot Files
2838
+ 499926 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Lotion & Sunscreen Applicators
2839
+ 2511 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Pumice Stones
2840
+ 6261 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Skin Care Extractors
2841
+ 7018 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Skin Care Rollers
2842
+ 8132 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Skin Cleansing Brush Heads
2843
+ 6260 - Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools > Skin Care Tools > Skin Cleansing Brushes & Systems
2844
+ 477 - Health & Beauty > Personal Care > Cosmetics > Makeup
2845
+ 5978 - Health & Beauty > Personal Care > Cosmetics > Makeup > Body Makeup
2846
+ 5981 - Health & Beauty > Personal Care > Cosmetics > Makeup > Body Makeup > Body & Hair Glitter
2847
+ 5979 - Health & Beauty > Personal Care > Cosmetics > Makeup > Body Makeup > Body Paint & Foundation
2848
+ 4779 - Health & Beauty > Personal Care > Cosmetics > Makeup > Costume & Stage Makeup
2849
+ 2779 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup
2850
+ 8220 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Eye Primer
2851
+ 2904 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Eye Shadow
2852
+ 2686 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Eyebrow Enhancers
2853
+ 2807 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Eyeliner
2854
+ 2761 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > False Eyelashes
2855
+ 6340 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Lash & Brow Growth Treatments
2856
+ 2834 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Mascara
2857
+ 8219 - Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Mascara Primer
2858
+ 2571 - Health & Beauty > Personal Care > Cosmetics > Makeup > Face Makeup
2859
+ 6305 - Health & Beauty > Personal Care > Cosmetics > Makeup > Face Makeup > Blushes & Bronzers
2860
+ 2980 - Health & Beauty > Personal Care > Cosmetics > Makeup > Face Makeup > Face Powder
2861
+ 8218 - Health & Beauty > Personal Care > Cosmetics > Makeup > Face Makeup > Face Primer
2862
+ 2765 - Health & Beauty > Personal Care > Cosmetics > Makeup > Face Makeup > Foundations & Concealers
2863
+ 6304 - Health & Beauty > Personal Care > Cosmetics > Makeup > Face Makeup > Highlighters & Luminizers
2864
+ 2645 - Health & Beauty > Personal Care > Cosmetics > Makeup > Lip Makeup
2865
+ 6306 - Health & Beauty > Personal Care > Cosmetics > Makeup > Lip Makeup > Lip & Cheek Stains
2866
+ 2858 - Health & Beauty > Personal Care > Cosmetics > Makeup > Lip Makeup > Lip Gloss
2867
+ 2589 - Health & Beauty > Personal Care > Cosmetics > Makeup > Lip Makeup > Lip Liner
2868
+ 8217 - Health & Beauty > Personal Care > Cosmetics > Makeup > Lip Makeup > Lip Primer
2869
+ 3021 - Health & Beauty > Personal Care > Cosmetics > Makeup > Lip Makeup > Lipstick
2870
+ 6072 - Health & Beauty > Personal Care > Cosmetics > Makeup > Makeup Finishing Sprays
2871
+ 3509 - Health & Beauty > Personal Care > Cosmetics > Makeup > Temporary Tattoos
2872
+ 478 - Health & Beauty > Personal Care > Cosmetics > Nail Care
2873
+ 3009 - Health & Beauty > Personal Care > Cosmetics > Nail Care > Cuticle Cream & Oil
2874
+ 4218 - Health & Beauty > Personal Care > Cosmetics > Nail Care > False Nails
2875
+ 6893 - Health & Beauty > Personal Care > Cosmetics > Nail Care > Manicure Glue
2876
+ 5975 - Health & Beauty > Personal Care > Cosmetics > Nail Care > Nail Art Kits & Accessories
2877
+ 233419 - Health & Beauty > Personal Care > Cosmetics > Nail Care > Nail Polish Drying Drops & Sprays
2878
+ 2946 - Health & Beauty > Personal Care > Cosmetics > Nail Care > Nail Polish Removers
2879
+ 7445 - Health & Beauty > Personal Care > Cosmetics > Nail Care > Nail Polish Thinners
2880
+ 2683 - Health & Beauty > Personal Care > Cosmetics > Nail Care > Nail Polishes
2881
+ 479 - Health & Beauty > Personal Care > Cosmetics > Perfume & Cologne
2882
+ 567 - Health & Beauty > Personal Care > Cosmetics > Skin Care
2883
+ 481 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Acne Treatments & Kits
2884
+ 7429 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Anti-Aging Skin Care Kits
2885
+ 6104 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Body Oil
2886
+ 5980 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Body Powder
2887
+ 8029 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Compressed Skin Care Mask Sheets
2888
+ 2526 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Facial Cleansers
2889
+ 7467 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Facial Cleansing Kits
2890
+ 6791 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Facial Pore Strips
2891
+ 482 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Lip Balms & Treatments
2892
+ 543573 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Lip Balms & Treatments > Lip Balms
2893
+ 543574 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Lip Balms & Treatments > Medicated Lip Treatments
2894
+ 2592 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer
2895
+ 6034 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Makeup Removers
2896
+ 6753 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Petroleum Jelly
2897
+ 6262 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Skin Care Masks & Peels
2898
+ 5820 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Skin Insect Repellent
2899
+ 2844 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Sunscreen
2900
+ 2740 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Tanning Products
2901
+ 5338 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Tanning Products > Self Tanner
2902
+ 5339 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Tanning Products > Tanning Oil & Lotion
2903
+ 5976 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Toners & Astringents
2904
+ 543659 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Toners & Astringents > Astringents
2905
+ 543658 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Toners & Astringents > Toners
2906
+ 6863 - Health & Beauty > Personal Care > Cosmetics > Skin Care > Wart Removers
2907
+ 4929 - Health & Beauty > Personal Care > Cotton Balls
2908
+ 2934 - Health & Beauty > Personal Care > Cotton Swabs
2909
+ 484 - Health & Beauty > Personal Care > Deodorant & Anti-Perspirant
2910
+ 543599 - Health & Beauty > Personal Care > Deodorant & Anti-Perspirant > Anti-Perspirant
2911
+ 543598 - Health & Beauty > Personal Care > Deodorant & Anti-Perspirant > Deodorant
2912
+ 506 - Health & Beauty > Personal Care > Ear Care
2913
+ 5706 - Health & Beauty > Personal Care > Ear Care > Ear Candles
2914
+ 6559 - Health & Beauty > Personal Care > Ear Care > Ear Drops
2915
+ 6560 - Health & Beauty > Personal Care > Ear Care > Ear Dryers
2916
+ 500024 - Health & Beauty > Personal Care > Ear Care > Ear Picks & Spoons
2917
+ 6561 - Health & Beauty > Personal Care > Ear Care > Ear Syringes
2918
+ 6562 - Health & Beauty > Personal Care > Ear Care > Ear Wax Removal Kits
2919
+ 7542 - Health & Beauty > Personal Care > Ear Care > Earplug Dispensers
2920
+ 2596 - Health & Beauty > Personal Care > Ear Care > Earplugs
2921
+ 7134 - Health & Beauty > Personal Care > Enema Kits & Supplies
2922
+ 485 - Health & Beauty > Personal Care > Feminine Sanitary Supplies
2923
+ 6862 - Health & Beauty > Personal Care > Feminine Sanitary Supplies > Feminine Deodorant
2924
+ 5821 - Health & Beauty > Personal Care > Feminine Sanitary Supplies > Feminine Douches & Creams
2925
+ 2387 - Health & Beauty > Personal Care > Feminine Sanitary Supplies > Feminine Pads & Protectors
2926
+ 8122 - Health & Beauty > Personal Care > Feminine Sanitary Supplies > Menstrual Cups
2927
+ 2564 - Health & Beauty > Personal Care > Feminine Sanitary Supplies > Tampons
2928
+ 515 - Health & Beauty > Personal Care > Foot Care
2929
+ 2992 - Health & Beauty > Personal Care > Foot Care > Bunion Care Supplies
2930
+ 3022 - Health & Beauty > Personal Care > Foot Care > Corn & Callus Care Supplies
2931
+ 3049 - Health & Beauty > Personal Care > Foot Care > Foot Odor Removers
2932
+ 2801 - Health & Beauty > Personal Care > Foot Care > Insoles & Inserts
2933
+ 7495 - Health & Beauty > Personal Care > Foot Care > Toe Spacers
2934
+ 486 - Health & Beauty > Personal Care > Hair Care
2935
+ 8452 - Health & Beauty > Personal Care > Hair Care > Hair Care Kits
2936
+ 2814 - Health & Beauty > Personal Care > Hair Care > Hair Color
2937
+ 6053 - Health & Beauty > Personal Care > Hair Care > Hair Color Removers
2938
+ 5977 - Health & Beauty > Personal Care > Hair Care > Hair Coloring Accessories
2939
+ 6099 - Health & Beauty > Personal Care > Hair Care > Hair Loss Concealers
2940
+ 4766 - Health & Beauty > Personal Care > Hair Care > Hair Loss Treatments
2941
+ 6052 - Health & Beauty > Personal Care > Hair Care > Hair Permanents & Straighteners
2942
+ 3013 - Health & Beauty > Personal Care > Hair Care > Hair Shears
2943
+ 6429 - Health & Beauty > Personal Care > Hair Care > Hair Steamers & Heat Caps
2944
+ 1901 - Health & Beauty > Personal Care > Hair Care > Hair Styling Products
2945
+ 6018 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tool Accessories
2946
+ 5317 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tool Accessories > Hair Curler Clips & Pins
2947
+ 4475 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tool Accessories > Hair Dryer Accessories
2948
+ 4569 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tool Accessories > Hair Iron Accessories
2949
+ 6019 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tools
2950
+ 487 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tools > Combs & Brushes
2951
+ 489 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tools > Curling Irons
2952
+ 488 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tools > Hair Curlers
2953
+ 490 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tools > Hair Dryers
2954
+ 3407 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tools > Hair Straighteners
2955
+ 499992 - Health & Beauty > Personal Care > Hair Care > Hair Styling Tools > Hair Styling Tool Sets
2956
+ 2441 - Health & Beauty > Personal Care > Hair Care > Shampoo & Conditioner
2957
+ 543616 - Health & Beauty > Personal Care > Hair Care > Shampoo & Conditioner > Conditioners
2958
+ 543615 - Health & Beauty > Personal Care > Hair Care > Shampoo & Conditioner > Shampoo
2959
+ 543617 - Health & Beauty > Personal Care > Hair Care > Shampoo & Conditioner > Shampoo & Conditioner Sets
2960
+ 5663 - Health & Beauty > Personal Care > Massage & Relaxation
2961
+ 500060 - Health & Beauty > Personal Care > Massage & Relaxation > Back Scratchers
2962
+ 233420 - Health & Beauty > Personal Care > Massage & Relaxation > Eye Pillows
2963
+ 1442 - Health & Beauty > Personal Care > Massage & Relaxation > Massage Chairs
2964
+ 5664 - Health & Beauty > Personal Care > Massage & Relaxation > Massage Oil
2965
+ 8530 - Health & Beauty > Personal Care > Massage & Relaxation > Massage Stone Warmers
2966
+ 8135 - Health & Beauty > Personal Care > Massage & Relaxation > Massage Stones
2967
+ 2074 - Health & Beauty > Personal Care > Massage & Relaxation > Massage Tables
2968
+ 471 - Health & Beauty > Personal Care > Massage & Relaxation > Massagers
2969
+ 543596 - Health & Beauty > Personal Care > Massage & Relaxation > Massagers > Electric Massagers
2970
+ 543597 - Health & Beauty > Personal Care > Massage & Relaxation > Massagers > Manual Massage Tools
2971
+ 543595 - Health & Beauty > Personal Care > Massage & Relaxation > Massagers > Massage Cushions
2972
+ 526 - Health & Beauty > Personal Care > Oral Care
2973
+ 6189 - Health & Beauty > Personal Care > Oral Care > Breath Spray
2974
+ 2620 - Health & Beauty > Personal Care > Oral Care > Dental Floss
2975
+ 5823 - Health & Beauty > Personal Care > Oral Care > Dental Mouthguards
2976
+ 6455 - Health & Beauty > Personal Care > Oral Care > Dental Water Jet Replacement Tips
2977
+ 5295 - Health & Beauty > Personal Care > Oral Care > Dental Water Jets
2978
+ 5155 - Health & Beauty > Personal Care > Oral Care > Denture Adhesives
2979
+ 5824 - Health & Beauty > Personal Care > Oral Care > Denture Cleaners
2980
+ 8543 - Health & Beauty > Personal Care > Oral Care > Denture Repair Kits
2981
+ 2527 - Health & Beauty > Personal Care > Oral Care > Dentures
2982
+ 2769 - Health & Beauty > Personal Care > Oral Care > Gum Stimulators
2983
+ 3040 - Health & Beauty > Personal Care > Oral Care > Mouthwash
2984
+ 505367 - Health & Beauty > Personal Care > Oral Care > Orthodontic Appliance Cases
2985
+ 6715 - Health & Beauty > Personal Care > Oral Care > Power Flossers
2986
+ 3019 - Health & Beauty > Personal Care > Oral Care > Teeth Whiteners
2987
+ 6441 - Health & Beauty > Personal Care > Oral Care > Tongue Scrapers
2988
+ 4775 - Health & Beauty > Personal Care > Oral Care > Toothbrush Accessories
2989
+ 6920 - Health & Beauty > Personal Care > Oral Care > Toothbrush Accessories > Toothbrush Covers
2990
+ 4776 - Health & Beauty > Personal Care > Oral Care > Toothbrush Accessories > Toothbrush Replacement Heads
2991
+ 4942 - Health & Beauty > Personal Care > Oral Care > Toothbrush Accessories > Toothbrush Sanitizers
2992
+ 527 - Health & Beauty > Personal Care > Oral Care > Toothbrushes
2993
+ 1360 - Health & Beauty > Personal Care > Oral Care > Toothpaste
2994
+ 5154 - Health & Beauty > Personal Care > Oral Care > Toothpaste Squeezers & Dispensers
2995
+ 4316 - Health & Beauty > Personal Care > Oral Care > Toothpicks
2996
+ 777 - Health & Beauty > Personal Care > Personal Lubricants
2997
+ 528 - Health & Beauty > Personal Care > Shaving & Grooming
2998
+ 529 - Health & Beauty > Personal Care > Shaving & Grooming > Aftershave
2999
+ 8214 - Health & Beauty > Personal Care > Shaving & Grooming > Body & Facial Hair Bleach
3000
+ 531 - Health & Beauty > Personal Care > Shaving & Grooming > Electric Razor Accessories
3001
+ 532 - Health & Beauty > Personal Care > Shaving & Grooming > Electric Razors
3002
+ 6842 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Clipper & Trimmer Accessories
3003
+ 533 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Clippers & Trimmers
3004
+ 4507 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Removal
3005
+ 4508 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Removal > Depilatories
3006
+ 4509 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Removal > Electrolysis Devices
3007
+ 4510 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Removal > Epilators
3008
+ 8136 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Removal > Hair Removal Wax Warmers
3009
+ 7199 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Removal > Laser & IPL Hair Removal Devices
3010
+ 4511 - Health & Beauty > Personal Care > Shaving & Grooming > Hair Removal > Waxing Kits & Supplies
3011
+ 534 - Health & Beauty > Personal Care > Shaving & Grooming > Razors & Razor Blades
3012
+ 8531 - Health & Beauty > Personal Care > Shaving & Grooming > Shaving Bowls & Mugs
3013
+ 2681 - Health & Beauty > Personal Care > Shaving & Grooming > Shaving Brushes
3014
+ 2971 - Health & Beauty > Personal Care > Shaving & Grooming > Shaving Cream
3015
+ 5111 - Health & Beauty > Personal Care > Shaving & Grooming > Shaving Kits
3016
+ 2508 - Health & Beauty > Personal Care > Shaving & Grooming > Styptic Pencils
3017
+ 4076 - Health & Beauty > Personal Care > Sleeping Aids
3018
+ 4313 - Health & Beauty > Personal Care > Sleeping Aids > Eye Masks
3019
+ 6017 - Health & Beauty > Personal Care > Sleeping Aids > Snoring & Sleep Apnea Aids
3020
+ 4211 - Health & Beauty > Personal Care > Sleeping Aids > Travel Pillows
3021
+ 4056 - Health & Beauty > Personal Care > Sleeping Aids > White Noise Machines
3022
+ 6921 - Health & Beauty > Personal Care > Spray Tanning Tents
3023
+ 472 - Health & Beauty > Personal Care > Tanning Beds
3024
+ 2656 - Health & Beauty > Personal Care > Tweezers
3025
+ 1380 - Health & Beauty > Personal Care > Vision Care
3026
+ 3011 - Health & Beauty > Personal Care > Vision Care > Contact Lens Care
3027
+ 7363 - Health & Beauty > Personal Care > Vision Care > Contact Lens Care > Contact Lens Care Kits
3028
+ 6510 - Health & Beauty > Personal Care > Vision Care > Contact Lens Care > Contact Lens Cases
3029
+ 6509 - Health & Beauty > Personal Care > Vision Care > Contact Lens Care > Contact Lens Solution
3030
+ 2923 - Health & Beauty > Personal Care > Vision Care > Contact Lenses
3031
+ 2922 - Health & Beauty > Personal Care > Vision Care > Eye Drops & Lubricants
3032
+ 2733 - Health & Beauty > Personal Care > Vision Care > Eyeglass Lenses
3033
+ 524 - Health & Beauty > Personal Care > Vision Care > Eyeglasses
3034
+ 2521 - Health & Beauty > Personal Care > Vision Care > Eyewear Accessories
3035
+ 5507 - Health & Beauty > Personal Care > Vision Care > Eyewear Accessories > Eyewear Cases & Holders
3036
+ 352853 - Health & Beauty > Personal Care > Vision Care > Eyewear Accessories > Eyewear Lens Cleaning Solutions
3037
+ 543538 - Health & Beauty > Personal Care > Vision Care > Eyewear Accessories > Eyewear Replacement Parts
3038
+ 8204 - Health & Beauty > Personal Care > Vision Care > Eyewear Accessories > Eyewear Straps & Chains
3039
+ 6977 - Health & Beauty > Personal Care > Vision Care > Sunglass Lenses
3040
+ 536 - Home & Garden
3041
+ 574 - Home & Garden > Bathroom Accessories
3042
+ 575 - Home & Garden > Bathroom Accessories > Bath Caddies
3043
+ 577 - Home & Garden > Bathroom Accessories > Bath Mats & Rugs
3044
+ 4366 - Home & Garden > Bathroom Accessories > Bath Pillows
3045
+ 7093 - Home & Garden > Bathroom Accessories > Bathroom Accessory Mounts
3046
+ 6858 - Home & Garden > Bathroom Accessories > Bathroom Accessory Sets
3047
+ 579 - Home & Garden > Bathroom Accessories > Facial Tissue Holders
3048
+ 8016 - Home & Garden > Bathroom Accessories > Hand Dryer Accessories
3049
+ 5141 - Home & Garden > Bathroom Accessories > Hand Dryers
3050
+ 2418 - Home & Garden > Bathroom Accessories > Medicine Cabinets
3051
+ 2034 - Home & Garden > Bathroom Accessories > Robe Hooks
3052
+ 8114 - Home & Garden > Bathroom Accessories > Safety Grab Bars
3053
+ 578 - Home & Garden > Bathroom Accessories > Shower Curtain Rings
3054
+ 580 - Home & Garden > Bathroom Accessories > Shower Curtains
3055
+ 1962 - Home & Garden > Bathroom Accessories > Shower Rods
3056
+ 4971 - Home & Garden > Bathroom Accessories > Soap & Lotion Dispensers
3057
+ 582 - Home & Garden > Bathroom Accessories > Soap Dishes & Holders
3058
+ 7509 - Home & Garden > Bathroom Accessories > Toilet Brush Replacement Heads
3059
+ 583 - Home & Garden > Bathroom Accessories > Toilet Brushes & Holders
3060
+ 584 - Home & Garden > Bathroom Accessories > Toilet Paper Holders
3061
+ 585 - Home & Garden > Bathroom Accessories > Toothbrush Holders
3062
+ 586 - Home & Garden > Bathroom Accessories > Towel Racks & Holders
3063
+ 359 - Home & Garden > Business & Home Security
3064
+ 5491 - Home & Garden > Business & Home Security > Dummy Surveillance Cameras
3065
+ 3873 - Home & Garden > Business & Home Security > Home Alarm Systems
3066
+ 2161 - Home & Garden > Business & Home Security > Motion Sensors
3067
+ 500025 - Home & Garden > Business & Home Security > Safety & Security Mirrors
3068
+ 363 - Home & Garden > Business & Home Security > Security Lights
3069
+ 364 - Home & Garden > Business & Home Security > Security Monitors & Recorders
3070
+ 499865 - Home & Garden > Business & Home Security > Security Safe Accessories
3071
+ 3819 - Home & Garden > Business & Home Security > Security Safes
3072
+ 365 - Home & Garden > Business & Home Security > Security System Sensors
3073
+ 696 - Home & Garden > Decor
3074
+ 572 - Home & Garden > Decor > Address Signs
3075
+ 6265 - Home & Garden > Decor > Artificial Flora
3076
+ 6266 - Home & Garden > Decor > Artificial Food
3077
+ 9 - Home & Garden > Decor > Artwork
3078
+ 500045 - Home & Garden > Decor > Artwork > Decorative Tapestries
3079
+ 500044 - Home & Garden > Decor > Artwork > Posters, Prints, & Visual Artwork
3080
+ 11 - Home & Garden > Decor > Artwork > Sculptures & Statues
3081
+ 4456 - Home & Garden > Decor > Backrest Pillows
3082
+ 573 - Home & Garden > Decor > Baskets
3083
+ 5521 - Home & Garden > Decor > Bird & Wildlife Feeder Accessories
3084
+ 6993 - Home & Garden > Decor > Bird & Wildlife Feeders
3085
+ 698 - Home & Garden > Decor > Bird & Wildlife Feeders > Bird Feeders
3086
+ 6995 - Home & Garden > Decor > Bird & Wildlife Feeders > Butterfly Feeders
3087
+ 6994 - Home & Garden > Decor > Bird & Wildlife Feeders > Squirrel Feeders
3088
+ 230911 - Home & Garden > Decor > Bird & Wildlife House Accessories
3089
+ 500078 - Home & Garden > Decor > Bird & Wildlife Houses
3090
+ 500079 - Home & Garden > Decor > Bird & Wildlife Houses > Bat Houses
3091
+ 699 - Home & Garden > Decor > Bird & Wildlife Houses > Birdhouses
3092
+ 500080 - Home & Garden > Decor > Bird & Wildlife Houses > Butterfly Houses
3093
+ 697 - Home & Garden > Decor > Bird Baths
3094
+ 587 - Home & Garden > Decor > Bookends
3095
+ 7380 - Home & Garden > Decor > Cardboard Cutouts
3096
+ 4453 - Home & Garden > Decor > Chair & Sofa Cushions
3097
+ 505827 - Home & Garden > Decor > Clock Parts
3098
+ 3890 - Home & Garden > Decor > Clocks
3099
+ 4546 - Home & Garden > Decor > Clocks > Alarm Clocks
3100
+ 6912 - Home & Garden > Decor > Clocks > Desk & Shelf Clocks
3101
+ 3696 - Home & Garden > Decor > Clocks > Floor & Grandfather Clocks
3102
+ 3840 - Home & Garden > Decor > Clocks > Wall Clocks
3103
+ 5708 - Home & Garden > Decor > Coat & Hat Racks
3104
+ 7206 - Home & Garden > Decor > Decorative Bells
3105
+ 6317 - Home & Garden > Decor > Decorative Bottles
3106
+ 6457 - Home & Garden > Decor > Decorative Bowls
3107
+ 7113 - Home & Garden > Decor > Decorative Jars
3108
+ 708 - Home & Garden > Decor > Decorative Plaques
3109
+ 5875 - Home & Garden > Decor > Decorative Plates
3110
+ 6456 - Home & Garden > Decor > Decorative Trays
3111
+ 2675 - Home & Garden > Decor > Door Mats
3112
+ 7172 - Home & Garden > Decor > Dreamcatchers
3113
+ 6936 - Home & Garden > Decor > Dried Flowers
3114
+ 6935 - Home & Garden > Decor > Ecospheres
3115
+ 5609 - Home & Garden > Decor > Figurines
3116
+ 7422 - Home & Garden > Decor > Finials
3117
+ 7419 - Home & Garden > Decor > Flag & Windsock Accessories
3118
+ 7420 - Home & Garden > Decor > Flag & Windsock Accessories > Flag & Windsock Pole Lights
3119
+ 503010 - Home & Garden > Decor > Flag & Windsock Accessories > Flag & Windsock Pole Mounting Hardware & Kits
3120
+ 7421 - Home & Garden > Decor > Flag & Windsock Accessories > Flag & Windsock Poles
3121
+ 701 - Home & Garden > Decor > Flags & Windsocks
3122
+ 4770 - Home & Garden > Decor > Flameless Candles
3123
+ 702 - Home & Garden > Decor > Fountains & Ponds
3124
+ 2921 - Home & Garden > Decor > Fountains & Ponds > Fountain & Pond Accessories
3125
+ 6763 - Home & Garden > Decor > Fountains & Ponds > Fountains & Waterfalls
3126
+ 2763 - Home & Garden > Decor > Fountains & Ponds > Ponds
3127
+ 704 - Home & Garden > Decor > Garden & Stepping Stones
3128
+ 499693 - Home & Garden > Decor > Growth Charts
3129
+ 3221 - Home & Garden > Decor > Home Decor Decals
3130
+ 500121 - Home & Garden > Decor > Home Fragrance Accessories
3131
+ 6336 - Home & Garden > Decor > Home Fragrance Accessories > Candle & Oil Warmers
3132
+ 2784 - Home & Garden > Decor > Home Fragrance Accessories > Candle Holders
3133
+ 500122 - Home & Garden > Decor > Home Fragrance Accessories > Candle Snuffers
3134
+ 4741 - Home & Garden > Decor > Home Fragrance Accessories > Incense Holders
3135
+ 592 - Home & Garden > Decor > Home Fragrances
3136
+ 3898 - Home & Garden > Decor > Home Fragrances > Air Fresheners
3137
+ 588 - Home & Garden > Decor > Home Fragrances > Candles
3138
+ 5847 - Home & Garden > Decor > Home Fragrances > Fragrance Oil
3139
+ 3686 - Home & Garden > Decor > Home Fragrances > Incense
3140
+ 4740 - Home & Garden > Decor > Home Fragrances > Potpourri
3141
+ 6767 - Home & Garden > Decor > Home Fragrances > Wax Tarts
3142
+ 503000 - Home & Garden > Decor > Hourglasses
3143
+ 7382 - Home & Garden > Decor > House Numbers & Letters
3144
+ 6547 - Home & Garden > Decor > Lawn Ornaments & Garden Sculptures
3145
+ 7436 - Home & Garden > Decor > Mail Slots
3146
+ 6333 - Home & Garden > Decor > Mailbox Accessories
3147
+ 7177 - Home & Garden > Decor > Mailbox Accessories > Mailbox Covers
3148
+ 7052 - Home & Garden > Decor > Mailbox Accessories > Mailbox Enclosures
3149
+ 7176 - Home & Garden > Decor > Mailbox Accessories > Mailbox Flags
3150
+ 6334 - Home & Garden > Decor > Mailbox Accessories > Mailbox Posts
3151
+ 7339 - Home & Garden > Decor > Mailbox Accessories > Mailbox Replacement Doors
3152
+ 706 - Home & Garden > Decor > Mailboxes
3153
+ 595 - Home & Garden > Decor > Mirrors
3154
+ 3473 - Home & Garden > Decor > Music Boxes
3155
+ 6324 - Home & Garden > Decor > Napkin Rings
3156
+ 5885 - Home & Garden > Decor > Novelty Signs
3157
+ 6927 - Home & Garden > Decor > Ottoman Cushions
3158
+ 597 - Home & Garden > Decor > Picture Frames
3159
+ 4295 - Home & Garden > Decor > Piggy Banks & Money Jars
3160
+ 709 - Home & Garden > Decor > Rain Chains
3161
+ 710 - Home & Garden > Decor > Rain Gauges
3162
+ 5876 - Home & Garden > Decor > Refrigerator Magnets
3163
+ 598 - Home & Garden > Decor > Rugs
3164
+ 596 - Home & Garden > Decor > Seasonal & Holiday Decorations
3165
+ 5359 - Home & Garden > Decor > Seasonal & Holiday Decorations > Advent Calendars
3166
+ 5504 - Home & Garden > Decor > Seasonal & Holiday Decorations > Christmas Tree Skirts
3167
+ 6603 - Home & Garden > Decor > Seasonal & Holiday Decorations > Christmas Tree Stands
3168
+ 499805 - Home & Garden > Decor > Seasonal & Holiday Decorations > Easter Egg Decorating Kits
3169
+ 6532 - Home & Garden > Decor > Seasonal & Holiday Decorations > Holiday Ornament Displays & Stands
3170
+ 499804 - Home & Garden > Decor > Seasonal & Holiday Decorations > Holiday Ornament Hooks
3171
+ 3144 - Home & Garden > Decor > Seasonal & Holiday Decorations > Holiday Ornaments
3172
+ 5990 - Home & Garden > Decor > Seasonal & Holiday Decorations > Holiday Stocking Hangers
3173
+ 5991 - Home & Garden > Decor > Seasonal & Holiday Decorations > Holiday Stockings
3174
+ 5930 - Home & Garden > Decor > Seasonal & Holiday Decorations > Japanese Traditional Dolls
3175
+ 6531 - Home & Garden > Decor > Seasonal & Holiday Decorations > Nativity Sets
3176
+ 505809 - Home & Garden > Decor > Seasonal & Holiday Decorations > Seasonal Village Sets & Accessories
3177
+ 5922 - Home & Garden > Decor > Shadow Boxes
3178
+ 599 - Home & Garden > Decor > Slipcovers
3179
+ 6535 - Home & Garden > Decor > Snow Globes
3180
+ 7173 - Home & Garden > Decor > Suncatchers
3181
+ 711 - Home & Garden > Decor > Sundials
3182
+ 4454 - Home & Garden > Decor > Throw Pillows
3183
+ 4233 - Home & Garden > Decor > Trunks
3184
+ 6424 - Home & Garden > Decor > Vase Fillers & Table Scatters
3185
+ 602 - Home & Garden > Decor > Vases
3186
+ 2334 - Home & Garden > Decor > Wallpaper
3187
+ 712 - Home & Garden > Decor > Weather Vanes & Roof Decor
3188
+ 714 - Home & Garden > Decor > Wind Chimes
3189
+ 2839 - Home & Garden > Decor > Wind Wheels & Spinners
3190
+ 6530 - Home & Garden > Decor > Window Magnets
3191
+ 6254 - Home & Garden > Decor > Window Treatment Accessories
3192
+ 6256 - Home & Garden > Decor > Window Treatment Accessories > Curtain & Drape Rings
3193
+ 6257 - Home & Garden > Decor > Window Treatment Accessories > Curtain & Drape Rods
3194
+ 6255 - Home & Garden > Decor > Window Treatment Accessories > Curtain Holdbacks & Tassels
3195
+ 8042 - Home & Garden > Decor > Window Treatment Accessories > Window Treatment Replacement Parts
3196
+ 603 - Home & Garden > Decor > Window Treatments
3197
+ 2882 - Home & Garden > Decor > Window Treatments > Curtains & Drapes
3198
+ 6492 - Home & Garden > Decor > Window Treatments > Stained Glass Panels
3199
+ 2885 - Home & Garden > Decor > Window Treatments > Window Blinds & Shades
3200
+ 5989 - Home & Garden > Decor > Window Treatments > Window Films
3201
+ 4375 - Home & Garden > Decor > Window Treatments > Window Screens
3202
+ 2621 - Home & Garden > Decor > Window Treatments > Window Valances & Cornices
3203
+ 3262 - Home & Garden > Decor > World Globes
3204
+ 6267 - Home & Garden > Decor > Wreaths & Garlands
3205
+ 5835 - Home & Garden > Emergency Preparedness
3206
+ 4490 - Home & Garden > Emergency Preparedness > Earthquake Alarms
3207
+ 6897 - Home & Garden > Emergency Preparedness > Emergency Blankets
3208
+ 5836 - Home & Garden > Emergency Preparedness > Emergency Food Kits
3209
+ 7058 - Home & Garden > Emergency Preparedness > Emergency Tools & Kits
3210
+ 4491 - Home & Garden > Emergency Preparedness > Furniture Anchors
3211
+ 2862 - Home & Garden > Fireplace & Wood Stove Accessories
3212
+ 2044 - Home & Garden > Fireplace & Wood Stove Accessories > Bellows
3213
+ 6563 - Home & Garden > Fireplace & Wood Stove Accessories > Fireplace & Wood Stove Grates
3214
+ 7523 - Home & Garden > Fireplace & Wood Stove Accessories > Fireplace Andirons
3215
+ 7109 - Home & Garden > Fireplace & Wood Stove Accessories > Fireplace Reflectors
3216
+ 2365 - Home & Garden > Fireplace & Wood Stove Accessories > Fireplace Screens
3217
+ 1530 - Home & Garden > Fireplace & Wood Stove Accessories > Fireplace Tools
3218
+ 625 - Home & Garden > Fireplace & Wood Stove Accessories > Firewood & Fuel
3219
+ 7091 - Home & Garden > Fireplace & Wood Stove Accessories > Hearth Pads
3220
+ 7029 - Home & Garden > Fireplace & Wood Stove Accessories > Log Rack & Carrier Accessories
3221
+ 695 - Home & Garden > Fireplace & Wood Stove Accessories > Log Racks & Carriers
3222
+ 4918 - Home & Garden > Fireplace & Wood Stove Accessories > Wood Stove Fans & Blowers
3223
+ 6792 - Home & Garden > Fireplaces
3224
+ 1679 - Home & Garden > Flood, Fire & Gas Safety
3225
+ 7226 - Home & Garden > Flood, Fire & Gas Safety > Fire Alarm Control Panels
3226
+ 1871 - Home & Garden > Flood, Fire & Gas Safety > Fire Alarms
3227
+ 1639 - Home & Garden > Flood, Fire & Gas Safety > Fire Extinguisher & Equipment Storage
3228
+ 1434 - Home & Garden > Flood, Fire & Gas Safety > Fire Extinguishers
3229
+ 1934 - Home & Garden > Flood, Fire & Gas Safety > Fire Sprinklers
3230
+ 7227 - Home & Garden > Flood, Fire & Gas Safety > Heat Detectors
3231
+ 499673 - Home & Garden > Flood, Fire & Gas Safety > Smoke & Carbon Monoxide Detectors
3232
+ 2164 - Home & Garden > Flood, Fire & Gas Safety > Smoke & Carbon Monoxide Detectors > Carbon Monoxide Detectors
3233
+ 1471 - Home & Garden > Flood, Fire & Gas Safety > Smoke & Carbon Monoxide Detectors > Smoke Detectors
3234
+ 1306 - Home & Garden > Flood, Fire & Gas Safety > Water & Flood Detectors
3235
+ 3348 - Home & Garden > Household Appliance Accessories
3236
+ 2367 - Home & Garden > Household Appliance Accessories > Air Conditioner Accessories
3237
+ 5826 - Home & Garden > Household Appliance Accessories > Air Conditioner Accessories > Air Conditioner Covers
3238
+ 3573 - Home & Garden > Household Appliance Accessories > Air Conditioner Accessories > Air Conditioner Filters
3239
+ 3410 - Home & Garden > Household Appliance Accessories > Air Purifier Accessories
3240
+ 3667 - Home & Garden > Household Appliance Accessories > Air Purifier Accessories > Air Purifier Filters
3241
+ 4667 - Home & Garden > Household Appliance Accessories > Dehumidifier Accessories
3242
+ 5089 - Home & Garden > Household Appliance Accessories > Fan Accessories
3243
+ 4548 - Home & Garden > Household Appliance Accessories > Floor & Steam Cleaner Accessories
3244
+ 6773 - Home & Garden > Household Appliance Accessories > Furnace & Boiler Accessories
3245
+ 7110 - Home & Garden > Household Appliance Accessories > Heating Radiator Accessories
3246
+ 7111 - Home & Garden > Household Appliance Accessories > Heating Radiator Accessories > Heating Radiator Reflectors
3247
+ 3862 - Home & Garden > Household Appliance Accessories > Humidifier Accessories
3248
+ 3402 - Home & Garden > Household Appliance Accessories > Humidifier Accessories > Humidifier Filters
3249
+ 3456 - Home & Garden > Household Appliance Accessories > Laundry Appliance Accessories
3250
+ 5158 - Home & Garden > Household Appliance Accessories > Laundry Appliance Accessories > Garment Steamer Accessories
3251
+ 5159 - Home & Garden > Household Appliance Accessories > Laundry Appliance Accessories > Iron Accessories
3252
+ 5160 - Home & Garden > Household Appliance Accessories > Laundry Appliance Accessories > Steam Press Accessories
3253
+ 500085 - Home & Garden > Household Appliance Accessories > Laundry Appliance Accessories > Washer & Dryer Accessories
3254
+ 4650 - Home & Garden > Household Appliance Accessories > Patio Heater Accessories
3255
+ 4651 - Home & Garden > Household Appliance Accessories > Patio Heater Accessories > Patio Heater Covers
3256
+ 618 - Home & Garden > Household Appliance Accessories > Vacuum Accessories
3257
+ 2751 - Home & Garden > Household Appliance Accessories > Water Heater Accessories
3258
+ 2310 - Home & Garden > Household Appliance Accessories > Water Heater Accessories > Anode Rods
3259
+ 2175 - Home & Garden > Household Appliance Accessories > Water Heater Accessories > Hot Water Tanks
3260
+ 1744 - Home & Garden > Household Appliance Accessories > Water Heater Accessories > Water Heater Elements
3261
+ 500063 - Home & Garden > Household Appliance Accessories > Water Heater Accessories > Water Heater Expansion Tanks
3262
+ 1835 - Home & Garden > Household Appliance Accessories > Water Heater Accessories > Water Heater Pans
3263
+ 2221 - Home & Garden > Household Appliance Accessories > Water Heater Accessories > Water Heater Stacks
3264
+ 1709 - Home & Garden > Household Appliance Accessories > Water Heater Accessories > Water Heater Vents
3265
+ 604 - Home & Garden > Household Appliances
3266
+ 1626 - Home & Garden > Household Appliances > Climate Control Appliances
3267
+ 605 - Home & Garden > Household Appliances > Climate Control Appliances > Air Conditioners
3268
+ 606 - Home & Garden > Household Appliances > Climate Control Appliances > Air Purifiers
3269
+ 607 - Home & Garden > Household Appliances > Climate Control Appliances > Dehumidifiers
3270
+ 7328 - Home & Garden > Household Appliances > Climate Control Appliances > Duct Heaters
3271
+ 6727 - Home & Garden > Household Appliances > Climate Control Appliances > Evaporative Coolers
3272
+ 608 - Home & Garden > Household Appliances > Climate Control Appliances > Fans
3273
+ 1700 - Home & Garden > Household Appliances > Climate Control Appliances > Fans > Ceiling Fans
3274
+ 2535 - Home & Garden > Household Appliances > Climate Control Appliances > Fans > Desk & Pedestal Fans
3275
+ 7527 - Home & Garden > Household Appliances > Climate Control Appliances > Fans > Powered Hand Fans & Misters
3276
+ 4485 - Home & Garden > Household Appliances > Climate Control Appliances > Fans > Ventilation Fans
3277
+ 8090 - Home & Garden > Household Appliances > Climate Control Appliances > Fans > Wall Mount Fans
3278
+ 3082 - Home & Garden > Household Appliances > Climate Control Appliances > Furnaces & Boilers
3279
+ 2060 - Home & Garden > Household Appliances > Climate Control Appliances > Heating Radiators
3280
+ 613 - Home & Garden > Household Appliances > Climate Control Appliances > Humidifiers
3281
+ 6709 - Home & Garden > Household Appliances > Climate Control Appliances > Outdoor Misting Systems
3282
+ 2649 - Home & Garden > Household Appliances > Climate Control Appliances > Patio Heaters
3283
+ 611 - Home & Garden > Household Appliances > Climate Control Appliances > Space Heaters
3284
+ 235920 - Home & Garden > Household Appliances > Floor & Carpet Dryers
3285
+ 616 - Home & Garden > Household Appliances > Floor & Steam Cleaners
3286
+ 543601 - Home & Garden > Household Appliances > Floor & Steam Cleaners > Carpet Shampooers
3287
+ 543600 - Home & Garden > Household Appliances > Floor & Steam Cleaners > Carpet Steamers
3288
+ 543602 - Home & Garden > Household Appliances > Floor & Steam Cleaners > Floor Scrubbers
3289
+ 543603 - Home & Garden > Household Appliances > Floor & Steam Cleaners > Steam Mops
3290
+ 5294 - Home & Garden > Household Appliances > Floor Polishers & Buffers
3291
+ 4483 - Home & Garden > Household Appliances > Futon Dryers
3292
+ 6741 - Home & Garden > Household Appliances > Garage Door Keypads & Remotes
3293
+ 609 - Home & Garden > Household Appliances > Garage Door Openers
3294
+ 2706 - Home & Garden > Household Appliances > Laundry Appliances
3295
+ 2612 - Home & Garden > Household Appliances > Laundry Appliances > Dryers
3296
+ 5138 - Home & Garden > Household Appliances > Laundry Appliances > Garment Steamers
3297
+ 5139 - Home & Garden > Household Appliances > Laundry Appliances > Irons & Ironing Systems
3298
+ 2849 - Home & Garden > Household Appliances > Laundry Appliances > Laundry Combo Units
3299
+ 5140 - Home & Garden > Household Appliances > Laundry Appliances > Steam Presses
3300
+ 2549 - Home & Garden > Household Appliances > Laundry Appliances > Washing Machines
3301
+ 500081 - Home & Garden > Household Appliances > Ultrasonic Cleaners
3302
+ 619 - Home & Garden > Household Appliances > Vacuums
3303
+ 7121 - Home & Garden > Household Appliances > Wallpaper Steamers
3304
+ 621 - Home & Garden > Household Appliances > Water Heaters
3305
+ 630 - Home & Garden > Household Supplies
3306
+ 7351 - Home & Garden > Household Supplies > Drawer & Shelf Liners
3307
+ 499674 - Home & Garden > Household Supplies > Floor Protection Films & Runners
3308
+ 7214 - Home & Garden > Household Supplies > Furniture Floor Protectors
3309
+ 8522 - Home & Garden > Household Supplies > Garage Floor Mats
3310
+ 2374 - Home & Garden > Household Supplies > Garbage Bags
3311
+ 623 - Home & Garden > Household Supplies > Household Cleaning Supplies
3312
+ 4671 - Home & Garden > Household Supplies > Household Cleaning Supplies > Broom & Mop Handles
3313
+ 499892 - Home & Garden > Household Supplies > Household Cleaning Supplies > Broom Heads
3314
+ 2857 - Home & Garden > Household Supplies > Household Cleaning Supplies > Brooms
3315
+ 6437 - Home & Garden > Household Supplies > Household Cleaning Supplies > Buckets
3316
+ 4677 - Home & Garden > Household Supplies > Household Cleaning Supplies > Carpet Sweepers
3317
+ 5113 - Home & Garden > Household Supplies > Household Cleaning Supplies > Cleaning Gloves
3318
+ 6263 - Home & Garden > Household Supplies > Household Cleaning Supplies > Duster Refills
3319
+ 2250 - Home & Garden > Household Supplies > Household Cleaning Supplies > Dusters
3320
+ 4515 - Home & Garden > Household Supplies > Household Cleaning Supplies > Dustpans
3321
+ 6419 - Home & Garden > Household Supplies > Household Cleaning Supplies > Fabric & Upholstery Protectors
3322
+ 4973 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products
3323
+ 7330 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > All-Purpose Cleaners
3324
+ 4974 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Carpet Cleaners
3325
+ 500065 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Descalers & Decalcifiers
3326
+ 4975 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Dish Detergent & Soap
3327
+ 7510 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Dishwasher Cleaners
3328
+ 8043 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Fabric & Upholstery Cleaners
3329
+ 4977 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Floor Cleaners
3330
+ 5825 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Furniture Cleaners & Polish
3331
+ 4976 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Glass & Surface Cleaners
3332
+ 543649 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Glass & Surface Cleaners > Glass Cleaners
3333
+ 543650 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Glass & Surface Cleaners > Muti-surface Cleaners
3334
+ 6474 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Household Disinfectants
3335
+ 4978 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Oven & Grill Cleaners
3336
+ 4979 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Pet Odor & Stain Removers
3337
+ 7552 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Rinse Aids
3338
+ 7426 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Stainless Steel Cleaners & Polishes
3339
+ 4980 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Toilet Bowl Cleaners
3340
+ 4981 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Tub & Tile Cleaners
3341
+ 7462 - Home & Garden > Household Supplies > Household Cleaning Supplies > Household Cleaning Products > Washing Machine Cleaners
3342
+ 6264 - Home & Garden > Household Supplies > Household Cleaning Supplies > Mop Heads & Refills
3343
+ 2713 - Home & Garden > Household Supplies > Household Cleaning Supplies > Mops
3344
+ 499767 - Home & Garden > Household Supplies > Household Cleaning Supplies > Scrub Brush Heads & Refills
3345
+ 4670 - Home & Garden > Household Supplies > Household Cleaning Supplies > Scrub Brushes
3346
+ 8071 - Home & Garden > Household Supplies > Household Cleaning Supplies > Shop Towels & General-Purpose Cleaning Cloths
3347
+ 2796 - Home & Garden > Household Supplies > Household Cleaning Supplies > Sponges & Scouring Pads
3348
+ 2610 - Home & Garden > Household Supplies > Household Cleaning Supplies > Squeegees
3349
+ 2530 - Home & Garden > Household Supplies > Household Paper Products
3350
+ 624 - Home & Garden > Household Supplies > Household Paper Products > Facial Tissues
3351
+ 3846 - Home & Garden > Household Supplies > Household Paper Products > Paper Napkins
3352
+ 2742 - Home & Garden > Household Supplies > Household Paper Products > Paper Towels
3353
+ 629 - Home & Garden > Household Supplies > Household Paper Products > Toilet Paper
3354
+ 3355 - Home & Garden > Household Supplies > Household Thermometers
3355
+ 627 - Home & Garden > Household Supplies > Laundry Supplies
3356
+ 4982 - Home & Garden > Household Supplies > Laundry Supplies > Bleach
3357
+ 5704 - Home & Garden > Household Supplies > Laundry Supplies > Clothespins
3358
+ 7320 - Home & Garden > Household Supplies > Laundry Supplies > Dry Cleaning Kits
3359
+ 2677 - Home & Garden > Household Supplies > Laundry Supplies > Drying Racks & Hangers
3360
+ 6240 - Home & Garden > Household Supplies > Laundry Supplies > Fabric Refreshers
3361
+ 5705 - Home & Garden > Household Supplies > Laundry Supplies > Fabric Shavers
3362
+ 2794 - Home & Garden > Household Supplies > Laundry Supplies > Fabric Softeners & Dryer Sheets
3363
+ 4657 - Home & Garden > Household Supplies > Laundry Supplies > Fabric Stain Removers
3364
+ 6387 - Home & Garden > Household Supplies > Laundry Supplies > Fabric Starch
3365
+ 7457 - Home & Garden > Household Supplies > Laundry Supplies > Garment Shields
3366
+ 499937 - Home & Garden > Household Supplies > Laundry Supplies > Iron Rests
3367
+ 4656 - Home & Garden > Household Supplies > Laundry Supplies > Ironing Board Pads & Covers
3368
+ 499931 - Home & Garden > Household Supplies > Laundry Supplies > Ironing Board Replacement Parts
3369
+ 633 - Home & Garden > Household Supplies > Laundry Supplies > Ironing Boards
3370
+ 5084 - Home & Garden > Household Supplies > Laundry Supplies > Laundry Balls
3371
+ 634 - Home & Garden > Household Supplies > Laundry Supplies > Laundry Baskets
3372
+ 2754 - Home & Garden > Household Supplies > Laundry Supplies > Laundry Detergent
3373
+ 5085 - Home & Garden > Household Supplies > Laundry Supplies > Laundry Wash Bags & Frames
3374
+ 3080 - Home & Garden > Household Supplies > Laundry Supplies > Lint Rollers
3375
+ 7502 - Home & Garden > Household Supplies > Laundry Supplies > Wrinkle Releasers & Anti-Static Sprays
3376
+ 7406 - Home & Garden > Household Supplies > Moisture Absorbers
3377
+ 728 - Home & Garden > Household Supplies > Pest Control
3378
+ 4220 - Home & Garden > Household Supplies > Pest Control > Fly Swatters
3379
+ 2631 - Home & Garden > Household Supplies > Pest Control > Pest Control Traps
3380
+ 2869 - Home & Garden > Household Supplies > Pest Control > Pesticides
3381
+ 2865 - Home & Garden > Household Supplies > Pest Control > Repellents
3382
+ 7137 - Home & Garden > Household Supplies > Pest Control > Repellents > Animal & Pet Repellents
3383
+ 512 - Home & Garden > Household Supplies > Pest Control > Repellents > Household Insect Repellents
3384
+ 3307 - Home & Garden > Household Supplies > Rug Pads
3385
+ 628 - Home & Garden > Household Supplies > Shoe Care & Tools
3386
+ 5600 - Home & Garden > Household Supplies > Shoe Care & Tools > Boot Pulls
3387
+ 2301 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Bags
3388
+ 1874 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Brushes
3389
+ 8033 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Care Kits
3390
+ 2371 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Dryers
3391
+ 5601 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Horns & Dressing Aids
3392
+ 8032 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Polishers
3393
+ 1659 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Polishes & Waxes
3394
+ 8031 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Scrapers
3395
+ 5604 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Treatments & Dyes
3396
+ 2431 - Home & Garden > Household Supplies > Shoe Care & Tools > Shoe Trees & Shapers
3397
+ 499885 - Home & Garden > Household Supplies > Stair Treads
3398
+ 636 - Home & Garden > Household Supplies > Storage & Organization
3399
+ 5558 - Home & Garden > Household Supplies > Storage & Organization > Clothing & Closet Storage
3400
+ 3722 - Home & Garden > Household Supplies > Storage & Organization > Clothing & Closet Storage > Charging Valets
3401
+ 5714 - Home & Garden > Household Supplies > Storage & Organization > Clothing & Closet Storage > Closet Organizers & Garment Racks
3402
+ 5716 - Home & Garden > Household Supplies > Storage & Organization > Clothing & Closet Storage > Clothes Valets
3403
+ 631 - Home & Garden > Household Supplies > Storage & Organization > Clothing & Closet Storage > Hangers
3404
+ 7514 - Home & Garden > Household Supplies > Storage & Organization > Clothing & Closet Storage > Hat Boxes
3405
+ 5559 - Home & Garden > Household Supplies > Storage & Organization > Clothing & Closet Storage > Shoe Racks & Organizers
3406
+ 5128 - Home & Garden > Household Supplies > Storage & Organization > Flatware Chests
3407
+ 8058 - Home & Garden > Household Supplies > Storage & Organization > Household Drawer Organizer Inserts
3408
+ 3561 - Home & Garden > Household Supplies > Storage & Organization > Household Storage Bags
3409
+ 6986 - Home & Garden > Household Supplies > Storage & Organization > Household Storage Caddies
3410
+ 5631 - Home & Garden > Household Supplies > Storage & Organization > Household Storage Containers
3411
+ 7255 - Home & Garden > Household Supplies > Storage & Organization > Household Storage Drawers
3412
+ 4360 - Home & Garden > Household Supplies > Storage & Organization > Photo Storage
3413
+ 40 - Home & Garden > Household Supplies > Storage & Organization > Photo Storage > Photo Albums
3414
+ 4237 - Home & Garden > Household Supplies > Storage & Organization > Photo Storage > Photo Storage Boxes
3415
+ 2446 - Home & Garden > Household Supplies > Storage & Organization > Storage Hooks & Racks
3416
+ 499930 - Home & Garden > Household Supplies > Storage & Organization > Storage Hooks & Racks > Ironing Board Hooks & Racks
3417
+ 5494 - Home & Garden > Household Supplies > Storage & Organization > Storage Hooks & Racks > Umbrella Stands & Racks
3418
+ 5707 - Home & Garden > Household Supplies > Storage & Organization > Storage Hooks & Racks > Utility Hooks
3419
+ 5056 - Home & Garden > Household Supplies > Trash Compactor Accessories
3420
+ 4516 - Home & Garden > Household Supplies > Waste Containment
3421
+ 500039 - Home & Garden > Household Supplies > Waste Containment > Dumpsters
3422
+ 5143 - Home & Garden > Household Supplies > Waste Containment > Hazardous Waste Containers
3423
+ 4517 - Home & Garden > Household Supplies > Waste Containment > Recycling Containers
3424
+ 637 - Home & Garden > Household Supplies > Waste Containment > Trash Cans & Wastebaskets
3425
+ 6757 - Home & Garden > Household Supplies > Waste Containment Accessories
3426
+ 6765 - Home & Garden > Household Supplies > Waste Containment Accessories > Waste Container Carts
3427
+ 6726 - Home & Garden > Household Supplies > Waste Containment Accessories > Waste Container Enclosures
3428
+ 500115 - Home & Garden > Household Supplies > Waste Containment Accessories > Waste Container Labels & Signs
3429
+ 4717 - Home & Garden > Household Supplies > Waste Containment Accessories > Waste Container Lids
3430
+ 6758 - Home & Garden > Household Supplies > Waste Containment Accessories > Waste Container Wheels
3431
+ 638 - Home & Garden > Kitchen & Dining
3432
+ 649 - Home & Garden > Kitchen & Dining > Barware
3433
+ 7075 - Home & Garden > Kitchen & Dining > Barware > Absinthe Fountains
3434
+ 1817 - Home & Garden > Kitchen & Dining > Barware > Beer Dispensers & Taps
3435
+ 7569 - Home & Garden > Kitchen & Dining > Barware > Beverage Chilling Cubes & Sticks
3436
+ 505806 - Home & Garden > Kitchen & Dining > Barware > Beverage Tubs & Chillers
3437
+ 499990 - Home & Garden > Kitchen & Dining > Barware > Bottle Caps
3438
+ 4562 - Home & Garden > Kitchen & Dining > Barware > Bottle Stoppers & Savers
3439
+ 7238 - Home & Garden > Kitchen & Dining > Barware > Coaster Holders
3440
+ 2363 - Home & Garden > Kitchen & Dining > Barware > Coasters
3441
+ 6957 - Home & Garden > Kitchen & Dining > Barware > Cocktail & Barware Tool Sets
3442
+ 651 - Home & Garden > Kitchen & Dining > Barware > Cocktail Shakers & Tools
3443
+ 4222 - Home & Garden > Kitchen & Dining > Barware > Cocktail Shakers & Tools > Bar Ice Picks
3444
+ 3427 - Home & Garden > Kitchen & Dining > Barware > Cocktail Shakers & Tools > Bottle Openers
3445
+ 6956 - Home & Garden > Kitchen & Dining > Barware > Cocktail Shakers & Tools > Cocktail Shakers
3446
+ 505327 - Home & Garden > Kitchen & Dining > Barware > Cocktail Shakers & Tools > Cocktail Strainers
3447
+ 503757 - Home & Garden > Kitchen & Dining > Barware > Cocktail Shakers & Tools > Muddlers
3448
+ 2976 - Home & Garden > Kitchen & Dining > Barware > Corkscrews
3449
+ 650 - Home & Garden > Kitchen & Dining > Barware > Decanters
3450
+ 7139 - Home & Garden > Kitchen & Dining > Barware > Foil Cutters
3451
+ 4563 - Home & Garden > Kitchen & Dining > Barware > Wine Aerators
3452
+ 8493 - Home & Garden > Kitchen & Dining > Barware > Wine Bottle Holders
3453
+ 7008 - Home & Garden > Kitchen & Dining > Barware > Wine Glass Charms
3454
+ 6070 - Home & Garden > Kitchen & Dining > Cookware & Bakeware
3455
+ 640 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware
3456
+ 4764 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Bakeware Sets
3457
+ 641 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Baking & Cookie Sheets
3458
+ 642 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Bread Pans & Molds
3459
+ 6756 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Broiling Pans
3460
+ 643 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Cake Pans & Molds
3461
+ 644 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Muffin & Pastry Pans
3462
+ 645 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Pie & Quiche Pans
3463
+ 2843 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Pizza Pans
3464
+ 646 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Pizza Stones
3465
+ 647 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Ramekins & Souffle Dishes
3466
+ 648 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware > Roasting Pans
3467
+ 4502 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware Accessories
3468
+ 4503 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware Accessories > Baking Mats & Liners
3469
+ 7131 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware Accessories > Baking Weights
3470
+ 4726 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Bakeware Accessories > Roasting Pan Racks
3471
+ 654 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware
3472
+ 6071 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware & Bakeware Combo Sets
3473
+ 655 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Casserole Dishes
3474
+ 4721 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Cookware Sets
3475
+ 6838 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Crêpe & Blini Pans
3476
+ 656 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Double Boilers
3477
+ 657 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Dutch Ovens
3478
+ 6518 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Fermentation & Pickling Crocks
3479
+ 658 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Griddles & Grill Pans
3480
+ 5110 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Grill Presses
3481
+ 4459 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Paella Pans
3482
+ 660 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Pressure Cookers & Canners
3483
+ 661 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Saucepans
3484
+ 4423 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Sauté Pans
3485
+ 662 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Skillets & Frying Pans
3486
+ 663 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Stock Pots
3487
+ 659 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Stovetop Kettles
3488
+ 5340 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Tagines & Clay Cooking Pots
3489
+ 664 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware > Woks
3490
+ 4424 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories
3491
+ 4661 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories > Pot & Pan Handles
3492
+ 4660 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories > Pot & Pan Lids
3493
+ 4501 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories > Pressure Cooker & Canner Accessories
3494
+ 4529 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories > Steamer Baskets
3495
+ 4427 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories > Wok Accessories
3496
+ 4663 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories > Wok Accessories > Wok Brushes
3497
+ 4662 - Home & Garden > Kitchen & Dining > Cookware & Bakeware > Cookware Accessories > Wok Accessories > Wok Rings
3498
+ 2920 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers
3499
+ 4722 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Airpots
3500
+ 3435 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Canteens
3501
+ 1017 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Coolers
3502
+ 4520 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Drink Sleeves
3503
+ 4521 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Drink Sleeves > Can & Bottle Sleeves
3504
+ 4522 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Drink Sleeves > Cup Sleeves
3505
+ 1444 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Flasks
3506
+ 2507 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Insulated Bags
3507
+ 669 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Lunch Boxes & Totes
3508
+ 671 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Picnic Baskets
3509
+ 5060 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Replacement Drink Lids
3510
+ 3800 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Thermoses
3511
+ 3809 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Water Bottles
3512
+ 6449 - Home & Garden > Kitchen & Dining > Food & Beverage Carriers > Wine Carrier Bags
3513
+ 2626 - Home & Garden > Kitchen & Dining > Food Storage
3514
+ 3337 - Home & Garden > Kitchen & Dining > Food Storage > Bread Boxes & Bags
3515
+ 6534 - Home & Garden > Kitchen & Dining > Food Storage > Candy Buckets
3516
+ 2644 - Home & Garden > Kitchen & Dining > Food Storage > Cookie Jars
3517
+ 6481 - Home & Garden > Kitchen & Dining > Food Storage > Food Container Covers
3518
+ 3591 - Home & Garden > Kitchen & Dining > Food Storage > Food Storage Bags
3519
+ 667 - Home & Garden > Kitchen & Dining > Food Storage > Food Storage Containers
3520
+ 3110 - Home & Garden > Kitchen & Dining > Food Storage > Food Wraps
3521
+ 1496 - Home & Garden > Kitchen & Dining > Food Storage > Food Wraps > Foil
3522
+ 5642 - Home & Garden > Kitchen & Dining > Food Storage > Food Wraps > Parchment Paper
3523
+ 3750 - Home & Garden > Kitchen & Dining > Food Storage > Food Wraps > Plastic Wrap
3524
+ 3956 - Home & Garden > Kitchen & Dining > Food Storage > Food Wraps > Wax Paper
3525
+ 5134 - Home & Garden > Kitchen & Dining > Food Storage > Honey Jars
3526
+ 6478 - Home & Garden > Kitchen & Dining > Food Storage Accessories
3527
+ 499924 - Home & Garden > Kitchen & Dining > Food Storage Accessories > Food & Beverage Labels
3528
+ 8039 - Home & Garden > Kitchen & Dining > Food Storage Accessories > Food Wrap Dispensers
3529
+ 6479 - Home & Garden > Kitchen & Dining > Food Storage Accessories > Oxygen Absorbers
3530
+ 5837 - Home & Garden > Kitchen & Dining > Food Storage Accessories > Twist Ties & Bag Clips
3531
+ 2901 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories
3532
+ 3489 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Breadmaker Accessories
3533
+ 3988 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories
3534
+ 6888 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Decanter Warmers
3535
+ 3239 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Decanters
3536
+ 4500 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Filter Baskets
3537
+ 3450 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Filters
3538
+ 4786 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Grinder Accessories
3539
+ 734 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Grinders
3540
+ 503736 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Maker & Espresso Machine Replacement Parts
3541
+ 5065 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Coffee Maker Water Filters
3542
+ 5066 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Frothing Pitchers
3543
+ 3838 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Coffee Maker & Espresso Machine Accessories > Portafilters
3544
+ 500004 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Cooktop, Oven & Range Accessories
3545
+ 5076 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Cotton Candy Machine Accessories
3546
+ 3954 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Deep Fryer Accessories
3547
+ 3443 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Dishwasher Parts & Accessories
3548
+ 500066 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Electric Kettle Accessories
3549
+ 7355 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Electric Skillet & Wok Accessories
3550
+ 6944 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Fondue Set Accessories
3551
+ 503725 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Fondue Set Accessories > Cooking Gel Fuels
3552
+ 6945 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Fondue Set Accessories > Fondue Forks
3553
+ 6946 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Fondue Set Accessories > Fondue Pot Stands
3554
+ 4653 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Food Dehydrator Accessories
3555
+ 4655 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Food Dehydrator Accessories > Food Dehydrator Sheets
3556
+ 4654 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Food Dehydrator Accessories > Food Dehydrator Trays
3557
+ 4763 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Food Grinder Accessories
3558
+ 505765 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Food Mixer & Blender Accessories
3559
+ 7570 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Freezer Accessories
3560
+ 6747 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Garbage Disposal Accessories
3561
+ 4674 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Ice Cream Maker Accessories
3562
+ 4675 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Ice Cream Maker Accessories > Ice Cream Maker Freezer Bowls
3563
+ 5042 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Ice Crusher & Shaver Accessories
3564
+ 7187 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Ice Maker Accessories
3565
+ 4519 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Juicer Accessories
3566
+ 1334 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Microwave Oven Accessories
3567
+ 3684 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories
3568
+ 5694 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Charcoal Briquettes
3569
+ 7540 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Charcoal Chimneys
3570
+ 5670 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Outdoor Grill Carts
3571
+ 3855 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Outdoor Grill Covers
3572
+ 3382 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Outdoor Grill Racks & Toppers
3573
+ 505667 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Outdoor Grill Replacement Parts
3574
+ 4560 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Outdoor Grill Spits & Baskets
3575
+ 5672 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Outdoor Grilling Planks
3576
+ 5671 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Outdoor Grill Accessories > Smoking Chips & Pellets
3577
+ 2540 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Pasta Maker Accessories
3578
+ 5075 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Popcorn Maker Accessories
3579
+ 7006 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Portable Cooking Stove Accessories
3580
+ 8087 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Range Hood Accessories
3581
+ 3848 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Refrigerator Accessories
3582
+ 502989 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Soda Maker Accessories
3583
+ 8051 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Steam Table Accessories
3584
+ 8052 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Steam Table Accessories > Steam Table Pan Covers
3585
+ 8053 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Steam Table Accessories > Steam Table Pans
3586
+ 7444 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Toaster Accessories
3587
+ 3523 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Vacuum Sealer Accessories
3588
+ 3124 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Vacuum Sealer Accessories > Vacuum Sealer Bags
3589
+ 499996 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Waffle Iron Accessories
3590
+ 7118 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Water Cooler Accessories
3591
+ 7119 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Water Cooler Accessories > Water Cooler Bottles
3592
+ 8106 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Wine Fridge Accessories
3593
+ 5570 - Home & Garden > Kitchen & Dining > Kitchen Appliance Accessories > Yogurt Maker Accessories
3594
+ 730 - Home & Garden > Kitchen & Dining > Kitchen Appliances
3595
+ 5287 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Beverage Warmers
3596
+ 732 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Breadmakers
3597
+ 5090 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Chocolate Tempering Machines
3598
+ 736 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Coffee Makers & Espresso Machines
3599
+ 1388 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Coffee Makers & Espresso Machines > Drip Coffee Makers
3600
+ 1647 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Coffee Makers & Espresso Machines > Electric & Stovetop Espresso Pots
3601
+ 2422 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Coffee Makers & Espresso Machines > Espresso Machines
3602
+ 1557 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Coffee Makers & Espresso Machines > French Presses
3603
+ 2247 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Coffee Makers & Espresso Machines > Percolators
3604
+ 5286 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Coffee Makers & Espresso Machines > Vacuum Coffee Makers
3605
+ 679 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Cooktops
3606
+ 3319 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Cotton Candy Machines
3607
+ 738 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Deep Fryers
3608
+ 3181 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Deli Slicers
3609
+ 680 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Dishwashers
3610
+ 7165 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Electric Griddles & Grills
3611
+ 751 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Electric Kettles
3612
+ 4421 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Electric Skillets & Woks
3613
+ 4720 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Fondue Pots & Sets
3614
+ 4532 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Cookers & Steamers
3615
+ 739 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Cookers & Steamers > Egg Cookers
3616
+ 760 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Cookers & Steamers > Food Steamers
3617
+ 757 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Cookers & Steamers > Rice Cookers
3618
+ 737 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Cookers & Steamers > Slow Cookers
3619
+ 6523 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Cookers & Steamers > Thermal Cookers
3620
+ 6279 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Cookers & Steamers > Water Ovens
3621
+ 743 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Dehydrators
3622
+ 744 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Grinders & Mills
3623
+ 505666 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Mixers & Blenders
3624
+ 687 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Smokers
3625
+ 5103 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Warmers
3626
+ 6548 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Warmers > Chafing Dishes
3627
+ 5349 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Warmers > Food Heat Lamps
3628
+ 504633 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Warmers > Rice Keepers
3629
+ 4292 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Food Warmers > Steam Tables
3630
+ 681 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Freezers
3631
+ 5156 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Frozen Drink Makers
3632
+ 610 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Garbage Disposals
3633
+ 6524 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Gas Griddles
3634
+ 6543 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Hot Drink Makers
3635
+ 747 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Hot Plates
3636
+ 748 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Ice Cream Makers
3637
+ 749 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Ice Crushers & Shavers
3638
+ 4161 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Ice Makers
3639
+ 750 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Juicers
3640
+ 752 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Knife Sharpeners
3641
+ 753 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Microwave Ovens
3642
+ 3526 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Milk Frothers & Steamers
3643
+ 4482 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Mochi Makers
3644
+ 2985 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Outdoor Grills
3645
+ 683 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Ovens
3646
+ 755 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Pasta Makers
3647
+ 756 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Popcorn Makers
3648
+ 1015 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Portable Cooking Stoves
3649
+ 684 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Range Hoods
3650
+ 685 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Ranges
3651
+ 686 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Refrigerators
3652
+ 4495 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Roaster Ovens & Rotisseries
3653
+ 5577 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Soda Makers
3654
+ 5057 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Soy Milk Makers
3655
+ 4528 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Tea Makers
3656
+ 5289 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills
3657
+ 761 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Countertop & Toaster Ovens
3658
+ 6819 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Donut Makers
3659
+ 5318 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Muffin & Cupcake Makers
3660
+ 6278 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Pizza Makers & Ovens
3661
+ 5291 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Pizzelle Makers
3662
+ 6516 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Pretzel Makers
3663
+ 759 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Sandwich Makers
3664
+ 762 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Toasters
3665
+ 5292 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Tortilla & Flatbread Makers
3666
+ 764 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Toasters & Grills > Waffle Irons
3667
+ 688 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Trash Compactors
3668
+ 763 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Vacuum Sealers
3669
+ 3293 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Water Coolers
3670
+ 765 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Water Filters
3671
+ 4539 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Wine Fridges
3672
+ 766 - Home & Garden > Kitchen & Dining > Kitchen Appliances > Yogurt Makers
3673
+ 668 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils
3674
+ 639 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Aprons
3675
+ 3768 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Baking Peels
3676
+ 3347 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Basters
3677
+ 3430 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Basting Brushes
3678
+ 7149 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Beverage Dispensers
3679
+ 4630 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cake Decorating Supplies
3680
+ 6408 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cake Servers
3681
+ 4247 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Can Crushers
3682
+ 733 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Can Openers
3683
+ 5078 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Carving Forks
3684
+ 6522 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Channel Knives
3685
+ 653 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Colanders & Strainers
3686
+ 4777 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Condiment Dispensers
3687
+ 3850 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cookie Cutters
3688
+ 6342 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cookie Presses
3689
+ 7331 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cooking Thermometer Accessories
3690
+ 3091 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cooking Thermometers
3691
+ 3713 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cooking Timers
3692
+ 5928 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cooking Torches
3693
+ 3835 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cooling Racks
3694
+ 666 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Cutting Boards
3695
+ 3268 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Dish Racks & Drain Boards
3696
+ 6723 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Dough Wheels
3697
+ 6411 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Electric Knife Accessories
3698
+ 6412 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Electric Knife Accessories > Electric Knife Replacement Blades
3699
+ 741 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Electric Knives
3700
+ 5370 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Flour Sifters
3701
+ 505316 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food & Drink Stencils
3702
+ 3381 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Crackers
3703
+ 3586 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Crackers > Lobster & Crab Crackers
3704
+ 3685 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Crackers > Nutcrackers
3705
+ 4214 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Crackers > Nutcrackers > Decorative Nutcrackers
3706
+ 3723 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Dispensers
3707
+ 3156 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Graters & Zesters
3708
+ 3521 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Peelers & Corers
3709
+ 7329 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Steaming Bags
3710
+ 6554 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Food Sticks & Skewers
3711
+ 503005 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Funnels
3712
+ 3385 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Garlic Presses
3713
+ 6787 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Gelatin Molds
3714
+ 4746 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Ice Cube Trays
3715
+ 7485 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Jerky Guns
3716
+ 665 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Knives
3717
+ 8006 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Molds
3718
+ 2948 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers
3719
+ 6480 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Can Organizers
3720
+ 3479 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Drinkware Holders
3721
+ 6487 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Kitchen Cabinet Organizers
3722
+ 3177 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Kitchen Counter & Beverage Station Organizers
3723
+ 8012 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Kitchen Utensil Holders & Racks
3724
+ 5157 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Knife Blocks & Holders
3725
+ 3072 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Napkin Holders & Dispensers
3726
+ 3061 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Paper Towel Holders & Dispensers
3727
+ 3845 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Pot Racks
3728
+ 2344 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Spice Organizers
3729
+ 5059 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Straw Holders & Dispensers
3730
+ 6415 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Sugar Caddies
3731
+ 4322 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Toothpick Holders & Dispensers
3732
+ 3831 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Organizers > Utensil & Flatware Trays
3733
+ 3256 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Scrapers
3734
+ 3419 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Scrapers > Bench Scrapers
3735
+ 3086 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Scrapers > Bowl Scrapers
3736
+ 3633 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Scrapers > Grill Scrapers
3737
+ 5251 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Shears
3738
+ 3206 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Slicers
3739
+ 4765 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Kitchen Utensil Sets
3740
+ 3620 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Ladles
3741
+ 3294 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Mashers
3742
+ 3475 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Measuring Cups & Spoons
3743
+ 3248 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Meat Tenderizers
3744
+ 4530 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Mixing Bowls
3745
+ 3999 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Mortars & Pestles
3746
+ 6526 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Oil & Vinegar Dispensers
3747
+ 4771 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Oven Bags
3748
+ 670 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Oven Mitts & Pot Holders
3749
+ 6749 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Pasta Molds & Stamps
3750
+ 4332 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Pastry Blenders
3751
+ 4708 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Pastry Cloths
3752
+ 7365 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Pizza Cutter Accessories
3753
+ 3421 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Pizza Cutters
3754
+ 5109 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Ricers
3755
+ 4705 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Rolling Pin Accessories
3756
+ 4706 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Rolling Pin Accessories > Rolling Pin Covers & Sleeves
3757
+ 4707 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Rolling Pin Accessories > Rolling Pin Rings
3758
+ 3467 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Rolling Pins
3759
+ 6497 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Salad Dressing Mixers & Shakers
3760
+ 3914 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Salad Spinners
3761
+ 3175 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Scoops
3762
+ 3202 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Scoops > Ice Cream Scoops
3763
+ 3708 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Scoops > Ice Scoops
3764
+ 3258 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Scoops > Melon Ballers
3765
+ 502966 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Scoops > Popcorn & French Fry Scoops
3766
+ 6746 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Sink Caddies
3767
+ 5080 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Sink Mats & Grids
3768
+ 6388 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Slotted Spoons
3769
+ 3196 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Spatulas
3770
+ 4788 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Spice Grinder Accessories
3771
+ 4762 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Spice Grinders
3772
+ 4334 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Spoon Rests
3773
+ 6974 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Sugar Dispensers
3774
+ 7247 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Sushi Mats
3775
+ 4559 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Tea Strainers
3776
+ 4005 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Tongs
3777
+ 3597 - Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils > Whisks
3778
+ 8161 - Home & Garden > Kitchen & Dining > Prefabricated Kitchens & Kitchenettes
3779
+ 672 - Home & Garden > Kitchen & Dining > Tableware
3780
+ 6740 - Home & Garden > Kitchen & Dining > Tableware > Coffee & Tea Sets
3781
+ 652 - Home & Garden > Kitchen & Dining > Tableware > Coffee Servers & Tea Pots
3782
+ 673 - Home & Garden > Kitchen & Dining > Tableware > Dinnerware
3783
+ 3498 - Home & Garden > Kitchen & Dining > Tableware > Dinnerware > Bowls
3784
+ 5537 - Home & Garden > Kitchen & Dining > Tableware > Dinnerware > Dinnerware Sets
3785
+ 3553 - Home & Garden > Kitchen & Dining > Tableware > Dinnerware > Plates
3786
+ 674 - Home & Garden > Kitchen & Dining > Tableware > Drinkware
3787
+ 7568 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Beer Glasses
3788
+ 6049 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Coffee & Tea Cups
3789
+ 6051 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Coffee & Tea Saucers
3790
+ 6958 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Drinkware Sets
3791
+ 2169 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Mugs
3792
+ 2694 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Shot Glasses
3793
+ 2712 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Stemware
3794
+ 2951 - Home & Garden > Kitchen & Dining > Tableware > Drinkware > Tumblers
3795
+ 675 - Home & Garden > Kitchen & Dining > Tableware > Flatware
3796
+ 6439 - Home & Garden > Kitchen & Dining > Tableware > Flatware > Chopstick Accessories
3797
+ 3699 - Home & Garden > Kitchen & Dining > Tableware > Flatware > Chopsticks
3798
+ 5647 - Home & Garden > Kitchen & Dining > Tableware > Flatware > Flatware Sets
3799
+ 4015 - Home & Garden > Kitchen & Dining > Tableware > Flatware > Forks
3800
+ 3939 - Home & Garden > Kitchen & Dining > Tableware > Flatware > Spoons
3801
+ 3844 - Home & Garden > Kitchen & Dining > Tableware > Flatware > Table Knives
3802
+ 676 - Home & Garden > Kitchen & Dining > Tableware > Salt & Pepper Shakers
3803
+ 4026 - Home & Garden > Kitchen & Dining > Tableware > Serveware
3804
+ 6086 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Butter Dishes
3805
+ 5135 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Cake Boards
3806
+ 4372 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Cake Stands
3807
+ 7550 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Egg Cups
3808
+ 3703 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Gravy Boats
3809
+ 4735 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Punch Bowls
3810
+ 3330 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Serving Pitchers & Carafes
3811
+ 3802 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Serving Platters
3812
+ 4009 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Serving Trays
3813
+ 3373 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Sugar Bowls & Creamers
3814
+ 3941 - Home & Garden > Kitchen & Dining > Tableware > Serveware > Tureens
3815
+ 6425 - Home & Garden > Kitchen & Dining > Tableware > Serveware Accessories
3816
+ 6434 - Home & Garden > Kitchen & Dining > Tableware > Serveware Accessories > Punch Bowl Stands
3817
+ 6427 - Home & Garden > Kitchen & Dining > Tableware > Serveware Accessories > Tureen Lids
3818
+ 6426 - Home & Garden > Kitchen & Dining > Tableware > Serveware Accessories > Tureen Stands
3819
+ 8046 - Home & Garden > Kitchen & Dining > Tableware > Tablecloth Clips & Weights
3820
+ 677 - Home & Garden > Kitchen & Dining > Tableware > Trivets
3821
+ 689 - Home & Garden > Lawn & Garden
3822
+ 2962 - Home & Garden > Lawn & Garden > Gardening
3823
+ 4085 - Home & Garden > Lawn & Garden > Gardening > Composting
3824
+ 690 - Home & Garden > Lawn & Garden > Gardening > Composting > Compost
3825
+ 6840 - Home & Garden > Lawn & Garden > Gardening > Composting > Compost Aerators
3826
+ 6436 - Home & Garden > Lawn & Garden > Gardening > Composting > Composters
3827
+ 691 - Home & Garden > Lawn & Garden > Gardening > Disease Control
3828
+ 113 - Home & Garden > Lawn & Garden > Gardening > Fertilizers
3829
+ 500033 - Home & Garden > Lawn & Garden > Gardening > Garden Pot Saucers & Trays
3830
+ 5632 - Home & Garden > Lawn & Garden > Gardening > Gardening Accessories
3831
+ 503756 - Home & Garden > Lawn & Garden > Gardening > Gardening Accessories > Gardening Scooters, Seats & Kneelers
3832
+ 5633 - Home & Garden > Lawn & Garden > Gardening > Gardening Accessories > Gardening Totes
3833
+ 7184 - Home & Garden > Lawn & Garden > Gardening > Gardening Accessories > Potting Benches
3834
+ 505326 - Home & Garden > Lawn & Garden > Gardening > Gardening Tool Accessories
3835
+ 505322 - Home & Garden > Lawn & Garden > Gardening > Gardening Tool Accessories > Gardening Tool Handles
3836
+ 505321 - Home & Garden > Lawn & Garden > Gardening > Gardening Tool Accessories > Gardening Tool Heads
3837
+ 4972 - Home & Garden > Lawn & Garden > Gardening > Gardening Tool Accessories > Wheelbarrow Parts
3838
+ 3173 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools
3839
+ 7537 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Bulb Planting Tools
3840
+ 4000 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Cultivating Tools
3841
+ 3071 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Gardening Forks
3842
+ 505292 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Gardening Sickles & Machetes
3843
+ 3644 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Gardening Trowels
3844
+ 1967 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Lawn & Garden Sprayers
3845
+ 499922 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Lawn Rollers
3846
+ 6967 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Pruning Saws
3847
+ 3841 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Pruning Shears
3848
+ 3388 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Rakes
3849
+ 2147 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Shovels & Spades
3850
+ 3828 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Spreaders
3851
+ 3616 - Home & Garden > Lawn & Garden > Gardening > Gardening Tools > Wheelbarrows
3852
+ 693 - Home & Garden > Lawn & Garden > Gardening > Greenhouses
3853
+ 3103 - Home & Garden > Lawn & Garden > Gardening > Herbicides
3854
+ 6381 - Home & Garden > Lawn & Garden > Gardening > Landscape Fabric
3855
+ 6413 - Home & Garden > Lawn & Garden > Gardening > Landscape Fabric Accessories
3856
+ 6422 - Home & Garden > Lawn & Garden > Gardening > Landscape Fabric Accessories > Landscape Fabric Staples & Pins
3857
+ 6421 - Home & Garden > Lawn & Garden > Gardening > Landscape Fabric Accessories > Landscape Fabric Tape
3858
+ 2988 - Home & Garden > Lawn & Garden > Gardening > Mulch
3859
+ 499894 - Home & Garden > Lawn & Garden > Gardening > Plant Cages & Supports
3860
+ 6428 - Home & Garden > Lawn & Garden > Gardening > Plant Stands
3861
+ 499962 - Home & Garden > Lawn & Garden > Gardening > Pot & Planter Liners
3862
+ 721 - Home & Garden > Lawn & Garden > Gardening > Pots & Planters
3863
+ 6834 - Home & Garden > Lawn & Garden > Gardening > Rain Barrels
3864
+ 1794 - Home & Garden > Lawn & Garden > Gardening > Sands & Soils
3865
+ 543677 - Home & Garden > Lawn & Garden > Gardening > Sands & Soils > Sand
3866
+ 543678 - Home & Garden > Lawn & Garden > Gardening > Sands & Soils > Soil
3867
+ 2918 - Home & Garden > Lawn & Garden > Outdoor Living
3868
+ 499908 - Home & Garden > Lawn & Garden > Outdoor Living > Awning Accessories
3869
+ 499907 - Home & Garden > Lawn & Garden > Outdoor Living > Awnings
3870
+ 6737 - Home & Garden > Lawn & Garden > Outdoor Living > Hammock Parts & Accessories
3871
+ 717 - Home & Garden > Lawn & Garden > Outdoor Living > Hammocks
3872
+ 5910 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Blankets
3873
+ 5911 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Blankets > Beach Mats
3874
+ 5913 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Blankets > Picnic Blankets
3875
+ 5912 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Blankets > Poncho Liners
3876
+ 2613 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures
3877
+ 716 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Canopies & Gazebos
3878
+ 6105 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Canopy & Gazebo Accessories
3879
+ 6107 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Canopy & Gazebo Accessories > Canopy & Gazebo Enclosure Kits
3880
+ 6106 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Canopy & Gazebo Accessories > Canopy & Gazebo Frames
3881
+ 6108 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Canopy & Gazebo Accessories > Canopy & Gazebo Tops
3882
+ 7423 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Canopy & Gazebo Accessories > Canopy Poles
3883
+ 7424 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Canopy & Gazebo Accessories > Canopy Weights
3884
+ 703 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Garden Arches, Trellises, Arbors & Pergolas
3885
+ 700 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Garden Bridges
3886
+ 720 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Structures > Sheds, Garages & Carports
3887
+ 6751 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Umbrella & Sunshade Accessories
3888
+ 7108 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Umbrella & Sunshade Accessories > Outdoor Umbrella & Sunshade Fabric
3889
+ 5493 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Umbrella & Sunshade Accessories > Outdoor Umbrella Bases
3890
+ 7107 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Umbrella & Sunshade Accessories > Outdoor Umbrella Covers
3891
+ 499948 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Umbrella & Sunshade Accessories > Outdoor Umbrella Enclosure Kits
3892
+ 8020 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Umbrella & Sunshade Accessories > Outdoor Umbrella Lights
3893
+ 719 - Home & Garden > Lawn & Garden > Outdoor Living > Outdoor Umbrellas & Sunshades
3894
+ 499955 - Home & Garden > Lawn & Garden > Outdoor Living > Porch Swing Accessories
3895
+ 718 - Home & Garden > Lawn & Garden > Outdoor Living > Porch Swings
3896
+ 3798 - Home & Garden > Lawn & Garden > Outdoor Power Equipment
3897
+ 3610 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Chainsaws
3898
+ 2218 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Grass Edgers
3899
+ 3120 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Hedge Trimmers
3900
+ 500034 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Lawn Aerators & Dethatchers
3901
+ 694 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Lawn Mowers
3902
+ 3311 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Lawn Mowers > Riding Mowers
3903
+ 6788 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Lawn Mowers > Robotic Mowers
3904
+ 6258 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Lawn Mowers > Tow-Behind Mowers
3905
+ 3730 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Lawn Mowers > Walk-Behind Mowers
3906
+ 6789 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Lawn Vacuums
3907
+ 3340 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Leaf Blowers
3908
+ 7332 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Outdoor Power Equipment Base Units
3909
+ 7245 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Outdoor Power Equipment Sets
3910
+ 500016 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Sweepers
3911
+ 2204 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Power Tillers & Cultivators
3912
+ 1226 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Pressure Washers
3913
+ 1541 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Snow Blowers
3914
+ 5866 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Tractors
3915
+ 1223 - Home & Garden > Lawn & Garden > Outdoor Power Equipment > Weed Trimmers
3916
+ 4564 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories
3917
+ 4565 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Chainsaw Accessories
3918
+ 4647 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Chainsaw Accessories > Chainsaw Bars
3919
+ 4646 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Chainsaw Accessories > Chainsaw Chains
3920
+ 7563 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Grass Edger Accessories
3921
+ 7265 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Hedge Trimmer Accessories
3922
+ 4566 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories
3923
+ 6542 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Brush Mower Attachments
3924
+ 4645 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Bags
3925
+ 4643 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Belts
3926
+ 4641 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Blades
3927
+ 4642 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Covers
3928
+ 499923 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Mulch Kits
3929
+ 499960 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Mulch Plugs & Plates
3930
+ 4644 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Pulleys & Idlers
3931
+ 499872 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Tire Tubes
3932
+ 6095 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Tires
3933
+ 6094 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Mower Wheels
3934
+ 499921 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Striping Kits
3935
+ 6541 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Lawn Mower Accessories > Lawn Sweepers
3936
+ 7168 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Leaf Blower Accessories
3937
+ 7171 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Leaf Blower Accessories > Leaf Blower Tubes
3938
+ 8485 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Multifunction Outdoor Power Equipment Attachments
3939
+ 7564 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Multifunction Outdoor Power Equipment Attachments > Grass Edger Attachments
3940
+ 8487 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Multifunction Outdoor Power Equipment Attachments > Ground & Leaf Blower Attachments
3941
+ 7334 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Multifunction Outdoor Power Equipment Attachments > Hedge Trimmer Attachments
3942
+ 8489 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Multifunction Outdoor Power Equipment Attachments > Pole Saw Attachments
3943
+ 8488 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Multifunction Outdoor Power Equipment Attachments > Tiller & Cultivator Attachments
3944
+ 7335 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Multifunction Outdoor Power Equipment Attachments > Weed Trimmer Attachments
3945
+ 7333 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Outdoor Power Equipment Batteries
3946
+ 6328 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Pressure Washer Accessories
3947
+ 4567 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Snow Blower Accessories
3948
+ 5867 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Tractor Parts & Accessories
3949
+ 499880 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Tractor Parts & Accessories > Tractor Tires
3950
+ 499881 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Tractor Parts & Accessories > Tractor Wheels
3951
+ 7169 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Weed Trimmer Accessories
3952
+ 7170 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Weed Trimmer Accessories > Weed Trimmer Blades & Spools
3953
+ 8034 - Home & Garden > Lawn & Garden > Outdoor Power Equipment Accessories > Weed Trimmer Accessories > Weed Trimmer Spool Covers
3954
+ 5362 - Home & Garden > Lawn & Garden > Snow Removal
3955
+ 5364 - Home & Garden > Lawn & Garden > Snow Removal > Ice Scrapers & Snow Brushes
3956
+ 5363 - Home & Garden > Lawn & Garden > Snow Removal > Snow Shovels
3957
+ 3568 - Home & Garden > Lawn & Garden > Watering & Irrigation
3958
+ 4718 - Home & Garden > Lawn & Garden > Watering & Irrigation > Garden Hose Fittings & Valves
3959
+ 4201 - Home & Garden > Lawn & Garden > Watering & Irrigation > Garden Hose Spray Nozzles
3960
+ 2313 - Home & Garden > Lawn & Garden > Watering & Irrigation > Garden Hoses
3961
+ 3780 - Home & Garden > Lawn & Garden > Watering & Irrigation > Sprinkler Accessories
3962
+ 1302 - Home & Garden > Lawn & Garden > Watering & Irrigation > Sprinkler Accessories > Sprinkler Controls
3963
+ 3491 - Home & Garden > Lawn & Garden > Watering & Irrigation > Sprinkler Accessories > Sprinkler Valves
3964
+ 7561 - Home & Garden > Lawn & Garden > Watering & Irrigation > Sprinklers & Sprinkler Heads
3965
+ 505814 - Home & Garden > Lawn & Garden > Watering & Irrigation > Watering Can Accesssories
3966
+ 6318 - Home & Garden > Lawn & Garden > Watering & Irrigation > Watering Cans
3967
+ 230912 - Home & Garden > Lawn & Garden > Watering & Irrigation > Watering Globes & Spikes
3968
+ 594 - Home & Garden > Lighting
3969
+ 1436 - Home & Garden > Lighting > Emergency Lighting
3970
+ 500003 - Home & Garden > Lighting > Floating & Submersible Lights
3971
+ 1546 - Home & Garden > Lighting > Flood & Spot Lights
3972
+ 7401 - Home & Garden > Lighting > In-Ground Lights
3973
+ 4636 - Home & Garden > Lighting > Lamps
3974
+ 7400 - Home & Garden > Lighting > Landscape Pathway Lighting
3975
+ 2425 - Home & Garden > Lighting > Light Bulbs
3976
+ 2947 - Home & Garden > Lighting > Light Bulbs > Compact Fluorescent Lamps
3977
+ 2690 - Home & Garden > Lighting > Light Bulbs > Fluorescent Tubes
3978
+ 2944 - Home & Garden > Lighting > Light Bulbs > Incandescent Light Bulbs
3979
+ 3329 - Home & Garden > Lighting > Light Bulbs > LED Light Bulbs
3980
+ 2608 - Home & Garden > Lighting > Light Ropes & Strings
3981
+ 3006 - Home & Garden > Lighting > Lighting Fixtures
3982
+ 2809 - Home & Garden > Lighting > Lighting Fixtures > Cabinet Light Fixtures
3983
+ 2524 - Home & Garden > Lighting > Lighting Fixtures > Ceiling Light Fixtures
3984
+ 2249 - Home & Garden > Lighting > Lighting Fixtures > Chandeliers
3985
+ 6073 - Home & Garden > Lighting > Lighting Fixtures > Wall Light Fixtures
3986
+ 505826 - Home & Garden > Lighting > Night Lights & Ambient Lighting
3987
+ 2370 - Home & Garden > Lighting > Picture Lights
3988
+ 7399 - Home & Garden > Lighting > Tiki Torches & Oil Lamps
3989
+ 6274 - Home & Garden > Lighting > Track Lighting
3990
+ 6272 - Home & Garden > Lighting > Track Lighting > Track Lighting Accessories
3991
+ 4932 - Home & Garden > Lighting > Track Lighting > Track Lighting Fixtures
3992
+ 6273 - Home & Garden > Lighting > Track Lighting > Track Lighting Rails
3993
+ 2956 - Home & Garden > Lighting Accessories
3994
+ 7338 - Home & Garden > Lighting Accessories > Lamp Post Bases
3995
+ 7447 - Home & Garden > Lighting Accessories > Lamp Post Mounts
3996
+ 3185 - Home & Garden > Lighting Accessories > Lamp Shades
3997
+ 3522 - Home & Garden > Lighting Accessories > Lighting Timers
3998
+ 505312 - Home & Garden > Lighting Accessories > Oil Lamp Fuel
3999
+ 4171 - Home & Garden > Linens & Bedding
4000
+ 569 - Home & Garden > Linens & Bedding > Bedding
4001
+ 505803 - Home & Garden > Linens & Bedding > Bedding > Bed Canopies
4002
+ 2314 - Home & Garden > Linens & Bedding > Bedding > Bed Sheets
4003
+ 2974 - Home & Garden > Linens & Bedding > Bedding > Bedskirts
4004
+ 1985 - Home & Garden > Linens & Bedding > Bedding > Blankets
4005
+ 2541 - Home & Garden > Linens & Bedding > Bedding > Duvet Covers
4006
+ 4452 - Home & Garden > Linens & Bedding > Bedding > Mattress Protectors
4007
+ 4420 - Home & Garden > Linens & Bedding > Bedding > Mattress Protectors > Mattress Encasements
4008
+ 2991 - Home & Garden > Linens & Bedding > Bedding > Mattress Protectors > Mattress Pads
4009
+ 1599 - Home & Garden > Linens & Bedding > Bedding > Nap Mats
4010
+ 2927 - Home & Garden > Linens & Bedding > Bedding > Pillowcases & Shams
4011
+ 2700 - Home & Garden > Linens & Bedding > Bedding > Pillows
4012
+ 505287 - Home & Garden > Linens & Bedding > Bedding > Quilts & Comforters
4013
+ 505832 - Home & Garden > Linens & Bedding > Kitchen Linens Sets
4014
+ 601 - Home & Garden > Linens & Bedding > Table Linens
4015
+ 4203 - Home & Garden > Linens & Bedding > Table Linens > Cloth Napkins
4016
+ 4343 - Home & Garden > Linens & Bedding > Table Linens > Doilies
4017
+ 2547 - Home & Garden > Linens & Bedding > Table Linens > Placemats
4018
+ 6325 - Home & Garden > Linens & Bedding > Table Linens > Table Runners
4019
+ 6322 - Home & Garden > Linens & Bedding > Table Linens > Table Skirts
4020
+ 4143 - Home & Garden > Linens & Bedding > Table Linens > Tablecloths
4021
+ 4077 - Home & Garden > Linens & Bedding > Towels
4022
+ 576 - Home & Garden > Linens & Bedding > Towels > Bath Towels & Washcloths
4023
+ 4126 - Home & Garden > Linens & Bedding > Towels > Beach Towels
4024
+ 4257 - Home & Garden > Linens & Bedding > Towels > Kitchen Towels
4025
+ 4358 - Home & Garden > Parasols & Rain Umbrellas
4026
+ 985 - Home & Garden > Plants
4027
+ 5590 - Home & Garden > Plants > Aquatic Plants
4028
+ 984 - Home & Garden > Plants > Flowers
4029
+ 6762 - Home & Garden > Plants > Indoor & Outdoor Plants
4030
+ 543559 - Home & Garden > Plants > Indoor & Outdoor Plants > Bushes & Shrubs
4031
+ 543560 - Home & Garden > Plants > Indoor & Outdoor Plants > Landscaping & Garden Plants
4032
+ 543558 - Home & Garden > Plants > Indoor & Outdoor Plants > Potted Houseplants
4033
+ 505285 - Home & Garden > Plants > Plant & Herb Growing Kits
4034
+ 2802 - Home & Garden > Plants > Seeds
4035
+ 543561 - Home & Garden > Plants > Seeds > Plant & Flower Bulbs
4036
+ 543562 - Home & Garden > Plants > Seeds > Seeds & Seed Tape
4037
+ 1684 - Home & Garden > Plants > Trees
4038
+ 729 - Home & Garden > Pool & Spa
4039
+ 2832 - Home & Garden > Pool & Spa > Pool & Spa Accessories
4040
+ 2939 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Diving Boards
4041
+ 500042 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool & Spa Chlorine Generators
4042
+ 2981 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool & Spa Filters
4043
+ 505815 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool & Spa Maintenance Kits
4044
+ 6996 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Brushes & Brooms
4045
+ 6771 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Cleaner Hoses
4046
+ 3017 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Cleaners & Chemicals
4047
+ 500050 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Cover Accessories
4048
+ 2994 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Covers & Ground Cloths
4049
+ 7496 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Deck Kits
4050
+ 2860 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Floats & Loungers
4051
+ 5654 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Heaters
4052
+ 6766 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Ladders, Steps & Ramps
4053
+ 503751 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Liners
4054
+ 2755 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Skimmers
4055
+ 2997 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Sweeps & Vacuums
4056
+ 2672 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Toys
4057
+ 5546 - Home & Garden > Pool & Spa > Pool & Spa Accessories > Pool Water Slides
4058
+ 543687 - Home & Garden > Pool & Spa > Sauna Accessories
4059
+ 543633 - Home & Garden > Pool & Spa > Sauna Accessories > Sauna Buckets & Ladles
4060
+ 543632 - Home & Garden > Pool & Spa > Sauna Accessories > Sauna Heaters
4061
+ 543631 - Home & Garden > Pool & Spa > Sauna Accessories > Sauna Kits
4062
+ 3992 - Home & Garden > Pool & Spa > Saunas
4063
+ 2982 - Home & Garden > Pool & Spa > Spas
4064
+ 2810 - Home & Garden > Pool & Spa > Swimming Pools
4065
+ 600 - Home & Garden > Smoking Accessories
4066
+ 4082 - Home & Garden > Smoking Accessories > Ashtrays
4067
+ 6882 - Home & Garden > Smoking Accessories > Cigar Cases
4068
+ 6879 - Home & Garden > Smoking Accessories > Cigar Cutters & Punches
4069
+ 6881 - Home & Garden > Smoking Accessories > Cigarette Cases
4070
+ 500007 - Home & Garden > Smoking Accessories > Cigarette Holders
4071
+ 6880 - Home & Garden > Smoking Accessories > Humidor Accessories
4072
+ 6878 - Home & Garden > Smoking Accessories > Humidors
4073
+ 6173 - Home & Garden > Umbrella Sleeves & Cases
4074
+ 2639 - Home & Garden > Wood Stoves
4075
+ 5181 - Luggage & Bags
4076
+ 100 - Luggage & Bags > Backpacks
4077
+ 101 - Luggage & Bags > Briefcases
4078
+ 108 - Luggage & Bags > Cosmetic & Toiletry Bags
4079
+ 549 - Luggage & Bags > Diaper Bags
4080
+ 502974 - Luggage & Bags > Dry Boxes
4081
+ 103 - Luggage & Bags > Duffel Bags
4082
+ 104 - Luggage & Bags > Fanny Packs
4083
+ 105 - Luggage & Bags > Garment Bags
4084
+ 110 - Luggage & Bags > Luggage Accessories
4085
+ 503014 - Luggage & Bags > Luggage Accessories > Dry Box Liners & Inserts
4086
+ 7521 - Luggage & Bags > Luggage Accessories > Luggage Covers
4087
+ 499691 - Luggage & Bags > Luggage Accessories > Luggage Racks & Stands
4088
+ 5652 - Luggage & Bags > Luggage Accessories > Luggage Straps
4089
+ 5651 - Luggage & Bags > Luggage Accessories > Luggage Tags
4090
+ 5620 - Luggage & Bags > Luggage Accessories > Packing Organizers
4091
+ 6919 - Luggage & Bags > Luggage Accessories > Travel Bottles & Containers
4092
+ 5650 - Luggage & Bags > Luggage Accessories > Travel Pouches
4093
+ 106 - Luggage & Bags > Messenger Bags
4094
+ 5608 - Luggage & Bags > Shopping Totes
4095
+ 107 - Luggage & Bags > Suitcases
4096
+ 6553 - Luggage & Bags > Train Cases
4097
+ 772 - Mature
4098
+ 773 - Mature > Erotic
4099
+ 779 - Mature > Erotic > Erotic Books
4100
+ 774 - Mature > Erotic > Erotic Clothing
4101
+ 776 - Mature > Erotic > Erotic DVDs & Videos
4102
+ 5055 - Mature > Erotic > Erotic Food & Edibles
4103
+ 6040 - Mature > Erotic > Erotic Games
4104
+ 4060 - Mature > Erotic > Erotic Magazines
4105
+ 6536 - Mature > Erotic > Pole Dancing Kits
4106
+ 778 - Mature > Erotic > Sex Toys
4107
+ 780 - Mature > Weapons
4108
+ 3833 - Mature > Weapons > Brass Knuckles
4109
+ 7567 - Mature > Weapons > Clubs & Batons
4110
+ 6109 - Mature > Weapons > Combat Knives
4111
+ 2214 - Mature > Weapons > Gun Care & Accessories
4112
+ 781 - Mature > Weapons > Gun Care & Accessories > Ammunition
4113
+ 505762 - Mature > Weapons > Gun Care & Accessories > Ammunition Cases & Holders
4114
+ 500048 - Mature > Weapons > Gun Care & Accessories > Gun Cases & Range Bags
4115
+ 503021 - Mature > Weapons > Gun Care & Accessories > Gun Cleaning
4116
+ 499855 - Mature > Weapons > Gun Care & Accessories > Gun Cleaning > Gun Cleaning Cloths & Swabs
4117
+ 499856 - Mature > Weapons > Gun Care & Accessories > Gun Cleaning > Gun Cleaning Patches
4118
+ 499854 - Mature > Weapons > Gun Care & Accessories > Gun Cleaning > Gun Cleaning Solvents
4119
+ 1806 - Mature > Weapons > Gun Care & Accessories > Gun Grips
4120
+ 1783 - Mature > Weapons > Gun Care & Accessories > Gun Holsters
4121
+ 5067 - Mature > Weapons > Gun Care & Accessories > Gun Lights
4122
+ 1822 - Mature > Weapons > Gun Care & Accessories > Gun Rails
4123
+ 499853 - Mature > Weapons > Gun Care & Accessories > Gun Slings
4124
+ 503026 - Mature > Weapons > Gun Care & Accessories > Reloading Supplies & Equipment
4125
+ 499857 - Mature > Weapons > Gun Care & Accessories > Reloading Supplies & Equipment > Ammunition Reloading Presses
4126
+ 782 - Mature > Weapons > Guns
4127
+ 726 - Mature > Weapons > Mace & Pepper Spray
4128
+ 3092 - Mature > Weapons > Nunchucks
4129
+ 7175 - Mature > Weapons > Spears
4130
+ 3924 - Mature > Weapons > Staff & Stick Weapons
4131
+ 727 - Mature > Weapons > Stun Guns & Tasers
4132
+ 3666 - Mature > Weapons > Swords
4133
+ 3694 - Mature > Weapons > Throwing Stars
4134
+ 3437 - Mature > Weapons > Whips
4135
+ 783 - Media
4136
+ 784 - Media > Books
4137
+ 543541 - Media > Books > Audiobooks
4138
+ 543542 - Media > Books > E-books
4139
+ 543543 - Media > Books > Print Books
4140
+ 499995 - Media > Carpentry & Woodworking Project Plans
4141
+ 839 - Media > DVDs & Videos
4142
+ 543527 - Media > DVDs & Videos > Film & Television DVDs
4143
+ 543529 - Media > DVDs & Videos > Film & Television Digital Downloads
4144
+ 543528 - Media > DVDs & Videos > Film & Television VHS Tapes
4145
+ 886 - Media > Magazines & Newspapers
4146
+ 543539 - Media > Magazines & Newspapers > Magazines
4147
+ 543540 - Media > Magazines & Newspapers > Newspapers
4148
+ 855 - Media > Music & Sound Recordings
4149
+ 543526 - Media > Music & Sound Recordings > Digital Music Downloads
4150
+ 543522 - Media > Music & Sound Recordings > Music CDs
4151
+ 543524 - Media > Music & Sound Recordings > Music Cassette Tapes
4152
+ 543523 - Media > Music & Sound Recordings > Records & LPs
4153
+ 543525 - Media > Music & Sound Recordings > Spoken Word & Field Recordings
4154
+ 5037 - Media > Product Manuals
4155
+ 499821 - Media > Product Manuals > Camera & Optics Manuals
4156
+ 5038 - Media > Product Manuals > Electronics Manuals
4157
+ 5861 - Media > Product Manuals > Exercise & Fitness Equipment Manuals
4158
+ 5039 - Media > Product Manuals > Household Appliance Manuals
4159
+ 5040 - Media > Product Manuals > Kitchen Appliance Manuals
4160
+ 5860 - Media > Product Manuals > Model & Toys Manuals
4161
+ 499866 - Media > Product Manuals > Office Supply Manuals
4162
+ 7516 - Media > Product Manuals > Power Tool & Equipment Manuals
4163
+ 5041 - Media > Product Manuals > Vehicle Service Manuals
4164
+ 887 - Media > Sheet Music
4165
+ 922 - Office Supplies
4166
+ 6174 - Office Supplies > Book Accessories
4167
+ 6176 - Office Supplies > Book Accessories > Book Covers
4168
+ 4941 - Office Supplies > Book Accessories > Book Lights
4169
+ 6175 - Office Supplies > Book Accessories > Book Stands & Rests
4170
+ 93 - Office Supplies > Book Accessories > Bookmarks
4171
+ 8078 - Office Supplies > Desk Pads & Blotters
4172
+ 923 - Office Supplies > Filing & Organization
4173
+ 5997 - Office Supplies > Filing & Organization > Address Books
4174
+ 4312 - Office Supplies > Filing & Organization > Binding Supplies
4175
+ 4086 - Office Supplies > Filing & Organization > Binding Supplies > Binder Accessories
4176
+ 4212 - Office Supplies > Filing & Organization > Binding Supplies > Binder Accessories > Binder Rings
4177
+ 4183 - Office Supplies > Filing & Organization > Binding Supplies > Binder Accessories > Index Dividers
4178
+ 2139 - Office Supplies > Filing & Organization > Binding Supplies > Binder Accessories > Sheet Protectors
4179
+ 4303 - Office Supplies > Filing & Organization > Binding Supplies > Binders
4180
+ 4182 - Office Supplies > Filing & Organization > Binding Supplies > Binding Combs & Spines
4181
+ 7080 - Office Supplies > Filing & Organization > Binding Supplies > Binding Machines
4182
+ 6190 - Office Supplies > Filing & Organization > Business Card Books
4183
+ 6171 - Office Supplies > Filing & Organization > Business Card Stands
4184
+ 926 - Office Supplies > Filing & Organization > CD/DVD Cases & Organizers
4185
+ 927 - Office Supplies > Filing & Organization > Calendars, Organizers & Planners
4186
+ 5531 - Office Supplies > Filing & Organization > Card Files
4187
+ 6177 - Office Supplies > Filing & Organization > Card Sleeves
4188
+ 928 - Office Supplies > Filing & Organization > Cash Boxes
4189
+ 939 - Office Supplies > Filing & Organization > Desk Organizers
4190
+ 925 - Office Supplies > Filing & Organization > File Boxes
4191
+ 930 - Office Supplies > Filing & Organization > File Folders
4192
+ 6884 - Office Supplies > Filing & Organization > Folders & Report Covers
4193
+ 543663 - Office Supplies > Filing & Organization > Folders & Report Covers > Pocket Folders
4194
+ 543662 - Office Supplies > Filing & Organization > Folders & Report Covers > Report Covers
4195
+ 5070 - Office Supplies > Filing & Organization > Greeting Card Organizers
4196
+ 6962 - Office Supplies > Filing & Organization > Mail Sorters
4197
+ 3062 - Office Supplies > Filing & Organization > Pen & Pencil Cases
4198
+ 6885 - Office Supplies > Filing & Organization > Portfolios & Padfolios
4199
+ 543641 - Office Supplies > Filing & Organization > Portfolios & Padfolios > Padfolios
4200
+ 543640 - Office Supplies > Filing & Organization > Portfolios & Padfolios > Portfolios
4201
+ 6779 - Office Supplies > Filing & Organization > Recipe Card Boxes
4202
+ 932 - Office Supplies > General Office Supplies
4203
+ 6319 - Office Supplies > General Office Supplies > Brass Fasteners
4204
+ 2591 - Office Supplies > General Office Supplies > Correction Fluids, Pens & Tapes
4205
+ 543618 - Office Supplies > General Office Supplies > Correction Fluids, Pens & Tapes > Correction Fluids
4206
+ 543620 - Office Supplies > General Office Supplies > Correction Fluids, Pens & Tapes > Correction Pens
4207
+ 543619 - Office Supplies > General Office Supplies > Correction Fluids, Pens & Tapes > Correction Tapes
4208
+ 938 - Office Supplies > General Office Supplies > Erasers
4209
+ 960 - Office Supplies > General Office Supplies > Labels & Tags
4210
+ 4377 - Office Supplies > General Office Supplies > Labels & Tags > Address Labels
4211
+ 4154 - Office Supplies > General Office Supplies > Labels & Tags > Folder Tabs
4212
+ 4137 - Office Supplies > General Office Supplies > Labels & Tags > Label Clips
4213
+ 5502 - Office Supplies > General Office Supplies > Labels & Tags > Label Tapes & Refill Rolls
4214
+ 4200 - Office Supplies > General Office Supplies > Labels & Tags > Shipping Labels
4215
+ 4117 - Office Supplies > General Office Supplies > Labels & Tags > Shipping Tags
4216
+ 8015 - Office Supplies > General Office Supplies > Laminating Film, Pouches & Sheets
4217
+ 505805 - Office Supplies > General Office Supplies > Mounting Putty
4218
+ 934 - Office Supplies > General Office Supplies > Office Tape
4219
+ 936 - Office Supplies > General Office Supplies > Paper Clips & Clamps
4220
+ 543676 - Office Supplies > General Office Supplies > Paper Clips & Clamps > Binder Clips
4221
+ 543675 - Office Supplies > General Office Supplies > Paper Clips & Clamps > Paper Clips
4222
+ 956 - Office Supplies > General Office Supplies > Paper Products
4223
+ 2658 - Office Supplies > General Office Supplies > Paper Products > Binder Paper
4224
+ 5264 - Office Supplies > General Office Supplies > Paper Products > Blank ID Cards
4225
+ 957 - Office Supplies > General Office Supplies > Paper Products > Business Cards
4226
+ 5918 - Office Supplies > General Office Supplies > Paper Products > Business Forms & Receipts
4227
+ 6930 - Office Supplies > General Office Supplies > Paper Products > Checks
4228
+ 1513 - Office Supplies > General Office Supplies > Paper Products > Cover Paper
4229
+ 958 - Office Supplies > General Office Supplies > Paper Products > Envelopes
4230
+ 959 - Office Supplies > General Office Supplies > Paper Products > Index Cards
4231
+ 961 - Office Supplies > General Office Supplies > Paper Products > Notebooks & Notepads
4232
+ 3871 - Office Supplies > General Office Supplies > Paper Products > Post Cards
4233
+ 962 - Office Supplies > General Office Supplies > Paper Products > Printer & Copier Paper
4234
+ 5919 - Office Supplies > General Office Supplies > Paper Products > Receipt & Adding Machine Paper Rolls
4235
+ 3457 - Office Supplies > General Office Supplies > Paper Products > Stationery
4236
+ 2689 - Office Supplies > General Office Supplies > Paper Products > Sticky Notes
4237
+ 944 - Office Supplies > General Office Supplies > Rubber Bands
4238
+ 948 - Office Supplies > General Office Supplies > Staples
4239
+ 949 - Office Supplies > General Office Supplies > Tacks & Pushpins
4240
+ 5829 - Office Supplies > Impulse Sealers
4241
+ 8499 - Office Supplies > Lap Desks
4242
+ 2435 - Office Supplies > Name Plates
4243
+ 6519 - Office Supplies > Office & Chair Mats
4244
+ 6462 - Office Supplies > Office & Chair Mats > Anti-Fatigue Mats
4245
+ 6521 - Office Supplies > Office & Chair Mats > Chair Mats
4246
+ 6520 - Office Supplies > Office & Chair Mats > Office Mats
4247
+ 6373 - Office Supplies > Office Carts
4248
+ 1996 - Office Supplies > Office Carts > AV Carts
4249
+ 6182 - Office Supplies > Office Carts > Book Carts
4250
+ 6180 - Office Supplies > Office Carts > File Carts
4251
+ 6181 - Office Supplies > Office Carts > Mail Carts
4252
+ 6179 - Office Supplies > Office Carts > Utility Carts
4253
+ 950 - Office Supplies > Office Equipment
4254
+ 499864 - Office Supplies > Office Equipment > Calculator Accessories
4255
+ 333 - Office Supplies > Office Equipment > Calculators
4256
+ 543518 - Office Supplies > Office Equipment > Calculators > Basic Calculators
4257
+ 543521 - Office Supplies > Office Equipment > Calculators > Construction Calculators
4258
+ 543519 - Office Supplies > Office Equipment > Calculators > Financial Calculators
4259
+ 543517 - Office Supplies > Office Equipment > Calculators > Graphing Calculators
4260
+ 543520 - Office Supplies > Office Equipment > Calculators > Scientific Calculators
4261
+ 337 - Office Supplies > Office Equipment > Electronic Dictionaries & Translators
4262
+ 952 - Office Supplies > Office Equipment > Label Makers
4263
+ 1625 - Office Supplies > Office Equipment > Laminators
4264
+ 953 - Office Supplies > Office Equipment > Office Shredders
4265
+ 1708 - Office Supplies > Office Equipment > Postage Meters
4266
+ 6404 - Office Supplies > Office Equipment > Time & Attendance Clocks
4267
+ 954 - Office Supplies > Office Equipment > Transcribers & Dictation Systems
4268
+ 955 - Office Supplies > Office Equipment > Typewriters
4269
+ 2986 - Office Supplies > Office Instruments
4270
+ 2883 - Office Supplies > Office Instruments > Call Bells
4271
+ 935 - Office Supplies > Office Instruments > Clipboards
4272
+ 505830 - Office Supplies > Office Instruments > Letter Openers
4273
+ 941 - Office Supplies > Office Instruments > Magnifiers
4274
+ 4341 - Office Supplies > Office Instruments > Office Rubber Stamps
4275
+ 943 - Office Supplies > Office Instruments > Pencil Sharpeners
4276
+ 4499 - Office Supplies > Office Instruments > Staple Removers
4277
+ 947 - Office Supplies > Office Instruments > Staplers
4278
+ 503746 - Office Supplies > Office Instruments > Tape Dispensers
4279
+ 4470 - Office Supplies > Office Instruments > Writing & Drawing Instrument Accessories
4280
+ 7117 - Office Supplies > Office Instruments > Writing & Drawing Instrument Accessories > Marker & Highlighter Ink Refills
4281
+ 543667 - Office Supplies > Office Instruments > Writing & Drawing Instrument Accessories > Marker & Highlighter Ink Refills > Highlighter Refills
4282
+ 543666 - Office Supplies > Office Instruments > Writing & Drawing Instrument Accessories > Marker & Highlighter Ink Refills > Marker Refills
4283
+ 4471 - Office Supplies > Office Instruments > Writing & Drawing Instrument Accessories > Pen Ink & Refills
4284
+ 4472 - Office Supplies > Office Instruments > Writing & Drawing Instrument Accessories > Pencil Lead & Refills
4285
+ 977 - Office Supplies > Office Instruments > Writing & Drawing Instruments
4286
+ 2623 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Art Charcoals
4287
+ 978 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Chalk
4288
+ 979 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Crayons
4289
+ 980 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Markers & Highlighters
4290
+ 543609 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Markers & Highlighters > Highlighters
4291
+ 543608 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Markers & Highlighters > Markers
4292
+ 6067 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Multifunction Writing Instruments
4293
+ 4752 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pastels
4294
+ 6065 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils
4295
+ 6066 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils > Pen & Pencil Sets
4296
+ 6068 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils > Pencils
4297
+ 3026 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils > Pencils > Art Pencils
4298
+ 981 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils > Pencils > Writing Pencils
4299
+ 543660 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils > Pencils > Writing Pencils > Mechanical Pencils
4300
+ 543661 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils > Pencils > Writing Pencils > Wooden Pencils
4301
+ 982 - Office Supplies > Office Instruments > Writing & Drawing Instruments > Pens & Pencils > Pens
4302
+ 2014 - Office Supplies > Paper Handling
4303
+ 6486 - Office Supplies > Paper Handling > Fingertip Grips
4304
+ 6467 - Office Supplies > Paper Handling > Hole Punches
4305
+ 2207 - Office Supplies > Paper Handling > Paper Folding Machines
4306
+ 1836 - Office Supplies > Paper Handling > Paper Joggers
4307
+ 1803 - Office Supplies > Paper Handling > Paperweights
4308
+ 6178 - Office Supplies > Paper Handling > Pencil Boards
4309
+ 964 - Office Supplies > Presentation Supplies
4310
+ 965 - Office Supplies > Presentation Supplies > Chalkboards
4311
+ 966 - Office Supplies > Presentation Supplies > Display Boards
4312
+ 7525 - Office Supplies > Presentation Supplies > Display Boards > Bulletin Board Accessories
4313
+ 7526 - Office Supplies > Presentation Supplies > Display Boards > Bulletin Board Accessories > Bulletin Board Trim
4314
+ 543688 - Office Supplies > Presentation Supplies > Display Boards > Bulletin Board Accessories > Bulletin Board Trim Sets
4315
+ 2401 - Office Supplies > Presentation Supplies > Display Boards > Bulletin Boards
4316
+ 2263 - Office Supplies > Presentation Supplies > Display Boards > Foam Boards
4317
+ 1627 - Office Supplies > Presentation Supplies > Display Boards > Mounting Boards
4318
+ 2674 - Office Supplies > Presentation Supplies > Display Boards > Poster Boards
4319
+ 4492 - Office Supplies > Presentation Supplies > Document Cameras
4320
+ 971 - Office Supplies > Presentation Supplies > Dry-Erase Boards
4321
+ 967 - Office Supplies > Presentation Supplies > Easel Pads
4322
+ 968 - Office Supplies > Presentation Supplies > Easels
4323
+ 969 - Office Supplies > Presentation Supplies > Laser Pointers
4324
+ 970 - Office Supplies > Presentation Supplies > Lecterns
4325
+ 963 - Office Supplies > Presentation Supplies > Transparencies
4326
+ 4465 - Office Supplies > Presentation Supplies > Wireless Presenters
4327
+ 2636 - Office Supplies > Shipping Supplies
4328
+ 973 - Office Supplies > Shipping Supplies > Moving & Shipping Boxes
4329
+ 974 - Office Supplies > Shipping Supplies > Packing Materials
4330
+ 975 - Office Supplies > Shipping Supplies > Packing Tape
4331
+ 5605 - Religious & Ceremonial
4332
+ 5606 - Religious & Ceremonial > Memorial Ceremony Supplies
4333
+ 5607 - Religious & Ceremonial > Memorial Ceremony Supplies > Memorial Urns
4334
+ 97 - Religious & Ceremonial > Religious Items
4335
+ 3923 - Religious & Ceremonial > Religious Items > Prayer Beads
4336
+ 328060 - Religious & Ceremonial > Religious Items > Prayer Cards
4337
+ 7120 - Religious & Ceremonial > Religious Items > Religious Altars
4338
+ 1949 - Religious & Ceremonial > Religious Items > Religious Veils
4339
+ 499711 - Religious & Ceremonial > Religious Items > Tarot Cards
4340
+ 5455 - Religious & Ceremonial > Wedding Ceremony Supplies
4341
+ 503723 - Religious & Ceremonial > Wedding Ceremony Supplies > Aisle Runners
4342
+ 5456 - Religious & Ceremonial > Wedding Ceremony Supplies > Flower Girl Baskets
4343
+ 5457 - Religious & Ceremonial > Wedding Ceremony Supplies > Ring Pillows & Holders
4344
+ 2092 - Software
4345
+ 313 - Software > Computer Software
4346
+ 5299 - Software > Computer Software > Antivirus & Security Software
4347
+ 5300 - Software > Computer Software > Business & Productivity Software
4348
+ 315 - Software > Computer Software > Compilers & Programming Tools
4349
+ 5301 - Software > Computer Software > Computer Utilities & Maintenance Software
4350
+ 5127 - Software > Computer Software > Dictionary & Translation Software
4351
+ 317 - Software > Computer Software > Educational Software
4352
+ 5304 - Software > Computer Software > Financial, Tax & Accounting Software
4353
+ 3283 - Software > Computer Software > GPS Map Data & Software
4354
+ 318 - Software > Computer Software > Handheld & PDA Software
4355
+ 319 - Software > Computer Software > Multimedia & Design Software
4356
+ 6027 - Software > Computer Software > Multimedia & Design Software > 3D Modeling Software
4357
+ 4950 - Software > Computer Software > Multimedia & Design Software > Animation Editing Software
4358
+ 4951 - Software > Computer Software > Multimedia & Design Software > Graphic Design & Illustration Software
4359
+ 6029 - Software > Computer Software > Multimedia & Design Software > Home & Interior Design Software
4360
+ 4949 - Software > Computer Software > Multimedia & Design Software > Home Publishing Software
4361
+ 6028 - Software > Computer Software > Multimedia & Design Software > Media Viewing Software
4362
+ 5096 - Software > Computer Software > Multimedia & Design Software > Music Composition Software
4363
+ 4952 - Software > Computer Software > Multimedia & Design Software > Sound Editing Software
4364
+ 4953 - Software > Computer Software > Multimedia & Design Software > Video Editing Software
4365
+ 4954 - Software > Computer Software > Multimedia & Design Software > Web Design Software
4366
+ 5302 - Software > Computer Software > Network Software
4367
+ 5303 - Software > Computer Software > Office Application Software
4368
+ 321 - Software > Computer Software > Operating Systems
4369
+ 7225 - Software > Computer Software > Restore Disks
4370
+ 5032 - Software > Digital Goods & Currency
4371
+ 5034 - Software > Digital Goods & Currency > Computer Icons
4372
+ 5035 - Software > Digital Goods & Currency > Desktop Wallpaper
4373
+ 500046 - Software > Digital Goods & Currency > Digital Artwork
4374
+ 8022 - Software > Digital Goods & Currency > Document Templates
4375
+ 5036 - Software > Digital Goods & Currency > Fonts
4376
+ 2065 - Software > Digital Goods & Currency > Stock Photographs & Video Footage
4377
+ 5935 - Software > Digital Goods & Currency > Virtual Currency
4378
+ 1279 - Software > Video Game Software
4379
+ 988 - Sporting Goods
4380
+ 499713 - Sporting Goods > Athletics
4381
+ 1070 - Sporting Goods > Athletics > Baseball & Softball
4382
+ 3544 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Bases & Plates
4383
+ 3747 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Batting Gloves
4384
+ 1076 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Gloves & Mitts
4385
+ 234671 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Pitching Mats
4386
+ 234670 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Pitching Mounds
4387
+ 1078 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Protective Gear
4388
+ 3668 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Protective Gear > Baseball & Softball Batting Helmets
4389
+ 499715 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Protective Gear > Baseball & Softball Chest Protectors
4390
+ 499718 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Protective Gear > Baseball & Softball Leg Guards
4391
+ 499716 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Protective Gear > Catchers Equipment Sets
4392
+ 499717 - Sporting Goods > Athletics > Baseball & Softball > Baseball & Softball Protective Gear > Catchers Helmets & Masks
4393
+ 3790 - Sporting Goods > Athletics > Baseball & Softball > Baseball Bats
4394
+ 3783 - Sporting Goods > Athletics > Baseball & Softball > Baseballs
4395
+ 1077 - Sporting Goods > Athletics > Baseball & Softball > Pitching Machines
4396
+ 3679 - Sporting Goods > Athletics > Baseball & Softball > Softball Bats
4397
+ 3671 - Sporting Goods > Athletics > Baseball & Softball > Softballs
4398
+ 1081 - Sporting Goods > Athletics > Basketball
4399
+ 4676 - Sporting Goods > Athletics > Basketball > Basketball Hoop Parts & Accessories
4400
+ 4089 - Sporting Goods > Athletics > Basketball > Basketball Hoop Parts & Accessories > Basketball Backboards
4401
+ 7251 - Sporting Goods > Athletics > Basketball > Basketball Hoop Parts & Accessories > Basketball Hoop Padding
4402
+ 4050 - Sporting Goods > Athletics > Basketball > Basketball Hoop Parts & Accessories > Basketball Hoop Posts
4403
+ 3829 - Sporting Goods > Athletics > Basketball > Basketball Hoop Parts & Accessories > Basketball Nets
4404
+ 4192 - Sporting Goods > Athletics > Basketball > Basketball Hoop Parts & Accessories > Basketball Rims
4405
+ 1082 - Sporting Goods > Athletics > Basketball > Basketball Hoops
4406
+ 499751 - Sporting Goods > Athletics > Basketball > Basketball Training Aids
4407
+ 1083 - Sporting Goods > Athletics > Basketball > Basketballs
4408
+ 499719 - Sporting Goods > Athletics > Boxing & Martial Arts
4409
+ 4008 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Protective Gear
4410
+ 499726 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Protective Gear > Boxing & MMA Hand Wraps
4411
+ 499725 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Protective Gear > Boxing & Martial Arts Arm Guards
4412
+ 499723 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Protective Gear > Boxing & Martial Arts Body Protectors
4413
+ 499722 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Protective Gear > Boxing & Martial Arts Headgear
4414
+ 3235 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Protective Gear > Boxing Gloves & Mitts
4415
+ 499724 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Protective Gear > MMA Shin Guards
4416
+ 499720 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Training Equipment
4417
+ 499769 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Training Equipment > Boxing & MMA Punch Mitts
4418
+ 7116 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Training Equipment > Grappling Dummies
4419
+ 7129 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Training Equipment > Punching & Training Bag Accessories
4420
+ 3297 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Training Equipment > Punching & Training Bags
4421
+ 499721 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing & Martial Arts Training Equipment > Strike Shields
4422
+ 3411 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing Ring Parts
4423
+ 3652 - Sporting Goods > Athletics > Boxing & Martial Arts > Boxing Rings
4424
+ 3717 - Sporting Goods > Athletics > Boxing & Martial Arts > Martial Arts Belts
4425
+ 4282 - Sporting Goods > Athletics > Boxing & Martial Arts > Martial Arts Weapons
4426
+ 6734 - Sporting Goods > Athletics > Broomball Equipment
4427
+ 3354 - Sporting Goods > Athletics > Cheerleading
4428
+ 3953 - Sporting Goods > Athletics > Cheerleading > Cheerleading Pom Poms
4429
+ 6739 - Sporting Goods > Athletics > Coaching & Officiating
4430
+ 499729 - Sporting Goods > Athletics > Coaching & Officiating > Captains Armbands
4431
+ 505813 - Sporting Goods > Athletics > Coaching & Officiating > Field & Court Boundary Markers
4432
+ 499732 - Sporting Goods > Athletics > Coaching & Officiating > Flip Coins & Discs
4433
+ 6731 - Sporting Goods > Athletics > Coaching & Officiating > Linesman Flags
4434
+ 6729 - Sporting Goods > Athletics > Coaching & Officiating > Penalty Cards & Flags
4435
+ 499731 - Sporting Goods > Athletics > Coaching & Officiating > Pitch Counters
4436
+ 499733 - Sporting Goods > Athletics > Coaching & Officiating > Referee Stands & Chairs
4437
+ 499727 - Sporting Goods > Athletics > Coaching & Officiating > Referee Wallets
4438
+ 8505 - Sporting Goods > Athletics > Coaching & Officiating > Scoreboards
4439
+ 6730 - Sporting Goods > Athletics > Coaching & Officiating > Sport & Safety Whistles
4440
+ 499730 - Sporting Goods > Athletics > Coaching & Officiating > Umpire Indicators
4441
+ 1087 - Sporting Goods > Athletics > Cricket
4442
+ 3870 - Sporting Goods > Athletics > Cricket > Cricket Balls
4443
+ 499737 - Sporting Goods > Athletics > Cricket > Cricket Bat Accessories
4444
+ 499738 - Sporting Goods > Athletics > Cricket > Cricket Bat Accessories > Cricket Bat Grips
4445
+ 3815 - Sporting Goods > Athletics > Cricket > Cricket Bats
4446
+ 499735 - Sporting Goods > Athletics > Cricket > Cricket Equipment Sets
4447
+ 499736 - Sporting Goods > Athletics > Cricket > Cricket Protective Gear
4448
+ 3339 - Sporting Goods > Athletics > Cricket > Cricket Protective Gear > Cricket Gloves
4449
+ 3543 - Sporting Goods > Athletics > Cricket > Cricket Protective Gear > Cricket Helmets
4450
+ 499739 - Sporting Goods > Athletics > Cricket > Cricket Protective Gear > Cricket Leg Guards
4451
+ 499734 - Sporting Goods > Athletics > Cricket > Cricket Stumps
4452
+ 989 - Sporting Goods > Athletics > Dancing
4453
+ 3269 - Sporting Goods > Athletics > Dancing > Ballet Barres
4454
+ 1006 - Sporting Goods > Athletics > Fencing
4455
+ 3261 - Sporting Goods > Athletics > Fencing > Fencing Protective Gear
4456
+ 3366 - Sporting Goods > Athletics > Fencing > Fencing Protective Gear > Fencing Gloves & Cuffs
4457
+ 499740 - Sporting Goods > Athletics > Fencing > Fencing Protective Gear > Fencing Jackets & Lamés
4458
+ 3707 - Sporting Goods > Athletics > Fencing > Fencing Protective Gear > Fencing Masks
4459
+ 3622 - Sporting Goods > Athletics > Fencing > Fencing Weapons
4460
+ 499741 - Sporting Goods > Athletics > Field Hockey & Lacrosse
4461
+ 499744 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey & Lacrosse Protective Gear
4462
+ 499745 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey & Lacrosse Protective Gear > Field Hockey & Lacrosse Gloves
4463
+ 499746 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey & Lacrosse Protective Gear > Field Hockey & Lacrosse Helmets
4464
+ 499747 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey & Lacrosse Protective Gear > Field Hockey & Lacrosse Masks & Goggles
4465
+ 502970 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey & Lacrosse Protective Gear > Field Hockey & Lacrosse Pads
4466
+ 1089 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey Balls
4467
+ 3001 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey Goals
4468
+ 1092 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Field Hockey Sticks
4469
+ 3536 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Balls
4470
+ 499742 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Equipment Sets
4471
+ 3970 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Goals
4472
+ 3336 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Stick Parts
4473
+ 3785 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Stick Parts > Lacrosse Mesh & String
4474
+ 3418 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Stick Parts > Lacrosse Stick Heads
4475
+ 3423 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Stick Parts > Lacrosse Stick Shafts
4476
+ 3817 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Sticks
4477
+ 3204 - Sporting Goods > Athletics > Field Hockey & Lacrosse > Lacrosse Training Aids
4478
+ 499915 - Sporting Goods > Athletics > Figure Skating & Hockey
4479
+ 6077 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Balls & Pucks
4480
+ 6074 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Goals
4481
+ 1105 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear
4482
+ 499756 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Elbow Pads
4483
+ 6078 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Gloves
4484
+ 499890 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Goalie Equipment Sets
4485
+ 6080 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Helmets
4486
+ 3615 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Pants
4487
+ 499755 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Shin Guards & Leg Pads
4488
+ 499757 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Shoulder Pads & Chest Protectors
4489
+ 499975 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Protective Gear > Hockey Suspenders & Belts
4490
+ 6857 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Sledges
4491
+ 7012 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Stick Care
4492
+ 7011 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Stick Parts
4493
+ 6852 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Stick Parts > Hockey Stick Blades
4494
+ 6942 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Stick Parts > Hockey Stick Shafts
4495
+ 6076 - Sporting Goods > Athletics > Figure Skating & Hockey > Hockey Sticks
4496
+ 3791 - Sporting Goods > Athletics > Figure Skating & Hockey > Ice Skate Parts & Accessories
4497
+ 6708 - Sporting Goods > Athletics > Figure Skating & Hockey > Ice Skate Parts & Accessories > Figure Skate Boots
4498
+ 7000 - Sporting Goods > Athletics > Figure Skating & Hockey > Ice Skate Parts & Accessories > Ice Skate Blades
4499
+ 3623 - Sporting Goods > Athletics > Figure Skating & Hockey > Ice Skate Parts & Accessories > Ice Skate Sharpeners
4500
+ 4019 - Sporting Goods > Athletics > Figure Skating & Hockey > Ice Skate Parts & Accessories > Skate Blade Guards
4501
+ 3241 - Sporting Goods > Athletics > Figure Skating & Hockey > Ice Skate Parts & Accessories > Skate Lace Tighteners
4502
+ 1057 - Sporting Goods > Athletics > Figure Skating & Hockey > Ice Skates
4503
+ 1093 - Sporting Goods > Athletics > Football
4504
+ 3442 - Sporting Goods > Athletics > Football > Football Gloves
4505
+ 3492 - Sporting Goods > Athletics > Football > Football Goal Posts
4506
+ 3656 - Sporting Goods > Athletics > Football > Football Kicking Tees & Holders
4507
+ 1097 - Sporting Goods > Athletics > Football > Football Protective Gear
4508
+ 3510 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Girdles
4509
+ 3060 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Helmet Accessories
4510
+ 3247 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Helmet Accessories > Football Chin Straps
4511
+ 3090 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Helmet Accessories > Football Face Masks
4512
+ 3343 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Helmet Accessories > Football Helmet Padding
4513
+ 3063 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Helmet Accessories > Football Helmet Visors
4514
+ 1098 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Helmets
4515
+ 3497 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Neck Rolls
4516
+ 499778 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Rib Protection Shirts & Vests
4517
+ 3621 - Sporting Goods > Athletics > Football > Football Protective Gear > Football Shoulder Pads
4518
+ 3998 - Sporting Goods > Athletics > Football > Football Training Equipment
4519
+ 499779 - Sporting Goods > Athletics > Football > Football Training Equipment > Football Dummies & Sleds
4520
+ 1094 - Sporting Goods > Athletics > Football > Footballs
4521
+ 499799 - Sporting Goods > Athletics > General Purpose Athletic Equipment
4522
+ 8222 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Altitude Training Masks
4523
+ 499800 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Athletic Cups
4524
+ 7397 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Ball Carrying Bags & Carts
4525
+ 7433 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Ball Pump Accessories
4526
+ 7435 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Ball Pump Accessories > Ball Pump Needles
4527
+ 7434 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Ball Pumps
4528
+ 499903 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Exercise & Gym Mat Storage Racks & Carts
4529
+ 3971 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Grip Spray & Chalk
4530
+ 499803 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Gym Mats
4531
+ 8077 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Practice Nets & Screens
4532
+ 499802 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Speed & Agility Ladders & Hurdles
4533
+ 8319 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Sports & Agility Cones
4534
+ 3877 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Sports Megaphones
4535
+ 499801 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Sports Mouthguards
4536
+ 6344 - Sporting Goods > Athletics > General Purpose Athletic Equipment > Stadium Seats & Cushions
4537
+ 1000 - Sporting Goods > Athletics > Gymnastics
4538
+ 503763 - Sporting Goods > Athletics > Gymnastics > Gymnastics Bars & Balance Beams
4539
+ 3808 - Sporting Goods > Athletics > Gymnastics > Gymnastics Protective Gear
4540
+ 499781 - Sporting Goods > Athletics > Gymnastics > Gymnastics Protective Gear > Gymnastics Grips
4541
+ 3774 - Sporting Goods > Athletics > Gymnastics > Gymnastics Rings
4542
+ 3123 - Sporting Goods > Athletics > Gymnastics > Gymnastics Springboards
4543
+ 3182 - Sporting Goods > Athletics > Gymnastics > Pommel Horses
4544
+ 3779 - Sporting Goods > Athletics > Gymnastics > Vaulting Horses
4545
+ 503752 - Sporting Goods > Athletics > Racquetball & Squash
4546
+ 503753 - Sporting Goods > Athletics > Racquetball & Squash > Racquetball & Squash Balls
4547
+ 3119 - Sporting Goods > Athletics > Racquetball & Squash > Racquetball & Squash Eyewear
4548
+ 499783 - Sporting Goods > Athletics > Racquetball & Squash > Racquetball & Squash Gloves
4549
+ 3714 - Sporting Goods > Athletics > Racquetball & Squash > Racquetball Racquets
4550
+ 4002 - Sporting Goods > Athletics > Racquetball & Squash > Squash Racquets
4551
+ 7156 - Sporting Goods > Athletics > Rounders
4552
+ 7158 - Sporting Goods > Athletics > Rounders > Rounders Bats
4553
+ 7157 - Sporting Goods > Athletics > Rounders > Rounders Gloves
4554
+ 1110 - Sporting Goods > Athletics > Rugby
4555
+ 3761 - Sporting Goods > Athletics > Rugby > Rugby Balls
4556
+ 3487 - Sporting Goods > Athletics > Rugby > Rugby Gloves
4557
+ 3881 - Sporting Goods > Athletics > Rugby > Rugby Posts
4558
+ 499782 - Sporting Goods > Athletics > Rugby > Rugby Protective Gear
4559
+ 3077 - Sporting Goods > Athletics > Rugby > Rugby Protective Gear > Rugby Headgear
4560
+ 3983 - Sporting Goods > Athletics > Rugby > Rugby Training Aids
4561
+ 1111 - Sporting Goods > Athletics > Soccer
4562
+ 1112 - Sporting Goods > Athletics > Soccer > Soccer Balls
4563
+ 3973 - Sporting Goods > Athletics > Soccer > Soccer Corner Flags
4564
+ 3141 - Sporting Goods > Athletics > Soccer > Soccer Gloves
4565
+ 6055 - Sporting Goods > Athletics > Soccer > Soccer Goal Accessories
4566
+ 1113 - Sporting Goods > Athletics > Soccer > Soccer Goals
4567
+ 499784 - Sporting Goods > Athletics > Soccer > Soccer Protective Gear
4568
+ 1114 - Sporting Goods > Athletics > Soccer > Soccer Protective Gear > Soccer Shin Guards
4569
+ 1047 - Sporting Goods > Athletics > Team Handball
4570
+ 499785 - Sporting Goods > Athletics > Team Handball > Handballs
4571
+ 1065 - Sporting Goods > Athletics > Tennis
4572
+ 3105 - Sporting Goods > Athletics > Tennis > Tennis Ball Hoppers & Carts
4573
+ 3985 - Sporting Goods > Athletics > Tennis > Tennis Ball Machines
4574
+ 3565 - Sporting Goods > Athletics > Tennis > Tennis Ball Savers
4575
+ 3113 - Sporting Goods > Athletics > Tennis > Tennis Balls
4576
+ 3961 - Sporting Goods > Athletics > Tennis > Tennis Nets
4577
+ 3658 - Sporting Goods > Athletics > Tennis > Tennis Racquet Accessories
4578
+ 3352 - Sporting Goods > Athletics > Tennis > Tennis Racquet Accessories > Racquet Vibration Dampeners
4579
+ 3638 - Sporting Goods > Athletics > Tennis > Tennis Racquet Accessories > Tennis Racquet Bags
4580
+ 3403 - Sporting Goods > Athletics > Tennis > Tennis Racquet Accessories > Tennis Racquet Grips & Tape
4581
+ 3295 - Sporting Goods > Athletics > Tennis > Tennis Racquet Accessories > Tennis Racquet Grommets
4582
+ 3922 - Sporting Goods > Athletics > Tennis > Tennis Racquet Accessories > Tennis Racquet String
4583
+ 3906 - Sporting Goods > Athletics > Tennis > Tennis Racquets
4584
+ 1060 - Sporting Goods > Athletics > Track & Field
4585
+ 3478 - Sporting Goods > Athletics > Track & Field > Discus
4586
+ 3445 - Sporting Goods > Athletics > Track & Field > High Jump Crossbars
4587
+ 3864 - Sporting Goods > Athletics > Track & Field > High Jump Pits
4588
+ 3389 - Sporting Goods > Athletics > Track & Field > Javelins
4589
+ 3987 - Sporting Goods > Athletics > Track & Field > Pole Vault Pits
4590
+ 3878 - Sporting Goods > Athletics > Track & Field > Relay Batons
4591
+ 3770 - Sporting Goods > Athletics > Track & Field > Shot Puts
4592
+ 3997 - Sporting Goods > Athletics > Track & Field > Starter Pistols
4593
+ 3880 - Sporting Goods > Athletics > Track & Field > Throwing Hammers
4594
+ 3149 - Sporting Goods > Athletics > Track & Field > Track Hurdles
4595
+ 499786 - Sporting Goods > Athletics > Track & Field > Track Starting Blocks
4596
+ 4020 - Sporting Goods > Athletics > Track & Field > Vaulting Poles
4597
+ 1115 - Sporting Goods > Athletics > Volleyball
4598
+ 1117 - Sporting Goods > Athletics > Volleyball > Volleyball Nets
4599
+ 499788 - Sporting Goods > Athletics > Volleyball > Volleyball Protective Gear
4600
+ 499789 - Sporting Goods > Athletics > Volleyball > Volleyball Protective Gear > Volleyball Knee Pads
4601
+ 499787 - Sporting Goods > Athletics > Volleyball > Volleyball Training Aids
4602
+ 1116 - Sporting Goods > Athletics > Volleyball > Volleyballs
4603
+ 499861 - Sporting Goods > Athletics > Wallyball Equipment
4604
+ 1145 - Sporting Goods > Athletics > Water Polo
4605
+ 3794 - Sporting Goods > Athletics > Water Polo > Water Polo Balls
4606
+ 3575 - Sporting Goods > Athletics > Water Polo > Water Polo Caps
4607
+ 3678 - Sporting Goods > Athletics > Water Polo > Water Polo Goals
4608
+ 1068 - Sporting Goods > Athletics > Wrestling
4609
+ 3057 - Sporting Goods > Athletics > Wrestling > Wrestling Protective Gear
4610
+ 499791 - Sporting Goods > Athletics > Wrestling > Wrestling Protective Gear > Wrestling Headgear
4611
+ 499790 - Sporting Goods > Athletics > Wrestling > Wrestling Protective Gear > Wrestling Knee Pads
4612
+ 990 - Sporting Goods > Exercise & Fitness
4613
+ 499797 - Sporting Goods > Exercise & Fitness > Ab Wheels & Rollers
4614
+ 237166 - Sporting Goods > Exercise & Fitness > Aerobic Steps
4615
+ 499796 - Sporting Goods > Exercise & Fitness > Balance Trainers
4616
+ 499792 - Sporting Goods > Exercise & Fitness > Cardio
4617
+ 4598 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machine Accessories
4618
+ 499703 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machine Accessories > Elliptical Trainer Accessories
4619
+ 499702 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machine Accessories > Exercise Bike Accessories
4620
+ 499701 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machine Accessories > Rowing Machine Accessories
4621
+ 499700 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machine Accessories > Stair Climber & Stepper Accessories
4622
+ 499699 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machine Accessories > Treadmill Accessories
4623
+ 4589 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines
4624
+ 992 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines > Elliptical Trainers
4625
+ 994 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines > Exercise Bikes
4626
+ 995 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines > Rowing Machines
4627
+ 996 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines > Stair Climbers & Steppers
4628
+ 543610 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines > Stair Climbers & Steppers > Stair Climbers
4629
+ 543611 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines > Stair Climbers & Steppers > Stair Steppers
4630
+ 997 - Sporting Goods > Exercise & Fitness > Cardio > Cardio Machines > Treadmills
4631
+ 2614 - Sporting Goods > Exercise & Fitness > Cardio > Jump Ropes
4632
+ 993 - Sporting Goods > Exercise & Fitness > Exercise Balls
4633
+ 5869 - Sporting Goods > Exercise & Fitness > Exercise Bands
4634
+ 499795 - Sporting Goods > Exercise & Fitness > Exercise Benches
4635
+ 4669 - Sporting Goods > Exercise & Fitness > Exercise Equipment Mats
4636
+ 499978 - Sporting Goods > Exercise & Fitness > Exercise Machine & Equipment Sets
4637
+ 8471 - Sporting Goods > Exercise & Fitness > Exercise Wedges
4638
+ 6337 - Sporting Goods > Exercise & Fitness > Foam Roller Accessories
4639
+ 6338 - Sporting Goods > Exercise & Fitness > Foam Roller Accessories > Foam Roller Storage Bags
4640
+ 5319 - Sporting Goods > Exercise & Fitness > Foam Rollers
4641
+ 6867 - Sporting Goods > Exercise & Fitness > Hand Exercisers
4642
+ 355576 - Sporting Goods > Exercise & Fitness > Inversion Tables & Systems
4643
+ 3938 - Sporting Goods > Exercise & Fitness > Medicine Balls
4644
+ 499912 - Sporting Goods > Exercise & Fitness > Power Towers
4645
+ 8215 - Sporting Goods > Exercise & Fitness > Push Up & Pull Up Bars
4646
+ 7174 - Sporting Goods > Exercise & Fitness > Reaction Balls
4647
+ 8062 - Sporting Goods > Exercise & Fitness > Speed & Resistance Parachutes
4648
+ 505302 - Sporting Goods > Exercise & Fitness > Sport Safety Lights & Reflectors
4649
+ 5693 - Sporting Goods > Exercise & Fitness > Stopwatches
4650
+ 499798 - Sporting Goods > Exercise & Fitness > Suspension Trainers
4651
+ 8066 - Sporting Goods > Exercise & Fitness > Vibration Exercise Machines
4652
+ 499793 - Sporting Goods > Exercise & Fitness > Weight Lifting
4653
+ 6452 - Sporting Goods > Exercise & Fitness > Weight Lifting > Free Weight Accessories
4654
+ 8083 - Sporting Goods > Exercise & Fitness > Weight Lifting > Free Weight Accessories > Free Weight Storage Racks
4655
+ 499794 - Sporting Goods > Exercise & Fitness > Weight Lifting > Free Weight Accessories > Weight Bar Collars
4656
+ 3271 - Sporting Goods > Exercise & Fitness > Weight Lifting > Free Weight Accessories > Weight Bars
4657
+ 3164 - Sporting Goods > Exercise & Fitness > Weight Lifting > Free Weights
4658
+ 3654 - Sporting Goods > Exercise & Fitness > Weight Lifting > Weight Lifting Belts
4659
+ 3858 - Sporting Goods > Exercise & Fitness > Weight Lifting > Weight Lifting Gloves & Hand Supports
4660
+ 3217 - Sporting Goods > Exercise & Fitness > Weight Lifting > Weight Lifting Machine & Exercise Bench Accessories
4661
+ 3542 - Sporting Goods > Exercise & Fitness > Weight Lifting > Weight Lifting Machines & Racks
4662
+ 6103 - Sporting Goods > Exercise & Fitness > Weighted Clothing
4663
+ 999 - Sporting Goods > Exercise & Fitness > Yoga & Pilates
4664
+ 3810 - Sporting Goods > Exercise & Fitness > Yoga & Pilates > Pilates Machines
4665
+ 6750 - Sporting Goods > Exercise & Fitness > Yoga & Pilates > Yoga & Pilates Blocks
4666
+ 3640 - Sporting Goods > Exercise & Fitness > Yoga & Pilates > Yoga & Pilates Mats
4667
+ 6743 - Sporting Goods > Exercise & Fitness > Yoga & Pilates > Yoga & Pilates Towels
4668
+ 5107 - Sporting Goods > Exercise & Fitness > Yoga & Pilates > Yoga Mat Bags & Straps
4669
+ 1001 - Sporting Goods > Indoor Games
4670
+ 1002 - Sporting Goods > Indoor Games > Air Hockey
4671
+ 505330 - Sporting Goods > Indoor Games > Air Hockey > Air Hockey Equipment
4672
+ 3548 - Sporting Goods > Indoor Games > Air Hockey > Air Hockey Table Parts
4673
+ 3245 - Sporting Goods > Indoor Games > Air Hockey > Air Hockey Tables
4674
+ 1003 - Sporting Goods > Indoor Games > Billiards
4675
+ 3059 - Sporting Goods > Indoor Games > Billiards > Billiard Ball Racks
4676
+ 3135 - Sporting Goods > Indoor Games > Billiards > Billiard Balls
4677
+ 3222 - Sporting Goods > Indoor Games > Billiards > Billiard Cue Accessories
4678
+ 499993 - Sporting Goods > Indoor Games > Billiards > Billiard Cue Accessories > Billiard Cue Cases
4679
+ 499994 - Sporting Goods > Indoor Games > Billiards > Billiard Cue Accessories > Billiard Cue Chalk
4680
+ 3720 - Sporting Goods > Indoor Games > Billiards > Billiard Cue Accessories > Billiard Cue Racks
4681
+ 3910 - Sporting Goods > Indoor Games > Billiards > Billiard Cues & Bridges
4682
+ 3755 - Sporting Goods > Indoor Games > Billiards > Billiard Gloves
4683
+ 3469 - Sporting Goods > Indoor Games > Billiards > Billiard Table Lights
4684
+ 3183 - Sporting Goods > Indoor Games > Billiards > Billiard Table Parts & Accessories
4685
+ 3574 - Sporting Goods > Indoor Games > Billiards > Billiard Table Parts & Accessories > Billiard Pockets
4686
+ 3754 - Sporting Goods > Indoor Games > Billiards > Billiard Table Parts & Accessories > Billiard Table Brushes
4687
+ 3547 - Sporting Goods > Indoor Games > Billiards > Billiard Table Parts & Accessories > Billiard Table Cloth
4688
+ 8065 - Sporting Goods > Indoor Games > Billiards > Billiard Table Parts & Accessories > Billiard Table Covers
4689
+ 3139 - Sporting Goods > Indoor Games > Billiards > Billiard Tables
4690
+ 1004 - Sporting Goods > Indoor Games > Bowling
4691
+ 3698 - Sporting Goods > Indoor Games > Bowling > Bowling Ball Bags
4692
+ 3219 - Sporting Goods > Indoor Games > Bowling > Bowling Balls
4693
+ 3535 - Sporting Goods > Indoor Games > Bowling > Bowling Gloves
4694
+ 3669 - Sporting Goods > Indoor Games > Bowling > Bowling Pins
4695
+ 3260 - Sporting Goods > Indoor Games > Bowling > Bowling Wrist Supports
4696
+ 1007 - Sporting Goods > Indoor Games > Foosball
4697
+ 3641 - Sporting Goods > Indoor Games > Foosball > Foosball Balls
4698
+ 3524 - Sporting Goods > Indoor Games > Foosball > Foosball Table Parts & Accessories
4699
+ 3847 - Sporting Goods > Indoor Games > Foosball > Foosball Tables
4700
+ 7010 - Sporting Goods > Indoor Games > Multi-Game Tables
4701
+ 1008 - Sporting Goods > Indoor Games > Ping Pong
4702
+ 3964 - Sporting Goods > Indoor Games > Ping Pong > Ping Pong Balls
4703
+ 3788 - Sporting Goods > Indoor Games > Ping Pong > Ping Pong Nets & Posts
4704
+ 3900 - Sporting Goods > Indoor Games > Ping Pong > Ping Pong Paddle Accessories
4705
+ 3375 - Sporting Goods > Indoor Games > Ping Pong > Ping Pong Paddles & Sets
4706
+ 3132 - Sporting Goods > Indoor Games > Ping Pong > Ping Pong Robot Accessories
4707
+ 3546 - Sporting Goods > Indoor Games > Ping Pong > Ping Pong Robots
4708
+ 3345 - Sporting Goods > Indoor Games > Ping Pong > Ping Pong Tables
4709
+ 1009 - Sporting Goods > Indoor Games > Table Shuffleboard
4710
+ 3148 - Sporting Goods > Indoor Games > Table Shuffleboard > Shuffleboard Tables
4711
+ 3996 - Sporting Goods > Indoor Games > Table Shuffleboard > Table Shuffleboard Powder
4712
+ 4021 - Sporting Goods > Indoor Games > Table Shuffleboard > Table Shuffleboard Pucks
4713
+ 1005 - Sporting Goods > Indoor Games > Throwing Darts
4714
+ 3957 - Sporting Goods > Indoor Games > Throwing Darts > Dart Backboards
4715
+ 3327 - Sporting Goods > Indoor Games > Throwing Darts > Dart Parts
4716
+ 3766 - Sporting Goods > Indoor Games > Throwing Darts > Dart Parts > Dart Flights
4717
+ 3109 - Sporting Goods > Indoor Games > Throwing Darts > Dart Parts > Dart Shafts
4718
+ 3250 - Sporting Goods > Indoor Games > Throwing Darts > Dart Parts > Dart Tips
4719
+ 3559 - Sporting Goods > Indoor Games > Throwing Darts > Dartboards
4720
+ 3839 - Sporting Goods > Indoor Games > Throwing Darts > Darts
4721
+ 1011 - Sporting Goods > Outdoor Recreation
4722
+ 499811 - Sporting Goods > Outdoor Recreation > Boating & Water Sports
4723
+ 1120 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting
4724
+ 7449 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Boating Gloves
4725
+ 6314 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Canoe Accessories
4726
+ 1124 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Canoes
4727
+ 6312 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Kayak Accessories
4728
+ 1127 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Kayaks
4729
+ 499964 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Paddle Leashes
4730
+ 1129 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Paddles & Oars
4731
+ 6097 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Pedal Boats
4732
+ 3406 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Row Boats
4733
+ 3476 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Rafting > Whitewater Rafts
4734
+ 499813 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel
4735
+ 1138 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Drysuits
4736
+ 6496 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Life Jacket Accessories
4737
+ 1128 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Life Jackets
4738
+ 3376 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Rash Guards & Swim Shirts
4739
+ 499687 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Water Sport Helmets
4740
+ 499814 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Wetsuit Pieces
4741
+ 5400 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Wetsuit Pieces > Wetsuit Bottoms
4742
+ 5399 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Wetsuit Pieces > Wetsuit Hoods, Gloves & Boots
4743
+ 5401 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Wetsuit Pieces > Wetsuit Tops
4744
+ 1147 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Boating & Water Sport Apparel > Wetsuits
4745
+ 1135 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling
4746
+ 1136 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Buoyancy Compensators
4747
+ 1137 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Dive Computers
4748
+ 499867 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Diving & Snorkeling Equipment Sets
4749
+ 1139 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Diving & Snorkeling Fins
4750
+ 1140 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Diving & Snorkeling Masks
4751
+ 6514 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Diving Belts
4752
+ 5312 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Diving Knives & Shears
4753
+ 1141 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Diving Regulators
4754
+ 1142 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Diving & Snorkeling > Snorkels
4755
+ 5579 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Kitesurfing
4756
+ 5584 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Kitesurfing > Kiteboard Cases
4757
+ 5581 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Kitesurfing > Kiteboard Parts
4758
+ 5580 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Kitesurfing > Kiteboards
4759
+ 5583 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Kitesurfing > Kitesurfing & Windsurfing Harnesses
4760
+ 5582 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Kitesurfing > Kitesurfing Kites
4761
+ 1143 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing
4762
+ 6287 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Bodyboards
4763
+ 6288 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Paddleboards
4764
+ 6286 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Skimboards
4765
+ 3649 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Surf Leashes
4766
+ 3579 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Surfboard Cases & Bags
4767
+ 3525 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Surfboard Fins
4768
+ 3801 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Surfboard Wax
4769
+ 3320 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Surfboards
4770
+ 7451 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Surfing Gloves
4771
+ 3762 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Surfing > Surfing Tail Pads
4772
+ 1144 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming
4773
+ 7104 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Child Swimming Aids
4774
+ 6473 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Hand Paddles
4775
+ 2966 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Kickboards
4776
+ 3595 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Pull Buoys
4777
+ 6513 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swim Belts
4778
+ 3807 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swim Caps
4779
+ 3304 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swim Gloves
4780
+ 6330 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swim Goggle & Mask Accessories
4781
+ 3360 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swim Goggles & Masks
4782
+ 6550 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swim Weights
4783
+ 6511 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swimming Fins
4784
+ 6512 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swimming Fins > Monofins
4785
+ 2512 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swimming Fins > Training Fins
4786
+ 3596 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swimming Machines
4787
+ 6515 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Swimming > Swimming Nose Clips
4788
+ 3195 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports
4789
+ 3370 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Kneeboarding
4790
+ 3101 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Kneeboarding > Kneeboards
4791
+ 6301 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Towable Rafts & Tubes
4792
+ 7452 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Towed Water Sport Gloves
4793
+ 3282 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Wakeboarding
4794
+ 505317 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Wakeboarding > Kiteboard & Wakeboard Bindings
4795
+ 505291 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Wakeboarding > Wakeboard Parts
4796
+ 3353 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Wakeboarding > Wakeboards
4797
+ 1146 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Water Skiing
4798
+ 3289 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Water Skiing > Sit-Down Hydrofoils
4799
+ 6302 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Water Skiing > Water Ski Bindings
4800
+ 6296 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Water Skiing > Water Ski Cases & Bags
4801
+ 3350 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Water Skiing > Water Skis
4802
+ 3636 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Towed Water Sports > Water Sport Tow Cables
4803
+ 7178 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Watercraft Storage Racks
4804
+ 8172 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Watercraft Storage Racks > Boat Storage Racks
4805
+ 8173 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Watercraft Storage Racks > Water Sport Board Storage Racks
4806
+ 1148 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Windsurfing
4807
+ 3624 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Windsurfing > Windsurfing Board Parts
4808
+ 3908 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Windsurfing > Windsurfing Board Parts > Windsurfing Board Fins
4809
+ 3285 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Windsurfing > Windsurfing Board Parts > Windsurfing Board Masts
4810
+ 3894 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Windsurfing > Windsurfing Boards
4811
+ 3413 - Sporting Goods > Outdoor Recreation > Boating & Water Sports > Windsurfing > Windsurfing Sails
4812
+ 1013 - Sporting Goods > Outdoor Recreation > Camping & Hiking
4813
+ 1014 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camp Furniture
4814
+ 4451 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camp Furniture > Air Mattress & Sleeping Pad Accessories
4815
+ 3695 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camp Furniture > Air Mattresses
4816
+ 3089 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camp Furniture > Cots
4817
+ 1016 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camping Cookware & Dinnerware
4818
+ 1019 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camping Lights & Lanterns
4819
+ 3937 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camping Tools
4820
+ 3495 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camping Tools > Hunting & Survival Knives
4821
+ 4095 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Camping Tools > Multifunction Tools & Knives
4822
+ 3508 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Chemical Hand Warmers
4823
+ 5636 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Compression Sacks
4824
+ 7154 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Hiking Pole Accessories
4825
+ 3738 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Hiking Poles
4826
+ 3538 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Mosquito Nets & Insect Screens
4827
+ 4785 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Navigational Compasses
4828
+ 502993 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Portable Toilets & Showers
4829
+ 502994 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Portable Toilets & Showers > Portable Showers & Privacy Enclosures
4830
+ 503009 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Portable Toilets & Showers > Portable Toilets & Urination Devices
4831
+ 1023 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Portable Water Filters & Purifiers
4832
+ 5881 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Sleeping Bag Liners
4833
+ 1020 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Sleeping Bags
4834
+ 1021 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Sleeping Pads
4835
+ 5655 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Tent Accessories
4836
+ 499680 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Tent Accessories > Inner Tents
4837
+ 5656 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Tent Accessories > Tent Footprints
4838
+ 5658 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Tent Accessories > Tent Poles & Stakes
4839
+ 5657 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Tent Accessories > Tent Vestibules
4840
+ 1022 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Tents
4841
+ 8079 - Sporting Goods > Outdoor Recreation > Camping & Hiking > Windbreaks
4842
+ 7059 - Sporting Goods > Outdoor Recreation > Climbing
4843
+ 3363 - Sporting Goods > Outdoor Recreation > Climbing > Belay Devices
4844
+ 3746 - Sporting Goods > Outdoor Recreation > Climbing > Carabiners
4845
+ 499815 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Apparel & Accessories
4846
+ 499816 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Apparel & Accessories > Climbing Gloves
4847
+ 3314 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Apparel & Accessories > Climbing Helmets
4848
+ 5394 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Apparel & Accessories > Crampons
4849
+ 3454 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Ascenders & Descenders
4850
+ 3211 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Chalk Bags
4851
+ 3322 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Crash Pads
4852
+ 3218 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Harnesses
4853
+ 3266 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Protection Devices
4854
+ 3825 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Rope
4855
+ 3201 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Rope Bags
4856
+ 3369 - Sporting Goods > Outdoor Recreation > Climbing > Climbing Webbing
4857
+ 7060 - Sporting Goods > Outdoor Recreation > Climbing > Ice Climbing Tools
4858
+ 7061 - Sporting Goods > Outdoor Recreation > Climbing > Ice Screws
4859
+ 3518 - Sporting Goods > Outdoor Recreation > Climbing > Indoor Climbing Holds
4860
+ 3849 - Sporting Goods > Outdoor Recreation > Climbing > Quickdraws
4861
+ 1025 - Sporting Goods > Outdoor Recreation > Cycling
4862
+ 3214 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories
4863
+ 3778 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Bags & Panniers
4864
+ 3341 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Baskets
4865
+ 3879 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Bells & Horns
4866
+ 4145 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Cages
4867
+ 500067 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Child Seat Accessories
4868
+ 5842 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Child Seats
4869
+ 5540 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Computer Accessories
4870
+ 3243 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Computers
4871
+ 6442 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Covers
4872
+ 3719 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Fenders
4873
+ 1028 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Front & Rear Racks
4874
+ 500092 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Handlebar Grips & Decor
4875
+ 1027 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Locks
4876
+ 3368 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Mirrors
4877
+ 3827 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Pumps
4878
+ 6445 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Saddle Pads & Seat Covers
4879
+ 6506 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Shock Pumps
4880
+ 7448 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Spoke Beads
4881
+ 3428 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Stands & Storage
4882
+ 499694 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Tire Repair Supplies & Kits
4883
+ 7223 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Toe Straps & Clips
4884
+ 505668 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Tools
4885
+ 3811 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Trailers
4886
+ 3868 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Trainers
4887
+ 3631 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Training Wheels
4888
+ 3558 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Transport Bags & Cases
4889
+ 6048 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Bicycle Water Sport Board Racks
4890
+ 500109 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Accessories > Electric Bicycle Conversion Kits
4891
+ 3618 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts
4892
+ 3740 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Brake Parts
4893
+ 4574 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Brake Parts > Bicycle Brake Calipers
4894
+ 4575 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Brake Parts > Bicycle Brake Levers
4895
+ 4576 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Brake Parts > Bicycle Brake Rotors
4896
+ 4577 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Brake Parts > Bicycle Brake Sets
4897
+ 499684 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Cable Housings
4898
+ 499685 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Cables
4899
+ 4585 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts
4900
+ 4590 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Bottom Brackets
4901
+ 4586 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Cassettes & Freewheels
4902
+ 4591 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Chainrings
4903
+ 4587 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Chains
4904
+ 4592 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Cranks
4905
+ 4588 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Derailleurs
4906
+ 4593 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Pedals
4907
+ 4594 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Drivetrain Parts > Bicycle Shifters
4908
+ 4603 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Forks
4909
+ 3639 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Frames
4910
+ 499868 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Groupsets
4911
+ 6960 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Handlebar Extensions
4912
+ 4582 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Handlebars
4913
+ 7478 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Headset Parts
4914
+ 7480 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Headset Parts > Bicycle Headset Bearings
4915
+ 7479 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Headset Parts > Bicycle Headset Spacers
4916
+ 7477 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Headsets
4917
+ 8239 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Kickstands
4918
+ 3292 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Saddles
4919
+ 4595 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Seatpost Clamps
4920
+ 4194 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Seatposts
4921
+ 4596 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Small Parts
4922
+ 4583 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Stems
4923
+ 499871 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Tire Valve Adapters
4924
+ 499869 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Tire Valve Caps
4925
+ 499870 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Tire Valves
4926
+ 4571 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Tires
4927
+ 4572 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Tubes
4928
+ 4597 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts
4929
+ 7538 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Foot Pegs
4930
+ 500053 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Hub Parts
4931
+ 4599 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Hubs
4932
+ 499875 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Rim Strips
4933
+ 4600 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Spokes
4934
+ 8528 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Wheel Axles & Skewers
4935
+ 4601 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Wheel Nipples
4936
+ 4602 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheel Parts > Bicycle Wheel Rims
4937
+ 3216 - Sporting Goods > Outdoor Recreation > Cycling > Bicycle Parts > Bicycle Wheels
4938
+ 1026 - Sporting Goods > Outdoor Recreation > Cycling > Bicycles
4939
+ 3982 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories
4940
+ 7474 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Cleat Accessories
4941
+ 7476 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Cleat Accessories > Bicycle Cleat Bolts
4942
+ 7453 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Cleat Accessories > Bicycle Cleat Covers
4943
+ 7475 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Cleat Accessories > Bicycle Cleat Shims & Wedges
4944
+ 3118 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Cleats
4945
+ 3246 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Gloves
4946
+ 500028 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Helmet Parts & Accessories
4947
+ 1029 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Helmets
4948
+ 8061 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Protective Pads
4949
+ 3272 - Sporting Goods > Outdoor Recreation > Cycling > Cycling Apparel & Accessories > Bicycle Shoe Covers
4950
+ 3634 - Sporting Goods > Outdoor Recreation > Cycling > Tricycle Accessories
4951
+ 3531 - Sporting Goods > Outdoor Recreation > Cycling > Tricycles
4952
+ 3070 - Sporting Goods > Outdoor Recreation > Cycling > Unicycle Accessories
4953
+ 1030 - Sporting Goods > Outdoor Recreation > Cycling > Unicycles
4954
+ 1031 - Sporting Goods > Outdoor Recreation > Equestrian
4955
+ 3257 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care
4956
+ 6898 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Blankets & Sheets
4957
+ 5569 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Boots & Leg Wraps
4958
+ 7482 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Feed
4959
+ 499817 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Fly Masks
4960
+ 5025 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Grooming
4961
+ 6386 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Grooming > Horse Clippers & Trimmers
4962
+ 499818 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Grooming > Horse Grooming Combs, Brushes & Mitts
4963
+ 7481 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Treats
4964
+ 7459 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Vitamins & Supplements
4965
+ 499819 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Care > Horse Wormers
4966
+ 5593 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack
4967
+ 4018 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Bridle Bits
4968
+ 3426 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Bridles
4969
+ 1491 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Cinches
4970
+ 499710 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Horse Halters
4971
+ 2756 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Horse Harnesses
4972
+ 499709 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Horse Leads
4973
+ 1754 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Reins
4974
+ 2210 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Saddles
4975
+ 8109 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack > Stirrups
4976
+ 7215 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack Accessories
4977
+ 499820 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack Accessories > Horse Tack Boxes
4978
+ 8107 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack Accessories > Saddle Accessories
4979
+ 326122 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack Accessories > Saddle Accessories > Saddle Bags & Panniers
4980
+ 499959 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack Accessories > Saddle Accessories > Saddle Covers & Cases
4981
+ 8108 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack Accessories > Saddle Accessories > Saddle Pads & Blankets
4982
+ 7216 - Sporting Goods > Outdoor Recreation > Equestrian > Horse Tack Accessories > Saddle Accessories > Saddle Racks
4983
+ 5594 - Sporting Goods > Outdoor Recreation > Equestrian > Riding Apparel & Accessories
4984
+ 3084 - Sporting Goods > Outdoor Recreation > Equestrian > Riding Apparel & Accessories > Equestrian Gloves
4985
+ 3821 - Sporting Goods > Outdoor Recreation > Equestrian > Riding Apparel & Accessories > Equestrian Helmets
4986
+ 3265 - Sporting Goods > Outdoor Recreation > Equestrian > Riding Apparel & Accessories > Riding Crops & Whips
4987
+ 6914 - Sporting Goods > Outdoor Recreation > Equestrian > Riding Apparel & Accessories > Riding Pants
4988
+ 3334 - Sporting Goods > Outdoor Recreation > Fishing
4989
+ 8064 - Sporting Goods > Outdoor Recreation > Fishing > Bite Alarms
4990
+ 5406 - Sporting Goods > Outdoor Recreation > Fishing > Fishing & Hunting Waders
4991
+ 6495 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Bait & Chum Containers
4992
+ 7342 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Gaffs
4993
+ 7344 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Hook Removal Tools
4994
+ 1037 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Lines & Leaders
4995
+ 3614 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Nets
4996
+ 8092 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Reel Accessories
4997
+ 8273 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Reel Accessories > Fishing Reel Bags & Cases
4998
+ 8094 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Reel Accessories > Fishing Reel Lubricants
4999
+ 8208 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Reel Accessories > Fishing Reel Replacement Spools
5000
+ 4926 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Reels
5001
+ 8093 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Rod Accessories
5002
+ 8272 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Rod Accessories > Fishing Rod Bags & Cases
5003
+ 499942 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Rod Accessories > Fishing Rod Holders & Storage Racks
5004
+ 4927 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Rods
5005
+ 7343 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Spears
5006
+ 499823 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Tackle
5007
+ 3603 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Tackle > Fishing Baits & Lures
5008
+ 3859 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Tackle > Fishing Floats
5009
+ 3359 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Tackle > Fishing Hooks
5010
+ 3651 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Tackle > Fishing Sinkers
5011
+ 7222 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Tackle > Fishing Snaps & Swivels
5012
+ 7221 - Sporting Goods > Outdoor Recreation > Fishing > Fishing Traps
5013
+ 7217 - Sporting Goods > Outdoor Recreation > Fishing > Fly Tying Materials
5014
+ 7125 - Sporting Goods > Outdoor Recreation > Fishing > Fly Tying Materials > Fishing Beads
5015
+ 6440 - Sporting Goods > Outdoor Recreation > Fishing > Fly Tying Materials > Fishing Yarn
5016
+ 3096 - Sporting Goods > Outdoor Recreation > Fishing > Live Bait
5017
+ 1041 - Sporting Goods > Outdoor Recreation > Fishing > Tackle Bags & Boxes
5018
+ 1043 - Sporting Goods > Outdoor Recreation > Golf
5019
+ 8044 - Sporting Goods > Outdoor Recreation > Golf > Divot Tools
5020
+ 7314 - Sporting Goods > Outdoor Recreation > Golf > Golf Accessory Sets
5021
+ 4605 - Sporting Goods > Outdoor Recreation > Golf > Golf Bag Accessories
5022
+ 4537 - Sporting Goods > Outdoor Recreation > Golf > Golf Bag Accessories > Golf Bag Carts
5023
+ 4525 - Sporting Goods > Outdoor Recreation > Golf > Golf Bag Accessories > Golf Bag Covers & Cases
5024
+ 1044 - Sporting Goods > Outdoor Recreation > Golf > Golf Bags
5025
+ 6864 - Sporting Goods > Outdoor Recreation > Golf > Golf Ball Markers
5026
+ 1045 - Sporting Goods > Outdoor Recreation > Golf > Golf Balls
5027
+ 3642 - Sporting Goods > Outdoor Recreation > Golf > Golf Club Parts & Accessories
5028
+ 4254 - Sporting Goods > Outdoor Recreation > Golf > Golf Club Parts & Accessories > Golf Club Grips
5029
+ 4043 - Sporting Goods > Outdoor Recreation > Golf > Golf Club Parts & Accessories > Golf Club Headcovers
5030
+ 499780 - Sporting Goods > Outdoor Recreation > Golf > Golf Club Parts & Accessories > Golf Club Shafts
5031
+ 1046 - Sporting Goods > Outdoor Recreation > Golf > Golf Clubs
5032
+ 3578 - Sporting Goods > Outdoor Recreation > Golf > Golf Flags
5033
+ 4466 - Sporting Goods > Outdoor Recreation > Golf > Golf Gloves
5034
+ 3106 - Sporting Goods > Outdoor Recreation > Golf > Golf Tees
5035
+ 4467 - Sporting Goods > Outdoor Recreation > Golf > Golf Towels
5036
+ 3772 - Sporting Goods > Outdoor Recreation > Golf > Golf Training Aids
5037
+ 3789 - Sporting Goods > Outdoor Recreation > Hang Gliding & Skydiving
5038
+ 5877 - Sporting Goods > Outdoor Recreation > Hang Gliding & Skydiving > Air Suits
5039
+ 4327 - Sporting Goods > Outdoor Recreation > Hang Gliding & Skydiving > Hang Gliders
5040
+ 4023 - Sporting Goods > Outdoor Recreation > Hang Gliding & Skydiving > Parachutes
5041
+ 499824 - Sporting Goods > Outdoor Recreation > Hunting & Shooting
5042
+ 1033 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery
5043
+ 3773 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Archery Armguards
5044
+ 499833 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Archery Gloves & Releases
5045
+ 3883 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Archery Targets
5046
+ 3291 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Arrow Parts & Accessories
5047
+ 499831 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Arrow Parts & Accessories > Arrow Fletchings
5048
+ 499832 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Arrow Parts & Accessories > Arrow Nocks
5049
+ 499830 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Arrow Parts & Accessories > Broadheads & Field Points
5050
+ 3533 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Arrows & Bolts
5051
+ 499826 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Bow & Crossbow Accessories
5052
+ 499825 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Bows & Crossbows
5053
+ 3332 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Bows & Crossbows > Compound Bows
5054
+ 3505 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Bows & Crossbows > Crossbows
5055
+ 3715 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Bows & Crossbows > Recurve & Longbows
5056
+ 3757 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Archery > Quivers
5057
+ 3125 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Clay Pigeon Shooting
5058
+ 3305 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Clay Pigeon Shooting > Clay Pigeon Throwers
5059
+ 3528 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Clay Pigeon Shooting > Clay Pigeons
5060
+ 3136 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting
5061
+ 7460 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting & Shooting Protective Gear
5062
+ 7461 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting & Shooting Protective Gear > Hunting & Shooting Gloves
5063
+ 7518 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting & Shooting Protective Gear > Hunting & Shooting Jackets
5064
+ 3674 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Animal Traps
5065
+ 7373 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Hearing Enhancers
5066
+ 1034 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Hunting Blinds & Screens
5067
+ 5917 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Hunting Dog Equipment
5068
+ 3748 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Tree Stands
5069
+ 6992 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Wild Game Feeders
5070
+ 8011 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Wildlife Attractants
5071
+ 8080 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Wildlife Attractants > Cover Scents & Scent Attractants
5072
+ 3756 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Wildlife Attractants > Hunting & Wildlife Calls
5073
+ 3583 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Wildlife Attractants > Hunting & Wildlife Decoys
5074
+ 8081 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Hunting > Wildlife Attractants > Wildlife Bait, Feed & Minerals
5075
+ 499834 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft
5076
+ 2443 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Airsoft
5077
+ 3116 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Airsoft > Airsoft Gun Parts & Accessories
5078
+ 8005 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Airsoft > Airsoft Gun Parts & Accessories > Airsoft Gun Batteries
5079
+ 3093 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Airsoft > Airsoft Guns
5080
+ 3925 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Airsoft > Airsoft Pellets
5081
+ 1049 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball
5082
+ 499835 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball & Airsoft Protective Gear
5083
+ 499836 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball & Airsoft Protective Gear > Paintball & Airsoft Gloves
5084
+ 499838 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball & Airsoft Protective Gear > Paintball & Airsoft Goggles & Masks
5085
+ 499839 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball & Airsoft Protective Gear > Paintball & Airsoft Pads
5086
+ 499837 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball & Airsoft Protective Gear > Paintball & Airsoft Vests
5087
+ 6748 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Grenade Launchers
5088
+ 3408 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Grenades
5089
+ 3187 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Gun Parts & Accessories
5090
+ 3244 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Gun Parts & Accessories > Paintball Air Tanks
5091
+ 3690 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Gun Parts & Accessories > Paintball Gun Barrels
5092
+ 8514 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Gun Parts & Accessories > Paintball Gun Drop Forwards
5093
+ 3152 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Gun Parts & Accessories > Paintball Hoppers
5094
+ 3234 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Guns
5095
+ 6781 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintball Harnesses & Packs
5096
+ 3438 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Paintball & Airsoft > Paintball > Paintballs
5097
+ 499840 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Shooting & Range Accessories
5098
+ 499842 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Shooting & Range Accessories > Shooting Rests
5099
+ 499841 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Shooting & Range Accessories > Shooting Sticks & Bipods
5100
+ 3170 - Sporting Goods > Outdoor Recreation > Hunting & Shooting > Shooting & Range Accessories > Shooting Targets
5101
+ 5998 - Sporting Goods > Outdoor Recreation > Hydration System Accessories
5102
+ 5635 - Sporting Goods > Outdoor Recreation > Hydration Systems
5103
+ 499761 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating
5104
+ 499771 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating > Inline & Roller Skating Protective Gear
5105
+ 499775 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating > Inline & Roller Skating Protective Gear > Roller Skating Pads
5106
+ 499759 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating > Inline Skate Parts
5107
+ 1058 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating > Inline Skates
5108
+ 499760 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating > Roller Skate Parts
5109
+ 2837 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating > Roller Skates
5110
+ 500029 - Sporting Goods > Outdoor Recreation > Inline & Roller Skating > Roller Skis
5111
+ 7375 - Sporting Goods > Outdoor Recreation > Kite Buggying
5112
+ 7376 - Sporting Goods > Outdoor Recreation > Kite Buggying > Kite Buggies
5113
+ 7377 - Sporting Goods > Outdoor Recreation > Kite Buggying > Kite Buggy Accessories
5114
+ 499846 - Sporting Goods > Outdoor Recreation > Outdoor Games
5115
+ 1062 - Sporting Goods > Outdoor Recreation > Outdoor Games > Badminton
5116
+ 3107 - Sporting Goods > Outdoor Recreation > Outdoor Games > Badminton > Badminton Nets
5117
+ 3950 - Sporting Goods > Outdoor Recreation > Outdoor Games > Badminton > Badminton Racquets & Sets
5118
+ 3907 - Sporting Goods > Outdoor Recreation > Outdoor Games > Badminton > Shuttlecocks
5119
+ 3787 - Sporting Goods > Outdoor Recreation > Outdoor Games > Deck Shuffleboard
5120
+ 3689 - Sporting Goods > Outdoor Recreation > Outdoor Games > Deck Shuffleboard > Deck Shuffleboard Cues
5121
+ 3190 - Sporting Goods > Outdoor Recreation > Outdoor Games > Deck Shuffleboard > Deck Shuffleboard Pucks
5122
+ 3484 - Sporting Goods > Outdoor Recreation > Outdoor Games > Disc Golf
5123
+ 3993 - Sporting Goods > Outdoor Recreation > Outdoor Games > Disc Golf > Disc Golf Bags
5124
+ 3227 - Sporting Goods > Outdoor Recreation > Outdoor Games > Disc Golf > Disc Golf Baskets
5125
+ 3405 - Sporting Goods > Outdoor Recreation > Outdoor Games > Lawn Games
5126
+ 7430 - Sporting Goods > Outdoor Recreation > Outdoor Games > Paddle Ball Sets
5127
+ 3390 - Sporting Goods > Outdoor Recreation > Outdoor Games > Pickleball
5128
+ 499848 - Sporting Goods > Outdoor Recreation > Outdoor Games > Pickleball > Pickleball Paddles
5129
+ 499847 - Sporting Goods > Outdoor Recreation > Outdoor Games > Pickleball > Pickleballs
5130
+ 499904 - Sporting Goods > Outdoor Recreation > Outdoor Games > Platform & Paddle Tennis
5131
+ 499850 - Sporting Goods > Outdoor Recreation > Outdoor Games > Platform & Paddle Tennis > Platform & Paddle Tennis Paddles
5132
+ 499849 - Sporting Goods > Outdoor Recreation > Outdoor Games > Platform & Paddle Tennis > Platform Tennis Balls
5133
+ 3126 - Sporting Goods > Outdoor Recreation > Outdoor Games > Tetherball
5134
+ 499882 - Sporting Goods > Outdoor Recreation > Outdoor Games > Tetherball > Tetherball Poles
5135
+ 499883 - Sporting Goods > Outdoor Recreation > Outdoor Games > Tetherball > Tetherball Sets
5136
+ 499884 - Sporting Goods > Outdoor Recreation > Outdoor Games > Tetherball > Tetherballs
5137
+ 5879 - Sporting Goods > Outdoor Recreation > Riding Scooters
5138
+ 3276 - Sporting Goods > Outdoor Recreation > Skateboarding
5139
+ 3127 - Sporting Goods > Outdoor Recreation > Skateboarding > Skate Rails
5140
+ 3626 - Sporting Goods > Outdoor Recreation > Skateboarding > Skate Ramps
5141
+ 3670 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboard Parts
5142
+ 3869 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboard Parts > Skateboard Decks
5143
+ 505817 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboard Parts > Skateboard Small Parts
5144
+ 3192 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboard Parts > Skateboard Trucks
5145
+ 3637 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboard Parts > Skateboard Wheels
5146
+ 3067 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboarding Protective Gear
5147
+ 499776 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboarding Protective Gear > Skate Helmets
5148
+ 7789 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboarding Protective Gear > Skateboarding Gloves
5149
+ 3488 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboarding Protective Gear > Skateboarding Pads
5150
+ 1059 - Sporting Goods > Outdoor Recreation > Skateboarding > Skateboards
5151
+ 499844 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities
5152
+ 499951 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Avalanche Safety
5153
+ 499952 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Avalanche Safety > Avalanche Probes
5154
+ 499877 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Avalanche Safety > Avalanche Safety Airbags
5155
+ 499845 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding
5156
+ 7224 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Bags
5157
+ 8203 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Goggle Accessories
5158
+ 5050 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Goggle Accessories > Ski & Snowboard Goggle Lenses
5159
+ 3550 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Goggles
5160
+ 1161 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Helmets
5161
+ 499681 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Leashes
5162
+ 7558 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Storage Racks
5163
+ 505772 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Tuning Tools
5164
+ 8074 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski & Snowboard Wax
5165
+ 505296 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski Binding Parts
5166
+ 6063 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski Bindings
5167
+ 6062 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski Boots
5168
+ 1157 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Ski Poles
5169
+ 6064 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Skis
5170
+ 3331 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Skis > Cross-Country Skis
5171
+ 1158 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Skis > Downhill Skis
5172
+ 5088 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Snowboard Binding Parts
5173
+ 1162 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Snowboard Bindings
5174
+ 1163 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Snowboard Boots
5175
+ 1164 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Skiing & Snowboarding > Snowboards
5176
+ 7539 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Sleds
5177
+ 1166 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Snowshoeing
5178
+ 3073 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Snowshoeing > Snowshoe Bindings
5179
+ 3064 - Sporting Goods > Outdoor Recreation > Winter Sports & Activities > Snowshoeing > Snowshoes
5180
+ 1239 - Toys & Games
5181
+ 4648 - Toys & Games > Game Timers
5182
+ 3793 - Toys & Games > Games
5183
+ 6794 - Toys & Games > Games > Battle Top Accessories
5184
+ 6329 - Toys & Games > Games > Battle Tops
5185
+ 3749 - Toys & Games > Games > Bingo Sets
5186
+ 7411 - Toys & Games > Games > Blackjack & Craps Sets
5187
+ 1246 - Toys & Games > Games > Board Games
5188
+ 6853 - Toys & Games > Games > Card Game Accessories
5189
+ 1247 - Toys & Games > Games > Card Games
5190
+ 6054 - Toys & Games > Games > Dexterity Games
5191
+ 6037 - Toys & Games > Games > Dice Sets & Games
5192
+ 7383 - Toys & Games > Games > Poker Chip Accessories
5193
+ 7384 - Toys & Games > Games > Poker Chip Accessories > Poker Chip Carriers & Trays
5194
+ 5403 - Toys & Games > Games > Poker Chips & Sets
5195
+ 4554 - Toys & Games > Games > Portable Electronic Games
5196
+ 7412 - Toys & Games > Games > Roulette Wheels & Sets
5197
+ 8472 - Toys & Games > Games > Slot Machines
5198
+ 6038 - Toys & Games > Games > Tile Games
5199
+ 1249 - Toys & Games > Outdoor Play Equipment
5200
+ 7219 - Toys & Games > Outdoor Play Equipment > Inflatable Bouncer Accessories
5201
+ 6396 - Toys & Games > Outdoor Play Equipment > Inflatable Bouncers
5202
+ 6270 - Toys & Games > Outdoor Play Equipment > Play Swings
5203
+ 6397 - Toys & Games > Outdoor Play Equipment > Play Tents & Tunnels
5204
+ 1251 - Toys & Games > Outdoor Play Equipment > Playhouses
5205
+ 1863 - Toys & Games > Outdoor Play Equipment > Pogo Sticks
5206
+ 2743 - Toys & Games > Outdoor Play Equipment > Sandboxes
5207
+ 6450 - Toys & Games > Outdoor Play Equipment > See Saws
5208
+ 2867 - Toys & Games > Outdoor Play Equipment > Slides
5209
+ 3948 - Toys & Games > Outdoor Play Equipment > Stilts
5210
+ 6269 - Toys & Games > Outdoor Play Equipment > Swing Set & Playset Accessories
5211
+ 6271 - Toys & Games > Outdoor Play Equipment > Swing Sets & Playsets
5212
+ 5524 - Toys & Games > Outdoor Play Equipment > Trampoline Accessories
5213
+ 1738 - Toys & Games > Outdoor Play Equipment > Trampolines
5214
+ 6464 - Toys & Games > Outdoor Play Equipment > Water Play Equipment
5215
+ 6465 - Toys & Games > Outdoor Play Equipment > Water Play Equipment > Play Sprinkers
5216
+ 500095 - Toys & Games > Outdoor Play Equipment > Water Play Equipment > Water Parks & Slides
5217
+ 3556 - Toys & Games > Outdoor Play Equipment > Water Play Equipment > Water Tables
5218
+ 3867 - Toys & Games > Puzzles
5219
+ 7081 - Toys & Games > Puzzles > Jigsaw Puzzle Accessories
5220
+ 2618 - Toys & Games > Puzzles > Jigsaw Puzzles
5221
+ 4011 - Toys & Games > Puzzles > Mechanical Puzzles
5222
+ 6725 - Toys & Games > Puzzles > Wooden & Pegged Puzzles
5223
+ 1253 - Toys & Games > Toys
5224
+ 4352 - Toys & Games > Toys > Activity Toys
5225
+ 7519 - Toys & Games > Toys > Activity Toys > Ball & Cup Games
5226
+ 3733 - Toys & Games > Toys > Activity Toys > Bouncy Balls
5227
+ 3212 - Toys & Games > Toys > Activity Toys > Bubble Blowing Solution
5228
+ 3874 - Toys & Games > Toys > Activity Toys > Bubble Blowing Toys
5229
+ 4177 - Toys & Games > Toys > Activity Toys > Coiled Spring Toys
5230
+ 3534 - Toys & Games > Toys > Activity Toys > Marbles
5231
+ 7425 - Toys & Games > Toys > Activity Toys > Paddle Ball Toys
5232
+ 7473 - Toys & Games > Toys > Activity Toys > Ribbon & Streamer Toys
5233
+ 3466 - Toys & Games > Toys > Activity Toys > Spinning Tops
5234
+ 4216 - Toys & Games > Toys > Activity Toys > Toy Jacks
5235
+ 7148 - Toys & Games > Toys > Activity Toys > Yo-Yo Parts & Accessories
5236
+ 3929 - Toys & Games > Toys > Activity Toys > Yo-Yos
5237
+ 3731 - Toys & Games > Toys > Art & Drawing Toys
5238
+ 505818 - Toys & Games > Toys > Art & Drawing Toys > Play Dough & Putty
5239
+ 3079 - Toys & Games > Toys > Art & Drawing Toys > Toy Drawing Tablets
5240
+ 7311 - Toys & Games > Toys > Ball Pit Accessories
5241
+ 7312 - Toys & Games > Toys > Ball Pit Accessories > Ball Pit Balls
5242
+ 3207 - Toys & Games > Toys > Ball Pits
5243
+ 3911 - Toys & Games > Toys > Bath Toys
5244
+ 1268 - Toys & Games > Toys > Beach & Sand Toys
5245
+ 1254 - Toys & Games > Toys > Building Toys
5246
+ 3805 - Toys & Games > Toys > Building Toys > Construction Set Toys
5247
+ 3172 - Toys & Games > Toys > Building Toys > Foam Blocks
5248
+ 3287 - Toys & Games > Toys > Building Toys > Interlocking Blocks
5249
+ 3163 - Toys & Games > Toys > Building Toys > Marble Track Sets
5250
+ 3617 - Toys & Games > Toys > Building Toys > Wooden Blocks
5251
+ 1255 - Toys & Games > Toys > Dolls, Playsets & Toy Figures
5252
+ 6058 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Action & Toy Figures
5253
+ 7114 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Bobblehead Figures
5254
+ 3584 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Doll & Action Figure Accessories
5255
+ 2497 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Dollhouse Accessories
5256
+ 2499 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Dollhouses
5257
+ 1257 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Dolls
5258
+ 8021 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Paper & Magnetic Dolls
5259
+ 6056 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Puppet & Puppet Theater Accessories
5260
+ 6057 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Puppet Theaters
5261
+ 1258 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Puppets & Marionettes
5262
+ 1259 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Stuffed Animals
5263
+ 3166 - Toys & Games > Toys > Dolls, Playsets & Toy Figures > Toy Playsets
5264
+ 1262 - Toys & Games > Toys > Educational Toys
5265
+ 3088 - Toys & Games > Toys > Educational Toys > Ant Farms
5266
+ 499938 - Toys & Games > Toys > Educational Toys > Astronomy Toys & Models
5267
+ 3928 - Toys & Games > Toys > Educational Toys > Bug Collecting Kits
5268
+ 500015 - Toys & Games > Toys > Educational Toys > Educational Flash Cards
5269
+ 5529 - Toys & Games > Toys > Educational Toys > Reading Toys
5270
+ 3500 - Toys & Games > Toys > Educational Toys > Science & Exploration Sets
5271
+ 6466 - Toys & Games > Toys > Educational Toys > Toy Abacuses
5272
+ 3074 - Toys & Games > Toys > Executive Toys
5273
+ 5872 - Toys & Games > Toys > Executive Toys > Magnet Toys
5274
+ 7366 - Toys & Games > Toys > Flying Toy Accessories
5275
+ 7368 - Toys & Games > Toys > Flying Toy Accessories > Kite Accessories
5276
+ 7371 - Toys & Games > Toys > Flying Toy Accessories > Kite Accessories > Kite Line Reels & Winders
5277
+ 1261 - Toys & Games > Toys > Flying Toys
5278
+ 3966 - Toys & Games > Toys > Flying Toys > Air & Water Rockets
5279
+ 3460 - Toys & Games > Toys > Flying Toys > Kites
5280
+ 3378 - Toys & Games > Toys > Flying Toys > Toy Gliders
5281
+ 3263 - Toys & Games > Toys > Flying Toys > Toy Parachutes
5282
+ 1264 - Toys & Games > Toys > Musical Toys
5283
+ 3252 - Toys & Games > Toys > Musical Toys > Toy Instruments
5284
+ 5970 - Toys & Games > Toys > Play Vehicle Accessories
5285
+ 5971 - Toys & Games > Toys > Play Vehicle Accessories > Toy Race Car & Track Accessories
5286
+ 5153 - Toys & Games > Toys > Play Vehicle Accessories > Toy Train Accessories
5287
+ 2505 - Toys & Games > Toys > Play Vehicles
5288
+ 3444 - Toys & Games > Toys > Play Vehicles > Toy Airplanes
5289
+ 3792 - Toys & Games > Toys > Play Vehicles > Toy Boats
5290
+ 3551 - Toys & Games > Toys > Play Vehicles > Toy Cars
5291
+ 3506 - Toys & Games > Toys > Play Vehicles > Toy Helicopters
5292
+ 3590 - Toys & Games > Toys > Play Vehicles > Toy Motorcycles
5293
+ 3474 - Toys & Games > Toys > Play Vehicles > Toy Race Car & Track Sets
5294
+ 3589 - Toys & Games > Toys > Play Vehicles > Toy Spaceships
5295
+ 5152 - Toys & Games > Toys > Play Vehicles > Toy Trains & Train Sets
5296
+ 3296 - Toys & Games > Toys > Play Vehicles > Toy Trucks & Construction Vehicles
5297
+ 3229 - Toys & Games > Toys > Pretend Play
5298
+ 3680 - Toys & Games > Toys > Pretend Play > Play Money & Banking
5299
+ 3659 - Toys & Games > Toys > Pretend Play > Pretend Electronics
5300
+ 4004 - Toys & Games > Toys > Pretend Play > Pretend Housekeeping
5301
+ 3288 - Toys & Games > Toys > Pretend Play > Pretend Lawn & Garden
5302
+ 3129 - Toys & Games > Toys > Pretend Play > Pretend Professions & Role Playing
5303
+ 8295 - Toys & Games > Toys > Pretend Play > Pretend Shopping & Grocery
5304
+ 3298 - Toys & Games > Toys > Pretend Play > Toy Kitchens & Play Food
5305
+ 543624 - Toys & Games > Toys > Pretend Play > Toy Kitchens & Play Food > Play Food
5306
+ 543690 - Toys & Games > Toys > Pretend Play > Toy Kitchens & Play Food > Toy Cookware
5307
+ 543622 - Toys & Games > Toys > Pretend Play > Toy Kitchens & Play Food > Toy Kitchens
5308
+ 543623 - Toys & Games > Toys > Pretend Play > Toy Kitchens & Play Food > Toy Tableware
5309
+ 3751 - Toys & Games > Toys > Pretend Play > Toy Tools
5310
+ 2778 - Toys & Games > Toys > Remote Control Toy Accessories
5311
+ 2546 - Toys & Games > Toys > Remote Control Toys
5312
+ 7090 - Toys & Games > Toys > Remote Control Toys > Remote Control Airships & Blimps
5313
+ 3532 - Toys & Games > Toys > Remote Control Toys > Remote Control Boats & Watercraft
5314
+ 3601 - Toys & Games > Toys > Remote Control Toys > Remote Control Cars & Trucks
5315
+ 3554 - Toys & Games > Toys > Remote Control Toys > Remote Control Helicopters
5316
+ 5968 - Toys & Games > Toys > Remote Control Toys > Remote Control Motorcycles
5317
+ 3677 - Toys & Games > Toys > Remote Control Toys > Remote Control Planes
5318
+ 6059 - Toys & Games > Toys > Remote Control Toys > Remote Control Robots
5319
+ 5969 - Toys & Games > Toys > Remote Control Toys > Remote Control Tanks
5320
+ 7202 - Toys & Games > Toys > Riding Toy Accessories
5321
+ 2799 - Toys & Games > Toys > Riding Toys
5322
+ 2753 - Toys & Games > Toys > Riding Toys > Electric Riding Vehicles
5323
+ 6407 - Toys & Games > Toys > Riding Toys > Hobby Horses
5324
+ 2724 - Toys & Games > Toys > Riding Toys > Push & Pedal Riding Vehicles
5325
+ 3441 - Toys & Games > Toys > Riding Toys > Rocking & Spring Riding Toys
5326
+ 6379 - Toys & Games > Toys > Riding Toys > Wagons
5327
+ 3625 - Toys & Games > Toys > Robotic Toys
5328
+ 8127 - Toys & Games > Toys > Sports Toy Accessories
5329
+ 8129 - Toys & Games > Toys > Sports Toy Accessories > Fitness Toy Accessories
5330
+ 8128 - Toys & Games > Toys > Sports Toy Accessories > Fitness Toy Accessories > Hula Hoop Accessories
5331
+ 1266 - Toys & Games > Toys > Sports Toys
5332
+ 3776 - Toys & Games > Toys > Sports Toys > Baseball Toys
5333
+ 3552 - Toys & Games > Toys > Sports Toys > Basketball Toys
5334
+ 3675 - Toys & Games > Toys > Sports Toys > Boomerangs
5335
+ 3665 - Toys & Games > Toys > Sports Toys > Bowling Toys
5336
+ 500113 - Toys & Games > Toys > Sports Toys > Fingerboards & Fingerboard Sets
5337
+ 8529 - Toys & Games > Toys > Sports Toys > Fishing Toys
5338
+ 3199 - Toys & Games > Toys > Sports Toys > Fitness Toys
5339
+ 3215 - Toys & Games > Toys > Sports Toys > Fitness Toys > Hula Hoops
5340
+ 4167 - Toys & Games > Toys > Sports Toys > Flying Discs
5341
+ 3909 - Toys & Games > Toys > Sports Toys > Footbags
5342
+ 3226 - Toys & Games > Toys > Sports Toys > Golf Toys
5343
+ 3943 - Toys & Games > Toys > Sports Toys > Hockey Toys
5344
+ 499965 - Toys & Games > Toys > Sports Toys > Playground Balls
5345
+ 505284 - Toys & Games > Toys > Sports Toys > Racquet Sport Toys
5346
+ 3371 - Toys & Games > Toys > Sports Toys > Toy Footballs
5347
+ 499712 - Toys & Games > Toys > Toy Gift Baskets
5348
+ 500005 - Toys & Games > Toys > Toy Weapon & Gadget Accessories
5349
+ 3627 - Toys & Games > Toys > Toy Weapons & Gadgets
5350
+ 3562 - Toys & Games > Toys > Visual Toys
5351
+ 3301 - Toys & Games > Toys > Visual Toys > Kaleidoscopes
5352
+ 3782 - Toys & Games > Toys > Visual Toys > Prisms
5353
+ 2953 - Toys & Games > Toys > Wind-Up Toys
5354
+ 888 - Vehicles & Parts
5355
+ 5613 - Vehicles & Parts > Vehicle Parts & Accessories
5356
+ 3977 - Vehicles & Parts > Vehicle Parts & Accessories > Aircraft Parts & Accessories
5357
+ 8526 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics
5358
+ 505766 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle A/V Players & In-Dash Systems
5359
+ 891 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Amplifiers
5360
+ 5525 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Cassette Adapters
5361
+ 5438 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Cassette Players
5362
+ 894 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Equalizers & Crossovers
5363
+ 6968 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Parking Cameras
5364
+ 5572 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Speakerphones
5365
+ 895 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Speakers
5366
+ 2833 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Subwoofers
5367
+ 8483 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Electronics > Motor Vehicle Video Monitor Mounts
5368
+ 899 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts
5369
+ 2977 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Braking
5370
+ 8232 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Carpet & Upholstery
5371
+ 2805 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Climate Control
5372
+ 8235 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Controls
5373
+ 2550 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Engine Oil Circulation
5374
+ 2820 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Engine Parts
5375
+ 8137 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Engines
5376
+ 908 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Exhaust
5377
+ 8227 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Frame & Body Parts
5378
+ 2727 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Fuel Systems
5379
+ 8233 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Interior Fittings
5380
+ 3318 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Lighting
5381
+ 2642 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Mirrors
5382
+ 8231 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Power & Electrical Systems
5383
+ 8238 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Seating
5384
+ 8234 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Sensors & Gauges
5385
+ 2935 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Suspension Parts
5386
+ 8228 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Towing
5387
+ 2641 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Transmission & Drivetrain Parts
5388
+ 3020 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems
5389
+ 2932 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Rims & Wheels
5390
+ 6090 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Rims & Wheels > Automotive Rims & Wheels
5391
+ 6088 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Rims & Wheels > Motorcycle Rims & Wheels
5392
+ 7253 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Rims & Wheels > Off-Road and All-Terrain Vehicle Rims & Wheels
5393
+ 2989 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Tire Accessories
5394
+ 911 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Tires
5395
+ 6093 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Tires > Automotive Tires
5396
+ 6091 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Tires > Motorcycle Tires
5397
+ 7252 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Tires > Off-Road and All-Terrain Vehicle Tires
5398
+ 2556 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Wheel Systems > Motor Vehicle Wheel Parts
5399
+ 2534 - Vehicles & Parts > Vehicle Parts & Accessories > Motor Vehicle Parts > Motor Vehicle Window Parts & Accessories
5400
+ 913 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor
5401
+ 8534 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Portable Fuel Cans
5402
+ 2895 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Cleaning
5403
+ 2894 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Cleaning > Car Wash Brushes
5404
+ 2590 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Cleaning > Car Wash Solutions
5405
+ 2704 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Cleaning > Vehicle Carpet & Upholstery Cleaners
5406
+ 499766 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Cleaning > Vehicle Fuel Injection Cleaning Kits
5407
+ 2846 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Cleaning > Vehicle Glass Cleaners
5408
+ 2643 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Cleaning > Vehicle Waxes, Polishes & Protectants
5409
+ 3436 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers
5410
+ 8306 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Golf Cart Enclosures
5411
+ 8316 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Motor Vehicle Windshield Covers
5412
+ 8308 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Tonneau Covers
5413
+ 2494 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Hardtops
5414
+ 7031 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Soft Tops
5415
+ 8309 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Storage Covers
5416
+ 8310 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Storage Covers > Automotive Storage Covers
5417
+ 8314 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Storage Covers > Golf Cart Storage Covers
5418
+ 8313 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Storage Covers > Motorcycle Storage Covers
5419
+ 8311 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Storage Covers > Recreational Vehicle Storage Covers
5420
+ 8312 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Covers > Vehicle Storage Covers > Watercraft Storage Covers
5421
+ 2495 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor
5422
+ 2667 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Bumper Stickers
5423
+ 2789 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Air Fresheners
5424
+ 2588 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Antenna Balls
5425
+ 2582 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Dashboard Accessories
5426
+ 2722 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Decals
5427
+ 8469 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Decor Accessory Sets
5428
+ 2652 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Display Flags
5429
+ 5995 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Emblems & Hood Ornaments
5430
+ 8145 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Hitch Covers
5431
+ 7022 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle License Plate Covers
5432
+ 5994 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle License Plate Frames
5433
+ 8298 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle License Plate Mounts & Holders
5434
+ 2248 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle License Plates
5435
+ 7532 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Magnets
5436
+ 8478 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Rear View Mirror Ornaments
5437
+ 8463 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Shift Boots
5438
+ 8142 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Shift Knobs
5439
+ 8464 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Steering Wheel Covers
5440
+ 8202 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Decor > Vehicle Wraps
5441
+ 2788 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids
5442
+ 2635 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Antifreeze
5443
+ 3051 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Brake Fluid
5444
+ 2517 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Cooling System Additives
5445
+ 2881 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Engine Degreasers
5446
+ 2719 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Fuel System Cleaners
5447
+ 2735 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Greases
5448
+ 2916 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Hydraulic Clutch Fluid
5449
+ 3044 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Motor Oil
5450
+ 2770 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Performance Additives
5451
+ 2513 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Power Steering Fluid
5452
+ 2688 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Transmission Fluid
5453
+ 2943 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Fluids > Vehicle Windshield Fluid
5454
+ 3812 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Paint
5455
+ 8450 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Paint > Motor Vehicle Body Paint
5456
+ 8144 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Paint > Motor Vehicle Brake Caliper Paint
5457
+ 8236 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools
5458
+ 8260 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Motor Vehicle Brake Service Kits
5459
+ 8259 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Motor Vehicle Clutch Alignment & Removal Tools
5460
+ 7414 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Vehicle Battery Chargers
5461
+ 499929 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Vehicle Battery Testers
5462
+ 499774 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Vehicle Body Filler
5463
+ 6482 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Vehicle Diagnostic Scanners
5464
+ 5068 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Vehicle Jump Starters
5465
+ 3326 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Vehicle Jumper Cables
5466
+ 8261 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Vehicle Tire Repair & Tire Changing Tools
5467
+ 2647 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Maintenance, Care & Decor > Vehicle Repair & Specialty Tools > Windshield Repair Kits
5468
+ 8301 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security
5469
+ 5547 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear
5470
+ 5959 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Chest & Back Protectors
5471
+ 5963 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Elbow & Wrist Guards
5472
+ 5908 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Gloves
5473
+ 5106 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Goggles
5474
+ 8507 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Hand Guards
5475
+ 6493 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Helmet Parts & Accessories
5476
+ 2110 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Helmets
5477
+ 5960 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Kidney Belts
5478
+ 5962 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Knee & Shin Guards
5479
+ 5961 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Motorcycle Protective Gear > Motorcycle Neck Braces
5480
+ 362737 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Off-Road & All-Terrain Vehicle Protective Gear
5481
+ 362738 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Off-Road & All-Terrain Vehicle Protective Gear > ATV & UTV Bar Pads
5482
+ 2768 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks
5483
+ 6084 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Automotive Alarm Accessories
5484
+ 1802 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Automotive Alarm Systems
5485
+ 6083 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Motorcycle Alarms & Locks
5486
+ 8302 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Door Locks & Parts
5487
+ 8305 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Door Locks & Parts > Vehicle Door Lock Actuators
5488
+ 8304 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Door Locks & Parts > Vehicle Door Lock Knobs
5489
+ 8303 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Door Locks & Parts > Vehicle Door Locks & Locking Systems
5490
+ 235921 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Hitch Locks
5491
+ 3024 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Immobilizers
5492
+ 2699 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Remote Keyless Systems
5493
+ 2750 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Steering Wheel Locks
5494
+ 500077 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Alarms & Locks > Vehicle Wheel Clamps
5495
+ 2879 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment
5496
+ 8447 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Car Window Nets
5497
+ 8445 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Emergency Road Flares
5498
+ 8448 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Motor Vehicle Airbag Parts
5499
+ 8446 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Motor Vehicle Roll Cages & Bars
5500
+ 8477 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Vehicle Seat Belt Buckles
5501
+ 326120 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Vehicle Seat Belt Covers
5502
+ 8476 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Vehicle Seat Belt Straps
5503
+ 8449 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Vehicle Seat Belts
5504
+ 6966 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Vehicle Warning Whips
5505
+ 8506 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Safety & Security > Vehicle Safety Equipment > Vehicle Wheel Chocks
5506
+ 8237 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo
5507
+ 6744 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Cargo Nets
5508
+ 6454 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Rack Accessories
5509
+ 7122 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Rack Accessories > Vehicle Bicycle Rack Accessories
5510
+ 8086 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Rack Accessories > Vehicle Ski & Snowboard Rack Accessories
5511
+ 3472 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks
5512
+ 6041 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Base Rack Systems
5513
+ 2836 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Bicycle Racks
5514
+ 6047 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Boat Racks
5515
+ 4240 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Cargo Racks
5516
+ 6046 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Fishing Rod Racks
5517
+ 7115 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Gun Racks
5518
+ 6044 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Motorcycle & Scooter Racks
5519
+ 6043 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Ski & Snowboard Racks
5520
+ 6042 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Carrying Racks > Vehicle Water Sport Board Racks
5521
+ 8147 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Loading Ramps
5522
+ 4027 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Trailers
5523
+ 1133 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Trailers > Boat Trailers
5524
+ 4037 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Trailers > Horse & Livestock Trailers
5525
+ 4243 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Trailers > Travel Trailers
5526
+ 4044 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motor Vehicle Trailers > Utility & Cargo Trailers
5527
+ 5512 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Motorcycle Bags & Panniers
5528
+ 8378 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Truck Bed Storage Boxes & Organizers
5529
+ 8475 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Vehicle Headrest Hangers & Hooks
5530
+ 2290 - Vehicles & Parts > Vehicle Parts & Accessories > Vehicle Storage & Cargo > Vehicle Organizers
5531
+ 3391 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories
5532
+ 3315 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring
5533
+ 3452 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Anchor Chains
5534
+ 3362 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Anchor Lines & Ropes
5535
+ 3480 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Anchor Windlasses
5536
+ 3189 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Anchors
5537
+ 3655 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Boat Hooks
5538
+ 3718 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Boat Ladders
5539
+ 3572 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Dock Cleats
5540
+ 3899 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Docking & Anchoring > Dock Steps
5541
+ 1132 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Sailboat Parts
5542
+ 1122 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Care
5543
+ 3866 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Care > Watercraft Cleaners
5544
+ 3955 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Care > Watercraft Polishes
5545
+ 3606 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts
5546
+ 3143 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Alternators
5547
+ 3463 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Carburetors & Parts
5548
+ 3321 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Engine Controls
5549
+ 3743 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Ignition Parts
5550
+ 3097 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Impellers
5551
+ 3507 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Motor Locks
5552
+ 3566 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Motor Mounts
5553
+ 3277 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Pistons & Parts
5554
+ 3806 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engine Parts > Watercraft Propellers
5555
+ 1125 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Engines & Motors
5556
+ 3619 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Exhaust Parts
5557
+ 3232 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Exhaust Parts > Watercraft Manifolds
5558
+ 3309 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Exhaust Parts > Watercraft Mufflers & Parts
5559
+ 3400 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Fuel Systems
5560
+ 3415 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Fuel Systems > Watercraft Fuel Lines & Parts
5561
+ 3968 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Fuel Systems > Watercraft Fuel Meters
5562
+ 3892 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Fuel Systems > Watercraft Fuel Pumps & Parts
5563
+ 3648 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Fuel Systems > Watercraft Fuel Tanks & Parts
5564
+ 6293 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Lighting
5565
+ 3995 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Steering Parts
5566
+ 3308 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Steering Parts > Watercraft Steering Cables
5567
+ 3663 - Vehicles & Parts > Vehicle Parts & Accessories > Watercraft Parts & Accessories > Watercraft Steering Parts > Watercraft Steering Wheels
5568
+ 5614 - Vehicles & Parts > Vehicles
5569
+ 3395 - Vehicles & Parts > Vehicles > Aircraft
5570
+ 1267 - Vehicles & Parts > Vehicles > Motor Vehicles
5571
+ 916 - Vehicles & Parts > Vehicles > Motor Vehicles > Cars, Trucks & Vans
5572
+ 3931 - Vehicles & Parts > Vehicles > Motor Vehicles > Golf Carts
5573
+ 919 - Vehicles & Parts > Vehicles > Motor Vehicles > Motorcycles & Scooters
5574
+ 503031 - Vehicles & Parts > Vehicles > Motor Vehicles > Off-Road and All-Terrain Vehicles
5575
+ 3018 - Vehicles & Parts > Vehicles > Motor Vehicles > Off-Road and All-Terrain Vehicles > ATVs & UTVs
5576
+ 2528 - Vehicles & Parts > Vehicles > Motor Vehicles > Off-Road and All-Terrain Vehicles > Go Karts & Dune Buggies
5577
+ 920 - Vehicles & Parts > Vehicles > Motor Vehicles > Recreational Vehicles
5578
+ 3549 - Vehicles & Parts > Vehicles > Motor Vehicles > Snowmobiles
5579
+ 3540 - Vehicles & Parts > Vehicles > Watercraft
5580
+ 3095 - Vehicles & Parts > Vehicles > Watercraft > Motor Boats
5581
+ 1130 - Vehicles & Parts > Vehicles > Watercraft > Personal Watercraft
5582
+ 3087 - Vehicles & Parts > Vehicles > Watercraft > Sailboats
5583
+ 5644 - Vehicles & Parts > Vehicles > Watercraft > Yachts
admin/partials/templates/taxonomies/index.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // Silence is golden
admin/partials/templates/webmarchand.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <products version="1.0" standalone="yes">
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ {separator}
7
+ </products>
admin/partials/templates/zap.co.il.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <STORE>
2
+ <datetime>{DateTimeNow}</datetime>
3
+ <title>{BlogName}</title>
4
+ <link>{BlogURL}</link>
5
+ <description>{BlogDescription}</description>
6
+ <agency>{BlogName}</agency>
7
+ <email>{BlogEmail}</email>
8
+ {separator}
9
+ </STORE>
admin/partials/woo-feed-admin-display.php CHANGED
@@ -18,25 +18,20 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  *
19
  * @global array $feedRules
20
  * @global Woo_Feed_Dropdown $wooFeedDropDown
21
- * @global Woo_Feed_Products $wooFeedProduct
22
  * @global string $feedName
23
  * @global int $feedId
24
  * @global string $provider
25
  * @global array $wp_meta_boxes
26
  */
27
- global $feedRules, $wooFeedDropDown, $wooFeedProduct, $feedName, $feedId, $provider, $wp_meta_boxes;
28
- $feedName = '';
29
- $feedId = '';
30
- $current_screen = get_current_screen();
31
- $page = $current_screen->id;
32
- $wooFeedDropDown = new Woo_Feed_Dropdown();
33
- $wooFeedProduct = new Woo_Feed_Products();
34
- $wooFeedProduct->load_attributes();
35
- $feedRules = woo_feed_parse_feed_rules( $feedRules );
36
- if ( 'adroll' == $feedRules['provider'] ) {
37
- $feedRules['provider'] = 'google';
38
- }
39
- register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
40
  ?>
41
  <div class="wrap wapk-admin" id="Feed">
42
  <div class="wapk-section">
@@ -67,4 +62,4 @@ register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
67
  </div>
68
  </form>
69
  </div>
70
- </div><!-- /wrap -->
18
  *
19
  * @global array $feedRules
20
  * @global Woo_Feed_Dropdown $wooFeedDropDown
21
+ * @global Woo_Feed_Merchant $merchant
22
  * @global string $feedName
23
  * @global int $feedId
24
  * @global string $provider
25
  * @global array $wp_meta_boxes
26
  */
27
+ global $feedRules, $wooFeedDropDown, $merchant, $feedName, $feedId, $provider, $wp_meta_boxes;
28
+ $feedName = '';
29
+ $feedId = '';
30
+ $wf_current_screen = get_current_screen();
31
+ $wf_page = $wf_current_screen->id;
32
+ $wooFeedDropDown = new Woo_Feed_Dropdown();
33
+ $feedRules = woo_feed_parse_feed_rules( $feedRules );
34
+ woo_feed_register_and_do_woo_feed_meta_boxes( $wf_current_screen, $feedRules );
 
 
 
 
 
35
  ?>
36
  <div class="wrap wapk-admin" id="Feed">
37
  <div class="wapk-section">
62
  </div>
63
  </form>
64
  </div>
65
+ </div><!-- /wrap -->
admin/partials/woo-feed-content-settings.php CHANGED
@@ -1,115 +1,113 @@
1
- <?php
2
- /**
3
- * Content Settings Table
4
- *
5
- * @package WooFeed
6
- * @subpackage Editor
7
- * @version 1.0.0
8
- * @since WooFeed 3.2.6
9
- * @author KD <mhamudul.hk@gmail.com>
10
- * @copyright 2019 WebAppick <support@webappick.com>
11
- */
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- die(); // silence
14
- }
15
- /**
16
- * @global array $feedRules
17
- * @global Woo_Feed_Dropdown $wooFeedDropDown
18
- * @global Woo_Feed_Products $wooFeedProduct
19
- */
20
- global $feedRules, $wooFeedDropDown, $wooFeedProduct;
21
- $feedRules = woo_feed_parse_feed_rules( $feedRules );
22
- ?>
23
- <table class="widefat fixed">
24
- <thead>
25
- <tr>
26
- <th colspan="2"><?php _e('Content Settings', 'woo-feed'); ?></th>
27
- </tr>
28
- </thead>
29
- <tbody>
30
- <tr>
31
- <th><label for="provider"><?php _e('Template', 'woo-feed'); ?> <span class="requiredIn">*</span></label></th>
32
- <td>
33
- <select wftitle="<?php esc_attr_e( 'Select a template', 'woo-feed' ); ?>" name="provider" id="provider" class="generalInput wfmasterTooltip" required>
34
- <?php
35
- // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
36
- echo $wooFeedDropDown->merchantsDropdown( $feedRules['provider'] );
37
- ?>
38
- </select>
39
- </td>
40
- </tr>
41
- <tr>
42
- <th><label for="filename"><?php _e('File Name', 'woo-feed'); ?> <span class="requiredIn">*</span></label></th>
43
- <td>
44
- <input name="filename" value="<?php echo isset($feedRules['filename']) ? esc_attr($feedRules['filename']) : ''; ?>" type="text" id="filename" class="generalInput wfmasterTooltip" wftitle="<?php esc_attr_e( 'Filename should be unique. Otherwise it will override the existing filename.', 'woo-feed' ); ?>" required>
45
- </td>
46
- </tr>
47
- <tr>
48
- <th><label for="feedType"><?php _e('Feed Type', 'woo-feed'); ?> <span class="requiredIn">*</span></label></th>
49
- <td>
50
- <select name="feedType" id="feedType" class="generalInput" required>
51
- <option value=""></option>
52
- <?php
53
- foreach ( woo_feed_get_file_types() as $type => $label ) {
54
- printf( '<option value="%1$s" %3$s>%2$s</option>', esc_attr( $type ), esc_html( $label ), selected( $feedRules['feedType'], $type, false ) );
55
- }
56
- ?>
57
- </select>
58
- <span class="spinner" style="float: none; margin: 0;"></span>
59
- </td>
60
- </tr>
61
- <tr class="itemWrapper" style="display: none;">
62
- <th><label for="itemsWrapper"><?php _e('Items Wrapper', 'woo-feed'); ?> <span class="requiredIn">*</span></label></th>
63
- <td>
64
- <input name="itemsWrapper" id="itemsWrapper" type="text" value="<?php echo ( 'xml' == $feedRules['feedType'] ) && isset( $feedRules['itemsWrapper'] ) ? esc_attr( $feedRules['itemsWrapper'] ) : 'products'; ?>" class="generalInput" required="required">
65
- </td>
66
- </tr>
67
- <tr class="itemWrapper" style="display: none;">
68
- <th><label for="itemWrapper"><?php _e('Single Item Wrapper', 'woo-feed'); ?> <span class="requiredIn">*</span></label></th>
69
- <td>
70
- <input name="itemWrapper" id="itemWrapper" type="text" value="<?php echo ( 'xml' == $feedRules['feedType'] ) && isset( $feedRules['itemWrapper'] ) ? esc_attr( $feedRules['itemWrapper'] ) : 'product'; ?>" class="generalInput" required="required">
71
- </td>
72
- </tr>
73
- <?php
74
- /*
75
- <tr class="itemWrapper" style="display: none;">
76
- <th><label for="extraHeader"><?php _e( 'Extra Header', 'woo-feed' ); ?> </label></th>
77
- <td>
78
- <textarea name="extraHeader" id="extraHeader" style="width: 100%" placeholder="<?php esc_html_e( 'Insert Extra Header value. Press enter at the end of each line.', 'woo-feed' ); ?>" rows="3"><?php
79
- // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
80
- echo isset( $feedRules['extraHeader'] ) ? $feedRules['extraHeader'] : '';
81
- ?></textarea>
82
- </td>
83
- </tr>
84
- */
85
- ?>
86
- <tr class="wf_csvtxt" style="display: none;">
87
- <th><label for="delimiter"><?php _e( 'Delimiter', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
88
- <td>
89
- <select name="delimiter" id="delimiter" class="generalInput">
90
- <?php
91
-
92
- foreach ( woo_feed_get_csv_delimiters() as $k => $v ) {
93
- printf( '<option value="%1$s" %3$s>%2$s</option>', esc_attr( $k ), esc_html( $v ), selected( $feedRules['delimiter'], $k, false ) );
94
- }
95
- ?>
96
- </select>
97
- </td>
98
- </tr>
99
- <tr class="wf_csvtxt" style="display: none;">
100
- <th><label for="enclosure"><?php _e( 'Enclosure', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
101
- <td>
102
- <select name="enclosure" id="enclosure" class="generalInput">
103
- <?php
104
- foreach ( woo_feed_get_csv_enclosure() as $k => $v ) {
105
- /** @noinspection HtmlUnknownAttribute */
106
- printf( '<option value="%1$s" %3$s>%2$s</option>', esc_attr( $k ), esc_html( $v ), selected( $feedRules['enclosure'], $k, false ) );
107
- }
108
- ?>
109
- </select>
110
- </td>
111
- </tr>
112
- </tbody>
113
- </table>
114
- <?php
115
- // End of file woo-feed-content-settings.php
1
+ <?php
2
+ /**
3
+ * Content Settings Table
4
+ *
5
+ * @package WooFeed
6
+ * @subpackage Editor
7
+ * @version 1.0.0
8
+ * @since WooFeed 3.2.6
9
+ * @author KD <mhamudul.hk@gmail.com>
10
+ * @copyright 2019 WebAppick <support@webappick.com>
11
+ */
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ die(); // silence
14
+ }
15
+ /**
16
+ * @global array $feedRules
17
+ * @global Woo_Feed_Dropdown $wooFeedDropDown
18
+ * @global Woo_Feed_Merchant $merchant
19
+ */
20
+ global $feedRules, $wooFeedDropDown, $merchant;
21
+ ?>
22
+ <table class="widefat fixed">
23
+ <thead>
24
+ <tr>
25
+ <th colspan="2"><?php _e( 'Content Settings', 'woo-feed' ); ?></th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <tr>
30
+ <th><label for="provider"><?php _e( 'Template', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
31
+ <td>
32
+ <select wftitle="<?php esc_attr_e( 'Select a template', 'woo-feed' ); ?>" name="provider" id="provider" class="generalInput wfmasterTooltip" required>
33
+ <?php
34
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
35
+ echo $wooFeedDropDown->merchantsDropdown( $feedRules['provider'] );
36
+ ?>
37
+ </select>
38
+ </td>
39
+ </tr>
40
+ <tr>
41
+ <th><label for="filename"><?php _e( 'File Name', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
42
+ <td>
43
+ <input name="filename" value="<?php echo isset( $feedRules['filename'] ) ? esc_attr( $feedRules['filename'] ) : ''; ?>" type="text" id="filename" class="generalInput wfmasterTooltip" wftitle="<?php esc_attr_e( 'Filename should be unique. Otherwise it will override the existing filename.', 'woo-feed' ); ?>" required>
44
+ </td>
45
+ </tr>
46
+ <tr>
47
+ <th><label for="feedType"><?php _e( 'Feed Type', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
48
+ <td>
49
+ <select name="feedType" id="feedType" class="generalInput" required>
50
+ <option value=""></option>
51
+ <?php
52
+ foreach ( woo_feed_get_file_types() as $file_type => $label ) {
53
+ printf( '<option value="%1$s" %3$s>%2$s</option>', esc_attr( $file_type ), esc_html( $label ), selected( $feedRules['feedType'], $file_type, false ) );
54
+ }
55
+ ?>
56
+ </select>
57
+ <span class="spinner" style="float: none; margin: 0;"></span>
58
+ </td>
59
+ </tr>
60
+ <tr class="itemWrapper" style="display: none;">
61
+ <th><label for="itemsWrapper"><?php _e( 'Items Wrapper', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
62
+ <td>
63
+ <input name="itemsWrapper" id="itemsWrapper" type="text" value="<?php echo esc_attr( $feedRules['itemsWrapper'] ); ?>" class="generalInput" required="required">
64
+ </td>
65
+ </tr>
66
+ <tr class="itemWrapper" style="display: none;">
67
+ <th><label for="itemWrapper"><?php _e( 'Single Item Wrapper', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
68
+ <td>
69
+ <input name="itemWrapper" id="itemWrapper" type="text" value="<?php echo esc_attr( $feedRules['itemWrapper'] ); ?>" class="generalInput" required="required">
70
+ </td>
71
+ </tr>
72
+ <?php
73
+ /*
74
+ <tr class="itemWrapper" style="display: none;">
75
+ <th><label for="extraHeader"><?php _e( 'Extra Header', 'woo-feed' ); ?> </label></th>
76
+ <td>
77
+ <textarea name="extraHeader" id="extraHeader" style="width: 100%" placeholder="<?php esc_html_e( 'Insert Extra Header value. Press enter at the end of each line.', 'woo-feed' ); ?>" rows="3"><?php
78
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
79
+ echo isset( $feedRules['extraHeader'] ) ? $feedRules['extraHeader'] : '';
80
+ ?></textarea>
81
+ </td>
82
+ </tr>
83
+ */
84
+ ?>
85
+ <tr class="wf_csvtxt" style="display: none;">
86
+ <th><label for="delimiter"><?php _e( 'Delimiter', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
87
+ <td>
88
+ <select name="delimiter" id="delimiter" class="generalInput">
89
+ <?php
90
+ foreach ( woo_feed_get_csv_delimiters() as $k => $v ) {
91
+ printf( '<option value="%1$s" %3$s>%2$s</option>', esc_attr( $k ), esc_html( $v ), selected( $feedRules['delimiter'], $k, false ) );
92
+ }
93
+ ?>
94
+ </select>
95
+ </td>
96
+ </tr>
97
+ <tr class="wf_csvtxt" style="display: none;">
98
+ <th><label for="enclosure"><?php _e( 'Enclosure', 'woo-feed' ); ?> <span class="requiredIn">*</span></label></th>
99
+ <td>
100
+ <select name="enclosure" id="enclosure" class="generalInput">
101
+ <?php
102
+ foreach ( woo_feed_get_csv_enclosure() as $k => $v ) {
103
+ /** @noinspection HtmlUnknownAttribute */
104
+ printf( '<option value="%1$s" %3$s>%2$s</option>', esc_attr( $k ), esc_html( $v ), selected( $feedRules['enclosure'], $k, false ) );
105
+ }
106
+ ?>
107
+ </select>
108
+ </td>
109
+ </tr>
110
+ </tbody>
111
+ </table>
112
+ <?php
113
+ // End of file woo-feed-content-settings.php
 
 
admin/partials/woo-feed-edit-config.php CHANGED
@@ -2,7 +2,8 @@
2
  if ( ! defined( 'ABSPATH' ) ) {
3
  die();
4
  }
5
- ?><table class="table tree widefat fixed sorted_table mtable" style="width: 100%" id="table-1">
 
6
  <thead>
7
  <tr>
8
  <th></th>
@@ -19,91 +20,80 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  <tbody>
20
  <?php
21
  if ( isset( $feedRules['mattributes'] ) && count( $feedRules['mattributes'] ) > 0 ) {
22
- $mAttributes = $feedRules['mattributes'];
23
- $wooAttributes = $feedRules['attributes'];
24
- $type = $feedRules['type'];
25
- $default = $feedRules['default'];
26
- $prefix = $feedRules['prefix'];
27
- $suffix = $feedRules['suffix'];
28
- $outputType = $feedRules['output_type'];
29
- $limit = $feedRules['limit'];
30
  $counter = 0;
31
- foreach ( $mAttributes as $merchant => $mAttribute ) {
32
  ?>
33
  <tr>
34
  <td><i class="wf_sortedtable dashicons dashicons-menu"></i></td>
35
  <td>
36
  <?php if ( method_exists( $wooFeedDropDown, $feedRules['provider'] . 'AttributesDropdown' ) ) { ?>
37
- <select name="mattributes[]" class="wf_mattributes">
38
  <?php
39
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
40
  echo $wooFeedDropDown->{$feedRules['provider'] . 'AttributesDropdown'}( esc_attr( $mAttribute ) );
41
  ?>
42
  </select>
43
  <?php } else { ?>
44
- <input type="text" name="mattributes[]" value="<?php echo esc_attr( $mAttribute ); ?>" required class="wf_mattributes">
45
  <?php } ?>
46
  </td>
47
  <td>
48
- <input type="text" name="prefix[]" value="<?php echo esc_attr( stripslashes( $prefix[ $merchant ] ) ); ?>" autocomplete="off" class="wf_ps"/>
49
  </td>
50
  <td>
51
- <select name="type[]" class="attr_type wfnoempty">
52
- <option <?php echo ( 'attribute' == $type[ $merchant ] ) ? 'selected="selected" ' : ''; ?>value="attribute"><?php _e( 'Attribute', 'woo-feed' ); ?></option>
53
- <option <?php echo ( 'pattern' == $type[ $merchant ] ) ? 'selected="selected" ' : ''; ?> value="pattern"><?php _e( 'Pattern', 'woo-feed' ); ?></option>
54
  </select>
55
  </td>
56
  <td>
57
- <select <?php echo ( 'attribute' == $type[ $merchant ] ) ? '' : 'style=" display: none;" '; ?>name="attributes[]" class="wf_attr wf_attributes">
58
  <?php
59
- // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
60
- echo $wooFeedProduct->attributeDropdown( esc_attr( $wooAttributes[ $merchant ] ) );
61
- ?>
62
  </select>
63
- <?php if ( in_array( $feedRules['provider'], array( 'google', 'facebook', 'pinterest' ) ) && 'current_category' == $mAttribute ) { ?>
64
- <span <?php echo ( 'pattern' == $type[ $merchant ] ) ? '' : 'style=" display: none;" '; ?>class="wf_default wf_attributes">
65
- <select name="default[]" class="selectize" data-placeholder="<?php esc_attr_e( 'Select A Category', 'woo-feed' ); ?>">
66
  <?php
67
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
68
- echo $wooFeedDropDown->googleTaxonomy( esc_attr( $default[ $merchant ] ) );
69
  ?>
70
  </select>
71
  </span>
72
  <span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">Learn More..</a></span>
73
  <?php } else { ?>
74
- <input <?php echo ( 'pattern' == $type[ $merchant ] ) ? '' : 'style=" display: none;"'; ?>autocomplete="off" class="wf_default wf_attributes " type="text" name="default[]" value="<?php echo esc_attr( $default[ $merchant ] ); ?>"/>
75
  <?php } ?>
76
  </td>
77
  <td>
78
- <input type="text" name="suffix[]" value="<?php echo esc_attr( stripslashes( $suffix[ $merchant ] ) ); ?>" autocomplete="off" class="wf_ps"/>
79
  </td>
80
  <td>
81
- <select name="output_type[<?php echo esc_attr( $counter ); ?>][]" class="outputType wfnoempty" data-placeholder="<?php esc_attr_e( 'Select Output Type', 'woo-feed' ); ?>" multiple>
82
  <?php
83
- foreach ( woo_feed_get_field_output_type_options() as $key => $option ) {
84
- if ( isset( $outputType[ $counter ] ) ) {
85
- if ( is_array( $outputType[ $counter ] ) ) {
86
- $selected = in_array( $key, $outputType[ $counter ] );
87
- } else {
88
- $selected = $outputType[ $counter ] == $key;
89
- }
90
- } else {
91
- $selected = '1' == $key;
92
- }
93
- printf( '<option value="%s" %s>%s</option>', esc_attr( $key ), selected( $selected, true, false ), esc_html( $option ) );
94
- }
95
  ?>
96
  </select>
97
  </td>
98
  <td>
99
- <input type="text" name="limit[]" value="<?php echo esc_attr( $limit[ $merchant ] ); ?>" autocomplete="off" class="wf_ps"/>
100
  </td>
101
  <td>
102
  <i class="delRow dashicons dashicons-trash"></i>
103
  </td>
104
  </tr>
105
  <?php
106
- $counter++;
107
  }
108
  }
109
  ?>
@@ -111,7 +101,59 @@ if ( ! defined( 'ABSPATH' ) ) {
111
  <tfoot>
112
  <tr>
113
  <td colspan="3">
114
- <button type="button" class="button-small button-primary" id="wf_newRow"><?php _e( 'Add New Row', 'woo-feed' ); ?></button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  </td>
116
  <td colspan="6"></td>
117
  </tr>
2
  if ( ! defined( 'ABSPATH' ) ) {
3
  die();
4
  }
5
+ ?>
6
+ <table class="table tree widefat fixed sorted_table mtable" style="width: 100%" id="table-1">
7
  <thead>
8
  <tr>
9
  <th></th>
20
  <tbody>
21
  <?php
22
  if ( isset( $feedRules['mattributes'] ) && count( $feedRules['mattributes'] ) > 0 ) {
23
+ $mAttributes = array_values( $feedRules['mattributes'] );
24
+ $wooAttributes = array_values( $feedRules['attributes'] );
25
+ $attr_type = array_values( $feedRules['type'] );
26
+ $default = array_values( $feedRules['default'] );
27
+ $prefix = array_values( $feedRules['prefix'] );
28
+ $suffix = array_values( $feedRules['suffix'] );
29
+ $outputType = array_values( $feedRules['output_type'] );
30
+ $limit = array_values( $feedRules['limit'] );
31
  $counter = 0;
32
+ foreach ( $mAttributes as $k => $mAttribute ) {
33
  ?>
34
  <tr>
35
  <td><i class="wf_sortedtable dashicons dashicons-menu"></i></td>
36
  <td>
37
  <?php if ( method_exists( $wooFeedDropDown, $feedRules['provider'] . 'AttributesDropdown' ) ) { ?>
38
+ <select name="mattributes[<?php echo esc_attr( $k ); ?>]" class="wf_mattributes">
39
  <?php
40
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
41
  echo $wooFeedDropDown->{$feedRules['provider'] . 'AttributesDropdown'}( esc_attr( $mAttribute ) );
42
  ?>
43
  </select>
44
  <?php } else { ?>
45
+ <input type="text" name="mattributes[<?php echo esc_attr( $k ); ?>]" value="<?php echo esc_attr( $mAttribute ); ?>" required class="wf_mattributes">
46
  <?php } ?>
47
  </td>
48
  <td>
49
+ <input type="text" name="prefix[<?php echo esc_attr( $k ); ?>]" value="<?php echo esc_attr( stripslashes( $prefix[ $k ] ) ); ?>" autocomplete="off" class="wf_ps"/>
50
  </td>
51
  <td>
52
+ <select name="type[<?php echo esc_attr( $k ); ?>]" class="attr_type wfnoempty">
53
+ <option <?php echo ( 'attribute' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?>value="attribute"><?php _e( 'Attribute', 'woo-feed' ); ?></option>
54
+ <option <?php echo ( 'pattern' == $attr_type[ $k ] ) ? 'selected="selected" ' : ''; ?> value="pattern"><?php _e( 'Pattern', 'woo-feed' ); ?></option>
55
  </select>
56
  </td>
57
  <td>
58
+ <select <?php echo ( 'attribute' == $attr_type[ $k ] ) ? '' : 'style=" display: none;" '; ?>name="attributes[<?php echo esc_attr( $k ); ?>]" class="wf_attr wf_attributes">
59
  <?php
60
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
61
+ echo $wooFeedDropDown->product_attributes_dropdown( esc_attr( $wooAttributes[ $k ] ) );
62
+ ?>
63
  </select>
64
+ <?php if ( woo_feed_merchant_require_google_category( $feedRules['provider'], $mAttribute ) ) { ?>
65
+ <span <?php echo ( 'pattern' == $attr_type[ $k ] ) ? '' : 'style=" display: none;" '; ?>class="wf_default wf_attributes">
66
+ <select name="default[<?php echo esc_attr( $k ); ?>]" class="selectize" data-placeholder="<?php esc_attr_e( 'Select A Category', 'woo-feed' ); ?>">
67
  <?php
68
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
69
+ echo $wooFeedDropDown->googleTaxonomy( esc_attr( $default[ $k ] ) );
70
  ?>
71
  </select>
72
  </span>
73
  <span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">Learn More..</a></span>
74
  <?php } else { ?>
75
+ <input <?php echo ( 'pattern' == $attr_type[ $k ] ) ? '' : 'style=" display: none;"'; ?>autocomplete="off" class="wf_default wf_attributes " type="text" name="default[<?php echo esc_attr( $k ); ?>]" value="<?php echo esc_attr( $default[ $k ] ); ?>"/>
76
  <?php } ?>
77
  </td>
78
  <td>
79
+ <input type="text" name="suffix[<?php echo esc_attr( $k ); ?>]" value="<?php echo esc_attr( stripslashes( $suffix[ $k ] ) ); ?>" autocomplete="off" class="wf_ps"/>
80
  </td>
81
  <td>
82
+ <select name="output_type[<?php echo esc_attr( $k ); ?>][]" class="outputType wfnoempty" data-placeholder="<?php esc_attr_e( 'Select Output Type', 'woo-feed' ); ?>" multiple>
83
  <?php
84
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
85
+ echo $wooFeedDropDown->outputTypes( $outputType[ $k ] );
 
 
 
 
 
 
 
 
 
 
86
  ?>
87
  </select>
88
  </td>
89
  <td>
90
+ <input type="text" name="limit[<?php echo esc_attr( $k ); ?>]" value="<?php echo esc_attr( $limit[ $k ] ); ?>" autocomplete="off" class="wf_ps"/>
91
  </td>
92
  <td>
93
  <i class="delRow dashicons dashicons-trash"></i>
94
  </td>
95
  </tr>
96
  <?php
 
97
  }
98
  }
99
  ?>
101
  <tfoot>
102
  <tr>
103
  <td colspan="3">
104
+ <script type="text/template" id="feed_config_template">
105
+ <tr>
106
+ <td><i class="wf_sortedtable dashicons dashicons-menu"></i></td>
107
+ <td>
108
+ <?php if ( method_exists( $wooFeedDropDown, $feedRules['provider'] . 'AttributesDropdown' ) ) { ?>
109
+ <select name="mattributes[__idx__]" class="wf_mattributes">
110
+ <?php
111
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
112
+ echo $wooFeedDropDown->{$feedRules['provider'] . 'AttributesDropdown'}();
113
+ ?>
114
+ </select>
115
+ <?php } else { ?>
116
+ <input type="text" name="mattributes[__idx__]" autocomplete="off" value="" required class="wf_validate_attr wf_mattributes">
117
+ <?php } ?>
118
+ </td>
119
+ <td>
120
+ <input type="text" name="prefix[__idx__]" autocomplete="off" value="" class="wf_ps">
121
+ </td>
122
+ <td>
123
+ <select name="type[__idx__]" class="attr_type wfnoempty">
124
+ <option value="attribute"><?php _e( 'Attribute', 'woo-feed' ); ?></option>
125
+ <option value="pattern"><?php _e( 'Pattern', 'woo-feed' ); ?></option>
126
+ </select>
127
+ </td>
128
+ <td>
129
+ <select name="attributes[__idx__]" required="required" class="wf_validate_attr wf_attr wf_attributes">
130
+ <?php
131
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
132
+ echo $wooFeedDropDown->product_attributes_dropdown();
133
+ ?>
134
+ </select>
135
+ <input value="" type="text" name="default[]" autocomplete="off" class="wf_default wf_attributes" style="display:none;">
136
+ </td>
137
+ <td>
138
+ <input type="text" name="suffix[__idx__]" autocomplete="off" value="" class="wf_ps">
139
+ </td>
140
+ <td>
141
+ <select name="output_type[__idx__][]" class="outputType wfnoempty" data-placeholder="<?php esc_attr_e( 'Select Output Type', 'woo-feed' ); ?>" multiple>
142
+ <?php
143
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
144
+ echo $wooFeedDropDown->outputTypes();
145
+ ?>
146
+ </select>
147
+ </td>
148
+ <td>
149
+ <input type="text" value="" name="limit[__idx__]" class="wf_ps">
150
+ </td>
151
+ <td>
152
+ <i class="delRow dashicons dashicons-trash"></i>
153
+ </td>
154
+ </tr>
155
+ </script>
156
+ <button type="button" class="button-small button-primary" id="wf_newRow"><?php _e( 'Add New Attribute', 'woo-feed' ); ?></button>
157
  </td>
158
  <td colspan="6"></td>
159
  </tr>
admin/partials/woo-feed-edit-filter.php CHANGED
@@ -6,62 +6,62 @@ if ( ! defined( 'ABSPATH' ) ) {
6
  <table class="table tree widefat fixed woo-feed-filters">
7
  <tbody>
8
  <tr>
9
- <td colspan="2"><?php _e( 'Campaign URL Builder', 'woo-feed' ); ?></td>
10
- </tr>
11
- <tr>
12
- <td colspan="2">
13
- <table class="table widefat fixed" id="wf_campaign_url_builder">
14
- <tbody>
15
- <tr>
16
- <td>
17
- <label class="screen-reader-text" for="utm_source"><?php esc_html_e( 'Campaign Source', 'woo-feed' ); ?> <span class="required" aria-label="<?php esc_attr_e( 'Required', 'woo-feed' ); ?>">*</span></label>
18
- <input type="text" name="campaign_parameters[utm_source]" id="utm_source" class="regular-text" placeholder="*<?php esc_attr_e( 'Campaign Source', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_source'] ); ?>">
19
- <label for="utm_source">
20
- <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'The referrer: (e.g. google, newsletter)', 'woo-feed' ); ?></span>
21
- </label>
22
- </td>
23
- <td>
24
- <label class="screen-reader-text" for="utm_medium"><?php esc_html_e( 'Campaign Medium', 'woo-feed' ); ?> <span class="required" aria-label="<?php esc_attr_e( 'Required', 'woo-feed' ); ?>">*</span></label>
25
- <input type="text" name="campaign_parameters[utm_medium]" id="utm_medium" class="regular-text" placeholder="*<?php esc_attr_e( 'Campaign Medium', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_medium'] ); ?>">
26
- <label for="utm_medium">
27
- <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Marketing medium: (e.g. cpc, banner, email)', 'woo-feed' ); ?></span>
28
- </label>
29
- </td>
30
- <td>
31
- <label class="screen-reader-text" for="utm_campaign"><?php esc_html_e( 'Campaign Name', 'woo-feed' ); ?> <span class="required" aria-label="<?php esc_attr_e( 'Required', 'woo-feed' ); ?>">*</span></label>
32
- <input type="text" name="campaign_parameters[utm_campaign]" id="utm_campaign" class="regular-text" placeholder="*<?php esc_attr_e( 'Campaign Name', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_campaign'] ); ?>">
33
- <label for="utm_campaign">
34
- <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Product, promo code, or slogan (e.g. spring_sale)', 'woo-feed' ); ?></span>
35
- </label>
36
- </td>
37
- <td>
38
- <label class="screen-reader-text" for="utm_term"><?php esc_html_e( 'Campaign Term', 'woo-feed' ); ?></label>
39
- <input type="text" name="campaign_parameters[utm_term]" id="utm_term" class="regular-text" placeholder="<?php esc_attr_e( 'Campaign Term', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_term'] ); ?>">
40
- <label for="utm_term">
41
- <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Identify the keywords', 'woo-feed' ); ?></span>
42
- </label>
43
- </td>
44
- <td>
45
- <label class="screen-reader-text" for="utm_content"><?php esc_html_e( 'Campaign Content', 'woo-feed' ); ?></label>
46
- <input type="text" name="campaign_parameters[utm_content]" id="utm_content" class="regular-text" placeholder="<?php esc_attr_e( 'Campaign Content', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_content'] ); ?>">
47
- <label for="utm_content">
48
- <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Use to differentiate ads', 'woo-feed' ); ?></span>
49
- </label>
50
- </td>
51
- </tr>
52
- </tbody>
53
- <tfoot>
54
- <tr>
55
- <td colspan="5">
56
- <p>
57
- <span class="description"><?php esc_html_e( 'Fill out the required fields (marked with *) in the form above, if any required field is empty, then the parameters will not be applied.', 'woo-feed' ); ?></span>
58
- <a href="https://support.google.com/analytics/answer/1033863#parameters" target="_blank"><?php esc_html_e( 'Learn more about Campaign URL', 'woo-feed' ); ?></a>
59
- </p>
60
- </td>
61
- </tr>
62
- </tfoot>
63
- </table>
64
- </td>
65
- </tr>
66
  </tbody>
67
  </table>
6
  <table class="table tree widefat fixed woo-feed-filters">
7
  <tbody>
8
  <tr>
9
+ <td colspan="2"><?php _e( 'Campaign URL Builder', 'woo-feed' ); ?></td>
10
+ </tr>
11
+ <tr>
12
+ <td colspan="2">
13
+ <table class="table widefat fixed" id="wf_campaign_url_builder">
14
+ <tbody>
15
+ <tr>
16
+ <td>
17
+ <label class="screen-reader-text" for="utm_source"><?php esc_html_e( 'Campaign Source', 'woo-feed' ); ?> <span class="required" aria-label="<?php esc_attr_e( 'Required', 'woo-feed' ); ?>">*</span></label>
18
+ <input type="text" name="campaign_parameters[utm_source]" id="utm_source" class="regular-text" placeholder="*<?php esc_attr_e( 'Campaign Source', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_source'] ); ?>">
19
+ <label for="utm_source">
20
+ <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'The referrer: (e.g. google, newsletter)', 'woo-feed' ); ?></span>
21
+ </label>
22
+ </td>
23
+ <td>
24
+ <label class="screen-reader-text" for="utm_medium"><?php esc_html_e( 'Campaign Medium', 'woo-feed' ); ?> <span class="required" aria-label="<?php esc_attr_e( 'Required', 'woo-feed' ); ?>">*</span></label>
25
+ <input type="text" name="campaign_parameters[utm_medium]" id="utm_medium" class="regular-text" placeholder="*<?php esc_attr_e( 'Campaign Medium', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_medium'] ); ?>">
26
+ <label for="utm_medium">
27
+ <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Marketing medium: (e.g. cpc, banner, email)', 'woo-feed' ); ?></span>
28
+ </label>
29
+ </td>
30
+ <td>
31
+ <label class="screen-reader-text" for="utm_campaign"><?php esc_html_e( 'Campaign Name', 'woo-feed' ); ?> <span class="required" aria-label="<?php esc_attr_e( 'Required', 'woo-feed' ); ?>">*</span></label>
32
+ <input type="text" name="campaign_parameters[utm_campaign]" id="utm_campaign" class="regular-text" placeholder="*<?php esc_attr_e( 'Campaign Name', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_campaign'] ); ?>">
33
+ <label for="utm_campaign">
34
+ <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Product, promo code, or slogan (e.g. spring_sale)', 'woo-feed' ); ?></span>
35
+ </label>
36
+ </td>
37
+ <td>
38
+ <label class="screen-reader-text" for="utm_term"><?php esc_html_e( 'Campaign Term', 'woo-feed' ); ?></label>
39
+ <input type="text" name="campaign_parameters[utm_term]" id="utm_term" class="regular-text" placeholder="<?php esc_attr_e( 'Campaign Term', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_term'] ); ?>">
40
+ <label for="utm_term">
41
+ <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Identify the keywords', 'woo-feed' ); ?></span>
42
+ </label>
43
+ </td>
44
+ <td>
45
+ <label class="screen-reader-text" for="utm_content"><?php esc_html_e( 'Campaign Content', 'woo-feed' ); ?></label>
46
+ <input type="text" name="campaign_parameters[utm_content]" id="utm_content" class="regular-text" placeholder="<?php esc_attr_e( 'Campaign Content', 'woo-feed' ); ?>" value="<?php echo esc_attr( $feedRules['campaign_parameters']['utm_content'] ); ?>">
47
+ <label for="utm_content">
48
+ <span class="description" style="color:#8a8a8a;"><?php esc_html_e( 'Use to differentiate ads', 'woo-feed' ); ?></span>
49
+ </label>
50
+ </td>
51
+ </tr>
52
+ </tbody>
53
+ <tfoot>
54
+ <tr>
55
+ <td colspan="5">
56
+ <p>
57
+ <span class="description"><?php esc_html_e( 'Fill out the required fields (marked with *) in the form above, if any required field is empty, then the parameters will not be applied.', 'woo-feed' ); ?></span>
58
+ <a href="https://support.google.com/analytics/answer/1033863#parameters" target="_blank"><?php esc_html_e( 'Learn more about Campaign URL', 'woo-feed' ); ?></a>
59
+ </p>
60
+ </td>
61
+ </tr>
62
+ </tfoot>
63
+ </table>
64
+ </td>
65
+ </tr>
66
  </tbody>
67
  </table>
admin/partials/woo-feed-edit-tabs.php CHANGED
@@ -3,14 +3,14 @@
3
  * globals
4
  *
5
  * @global array $feedRules
6
- * @global Woo_Feed_Dropdown_Pro $wooFeedDropDown
7
- * @global Woo_Feed_Products $wooFeedProduct
 
8
  * @global string $feedName
9
  * @global int $feedId
10
- * @global string $provider
11
  * @global array $wp_meta_boxes
12
  */
13
- global $feedRules, $wooFeedDropDown, $wooFeedProduct, $provider;
14
  $editorTabs = array(
15
  'config' => array(
16
  'label' => __( 'Feed Config', 'woo-feed' ),
3
  * globals
4
  *
5
  * @global array $feedRules
6
+ * @global Woo_Feed_Dropdown $wooFeedDropDown
7
+ * @global Woo_Feed_Merchant $merchant
8
+ * @global string $provider
9
  * @global string $feedName
10
  * @global int $feedId
 
11
  * @global array $wp_meta_boxes
12
  */
13
+ global $feedRules, $wooFeedDropDown, $merchant, $provider;
14
  $editorTabs = array(
15
  'config' => array(
16
  'label' => __( 'Feed Config', 'woo-feed' ),
admin/partials/woo-feed-edit-template.php CHANGED
@@ -12,30 +12,25 @@
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  die();
14
  }
15
- /** @define "WOO_FEED_PRO_ADMIN_PATH" "./../" */
16
  /**
17
  * globals
18
  *
19
  * @global array $feedRules
20
  * @global Woo_Feed_Dropdown $wooFeedDropDown
21
- * @global Woo_Feed_Products $wooFeedProduct
22
  * @global string $feedName
23
  * @global int $feedId
24
  * @global string $provider
25
  * @global array $wp_meta_boxes
26
  */
27
- global $feedRules, $wooFeedDropDown, $wooFeedProduct, $feedName, $feedId, $provider, $wp_meta_boxes;
28
- $current_screen = get_current_screen();
29
- $page = $current_screen->id;
30
- $wooFeedDropDown = new Woo_Feed_Dropdown();
31
- $wooFeedProduct = new Woo_Feed_Products();
32
- $wooFeedProduct->load_attributes();
33
  // Condition is for those merchants which support another merchant feed requirements.
34
  $feedRules = woo_feed_parse_feed_rules( $feedRules );
35
- if ( 'adroll' == $feedRules['provider'] ) {
36
- $feedRules['provider'] = 'google';
37
- }
38
- register_and_do_woo_feed_meta_boxes( $current_screen, $feedRules );
39
  ?>
40
  <!--suppress SpellCheckingInspection, HtmlFormInputWithoutLabel, HtmlDeprecatedAttribute -->
41
  <div class="wrap wapk-admin" id="Feed">
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  die();
14
  }
15
+ /** @define "WOO_FEED_FREE_ADMIN_PATH" "./../" */
16
  /**
17
  * globals
18
  *
19
  * @global array $feedRules
20
  * @global Woo_Feed_Dropdown $wooFeedDropDown
21
+ * @global Woo_Feed_Merchant $merchant
22
  * @global string $feedName
23
  * @global int $feedId
24
  * @global string $provider
25
  * @global array $wp_meta_boxes
26
  */
27
+ global $feedRules, $wooFeedDropDown, $merchant, $feedName, $feedId, $provider, $wp_meta_boxes;
28
+ $wf_current_screen = get_current_screen();
29
+ $wf_page = $wf_current_screen->id;
30
+ $wooFeedDropDown = new Woo_Feed_Dropdown();
 
 
31
  // Condition is for those merchants which support another merchant feed requirements.
32
  $feedRules = woo_feed_parse_feed_rules( $feedRules );
33
+ woo_feed_register_and_do_woo_feed_meta_boxes( $wf_current_screen, $feedRules );
 
 
 
34
  ?>
35
  <!--suppress SpellCheckingInspection, HtmlFormInputWithoutLabel, HtmlDeprecatedAttribute -->
36
  <div class="wrap wapk-admin" id="Feed">
admin/partials/woo-feed-manage-list.php CHANGED
@@ -11,32 +11,54 @@
11
  */
12
  $myListTable = new Woo_Feed_Manage_list();
13
  $myListTable->prepare_items();
14
- $limit = get_option( 'woo_feed_per_batch', 200 );
15
  $fileName = '';
16
  $message = array();
17
  global $regenerating, $regeneratingName, $plugin_page;
18
  $regenerating = false;
19
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
20
- if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) ) && isset( $_GET['feed_regenerate'] ) && 1 == $_GET['feed_regenerate'] ) {
21
- // filename must be wf_config+XXX format
22
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
23
- $fileName = isset( $_GET['feed_name'] ) && ! empty( $_GET['feed_name']) ? sanitize_text_field( $_GET['feed_name'] ) : ''; // trigger feed regenerate...
24
- $fileName = str_replace( array( 'wf_feed_', 'wf_config' ), '', $fileName );
25
- $regeneratingName = $fileName;
26
- $fileName = 'wf_config' . $fileName; // to be safe...
27
- $regenerating = true;
28
- }
29
-
30
- // Checking woo version to run different version of feed processing
31
- $woo32 = 'no';
32
- if ( woo_feed_wc_version_check( 3.2 ) ) {
33
- $woo32 = 'yes';
34
  }
35
  ?>
36
  <div class="wrap wapk-admin">
37
  <div class="wapk-section">
38
  <h1 class="wp-heading-inline"><?php _e( 'Manage Feed', 'woo-feed' ); ?></h1>
39
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=webappick-new-feed' ) ); ?>" class="page-title-action"><?php _e( 'New Feed', 'woo-feed' ); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  <hr class="wp-header-end">
41
  <?php WPFFWMessage()->displayMessages(); ?>
42
  <div id="feed_progress_table" style="display: none;">
@@ -80,12 +102,12 @@ if ( woo_feed_wc_version_check( 3.2 ) ) {
80
  <?php wp_nonce_field( 'wf_schedule', 'wf_schedule_nonce' ); ?>
81
  <label for="wf_schedule"><b><?php _e( 'Interval', 'woo-feed' ); ?></b></label>
82
  <select name="wf_schedule" id="wf_schedule">
83
- <?php
84
- $interval = get_option( 'wf_schedule' );
85
- foreach ( woo_feed_get_schedule_interval_options() as $k => $v ) {
86
- printf( '<option value="%s" %s>%s</option>', esc_attr( $k ), selected( $interval, $k, false ), esc_html( $v ) );
87
- }
88
- ?>
89
  </select>
90
  <button type="submit" class="button button-primary"><?php esc_html_e( 'Update Interval', 'woo-feed' ); ?></button>
91
  </form>
@@ -101,273 +123,4 @@ if ( woo_feed_wc_version_check( 3.2 ) ) {
101
  <?php $myListTable->display(); ?>
102
  </form>
103
  </div>
104
- <!--suppress JSUnresolvedVariable, ES6ConvertVarToLetConst -->
105
- <script type="text/javascript">
106
- (function( $, window, document, opts ) {
107
- 'use strict';
108
- /**
109
- * All of the code for your admin-facing JavaScript source
110
- * should reside in this file.
111
- *
112
- * Note: It has been assumed you will write jQuery code here, so the
113
- * $ function reference has been prepared for usage within the scope
114
- * of this function.
115
- *
116
- * This enables you to define handlers, for when the DOM is ready:
117
- *
118
- * $(function() {
119
- * });
120
- *
121
- */
122
- /**
123
- * On Window Load
124
- * @TODO move this to js file so we can minify this.
125
- */
126
- $( window ).load(function() {
127
- // noinspection ES6ConvertVarToLetConst
128
- var feedProgress = {
129
- table: $( '#feed_progress_table' ),
130
- status: $( '.feed-progress-status' ),
131
- percentage: $( '.feed-progress-percentage' ),
132
- bar: $( '.feed-progress-bar-fill' ),
133
- barProgress: 10, // Variable responsible to hold progress bar width
134
- },
135
- isRegenerating = false,
136
- regenerateBtn = $( '.wpf_regenerate' ),
137
- fileName = "<?php echo isset( $fileName ) ? esc_attr( $fileName ) : ''; ?>", // wf_config+xxxx
138
- limit = <?php echo ( $limit ) ? absint( $limit ) : 200; ?>;
139
- var woo32 = "<?php echo esc_attr( $woo32 ); ?>";
140
- // feed delete alert
141
- $( '.single-feed-delete' ).click( function ( event ) {
142
- //@TODO move to js file with proper i18n entries.
143
- event.preventDefault();
144
- if ( confirm( '<?php _e( 'Are You Sure to Delete?', 'woo-feed' ); ?>' ) ) {
145
- window.location.href = jQuery(this).attr('val');
146
- }
147
- });
148
-
149
- // bulk delete alert
150
- $('#doaction, #doaction2').click(function () {
151
- //@TODO move to js file with proper i18n entries.
152
- return confirm('<?php _e( 'Are You Sure to Delete?', 'woo-feed' ); ?>');
153
- });
154
- // generate feed
155
- if( fileName !== '' ) {
156
- feedProgress.table.show();
157
- generate_feed();
158
- }
159
- //==================Manage Feed==============================
160
- // Feed Regenerate
161
- regenerateBtn.on( "click", function ( e ) {
162
- e.preventDefault();
163
- // noinspection ES6ConvertVarToLetConst
164
- var el = $( this );
165
- if( el.hasClass('disabled') || isRegenerating === true ) return;
166
- isRegenerating = true;
167
- regenerateBtn.addClass('disabled');
168
- fileName = el.attr( 'id' ).replace( "wf_feed_", "wf_config" );
169
- // noinspection JSUnresolvedVariable
170
- el.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );
171
- el.find('span').addClass('wpf_spin_reverse');
172
- if( fileName ) {
173
- feedProgress.table.show();
174
- generate_feed();
175
- }
176
- });
177
-
178
- /*#######################################################
179
- #######-------------------------------------------#######
180
- ####### Ajax Feed Making Functions Start #######
181
- #######-------------------------------------------#######
182
- #########################################################
183
- */
184
-
185
- function showFeedProgress( color ){
186
- feedProgress.bar.css( {
187
- width: feedProgress.barProgress + '%',
188
- background: color || "#3DC264",
189
- } );
190
- feedProgress.percentage.text( Math.round( feedProgress.barProgress ) + '%' );
191
- }
192
-
193
- function generate_feed() {
194
- console.log( "Counting Total Products" );
195
- feedProgress.status.text( "Fetching products." );
196
- showFeedProgress();
197
- $.ajax({
198
- url : opts.wpf_ajax_url,
199
- type : 'post',
200
- data : {
201
- _ajax_nonce: opts.nonce,
202
- action: "get_product_information",
203
- feed: fileName,
204
- limit: limit,
205
- },
206
- success : function( response ) {
207
- console.log( response );
208
- if(response.success) {
209
- if (woo32 === 'yes') {
210
- processFeed_v3(response.data.product);
211
- var total = response.data.total;
212
- console.log("Total " + total + " Products found.");
213
- feedProgress.status.text( "Processing Products..." );
214
- } else {
215
- feedProgress.status.text( "Delivering Feed Configuration." );
216
- processFeed( parseInt( response.data.product ) );
217
- //feedProgress.status.text("Total "+products+" products found.");
218
- feedProgress.status.text( "Processing Products..." );
219
- }
220
-
221
- }else{
222
- feedProgress.status.text(response.data.message);
223
- showFeedProgress( 'red' );
224
- }
225
- }
226
- });
227
- }
228
- function processFeed_v3( batches, n ) {
229
- var totalBatch = batches.length;
230
- var progressBatch = 90 / totalBatch;
231
- if ( typeof(n) === 'undefined' ) n = 0;
232
-
233
- var batch = batches[n];
234
- var productBatch = n + 1;
235
- feedProgress.status.text( "Processing Batch " + productBatch + " of " + totalBatch);
236
- showFeedProgress();
237
- console.log( "Processing Batch " + productBatch + " of " + totalBatch );
238
-
239
- $.ajax({
240
- url: opts.wpf_ajax_url,
241
- type: 'post',
242
- data: {
243
- _ajax_nonce: opts.nonce,
244
- action: "make_batch_feed",
245
- feed: fileName,
246
- products: batch,
247
- loop: n,
248
- },
249
- success: function (response) {
250
- console.log( "Batch "+ productBatch +" Completed.");
251
- console.log(response);
252
-
253
- if (productBatch < totalBatch) {
254
- n = n + 1;
255
- processFeed_v3(batches, n);
256
-
257
- feedProgress.barProgress = feedProgress.barProgress + progressBatch;
258
- showFeedProgress();
259
- }
260
-
261
- if (productBatch === totalBatch) {
262
- console.log( "Saving feed file.");
263
- feedProgress.status.text("Saving feed file.");
264
- save_feed_file();
265
- }
266
- },
267
- error: function (response) {
268
- console.log(response);
269
- }
270
- });
271
- }
272
- function processFeed( n, offset, batch ) {
273
- if ( typeof( offset ) === 'undefined' ) offset = 0;
274
- if ( typeof( batch ) === 'undefined' ) batch = 0;
275
- var batches = Math.ceil( n/limit ), progressBatch = 90 / batches;
276
- console.log( ( limit*batch ) + " out of " + n + " products processed." );
277
- feedProgress.status.text( "Processing products..." + Math.round( feedProgress.barProgress ) + "%" );
278
- if( batch < batches ) {
279
- console.log( "Processing Batch " + batch + " of " + batches );
280
- $.ajax({
281
- url : opts.wpf_ajax_url,
282
- type : 'post',
283
- data : {
284
- _ajax_nonce: opts.nonce,
285
- action: "make_batch_feed",
286
- limit: limit,
287
- offset: offset,
288
- feed: fileName
289
- },
290
- success : function(response) {
291
- console.log( response );
292
- if( response.success ) {
293
- if( response.data.products === "yes" ) {
294
- offset = offset+limit;
295
- batch++;
296
- setTimeout( function(){
297
- processFeed( n, offset, batch );
298
- }, 2000 );
299
- feedProgress.barProgress = feedProgress.barProgress + progressBatch;
300
- showFeedProgress();
301
- } else if( n > offset ) {
302
- offset = offset+limit;
303
- batch++;
304
- processFeed( n, offset, batch );
305
- feedProgress.barProgress = feedProgress.barProgress + progressBatch;
306
- showFeedProgress();
307
- }else{
308
- feedProgress.status.text( "Saving feed file." );
309
- save_feed_file();
310
- }
311
- }
312
- },
313
- error:function (response) {
314
- if( response.status !== "200" ) {
315
- offset = (offset-limit)+10;
316
- batch++;
317
- processFeed( n, offset, batch );
318
- feedProgress.barProgress = feedProgress.barProgress + progressBatch;
319
- showFeedProgress();
320
- }
321
- console.log(response);
322
- }
323
- });
324
- }else{
325
- feedProgress.status.text("Saving feed file.");
326
- save_feed_file();
327
- }
328
- }
329
-
330
- /**
331
- * Save feed file into WordPress upload directory
332
- * after successfully processing the feed
333
- */
334
- function save_feed_file() {
335
- $.ajax({
336
- url : opts.wpf_ajax_url,
337
- type : 'post',
338
- data : {
339
- _ajax_nonce: opts.nonce,
340
- action: "save_feed_file",
341
- feed: fileName
342
- },
343
- success : function( response ) {
344
- console.log( response );
345
- if( response.success ) {
346
- feedProgress.barProgress = 100;
347
- showFeedProgress();
348
- feedProgress.status.text( response.data.message );
349
- regenerateBtn.val( 'Regenerate' );
350
- regenerateBtn.disabled( false );
351
- window.location.href = "<?php echo esc_url( admin_url( 'admin.php?page=webappick-manage-feeds' ) ); ?>&link=" + response.data.url + "&cat=" + response.data.cat;
352
- }else{
353
- showFeedProgress( "red" );
354
- feedProgress.status.text( response.data.message );
355
- }
356
- },
357
- error:function ( response ) {
358
- console.log( response );
359
- feedProgress.status.text( "Failed to save feed file." );
360
- }
361
- });
362
- }
363
-
364
- /*########################################################
365
- #######-------------------------------------------#######
366
- ####### Ajax Feed Making Functions End #######
367
- #######-------------------------------------------#######
368
- #########################################################
369
- */
370
- });
371
- })( jQuery, window, document, wpf_ajax_obj );
372
- </script>
373
  </div>
11
  */
12
  $myListTable = new Woo_Feed_Manage_list();
13
  $myListTable->prepare_items();
14
+ $limit = woo_feed_get_options( 'per_batch' );
15
  $fileName = '';
16
  $message = array();
17
  global $regenerating, $regeneratingName, $plugin_page;
18
  $regenerating = false;
19
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
20
+ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset( $_GET['feed_imported'] ) ) && isset( $_GET['feed_regenerate'] ) && 1 == $_GET['feed_regenerate'] ) {
21
+ // filename must be wf_config+XXX format for js to work.
22
  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
23
+ $fileName = isset( $_GET['feed_name'] ) && ! empty( $_GET['feed_name'] ) ? sanitize_text_field( $_GET['feed_name'] ) : ''; // trigger feed regenerate...
24
+ if ( ! empty( $fileName ) ) {
25
+ $fileName = woo_feed_extract_feed_option_name( $fileName );
26
+ $regeneratingName = $fileName;
27
+ $fileName = 'wf_config' . $fileName; // to be safe...
28
+ $regenerating = true;
29
+ }
 
 
 
 
30
  }
31
  ?>
32
  <div class="wrap wapk-admin">
33
  <div class="wapk-section">
34
  <h1 class="wp-heading-inline"><?php _e( 'Manage Feed', 'woo-feed' ); ?></h1>
35
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=webappick-new-feed' ) ); ?>" class="page-title-action"><?php _e( 'New Feed', 'woo-feed' ); ?></a>
36
+ <a href="#TB_inline?&width=300&height=152&inlineId=wpf_importer" name="Import Feed Config" class="thickbox page-title-action"><?php _e( 'Import Feed', 'woo-feed' ); ?></a>
37
+ <div id="wpf_importer" style="display: none;">
38
+ <form action="<?php echo esc_url( admin_url( 'admin-post.php?action=wpf_import' ) ); ?>" method="post" enctype="multipart/form-data">
39
+ <?php wp_nonce_field( 'wpf_import' ); ?>
40
+ <!-- <input type="file" name="wpf_import_file" id="wpf_import_file" accept=".wpf" onchange="this.form.submit()">-->
41
+ <table class="fixed widefat">
42
+ <tr>
43
+ <td colspan="2">
44
+ <label for="wpf_import_file" class="screen-reader-text"><?php esc_html_e( 'Import Feed File', 'woo-feed' ); ?></label>
45
+ <input type="file" name="wpf_import_file" id="wpf_import_file" accept=".wpf" required>
46
+ </td>
47
+ </tr>
48
+ <tr>
49
+ <td colspan="2">
50
+ <label for="wpf_import_feed_name" class="screen-reader-text"><?php esc_html_e( 'Feed File Name', 'woo-feed' ); ?></label>
51
+ <input type="text" class="regular-text" name="wpf_import_feed_name" id="wpf_import_feed_name" placeholder="<?php esc_attr_e( 'Feed File Name', 'woo-feed' ); ?>" required>
52
+ </td>
53
+ </tr>
54
+ <tr class="text-center">
55
+ <td colspan="2">
56
+ <input type="submit" class="button button-primary" id="wpf_import_submit" value="<?php esc_attr_e( 'Import Now', 'woo-feed' ); ?>">
57
+ </td>
58
+ </tr>
59
+ </table>
60
+ </form>
61
+ </div>
62
  <hr class="wp-header-end">
63
  <?php WPFFWMessage()->displayMessages(); ?>
64
  <div id="feed_progress_table" style="display: none;">
102
  <?php wp_nonce_field( 'wf_schedule', 'wf_schedule_nonce' ); ?>
103
  <label for="wf_schedule"><b><?php _e( 'Interval', 'woo-feed' ); ?></b></label>
104
  <select name="wf_schedule" id="wf_schedule">
105
+ <?php
106
+ $interval = get_option( 'wf_schedule' );
107
+ foreach ( woo_feed_get_schedule_interval_options() as $k => $v ) {
108
+ printf( '<option value="%s" %s>%s</option>', esc_attr( $k ), selected( $interval, $k, false ), esc_html( $v ) );
109
+ }
110
+ ?>
111
  </select>
112
  <button type="submit" class="button button-primary"><?php esc_html_e( 'Update Interval', 'woo-feed' ); ?></button>
113
  </form>
123
  <?php $myListTable->display(); ?>
124
  </form>
125
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  </div>
admin/partials/woo-feed-settings.php ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Settings Page
4
+ *
5
+ * @link https://webappick.com/
6
+ * @since 1.0.0
7
+ * @version 1.0.1
8
+ *
9
+ * @package Woo_Feed
10
+ * @subpackage Woo_Feed/admin/partial
11
+ * @author Ohidul Islam <wahid@webappick.com>
12
+ */
13
+ $settings = woo_feed_get_options( 'all' );
14
+ ?>
15
+ <div class="wrap wapk-admin">
16
+ <div class="wapk-section">
17
+ <h1 class="wp-heading-inline"><?php _e( 'Settings', 'woo-feed' ); ?></h1>
18
+ <hr class="wp-header-end">
19
+ <?php WPFFWMessage()->displayMessages(); ?>
20
+ <form action="" method="post" autocomplete="off">
21
+ <?php wp_nonce_field( 'woo-feed-config' ); ?>
22
+ <table class="widefat fixed" role="presentation">
23
+ <thead>
24
+ <tr>
25
+ <th colspan="2"><b><?php _e( 'Common Settings', 'woo-feed' ); ?></b></th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <?php do_action( 'woo_feed_before_settings_page_fields' ); ?>
30
+ <tr>
31
+ <th scope="row"><label for="batch_limit"><?php _e( 'Product per batch', 'woo-feed' ); ?></label></th>
32
+ <td>
33
+ <input class="regular-text" type="number" min="1" name="batch_limit" id="batch_limit" value="<?php echo esc_attr( $settings['per_batch'] ); ?>">
34
+ <p class="description"><?php _e( 'Don\'t change the value if you are not sure about this. Plugin may fail to make feed.', 'woo-feed' ); ?></p>
35
+ </td>
36
+ </tr>
37
+ <tr>
38
+ <th scope="row"><label for="product_query_type"><?php _e( 'Product Query Type', 'woo-feed' ); ?></label></th>
39
+ <td>
40
+ <select name="product_query_type" id="product_query_type">
41
+ <?php foreach ( woo_feed_get_query_type_options() as $k => $v ) { ?>
42
+ <option value="<?php echo esc_attr( $k ); ?>" <?php selected( $settings['product_query_type'], $k ); ?> ><?php echo esc_html( $v ); ?></option>
43
+ <?php } ?>
44
+ </select>
45
+ <p class="description"><?php _e( 'Don\'t change the value if you are not sure about this. Plugin may fail to make feed.', 'woo-feed' ); ?></p>
46
+ </td>
47
+ </tr>
48
+ <tr>
49
+ <th scope="row"><label for="enable_error_debugging"><?php _e( 'Debug Mode', 'woo-feed' ); ?></label>
50
+ </th>
51
+ <td>
52
+ <select name="enable_error_debugging" id="enable_error_debugging">
53
+ <option value="off"<?php selected( $settings['enable_error_debugging'], 'off' ); ?>><?php esc_html_e( 'Off', 'woo-feed' ); ?></option>
54
+ <option value="on"<?php selected( $settings['enable_error_debugging'], 'on' ); ?>><?php esc_html_e( 'On', 'woo-feed' ); ?></option>
55
+ </select>
56
+ <label for="clear_all_logs">
57
+ <input type="checkbox" name="clear_all_logs" id="clear_all_logs" value="on"><?php _e( 'Clear All Log Data', 'woo-feed' ); ?>
58
+ </label>
59
+ <p class="description" style="font-size: smaller;color: #ea3d3d;font-weight: bold;"><?php _e( 'Enabling Logging will decrease performance of feed generation.', 'woo-feed' ); ?></p>
60
+ </td>
61
+ </tr>
62
+ <tr>
63
+ <td><label for="opt_in"><?php _e( 'Send Debug Info', 'woo-feed' ); ?></label></td>
64
+ <td>
65
+ <label for="opt_in">
66
+ <input type="checkbox" id="opt_in" name="opt_in" value="on" <?php checked( WooFeedWebAppickAPI::getInstance()->is_tracking_allowed(), true ); ?>> <?php _e( 'Allow WooFeed To Collect Debug Info.', 'woo-feed' ); ?>
67
+ </label>
68
+ <p class="description"><?php esc_html_e( 'To opt out, leave this box unchecked. Your Feed Data remains un-tracked, and no data will be collected. No sensitive data is tracked.', 'woo-feed' ); ?><br><a href="#" data-toggle_slide=".tracker_collection_list"><?php esc_html_e( 'See What We Collect.', 'woo-feed' ); ?></a></p>
69
+ <ul class="tracker_collection_list" style="display: none;">
70
+ <li>
71
+ <?php
72
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
73
+ echo implode( '</li><li>', WooFeedWebAppickAPI::getInstance()->get_data_collection_description() );
74
+ ?>
75
+ </li>
76
+ </ul>
77
+ </td>
78
+ </tr>
79
+ <tr>
80
+ <td><label for="cache_ttl"><?php esc_html_e( 'WooFeed Cache TTL', 'woo-feed' ); ?></label></td>
81
+ <td>
82
+ <select name="cache_ttl" id="cache_ttl">
83
+ <?php foreach ( woo_feed_get_cache_ttl_options() as $k => $v ) { ?>
84
+ <option value="<?php echo esc_attr( $k ); ?>"<?php selected( $settings['cache_ttl'], $k ); ?>><?php echo esc_html( $v ); ?></option>
85
+ <?php } ?>
86
+ </select>
87
+ <label for="purge_feed_cache">
88
+ <input type="checkbox" name="purge_feed_cache" id="purge_feed_cache" value="1"> <?php esc_html_e( 'Purge Cache Now', 'woo-feed' ); ?>
89
+ </label>
90
+ <p class="description"><?php esc_html_e( 'When to expire the Cache.', 'woo-feed' ); ?></p>
91
+ </td>
92
+ </tr>
93
+ <?php do_action( 'woo_feed_after_settings_page_fields' ); ?>
94
+ <tr>
95
+ <td colspan="2">
96
+ <p class="submit" style="text-align: center">
97
+ <input type="submit" class="button button-primary" name="wa_woo_feed_config" value="<?php esc_attr_e( 'Save Changes', 'woo-feed' ); ?>">
98
+ </p>
99
+ </td>
100
+ </tr>
101
+ </tbody>
102
+ </table>
103
+ </form>
104
+ </div>
105
+ </div>
includes/class-woo-feed-docs.php CHANGED
@@ -53,15 +53,17 @@ if ( ! class_exists( 'WooFeedDocs' ) ) {
53
  <?php if ( ! empty( $faqs ) ) { ?>
54
  <?php
55
  foreach ( $faqs as $faq ) {
56
- $boxId = ( isset( $faq->id ) ) ? $faq->id : sanitize_title( $faq->title );
57
- if ( ! isset( $faq->icon ) ) $faq->icon = 'dashicons-admin-generic';
58
- ?>
59
  <div id="<?php echo esc_attr( $boxId ); ?>" class="postbox <?php echo esc_attr( postbox_classes( $boxId, $current_screen->id ) ); ?>">
60
  <button type="button" class="handlediv" aria-expanded="true">
61
- <span class="screen-reader-text"><?php
 
62
  /* translators: %s: FAQ Title */
63
  printf( esc_html__( 'Toggle panel: %s', 'woo-feed' ), esc_html( $faq->title ) )
64
- ?></span>
 
65
  <span class="toggle-indicator" aria-hidden="true"></span>
66
  </button>
67
  <h2 class="hndle">
@@ -84,10 +86,11 @@ if ( ! class_exists( 'WooFeedDocs' ) ) {
84
  </div>
85
  </div>
86
  </div>
87
- <?php } ?>
88
  <?php } else { ?>
89
  <div class="notice notice-warning">
90
- <p><?php
 
91
  printf(
92
  /* translators: %s: Reload Button */
93
  esc_html__( 'There\'s some problem loading the docs. Please Click %s To Fetch Again.', 'woo-feed' ),
@@ -97,7 +100,8 @@ if ( ! class_exists( 'WooFeedDocs' ) ) {
97
  esc_html__( 'Here', 'woo-feed' )
98
  )
99
  );
100
- ?></p>
 
101
  </div>
102
  <?php } ?>
103
  </div>
@@ -112,7 +116,7 @@ if ( ! class_exists( 'WooFeedDocs' ) ) {
112
  <p><?php _e( 'Have we not answered your question?<br>Don\'t worry, you can contact us for more information...', 'woo-feed' ); ?></p>
113
  </div>
114
  <div class="wapk-cta-action">
115
- <a href="https://wordpress.org/support/plugin/webappick-product-feed-for-woocommerce/#new-topic-0" class="wapk-button wapk-button-primary wapk-button-hero" rel="noopener" target="_blank"><?php _e( 'Get Support', 'woo-feed' ); ?></a>
116
  </div>
117
  </div>
118
  </div>
53
  <?php if ( ! empty( $faqs ) ) { ?>
54
  <?php
55
  foreach ( $faqs as $faq ) {
56
+ $boxId = ( isset( $faq->id ) ) ? $faq->id : sanitize_title( $faq->title );
57
+ if ( ! isset( $faq->icon ) ) $faq->icon = 'dashicons-admin-generic';
58
+ ?>
59
  <div id="<?php echo esc_attr( $boxId ); ?>" class="postbox <?php echo esc_attr( postbox_classes( $boxId, $current_screen->id ) ); ?>">
60
  <button type="button" class="handlediv" aria-expanded="true">
61
+ <span class="screen-reader-text">
62
+ <?php
63
  /* translators: %s: FAQ Title */
64
  printf( esc_html__( 'Toggle panel: %s', 'woo-feed' ), esc_html( $faq->title ) )
65
+ ?>
66
+ </span>
67
  <span class="toggle-indicator" aria-hidden="true"></span>
68
  </button>
69
  <h2 class="hndle">
86
  </div>
87
  </div>
88
  </div>
89
+ <?php } ?>
90
  <?php } else { ?>
91
  <div class="notice notice-warning">
92
+ <p>
93
+ <?php
94
  printf(
95
  /* translators: %s: Reload Button */
96
  esc_html__( 'There\'s some problem loading the docs. Please Click %s To Fetch Again.', 'woo-feed' ),
100
  esc_html__( 'Here', 'woo-feed' )
101
  )
102
  );
103
+ ?>
104
+ </p>
105
  </div>
106
  <?php } ?>
107
  </div>
116
  <p><?php _e( 'Have we not answered your question?<br>Don\'t worry, you can contact us for more information...', 'woo-feed' ); ?></p>
117
  </div>
118
  <div class="wapk-cta-action">
119
+ <a href="https://webappick.com/my-account/contact-support/" class="wapk-button wapk-button-primary wapk-button-hero" rel="noopener" target="_blank"><?php _e( 'Get Support', 'woo-feed' ); ?></a>
120
  </div>
121
  </div>
122
  </div>
includes/class-woo-feed-installer.php CHANGED
@@ -41,9 +41,9 @@ class Woo_Feed_installer {
41
  * @return array
42
  */
43
  public static function cron_schedules( $schedules ) {
44
- $interval = get_option('wf_schedule');
45
  $schedules['woo_feed_corn'] = array(
46
- 'display' => __( 'Woo Feed Update Interval', 'woo-feed' ),
47
  'interval' => $interval,
48
  );
49
  return $schedules;
@@ -69,14 +69,20 @@ class Woo_Feed_installer {
69
  return;
70
  }
71
 
 
 
 
 
72
  // If we made it till here nothing is running yet, lets set the transient now.
73
- set_transient( 'woo_feed_installing', 'yes', MINUTE_IN_SECONDS * 10 );
74
- woo_feed_maybe_define_constant( 'WOO_FEED_INSTALLING', true );
75
 
76
  self::pro_version_warning();
 
77
  self::create_cron_jobs();
78
  self::create_files();
79
  self::update_woo_feed_version();
 
 
80
  delete_transient( 'woo_feed_installing' );
81
  }
82
 
@@ -88,6 +94,25 @@ class Woo_Feed_installer {
88
  }
89
  }
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  /**
92
  * Create cron jobs (clear them first).
93
  */
@@ -151,4 +176,4 @@ class Woo_Feed_installer {
151
  }
152
  }
153
  Woo_Feed_installer::init();
154
- // End of file class-woo-feed-installer.php
41
  * @return array
42
  */
43
  public static function cron_schedules( $schedules ) {
44
+ $interval = get_option( 'wf_schedule' );
45
  $schedules['woo_feed_corn'] = array(
46
+ 'display' => esc_html__( 'Woo Feed Update Interval', 'woo-feed' ),
47
  'interval' => $interval,
48
  );
49
  return $schedules;
69
  return;
70
  }
71
 
72
+ if ( ! defined( 'WOO_FEED_INSTALLING' ) ) {
73
+ define( 'WOO_FEED_INSTALLING', true );
74
+ }
75
+
76
  // If we made it till here nothing is running yet, lets set the transient now.
77
+ set_transient( 'woo_feed_installing', 'yes', 10 * MINUTE_IN_SECONDS );
 
78
 
79
  self::pro_version_warning();
80
+ self::migrate_db();
81
  self::create_cron_jobs();
82
  self::create_files();
83
  self::update_woo_feed_version();
84
+
85
+ // installation finished.
86
  delete_transient( 'woo_feed_installing' );
87
  }
88
 
94
  }
95
  }
96
 
97
+ /**
98
+ * DB Updates
99
+ */
100
+ private static function migrate_db() {
101
+ if ( ! defined( 'WOO_FEED_UPDATING' ) ) {
102
+ return;
103
+ }
104
+ // settings api update.
105
+ if ( version_compare( '3.3.10', WOO_FEED_FREE_VERSION, '<' ) ) {
106
+ $keys = [ 'per_batch', 'product_query_type', 'enable_error_debugging', 'woo_feed_cache_ttl' ];
107
+ $data = [];
108
+ foreach ( $keys as $key ) {
109
+ $data[ $key ] = get_option( 'woo_feed_' . $key );
110
+ delete_option( 'woo_feed_' . $key );
111
+ }
112
+ woo_feed_save_options( $data );
113
+ }
114
+ }
115
+
116
  /**
117
  * Create cron jobs (clear them first).
118
  */
176
  }
177
  }
178
  Woo_Feed_installer::init();
179
+ // End of file class-woo-feed-installer.php
includes/classes/class-woo-feed-admin-message.php CHANGED
@@ -10,26 +10,26 @@
10
  * @author Ohidul Islam <wahid@webappick.com>
11
  */
12
  final class Woo_Feed_Message {
13
-
14
  /**
15
  * @var Woo_Feed_Message
16
  */
17
  protected static $instance;
18
-
19
  /**
20
  * Holds Messages & Notices
21
  *
22
  * @var array
23
  */
24
  private $messages = array();
25
-
26
  /**
27
  * Is Output Sent Flag
28
  *
29
  * @var bool
30
  */
31
  private $is_displayed = false;
32
-
33
  /**
34
  * Get Woo_Feed_Message Singleton Instance
35
  *
@@ -41,7 +41,7 @@ final class Woo_Feed_Message {
41
  }
42
  return self::$instance;
43
  }
44
-
45
  /**
46
  * Woo_Feed_Message constructor.
47
  * Initialize default messages and notices
@@ -54,7 +54,7 @@ final class Woo_Feed_Message {
54
  $this->set_schedule_update_messages();
55
  $this->set_settings_messages();
56
  }
57
-
58
  /**
59
  * Display Admin Messages & Notices
60
  *
@@ -65,7 +65,7 @@ final class Woo_Feed_Message {
65
  $this->display_support_links();
66
  $this->display_admin_messages();
67
  }
68
-
69
  /**
70
  * Set Message/Notice to be displayed in admin area within WooFeed Pages.
71
  *
@@ -85,7 +85,7 @@ final class Woo_Feed_Message {
85
  );
86
  }
87
  }
88
-
89
  /**
90
  * Display The tob bar (support and documentation links)
91
  *
@@ -97,49 +97,34 @@ final class Woo_Feed_Message {
97
  <table class="wf-info-table widefat fixed">
98
  <tbody>
99
  <tr>
 
 
 
 
 
 
 
100
  <th>
101
  <strong>
102
- <a class="get-woo-feed-pro" href="http://bit.ly/2KIwvTt" target="_blank" aria-label="<?php esc_attr_e( 'Get Woo Feed Pro', 'woo-feed' ); ?>">
103
- <img src="<?php echo esc_url( WOO_FEED_PLUGIN_URL ); ?>admin/images/get-woo-feed-pro.svg" alt="<?php esc_attr_e( 'Get Woo Feed Pro', 'woo-feed' ); ?>">
104
- </a>
105
- </strong>
106
- </th>
107
- <th>
108
- <strong>
109
- <a class="documentation button button-secondary button-hero" href="http://webappick.helpscoutdocs.com/" target="_blank" ><?php _e( 'Documentation', 'woo-feed' ); ?></a>
110
  </strong>
111
  </th>
112
  <th>
113
  <strong>
114
- <a class="tutorial button button-secondary button-hero" href="http://bit.ly/2u6giNz" target="_blank"><?php _e( 'Video Tutorials', 'woo-feed' ); ?></a>
115
  </strong>
116
  </th>
117
  <th>
118
  <strong>
119
- <a class="support button button-secondary button-hero" href="https://wordpress.org/support/plugin/webappick-product-feed-for-woocommerce/#new-topic-0" target="_blank"><?php _e( 'Get Free Support', 'woo-feed' ); ?></a>
120
  </strong>
121
  </th>
122
  </tr>
123
  </tbody>
124
- </table>
125
- <table class="wf-rate-table widefat fixed">
126
- <tbody>
127
- <tr>
128
- <th><?php
129
- printf(
130
- /* translators: 1: This plugin name, 2: Rating page link with star, 3: Rating page link */
131
- esc_html__( 'If you like %1$s, Please leave us a %2$s rating %3$s', 'woo-feed' ),
132
- '<strong>'.esc_html__( 'WooCommerce Product Feed', 'woo-feed' ).'</strong>',
133
- '<a class="review-star" href="https://wordpress.org/support/plugin/webappick-product-feed-for-woocommerce/reviews/?rate=5#new-post" target="_blank" aria-label="5 Star"><span aria-hidden="true"></span></a>',
134
- '<a href="https://wordpress.org/support/plugin/webappick-product-feed-for-woocommerce/reviews/?rate=5#new-post" target="_blank">' . esc_html__( 'here.', 'woo-feed' ) . '</a>'
135
- );
136
- ?></th>
137
- </tr>
138
- </tbody>
139
  </table><br>
140
  <?php
141
  }
142
-
143
  /**
144
  * Prints Admin Messages & Notices
145
  *
@@ -161,7 +146,7 @@ final class Woo_Feed_Message {
161
  }
162
  }
163
  }
164
-
165
  /**
166
  * Set Messages From DB
167
  *
@@ -170,28 +155,47 @@ final class Woo_Feed_Message {
170
  private function set_saved_messages() {
171
  // phpcs:disable WordPress.Security.NonceVerification.Recommended
172
  if ( isset( $_GET['wpf_message'] ) && ! empty( $_GET['wpf_message'] ) ) {
 
173
  $type = sanitize_text_field( $_GET['wpf_message'] );
174
- $message = esc_html( get_option( 'wpf_message' ) );
175
  delete_option( 'wpf_message' ); // empty message cache.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  $dir = get_option( 'WPF_DIRECTORY_PERMISSION_CHECK', false );
177
  if ( $dir ) {
178
- $message .= ' ' . esc_html( $dir );
179
- delete_option( 'WPF_DIRECTORY_PERMISSION_CHECK' ); // empty message cache.
180
- }
181
- $message = trim( $message );
182
- if ( ! empty( $message ) ) {
183
  $this->setMessage(
184
  array(
185
- 'notice' => $message,
186
- 'type' => $type,
187
  'dismissible' => true,
188
  )
189
  );
 
190
  }
191
  }
192
  // phpcs:enable
193
  }
194
-
195
  /**
196
  * Set Feed Edit/Update Messages
197
  *
@@ -199,9 +203,9 @@ final class Woo_Feed_Message {
199
  */
200
  private function set_feed_edit_update_messages() {
201
  global $plugin_page;
202
- // phpcs:disable WordPress.Security.NonceVerification.Recommended
203
  if ( 'webappick-manage-feeds' == $plugin_page ) {
204
- if ( ( isset( $_GET['feed_updated'] ) || isset( $_GET['feed_created'] ) ) && isset( $_GET['feed_name'] ) ) {
205
  if ( isset( $_GET['feed_created'] ) ) {
206
  $this->setMessage(
207
  array(
@@ -220,6 +224,15 @@ final class Woo_Feed_Message {
220
  )
221
  );
222
  }
 
 
 
 
 
 
 
 
 
223
  }
224
  // get updated link.
225
  if ( isset( $_GET['link'] ) && ! empty( $_GET['link'] ) ) {
@@ -239,7 +252,7 @@ final class Woo_Feed_Message {
239
  $link = 'https://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category';
240
  /** @noinspection HtmlUnknownTarget */
241
  $link = sprintf( '<a href="%s" target="_blank">%s</a>', esc_url( $link ), esc_html__( 'Learn more...', 'woo-feed' ) );
242
- $notice .= sprintf( '<ul><li>%s %s</li></ul>', esc_html__( 'Google Product category is not selected. Your AdWords CPC rate will be high. Add proper Google Product Category to each product & reduce CPC rate.', 'woo-feed' ), $link );
243
  }
244
  $this->setMessage(
245
  array(
@@ -251,9 +264,9 @@ final class Woo_Feed_Message {
251
  }
252
  }
253
  }
254
- // phpcs:enable
255
  }
256
-
257
  /**
258
  * Set Schedule Update Response Message
259
  *
@@ -261,7 +274,7 @@ final class Woo_Feed_Message {
261
  */
262
  private function set_schedule_update_messages() {
263
  global $plugin_page;
264
- // phpcs:disable WordPress.Security.NonceVerification.Recommended
265
  if ( 'webappick-manage-feeds' == $plugin_page ) {
266
  if ( isset( $_GET['schedule_u
10
  * @author Ohidul Islam <wahid@webappick.com>
11
  */
12
  final class Woo_Feed_Message {
13
+
14
  /**
15
  * @var Woo_Feed_Message
16
  */
17
  protected static $instance;
18
+
19
  /**
20
  * Holds Messages & Notices
21
  *
22
  * @var array
23
  */
24
  private $messages = array();
25
+
26
  /**
27
  * Is Output Sent Flag
28
  *
29
  * @var bool
30
  */
31
  private $is_displayed = false;
32
+
33
  /**
34
  * Get Woo_Feed_Message Singleton Instance
35
  *
41
  }
42
  return self::$instance;
43
  }
44
+
45
  /**
46
  * Woo_Feed_Message constructor.
47
  * Initialize default messages and notices
54
  $this->set_schedule_update_messages();
55
  $this->set_settings_messages();
56
  }
57
+
58
  /**
59
  * Display Admin Messages & Notices
60
  *
65
  $this->display_support_links();
66
  $this->display_admin_messages();
67
  }
68
+
69
  /**
70
  * Set Message/Notice to be displayed in admin area within WooFeed Pages.
71
  *
85
  );
86
  }
87
  }
88
+
89
  /**
90
  * Display The tob bar (support and documentation links)
91
  *
97
  <table class="wf-info-table widefat fixed">
98
  <tbody>
99
  <tr>
100
+ <th>
101
+ <strong>
102
+ <a class="get-woo-feed-pro" href="http://bit.ly/2KIwvTt" target="_blank" aria-label="<?php esc_attr_e( 'Get Woo Feed Pro', 'woo-feed' ); ?>">
103
+ <img src="<?php echo esc_url( WOO_FEED_PLUGIN_URL ); ?>admin/images/get-woo-feed-pro.svg" alt="<?php esc_attr_e( 'Get Woo Feed Pro', 'woo-feed' ); ?>">
104
+ </a>
105
+ </strong>
106
+ </th>
107
  <th>
108
  <strong>
109
+ <a style="color:#0073aa;" href="https://webappick.helpscoutdocs.com/collection/1-woocommerce-product-feed" target="_blank" ><?php _e( 'Documentation', 'woo-feed' ); ?></a>
 
 
 
 
 
 
 
110
  </strong>
111
  </th>
112
  <th>
113
  <strong>
114
+ <a style="color:#ee264a;" href="http://bit.ly/2u6giNz" target="_blank"><?php _e( 'Video Tutorials', 'woo-feed' ); ?></a>
115
  </strong>
116
  </th>
117
  <th>
118
  <strong>
119
+ <a style="color:#0DD41E;" href="https://webappick.com/support/" target="_blank"><?php _e( 'Get Support', 'woo-feed' ); ?></a>
120
  </strong>
121
  </th>
122
  </tr>
123
  </tbody>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  </table><br>
125
  <?php
126
  }
127
+
128
  /**
129
  * Prints Admin Messages & Notices
130
  *
146
  }
147
  }
148
  }
149
+
150
  /**
151
  * Set Messages From DB
152
  *
155
  private function set_saved_messages() {
156
  // phpcs:disable WordPress.Security.NonceVerification.Recommended
157
  if ( isset( $_GET['wpf_message'] ) && ! empty( $_GET['wpf_message'] ) ) {
158
+ $message = get_option( 'wpf_message' );
159
  $type = sanitize_text_field( $_GET['wpf_message'] );
 
160
  delete_option( 'wpf_message' ); // empty message cache.
161
+ if ( ! empty( $message ) ) {
162
+ if ( is_array( $message ) ) {
163
+ foreach ( $message as $m ) {
164
+ $m = isset( $m['message'] ) ? $m['message'] : $m;
165
+ $t = isset( $m['type'] ) ? $m['type'] : $type;
166
+ $this->setMessage(
167
+ array(
168
+ 'notice' => esc_html( $m ),
169
+ 'type' => $t,
170
+ 'dismissible' => true,
171
+ )
172
+ );
173
+ }
174
+ } else {
175
+ $this->setMessage(
176
+ array(
177
+ 'notice' => esc_html( $message ),
178
+ 'type' => $type,
179
+ 'dismissible' => true,
180
+ )
181
+ );
182
+ }
183
+ }
184
  $dir = get_option( 'WPF_DIRECTORY_PERMISSION_CHECK', false );
185
  if ( $dir ) {
 
 
 
 
 
186
  $this->setMessage(
187
  array(
188
+ 'notice' => esc_html( $dir ),
189
+ 'type' => 'error',
190
  'dismissible' => true,
191
  )
192
  );
193
+ delete_option( 'WPF_DIRECTORY_PERMISSION_CHECK' ); // empty message cache.
194
  }
195
  }
196
  // phpcs:enable
197
  }
198
+
199
  /**
200
  * Set Feed Edit/Update Messages
201
  *
203
  */
204
  private function set_feed_edit_update_messages() {
205
  global $plugin_page;
206
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
207
  if ( 'webappick-manage-feeds' == $plugin_page ) {
208
+ if ( ( isset( $_GET['feed_created'] ) || isset( $_GET['feed_updated'] ) || isset( $_GET['feed_imported'] ) ) && isset( $_GET['feed_name'] ) ) {
209
  if ( isset( $_GET['feed_created'] ) ) {
210
  $this->setMessage(
211
  array(
224
  )
225
  );
226
  }
227
+ if ( isset( $_GET['feed_imported'] ) ) {
228
+ $this->setMessage(
229
+ array(
230
+ 'notice' => esc_html__( 'Feed Config Successfully Imported.', 'woo-feed' ),
231
+ 'type' => 'updated',
232
+ 'dismissible' => true,
233
+ )
234
+ );
235
+ }
236
  }
237
  // get updated link.
238
  if ( isset( $_GET['link'] ) && ! empty( $_GET['link'] ) ) {
252
  $link = 'https://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category';
253
  /** @noinspection HtmlUnknownTarget */
254
  $link = sprintf( '<a href="%s" target="_blank">%s</a>', esc_url( $link ), esc_html__( 'Learn more...', 'woo-feed' ) );
255
+ $notice .= sprintf( '<ul><li>%s %s</li></ul>', esc_html__( 'Google Product category is not selected. Your Google Ads CPC rate will be high. Add proper Google Product Category to each product & reduce CPC rate.', 'woo-feed' ), $link );
256
  }
257
  $this->setMessage(
258
  array(
264
  }
265
  }
266
  }
267
+ // phpcs:enable
268
  }
269
+
270
  /**
271
  * Set Schedule Update Response Message
272
  *
274
  */
275
  private function set_schedule_update_messages() {
276
  global $plugin_page;
277
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
278
  if ( 'webappick-manage-feeds' == $plugin_page ) {
279
  if ( isset( $_GET['schedule_u