CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.4.5

Version Description

(2021-06-23) = * Added: Log file download feature has been added.

Download this release

Release Info

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

Code changes from version 4.4.4 to 4.4.5

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Cata
5
  Requires at least: 3.6
6
  Tested Up To: 5.7
7
  Requires PHP: 5.6
8
- Stable tag: 4.4.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -516,6 +516,9 @@ Using pro version:
516
 
517
  == Changelog ==
518
 
 
 
 
519
  = 4.4.4 (2021-06-22) =
520
  * Added: Yoast identifier attributes has been added.
521
  * Added: Yoast WooCommerce SEO plugin compatibility added.
5
  Requires at least: 3.6
6
  Tested Up To: 5.7
7
  Requires PHP: 5.6
8
+ Stable tag: 4.4.5
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
516
 
517
  == Changelog ==
518
 
519
+ = 4.4.5 (2021-06-23) =
520
+ * Added: Log file download feature has been added.
521
+
522
  = 4.4.4 (2021-06-22) =
523
  * Added: Yoast identifier attributes has been added.
524
  * Added: Yoast WooCommerce SEO plugin compatibility added.
admin/js/fancy-select.min.js.map CHANGED
@@ -1 +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":"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","file":"fancy-select.min.js","sourcesContent":["\"use strict\";\r\n/**!\r\n * WooFeed Fancy Select\r\n * @version 1.0.0\r\n * @copyright 2020 WebAppick\r\n * @author Kudratullah <mhamudul.hk@gmail.com>\r\n */\r\n\r\n(function($, window, document) {\r\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).\r\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.\r\n\t\"use strict\";\r\n\t\r\n\t/**\r\n\t * FancySelect Constructor\r\n\t * @param {jQuery|HTMLElement} $select\r\n\t * @param {Object} [options]\r\n\t * @constructor\r\n\t */\r\n\tlet FancySelect = function FancySelect($select, options) {\r\n\t\tlet self = this,\r\n\t\t\tdefaults = {\r\n\t\t\t\toptions: [],\r\n\t\t\t\toptgroups: [],\r\n\t\t\t\titems: [],\r\n\t\t\t\tplaceholder: '',\r\n\t\t\t\tdelimiter: ',',\r\n\t\t\t\tsplitOn: null,\r\n\t\t\t\tpersist: !0,\r\n\t\t\t\tdiacritics: !0,\r\n\t\t\t\tcreate: !1,\r\n\t\t\t\tcreateOnBlur: !1,\r\n\t\t\t\tcreateFilter: null,\r\n\t\t\t\thighlight: !0,\r\n\t\t\t\topenOnFocus: !0,\r\n\t\t\t\tmaxOptions: 1e3,\r\n\t\t\t\tmaxItems: null,\r\n\t\t\t\tmaxItemShow: 3,\r\n\t\t\t\thideSelected: null,\r\n\t\t\t\taddPrecedence: !1,\r\n\t\t\t\tselectOnTab: !1,\r\n\t\t\t\tpreload: !1,\r\n\t\t\t\tallowEmptyOption: !1,\r\n\t\t\t\tcloseAfterSelect: !1,\r\n\t\t\t\tscrollDuration: 60,\r\n\t\t\t\tloadThrottle: 300,\r\n\t\t\t\tloadingClass: \"loading\",\r\n\t\t\t\tdataAttr: \"data-data\",\r\n\t\t\t\toptgroupField: \"optgroup\",\r\n\t\t\t\tvalueField: \"value\",\r\n\t\t\t\tlabelField: \"text\",\r\n\t\t\t\tdisabledField: \"disabled\",\r\n\t\t\t\toptgroupLabelField: \"label\",\r\n\t\t\t\toptgroupValueField: \"value\",\r\n\t\t\t\tlockOptgroupOrder: !1,\r\n\t\t\t\tsortField: \"$order\",\r\n\t\t\t\tsearchField: [\"text\"],\r\n\t\t\t\tsearchConjunction: \"and\",\r\n\t\t\t\tmode: null,\r\n\t\t\t\twrapperClass: \"selectize-control\",\r\n\t\t\t\tinputClass: \"selectize-input\",\r\n\t\t\t\tdropdownClass: \"selectize-dropdown\",\r\n\t\t\t\tdropdownContentClass: \"selectize-dropdown-content\",\r\n\t\t\t\tdropdownParent: null,\r\n\t\t\t\tcopyClassesToDropdown: !0,\r\n\t\t\t\trender: {}\r\n\t\t\t},\r\n\t\t\tsettings = $.extend(true, {}, defaults, options),\r\n\t\t\tselect = $select[0];\r\n\t\tselect.fancySelect = self;\r\n\t\tself.order = 0;\r\n\t\tlet computedStyle = window.getComputedStyle && window.getComputedStyle(select, null);\r\n\t\tlet dir = computedStyle ? computedStyle.getPropertyValue('direction') : select.currentStyle && select.currentStyle.direction;\r\n\t\tdir = dir || $select.parents('[dir]:first').attr('dir') || '';\r\n\t\tself.computedStyle = computedStyle; // for now, android support in general is too spotty to support validity\r\n\r\n\t\tconst SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !! document.createElement('input').validity; // helper (private) methods\r\n\r\n\t\tconst debounce = function (fn, delay) {\r\n\t\t\tlet timeout;\r\n\t\t\treturn function() {\r\n\t\t\t\tlet self = this;\r\n\t\t\t\tlet args = arguments;\r\n\t\t\t\twindow.clearTimeout(timeout);\r\n\t\t\t\ttimeout = window.setTimeout(function() {\r\n\t\t\t\t\tfn.apply(self, args);\r\n\t\t\t\t}, delay);\r\n\t\t\t};\r\n\t\t};\r\n\t\t\r\n\t\tlet optionsMap = {},\r\n\t\t\toptHelper = {\r\n\t\t\t\treadData: function ($el) {\r\n\t\t\t\t\tlet data = self.dataAttr && $el.attr(self.dataAttr);\r\n\r\n\t\t\t\t\tif (typeof data === 'string' && data.length) {\r\n\t\t\t\t\t\treturn JSON.parse(data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t},\r\n\t\t\t\taddOption: function ($option, group) {\r\n\t\t\t\t\t$option = $($option);\r\n\t\t\t\t\tlet value = self.hash_key($option.val());\r\n\t\t\t\t\tif (!value && !settings.allowEmptyOption) return; // if the option already exists, it's probably been\r\n\t\t\t\t\t// duplicated in another optgroup. in this case, push\r\n\t\t\t\t\t// the current group to the \"optgroup\" property on the\r\n\t\t\t\t\t// existing option so that it's rendered in both places.\r\n\r\n\t\t\t\t\tif (optionsMap.hasOwnProperty(value)) {\r\n\t\t\t\t\t\tif (group) {\r\n\t\t\t\t\t\t\tlet arr = optionsMap[value][field_optgroup];\r\n\r\n\t\t\t\t\t\t\tif (!arr) {\r\n\t\t\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\r\n\t\t\t\t\t\t\t} else if (!$.isArray(arr)) {\r\n\t\t\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tarr.push(group);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet option = optHelper.readData($option) || {};\r\n\t\t\t\t\toption[self.settings.labelField] = option[self.settings.labelField] || $option.text();\r\n\t\t\t\t\toption[self.settings.valueField] = option[self.settings.valueField] || value;\r\n\t\t\t\t\toption[self.settings.disabledField] = option[self.settings.disabledField] || $option.prop('disabled');\r\n\t\t\t\t\toption[self.settings.optgroupField] = option[self.settings.optgroupField] || group;\r\n\t\t\t\t\toption.$order = ++self.order;\r\n\t\t\t\t\toptionsMap[value] = option;\r\n\t\t\t\t\tself.settings.options.push(option);\r\n\r\n\t\t\t\t\tif ($option.is(':selected')) {\r\n\t\t\t\t\t\tself.settings.items.push(option);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\taddGroup: function ($optgroup) {\r\n\t\t\t\t\tlet i, n, id, optgroup, $options;\r\n\t\t\t\t\t$optgroup = $($optgroup);\r\n\t\t\t\t\tid = $optgroup.attr('label');\r\n\r\n\t\t\t\t\tif (id) {\r\n\t\t\t\t\t\toptgroup = optHelper.readData($optgroup) || {};\r\n\t\t\t\t\t\toptgroup[self.settings.optgroupLabelField] = id;\r\n\t\t\t\t\t\toptgroup[self.settings.optgroupValueField] = id;\r\n\t\t\t\t\t\toptgroup[self.settings.disabledField] = $optgroup.prop('disabled');\r\n\t\t\t\t\t\toptgroup.$order = ++self.order;\r\n\t\t\t\t\t\tself.settings.optgroups.push(optgroup);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$options = $('option', $optgroup);\r\n\r\n\t\t\t\t\tfor (i = 0, n = $options.length; i < n; i++) {\r\n\t\t\t\t\t\toptHelper.addOption($options[i], id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}; // setup default state\r\n\t\t\r\n\t\t$.extend(self, {\r\n\t\t\tsettings: settings,\r\n\t\t\t$select: $select,\r\n\t\t\ttabIndex: $select.attr('tabindex') || '',\r\n\t\t\ttagType: 1,\r\n\t\t\trtl: /rtl/i.test(dir),\r\n\t\t\tmultiple: $select.attr('multiple'),\r\n\t\t\teventNS: '.FancySelect' + ++FancySelect.count,\r\n\t\t\thighlightedValue: null,\r\n\t\t\tisBlurring: false,\r\n\t\t\tisOpen: false,\r\n\t\t\tisDisabled: false,\r\n\t\t\tisRequired: $select.is('[required]'),\r\n\t\t\tisInvalid: false,\r\n\t\t\tisLocked: false,\r\n\t\t\tisFocused: false,\r\n\t\t\tisInputHidden: false,\r\n\t\t\tisSetup: false,\r\n\t\t\tisRendered: false,\r\n\t\t\tisShiftDown: false,\r\n\t\t\tisCmdDown: false,\r\n\t\t\tisCtrlDown: false,\r\n\t\t\tignoreFocus: false,\r\n\t\t\tignoreBlur: false,\r\n\t\t\tignoreHover: false,\r\n\t\t\thasOptions: false,\r\n\t\t\tcurrentResults: null,\r\n\t\t\tlastValue: '',\r\n\t\t\tcaretPos: 0,\r\n\t\t\tloading: 0,\r\n\t\t\tloadedSearches: {},\r\n\t\t\t$activeOption: null,\r\n\t\t\t$activeItems: [],\r\n\t\t\toptgroups: {},\r\n\t\t\toptions: {},\r\n\t\t\tuserOptions: {},\r\n\t\t\titems: {},\r\n\t\t\trenderCache: {},\r\n\t\t\tonSearchChange: settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\r\n\t\t});\r\n\r\n\t\tif ('' === self.settings.placeholder) {\r\n\t\t\tself.settings.placeholder = $select.attr('placeholder') || $select.attr('data-placeholder');\r\n\r\n\t\t\tif (!self.settings.placeholder && !self.settings.allowEmptyOption) {\r\n\t\t\t\tself.settings.placeholder = $select.children('option[value=\"\"]').text();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tself.settings.maxItems = self.multiple ? null : 1;\r\n\r\n\t\tfor (let i = 0, n = self.$select.children().length; i < n; i++) {\r\n\t\t\tlet tagName = self.$select.children()[i].tagName.toLowerCase();\r\n\r\n\t\t\tif (tagName === 'optgroup') {\r\n\t\t\t\toptHelper.addGroup(self.$select.children()[i]);\r\n\t\t\t} else if (tagName === 'option') {\r\n\t\t\t\toptHelper.addOption(self.$select.children()[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tself.$wrapper = $('<div class=\"fancy-picker\">').addClass($select.attr('class'));\r\n\r\n\t\tif (self.computedStyle.hasOwnProperty('width')) {\r\n\t\t\tself.$wrapper.css({\r\n\t\t\t\twidth: self.computedStyle.width\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tself.$outputWrapper = $('<div class=\"fancy-picker-picked\">').appendTo(self.$wrapper);\r\n\t\tself.originalPlaceholder = $('<span class=\"fancy-picker-placeholder\">').appendTo(self.$outputWrapper);\r\n\t\tself.dataPlaceholder = $('<span class=\"fancy-picker-data\">').appendTo(self.$outputWrapper);\r\n\t\tself.dataCountPlaceholder = $('<span class=\"fancy-picker-count\">').appendTo(self.$outputWrapper);\r\n\t\tself.$dropdown = $('<div class=\"fancy-picker-ui\">').appendTo(self.$wrapper);\r\n\t\tself.$dropdownContent = $('<div class=\"fancy-picker-content\">').appendTo(self.$dropdown);\r\n\t\tself.setup();\r\n\t};\r\n\r\n\tFancySelect.count = 0;\r\n\t// public methods.\r\n\t$.extend(FancySelect.prototype, {\r\n\t\t/**\r\n\t\t * Creates all elements and sets up event bindings.\r\n\t\t * @return {void}\r\n\t\t */\r\n\t\tsetup: function () {\r\n\t\t\tlet self = this;\r\n\t\t\tself.revertSettings = {\r\n\t\t\t\t$children: self.$select.children().detach(),\r\n\t\t\t\ttabindex: self.$select.attr('tabindex')\r\n\t\t\t};\r\n\t\t\tself.$select.attr('tabindex', -1).hide().after(self.$wrapper);\r\n\t\t\tself.$select.data('FancySelect', self);\r\n\t\t\tself.$select.addClass('FancySelectInit');\r\n\t\t\t\r\n\t\t\tself.settings.items.sort( ( a, b ) => a[self.settings.sortField] - b[self.settings.sortField] );\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif (self.preload) {\r\n\t\t\t\tself.render();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.updatePlaceholder();\r\n\t\t\tself.updateOriginalInput();\r\n\t\t\t\r\n\t\t\tself.$wrapper.on('click' + self.eventNS, '.fancy-picker-picked', function(e) {\r\n\t\t\t\tself.$select.trigger('show');\r\n\t\t\t\t\r\n\t\t\t\tif (!self.isRendered) {\r\n\t\t\t\t\tself.render();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tself.$wrapper.toggleClass('active');\r\n\t\t\t\tself.$select.trigger('shown');\r\n\t\t\t});\r\n\t\t\t$(document).on('click' + self.eventNS, function(e) {\r\n\t\t\t\tif (!$(e.target).closest(self.$wrapper).length) {\r\n\t\t\t\t\tself.$select.trigger('hide');\r\n\t\t\t\t\tself.$wrapper.removeClass('active');\r\n\t\t\t\t\tself.$select.trigger('hidden');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tself.$wrapper.on('click' + self.eventNS, '.fancy-picker-option:not(.disabled)', function(e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tlet current = $(this),\r\n\t\t\t\t\tselected = false,\r\n\t\t\t\t\tvalue = self.hash_key(current.data('value'));\r\n\t\t\t\t\r\n\t\t\t\tif (self.multiple) {\r\n\t\t\t\t\tif (!current.hasClass('selected')) {\r\n\t\t\t\t\t\tselected = true;\r\n\t\t\t\t\t\tcurrent.addClass('selected');\r\n\t\t\t\t\t} else current.removeClass('selected');\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (selected) {\r\n\t\t\t\t\t\tself.settings.items.push( self.getSelectedOptionData( value ) );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tself.settings.items = self.settings.items.filter( x => x[self.settings.valueField] !== value );\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tself.settings.items.sort( ( a, b ) => a[self.settings.sortField] - b[self.settings.sortField] );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.$dropdownContent.find('.fancy-picker-option').not(current).removeClass('selected');\r\n\t\t\t\t\tcurrent.addClass('selected');\r\n\t\t\t\t\tselected = true;\r\n\t\t\t\t\tself.settings.items = [ self.getSelectedOptionData( value ) ];\r\n\t\t\t\t\tself.$wrapper.removeClass('active');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tself.updatePlaceholder();\r\n\t\t\t\tself.updateOriginalInput();\r\n\t\t\t});\r\n\t\t\t$(window).on('resize' + self.eventNS, function() {\r\n\t\t\t\tlet computedStyle = window.getComputedStyle && window.getComputedStyle(self.$select[0], null);\r\n\t\t\t\t\r\n\t\t\t\tif (computedStyle.hasOwnProperty('width')) {\r\n\t\t\t\t\tself.$wrapper.css({\r\n\t\t\t\t\t\twidth: computedStyle.width\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tself.$select.trigger('initialize');\r\n\t\t},\r\n\t\t/**\r\n\t\t * Render The FancySelect UI\r\n\t\t * @return {void}\r\n\t\t */\r\n\t\trender: function () {\r\n\t\t\tlet self = this,\r\n\t\t\t\tdropdownItems = [];\r\n\t\t\tconst optgroup = self.settings.optgroups;\r\n\t\t\tconst options = self.settings.options;\r\n\t\t\tconst optClass = ( value ) => self.isSelected(value) ? 'fancy-picker-option selected' : 'fancy-picker-option';\r\n\t\t\tif ( optgroup.length ) {\r\n\t\t\t\tfor ( let i = 0; i < optgroup.length; i++ ) {\r\n\t\t\t\t\tdropdownItems.push( `<div class=\"fancy-picker-option-group\">` );\r\n\t\t\t\t\tdropdownItems.push( `<div class=\"fancy-picker-option-group-label\">${optgroup[i][self.settings.labelField]}</div>` );\r\n\t\t\t\t\tconst group_options = options.filter( item => item[self.settings.optgroupField] === optgroup[i][self.settings.valueField]);\r\n\t\t\t\t\tfor (let ii = 0; ii < group_options.length; ii++ ) {\r\n\t\t\t\t\t\tlet option = group_options[i];\r\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>` );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdropdownItems.push( `</div>` );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = 0; i < options.length; i++) {\r\n\t\t\t\t\tlet option = options[i];\r\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>` );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.$dropdownContent.html(dropdownItems.join(''));\r\n\t\t\tself.$select.trigger('rendered');\r\n\t\t\tself.isRendered = true;\r\n\t\t},\r\n\t\t/**\r\n\t\t * Set Placeholder & Update Selected Data Placeholder\r\n\t\t * @return {FancySelect}\r\n\t\t */\r\n\t\tupdatePlaceholder: function () {\r\n\t\t\tlet self = this,\r\n\t\t\t\tplaceholderData = [];\r\n\t\t\tconst items = self.settings.items;\r\n\t\t\tconst maxItemShow = items.length > self.settings.maxItemShow ? self.settings.maxItemShow - 1 : self.settings.maxItemShow;\r\n\t\t\tself.originalPlaceholder.text(self.settings.placeholder);\r\n\t\t\t\r\n\t\t\tif (items.length) {\r\n\t\t\t\tself.originalPlaceholder.hide();\r\n\t\t\t} else {\r\n\t\t\t\tself.originalPlaceholder.show();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\titems.slice(0, maxItemShow).forEach( (item) => {\r\n\t\t\t\tplaceholderData.push( `<span>${item[self.settings.labelField]}</span>` );\r\n\t\t\t});\r\n\t\t\tself.dataPlaceholder.html( placeholderData.join( `<span class=\"fancy-picker-separator\">${self.settings.delimiter}</span>` ) );\r\n\t\t\t\r\n\t\t\tif (items.length > self.settings.maxItemShow) {\r\n\t\t\t\tlet title = [];\r\n\t\t\t\titems.forEach( (item) => {\r\n\t\t\t\t\ttitle.push(item[self.settings.labelField]);\r\n\t\t\t\t});\r\n\t\t\t\tself.dataCountPlaceholder.attr('title', title.join(self.settings.delimiter.trim() + ' '));\r\n\t\t\t\tself.dataCountPlaceholder.html('+' + (items.length - maxItemShow) + ' More &hellip;');\r\n\t\t\t} else {\r\n\t\t\t\tself.dataCountPlaceholder.removeAttr('title');\r\n\t\t\t\tself.dataCountPlaceholder.html('');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.$select.trigger('placeholderChanged');\r\n\t\t\treturn self;\r\n\t\t},\r\n\t\t/**\r\n\t\t * Update The Original Select Tag\r\n\t\t * @param {boolean} ?silent\r\n\t\t * @return {FancySelect}\r\n\t\t */\r\n\t\tupdateOriginalInput: function (silent) {\r\n\t\t\tlet self = this,\r\n\t\t\t\toptions = [],\r\n\t\t\t\tchanged = false;\r\n\t\t\tsilent = true === silent ? true : false;\r\n\t\t\tconst items = self.settings.items;\r\n\t\t\tfor (let i = 0; i < items.length; i++) {\r\n\t\t\t\toptions.push('<option value=\"' + items[i][self.settings.valueField] + '\" selected=\"selected\">' + items[i][self.settings.labelField] || '' + '</option>');\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tself.$select.html(options.join(''));\r\n\t\t\t\r\n\t\t\tif (!silent && changed) {\r\n\t\t\t\tself.$select.trigger('change');\r\n\t\t\t}\r\n\t\t\treturn self;\r\n\t\t},\r\n\t\t/**\r\n\t\t * Get Selected Option Data (value, label, etc.)\r\n\t\t * @param {string} hash_key\r\n\t\t * @return {object|boolean}\r\n\t\t */\r\n\t\tgetSelectedOptionData: function (hash_key) {\r\n\t\t\tlet self = this,\r\n\t\t\t\tselected = self.settings.options.filter( x => x[self.settings.valueField] === hash_key );\r\n\t\t\treturn selected.length ? selected[0] : false;\r\n\t\t},\r\n\t\t/**\r\n\t\t * Check if input is selected (in the items list )\r\n\t\t * @param {string} hash_key\r\n\t\t * @return {boolean}\r\n\t\t */\r\n\t\tisSelected: function (hash_key) {\r\n\t\t\tlet self = this;\r\n\t\t\treturn self.settings.items.filter( x => x[self.settings.valueField] === hash_key ).length > 0;\r\n\t\t},\r\n\t\t/**\r\n\t\t * Convert input to it's best string representation.\r\n\t\t * @param {string|*} input\r\n\t\t * @return {string}\r\n\t\t */\r\n\t\thash_key: (input) => input + '',\r\n\t\t/**\r\n\t\t * Completely destroys the control and\r\n\t\t * unbinds all event listeners so that it can\r\n\t\t * be garbage collected.\r\n\t\t */\r\n\t\tdestroy: function () {\r\n\t\t\tlet self = this;\r\n\t\t\tself.$select.trigger('destroy');\r\n\t\t\tself.trigger('destroy');\r\n\t\t\tself.off();\r\n\t\t\tself.$select\r\n\t\t\t\t.html('')\r\n\t\t\t\t.append(self.revertSettings.$children)\r\n\t\t\t\t.removeAttr('tabindex')\r\n\t\t\t\t.removeClass('FancySelectInit')\r\n\t\t\t\t.attr({tabindex: self.revertSettings.tabindex})\r\n\t\t\t\t.show();\r\n\t\t\tself.$select.removeData('FancySelect');\r\n\t\t\tself.$wrapper.remove();\r\n\t\t\t\r\n\t\t\tif (--FancySelect.count === 0 && FancySelect.$testInput) {\r\n\t\t\t\tFancySelect.$testInput.remove();\r\n\t\t\t\tFancySelect.$testInput = undefined;\r\n\t\t\t} // this doesn't fire on create feed. as fields are loaded via ajax.\r\n\t\t\t// add custom event with the form object (with namespace)\r\n\t\t\t// trigger event on form.init()\r\n\t\t\t// remove previous listener on from.init(). first. so multiple listener not executed.\r\n\t\t\t// see selectize https://github.com/selectize/selectize.js/blob/master/src/selectize.js#L2097\r\n\t\t\t// add event listener here...\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t$(window).off(self.eventNS);\r\n\t\t\t$(document).off(self.eventNS);\r\n\t\t\t$(document.body).off(self.eventNS);\r\n\t\t\tdelete self.$select[0].fancySelect;\r\n\t\t},\r\n\t\t\r\n\t});\r\n\t\r\n\t/**\r\n\t * MicroEvent - to make any js object an event emitter\r\n\t *\r\n\t * - pure javascript - server compatible, browser compatible\r\n\t * - dont rely on the browser doms\r\n\t * - super simple - you get it immediatly, no mistery, no magic involved\r\n\t *\r\n\t * @author Jerome Etienne (https://github.com/jeromeetienne)\r\n\t * @link https://github.com/jeromeetienne/microevent.js\r\n\t */\r\n\t$.extend(FancySelect.prototype, {\r\n\t\tbind\t: function(event, fct){\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tthis._events[event] = this._events[event]\t|| [];\r\n\t\t\tthis._events[event].push(fct);\r\n\t\t},\r\n\t\tunbind\t: function(event, fct){\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tif( event in this._events === false )\treturn;\r\n\t\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\r\n\t\t},\r\n\t\ttrigger\t: function(event /* , args... */){\r\n\t\t\tthis._events = this._events || {};\r\n\t\t\tif( event in this._events === false )\treturn;\r\n\t\t\tfor(let i = 0; i < this._events[event].length; i++){\r\n\t\t\t\tthis._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\t/**\r\n\t * jQuery Wrapper\r\n\t * @param {Object} [user_options]\r\n\t * @returns {jquery|HTMLElement}\r\n\t */\r\n\t$.fn.fancySelect = function(user_options) {\r\n\t\treturn this.each(function() {\r\n\t\t\tif (this.fancySelect) return;\r\n\t\t\tif ('select' !== this.tagName.toLowerCase()) return;\r\n\t\t\tnew FancySelect($(this), user_options);\r\n\t\t});\r\n\t};\r\n})(jQuery, window, document);\r\n"]}
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":"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","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/jquery-sortable.min.js.map CHANGED
@@ -1 +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":["/* ===================================================\r\n * jquery-sortable.js v0.9.13\r\n * http://johnny.github.com/jquery-sortable/\r\n * ===================================================\r\n * Copyright (c) 2012 Jonas von Andrian\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n * * Redistributions of source code must retain the above copyright\r\n * notice, this list of conditions and the following disclaimer.\r\n * * Redistributions in binary form must reproduce the above copyright\r\n * notice, this list of conditions and the following disclaimer in the\r\n * documentation and/or other materials provided with the distribution.\r\n * * The name of the author may not be used to endorse or promote products\r\n * derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\r\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n * ========================================================== */\r\n/* eslint-disable */\r\n!function ( $, window, pluginName, undefined){\r\n var containerDefaults = {\r\n // If true, items can be dragged from this container\r\n drag: true,\r\n // If true, items can be droped onto this container\r\n drop: true,\r\n // Exclude items from being draggable, if the\r\n // selector matches the item\r\n exclude: \"\",\r\n // If true, search for nested containers within an item.If you nest containers,\r\n // either the original selector with which you call the plugin must only match the top containers,\r\n // or you need to specify a group (see the bootstrap nav example)\r\n nested: true,\r\n // If true, the items are assumed to be arranged vertically\r\n vertical: true\r\n }, // end container defaults\r\n groupDefaults = {\r\n // This is executed after the placeholder has been moved.\r\n // $closestItemOrContainer contains the closest item, the placeholder\r\n // has been put at or the closest empty Container, the placeholder has\r\n // been appended to.\r\n afterMove: function ($placeholder, container, $closestItemOrContainer) {\r\n },\r\n // The exact css path between the container and its items, e.g. \"> tbody\"\r\n containerPath: \"\",\r\n // The css selector of the containers\r\n containerSelector: \"ol, ul\",\r\n // Distance the mouse has to travel to start dragging\r\n distance: 0,\r\n // Time in milliseconds after mousedown until dragging should start.\r\n // This option can be used to prevent unwanted drags when clicking on an element.\r\n delay: 0,\r\n // The css selector of the drag handle\r\n handle: \"\",\r\n // The exact css path between the item and its subcontainers.\r\n // It should only match the immediate items of a container.\r\n // No item of a subcontainer should be matched. E.g. for ol>div>li the itemPath is \"> div\"\r\n itemPath: \"\",\r\n // The css selector of the items\r\n itemSelector: \"li\",\r\n // The class given to \"body\" while an item is being dragged\r\n bodyClass: \"dragging\",\r\n // The class giving to an item while being dragged\r\n draggedClass: \"dragged\",\r\n // Check if the dragged item may be inside the container.\r\n // Use with care, since the search for a valid container entails a depth first search\r\n // and may be quite expensive.\r\n isValidTarget: function ($item, container) {\r\n return true\r\n },\r\n // Executed before onDrop if placeholder is detached.\r\n // This happens if pullPlaceholder is set to false and the drop occurs outside a container.\r\n onCancel: function ($item, container, _super, event) {\r\n },\r\n // Executed at the beginning of a mouse move event.\r\n // The Placeholder has not been moved yet.\r\n onDrag: function ($item, position, _super, event) {\r\n $item.css(position)\r\n },\r\n // Called after the drag has been started,\r\n // that is the mouse button is being held down and\r\n // the mouse is moving.\r\n // The container is the closest initialized container.\r\n // Therefore it might not be the container, that actually contains the item.\r\n onDragStart: function ($item, container, _super, event) {\r\n $item.css({\r\n height: $item.outerHeight(),\r\n width: $item.outerWidth()\r\n })\r\n $item.addClass(container.group.options.draggedClass)\r\n $(\"body\").addClass(container.group.options.bodyClass)\r\n },\r\n // Called when the mouse button is being released\r\n onDrop: function ($item, container, _super, event) {\r\n $item.removeClass(container.group.options.draggedClass).removeAttr(\"style\")\r\n $(\"body\").removeClass(container.group.options.bodyClass)\r\n },\r\n // Called on mousedown. If falsy value is returned, the dragging will not start.\r\n // Ignore if element clicked is input, select or textarea\r\n onMousedown: function ($item, _super, event) {\r\n if (!event.target.nodeName.match(/^(input|select|textarea)$/i)) {\r\n event.preventDefault()\r\n return true\r\n }\r\n },\r\n // The class of the placeholder (must match placeholder option markup)\r\n placeholderClass: \"placeholder\",\r\n // Template for the placeholder. Can be any valid jQuery input\r\n // e.g. a string, a DOM element.\r\n // The placeholder must have the class \"placeholder\"\r\n placeholder: '<li class=\"placeholder\"></li>',\r\n // If true, the position of the placeholder is calculated on every mousemove.\r\n // If false, it is only calculated when the mouse is above a container.\r\n pullPlaceholder: true,\r\n // Specifies serialization of the container group.\r\n // The pair $parent/$children is either container/items or item/subcontainers.\r\n serialize: function ($parent, $children, parentIsContainer) {\r\n var result = $.extend({}, $parent.data())\r\n\r\n if(parentIsContainer)\r\n return [$children]\r\n else if ($children[0]){\r\n result.children = $children\r\n }\r\n\r\n delete result.subContainers\r\n delete result.sortable\r\n\r\n return result\r\n },\r\n // Set tolerance while dragging. Positive values decrease sensitivity,\r\n // negative values increase it.\r\n tolerance: 0\r\n }, // end group defaults\r\n containerGroups = {},\r\n groupCounter = 0,\r\n emptyBox = {\r\n left: 0,\r\n top: 0,\r\n bottom: 0,\r\n right:0\r\n },\r\n eventNames = {\r\n start: \"touchstart.sortable mousedown.sortable\",\r\n drop: \"touchend.sortable touchcancel.sortable mouseup.sortable\",\r\n drag: \"touchmove.sortable mousemove.sortable\",\r\n scroll: \"scroll.sortable\"\r\n },\r\n subContainerKey = \"subContainers\"\r\n\r\n /*\r\n * a is Array [left, right, top, bottom]\r\n * b is array [left, top]\r\n */\r\n function d(a,b) {\r\n var x = Math.max(0, a[0] - b[0], b[0] - a[1]),\r\n y = Math.max(0, a[2] - b[1], b[1] - a[3])\r\n return x+y;\r\n }\r\n\r\n function setDimensions(array, dimensions, tolerance, useOffset) {\r\n var i = array.length,\r\n offsetMethod = useOffset ? \"offset\" : \"position\"\r\n tolerance = tolerance || 0\r\n\r\n while(i--){\r\n var el = array[i].el ? array[i].el : $(array[i]),\r\n // use fitting method\r\n pos = el[offsetMethod]()\r\n pos.left += parseInt(el.css('margin-left'), 10)\r\n pos.top += parseInt(el.css('margin-top'),10)\r\n dimensions[i] = [\r\n pos.left - tolerance,\r\n pos.left + el.outerWidth() + tolerance,\r\n pos.top - tolerance,\r\n pos.top + el.outerHeight() + tolerance\r\n ]\r\n }\r\n }\r\n\r\n function getRelativePosition(pointer, element) {\r\n var offset = element.offset()\r\n return {\r\n left: pointer.left - offset.left,\r\n top: pointer.top - offset.top\r\n }\r\n }\r\n\r\n function sortByDistanceDesc(dimensions, pointer, lastPointer) {\r\n pointer = [pointer.left, pointer.top]\r\n lastPointer = lastPointer && [lastPointer.left, lastPointer.top]\r\n\r\n var dim,\r\n i = dimensions.length,\r\n distances = []\r\n\r\n while(i--){\r\n dim = dimensions[i]\r\n distances[i] = [i,d(dim,pointer), lastPointer && d(dim, lastPointer)]\r\n }\r\n distances = distances.sort(function (a,b) {\r\n return b[1] - a[1] || b[2] - a[2] || b[0] - a[0]\r\n })\r\n\r\n // last entry is the closest\r\n return distances\r\n }\r\n\r\n function ContainerGroup(options) {\r\n this.options = $.extend({}, groupDefaults, options)\r\n this.containers = []\r\n\r\n if(!this.options.rootGroup){\r\n this.scrollProxy = $.proxy(this.scroll, this)\r\n this.dragProxy = $.proxy(this.drag, this)\r\n this.dropProxy = $.proxy(this.drop, this)\r\n this.placeholder = $(this.options.placeholder)\r\n\r\n if(!options.isValidTarget)\r\n this.options.isValidTarget = undefined\r\n }\r\n }\r\n\r\n ContainerGroup.get = function (options) {\r\n if(!containerGroups[options.group]) {\r\n if(options.group === undefined)\r\n options.group = groupCounter ++\r\n\r\n containerGroups[options.group] = new ContainerGroup(options)\r\n }\r\n\r\n return containerGroups[options.group]\r\n }\r\n\r\n ContainerGroup.prototype = {\r\n dragInit: function (e, itemContainer) {\r\n this.$document = $(itemContainer.el[0].ownerDocument)\r\n\r\n // get item to drag\r\n var closestItem = $(e.target).closest(this.options.itemSelector);\r\n // using the length of this item, prevents the plugin from being started if there is no handle being clicked on.\r\n // this may also be helpful in instantiating multidrag.\r\n if (closestItem.length) {\r\n this.item = closestItem;\r\n this.itemContainer = itemContainer;\r\n if (this.item.is(this.options.exclude) || !this.options.onMousedown(this.item, groupDefaults.onMousedown, e)) {\r\n return;\r\n }\r\n this.setPointer(e);\r\n this.toggleListeners('on');\r\n this.setupDelayTimer();\r\n this.dragInitDone = true;\r\n }\r\n },\r\n drag: function (e) {\r\n if(!this.dragging){\r\n if(!this.distanceMet(e) || !this.delayMet)\r\n return\r\n\r\n this.options.onDragStart(this.item, this.itemContainer, groupDefaults.onDragStart, e)\r\n this.item.before(this.placeholder)\r\n this.dragging = true\r\n }\r\n\r\n this.setPointer(e)\r\n // place item under the cursor\r\n this.options.onDrag(this.item,\r\n getRelativePosition(this.pointer, this.item.offsetParent()),\r\n groupDefaults.onDrag,\r\n e)\r\n\r\n var p = this.getPointer(e),\r\n box = this.sameResultBox,\r\n t = this.options.tolerance\r\n\r\n if(!box || box.top - t > p.top || box.bottom + t < p.top || box.left - t > p.left || box.right + t < p.left)\r\n if(!this.searchValidTarget()){\r\n this.placeholder.detach()\r\n this.lastAppendedItem = undefined\r\n }\r\n },\r\n drop: function (e) {\r\n this.toggleListeners('off')\r\n\r\n this.dragInitDone = false\r\n\r\n if(this.dragging){\r\n // processing Drop, check if placeholder is detached\r\n if(this.placeholder.closest(\"html\")[0]){\r\n this.placeholder.before(this.item).detach()\r\n } else {\r\n this.options.onCancel(this.item, this.itemContainer, groupDefaults.onCancel, e)\r\n }\r\n this.options.onDrop(this.item, this.getContainer(this.item), groupDefaults.onDrop, e)\r\n\r\n // cleanup\r\n this.clearDimensions()\r\n this.clearOffsetParent()\r\n this.lastAppendedItem = this.sameResultBox = undefined\r\n this.dragging = false\r\n }\r\n },\r\n searchValidTarget: function (pointer, lastPointer) {\r\n if(!pointer){\r\n pointer = this.relativePointer || this.pointer\r\n lastPointer = this.lastRelativePointer || this.lastPointer\r\n }\r\n\r\n var distances = sortByDistanceDesc(this.getContainerDimensions(),\r\n pointer,\r\n lastPointer),\r\n i = distances.length\r\n\r\n while(i--){\r\n var index = distances[i][0],\r\n distance = distances[i][1]\r\n\r\n if(!distance || this.options.pullPlaceholder){\r\n var container = this.containers[index]\r\n if(!container.disabled){\r\n if(!this.$getOffsetParent()){\r\n var offsetParent = container.getItemOffsetParent()\r\n pointer = getRelativePosition(pointer, offsetParent)\r\n lastPointer = getRelativePosition(lastPointer, offsetParent)\r\n }\r\n if(container.searchValidTarget(pointer, lastPointer))\r\n return true\r\n }\r\n }\r\n }\r\n if(this.sameResultBox)\r\n this.sameResultBox = undefined\r\n },\r\n movePlaceholder: function (container, item, method, sameResultBox) {\r\n var lastAppendedItem = this.lastAppendedItem\r\n if(!sameResultBox && lastAppendedItem && lastAppendedItem[0] === item[0])\r\n return;\r\n\r\n item[method](this.placeholder)\r\n this.lastAppendedItem = item\r\n this.sameResultBox = sameResultBox\r\n this.options.afterMove(this.placeholder, container, item)\r\n },\r\n getContainerDimensions: function () {\r\n if(!this.containerDimensions)\r\n setDimensions(this.containers, this.containerDimensions = [], this.options.tolerance, !this.$getOffsetParent())\r\n return this.containerDimensions\r\n },\r\n getContainer: function (element) {\r\n return element.closest(this.options.containerSelector).data(pluginName)\r\n },\r\n $getOffsetParent: function () {\r\n if(this.offsetParent === undefined){\r\n var i = this.containers.length - 1,\r\n offsetParent = this.containers[i].getItemOffsetParent()\r\n\r\n if(!this.options.rootGroup){\r\n while(i--){\r\n if(offsetParent[0] != this.containers[i].getItemOffsetParent()[0]){\r\n // If every container has the same offset parent,\r\n // use position() which is relative to this parent,\r\n // otherwise use offset()\r\n // compare #setDimensions\r\n offsetParent = false\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.offsetParent = offsetParent\r\n }\r\n return this.offsetParent\r\n },\r\n setPointer: function (e) {\r\n var pointer = this.getPointer(e)\r\n\r\n if(this.$getOffsetParent()){\r\n var relativePointer = getRelativePosition(pointer, this.$getOffsetParent())\r\n this.lastRelativePointer = this.relativePointer\r\n this.relativePointer = relativePointer\r\n }\r\n\r\n this.lastPointer = this.pointer\r\n this.pointer = pointer\r\n },\r\n distanceMet: function (e) {\r\n var currentPointer = this.getPointer(e)\r\n return (Math.max(\r\n Math.abs(this.pointer.left - currentPointer.left),\r\n Math.abs(this.pointer.top - currentPointer.top)\r\n ) >= this.options.distance)\r\n },\r\n getPointer: function(e) {\r\n var o = e.originalEvent || e.originalEvent.touches && e.originalEvent.touches[0]\r\n return {\r\n left: e.pageX || o.pageX,\r\n top: e.pageY || o.pageY\r\n }\r\n },\r\n setupDelayTimer: function () {\r\n var that = this\r\n this.delayMet = !this.options.delay\r\n\r\n // init delay timer if needed\r\n if (!this.delayMet) {\r\n clearTimeout(this._mouseDelayTimer);\r\n this._mouseDelayTimer = setTimeout(function() {\r\n that.delayMet = true\r\n }, this.options.delay)\r\n }\r\n },\r\n scroll: function (e) {\r\n this.clearDimensions()\r\n this.clearOffsetParent() // TODO is this needed?\r\n },\r\n toggleListeners: function (method) {\r\n var that = this,\r\n events = ['drag','drop','scroll']\r\n\r\n $.each(events,function (i,event) {\r\n that.$document[method](eventNames[event], that[event + 'Proxy'])\r\n })\r\n },\r\n clearOffsetParent: function () {\r\n this.offsetParent = undefined\r\n },\r\n // Recursively clear container and item dimensions\r\n clearDimensions: function () {\r\n this.traverse(function(object){\r\n object._clearDimensions()\r\n })\r\n },\r\n traverse: function(callback) {\r\n callback(this)\r\n var i = this.containers.length\r\n while(i--){\r\n this.containers[i].traverse(callback)\r\n }\r\n },\r\n _clearDimensions: function(){\r\n this.containerDimensions = undefined\r\n },\r\n _destroy: function () {\r\n containerGroups[this.options.group] = undefined\r\n }\r\n }\r\n\r\n function Container(element, options) {\r\n this.el = element\r\n this.options = $.extend( {}, containerDefaults, options)\r\n\r\n this.group = ContainerGroup.get(this.options)\r\n this.rootGroup = this.options.rootGroup || this.group\r\n this.handle = this.rootGroup.options.handle || this.rootGroup.options.itemSelector\r\n\r\n var itemPath = this.rootGroup.options.itemPath\r\n this.target = itemPath ? this.el.find(itemPath) : this.el\r\n\r\n this.target.on(eventNames.start, this.handle, $.proxy(this.dragInit, this))\r\n\r\n if(this.options.drop)\r\n this.group.containers.push(this)\r\n }\r\n\r\n Container.prototype = {\r\n dragInit: function (e) {\r\n var rootGroup = this.rootGroup\r\n\r\n if( !this.disabled &&\r\n !rootGroup.dragInitDone &&\r\n this.options.drag &&\r\n this.isValidDrag(e)) {\r\n rootGroup.dragInit(e, this)\r\n }\r\n },\r\n isValidDrag: function(e) {\r\n return e.which == 1 ||\r\n e.type == \"touchstart\" && e.originalEvent.touches.length == 1\r\n },\r\n searchValidTarget: function (pointer, lastPointer) {\r\n var distances = sortByDistanceDesc(this.getItemDimensions(),\r\n pointer,\r\n lastPointer),\r\n i = distances.length,\r\n rootGroup = this.rootGroup,\r\n validTarget = !rootGroup.options.isValidTarget ||\r\n rootGroup.options.isValidTarget(rootGroup.item, this)\r\n\r\n if(!i && validTarget){\r\n rootGroup.movePlaceholder(this, this.target, \"append\")\r\n return true\r\n } else\r\n while(i--){\r\n var index = distances[i][0],\r\n distance = distances[i][1]\r\n if(!distance && this.hasChildGroup(index)){\r\n var found = this.getContainerGroup(index).searchValidTarget(pointer, lastPointer)\r\n if(found)\r\n return true\r\n }\r\n else if(validTarget){\r\n this.movePlaceholder(index, pointer)\r\n return true\r\n }\r\n }\r\n },\r\n movePlaceholder: function (index, pointer) {\r\n var item = $(this.items[index]),\r\n dim = this.itemDimensions[index],\r\n method = \"after\",\r\n width = item.outerWidth(),\r\n height = item.outerHeight(),\r\n offset = item.offset(),\r\n sameResultBox = {\r\n left: offset.left,\r\n right: offset.left + width,\r\n top: offset.top,\r\n bottom: offset.top + height\r\n }\r\n if(this.options.vertical){\r\n var yCenter = (dim[2] + dim[3]) / 2,\r\n inUpperHalf = pointer.top <= yCenter\r\n if(inUpperHalf){\r\n method = \"before\"\r\n sameResultBox.bottom -= height / 2\r\n } else\r\n sameResultBox.top += height / 2\r\n } else {\r\n var xCenter = (dim[0] + dim[1]) / 2,\r\n inLeftHalf = pointer.left <= xCenter\r\n if(inLeftHalf){\r\n method = \"before\"\r\n sameResultBox.right -= width / 2\r\n } else\r\n sameResultBox.left += width / 2\r\n }\r\n if(this.hasChildGroup(index))\r\n sameResultBox = emptyBox\r\n this.rootGroup.movePlaceholder(this, item, method, sameResultBox)\r\n },\r\n getItemDimensions: function () {\r\n if(!this.itemDimensions){\r\n this.items = this.$getChildren(this.el, \"item\").filter(\r\n \":not(.\" + this.group.options.placeholderClass + \", .\" + this.group.options.draggedClass + \")\"\r\n ).get()\r\n setDimensions(this.items, this.itemDimensions = [], this.options.tolerance)\r\n }\r\n return this.itemDimensions\r\n },\r\n getItemOffsetParent: function () {\r\n var offsetParent,\r\n el = this.el\r\n // Since el might be empty we have to check el itself and\r\n // can not do something like el.children().first().offsetParent()\r\n if(el.css(\"position\") === \"relative\" || el.css(\"position\") === \"absolute\" || el.css(\"position\") === \"fixed\")\r\n offsetParent = el\r\n else\r\n offsetParent = el.offsetParent()\r\n return offsetParent\r\n },\r\n hasChildGroup: function (index) {\r\n return this.options.nested && this.getContainerGroup(index)\r\n },\r\n getContainerGroup: function (index) {\r\n var childGroup = $.data(this.items[index], subContainerKey)\r\n if( childGroup === undefined){\r\n var childContainers = this.$getChildren(this.items[index], \"container\")\r\n childGroup = false\r\n\r\n if(childContainers[0]){\r\n var options = $.extend({}, this.options, {\r\n rootGroup: this.rootGroup,\r\n group: groupCounter ++\r\n })\r\n childGroup = childContainers[pluginName](options).data(pluginName).group\r\n }\r\n $.data(this.items[index], subContainerKey, childGroup)\r\n }\r\n return childGroup\r\n },\r\n $getChildren: function (parent, type) {\r\n var options = this.rootGroup.options,\r\n path = options[type + \"Path\"],\r\n selector = options[type + \"Selector\"]\r\n\r\n parent = $(parent)\r\n if(path)\r\n parent = parent.find(path)\r\n\r\n return parent.children(selector)\r\n },\r\n _serialize: function (parent, isContainer) {\r\n var that = this,\r\n childType = isContainer ? \"item\" : \"container\",\r\n\r\n children = this.$getChildren(parent, childType).not(this.options.exclude).map(function () {\r\n return that._serialize($(this), !isContainer)\r\n }).get()\r\n\r\n return this.rootGroup.options.serialize(parent, children, isContainer)\r\n },\r\n traverse: function(callback) {\r\n $.each(this.items || [], function(item){\r\n var group = $.data(this, subContainerKey)\r\n if(group)\r\n group.traverse(callback)\r\n });\r\n\r\n callback(this)\r\n },\r\n _clearDimensions: function () {\r\n this.itemDimensions = undefined\r\n },\r\n _destroy: function() {\r\n var that = this;\r\n\r\n this.target.off(eventNames.start, this.handle);\r\n this.el.removeData(pluginName)\r\n\r\n if(this.options.drop)\r\n this.group.containers = $.grep(this.group.containers, function(val){\r\n return val != that\r\n })\r\n\r\n $.each(this.items || [], function(){\r\n $.removeData(this, subContainerKey)\r\n })\r\n }\r\n }\r\n\r\n var API = {\r\n enable: function() {\r\n this.traverse(function(object){\r\n object.disabled = false\r\n })\r\n },\r\n disable: function (){\r\n this.traverse(function(object){\r\n object.disabled = true\r\n })\r\n },\r\n serialize: function () {\r\n return this._serialize(this.el, true)\r\n },\r\n refresh: function() {\r\n this.traverse(function(object){\r\n object._clearDimensions()\r\n })\r\n },\r\n destroy: function () {\r\n this.traverse(function(object){\r\n object._destroy();\r\n })\r\n }\r\n }\r\n\r\n $.extend(Container.prototype, API)\r\n\r\n /**\r\n * jQuery API\r\n *\r\n * Parameters are\r\n * either options on init\r\n * or a method name followed by arguments to pass to the method\r\n */\r\n $.fn[pluginName] = function(methodOrOptions) {\r\n var args = Array.prototype.slice.call(arguments, 1)\r\n\r\n return this.map(function(){\r\n var $t = $(this),\r\n object = $t.data(pluginName)\r\n\r\n if(object && API[methodOrOptions])\r\n return API[methodOrOptions].apply(object, args) || this\r\n else if(!object && (methodOrOptions === undefined ||\r\n typeof methodOrOptions === \"object\"))\r\n $t.data(pluginName, new Container($t, methodOrOptions))\r\n\r\n return this\r\n });\r\n };\r\n\r\n}(jQuery, window, 'wf_sortable');\r\n"]}
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":"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","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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["woo-feed-admin-pro.js"],"names":["$","window","on","sliders","slick","autoplay","dots","centerMode","length","slidesToScroll","lazyLoad","wp","ajax","wpf_ajax_obj"],"mappings":"cAQC,SAAAA,EAAAC,GAAAD,EAAAC,GAAAC,GAAA,OAAA,WAEG,IAAAC,EAAAH,EAAAA,gBAIIG,EAAIA,QAHED,EAAAA,MAAGE,CACTC,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).on('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 ));"]}
1
+ {"version":3,"sources":["woo-feed-admin-pro.js"],"names":["$","window","on","sliders","slick","autoplay","dots","centerMode","length","slidesToScroll","lazyLoad","wp","ajax","wpf_ajax_obj"],"mappings":"cAQC,SAAAA,EAAAC,GAAAD,EAAAC,GAAAC,GAAA,OAAA,WAEG,IAAAC,EAAAH,EAAAA,gBAIIG,EAAIA,QAHED,EAAAA,MAAGE,CACTC,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\n/**!\n * WooFeed Pro Scripts\n * @version 1.0.0\n * @package WooFeed\n * @copyright 2020 WebAppick\n *\n */\n(function ($, window, document, wpAjax, opts) {\n \"use strict\";\n /* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */\n $(window).on('load', function () {\n // noinspection ES6ConvertVarToLetConst,SpellCheckingInspection\n var sliders = $('.wapk-slider');\n if( sliders.length ) {\n sliders.slick({\n autoplay: true,\n dots: true,\n centerMode: true,\n arrows: false,\n slidesToShow: 1,\n slidesToScroll: 1,\n lazyLoad: 'progressive'\n });\n }\n } );\n}( jQuery, window, document, wp.ajax, wpf_ajax_obj ));"]}
admin/js/woo-feed-admin.js CHANGED
@@ -1095,4 +1095,16 @@
1095
  new WooFeedCustomFields( field, status, isTaxonomy );
1096
  });
1097
  });
 
 
 
 
 
 
 
 
 
 
 
 
1098
  })(jQuery, window, document, wp.ajax, wpf_ajax_obj);
1095
  new WooFeedCustomFields( field, status, isTaxonomy );
1096
  });
1097
  });
1098
+
1099
+ $(document).on('click', '#woo-feed-debug-log-download', function (e) {
1100
+ e.preventDefault();
1101
+ $("<a />", {
1102
+ download: new Date() + ".log",
1103
+ href: URL.createObjectURL(
1104
+ new Blob([$("#woo-feed-debug-log").val()], {
1105
+ type: "text/plain"
1106
+ })),
1107
+ }).appendTo("body")[0].click();
1108
+ });
1109
+
1110
  })(jQuery, window, document, wp.ajax, wpf_ajax_obj);
admin/js/woo-feed-admin.min.js CHANGED
@@ -1,2 +1,2 @@
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(s,o,r,i,c){s.fn.disabled=function(n){return s(this).each(function(){var e=s(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},s.fn.isDisabled=function(){var e=s(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function e(e){s(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function a(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function l(e,t){return s.extend(!0,{},e,t)}function t(){n=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?n.find("img").hide(0):(n.each(function(){s(this).on("mouseleave",e).on("blur",e)}),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!")}))}var n,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">'.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,o){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||a||9;e.wf_sortable(l({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"),s("body").removeClass(t.group.options.bodyClass),o&&"function"==typeof o&&o(e,t,n,a)}},n))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").each(function(){var e=s(this);e.selectize(l({create:e.data("create")||!1,plugins:e.data("plugins")?e.data("plugins").split(",").map(function(e){return e.trim()}):[],render:{item:_.selectize_render_item}},t))})},fancySelect:function(e,t){return(e||s("select.fancySelect")).not(".FancySelectInit").each(function(){s(this).fancySelect(l({maxItemShow:3},t))})},reindex_config_table:function(){s("#table-1").find("tbody tr").each(function(n,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(n,"]")))})})},common:function(){_.sortable(s(".sorted_table"),{},9,_.reindex_config_table),_.selectize(),_.fancySelect(s(".outputType"))}},f={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(_.common(),s(r).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,o){function e(e){var t;o.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(o[e]),"feed_file_type"===e&&((t=o[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=s(this);e.val()&&!_.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 o)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=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(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()}},u=[],p=[],h=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,o.isRegenerating=!1,this._all_btn=s(".wpf_regenerate"),this._current_btn=s("#".concat(this._feed.replace("wf_config","wf_feed_"))),this._current_btn_label=""}return _createClass(e,[{key:"init",value:function(){var n=this;""!==this._feed&&this._regenerate&&!1===o.isRegenerating&&this.generate();var e=o.location.search;return"webappick-manage-feeds"===new URLSearchParams(e).get("page")&&s("body").addClass("woo-import-popup-body"),s(r).on("click",".woo-feed-campaign-close-button",function(e){e.preventDefault(),s(this).parent(".woo-feed-promotion").hide();var t=s(this).data("condition");1===t&&i.post("woo_feed_hide_promotion",{_ajax_nonce:c.nonce,condition:t}).then(function(e){n._log(e)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red"})}),s(r).on("click",".wpf_regenerate",function(e){e.preventDefault(),n._current_btn=s(this),n._current_btn.hasClass("disabled")||!0===o.isRegenerating||(n._feed=n._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==n._feed&&n.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;o.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,i.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),i.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"),i.post("save_feed_file",{_ajax_nonce:c.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(o.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=s("#feed_progress_table");return e?t.show():t.hide(),this}},{key:"_updateProgressStatus",value:function(e){return s(".feed-progress-status").text(e),this}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),n="".concat(Math.round(this._progress),"%");t.css({width:n}),e.text(n)}}]),e}();o.wf={helper:_,feedEditor:f,generator:h},s(o).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=o.location.search;new URLSearchParams(e).get("action");t(),postboxes.add_postbox_toggles(pagenow),(new h).init(),""!==c.generator.feed&&c.generator.regenerate,f.init(),_.common(),s(".wfmasterTooltip").hover(function(){var e=s(this),t=e.attr("wftitle");e.data("tipText",t).removeAttr("wftitle"),s('<p class="wftooltip"></p>').text(t).appendTo("body").fadeIn("slow")},function(){var e=s(this);e.attr("wftitle",e.data("tipText")),s(".wftooltip").remove()}).mousemove(function(e){s(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),s(".generateFeed").validate(),s(r).on("click","[data-toggle_slide]",function(e){e.preventDefault(),s(s(this).data("toggle_slide")).slideToggle("fast")}).on("click","#wf_newRow",function(){var e=s("#table-1 tbody"),t=s("#feed_config_template").text().trim().replace(/__idx__/g,e.find("tr").length);e.append(t),_.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(c.form.del_confirm)&&(o.location.href=s(this).attr("val"))}).on("click",".wf_clean_cache_wrapper",function(e){e.preventDefault();var t=s(".woo-feed-clean-cache-nonce").val(),n=s(".woo-feed-cache-loader");n.show(),i.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&(n.hide(),location.reload())}).fail(function(e){console.log("something wrong")})}).on("click","#woo-feed-copy-status-btn",function(e){e.preventDefault();var t=s("#woo-feed-copy-status-btn"),n=s("#woo-feed-status-area");t.val("Copied"),n.css("visibility","visible"),n.select(),r.execCommand("copy")}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,a=s(this).val(),o=s(this).parents("tr").find(".outputType"),r=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),i=s(this).parents("tr").find(".fancy-picker-data span");n=["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax","shipping_cost"].includes(a)?(t="for_price","Price"):""!==a&&-1!==a.indexOf("wf_taxo")?(t="for_custom_taxo","parent_if_empty"):(t="for_all","Default"),r.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||r.each(function(e){n===s(this).text()&&(s(this).addClass("selected"),i.text(n),o.find("option").text(n),o.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(c.form.del_confirm_multi)}).on("change",".dType",function(){var e=s(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(),s(this).closest("tr").remove(),_.reindex_config_table()}).on("submit","#generateFeed",function(){s(this).validate(),s(this).valid()&&s(".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){s(this).validate(),s(this).valid()&&s(".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=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(c.form.sftp_checking),i.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(),_.ajax_fail(e)})):t.hide()}).on("click",'[name="save_feed_config"]',function(e){e.preventDefault(),s("#updatefeed").trigger("submit",{save:!0})}).on("change","#provider",function(e){e.preventDefault();var t=s(this).val(),n=s("#feedType"),a=s("#providerPage"),o=s("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+c.form.loading_tmpl+"</h3>"),o.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),o.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?f.renderMerchantInfo(o,n,u[t]):i.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:c.nonce,provider:t}}).then(function(e){u[t]=e,f.renderMerchantInfo(o,n,e)}).fail(_.ajax_fail),p.hasOwnProperty(t)?f.renderMerchantTemplate(a,p[t]):i.post("get_feed_merchant",{_ajax_nonce:c.nonce,merchant:t}).then(function(e){p[t]=e,f.renderMerchantTemplate(a,e),"bing"===t&&(s("#delimiter option").removeAttr("selected"),s('#delimiter option[value="tab"]').attr("selected","selected"),s("#enclosure option").removeAttr("selected"),s('#enclosure option[value=" "]').attr("selected","selected")),"google_product_review"!==t&&s('.wf_attributes option[value="reviewer_name"]').hide()}).fail(_.ajax_fail)}).on("change",".woo_feed_status_input",function(){var e=s(this);i.post("update_feed_status",{_ajax_nonce:c.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(r).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){var e=s(".out-of-stock-visibility");"n"===s('[name="is_outOfStock"]:checked').val()&&"1"===s('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=s(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=s(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),a=e.find("td:eq(4)"),o=s("#provider").val();if(c.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&_.in_array(o,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>")),d||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var r=a.find(".wf_attributes select");_.selectize(r,{preload:!0,placeholder:c.form.select_category,load:function(e,t){d?t(d):i.send("get_google_categories",{type:"GET",data:{_ajax_nonce:c.nonce,action:"get_google_categories",provider:o}}).then(function(e){t(d=e),a.find(".spinner").remove()}).fail(_.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(e){var t=s("#feedType").val(),n=s("#provider").val(),a=s(".itemWrapper"),o=s(".wf_csvtxt");""!==t&&_.in_array(n,c.form.item_wrapper_hidden)&&a.hide(),"feedType"===e.target.id&&("csv"===t||"txt"===t||"tsv"===t?(a.hide(),o.show(),"tsv"===t?s("#delimiter option:last").prop("selected","selected"):"csv"===t&&s("#delimiter option:first").prop("selected","selected")):"xml"===t&&(a.show(),o.hide()))}).trigger("change");var a=function(){function a(e,t,n){_classCallCheck(this,a),this.productCustomFields(e,t,n)}return _createClass(a,[{key:"cacheClear",value:function(){var e={action:"woo_feed_product_attribute_cache_remove",nonce:wpf_ajax_obj.ajax.nonce};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:e})}},{key:"productCustomFields",value:function(e,t,n){var a=this,o=1<arguments.length&&void 0!==t&&t,r=2<arguments.length?n:void 0,i={action:"woo_feed_custom_fields_status_change",nonce:wpf_ajax_obj.ajax.nonce,field:e,status:o,isTaxonomy:r};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:i,success:function(e){e.success?a.cacheClear():console.log(e)}})}}]),a}();s(r).on("click",'.woofeed-custom-fields [id*="-switcher"]',function(){var e=s(this).attr("id").split("-")[0],t=s(this).data("taxonomy"),n=s(this).prop("checked");new a(e,n,t)})})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
  //# sourceMappingURL=woo-feed-admin.min.js.map
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(s,o,r,i,c){s.fn.disabled=function(n){return s(this).each(function(){var e=s(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},s.fn.isDisabled=function(){var e=s(this),t="disabled";return void 0!==e.prop(t)?e.prop(t):e.hasClass(t)};function e(e){s(e.currentTarget).removeClass(function(e,t){return(t.match(/\btooltipped-\S+/g)||[]).join(" ")}).removeClass("tooltipped").removeAttr("aria-label")}function a(e,t){s(e).addClass("tooltipped tooltipped-s").attr("aria-label",t)}function l(e,t){return s.extend(!0,{},e,t)}function t(){n=s(".toClipboard"),!ClipboardJS.isSupported()||/iPhone|iPad/i.test(navigator.userAgent)?n.find("img").hide(0):(n.each(function(){s(this).on("mouseleave",e).on("blur",e)}),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!")}))}var n,d,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,o){return(e||s(".sorted_table")).each(function(){var e=s(this),t=e.find("tbody > tr:eq(0) > td").length||a||9;e.wf_sortable(l({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"),s("body").removeClass(t.group.options.bodyClass),o&&"function"==typeof o&&o(e,t,n,a)}},n))})},selectize:function(e,t){return(e||s("select.selectize")).not(".selectized").each(function(){var e=s(this);e.selectize(l({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||s("select.fancySelect")).not(".FancySelectInit").each(function(){s(this).fancySelect(l({maxItemShow:3},t))})},reindex_config_table:function(){s("#table-1").find("tbody tr").each(function(n,e){s(e).find("[name]").each(function(e,t){s(t).attr("name",s(t).attr("name").replace(/(\[\d\])/g,"[".concat(n,"]")))})})},common:function(){f.sortable(s(".sorted_table"),{},9,f.reindex_config_table),f.selectize(),f.fancySelect(s(".outputType"))}},_={form:null,init:function(){this.form=s(".generateFeed"),this.form.length&&(f.common(),s(r).trigger(new jQuery.Event("feedEditor.init",{target:this.form})))},renderMerchantInfo:function(n,a,o){function e(e){var t;o.hasOwnProperty(e)&&(n.find(".merchant-info-section."+e+" .data").html(o[e]),"feed_file_type"===e&&((t=o[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=s(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 o)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=s('[name="'+t+'"]');e.length&&e.each(function(){var e=s(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);_.init()}},u=[],p=[],h=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,o.isRegenerating=!1,this._all_btn=s(".wpf_regenerate"),this._current_btn=s("#".concat(this._feed.replace("wf_config","wf_feed_"))),this._current_btn_label=""}return _createClass(e,[{key:"init",value:function(){var n=this;""!==this._feed&&this._regenerate&&!1===o.isRegenerating&&this.generate();var e=o.location.search;return"webappick-manage-feeds"===new URLSearchParams(e).get("page")&&s("body").addClass("woo-import-popup-body"),s(r).on("click",".woo-feed-campaign-close-button",function(e){e.preventDefault(),s(this).parent(".woo-feed-promotion").hide();var t=s(this).data("condition");1===t&&i.post("woo_feed_hide_promotion",{_ajax_nonce:c.nonce,condition:t}).then(function(e){n._log(e)}).fail(function(e){n._log(e),n._updateProgressStatus(e.message),n._color="red"})}),s(r).on("click",".wpf_regenerate",function(e){e.preventDefault(),n._current_btn=s(this),n._current_btn.hasClass("disabled")||!0===o.isRegenerating||(n._feed=n._current_btn.attr("id").replace("wf_feed_","wf_config"),""!==n._feed&&n.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;o.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,i.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),i.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"),i.post("save_feed_file",{_ajax_nonce:c.nonce,feed:this._feed}).then(function(e){t._log(e),t._progress=100,t._refresh&&(o.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=s("#feed_progress_table");return e?t.show():t.hide(),this}},{key:"_updateProgressStatus",value:function(e){return s(".feed-progress-status").text(e),this}},{key:"_updateProgressBar",value:function(){var e=s(".feed-progress-percentage"),t=s(".feed-progress-bar-fill"),n="".concat(Math.round(this._progress),"%");t.css({width:n}),e.text(n)}}]),e}();o.wf={helper:f,feedEditor:_,generator:h},s(o).on("load",function(){null!==s(location).attr("href").match(/webappick.*feed/g)&&s("#wpbody-content").addClass("woofeed-body-content");var e=o.location.search;new URLSearchParams(e).get("action");t(),postboxes.add_postbox_toggles(pagenow),(new h).init(),""!==c.generator.feed&&c.generator.regenerate,_.init(),f.common(),s(".wfmasterTooltip").hover(function(){var e=s(this),t=e.attr("wftitle");e.data("tipText",t).removeAttr("wftitle"),s('<p class="wftooltip"></p>').text(t).appendTo("body").fadeIn("slow")},function(){var e=s(this);e.attr("wftitle",e.data("tipText")),s(".wftooltip").remove()}).mousemove(function(e){s(".wftooltip").css({top:e.pageY+10,left:e.pageX+20})}),s(".generateFeed").validate(),s(r).on("click","[data-toggle_slide]",function(e){e.preventDefault(),s(s(this).data("toggle_slide")).slideToggle("fast")}).on("click","#wf_newRow",function(){var e=s("#table-1 tbody"),t=s("#feed_config_template").text().trim().replace(/__idx__/g,e.find("tr").length);e.append(t),f.fancySelect(s(".outputType"))}).on("click",".single-feed-delete",function(e){e.preventDefault(),confirm(c.form.del_confirm)&&(o.location.href=s(this).attr("val"))}).on("click",".wf_clean_cache_wrapper",function(e){e.preventDefault();var t=s(".woo-feed-clean-cache-nonce").val(),n=s(".woo-feed-cache-loader");n.show(),i.post("clear_cache_data",{_ajax_clean_nonce:t}).then(function(e){e.success&&(n.hide(),location.reload())}).fail(function(e){console.log("something wrong")})}).on("click","#woo-feed-copy-status-btn",function(e){e.preventDefault();var t=s("#woo-feed-copy-status-btn"),n=s("#woo-feed-status-area");t.val("Copied"),n.css("visibility","visible"),n.select(),r.execCommand("copy")}).on("change",".wf_attr.wf_attributes",function(e){e.preventDefault(),s(".fancy-picker-picked").trigger("click");var t,n,a=s(this).val(),o=s(this).parents("tr").find(".outputType"),r=s(this).parents("tr").find(".fancy-picker-content .fancy-picker-option"),i=s(this).parents("tr").find(".fancy-picker-data span");n=["price","current_price","sale_price","price_with_tax","current_price_with_tax","sale_price_with_tax","shipping_cost"].includes(a)?(t="for_price","Price"):""!==a&&-1!==a.indexOf("wf_taxo")?(t="for_custom_taxo","parent_if_empty"):(t="for_all","Default"),r.removeClass("selected"),"for_custom_taxo"!==t&&"for_price"!==t||r.each(function(e){n===s(this).text()&&(s(this).addClass("selected"),i.text(n),o.find("option").text(n),o.find("option").val(s(this).data("value")))})}).on("click","#doaction, #doaction2",function(){return confirm(c.form.del_confirm_multi)}).on("change",".dType",function(){var e=s(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(),s(this).closest("tr").remove(),f.reindex_config_table()}).on("submit","#generateFeed",function(){s(this).validate(),s(this).valid()&&s(".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){s(this).validate(),s(this).valid()&&s(".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=s(this).val(),t=s(".ssh2_status");"sftp"===e?(t.show().css("color","dodgerblue").text(c.form.sftp_checking),i.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(),s("#updatefeed").trigger("submit",{save:!0})}).on("change","#provider",function(e){e.preventDefault();var t=s(this).val(),n=s("#feedType"),a=s("#providerPage"),o=s("#feed_merchant_info");a.html('<h3><span style="float:none;margin: -3px 0 0;" class="spinner is-active"></span> '+c.form.loading_tmpl+"</h3>"),o.find(".spinner").addClass("is-active"),n.disabled(!0),n.parent().find(".spinner").addClass("is-active"),o.find(".merchant-info-section .data").html(""),u.hasOwnProperty(t)?_.renderMerchantInfo(o,n,u[t]):i.send("woo_feed_get_merchant_info",{type:"GET",data:{nonce:c.nonce,provider:t}}).then(function(e){u[t]=e,_.renderMerchantInfo(o,n,e)}).fail(f.ajax_fail),p.hasOwnProperty(t)?_.renderMerchantTemplate(a,p[t]):i.post("get_feed_merchant",{_ajax_nonce:c.nonce,merchant:t}).then(function(e){p[t]=e,_.renderMerchantTemplate(a,e),"bing"===t&&(s("#delimiter option").removeAttr("selected"),s('#delimiter option[value="tab"]').attr("selected","selected"),s("#enclosure option").removeAttr("selected"),s('#enclosure option[value=" "]').attr("selected","selected")),"google_product_review"!==t&&s('.wf_attributes option[value="reviewer_name"]').hide()}).fail(f.ajax_fail)}).on("change",".woo_feed_status_input",function(){var e=s(this);i.post("update_feed_status",{_ajax_nonce:c.nonce,feedName:e.val(),status:e[0].checked?1:0})}),s(r).on("change",'[name="is_outOfStock"], [name="product_visibility"]',function(){var e=s(".out-of-stock-visibility");"n"===s('[name="is_outOfStock"]:checked').val()&&"1"===s('[name="product_visibility"]:checked').val()?e.show():e.hide()}).on("change",".attr_type",function(){var e=s(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=s(this).closest("tr"),t=e.find(".wf_mattributes"),n=e.find(".attr_type"),a=e.find("td:eq(4)"),o=s("#provider").val();if(c.form.google_category.hasOwnProperty(t.val())&&"pattern"===n.val()&&f.in_array(o,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>")),d||a.append('<span class="spinner is-active" style="margin: 0;"></span>');var r=a.find(".wf_attributes select");f.selectize(r,{preload:!0,placeholder:c.form.select_category,load:function(e,t){d?t(d):i.send("get_google_categories",{type:"GET",data:{_ajax_nonce:c.nonce,action:"get_google_categories",provider:o}}).then(function(e){t(d=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(e){var t=s("#feedType").val(),n=s("#provider").val(),a=s(".itemWrapper"),o=s(".wf_csvtxt");""!==t&&f.in_array(n,c.form.item_wrapper_hidden)&&a.hide(),"feedType"===e.target.id&&("csv"===t||"txt"===t||"tsv"===t?(a.hide(),o.show(),"tsv"===t?s("#delimiter option:last").prop("selected","selected"):"csv"===t&&s("#delimiter option:first").prop("selected","selected")):"xml"===t&&(a.show(),o.hide()))}).trigger("change");var a=function(){function a(e,t,n){_classCallCheck(this,a),this.productCustomFields(e,t,n)}return _createClass(a,[{key:"cacheClear",value:function(){var e={action:"woo_feed_product_attribute_cache_remove",nonce:wpf_ajax_obj.ajax.nonce};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:e})}},{key:"productCustomFields",value:function(e,t,n){var a=this,o=1<arguments.length&&void 0!==t&&t,r=2<arguments.length?n:void 0,i={action:"woo_feed_custom_fields_status_change",nonce:wpf_ajax_obj.ajax.nonce,field:e,status:o,isTaxonomy:r};s.ajax({method:"POST",url:wpf_ajax_obj.wpf_ajax_url,data:i,success:function(e){e.success?a.cacheClear():console.log(e)}})}}]),a}();s(r).on("click",'.woofeed-custom-fields [id*="-switcher"]',function(){var e=s(this).attr("id").split("-")[0],t=s(this).data("taxonomy"),n=s(this).prop("checked");new a(e,n,t)})}),s(r).on("click","#woo-feed-debug-log-download",function(e){e.preventDefault(),s("<a />",{download:new Date+".log",href:URL.createObjectURL(new Blob([s("#woo-feed-debug-log").val()],{type:"text/plain"}))}).appendTo("body")[0].click()})}(jQuery,window,document,wp.ajax,wpf_ajax_obj);
2
  //# sourceMappingURL=woo-feed-admin.min.js.map
admin/js/woo-feed-admin.min.js.map CHANGED
@@ -1 +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","condition","then","_current_btn_label","response","_color","preventDefault","parent","hide","_ajax_nonce","_log","_updateProgressStatus","message","key","regenerate","_block_button","value","_this","product","setTimeout","_stopProgressBar","_process_batch","_current_batch","_total_batch","post","_save_feed_file","fail","_resetProgressBar","_unblock_button","refreshInterval","arguments","undefined","clearInterval","_timer","_updateProgressBar","update","table","show","width","bar","wf","current_page_url_query","postboxes","location","setInterval","URLSearchParams","pagenow","template","common","hover","title","appendTo","userAgent","merchantTemplateCache","remove","ClipboardJS","clipboard","slideToggle","loader","tbody","reload","nonce","status_area","select","execCommand","button","fancyOption","fancyDataPicker","selectIf","price_attributes","selectKey","percentage","outputSelect","parents","includes","current_attribute_value","indexOf","del_confirm_multi","row","closest","reindex_config_table","type","_ajax_clean_nonce","server","validate","save","sftp_checking","sftp_available","provider","merchant","outOfStockVisibilityRow","feedName","checked","valueColumn","append","preload","load","google_category","query","attribute","cb","send","itemWrapper","item_wrapper_hidden","WooFeedCustomFields","productCustomFields","url","_classCallCheck","field","isTaxonomy","_this2","wpf_ajax_obj","success","log"],"mappings":"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","file":"woo-feed-admin.min.js","sourcesContent":["// noinspection JSUnresolvedletiable\r\n/**!\r\n * WooFeed Scripts\r\n * @version 3.3.6\r\n * @package WooFeed\r\n * @copyright 2020 WebAppick\r\n *\r\n */\r\n/* global ajaxurl, wpAjax, postboxes, pagenow, alert, deleteUserSetting, typenow, adminpage, thousandsSeparator, decimalPoint, isRtl */\r\n// noinspection JSUnresolvedVariable\r\n(function($, window, document, wpAjax, opts) {\r\n\t\"use strict\";\r\n\t/**\r\n\t * All of the code for your admin-facing JavaScript source\r\n\t * should reside in this file.\r\n\t *\r\n\t * Note: It has been assumed you will write jQuery code here, so the\r\n\t * $ function reference has been prepared for usage within the scope\r\n\t * of this function.\r\n\t *\r\n\t * This enables you to define handlers, for when the DOM is ready:\r\n\t */\r\n\r\n\t/**\r\n\t * disable element utility\r\n\t *\r\n\t * @since 3.1.9\r\n\t *\r\n\t * @param {*} status\r\n\t * @returns {jQuery|HTMLElement}\r\n\t */\r\n\t$.fn.disabled = function(status) {\r\n\t\t$(this).each(function() {\r\n\t\t\tlet self = $(this),\r\n\t\t\t\tprop = 'disabled';\r\n\r\n\t\t\tif (typeof self.prop(prop) !== 'undefined') {\r\n\t\t\t\tself.prop(prop, status === void 0 || status === true);\r\n\t\t\t} else {\r\n\t\t\t\t!0 === status ? self.addClass(prop) : self.removeClass(prop);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn self; // method chaining\r\n\t};\r\n\t\r\n\t/**\r\n\t * Check if a HTMLElement or jQuery is disabled\r\n\t */\r\n\t$.fn.isDisabled = function() {\r\n\t\tlet self = $(this),\r\n\t\t\tprop = 'disabled';\r\n\t\treturn typeof self.prop(prop) !== 'undefined' ? self.prop(prop) : self.hasClass(prop);\r\n\t};\r\n\t\r\n\t/**\r\n\t * Clear Tooltip for clip board js\r\n\t * @param {Object} event\r\n\t */\r\n\tconst clearTooltip = (event) => {\r\n\t\t$(event.currentTarget).removeClass( (index, className) => (className.match(/\\btooltipped-\\S+/g) || []).join(' ') ).removeClass('tooltipped').removeAttr('aria-label');\r\n\t};\r\n\r\n\tconst showTooltip = (elem, msg) => {\r\n\t\t$(elem).addClass('tooltipped tooltipped-s').attr('aria-label', msg);\r\n\t};\r\n\r\n\tconst fallbackMessage = (action) =>{\r\n\t\tlet actionMsg,\r\n\t\t\tactionKey = action === 'cut' ? 'X' : 'C';\r\n\r\n\t\tif (/iPhone|iPad/i.test(navigator.userAgent)) {\r\n\t\t\tactionMsg = 'No support :(';\r\n\t\t} else if (/Mac/i.test(navigator.userAgent)) {\r\n\t\t\tactionMsg = 'Press ⌘-' + actionKey + ' to ' + action;\r\n\t\t} else {\r\n\t\t\tactionMsg = 'Press Ctrl-' + actionKey + ' to ' + action;\r\n\t\t}\r\n\r\n\t\treturn actionMsg;\r\n\t};\r\n\t\r\n\t/**\r\n\t * Alias of jQuery.extend()\r\n\t * @param {Object} _default\r\n\t * @param {Object} _args\r\n\t */\r\n\tconst extend = (_default, _args) => $.extend(true, {}, _default, _args);\r\n\t\r\n\tlet $copyBtn,\r\n\t\tclipboard,\r\n\t\tgoogleCategories,\r\n\t\thelper = {\r\n\t\t\tin_array: (needle, haystack) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn haystack.indexOf(needle) !== -1;\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tselectize_render_item: (data, escape) => `<div class=\"item wapk-selectize-item\">${ escape(data.text)}</div>`, // phpcs:ignore WordPressVIPMinimum.JS.StringConcat.Found,\r\n\t\t\tajax_fail: e => {\r\n\t\t\t\tconsole.warn(e);\r\n\t\t\t\talert(e.hasOwnProperty('statusText') && e.hasOwnProperty('status') ? opts.ajax.error + '\\n' + e.statusText + ' (' + e.status + ')' : e);\r\n\t\t\t},\r\n\t\t\t/**\r\n\t\t\t * Initialize Sortable\r\n\t\t\t * @param {jQuery|HTMLElement} el\r\n\t\t\t * @param {object} config\r\n\t\t\t * @param {int|boolean} column\r\n\t\t\t * @param {function} onDrop\r\n\t\t\t * @return {jQuery|HTMLElement}\r\n\t\t\t */\r\n\t\t\tsortable: (el, config, column, onDrop) => {\r\n\t\t\t\treturn (el || $('.sorted_table')).each(function() {\r\n\t\t\t\t\tlet self = $(this),\r\n\t\t\t\t\t\tcolumn_count = self.find('tbody > tr:eq(0) > td').length || column || 9;\r\n\t\t\t\t\tself.wf_sortable(extend({\r\n\t\t\t\t\t\tcontainerSelector: 'table',\r\n\t\t\t\t\t\titemPath: '> tbody',\r\n\t\t\t\t\t\titemSelector: 'tr',\r\n\t\t\t\t\t\thandle: 'i.wf_sortedtable',\r\n\t\t\t\t\t\tplaceholder: `<tr class=\"placeholder\"><td colspan=\"${column_count}\"></td></tr>`,\r\n\t\t\t\t\t\tonDrop: ($item, container, _super, event) => {\r\n\t\t\t\t\t\t\t$item.removeClass(container.group.options.draggedClass).removeAttr('style');\r\n\t\t\t\t\t\t\t$(\"body\").removeClass(container.group.options.bodyClass);\r\n\t\t\t\t\t\t\tif ( onDrop && 'function' === typeof( onDrop ) ) {\r\n\t\t\t\t\t\t\t\tonDrop( $item, container, _super, event );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}, config));\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tselectize: (el, config) => {\r\n\t\t\t\treturn (el || $('select.selectize')).not('.selectized').each(function() {\r\n\t\t\t\t\tlet self = $(this);\r\n\t\t\t\t\tself.selectize(extend({\r\n\t\t\t\t\t\tcreate: self.data('create') || false,\r\n\t\t\t\t\t\tplugins: self.data('plugins') ? self.data('plugins').split(',').map(function(s) {\r\n\t\t\t\t\t\t\treturn s.trim();\r\n\t\t\t\t\t\t}) : [],\r\n\t\t\t\t\t\t//['remove_button'],\r\n\t\t\t\t\t\trender: {\r\n\t\t\t\t\t\t\titem: helper.selectize_render_item\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, config));\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tfancySelect: (el, config) => {\r\n\t\t\t\treturn (el || $('select.fancySelect')).not('.FancySelectInit').each(function() {\r\n\t\t\t\t\tlet self = $(this);\r\n\t\t\t\t\tself.fancySelect(extend({\r\n\t\t\t\t\t\tmaxItemShow: 3\r\n\t\t\t\t\t}, config));\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\treindex_config_table: () => {\r\n\t\t\t\t$('#table-1').find('tbody tr').each( ( x, el ) => {\r\n\t\t\t\t\t$(el).find('[name]').each( ( x1, el ) => {\r\n\t\t\t\t\t\t$(el).attr('name', $(el).attr('name').replace(/(\\[\\d\\])/g, `[${x}]`));\r\n\t\t\t\t\t} );\r\n\t\t\t\t} );\r\n\t\t\t},\r\n\t\t\tcommon: () => {\r\n\t\t\t\thelper.sortable( $('.sorted_table'), {}, 9, helper.reindex_config_table );\r\n\t\t\t\thelper.selectize();\r\n\t\t\t\thelper.fancySelect($('.outputType'));\r\n\t\t\t}\r\n\t\t},\r\n\t\t// helper functions\r\n\t\tfeedEditor = {\r\n\t\t\t/**\r\n\t\t\t * The Editor Form Elem.\r\n\t\t\t * @type {jQuery|HTMLElement}\r\n\t\t\t */\r\n\t\t\tform: null,\r\n\r\n\t\t\t/**\r\n\t\t\t * Initialize The Feed Editor {Tabs...}\r\n\t\t\t * @returns {void}\r\n\t\t\t */\r\n\t\t\tinit: function () {\r\n\t\t\t\tlet self = this;\r\n\t\t\t\tself.form = $('.generateFeed');\r\n\t\t\t\tif (!self.form.length) return;\r\n\t\t\t\thelper.common();\r\n\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\t$(document).trigger(new jQuery.Event('feedEditor.init', {\r\n\t\t\t\t\ttarget: this.form\r\n\t\t\t\t}));\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Render Merchant info ajax response and handle allowed feed type for selected merchant\r\n\t\t\t * @param {jQuery|HTMLElement} merchantInfo jQuery dom object\r\n\t\t\t * @param {jQuery|HTMLElement} feedType jQuery dom object\r\n\t\t\t * @param {Object} r ajax response object\r\n\t\t\t */\r\n\t\t\trenderMerchantInfo: function (merchantInfo, feedType, r) {\r\n\t\t\t\tfor (let k in r) {\r\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\r\n\t\t\t\t\t\tmerchantInfo.find('.merchant-info-section.' + k + ' .data').html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\r\n\r\n\t\t\t\t\t\tif ('feed_file_type' === k) {\r\n\t\t\t\t\t\t\t(function() {\r\n\t\t\t\t\t\t\t\tlet types = r[k].split(\",\").map(function(t) {\r\n\t\t\t\t\t\t\t\t\treturn t.trim().toLowerCase();\r\n\t\t\t\t\t\t\t\t}).filter(function(t) {\r\n\t\t\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\t\t\t\t\t\treturn t !== '' && t !== opts.na.toLowerCase();\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tif (types.length) {\r\n\t\t\t\t\t\t\t\t\tfeedType.find('option').removeAttr('selected').each(function() {\r\n\t\t\t\t\t\t\t\t\t\tlet opt = $(this);\r\n\t\t\t\t\t\t\t\t\t\topt.val() && !helper.in_array(opt.val(), types) ? opt.disabled(!0) : opt.disabled(!1);\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tif (types.length === 1) feedType.find('option[value=\"' + types[0] + '\"]').attr('selected', 'selected');\r\n\t\t\t\t\t\t\t\t} else feedType.find('option').disabled(!1);\r\n\t\t\t\t\t\t\t})();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmerchantInfo.find('.spinner').removeClass('is-active');\r\n\t\t\t\tfeedType.disabled(!1);\r\n\t\t\t\tfeedType.trigger('change');\r\n\t\t\t\tfeedType.parent().find('.spinner').removeClass('is-active');\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t * Render Feed Template Tabs and settings while creating new feed.\r\n\t\t\t * @param {jQuery|HTMLElement} feedForm feed from query dom object\r\n\t\t\t * @param {object} r merchant template ajax response object\r\n\t\t\t */\r\n\t\t\trenderMerchantTemplate: function (feedForm, r) {\r\n\t\t\t\tlet _loop = function _loop(k) {\r\n\t\t\t\t\tif (r.hasOwnProperty(k)) {\r\n\t\t\t\t\t\tif ('tabs' === k) {\r\n\t\t\t\t\t\t\t// noinspection JSUnresolvedFunction\r\n\t\t\t\t\t\t\tfeedForm.html(r[k]); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlet contentSettings = $('[name=\"' + k + '\"]');\r\n\r\n\t\t\t\t\t\t\tif (contentSettings.length) {\r\n\t\t\t\t\t\t\t\tcontentSettings.each(function() {\r\n\t\t\t\t\t\t\t\t\tlet elem = $(this);\r\n\r\n\t\t\t\t\t\t\t\t\tif (elem.is('select')) {\r\n\t\t\t\t\t\t\t\t\t\telem.find('[value=\"' + r[k] + '\"]').prop('selected', true);\r\n\t\t\t\t\t\t\t\t\t} else if ((elem.is('[type=checkbox]') || elem.is('[type=radio]')) && elem.val() === r[k]) {\r\n\t\t\t\t\t\t\t\t\t\telem.prop('checked', true);\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\telem.val(r[k]); // type=text\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}).trigger('change');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tfor (let k in r) {\r\n\t\t\t\t\t_loop(k);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfeedEditor.init();\r\n\t\t\t}\r\n\t\t},\r\n\t\t// Feed Editor Table\r\n\t\tmerchantInfoCache = [],\r\n\t\tmerchantTemplateCache = [],\r\n\t\ttooltip = () => {\r\n\t\t\t// Tooltip only Text\r\n\t\t\t$('.wfmasterTooltip')\r\n\t\t\t\t.hover(function () {\r\n\t\t\t\t\t// Hover over code\r\n\t\t\t\t\tlet self = $(this), title = self.attr('wftitle');\r\n\t\t\t\t\tself.data('tipText', title).removeAttr('wftitle');\r\n\t\t\t\t\t$('<p class=\"wftooltip\"></p>').text(title).appendTo('body').fadeIn('slow');\r\n\t\t\t\t}, function () {\r\n\t\t\t\t\t// Hover out code\r\n\t\t\t\t\tlet self = $(this);\r\n\t\t\t\t\tself.attr('wftitle', self.data('tipText'));\r\n\t\t\t\t\t$('.wftooltip').remove();\r\n\t\t\t\t})\r\n\t\t\t\t.mousemove(function (e) {\r\n\t\t\t\t\t$('.wftooltip').css({\r\n\t\t\t\t\t\ttop: e.pageY + 10,\r\n\t\t\t\t\t\tleft: e.pageX + 20\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t},\r\n\t\tclip = () => {\r\n\t\t\t$copyBtn = $('.toClipboard');\r\n\t\t\tif (!ClipboardJS.isSupported() || /iPhone|iPad/i.test(navigator.userAgent)) {\r\n\t\t\t\t$copyBtn.find('img').hide(0);\r\n\t\t\t} else {\r\n\t\t\t\t$copyBtn.each(function() {\r\n\t\t\t\t\t$(this).on('mouseleave', clearTooltip).on('blur', clearTooltip);\r\n\t\t\t\t});\r\n\t\t\t\tclipboard = new ClipboardJS('.toClipboard');\r\n\t\t\t\tclipboard.on('error', function(event) {\r\n\t\t\t\t\tshowTooltip(event.trigger, fallbackMessage(event.action));\r\n\t\t\t\t}).on('success', function(event) {\r\n\t\t\t\t\tshowTooltip(event.trigger, 'Copied!');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t/**\r\n\t * Feed Generator Module\r\n\t */\r\n\tclass feedGenerator {\r\n\t\t\r\n\t\t/**\r\n\t\t * Constructor\r\n\t\t * @constructor\r\n\t\t */\r\n\t\tconstructor() {\r\n\t\t\tthis._feed = opts.generator.feed; // wf_config+xxxx\r\n\t\t\tthis._limit = opts.generator.limit;\r\n\t\t\tthis._progress = 0;\r\n\t\t\tthis._timer = null;\r\n\t\t\tthis._color = false;\r\n\t\t\t// batch info\r\n\t\t\tthis._total_batch = 0;\r\n\t\t\tthis._current_batch = 0;\r\n\t\t\tthis._product_ids = [];\r\n\t\t\tthis._progress_per_batch = 0;\r\n\t\t\tthis._refresh = true;\r\n\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\tthis._regenerate = opts.generator.regenerate;\r\n\t\t\twindow.isRegenerating = false;\r\n\t\t\tthis._all_btn = $('.wpf_regenerate');\r\n\t\t\tthis._current_btn = $(`#${this._feed.replace( 'wf_config', 'wf_feed_' )}`);\r\n\t\t\tthis._current_btn_label = '';\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Init Hooks (Event)\r\n\t\t * @return {feedGenerator}\r\n\t\t */\r\n\t\tinit() {\r\n\t\t\tlet self = this;\r\n\t\t\tif ( '' !== this._feed && this._regenerate && false === window.isRegenerating ) {\r\n\t\t\t\tthis.generate();\r\n\t\t\t}\r\n\r\n\t\t\t//thickbox body add feed plugin class to make it unique and custom style\r\n\t\t\tlet current_page_query = window.location.search;\r\n\t\t\tlet params = new URLSearchParams(current_page_query);\r\n\t\t\tlet page_name = params.get(\"page\");\r\n\t\t\tif( \"webappick-manage-feeds\" === page_name ) {\r\n\t\t\t\t$('body').addClass('woo-import-popup-body');\r\n\t\t\t}\r\n\r\n\t\t\t$(document).on('click', '.woo-feed-campaign-close-button', function(event) {\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t$(this).parent('.woo-feed-promotion').hide();\r\n\t\t\t\tlet condition = $(this).data('condition');\r\n\t\t\t\tif(1 === condition) {\r\n\t\t\t\t\twpAjax.post( 'woo_feed_hide_promotion', {\r\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\t\t\tcondition: condition,\r\n\t\t\t\t\t} ).then( response => {\r\n\t\t\t\t\t\tself._log( response );\r\n\t\t\t\t\t} ).fail( error => {\r\n\t\t\t\t\t\tself._log( error );\r\n\t\t\t\t\t\tself._updateProgressStatus( error.message );\r\n\t\t\t\t\t\tself._color = 'red';\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t$(document).on('click', '.wpf_regenerate', function(event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tself._current_btn = $( this );\r\n\t\t\t\tif( self._current_btn.hasClass('disabled') || window.isRegenerating === true ) return;\r\n\t\t\t\tself._feed = self._current_btn.attr('id').replace( 'wf_feed_', 'wf_config' );\r\n\t\t\t\tif( '' !== self._feed ) {\r\n\t\t\t\t\tself.generate();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t\r\n\t\t_block_button() {\r\n\t\t\tif ( this._all_btn.length ) {\r\n\t\t\t\tthis._all_btn.addClass('disabled');\r\n\t\t\t}\r\n\t\t\tif ( this._current_btn.length ) {\r\n\t\t\t\tthis._current_btn.find('span').addClass('wpf_spin reverse_spin');\r\n\t\t\t\tthis._current_btn_label = this._current_btn.attr('title');\r\n\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\tthis._current_btn.attr( 'aria-label', opts.regenerate ).attr( 'title', opts.regenerate );\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t_unblock_button() {\r\n\t\t\tif ( this._all_btn.length ) {\r\n\t\t\t\tthis._all_btn.removeClass('disabled');\r\n\t\t\t}\r\n\t\t\tif ( this._current_btn.length ) {\r\n\t\t\t\tthis._current_btn.find('span').removeClass('wpf_spin');\r\n\t\t\t\tthis._current_btn.find('span').removeClass('reverse_spin');\r\n\t\t\t\tthis._current_btn.attr( 'aria-label', this._current_btn_label ).attr( 'title', this._current_btn_label );\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Generate Feed\r\n\t\t * @return void\r\n\t\t */\r\n\t\tgenerate() {\r\n\t\t\tlet self = this;\r\n\t\t\twindow.isRegenerating = true;\r\n\t\t\tthis._block_button();\r\n\t\t\tthis._resetProgressBar();\r\n\t\t\tthis._progressBarActive();\r\n\t\t\tthis._log( 'Counting Total Products' );\r\n\t\t\tthis._updateProgressStatus( 'Fetching products.' );\r\n\t\t\tthis._get_product_ids().then( response => {\r\n\t\t\t\tthis._progress = 10;\r\n\t\t\t\tself._log( {response} );\r\n\t\t\t\tif(response.success) {\r\n\t\t\t\t\tself._log( `Total ${response.total} Products found.` );\r\n\t\t\t\t\tself._product_ids = response.product;\r\n\t\t\t\t\tself._total_batch = this._product_ids.length;\r\n\t\t\t\t\tself._current_batch = 0;\r\n\t\t\t\t\tself._progress_per_batch = ( 90 - this._progress ) / this._total_batch;\r\n\t\t\t\t\tself._process_batch();\r\n\t\t\t\t\tself._updateProgressStatus( 'Processing Products...' );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself._updateProgressStatus( response.data.message );\r\n\t\t\t\t}\r\n\t\t\t}).fail( error => {\r\n\t\t\t\tself._log( error );\r\n\t\t\t\tself._updateProgressStatus( error.message );\r\n\t\t\t\tself._color = 'red';\r\n\t\t\t\tsetTimeout( function(){\r\n\t\t\t\t\tself._stopProgressBar();\r\n\t\t\t\t\tself._unblock_button();\r\n\t\t\t\t}, 1500 );\r\n\t\t\t} );\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Get Product Ids\r\n\t\t * @returns {$.promise}\r\n\t\t * @private\r\n\t\t */\r\n\t\t_get_product_ids() {\r\n\t\t\tthis._progress = 5;\r\n\t\t\treturn wpAjax.post( 'get_product_information', {\r\n\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\tfeed: this._feed,\r\n\t\t\t\tlimit: this._limit,\r\n\t\t\t} );\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Run the Batch\r\n\t\t * @private\r\n\t\t */\r\n\t\t_process_batch() {\r\n\t\t\tlet self = this;\r\n\t\t\tlet status = `Processing Batch ${this._current_batch+1} of ${this._total_batch}`;\r\n\t\t\tthis._updateProgressStatus( status );\r\n\t\t\tthis._log( status );\r\n\t\t\twpAjax.post( 'make_batch_feed', {\r\n\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\tfeed: this._feed,\r\n\t\t\t\tproducts: this._product_ids[this._current_batch],\r\n\t\t\t\tloop: this._current_batch,\r\n\t\t\t} ).then( response => {\r\n\t\t\t\tself._current_batch++;\r\n\t\t\t\tself._log( `Batch ${self._current_batch} Completed` );\r\n\t\t\t\tself._log( response );\r\n\t\t\t\tif ( self._current_batch < self._total_batch ) {\r\n\t\t\t\t\tself._process_batch();\r\n\t\t\t\t\tself._progress += self._progress_per_batch;\r\n\t\t\t\t}\r\n\t\t\t\tif ( self._current_batch === self._total_batch ) {\r\n\t\t\t\t\tself._save_feed_file();\r\n\t\t\t\t}\r\n\t\t\t} ).fail( error => {\r\n\t\t\t\tself._log( error );\r\n\t\t\t\tself._updateProgressStatus( error.message );\r\n\t\t\t\tself._color = 'red';\r\n\t\t\t\tsetTimeout( function(){\r\n\t\t\t\t\tself._stopProgressBar();\r\n\t\t\t\t\tself._unblock_button();\r\n\t\t\t\t}, 1500 );\r\n\t\t\t} );\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Save Feed Data from temp to feed file\r\n\t\t * @private\r\n\t\t */\r\n\t\t_save_feed_file() {\r\n\t\t\tlet self = this;\r\n\t\t\tthis._log( 'Saving feed file' );\r\n\t\t\tthis._updateProgressStatus( 'Saving feed file' );\r\n\t\t\twpAjax.post( 'save_feed_file', {\r\n\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\tfeed: this._feed,\r\n\t\t\t} ).then( response => {\r\n\t\t\t\tself._log( response );\r\n\t\t\t\tself._progress = 100;\r\n\t\t\t\tif ( self._refresh ) {\r\n\t\t\t\t\twindow.location.href = `${opts.pages.list.feed}&link=${response.url}&cat=${response.cat}`;\r\n\t\t\t\t}\r\n\t\t\t\tsetTimeout( function(){\r\n\t\t\t\t\tself._stopProgressBar();\r\n\t\t\t\t\tsetTimeout( function(){\r\n\t\t\t\t\t\tself._resetProgressBar( true );\r\n\t\t\t\t\t\tself._unblock_button();\r\n\t\t\t\t\t}, 3000 );\r\n\t\t\t\t}, 2500 );\r\n\t\t\t} ).fail( error => {\r\n\t\t\t\tself._log( error );\r\n\t\t\t\tself._updateProgressStatus( error.message );\r\n\t\t\t\tself._color = 'red';\r\n\t\t\t\tsetTimeout( function(){\r\n\t\t\t\t\tself._stopProgressBar();\r\n\t\t\t\t\tself._unblock_button();\r\n\t\t\t\t}, 1500 );\r\n\t\t\t} );\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Console log wrapper with debug settings.\r\n\t\t * @param data\r\n\t\t * @returns {feedGenerator}\r\n\t\t * @private\r\n\t\t */\r\n\t\t_log( data ) {\r\n\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\tif ( opts.wpf_debug ) {\r\n\t\t\t\tconsole.log( data );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Run the progressbar refresh interval\r\n\t\t * @param {int} refreshInterval\r\n\t\t * @returns {feedGenerator}\r\n\t\t * @private\r\n\t\t */\r\n\t\t_progressBarActive( refreshInterval = 0 ) {\r\n\t\t\tlet self = this;\r\n\t\t\tthis._toggleProgressBar( true );\r\n\t\t\tthis._timer = setInterval( function(){\r\n\t\t\t\tself._updateProgressBar();\r\n\t\t\t}, refreshInterval || 1000 );\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Stop Progressbar\r\n\t\t * @returns {feedGenerator}\r\n\t\t * @private\r\n\t\t */\r\n\t\t_stopProgressBar() {\r\n\t\t\tclearInterval( this._timer );\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Reset Progressbar\r\n\t\t * @returns {feedGenerator}\r\n\t\t * @private\r\n\t\t */\r\n\t\t_resetProgressBar( update ) {\r\n\t\t\tthis._toggleProgressBar( false );\r\n\t\t\tthis._updateProgressStatus( '' );\r\n\t\t\tclearInterval( this._timer );\r\n\t\t\tthis._color = false;\r\n\t\t\tthis._timer = null;\r\n\t\t\tthis._progress = 0;\r\n\t\t\tif ( update ) {\r\n\t\t\t\tthis._updateProgressBar();\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Show hide the progress bar el\r\n\t\t * @param status\r\n\t\t * @returns {feedGenerator}\r\n\t\t * @private\r\n\t\t */\r\n\t\t_toggleProgressBar( status ) {\r\n\t\t\tlet table = $('#feed_progress_table');\r\n\t\t\tif ( status ) {\r\n\t\t\t\ttable.show();\r\n\t\t\t} else {\r\n\t\t\t\ttable.hide();\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Update Progress bar text status\r\n\t\t * @param {string} status\r\n\t\t * @returns {feedGenerator}\r\n\t\t * @private\r\n\t\t */\r\n\t\t_updateProgressStatus( status ) {\r\n\t\t\t$( '.feed-progress-status' ).text( status );\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Update Progress Data\r\n\t\t * hooked with setInterval\r\n\t\t * @private\r\n\t\t */\r\n\t\t_updateProgressBar() {\r\n\t\t\tlet percentage = $( '.feed-progress-percentage' ),\r\n\t\t\t\tbar = $( '.feed-progress-bar-fill' ),\r\n\t\t\t\t_progress = `${Math.round( this._progress )}%`;\r\n\t\t\tbar.css( {\r\n\t\t\t\twidth: _progress,\r\n\t\t\t} );\r\n\t\t\tpercentage.text( _progress );\r\n\t\t}\r\n\t}\r\n\t// expose to the global scope\r\n\twindow.wf = {\r\n\t\thelper: helper,\r\n\t\tfeedEditor: feedEditor,\r\n\t\tgenerator: feedGenerator,\r\n\t};\r\n\t$(window).on('load', function() {\r\n\t\t// Template loading ui conflict\r\n\t\tif ($(location).attr(\"href\").match(/webappick.*feed/g) !== null) {\r\n\t\t\t$('#wpbody-content').addClass('woofeed-body-content');\r\n\t\t}\r\n\r\n\t\t// on edit page show item wrapper dropdown\r\n\t\tlet current_page_url_query = window.location.search;\r\n\t\tlet urlParams = new URLSearchParams(current_page_url_query);\r\n\t\tlet page_action = urlParams.get('action');\r\n\r\n\t\t// ClipBoardJS\r\n\t\tclip();\r\n\t\t// postbox toggle\r\n\t\tpostboxes.add_postbox_toggles(pagenow);\r\n\t\t// initialize generator\r\n\t\tlet generator = new feedGenerator();\r\n\t\tgenerator.init();\r\n\t\t// noinspection JSUnresolvedVariable\r\n\t\tif( '' !== opts.generator.feed && opts.generator.regenerate ) {\r\n\t\t\r\n\t\t}\r\n\t\t// initialize editor\r\n\t\tfeedEditor.init();\r\n\t\thelper.common(); // Generate Feed Add Table Row\r\n\t\ttooltip();\r\n\t\t// validate feed editor\r\n\t\t$(\".generateFeed\").validate();\r\n\t\t// document events\r\n\t\t$(document)\r\n\t\t\t.on('click', '[data-toggle_slide]', function(e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t$($(this).data('toggle_slide')).slideToggle('fast');\r\n\t\t\t})\r\n\t\t\t// XML Feed Wrapper\r\n\t\t\t.on('click', '#wf_newRow', function () {\r\n\t\t\t\tlet tbody = $('#table-1 tbody'),\r\n\t\t\t\t\ttemplate = $('#feed_config_template').text().trim().replace(/__idx__/g, tbody.find('tr').length);\r\n\t\t\t\ttbody.append(template);\r\n\t\t\t\thelper.fancySelect($('.outputType'));\r\n\t\t\t})\r\n\t\t\t// feed delete alert.\r\n\t\t\t.on('click', '.single-feed-delete', function (event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\tif (confirm(opts.form.del_confirm)) {\r\n\t\t\t\t\twindow.location.href = $(this).attr('val');\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t// clear cache data.\r\n\t\t\t.on('click', '.wf_clean_cache_wrapper', function(event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tvar nonce = $('.woo-feed-clean-cache-nonce').val();\r\n\t\t\t\tvar loader = $('.woo-feed-cache-loader');\r\n\r\n\t\t\t\t//show loader\r\n\t\t\t\tloader.show();\r\n\r\n\t\t\t\t// passed cache nonce\r\n\t\t\t\twpAjax.post('clear_cache_data', {\r\n\t\t\t\t\t_ajax_clean_nonce: nonce\r\n\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\tif( response.success ) {\r\n\t\t\t\t\t\tloader.hide(); //hide loader\r\n\t\t\t\t\t\tlocation.reload();\r\n\t\t\t\t\t}\r\n\t\t\t\t}).fail(function (e) {\r\n\t\t\t\t\tconsole.log('something wrong');\r\n\t\t\t\t});\r\n\r\n\t\t\t})// Copy Status\r\n\t\t\t.on('click', '#woo-feed-copy-status-btn', function(event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tlet button = $('#woo-feed-copy-status-btn');\r\n\t\t\t\tlet status_area = $('#woo-feed-status-area');\r\n\t\t\t\tbutton.val('Copied');\r\n\t\t\t\tstatus_area.css('visibility','visible');\r\n\t\t\t\tstatus_area.select();\r\n\r\n\t\t\t\tdocument.execCommand('copy');\r\n\t\t\t})\r\n\t\t\t// feed value dropdown change.\r\n\t\t\t.on('change', '.wf_attr.wf_attributes', function(event) {\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t$('.fancy-picker-picked').trigger(\"click\"); // trigger fancy select box clicked\r\n\r\n\t\t\t\t// price attributes\r\n\t\t\t\tvar price_attributes = ['price', 'current_price', 'sale_price', 'price_with_tax', 'current_price_with_tax', 'sale_price_with_tax', 'shipping_cost'];\r\n\t\t\t\t// current value\r\n\t\t\t\tvar current_attribute_value = $(this).val();\r\n\t\t\t\tvar outputSelect = $(this).parents('tr').find('.outputType');\r\n\t\t\t\tvar fancyOption = $(this).parents('tr').find('.fancy-picker-content .fancy-picker-option');\r\n\t\t\t\tvar fancyDataPicker = $(this).parents('tr').find('.fancy-picker-data span');\r\n\t\t\t\tvar selectIf, selectKey;\r\n\r\n\t\t\t\t// when any attribute is selected, pick the key\r\n\t\t\t\tif( price_attributes.includes(current_attribute_value) ) {\r\n\t\t\t\t\t// when select any price attribute\r\n\t\t\t\t\tselectIf = 'for_price';\r\n\t\t\t\t\tselectKey = \"Price\";\r\n\t\t\t\t} else if ( \"\" !== current_attribute_value && -1 !== current_attribute_value.indexOf('wf_taxo') ) {\r\n\r\n\t\t\t\t\t// when select any custom taxonomy\r\n\t\t\t\t\tselectIf = 'for_custom_taxo';\r\n\t\t\t\t\tselectKey = \"parent_if_empty\";\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tselectIf = 'for_all';\r\n\t\t\t\t\tselectKey = 'Default';\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// remove selected class from old selected option\r\n\t\t\t\tfancyOption.removeClass('selected');\r\n\r\n\t\t\t\t// when value dropdown is selected as price or any custom taxonomy\r\n\t\t\t\tif( selectIf === 'for_custom_taxo' || selectIf === 'for_price' ) {\r\n\r\n\t\t\t\t\t// update \"Option Type\" when select key matches\r\n\t\t\t\t\tfancyOption.each(function(item) {\r\n\t\t\t\t\t\tif( selectKey === $(this).text() ) {\r\n\t\t\t\t\t\t\t$(this).addClass('selected');\r\n\t\t\t\t\t\t\tfancyDataPicker.text(selectKey);\r\n\t\t\t\t\t\t\toutputSelect.find(\"option\").text(selectKey);\r\n\t\t\t\t\t\t\toutputSelect.find(\"option\").val( $(this).data('value') );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// update \"Option Type\" when select key matches\r\n\t\t\t\t\t// fancyOption.each(function(item) {\r\n\t\t\t\t\t// \tif( \"parent_if_empty\" !== $(this).text() && \"for_all\" === selectIf ) {\r\n\t\t\t\t\t// \t\t$(this).addClass('selected');\r\n\t\t\t\t\t// \t\tfancyDataPicker.text(selectKey);\r\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").text(selectKey);\r\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").val( $(this).data('value') );\r\n\t\t\t\t\t// \t}\r\n\t\t\t\t\t// });\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t\t// bulk delete alert.\r\n\t\t\t.on('click', '#doaction, #doaction2', function () {\r\n\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\treturn confirm(opts.form.del_confirm_multi);\r\n\t\t\t})\r\n\t\t\t// Generate Feed Table Row Delete\r\n\t\t\t.on('change', '.dType', function () {\r\n\t\t\t\tlet self = $(this),\r\n\t\t\t\t\ttype = self.val(),\r\n\t\t\t\t\trow = self.closest('tr');\r\n\t\t\t\t\r\n\t\t\t\tif (type === 'pattern') {\r\n\t\t\t\t\trow.find('.value_attribute').hide();\r\n\t\t\t\t\trow.find('.value_pattern').show();\r\n\t\t\t\t} else if (type === 'attribute') {\r\n\t\t\t\t\trow.find('.value_attribute').show();\r\n\t\t\t\t\trow.find('.value_pattern').hide();\r\n\t\t\t\t} else if (type === 'remove') {\r\n\t\t\t\t\trow.find('.value_attribute').hide();\r\n\t\t\t\t\trow.find('.value_pattern').hide();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t// Generate Feed Form Submit\r\n\t\t\t.on('click', '.delRow', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t$(this).closest('tr').remove();\r\n\t\t\t\thelper.reindex_config_table();\r\n\t\t\t})\r\n\t\t\t.on('submit', '#generateFeed', function () {\r\n\t\t\t\t// Feed Generating form validation\r\n\t\t\t\t$(this).validate();\r\n\t\t\t\t\r\n\t\t\t\tif ($(this).valid()) {\r\n\t\t\t\t\t$(\".makeFeedResponse\")\r\n\t\t\t\t\t\t.show()\r\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\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t// Generate Update Feed Form Submit\r\n\t\t\t.on('submit', '#updatefeed', function (e, data) {\r\n\t\t\t\t// Feed Generating form validation\r\n\t\t\t\t$(this).validate();\r\n\t\t\t\t\r\n\t\t\t\tif ($(this).valid()) {\r\n\t\t\t\t\t$(\".makeFeedResponse\")\r\n\t\t\t\t\t\t.show()\r\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\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('change', '.ftporsftp', function () {\r\n\t\t\t\tlet server = $(this).val(),\r\n\t\t\t\t\tstatus = $('.ssh2_status');\r\n\t\t\t\t\r\n\t\t\t\tif (server === 'sftp') {\r\n\t\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\t\tstatus.show().css('color', 'dodgerblue').text(opts.form.sftp_checking);\r\n\t\t\t\t\twpAjax.post('get_ssh2_status', {\r\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\t\t\tserver: server\r\n\t\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\t\tif (response === 'exists') {\r\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\t\t\t\tstatus.css('color', '#2CC185').text(opts.form.sftp_available);\r\n\t\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\t\tstatus.hide();\r\n\t\t\t\t\t\t\t}, 1500);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\t\t\t\tstatus.show().css('color', 'red').text(opts.form.sftp_warning);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).fail(function (e) {\r\n\t\t\t\t\t\tstatus.hide();\r\n\t\t\t\t\t\thelper.ajax_fail(e);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstatus.hide();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('click', '[name=\"save_feed_config\"]', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t$('#updatefeed').trigger('submit', {\r\n\t\t\t\t\tsave: true\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.on('change', '#provider', function (event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\r\n\t\t\t\t//if (!$(this).closest('.generateFeed').hasClass('add-new')) return; // only for new feed.\r\n\r\n\t\t\t\tlet merchant = $(this).val(),\r\n\t\t\t\t\tfeedType = $(\"#feedType\"),\r\n\t\t\t\t\tfeedForm = $(\"#providerPage\"),\r\n\t\t\t\t\tmerchantInfo = $('#feed_merchant_info'); // set loading..\r\n\t\t\t\t\r\n\t\t\t\t// noinspection JSUnresolvedVariable\r\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\r\n\t\t\t\t\r\n\t\t\t\tmerchantInfo.find('.spinner').addClass('is-active');\r\n\t\t\t\tfeedType.disabled(!0); // disable dropdown\r\n\t\t\t\t\r\n\t\t\t\tfeedType.parent().find('.spinner').addClass('is-active');\r\n\t\t\t\tmerchantInfo.find('.merchant-info-section .data').html(''); // remove previous data\r\n\t\t\t\t// Get Merchant info for selected Provider/Merchant\r\n\r\n\r\n\t\t\t\t\r\n\t\t\t\tif (merchantInfoCache.hasOwnProperty(merchant)) {\r\n\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, merchantInfoCache[merchant]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\twpAjax.send('woo_feed_get_merchant_info', {\r\n\t\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tnonce: opts.nonce,\r\n\t\t\t\t\t\t\tprovider: merchant\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).then(function (r) {\r\n\t\t\t\t\t\tmerchantInfoCache[merchant] = r;\r\n\t\t\t\t\t\tfeedEditor.renderMerchantInfo(merchantInfo, feedType, r);\r\n\t\t\t\t\t}).fail(helper.ajax_fail);\r\n\t\t\t\t} // Get FeedForm For Selected Provider/Merchant\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tif (merchantTemplateCache.hasOwnProperty(merchant)) {\r\n\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, merchantTemplateCache[merchant]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\twpAjax.post('get_feed_merchant', {\r\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\t\t\tmerchant: merchant\r\n\t\t\t\t\t}).then(function (r) {\r\n\t\t\t\t\t\tmerchantTemplateCache[merchant] = r;\r\n\t\t\t\t\t\tfeedEditor.renderMerchantTemplate(feedForm, r);\r\n\r\n\t\t\t\t\t\t//when merchant is bing, change delimiter and enclosure\r\n\t\t\t\t\t\tif( 'bing' === merchant ) {\r\n\t\t\t\t\t\t\t//delimiter value\r\n\t\t\t\t\t\t\t$(\"#delimiter option\").removeAttr('selected');\r\n\t\t\t\t\t\t\t$(\"#delimiter option[value=\\\"tab\\\"]\").attr('selected', 'selected');\r\n\r\n\t\t\t\t\t\t\t//enclosure value\r\n\t\t\t\t\t\t\t$(\"#enclosure option\").removeAttr('selected');\r\n\t\t\t\t\t\t\t$(\"#enclosure option[value=\\\" \\\"]\").attr('selected', 'selected');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//reviewer options hide\r\n\t\t\t\t\t\tif( 'google_product_review' !== merchant) {\r\n\t\t\t\t\t\t\t$('.wf_attributes option[value=\"reviewer_name\"]').hide();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).fail(helper.ajax_fail);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t// Feed Active and Inactive status change via ajax\r\n\t\t\t.on('change', '.woo_feed_status_input', function () {\r\n\t\t\t\tlet self = $(this);\r\n\t\t\t\twpAjax.post('update_feed_status', {\r\n\t\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\t\tfeedName: self.val(),\r\n\t\t\t\t\tstatus: self[0].checked ? 1 : 0\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t// event with trigger\r\n\t\t$(document)\r\n\t\t\t.on('change', '[name=\"is_outOfStock\"], [name=\"product_visibility\"]', function () {\r\n\t\t\t\tlet outOfStockVisibilityRow = $('.out-of-stock-visibility');\r\n\t\t\t\tif ($('[name=\"is_outOfStock\"]:checked').val() === 'n' && $('[name=\"product_visibility\"]:checked').val() === '1') {\r\n\t\t\t\t\toutOfStockVisibilityRow.show();\r\n\t\t\t\t} else {\r\n\t\t\t\t\toutOfStockVisibilityRow.hide();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('change', '.attr_type', function () {\r\n\t\t\t\t// Attribute type selection\r\n\t\t\t\tlet self = $(this),\r\n\t\t\t\t\ttype = self.val(),\r\n\t\t\t\t\trow = self.closest('tr');\r\n\t\t\t\t\r\n\t\t\t\tif (type === 'pattern') {\r\n\t\t\t\t\trow.find('.wf_attr').hide();\r\n\t\t\t\t\trow.find('.wf_attr').val('');\r\n\t\t\t\t\trow.find('.wf_default').show();\r\n\t\t\t\t} else {\r\n\t\t\t\t\trow.find('.wf_attr').show();\r\n\t\t\t\t\trow.find('.wf_default').hide();\r\n\t\t\t\t\trow.find('.wf_default').val('');\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('change', '.wf_mattributes, .attr_type', function () {\r\n\t\t\t\tlet row = $(this).closest('tr'),\r\n\t\t\t\t\tattribute = row.find('.wf_mattributes'),\r\n\t\t\t\t\ttype = row.find('.attr_type'),\r\n\t\t\t\t\tvalueColumn = row.find('td:eq(4)'),\r\n\t\t\t\t\tprovider = $('#provider').val();\r\n\t\t\t\t\r\n\t\t\t\t// noinspection JSUnresolvedVariable\r\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()])) {\r\n\t\t\t\t\tif (valueColumn.find('select.selectize').length === 0) {\r\n\t\t\t\t\t\tvalueColumn.find('input.wf_default').remove();\r\n\t\t\t\t\t\tvalueColumn.append('<span class=\"wf_default wf_attributes\"><select name=\"default[]\" class=\"selectize\"></select></span>');\r\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\r\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>`);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (!googleCategories) {\r\n\t\t\t\t\t\t\tvalueColumn.append('<span class=\"spinner is-active\" style=\"margin: 0;\"></span>');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tlet select = valueColumn.find('.wf_attributes select');\r\n\t\t\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\t\t\thelper.selectize(select, {\r\n\t\t\t\t\t\t\tpreload: true,\r\n\t\t\t\t\t\t\tplaceholder: opts.form.select_category,\r\n\t\t\t\t\t\t\tload: function load(query, cb) {\r\n\t\t\t\t\t\t\t\tif (!googleCategories) {\r\n\t\t\t\t\t\t\t\t\twpAjax.send('get_google_categories', {\r\n\t\t\t\t\t\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\t_ajax_nonce: opts.nonce,\r\n\t\t\t\t\t\t\t\t\t\t\taction: \"get_google_categories\",\r\n\t\t\t\t\t\t\t\t\t\t\tprovider: provider\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}).then(function (r) {\r\n\t\t\t\t\t\t\t\t\t\tgoogleCategories = r;\r\n\t\t\t\t\t\t\t\t\t\tcb(googleCategories);\r\n\t\t\t\t\t\t\t\t\t\tvalueColumn.find('.spinner').remove();\r\n\t\t\t\t\t\t\t\t\t}).fail(helper.ajax_fail);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tcb(googleCategories);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (attribute.val() !== 'current_category' && valueColumn.find('input.wf_default').length === 0) {\r\n\t\t\t\t\t\tvalueColumn.find('span').remove();\r\n\t\t\t\t\t\tvalueColumn.append('<input autocomplete=\"off\" class=\"wf_default wf_attributes\" type=\"text\" name=\"default[]\" value=\"\">');\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (type.val() !== 'pattern') {\r\n\t\t\t\t\t\t\tvalueColumn.find('input.wf_default').hide();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('change', '#feedType,#provider', function (e) {\r\n\t\t\t\tlet type = $('#feedType').val(),\r\n\t\t\t\t\tprovider = $('#provider').val(),\r\n\t\t\t\t\titemWrapper = $('.itemWrapper'),\r\n\t\t\t\t\twf_csv_txt = $('.wf_csvtxt');\r\n\t\t\t\t\r\n\t\t\t\t// noinspection JSUnresolvedVariable\r\n\t\t\t\tif (type !== '' && helper.in_array(provider, opts.form.item_wrapper_hidden)) {\r\n\t\t\t\t\titemWrapper.hide();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//when feed type is changed\r\n\t\t\t\tif( 'feedType' === e.target.id ) {\r\n\t\t\t\t\tif (type === 'csv' || type === 'txt' || type === 'tsv') {\r\n\t\t\t\t\t\titemWrapper.hide();\r\n\t\t\t\t\t\twf_csv_txt.show();\r\n\r\n\t\t\t\t\t\tif( 'tsv' === type ) {\r\n\t\t\t\t\t\t\t$('#delimiter option:last').prop(\"selected\", \"selected\");\r\n\t\t\t\t\t\t} else if( 'csv' === type ) {\r\n\t\t\t\t\t\t\t$('#delimiter option:first').prop(\"selected\", \"selected\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if( type === 'xml' ) {\r\n\t\t\t\t\t\titemWrapper.show();\r\n\t\t\t\t\t\twf_csv_txt.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t})\r\n\t\t\t.trigger('change');\r\n\r\n\r\n\t\t// product Attribute class\r\n\t\tclass WooFeedCustomFields {\r\n\r\n\t\t\tconstructor( field, status, isTaxonomy ) {\r\n\t\t\t\tthis.productCustomFields( field, status, isTaxonomy );\r\n\t\t\t}\r\n\r\n\t\t\tcacheClear() {\r\n\t\t\t\tlet data = {\r\n\t\t\t\t\taction: 'woo_feed_product_attribute_cache_remove',\r\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\r\n\t\t\t\t};\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\r\n\t\t\t\t\tdata\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tproductCustomFields( field, status = false, isTaxonomy ) {\r\n\t\t\t\tlet data = {\r\n\t\t\t\t\taction: 'woo_feed_custom_fields_status_change',\r\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\r\n\t\t\t\t\tfield,\r\n\t\t\t\t\tstatus,\r\n\t\t\t\t\tisTaxonomy\r\n\t\t\t\t};\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t\tsuccess: ( response ) => {\r\n\t\t\t\t\t\tif( response.success ) {\r\n\t\t\t\t\t\t\tthis.cacheClear();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.log( response );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$(document).on('click', '.woofeed-custom-fields [id*=\"-switcher\"]', function () {\r\n\t\t\tlet field = $(this).attr( 'id' ).split( '-' )[0],\r\n\t\t\t\tisTaxonomy = $(this).data( 'taxonomy' ),\r\n\t\t\t\tstatus = $(this).prop( 'checked' );\r\n\t\t\tnew WooFeedCustomFields( field, status, isTaxonomy );\r\n\t\t});\r\n\t});\r\n})(jQuery, window, document, wp.ajax, wpf_ajax_obj);\r\n"]}
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","condition","then","_current_btn_label","response","_color","preventDefault","parent","hide","_ajax_nonce","_log","_updateProgressStatus","message","key","regenerate","_block_button","value","_this","product","setTimeout","_stopProgressBar","_process_batch","_current_batch","_total_batch","post","_save_feed_file","fail","_resetProgressBar","_unblock_button","refreshInterval","arguments","undefined","clearInterval","_timer","_updateProgressBar","update","table","show","width","bar","wf","current_page_url_query","postboxes","location","setInterval","URLSearchParams","pagenow","template","common","hover","title","appendTo","userAgent","merchantTemplateCache","remove","ClipboardJS","clipboard","slideToggle","loader","tbody","reload","nonce","status_area","select","execCommand","button","fancyOption","fancyDataPicker","selectIf","price_attributes","selectKey","percentage","outputSelect","parents","includes","current_attribute_value","indexOf","del_confirm_multi","row","closest","reindex_config_table","type","_ajax_clean_nonce","server","validate","save","sftp_checking","sftp_available","provider","merchant","outOfStockVisibilityRow","feedName","checked","valueColumn","append","preload","load","google_category","query","attribute","cb","send","itemWrapper","item_wrapper_hidden","WooFeedCustomFields","productCustomFields","url","_classCallCheck","field","isTaxonomy","_this2","wpf_ajax_obj","success","log"],"mappings":"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","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\n\t\t\t//thickbox body add feed plugin class to make it unique and custom style\n\t\t\tlet current_page_query = window.location.search;\n\t\t\tlet params = new URLSearchParams(current_page_query);\n\t\t\tlet page_name = params.get(\"page\");\n\t\t\tif( \"webappick-manage-feeds\" === page_name ) {\n\t\t\t\t$('body').addClass('woo-import-popup-body');\n\t\t\t}\n\n\t\t\t$(document).on('click', '.woo-feed-campaign-close-button', function(event) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t$(this).parent('.woo-feed-promotion').hide();\n\t\t\t\tlet condition = $(this).data('condition');\n\t\t\t\tif(1 === condition) {\n\t\t\t\t\twpAjax.post( 'woo_feed_hide_promotion', {\n\t\t\t\t\t\t_ajax_nonce: opts.nonce,\n\t\t\t\t\t\tcondition: condition,\n\t\t\t\t\t} ).then( response => {\n\t\t\t\t\t\tself._log( response );\n\t\t\t\t\t} ).fail( error => {\n\t\t\t\t\t\tself._log( error );\n\t\t\t\t\t\tself._updateProgressStatus( error.message );\n\t\t\t\t\t\tself._color = 'red';\n\t\t\t\t\t} );\n\t\t\t\t}\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} );\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).on('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\n\t\t// on edit page show item wrapper dropdown\n\t\tlet current_page_url_query = window.location.search;\n\t\tlet urlParams = new URLSearchParams(current_page_url_query);\n\t\tlet page_action = urlParams.get('action');\n\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// clear cache data.\n\t\t\t.on('click', '.wf_clean_cache_wrapper', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tvar nonce = $('.woo-feed-clean-cache-nonce').val();\n\t\t\t\tvar loader = $('.woo-feed-cache-loader');\n\n\t\t\t\t//show loader\n\t\t\t\tloader.show();\n\n\t\t\t\t// passed cache nonce\n\t\t\t\twpAjax.post('clear_cache_data', {\n\t\t\t\t\t_ajax_clean_nonce: nonce\n\t\t\t\t}).then(function (response) {\n\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\tloader.hide(); //hide loader\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t}\n\t\t\t\t}).fail(function (e) {\n\t\t\t\t\tconsole.log('something wrong');\n\t\t\t\t});\n\n\t\t\t})// Copy Status\n\t\t\t.on('click', '#woo-feed-copy-status-btn', function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tlet button = $('#woo-feed-copy-status-btn');\n\t\t\t\tlet status_area = $('#woo-feed-status-area');\n\t\t\t\tbutton.val('Copied');\n\t\t\t\tstatus_area.css('visibility','visible');\n\t\t\t\tstatus_area.select();\n\n\t\t\t\tdocument.execCommand('copy');\n\t\t\t})\n\t\t\t// feed value dropdown change.\n\t\t\t.on('change', '.wf_attr.wf_attributes', function(event) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t$('.fancy-picker-picked').trigger(\"click\"); // trigger fancy select box clicked\n\n\t\t\t\t// price attributes\n\t\t\t\tvar price_attributes = ['price', 'current_price', 'sale_price', 'price_with_tax', 'current_price_with_tax', 'sale_price_with_tax', 'shipping_cost'];\n\t\t\t\t// current value\n\t\t\t\tvar current_attribute_value = $(this).val();\n\t\t\t\tvar outputSelect = $(this).parents('tr').find('.outputType');\n\t\t\t\tvar fancyOption = $(this).parents('tr').find('.fancy-picker-content .fancy-picker-option');\n\t\t\t\tvar fancyDataPicker = $(this).parents('tr').find('.fancy-picker-data span');\n\t\t\t\tvar selectIf, selectKey;\n\n\t\t\t\t// when any attribute is selected, pick the key\n\t\t\t\tif( price_attributes.includes(current_attribute_value) ) {\n\t\t\t\t\t// when select any price attribute\n\t\t\t\t\tselectIf = 'for_price';\n\t\t\t\t\tselectKey = \"Price\";\n\t\t\t\t} else if ( \"\" !== current_attribute_value && -1 !== current_attribute_value.indexOf('wf_taxo') ) {\n\n\t\t\t\t\t// when select any custom taxonomy\n\t\t\t\t\tselectIf = 'for_custom_taxo';\n\t\t\t\t\tselectKey = \"parent_if_empty\";\n\t\t\t\t} else {\n\n\t\t\t\t\tselectIf = 'for_all';\n\t\t\t\t\tselectKey = 'Default';\n\t\t\t\t}\n\n\t\t\t\t// remove selected class from old selected option\n\t\t\t\tfancyOption.removeClass('selected');\n\n\t\t\t\t// when value dropdown is selected as price or any custom taxonomy\n\t\t\t\tif( selectIf === 'for_custom_taxo' || selectIf === 'for_price' ) {\n\n\t\t\t\t\t// update \"Option Type\" when select key matches\n\t\t\t\t\tfancyOption.each(function(item) {\n\t\t\t\t\t\tif( selectKey === $(this).text() ) {\n\t\t\t\t\t\t\t$(this).addClass('selected');\n\t\t\t\t\t\t\tfancyDataPicker.text(selectKey);\n\t\t\t\t\t\t\toutputSelect.find(\"option\").text(selectKey);\n\t\t\t\t\t\t\toutputSelect.find(\"option\").val( $(this).data('value') );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\n\t\t\t\t\t// update \"Option Type\" when select key matches\n\t\t\t\t\t// fancyOption.each(function(item) {\n\t\t\t\t\t// \tif( \"parent_if_empty\" !== $(this).text() && \"for_all\" === selectIf ) {\n\t\t\t\t\t// \t\t$(this).addClass('selected');\n\t\t\t\t\t// \t\tfancyDataPicker.text(selectKey);\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").text(selectKey);\n\t\t\t\t\t// \t\toutputSelect.find(\"option\").val( $(this).data('value') );\n\t\t\t\t\t// \t}\n\t\t\t\t\t// });\n\t\t\t\t}\n\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\t//if (!$(this).closest('.generateFeed').hasClass('add-new')) return; // only for new feed.\n\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\n\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\n\t\t\t\t\t\t//when merchant is bing, change delimiter and enclosure\n\t\t\t\t\t\tif( 'bing' === merchant ) {\n\t\t\t\t\t\t\t//delimiter value\n\t\t\t\t\t\t\t$(\"#delimiter option\").removeAttr('selected');\n\t\t\t\t\t\t\t$(\"#delimiter option[value=\\\"tab\\\"]\").attr('selected', 'selected');\n\n\t\t\t\t\t\t\t//enclosure value\n\t\t\t\t\t\t\t$(\"#enclosure option\").removeAttr('selected');\n\t\t\t\t\t\t\t$(\"#enclosure option[value=\\\" \\\"]\").attr('selected', 'selected');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//reviewer options hide\n\t\t\t\t\t\tif( 'google_product_review' !== merchant) {\n\t\t\t\t\t\t\t$('.wf_attributes option[value=\"reviewer_name\"]').hide();\n\t\t\t\t\t\t}\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 (e) {\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}\n\n\t\t\t\t//when feed type is changed\n\t\t\t\tif( 'feedType' === e.target.id ) {\n\t\t\t\t\tif (type === 'csv' || type === 'txt' || type === 'tsv') {\n\t\t\t\t\t\titemWrapper.hide();\n\t\t\t\t\t\twf_csv_txt.show();\n\n\t\t\t\t\t\tif( 'tsv' === type ) {\n\t\t\t\t\t\t\t$('#delimiter option:last').prop(\"selected\", \"selected\");\n\t\t\t\t\t\t} else if( 'csv' === type ) {\n\t\t\t\t\t\t\t$('#delimiter option:first').prop(\"selected\", \"selected\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if( type === 'xml' ) {\n\t\t\t\t\t\titemWrapper.show();\n\t\t\t\t\t\twf_csv_txt.hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t})\n\t\t\t.trigger('change');\n\n\n\t\t// product Attribute class\n\t\tclass WooFeedCustomFields {\n\n\t\t\tconstructor( field, status, isTaxonomy ) {\n\t\t\t\tthis.productCustomFields( field, status, isTaxonomy );\n\t\t\t}\n\n\t\t\tcacheClear() {\n\t\t\t\tlet data = {\n\t\t\t\t\taction: 'woo_feed_product_attribute_cache_remove',\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\t};\n\t\t\t\t$.ajax({\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\t\tdata\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tproductCustomFields( field, status = false, isTaxonomy ) {\n\t\t\t\tlet data = {\n\t\t\t\t\taction: 'woo_feed_custom_fields_status_change',\n\t\t\t\t\tnonce: wpf_ajax_obj.ajax.nonce,\n\t\t\t\t\tfield,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisTaxonomy\n\t\t\t\t};\n\t\t\t\t$.ajax({\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\turl: wpf_ajax_obj.wpf_ajax_url,\n\t\t\t\t\tdata,\n\t\t\t\t\tsuccess: ( response ) => {\n\t\t\t\t\t\tif( response.success ) {\n\t\t\t\t\t\t\tthis.cacheClear();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log( response );\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}\n\n\t\t$(document).on('click', '.woofeed-custom-fields [id*=\"-switcher\"]', function () {\n\t\t\tlet field = $(this).attr( 'id' ).split( '-' )[0],\n\t\t\t\tisTaxonomy = $(this).data( 'taxonomy' ),\n\t\t\t\tstatus = $(this).prop( 'checked' );\n\t\t\tnew WooFeedCustomFields( field, status, isTaxonomy );\n\t\t});\n\t});\n\n\t$(document).on('click', '#woo-feed-debug-log-download', function (e) {\n\t\te.preventDefault();\n\t\t$(\"<a />\", {\n\t\t\tdownload: new Date() + \".log\",\n\t\t\thref: URL.createObjectURL(\n\t\t\t\tnew Blob([$(\"#woo-feed-debug-log\").val()], {\n\t\t\t\t\ttype: \"text/plain\"\n\t\t\t\t})),\n\t\t}).appendTo(\"body\")[0].click();\n\t});\n\n})(jQuery, window, document, wp.ajax, wpf_ajax_obj);\n"]}
admin/partials/woo-feed-status.php CHANGED
@@ -40,7 +40,10 @@
40
 
41
  <?php if ( $tab_name && 'log-tab' === $tab_name ) :?>
42
  <br><br>
43
- <textarea name="" id="" cols="150" rows="30"><?php echo esc_html($system_data->get_logs()); ?></textarea>
 
 
 
44
  <?php else : ?>
45
  <br><br>
46
  <div class="woo-feed-status-table-wrapper succ">
40
 
41
  <?php if ( $tab_name && 'log-tab' === $tab_name ) :?>
42
  <br><br>
43
+ <textarea name="" id="woo-feed-debug-log" rows="30" style="width: 100%"><?php echo esc_html($system_data->get_logs()); ?></textarea>
44
+ <br/>
45
+ <br/>
46
+ <a href="#" class="button button-large button-primary right" id="woo-feed-debug-log-download"><?php echo __('Download', 'woo-feed'); ?></a>
47
  <?php else : ?>
48
  <br><br>
49
  <div class="woo-feed-status-table-wrapper succ">
languages/woo-feed.pot CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2020 WooFeed
2
  # This file is distributed under the same license as the WooFeed package.
3
  msgid ""
4
  msgstr ""
@@ -12,118 +12,166 @@ msgstr ""
12
  "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
13
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
 
15
- #: woo-feed.php:199, woo-feed.php:301, woo-feed.php:369, woo-feed.php:697, woo-feed.php:734, woo-feed.php:753, woo-feed.php:778
16
  msgid "Unauthorized Action."
17
  msgstr ""
18
 
19
- #: woo-feed.php:204, woo-feed.php:305, includes/helper.php:1652, includes/classes/class-woo-feed-webappick-api.php:431, includes/classes/class-woo-feed-webappick-api.php:447
20
  msgid "Invalid Request."
21
  msgstr ""
22
 
23
- #: woo-feed.php:260
24
  msgid "Failed to fetch products."
25
  msgstr ""
26
 
27
- #: woo-feed.php:373
28
  msgid "Invalid Feed."
29
  msgstr ""
30
 
31
- #: woo-feed.php:489
32
  msgid "Feed Making Complete"
33
  msgstr ""
34
 
35
- #: woo-feed.php:572, woo-feed.php:609
36
  msgid "Failed security check"
37
  msgstr ""
38
 
39
- #: woo-feed.php:576, woo-feed.php:613
40
  msgid "Invalid Feed Type!"
41
  msgstr ""
42
 
43
- #: woo-feed.php:703
44
  msgid "Invalid Merchant"
45
  msgstr ""
46
 
47
- #: admin/class-woo-feed-admin.php:152, includes/helper.php:645
48
  msgid "N/A"
49
  msgstr ""
50
 
51
- #: admin/class-woo-feed-admin.php:153
52
  msgid "Generating..."
53
  msgstr ""
54
 
55
- #: admin/class-woo-feed-admin.php:154
56
  msgid "Learn More.."
57
  msgstr ""
58
 
59
- #: admin/class-woo-feed-admin.php:156, admin/partials/woo-feed-edit-config.php:66
60
  msgid "Select A Category"
61
  msgstr ""
62
 
63
- #: admin/class-woo-feed-admin.php:157
64
  msgid "Loading Template..."
65
  msgstr ""
66
 
67
- #: admin/class-woo-feed-admin.php:158
68
  msgid "Delivering Configuration..."
69
  msgstr ""
70
 
71
- #: admin/class-woo-feed-admin.php:159
72
  msgid "Saving Configuration..."
73
  msgstr ""
74
 
75
- #: admin/class-woo-feed-admin.php:160
76
  msgid "Wait! Checking Extensions ..."
77
  msgstr ""
78
 
79
- #: admin/class-woo-feed-admin.php:161
80
  msgid "Warning! Enable PHP ssh2 extension to use SFTP. Contact your server administrator."
81
  msgstr ""
82
 
83
- #: admin/class-woo-feed-admin.php:162
84
  msgid "SFTP Available!"
85
  msgstr ""
86
 
87
- #: admin/class-woo-feed-admin.php:163
88
  msgid "Please add one or more items to continue."
89
  msgstr ""
90
 
91
- #: admin/class-woo-feed-admin.php:165
92
  msgid "Are you sure you want to delete this item?"
93
  msgstr ""
94
 
95
- #: admin/class-woo-feed-admin.php:166
96
  msgid "Are you sure you want to delete selected items?"
97
  msgstr ""
98
 
99
- #: admin/class-woo-feed-admin.php:177
100
  msgid "There was an error processing ajax request."
101
  msgstr ""
102
 
103
- #: admin/class-woo-feed-admin.php:210
104
  msgid "Docs"
105
  msgstr ""
106
 
107
- #: admin/class-woo-feed-admin.php:212, admin/class-woo-feed-admin.php:237, admin/class-woo-feed-admin.php:237, admin/partials/woo-feed-settings.php:17
108
  msgid "Settings"
109
  msgstr ""
110
 
111
- #: admin/class-woo-feed-admin.php:234, admin/class-woo-feed-admin.php:234
112
- msgid "Woo Feed"
113
  msgstr ""
114
 
115
- #: admin/class-woo-feed-admin.php:235, admin/class-woo-feed-admin.php:235
116
  msgid "Manage Feeds"
117
  msgstr ""
118
 
119
- #: admin/class-woo-feed-admin.php:236, admin/class-woo-feed-admin.php:236
120
  msgid "Make Feed"
121
  msgstr ""
122
 
123
- #: admin/class-woo-feed-admin.php:238, includes/classes/class-woo-feed-admin-message.php:102, includes/classes/class-woo-feed-webappick-api.php:180
 
 
 
 
 
 
 
 
 
 
 
 
124
  msgid "Documentation"
125
  msgstr ""
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  #: admin/class-woo-feed-manage-list.php:36
128
  msgid "feed"
129
  msgstr ""
@@ -132,7 +180,7 @@ msgstr ""
132
  msgid "feeds"
133
  msgstr ""
134
 
135
- #: admin/class-woo-feed-manage-list.php:113
136
  msgid "View"
137
  msgstr ""
138
 
@@ -140,7 +188,7 @@ msgstr ""
140
  msgid "Regenerate"
141
  msgstr ""
142
 
143
- #: admin/class-woo-feed-manage-list.php:116
144
  msgid "Download"
145
  msgstr ""
146
 
@@ -148,48 +196,60 @@ msgstr ""
148
  msgid "Export Feed Config"
149
  msgstr ""
150
 
151
- #: admin/class-woo-feed-manage-list.php:211
152
  msgid "No feed available."
153
  msgstr ""
154
 
155
- #: admin/class-woo-feed-manage-list.php:277
156
  msgid "Auto Update"
157
  msgstr ""
158
 
159
- #: admin/class-woo-feed-manage-list.php:278
160
  msgid "Feed Name"
161
  msgstr ""
162
 
163
- #: admin/class-woo-feed-manage-list.php:279
164
  msgid "Provider"
165
  msgstr ""
166
 
167
- #: admin/class-woo-feed-manage-list.php:280, admin/partials/woo-feed-edit-config.php:12
168
  msgid "Type"
169
  msgstr ""
170
 
171
- #: admin/class-woo-feed-manage-list.php:281
172
  msgid "Feed URL"
173
  msgstr ""
174
 
175
- #: admin/class-woo-feed-manage-list.php:282
176
  msgid "Last Updated"
177
  msgstr ""
178
 
179
- #: admin/class-woo-feed-manage-list.php:283
180
- msgid "Action"
181
  msgstr ""
182
 
183
- #: admin/class-woo-feed-manage-list.php:329
184
- msgid "Delete"
185
  msgstr ""
186
 
187
- #: admin/class-woo-feed-manage-list.php:349
188
- msgid "Failed To Delete Feed. You do not have sufficient permission to delete."
189
  msgstr ""
190
 
191
- #: admin/class-woo-feed-manage-list.php:370, admin/class-woo-feed-manage-list.php:379
192
- msgid "You do not have sufficient permission to delete!"
 
 
 
 
 
 
 
 
 
 
 
 
193
  msgstr ""
194
 
195
  #. translators: %s: FAQ Title
@@ -197,15 +257,15 @@ msgstr ""
197
  msgid "Toggle panel: %s"
198
  msgstr ""
199
 
200
- #: includes/class-woo-feed-docs.php:115, admin/partials/woo-feed-pro-vs-free.php:493
201
  msgid "Still need help?"
202
  msgstr ""
203
 
204
- #: includes/class-woo-feed-docs.php:116, admin/partials/woo-feed-pro-vs-free.php:494
205
  msgid "Have we not answered your question?<br>Don't worry, you can contact us for more information..."
206
  msgstr ""
207
 
208
- #: includes/class-woo-feed-docs.php:119, admin/partials/woo-feed-pro-vs-free.php:497, includes/classes/class-woo-feed-admin-message.php:112, includes/classes/class-woo-feed-webappick-api.php:200
209
  msgid "Get Support"
210
  msgstr ""
211
 
@@ -217,7 +277,7 @@ msgstr ""
217
  msgid "WooCommerce"
218
  msgstr ""
219
 
220
- #: includes/helper.php:204, includes/helper.php:221, includes/classes/class-woo-feed-webappick-api.php:296
221
  msgid "WooCommerce Product Feed"
222
  msgstr ""
223
 
@@ -231,140 +291,312 @@ msgstr ""
231
  msgid "%1$s requires %2$s version %3$s or above and %4$s found. Please upgrade %2$s to the latest version here %5$s"
232
  msgstr ""
233
 
234
- #: includes/helper.php:292
 
 
 
 
235
  msgid "WC_Product_Query"
236
  msgstr ""
237
 
238
- #: includes/helper.php:293
239
  msgid "WP_Query"
240
  msgstr ""
241
 
242
- #: includes/helper.php:294
243
  msgid "Both"
244
  msgstr ""
245
 
246
- #: includes/helper.php:307
247
  msgid "No Expiration "
248
  msgstr ""
249
 
250
- #: includes/helper.php:308
251
  msgid "1 Month"
252
  msgstr ""
253
 
254
- #: includes/helper.php:309, includes/helper.php:1744
255
  msgid "1 Week"
256
  msgstr ""
257
 
258
- #: includes/helper.php:310, includes/helper.php:1745
259
  msgid "24 Hours"
260
  msgstr ""
261
 
262
- #: includes/helper.php:311, includes/helper.php:1746
263
  msgid "12 Hours"
264
  msgstr ""
265
 
266
- #: includes/helper.php:312, includes/helper.php:1747
267
  msgid "6 Hours"
268
  msgstr ""
269
 
270
- #: includes/helper.php:313, includes/helper.php:1748
271
  msgid "1 Hours"
272
  msgstr ""
273
 
274
- #: includes/helper.php:703
275
  msgid "Feed Specification:"
276
  msgstr ""
277
 
278
- #: includes/helper.php:1479, includes/helper.php:1479, includes/helper.php:1653
 
 
 
 
279
  msgid "Invalid Request"
280
  msgstr ""
281
 
282
- #: includes/helper.php:1538
283
  msgid "Empty File Uploaded. Try again."
284
  msgstr ""
285
 
286
- #: includes/helper.php:1539
287
  msgid "Empty File"
288
  msgstr ""
289
 
290
- #: includes/helper.php:1542, includes/helper.php:1553, includes/helper.php:1565, includes/helper.php:1576, includes/helper.php:1590, includes/helper.php:1600, includes/helper.php:1612, includes/helper.php:1656
291
  msgid "&laquo; Back"
292
  msgstr ""
293
 
294
- #: includes/helper.php:1549
295
  msgid "Unable to read file content"
296
  msgstr ""
297
 
298
- #: includes/helper.php:1550, includes/helper.php:1562, includes/helper.php:1573, includes/helper.php:1587, includes/helper.php:1597, includes/helper.php:1609
299
  msgid "Invalid File"
300
  msgstr ""
301
 
302
- #: includes/helper.php:1561
303
  msgid "Unable to read data from file."
304
  msgstr ""
305
 
306
- #: includes/helper.php:1572
307
  msgid "Unable to read file info."
308
  msgstr ""
309
 
310
- #: includes/helper.php:1586
311
  msgid "Unable to read feed data from file."
312
  msgstr ""
313
 
314
- #: includes/helper.php:1596
315
  msgid "Unable to verify the file."
316
  msgstr ""
317
 
318
- #: includes/helper.php:1608
319
  msgid "Invalid or corrupted config file."
320
  msgstr ""
321
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
322
  #. translators: 1: error message 2: file name and path 3: line number
323
- #: includes/log-helper.php:53
324
  msgid "%1$s in %2$s on line %3$s"
325
  msgstr ""
326
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  #: admin/partials/woo-feed-admin-display.php:38
328
  msgid "New WooCommerce Product Feed"
329
  msgstr ""
330
 
331
- #: admin/partials/woo-feed-content-settings.php:25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  msgid "Content Settings"
333
  msgstr ""
334
 
335
- #: admin/partials/woo-feed-content-settings.php:30
 
 
 
 
 
 
 
 
336
  msgid "Template"
337
  msgstr ""
338
 
339
- #: admin/partials/woo-feed-content-settings.php:32
340
  msgid "Select a template"
341
  msgstr ""
342
 
343
- #: admin/partials/woo-feed-content-settings.php:41
344
  msgid "File Name"
345
  msgstr ""
346
 
347
- #: admin/partials/woo-feed-content-settings.php:43
348
  msgid "Filename should be unique. Otherwise it will override the existing filename."
349
  msgstr ""
350
 
351
- #: admin/partials/woo-feed-content-settings.php:47
352
  msgid "Feed Type"
353
  msgstr ""
354
 
355
- #: admin/partials/woo-feed-content-settings.php:61
356
  msgid "Items Wrapper"
357
  msgstr ""
358
 
359
- #: admin/partials/woo-feed-content-settings.php:67
360
  msgid "Single Item Wrapper"
361
  msgstr ""
362
 
363
- #: admin/partials/woo-feed-content-settings.php:86
364
  msgid "Delimiter"
365
  msgstr ""
366
 
367
- #: admin/partials/woo-feed-content-settings.php:98
368
  msgid "Enclosure"
369
  msgstr ""
370
 
@@ -397,7 +629,7 @@ msgid "Attribute"
397
  msgstr ""
398
 
399
  #: admin/partials/woo-feed-edit-config.php:54, admin/partials/woo-feed-edit-config.php:125
400
- msgid "Pattern"
401
  msgstr ""
402
 
403
  #: admin/partials/woo-feed-edit-config.php:82, admin/partials/woo-feed-edit-config.php:141
@@ -408,59 +640,59 @@ msgstr ""
408
  msgid "Add New Attribute"
409
  msgstr ""
410
 
411
- #: admin/partials/woo-feed-edit-filter.php:9
412
  msgid "Campaign URL Builder"
413
  msgstr ""
414
 
415
- #: admin/partials/woo-feed-edit-filter.php:17, admin/partials/woo-feed-edit-filter.php:18
416
  msgid "Campaign Source"
417
  msgstr ""
418
 
419
- #: admin/partials/woo-feed-edit-filter.php:17, admin/partials/woo-feed-edit-filter.php:24, admin/partials/woo-feed-edit-filter.php:31
420
  msgid "Required"
421
  msgstr ""
422
 
423
- #: admin/partials/woo-feed-edit-filter.php:20
424
  msgid "The referrer: (e.g. google, newsletter)"
425
  msgstr ""
426
 
427
- #: admin/partials/woo-feed-edit-filter.php:24, admin/partials/woo-feed-edit-filter.php:25
428
  msgid "Campaign Medium"
429
  msgstr ""
430
 
431
- #: admin/partials/woo-feed-edit-filter.php:27
432
  msgid "Marketing medium: (e.g. cpc, banner, email)"
433
  msgstr ""
434
 
435
- #: admin/partials/woo-feed-edit-filter.php:31, admin/partials/woo-feed-edit-filter.php:32
436
  msgid "Campaign Name"
437
  msgstr ""
438
 
439
- #: admin/partials/woo-feed-edit-filter.php:34
440
  msgid "Product, promo code, or slogan (e.g. spring_sale)"
441
  msgstr ""
442
 
443
- #: admin/partials/woo-feed-edit-filter.php:38, admin/partials/woo-feed-edit-filter.php:39
444
  msgid "Campaign Term"
445
  msgstr ""
446
 
447
- #: admin/partials/woo-feed-edit-filter.php:41
448
  msgid "Identify the keywords"
449
  msgstr ""
450
 
451
- #: admin/partials/woo-feed-edit-filter.php:45, admin/partials/woo-feed-edit-filter.php:46
452
  msgid "Campaign Content"
453
  msgstr ""
454
 
455
- #: admin/partials/woo-feed-edit-filter.php:48
456
  msgid "Use to differentiate ads"
457
  msgstr ""
458
 
459
- #: admin/partials/woo-feed-edit-filter.php:57
460
  msgid "Fill out the required fields (marked with *) in the form above, if any required field is empty, then the parameters will not be applied."
461
  msgstr ""
462
 
463
- #: admin/partials/woo-feed-edit-filter.php:58
464
  msgid "Learn more about Campaign URL"
465
  msgstr ""
466
 
@@ -476,15 +708,15 @@ msgstr ""
476
  msgid "Filter"
477
  msgstr ""
478
 
479
- #: admin/partials/woo-feed-edit-tabs.php:24
480
  msgid "FTP/SFTP"
481
  msgstr ""
482
 
483
- #: admin/partials/woo-feed-edit-tabs.php:96
484
  msgid "Save"
485
  msgstr ""
486
 
487
- #: admin/partials/woo-feed-edit-tabs.php:98
488
  msgid "Update and Generate Feed"
489
  msgstr ""
490
 
@@ -516,22 +748,26 @@ msgstr ""
516
  msgid "Import Now"
517
  msgstr ""
518
 
519
- #: admin/partials/woo-feed-manage-list.php:68
520
- msgid "Generating Product Feed"
521
- msgstr ""
522
-
523
- #: admin/partials/woo-feed-manage-list.php:95
524
  msgid "Auto Update Feed Interval"
525
  msgstr ""
526
 
527
- #: admin/partials/woo-feed-manage-list.php:103
528
  msgid "Interval"
529
  msgstr ""
530
 
531
- #: admin/partials/woo-feed-manage-list.php:112
532
  msgid "Update Interval"
533
  msgstr ""
534
 
 
 
 
 
 
 
 
 
535
  #: admin/partials/woo-feed-pro-vs-free.php:74, admin/partials/woo-feed-pro-vs-free.php:185
536
  msgid "Unlimited Products"
537
  msgstr ""
@@ -564,10 +800,6 @@ msgstr ""
564
  msgid "Custom taxonomy"
565
  msgstr ""
566
 
567
- #: admin/partials/woo-feed-pro-vs-free.php:82
568
- msgid "WP Options"
569
- msgstr ""
570
-
571
  #: admin/partials/woo-feed-pro-vs-free.php:83
572
  msgid "Product/Post Meta"
573
  msgstr ""
@@ -628,7 +860,7 @@ msgstr ""
628
  msgid "Auto Feed Update"
629
  msgstr ""
630
 
631
- #: admin/partials/woo-feed-pro-vs-free.php:161, includes/classes/class-woo-feed-dropdown.php:244, includes/classes/class-woo-feed-dropdown.php:264, includes/classes/class-woo-feed-products.php:1798
632
  msgid "Product Attributes"
633
  msgstr ""
634
 
@@ -688,15 +920,11 @@ msgstr ""
688
  msgid "Remove Parent Products"
689
  msgstr ""
690
 
691
- #: admin/partials/woo-feed-pro-vs-free.php:225
692
- msgid "Category Mapping"
693
- msgstr ""
694
-
695
  #: admin/partials/woo-feed-pro-vs-free.php:229
696
  msgid "Dynamic Attributes"
697
  msgstr ""
698
 
699
- #: admin/partials/woo-feed-pro-vs-free.php:233, includes/classes/class-woo-feed-dropdown.php:184, includes/classes/class-woo-feed-products.php:1723
700
  msgid "Price With Tax"
701
  msgstr ""
702
 
@@ -832,375 +1060,603 @@ msgstr ""
832
  msgid "Join the squad today!"
833
  msgstr ""
834
 
835
- #: admin/partials/woo-feed-settings.php:25
836
  msgid "Common Settings"
837
  msgstr ""
838
 
839
- #: admin/partials/woo-feed-settings.php:31
 
 
 
 
840
  msgid "Product per batch"
841
  msgstr ""
842
 
843
- #: admin/partials/woo-feed-settings.php:34, admin/partials/woo-feed-settings.php:45
844
  msgid "Don't change the value if you are not sure about this. Plugin may fail to make feed."
845
  msgstr ""
846
 
847
- #: admin/partials/woo-feed-settings.php:38
848
  msgid "Product Query Type"
849
  msgstr ""
850
 
851
- #: admin/partials/woo-feed-settings.php:49
852
  msgid "Debug Mode"
853
  msgstr ""
854
 
855
- #: admin/partials/woo-feed-settings.php:53
856
  msgid "Off"
857
  msgstr ""
858
 
859
- #: admin/partials/woo-feed-settings.php:54
860
  msgid "On"
861
  msgstr ""
862
 
863
- #: admin/partials/woo-feed-settings.php:57
864
  msgid "Clear All Log Data"
865
  msgstr ""
866
 
867
- #: admin/partials/woo-feed-settings.php:59
868
  msgid "Enabling Logging will decrease performance of feed generation."
869
  msgstr ""
870
 
871
- #: admin/partials/woo-feed-settings.php:63
872
  msgid "Send Debug Info"
873
  msgstr ""
874
 
875
- #: admin/partials/woo-feed-settings.php:66
876
- msgid "Allow WooFeed To Collect Debug Info."
877
  msgstr ""
878
 
879
- #: admin/partials/woo-feed-settings.php:68
880
  msgid "To opt out, leave this box unchecked. Your Feed Data remains un-tracked, and no data will be collected. No sensitive data is tracked."
881
  msgstr ""
882
 
883
- #: admin/partials/woo-feed-settings.php:68
884
  msgid "See What We Collect."
885
  msgstr ""
886
 
887
- #: admin/partials/woo-feed-settings.php:80
888
- msgid "WooFeed Cache TTL"
889
  msgstr ""
890
 
891
- #: admin/partials/woo-feed-settings.php:88
892
  msgid "Purge Cache Now"
893
  msgstr ""
894
 
895
- #: admin/partials/woo-feed-settings.php:90
896
  msgid "When to expire the Cache."
897
  msgstr ""
898
 
899
- #: admin/partials/woo-feed-settings.php:97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
900
  msgid "Save Changes"
901
  msgstr ""
902
 
 
 
 
 
 
 
 
 
903
  #. translators: 1: Method Name 2: Method Name
904
  #: includes/classes/class-woo-feed-admin-message.php:78
905
  msgid "%1$s Should be called before %2$s"
906
  msgstr ""
907
 
908
- #: includes/classes/class-woo-feed-admin-message.php:107, includes/classes/class-woo-feed-webappick-api.php:181
 
 
 
 
909
  msgid "Video Tutorials"
910
  msgstr ""
911
 
912
- #: includes/classes/class-woo-feed-admin-message.php:205
913
  msgid "Feed Config Created Successfully."
914
  msgstr ""
915
 
916
- #: includes/classes/class-woo-feed-admin-message.php:214
917
  msgid "Feed Config Updated Successfully."
918
  msgstr ""
919
 
920
- #: includes/classes/class-woo-feed-admin-message.php:223
921
  msgid "Feed Config Successfully Imported."
922
  msgstr ""
923
 
924
  #. translators: Feed URL
925
- #: includes/classes/class-woo-feed-admin-message.php:241
926
  msgid "Feed Generated Successfully. Feed URL: %s"
927
  msgstr ""
928
 
929
- #: includes/classes/class-woo-feed-admin-message.php:244
930
  msgid "Warning:"
931
  msgstr ""
932
 
933
- #: includes/classes/class-woo-feed-admin-message.php:247
934
  msgid "Learn more..."
935
  msgstr ""
936
 
937
- #: includes/classes/class-woo-feed-admin-message.php:248
938
- msgid "Google Product category is not selected. Your AdWords CPC rate will be high. Add proper Google Product Category to each product & reduce CPC rate."
939
  msgstr ""
940
 
941
- #: includes/classes/class-woo-feed-admin-message.php:276
942
  msgid "Feed auto update interval updated."
943
  msgstr ""
944
 
945
- #: includes/classes/class-woo-feed-admin-message.php:285
946
  msgid "Unable to save auto update interval."
947
  msgstr ""
948
 
949
- #: includes/classes/class-woo-feed-admin-message.php:294
950
  msgid "Invalid interval value."
951
  msgstr ""
952
 
953
- #: includes/classes/class-woo-feed-admin-message.php:303
954
  msgid "Invalid request."
955
  msgstr ""
956
 
957
- #: includes/classes/class-woo-feed-admin-message.php:326
958
  msgid "Settings Updated."
959
  msgstr ""
960
 
961
- #: includes/classes/class-woo-feed-dropdown.php:165, includes/classes/class-woo-feed-products.php:1779
962
  msgid "Primary Attributes"
963
  msgstr ""
964
 
965
- #: includes/classes/class-woo-feed-dropdown.php:166, includes/classes/class-woo-feed-products.php:1706
966
  msgid "Product Id"
967
  msgstr ""
968
 
969
- #: includes/classes/class-woo-feed-dropdown.php:167, includes/classes/class-woo-feed-products.php:1707
970
  msgid "Product Title"
971
  msgstr ""
972
 
973
- #: includes/classes/class-woo-feed-dropdown.php:168, includes/classes/class-woo-feed-products.php:1708
 
 
 
 
974
  msgid "Product Description"
975
  msgstr ""
976
 
977
- #: includes/classes/class-woo-feed-dropdown.php:169, includes/classes/class-woo-feed-products.php:1709
 
 
 
 
978
  msgid "Product Short Description"
979
  msgstr ""
980
 
981
- #: includes/classes/class-woo-feed-dropdown.php:170
982
- msgid "Primary Category"
 
 
 
 
 
 
 
 
983
  msgstr ""
984
 
985
- #: includes/classes/class-woo-feed-dropdown.php:171
986
- msgid "Product Local Category [Category Path]"
987
  msgstr ""
988
 
989
- #: includes/classes/class-woo-feed-dropdown.php:172, includes/classes/class-woo-feed-products.php:1711
 
 
 
 
 
 
 
 
990
  msgid "Product URL"
991
  msgstr ""
992
 
993
- #: includes/classes/class-woo-feed-dropdown.php:173, includes/classes/class-woo-feed-products.php:1712
 
 
 
 
 
 
 
 
994
  msgid "External Product URL"
995
  msgstr ""
996
 
997
- #: includes/classes/class-woo-feed-dropdown.php:174, includes/classes/class-woo-feed-products.php:1713
998
- msgid "Condition"
999
  msgstr ""
1000
 
1001
- #: includes/classes/class-woo-feed-dropdown.php:175, includes/classes/class-woo-feed-products.php:1714
1002
  msgid "Parent Id [Group Id]"
1003
  msgstr ""
1004
 
1005
- #: includes/classes/class-woo-feed-dropdown.php:176, includes/classes/class-woo-feed-products.php:1715
1006
  msgid "SKU"
1007
  msgstr ""
1008
 
1009
- #: includes/classes/class-woo-feed-dropdown.php:177, includes/classes/class-woo-feed-products.php:1716
 
 
 
 
1010
  msgid "Parent SKU"
1011
  msgstr ""
1012
 
1013
- #: includes/classes/class-woo-feed-dropdown.php:178, includes/classes/class-woo-feed-products.php:1717
1014
  msgid "Availability"
1015
  msgstr ""
1016
 
1017
- #: includes/classes/class-woo-feed-dropdown.php:179, includes/classes/class-woo-feed-products.php:1718
1018
  msgid "Quantity"
1019
  msgstr ""
1020
 
1021
- #: includes/classes/class-woo-feed-dropdown.php:180, includes/classes/class-woo-feed-products.php:1719
1022
  msgid "Regular Price"
1023
  msgstr ""
1024
 
1025
- #: includes/classes/class-woo-feed-dropdown.php:181, includes/classes/class-woo-feed-products.php:1720
1026
  msgid "Price"
1027
  msgstr ""
1028
 
1029
- #: includes/classes/class-woo-feed-dropdown.php:182, includes/classes/class-woo-feed-products.php:1721
1030
  msgid "Sale Price"
1031
  msgstr ""
1032
 
1033
- #: includes/classes/class-woo-feed-dropdown.php:183, includes/classes/class-woo-feed-products.php:1722
1034
  msgid "Regular Price With Tax"
1035
  msgstr ""
1036
 
1037
- #: includes/classes/class-woo-feed-dropdown.php:185, includes/classes/class-woo-feed-products.php:1724
1038
  msgid "Sale Price With Tax"
1039
  msgstr ""
1040
 
1041
- #: includes/classes/class-woo-feed-dropdown.php:186, includes/classes/class-woo-feed-products.php:1725
1042
  msgid "Sale Start Date"
1043
  msgstr ""
1044
 
1045
- #: includes/classes/class-woo-feed-dropdown.php:187, includes/classes/class-woo-feed-products.php:1726
1046
  msgid "Sale End Date"
1047
  msgstr ""
1048
 
1049
- #: includes/classes/class-woo-feed-dropdown.php:188, includes/classes/class-woo-feed-products.php:1727
 
 
 
 
1050
  msgid "Weight"
1051
  msgstr ""
1052
 
1053
- #: includes/classes/class-woo-feed-dropdown.php:189, includes/classes/class-woo-feed-products.php:1728
 
 
 
 
1054
  msgid "Width"
1055
  msgstr ""
1056
 
1057
- #: includes/classes/class-woo-feed-dropdown.php:190, includes/classes/class-woo-feed-products.php:1729
1058
  msgid "Height"
1059
  msgstr ""
1060
 
1061
- #: includes/classes/class-woo-feed-dropdown.php:191, includes/classes/class-woo-feed-products.php:1730
1062
  msgid "Length"
1063
  msgstr ""
1064
 
1065
- #: includes/classes/class-woo-feed-dropdown.php:192, includes/classes/class-woo-feed-products.php:1731
 
 
 
 
 
 
 
 
1066
  msgid "Shipping Class"
1067
  msgstr ""
1068
 
1069
- #: includes/classes/class-woo-feed-dropdown.php:193, includes/classes/class-woo-feed-products.php:1732
1070
  msgid "Product Type"
1071
  msgstr ""
1072
 
1073
- #: includes/classes/class-woo-feed-dropdown.php:194, includes/classes/class-woo-feed-products.php:1733
1074
  msgid "Variation Type"
1075
  msgstr ""
1076
 
1077
- #: includes/classes/class-woo-feed-dropdown.php:195, includes/classes/class-woo-feed-products.php:1734
1078
  msgid "Visibility"
1079
  msgstr ""
1080
 
1081
- #: includes/classes/class-woo-feed-dropdown.php:196, includes/classes/class-woo-feed-products.php:1735
1082
  msgid "Total Rating"
1083
  msgstr ""
1084
 
1085
- #: includes/classes/class-woo-feed-dropdown.php:197, includes/classes/class-woo-feed-products.php:1736
1086
  msgid "Average Rating"
1087
  msgstr ""
1088
 
1089
- #: includes/classes/class-woo-feed-dropdown.php:198, includes/classes/class-woo-feed-products.php:1737
1090
  msgid "Tags"
1091
  msgstr ""
1092
 
1093
- #: includes/classes/class-woo-feed-dropdown.php:199, includes/classes/class-woo-feed-products.php:1738
1094
  msgid "Sale Price Effective Date"
1095
  msgstr ""
1096
 
1097
- #: includes/classes/class-woo-feed-dropdown.php:200, includes/classes/class-woo-feed-products.php:1739
1098
  msgid "Is Bundle"
1099
  msgstr ""
1100
 
1101
- #: includes/classes/class-woo-feed-dropdown.php:201, includes/classes/class-woo-feed-products.php:1740
1102
  msgid "Author Name"
1103
  msgstr ""
1104
 
1105
- #: includes/classes/class-woo-feed-dropdown.php:202, includes/classes/class-woo-feed-products.php:1741
1106
  msgid "Author Email"
1107
  msgstr ""
1108
 
1109
- #: includes/classes/class-woo-feed-dropdown.php:203, includes/classes/class-woo-feed-products.php:1742
1110
  msgid "Date Created"
1111
  msgstr ""
1112
 
1113
- #: includes/classes/class-woo-feed-dropdown.php:204, includes/classes/class-woo-feed-products.php:1743
1114
  msgid "Date Updated"
1115
  msgstr ""
1116
 
1117
- #: includes/classes/class-woo-feed-dropdown.php:210, includes/classes/class-woo-feed-products.php:1764
 
 
 
 
 
 
 
 
 
 
 
 
1118
  msgid "Title [All in One SEO]"
1119
  msgstr ""
1120
 
1121
- #: includes/classes/class-woo-feed-dropdown.php:211, includes/classes/class-woo-feed-products.php:1765
1122
  msgid "Description [All in One SEO]"
1123
  msgstr ""
1124
 
1125
- #: includes/classes/class-woo-feed-dropdown.php:217, includes/classes/class-woo-feed-products.php:1771
1126
  msgid "Title [Yoast SEO]"
1127
  msgstr ""
1128
 
1129
- #: includes/classes/class-woo-feed-dropdown.php:218, includes/classes/class-woo-feed-products.php:1772
1130
  msgid "Description [Yoast SEO]"
1131
  msgstr ""
1132
 
1133
- #: includes/classes/class-woo-feed-dropdown.php:223, includes/classes/class-woo-feed-products.php:1788
1134
- msgid "Image Attributes"
1135
  msgstr ""
1136
 
1137
- #: includes/classes/class-woo-feed-dropdown.php:225, includes/classes/class-woo-feed-products.php:1746
1138
- msgid "Main Image"
1139
  msgstr ""
1140
 
1141
- #: includes/classes/class-woo-feed-dropdown.php:226, includes/classes/class-woo-feed-products.php:1747
1142
- msgid "Featured Image"
1143
  msgstr ""
1144
 
1145
- #: includes/classes/class-woo-feed-dropdown.php:227, includes/classes/class-woo-feed-products.php:1748
1146
- msgid "Images [Comma Separated]"
1147
  msgstr ""
1148
 
1149
- #: includes/classes/class-woo-feed-dropdown.php:228, includes/classes/class-woo-feed-products.php:1749
1150
- msgid "Additional Image 1"
1151
  msgstr ""
1152
 
1153
- #: includes/classes/class-woo-feed-dropdown.php:229, includes/classes/class-woo-feed-products.php:1750
1154
- msgid "Additional Image 2"
1155
  msgstr ""
1156
 
1157
- #: includes/classes/class-woo-feed-dropdown.php:230, includes/classes/class-woo-feed-products.php:1751
1158
- msgid "Additional Image 3"
1159
  msgstr ""
1160
 
1161
- #: includes/classes/class-woo-feed-dropdown.php:231, includes/classes/class-woo-feed-products.php:1752
1162
- msgid "Additional Image 4"
1163
  msgstr ""
1164
 
1165
- #: includes/classes/class-woo-feed-dropdown.php:232, includes/classes/class-woo-feed-products.php:1753
1166
- msgid "Additional Image 5"
1167
  msgstr ""
1168
 
1169
- #: includes/classes/class-woo-feed-dropdown.php:233, includes/classes/class-woo-feed-products.php:1754
1170
- msgid "Additional Image 6"
1171
  msgstr ""
1172
 
1173
- #: includes/classes/class-woo-feed-dropdown.php:234, includes/classes/class-woo-feed-products.php:1755
1174
- msgid "Additional Image 7"
1175
  msgstr ""
1176
 
1177
- #: includes/classes/class-woo-feed-dropdown.php:235, includes/classes/class-woo-feed-products.php:1756
1178
- msgid "Additional Image 8"
1179
  msgstr ""
1180
 
1181
- #: includes/classes/class-woo-feed-dropdown.php:236, includes/classes/class-woo-feed-products.php:1757
1182
- msgid "Additional Image 9"
1183
  msgstr ""
1184
 
1185
- #: includes/classes/class-woo-feed-dropdown.php:237, includes/classes/class-woo-feed-products.php:1758
1186
- msgid "Additional Image 10"
1187
  msgstr ""
1188
 
1189
- #: includes/classes/class-woo-feed-ftp.php:79
1190
- msgid "FTP connection has failed!"
1191
  msgstr ""
1192
 
1193
- #. translators: 1: ftp username, 2: server host, 3: server port
1194
- #: includes/classes/class-woo-feed-ftp.php:81
1195
- msgid "Attempted to connect to %1$s@%2$s:%3$s"
1196
  msgstr ""
1197
 
1198
- #: includes/classes/class-woo-feed-ftp.php:90
1199
- msgid "FTP Login has failed!"
1200
  msgstr ""
1201
 
1202
- #. translators: 1: ftp username, 2: server host, 3: server port
1203
- #: includes/classes/class-woo-feed-ftp.php:92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1204
  msgid "Attempted to login %1$s@%2$s:%3$s"
1205
  msgstr ""
1206
 
@@ -1221,6 +1677,55 @@ msgstr ""
1221
  msgid "Excerpt View"
1222
  msgstr ""
1223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1224
  #: includes/classes/class-woo-feed-merchant.php:311
1225
  msgid "Custom Template"
1226
  msgstr ""
@@ -1234,371 +1739,451 @@ msgid "Popular Templates"
1234
  msgstr ""
1235
 
1236
  #: includes/classes/class-woo-feed-merchant.php:324
1237
- msgid "Google Adwords"
1238
  msgstr ""
1239
 
1240
  #: includes/classes/class-woo-feed-merchant.php:325
1241
- msgid "Bing"
1242
  msgstr ""
1243
 
1244
  #: includes/classes/class-woo-feed-merchant.php:326
1245
- msgid "Facebook"
1246
  msgstr ""
1247
 
1248
  #: includes/classes/class-woo-feed-merchant.php:327
1249
- msgid "Google Shopping"
1250
  msgstr ""
1251
 
1252
  #: includes/classes/class-woo-feed-merchant.php:328
1253
- msgid "Google Local Product"
1254
  msgstr ""
1255
 
1256
  #: includes/classes/class-woo-feed-merchant.php:329
1257
- msgid "Google Local Product Inventory"
1258
  msgstr ""
1259
 
1260
  #: includes/classes/class-woo-feed-merchant.php:330
1261
- msgid "Google Shopping Action"
1262
  msgstr ""
1263
 
1264
  #: includes/classes/class-woo-feed-merchant.php:331
1265
- msgid "Idealo"
1266
  msgstr ""
1267
 
1268
  #: includes/classes/class-woo-feed-merchant.php:332
1269
- msgid "Pinterest"
1270
  msgstr ""
1271
 
1272
  #: includes/classes/class-woo-feed-merchant.php:333
1273
- msgid "PriceSpy"
1274
  msgstr ""
1275
 
1276
  #: includes/classes/class-woo-feed-merchant.php:334
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1277
  msgid "Yandex (CSV)"
1278
  msgstr ""
1279
 
1280
- #: includes/classes/class-woo-feed-merchant.php:345
1281
  msgid "Templates"
1282
  msgstr ""
1283
 
1284
- #: includes/classes/class-woo-feed-merchant.php:346
1285
  msgid "AdForm"
1286
  msgstr ""
1287
 
1288
- #: includes/classes/class-woo-feed-merchant.php:347
1289
  msgid "AdRoll"
1290
  msgstr ""
1291
 
1292
- #: includes/classes/class-woo-feed-merchant.php:348
1293
  msgid "Avantlink"
1294
  msgstr ""
1295
 
1296
- #: includes/classes/class-woo-feed-merchant.php:349
1297
  msgid "Become"
1298
  msgstr ""
1299
 
1300
- #: includes/classes/class-woo-feed-merchant.php:350
1301
  msgid "Beslist.nl"
1302
  msgstr ""
1303
 
1304
- #: includes/classes/class-woo-feed-merchant.php:351
 
 
 
 
1305
  msgid "Billiger.de"
1306
  msgstr ""
1307
 
1308
- #: includes/classes/class-woo-feed-merchant.php:352
1309
  msgid "Bol.com"
1310
  msgstr ""
1311
 
1312
- #: includes/classes/class-woo-feed-merchant.php:353
1313
  msgid "Bonanza"
1314
  msgstr ""
1315
 
1316
- #: includes/classes/class-woo-feed-merchant.php:354
 
 
 
 
1317
  msgid "CDiscount.fr"
1318
  msgstr ""
1319
 
1320
- #: includes/classes/class-woo-feed-merchant.php:355
1321
  msgid "Comparer.be"
1322
  msgstr ""
1323
 
1324
- #: includes/classes/class-woo-feed-merchant.php:356
1325
  msgid "Connexity"
1326
  msgstr ""
1327
 
1328
- #: includes/classes/class-woo-feed-merchant.php:357
1329
  msgid "Criteo"
1330
  msgstr ""
1331
 
1332
- #: includes/classes/class-woo-feed-merchant.php:358
1333
  msgid "Crowdfox"
1334
  msgstr ""
1335
 
1336
- #: includes/classes/class-woo-feed-merchant.php:359
1337
  msgid "Daisycon Advertiser (General)"
1338
  msgstr ""
1339
 
1340
- #: includes/classes/class-woo-feed-merchant.php:360
1341
  msgid "Daisycon Advertiser (Automotive)"
1342
  msgstr ""
1343
 
1344
- #: includes/classes/class-woo-feed-merchant.php:361
1345
  msgid "Daisycon Advertiser (Books)"
1346
  msgstr ""
1347
 
1348
- #: includes/classes/class-woo-feed-merchant.php:362
1349
  msgid "Daisycon Advertiser (Cosmetics)"
1350
  msgstr ""
1351
 
1352
- #: includes/classes/class-woo-feed-merchant.php:363
1353
  msgid "Daisycon Advertiser (Daily Offers)"
1354
  msgstr ""
1355
 
1356
- #: includes/classes/class-woo-feed-merchant.php:364
1357
  msgid "Daisycon Advertiser (Electronics)"
1358
  msgstr ""
1359
 
1360
- #: includes/classes/class-woo-feed-merchant.php:365
1361
  msgid "Daisycon Advertiser (Fashion)"
1362
  msgstr ""
1363
 
1364
- #: includes/classes/class-woo-feed-merchant.php:366
1365
  msgid "Daisycon Advertiser (Food & Drinks)"
1366
  msgstr ""
1367
 
1368
- #: includes/classes/class-woo-feed-merchant.php:367
1369
  msgid "Daisycon Advertiser (Holidays: Accommodations and transport)"
1370
  msgstr ""
1371
 
1372
- #: includes/classes/class-woo-feed-merchant.php:368
1373
  msgid "Daisycon Advertiser (Holidays: Accommodations)"
1374
  msgstr ""
1375
 
1376
- #: includes/classes/class-woo-feed-merchant.php:369
1377
  msgid "Daisycon Advertiser (Holidays: Trips)"
1378
  msgstr ""
1379
 
1380
- #: includes/classes/class-woo-feed-merchant.php:370
1381
  msgid "Daisycon Advertiser (Home & Garden)"
1382
  msgstr ""
1383
 
1384
- #: includes/classes/class-woo-feed-merchant.php:371
1385
  msgid "Daisycon Advertiser (Housing)"
1386
  msgstr ""
1387
 
1388
- #: includes/classes/class-woo-feed-merchant.php:372
1389
  msgid "Daisycon Advertiser (Magazines)"
1390
  msgstr ""
1391
 
1392
- #: includes/classes/class-woo-feed-merchant.php:373
1393
  msgid "Daisycon Advertiser (Studies & Trainings)"
1394
  msgstr ""
1395
 
1396
- #: includes/classes/class-woo-feed-merchant.php:374
1397
  msgid "Daisycon Advertiser (Telecom: Accessories)"
1398
  msgstr ""
1399
 
1400
- #: includes/classes/class-woo-feed-merchant.php:375
1401
  msgid "Daisycon Advertiser (Telecom: All-in-one)"
1402
  msgstr ""
1403
 
1404
- #: includes/classes/class-woo-feed-merchant.php:376
1405
  msgid "Daisycon Advertiser (Telecom: GSM + Subscription)"
1406
  msgstr ""
1407
 
1408
- #: includes/classes/class-woo-feed-merchant.php:377
1409
  msgid "Daisycon Advertiser (Telecom: GSM only)"
1410
  msgstr ""
1411
 
1412
- #: includes/classes/class-woo-feed-merchant.php:378
1413
  msgid "Daisycon Advertiser (Telecom: Sim only)"
1414
  msgstr ""
1415
 
1416
- #: includes/classes/class-woo-feed-merchant.php:379
1417
  msgid "Daisycon Advertiser (Work & Jobs)"
1418
  msgstr ""
1419
 
1420
- #: includes/classes/class-woo-feed-merchant.php:380
1421
  msgid "Dooyoo"
1422
  msgstr ""
1423
 
1424
- #: includes/classes/class-woo-feed-merchant.php:381
 
 
 
 
1425
  msgid "Fruugo"
1426
  msgstr ""
1427
 
1428
- #: includes/classes/class-woo-feed-merchant.php:382
 
 
 
 
1429
  msgid "Fruugoaustralia.com"
1430
  msgstr ""
1431
 
1432
- #: includes/classes/class-woo-feed-merchant.php:383
1433
  msgid "Fyndiq.se"
1434
  msgstr ""
1435
 
1436
- #: includes/classes/class-woo-feed-merchant.php:384
 
 
 
 
 
 
 
 
1437
  msgid "Hintaseuranta.fi"
1438
  msgstr ""
1439
 
1440
- #: includes/classes/class-woo-feed-merchant.php:385
1441
  msgid "Incurvy"
1442
  msgstr ""
1443
 
1444
- #: includes/classes/class-woo-feed-merchant.php:386
1445
  msgid "Jet.com"
1446
  msgstr ""
1447
 
1448
- #: includes/classes/class-woo-feed-merchant.php:387
1449
  msgid "Kelkoo"
1450
  msgstr ""
1451
 
1452
- #: includes/classes/class-woo-feed-merchant.php:388
1453
  msgid "Kieskeurig.nl"
1454
  msgstr ""
1455
 
1456
- #: includes/classes/class-woo-feed-merchant.php:389
1457
  msgid "Kijiji.ca"
1458
  msgstr ""
1459
 
1460
- #: includes/classes/class-woo-feed-merchant.php:390
1461
  msgid "LeGuide"
1462
  msgstr ""
1463
 
1464
- #: includes/classes/class-woo-feed-merchant.php:391
1465
  msgid "Marktplaats.nl"
1466
  msgstr ""
1467
 
1468
- #: includes/classes/class-woo-feed-merchant.php:392
1469
  msgid "Miinto.nl"
1470
  msgstr ""
1471
 
1472
- #: includes/classes/class-woo-feed-merchant.php:393
 
 
 
 
1473
  msgid "Modina.de"
1474
  msgstr ""
1475
 
1476
- #: includes/classes/class-woo-feed-merchant.php:394
 
 
 
 
1477
  msgid "Myshopping.com.au"
1478
  msgstr ""
1479
 
1480
- #: includes/classes/class-woo-feed-merchant.php:395
1481
  msgid "TheNextAd"
1482
  msgstr ""
1483
 
1484
- #: includes/classes/class-woo-feed-merchant.php:396
1485
  msgid "Nextag"
1486
  msgstr ""
1487
 
1488
- #: includes/classes/class-woo-feed-merchant.php:397
1489
  msgid "Polyvore"
1490
  msgstr ""
1491
 
1492
- #: includes/classes/class-woo-feed-merchant.php:398
1493
  msgid "Price Grabber"
1494
  msgstr ""
1495
 
1496
- #: includes/classes/class-woo-feed-merchant.php:399
1497
- msgid "Price Runner"
1498
  msgstr ""
1499
 
1500
- #: includes/classes/class-woo-feed-merchant.php:400
1501
- msgid "Prisjakt"
1502
  msgstr ""
1503
 
1504
- #: includes/classes/class-woo-feed-merchant.php:401
1505
  msgid "Rakuten.de"
1506
  msgstr ""
1507
 
1508
- #: includes/classes/class-woo-feed-merchant.php:402
1509
  msgid "Real"
1510
  msgstr ""
1511
 
1512
- #: includes/classes/class-woo-feed-merchant.php:403
1513
  msgid "ShareASale"
1514
  msgstr ""
1515
 
1516
- #: includes/classes/class-woo-feed-merchant.php:404
1517
  msgid "Shopalike.fr"
1518
  msgstr ""
1519
 
1520
- #: includes/classes/class-woo-feed-merchant.php:405
1521
  msgid "Shopbot"
1522
  msgstr ""
1523
 
1524
- #: includes/classes/class-woo-feed-merchant.php:406
1525
  msgid "Shopmania"
1526
  msgstr ""
1527
 
1528
- #: includes/classes/class-woo-feed-merchant.php:407
1529
  msgid "Shopping.com"
1530
  msgstr ""
1531
 
1532
- #: includes/classes/class-woo-feed-merchant.php:408
1533
  msgid "Shopzilla"
1534
  msgstr ""
1535
 
1536
- #: includes/classes/class-woo-feed-merchant.php:409
1537
  msgid "SkinFlint.co.uk"
1538
  msgstr ""
1539
 
1540
- #: includes/classes/class-woo-feed-merchant.php:410
1541
  msgid "Skroutz.gr"
1542
  msgstr ""
1543
 
1544
- #: includes/classes/class-woo-feed-merchant.php:411
1545
  msgid "Smartly.io"
1546
  msgstr ""
1547
 
1548
- #: includes/classes/class-woo-feed-merchant.php:412
1549
  msgid "Spartoo.fi"
1550
  msgstr ""
1551
 
1552
- #: includes/classes/class-woo-feed-merchant.php:413
 
 
 
 
1553
  msgid "Stylight.com"
1554
  msgstr ""
1555
 
1556
- #: includes/classes/class-woo-feed-merchant.php:414
1557
  msgid "Trovaprezzi.it"
1558
  msgstr ""
1559
 
1560
- #: includes/classes/class-woo-feed-merchant.php:415
1561
  msgid "Twenga"
1562
  msgstr ""
1563
 
1564
- #: includes/classes/class-woo-feed-merchant.php:416
 
 
 
 
 
 
 
 
1565
  msgid "Vertaa.fi"
1566
  msgstr ""
1567
 
1568
- #: includes/classes/class-woo-feed-merchant.php:417
1569
  msgid "Walmart"
1570
  msgstr ""
1571
 
1572
- #: includes/classes/class-woo-feed-merchant.php:418
1573
  msgid "Webmarchand"
1574
  msgstr ""
1575
 
1576
- #: includes/classes/class-woo-feed-merchant.php:419
 
 
 
 
1577
  msgid "Wish.com"
1578
  msgstr ""
1579
 
1580
- #: includes/classes/class-woo-feed-merchant.php:420
1581
  msgid "Yahoo NFA"
1582
  msgstr ""
1583
 
1584
- #: includes/classes/class-woo-feed-merchant.php:421
1585
  msgid "Zap.co.il"
1586
  msgstr ""
1587
 
1588
- #: includes/classes/class-woo-feed-products.php:1710
1589
- msgid "Product Local Category"
1590
  msgstr ""
1591
 
1592
- #: includes/classes/class-woo-feed-products.php:1808
1593
- msgid "Product Custom Attributes"
1594
  msgstr ""
1595
 
1596
- #: includes/classes/class-woo-feed-products.php:1816
1597
- msgid "Custom Fields/Post Meta"
1598
  msgstr ""
1599
 
1600
- #: includes/classes/class-woo-feed-products.php:1826
1601
- msgid "Custom Taxonomies"
 
 
 
 
1602
  msgstr ""
1603
 
1604
  #: includes/classes/class-woo-feed-webappick-api.php:96
@@ -1676,34 +2261,33 @@ msgid "Premium"
1676
  msgstr ""
1677
 
1678
  #. translators: 1: plugin name,2: Slightly Smiling Face (Emoji), 3: line break 'br' tag
1679
- #: includes/classes/class-woo-feed-webappick-api.php:323
1680
- msgid "%2$s We have spent countless hours developing this free plugin for you, and we would really appreciate it if you dropped us a quick rating. Your opinion matters a lot to us.%3$s It helps us to get better. Thanks for using %1$s."
1681
  msgstr ""
1682
 
1683
- #: includes/classes/class-woo-feed-webappick-api.php:330
1684
  msgid "Remind me later"
1685
  msgstr ""
1686
 
1687
- #: includes/classes/class-woo-feed-webappick-api.php:331
1688
  msgid "I would not"
1689
  msgstr ""
1690
 
1691
- #: includes/classes/class-woo-feed-webappick-api.php:332
1692
- msgid "Review Here"
1693
  msgstr ""
1694
 
1695
- #. translators: 1: This plugin name, 2: Opening Bold Tag 3: Closing Bold Tad
1696
- #: includes/classes/class-woo-feed-webappick-api.php:346
1697
- msgid "You are awesome for using %1$s. Free version works great for up to %2$s2000 products including variations.%3$s"
1698
  msgstr ""
1699
 
1700
  #. translators: 1: This plugin name, 2: Pro version purchase link
1701
- #: includes/classes/class-woo-feed-webappick-api.php:363
1702
  msgid "You are awesome for using %1$s. Using the %2$s version you can make multilingual feed for your WPML languages."
1703
  msgstr ""
1704
 
1705
  #. translators: 1: This plugin Name, 2: Incompatible plugin name, 3: Pro version purchase link
1706
- #: includes/classes/class-woo-feed-webappick-api.php:378
1707
  msgid "%1$s isn't fully compatible with %2$s. Get the %3$s version for full support."
1708
  msgstr ""
1709
 
@@ -1711,6 +2295,156 @@ msgstr ""
1711
  msgid "Request Successful."
1712
  msgstr ""
1713
 
1714
- #: includes/feeds/class-woo-feed-facebook.php:500, includes/feeds/class-woo-feed-google.php:584, includes/feeds/class-woo-feed-pinterest.php:585
1715
- msgid "Shorting Products"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1716
  msgstr ""
1
+ # Copyright (C) 2021 WooFeed
2
  # This file is distributed under the same license as the WooFeed package.
3
  msgid ""
4
  msgstr ""
12
  "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
13
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
 
15
+ #: woo-feed.php:210, woo-feed.php:330, woo-feed.php:405, woo-feed.php:761, woo-feed.php:801, woo-feed.php:821, woo-feed.php:847
16
  msgid "Unauthorized Action."
17
  msgstr ""
18
 
19
+ #: woo-feed.php:215, woo-feed.php:334, includes/helper.php:1799, includes/classes/class-woo-feed-webappick-api.php:427, includes/classes/class-woo-feed-webappick-api.php:451
20
  msgid "Invalid Request."
21
  msgstr ""
22
 
23
+ #: woo-feed.php:288
24
  msgid "Failed to fetch products."
25
  msgstr ""
26
 
27
+ #: woo-feed.php:409
28
  msgid "Invalid Feed."
29
  msgstr ""
30
 
31
+ #: woo-feed.php:533
32
  msgid "Feed Making Complete"
33
  msgstr ""
34
 
35
+ #: woo-feed.php:617, woo-feed.php:657
36
  msgid "Failed security check"
37
  msgstr ""
38
 
39
+ #: woo-feed.php:621, woo-feed.php:661
40
  msgid "Invalid Feed Type!"
41
  msgstr ""
42
 
43
+ #: woo-feed.php:767
44
  msgid "Invalid Merchant"
45
  msgstr ""
46
 
47
+ #: admin/class-woo-feed-admin.php:148, includes/helper.php:770
48
  msgid "N/A"
49
  msgstr ""
50
 
51
+ #: admin/class-woo-feed-admin.php:149
52
  msgid "Generating..."
53
  msgstr ""
54
 
55
+ #: admin/class-woo-feed-admin.php:150
56
  msgid "Learn More.."
57
  msgstr ""
58
 
59
+ #: admin/class-woo-feed-admin.php:152, admin/partials/woo-feed-edit-config.php:66
60
  msgid "Select A Category"
61
  msgstr ""
62
 
63
+ #: admin/class-woo-feed-admin.php:153
64
  msgid "Loading Template..."
65
  msgstr ""
66
 
67
+ #: admin/class-woo-feed-admin.php:154
68
  msgid "Delivering Configuration..."
69
  msgstr ""
70
 
71
+ #: admin/class-woo-feed-admin.php:155
72
  msgid "Saving Configuration..."
73
  msgstr ""
74
 
75
+ #: admin/class-woo-feed-admin.php:156
76
  msgid "Wait! Checking Extensions ..."
77
  msgstr ""
78
 
79
+ #: admin/class-woo-feed-admin.php:157
80
  msgid "Warning! Enable PHP ssh2 extension to use SFTP. Contact your server administrator."
81
  msgstr ""
82
 
83
+ #: admin/class-woo-feed-admin.php:158
84
  msgid "SFTP Available!"
85
  msgstr ""
86
 
87
+ #: admin/class-woo-feed-admin.php:159
88
  msgid "Please add one or more items to continue."
89
  msgstr ""
90
 
91
+ #: admin/class-woo-feed-admin.php:161
92
  msgid "Are you sure you want to delete this item?"
93
  msgstr ""
94
 
95
+ #: admin/class-woo-feed-admin.php:162
96
  msgid "Are you sure you want to delete selected items?"
97
  msgstr ""
98
 
99
+ #: admin/class-woo-feed-admin.php:173
100
  msgid "There was an error processing ajax request."
101
  msgstr ""
102
 
103
+ #: admin/class-woo-feed-admin.php:206
104
  msgid "Docs"
105
  msgstr ""
106
 
107
+ #: admin/class-woo-feed-admin.php:208, admin/class-woo-feed-admin.php:234, admin/class-woo-feed-admin.php:234, admin/partials/woo-feed-settings.php:17
108
  msgid "Settings"
109
  msgstr ""
110
 
111
+ #: admin/class-woo-feed-admin.php:230, admin/class-woo-feed-admin.php:230, includes/classes/class-woo-feed-webappick-api.php:296
112
+ msgid "CTX Feed"
113
  msgstr ""
114
 
115
+ #: admin/class-woo-feed-admin.php:231, admin/class-woo-feed-admin.php:231
116
  msgid "Manage Feeds"
117
  msgstr ""
118
 
119
+ #: admin/class-woo-feed-admin.php:232, admin/class-woo-feed-admin.php:232
120
  msgid "Make Feed"
121
  msgstr ""
122
 
123
+ #: admin/class-woo-feed-admin.php:233, admin/class-woo-feed-admin.php:233, admin/partials/woo-feed-category-mapping.php:25, admin/partials/woo-feed-pro-vs-free.php:225
124
+ msgid "Category Mapping"
125
+ msgstr ""
126
+
127
+ #: admin/class-woo-feed-admin.php:235, admin/class-woo-feed-admin.php:235, admin/partials/woo-feed-pro-vs-free.php:82, includes/classes/class-woo-feed-dropdown.php:641
128
+ msgid "WP Options"
129
+ msgstr ""
130
+
131
+ #: admin/class-woo-feed-admin.php:236, admin/class-woo-feed-admin.php:236
132
+ msgid "Status"
133
+ msgstr ""
134
+
135
+ #: admin/class-woo-feed-admin.php:237, includes/classes/class-woo-feed-admin-message.php:123, includes/classes/class-woo-feed-webappick-api.php:180
136
  msgid "Documentation"
137
  msgstr ""
138
 
139
+ #: admin/class-woo-feed-category-list.php:35
140
+ msgid "mapping"
141
+ msgstr ""
142
+
143
+ #: admin/class-woo-feed-category-list.php:36
144
+ msgid "mappings"
145
+ msgstr ""
146
+
147
+ #: admin/class-woo-feed-category-list.php:186
148
+ msgid "No mapping available."
149
+ msgstr ""
150
+
151
+ #: admin/class-woo-feed-category-list.php:248
152
+ msgid "Category Name"
153
+ msgstr ""
154
+
155
+ #: admin/class-woo-feed-category-list.php:249
156
+ msgid "Category Type"
157
+ msgstr ""
158
+
159
+ #: admin/class-woo-feed-category-list.php:250, admin/class-woo-feed-manage-list.php:291, admin/class-woo-feed-option-list.php:248, admin/partials/woo-feed-settings.php:195
160
+ msgid "Action"
161
+ msgstr ""
162
+
163
+ #: admin/class-woo-feed-category-list.php:296, admin/class-woo-feed-manage-list.php:337, admin/class-woo-feed-option-list.php:295
164
+ msgid "Delete"
165
+ msgstr ""
166
+
167
+ #: admin/class-woo-feed-category-list.php:316, admin/class-woo-feed-category-list.php:343
168
+ msgid "Failed To Delete Mapping. You do not have sufficient permission to delete."
169
+ msgstr ""
170
+
171
+ #: admin/class-woo-feed-category-list.php:335, admin/class-woo-feed-manage-list.php:378, admin/class-woo-feed-manage-list.php:387, admin/class-woo-feed-option-list.php:336
172
+ msgid "You do not have sufficient permission to delete!"
173
+ msgstr ""
174
+
175
  #: admin/class-woo-feed-manage-list.php:36
176
  msgid "feed"
177
  msgstr ""
180
  msgid "feeds"
181
  msgstr ""
182
 
183
+ #: admin/class-woo-feed-manage-list.php:113, includes/helper.php:902
184
  msgid "View"
185
  msgstr ""
186
 
188
  msgid "Regenerate"
189
  msgstr ""
190
 
191
+ #: admin/class-woo-feed-manage-list.php:116, admin/partials/woo-feed-status.php:46
192
  msgid "Download"
193
  msgstr ""
194
 
196
  msgid "Export Feed Config"
197
  msgstr ""
198
 
199
+ #: admin/class-woo-feed-manage-list.php:219
200
  msgid "No feed available."
201
  msgstr ""
202
 
203
+ #: admin/class-woo-feed-manage-list.php:285
204
  msgid "Auto Update"
205
  msgstr ""
206
 
207
+ #: admin/class-woo-feed-manage-list.php:286
208
  msgid "Feed Name"
209
  msgstr ""
210
 
211
+ #: admin/class-woo-feed-manage-list.php:287
212
  msgid "Provider"
213
  msgstr ""
214
 
215
+ #: admin/class-woo-feed-manage-list.php:288, admin/partials/woo-feed-edit-config.php:12
216
  msgid "Type"
217
  msgstr ""
218
 
219
+ #: admin/class-woo-feed-manage-list.php:289
220
  msgid "Feed URL"
221
  msgstr ""
222
 
223
+ #: admin/class-woo-feed-manage-list.php:290
224
  msgid "Last Updated"
225
  msgstr ""
226
 
227
+ #: admin/class-woo-feed-manage-list.php:357
228
+ msgid "Failed To Delete Feed. You do not have sufficient permission to delete."
229
  msgstr ""
230
 
231
+ #: admin/class-woo-feed-option-list.php:35
232
+ msgid "option"
233
  msgstr ""
234
 
235
+ #: admin/class-woo-feed-option-list.php:36
236
+ msgid "options"
237
  msgstr ""
238
 
239
+ #: admin/class-woo-feed-option-list.php:185
240
+ msgid "No option saved."
241
+ msgstr ""
242
+
243
+ #: admin/class-woo-feed-option-list.php:246, admin/partials/woo-feed-add-option.php:11
244
+ msgid "Option Name"
245
+ msgstr ""
246
+
247
+ #: admin/class-woo-feed-option-list.php:247
248
+ msgid "Option Value"
249
+ msgstr ""
250
+
251
+ #: admin/class-woo-feed-option-list.php:316, admin/class-woo-feed-option-list.php:356
252
+ msgid "Failed To Delete Option. You do not have sufficient permission to delete."
253
  msgstr ""
254
 
255
  #. translators: %s: FAQ Title
257
  msgid "Toggle panel: %s"
258
  msgstr ""
259
 
260
+ #: includes/class-woo-feed-docs.php:124, admin/partials/woo-feed-pro-vs-free.php:493
261
  msgid "Still need help?"
262
  msgstr ""
263
 
264
+ #: includes/class-woo-feed-docs.php:125, admin/partials/woo-feed-pro-vs-free.php:494
265
  msgid "Have we not answered your question?<br>Don't worry, you can contact us for more information..."
266
  msgstr ""
267
 
268
+ #: includes/class-woo-feed-docs.php:128, admin/partials/woo-feed-pro-vs-free.php:497, includes/classes/class-woo-feed-admin-message.php:125, includes/classes/class-woo-feed-webappick-api.php:200
269
  msgid "Get Support"
270
  msgstr ""
271
 
277
  msgid "WooCommerce"
278
  msgstr ""
279
 
280
+ #: includes/helper.php:204, includes/helper.php:221
281
  msgid "WooCommerce Product Feed"
282
  msgstr ""
283
 
291
  msgid "%1$s requires %2$s version %3$s or above and %4$s found. Please upgrade %2$s to the latest version here %5$s"
292
  msgstr ""
293
 
294
+ #: includes/helper.php:289
295
+ msgid "Generating Product Feed"
296
+ msgstr ""
297
+
298
+ #: includes/helper.php:377
299
  msgid "WC_Product_Query"
300
  msgstr ""
301
 
302
+ #: includes/helper.php:378
303
  msgid "WP_Query"
304
  msgstr ""
305
 
306
+ #: includes/helper.php:379
307
  msgid "Both"
308
  msgstr ""
309
 
310
+ #: includes/helper.php:392
311
  msgid "No Expiration "
312
  msgstr ""
313
 
314
+ #: includes/helper.php:393
315
  msgid "1 Month"
316
  msgstr ""
317
 
318
+ #: includes/helper.php:394, includes/helper.php:1891
319
  msgid "1 Week"
320
  msgstr ""
321
 
322
+ #: includes/helper.php:395, includes/helper.php:1892
323
  msgid "24 Hours"
324
  msgstr ""
325
 
326
+ #: includes/helper.php:396, includes/helper.php:1893
327
  msgid "12 Hours"
328
  msgstr ""
329
 
330
+ #: includes/helper.php:397, includes/helper.php:1894
331
  msgid "6 Hours"
332
  msgstr ""
333
 
334
+ #: includes/helper.php:398, includes/helper.php:1895
335
  msgid "1 Hours"
336
  msgstr ""
337
 
338
+ #: includes/helper.php:834
339
  msgid "Feed Specification:"
340
  msgstr ""
341
 
342
+ #: includes/helper.php:903
343
+ msgid "Open Feed File"
344
+ msgstr ""
345
+
346
+ #: includes/helper.php:1626, includes/helper.php:1626, includes/helper.php:1800, libs/WebAppick/AppServices/Insights.php:813, libs/WebAppick/AppServices/Promotions.php:362
347
  msgid "Invalid Request"
348
  msgstr ""
349
 
350
+ #: includes/helper.php:1685
351
  msgid "Empty File Uploaded. Try again."
352
  msgstr ""
353
 
354
+ #: includes/helper.php:1686
355
  msgid "Empty File"
356
  msgstr ""
357
 
358
+ #: includes/helper.php:1689, includes/helper.php:1700, includes/helper.php:1712, includes/helper.php:1723, includes/helper.php:1737, includes/helper.php:1747, includes/helper.php:1759, includes/helper.php:1803
359
  msgid "&laquo; Back"
360
  msgstr ""
361
 
362
+ #: includes/helper.php:1696
363
  msgid "Unable to read file content"
364
  msgstr ""
365
 
366
+ #: includes/helper.php:1697, includes/helper.php:1709, includes/helper.php:1720, includes/helper.php:1734, includes/helper.php:1744, includes/helper.php:1756
367
  msgid "Invalid File"
368
  msgstr ""
369
 
370
+ #: includes/helper.php:1708
371
  msgid "Unable to read data from file."
372
  msgstr ""
373
 
374
+ #: includes/helper.php:1719
375
  msgid "Unable to read file info."
376
  msgstr ""
377
 
378
+ #: includes/helper.php:1733
379
  msgid "Unable to read feed data from file."
380
  msgstr ""
381
 
382
+ #: includes/helper.php:1743
383
  msgid "Unable to verify the file."
384
  msgstr ""
385
 
386
+ #: includes/helper.php:1755
387
  msgid "Invalid or corrupted config file."
388
  msgstr ""
389
 
390
+ #: includes/helper.php:2631
391
+ msgid "Brand"
392
+ msgstr ""
393
+
394
+ #: includes/helper.php:2632
395
+ msgid "GTIN"
396
+ msgstr ""
397
+
398
+ #: includes/helper.php:2633
399
+ msgid "MPN"
400
+ msgstr ""
401
+
402
+ #: includes/helper.php:2634
403
+ msgid "EAN"
404
+ msgstr ""
405
+
406
+ #: includes/helper.php:2635
407
+ msgid "ISBN"
408
+ msgstr ""
409
+
410
+ #: includes/helper.php:2636
411
+ msgid "Age group"
412
+ msgstr ""
413
+
414
+ #: includes/helper.php:2637
415
+ msgid "Gender"
416
+ msgstr ""
417
+
418
+ #: includes/helper.php:2638
419
+ msgid "Material"
420
+ msgstr ""
421
+
422
+ #: includes/helper.php:2639
423
+ msgid "Cost of good sold"
424
+ msgstr ""
425
+
426
+ #: includes/helper.php:2640, includes/classes/class-woo-feed-dropdown.php:585
427
+ msgid "Unit Price Base Measure"
428
+ msgstr ""
429
+
430
+ #: includes/helper.php:2641
431
+ msgid "Custom field 0"
432
+ msgstr ""
433
+
434
+ #: includes/helper.php:2642
435
+ msgid "Custom field 1"
436
+ msgstr ""
437
+
438
+ #: includes/helper.php:2643
439
+ msgid "Custom field 2"
440
+ msgstr ""
441
+
442
+ #: includes/helper.php:2644
443
+ msgid "Custom field 3"
444
+ msgstr ""
445
+
446
+ #: includes/helper.php:2645
447
+ msgid "Custom field 4"
448
+ msgstr ""
449
+
450
+ #: includes/helper.php:2711, includes/helper.php:2795
451
+ msgid "CUSTOM FIELDS by CTX Feed"
452
+ msgstr ""
453
+
454
+ #: includes/helper.php:2723
455
+ msgid " here."
456
+ msgstr ""
457
+
458
+ #: includes/helper.php:2876
459
+ msgid "Mapping Not Changed"
460
+ msgstr ""
461
+
462
+ #: includes/helper.php:2882
463
+ msgid "Mapping Updated Successfully"
464
+ msgstr ""
465
+
466
+ #: includes/helper.php:3020
467
+ msgid "Clear Cache"
468
+ msgstr ""
469
+
470
+ #: includes/helper.php:3194
471
+ msgid "User meta updated successfully."
472
+ msgstr ""
473
+
474
+ #: includes/helper.php:3267, includes/helper.php:3269
475
+ msgid "by CTX Feed"
476
+ msgstr ""
477
+
478
+ #: includes/helper.php:3273, libs/WebAppick/AppServices/Insights.php:977
479
+ msgid "Name"
480
+ msgstr ""
481
+
482
+ #: includes/helper.php:3277
483
+ msgid "with commas"
484
+ msgstr ""
485
+
486
+ #: includes/helper.php:4386
487
+ msgid "Option Already Added."
488
+ msgstr ""
489
+
490
  #. translators: 1: error message 2: file name and path 3: line number
491
+ #: includes/log-helper.php:63
492
  msgid "%1$s in %2$s on line %3$s"
493
  msgstr ""
494
 
495
+ #: includes/widget.php:19
496
+ msgid "Latest News from WebAppick Blog"
497
+ msgstr ""
498
+
499
+ #: includes/widget.php:50
500
+ msgid "WEBAPPICK.COM"
501
+ msgstr ""
502
+
503
+ #: includes/widget.php:64
504
+ msgid "Get more woocommerce tips & news on our blog..."
505
+ msgstr ""
506
+
507
+ #: admin/partials/woo-feed-add-option.php:3, admin/partials/woo-feed-add-option.php:18
508
+ msgid "Add Option"
509
+ msgstr ""
510
+
511
+ #: admin/partials/woo-feed-add-option.php:13
512
+ msgid "Search Option Name"
513
+ msgstr ""
514
+
515
  #: admin/partials/woo-feed-admin-display.php:38
516
  msgid "New WooCommerce Product Feed"
517
  msgstr ""
518
 
519
+ #: admin/partials/woo-feed-category-mapping-list.php:21
520
+ msgid "Category Mapping List"
521
+ msgstr ""
522
+
523
+ #: admin/partials/woo-feed-category-mapping-list.php:21
524
+ msgid "Add New Mapping"
525
+ msgstr ""
526
+
527
+ #: admin/partials/woo-feed-category-mapping-list.php:35, admin/partials/woo-feed-category-mapping-list.php:41, admin/partials/woo-feed-category-mapping-list.php:45, admin/partials/woo-feed-option-list.php:33, admin/partials/woo-feed-option-list.php:38, admin/partials/woo-feed-option-list.php:41
528
+ msgid "Are You Sure to Delete?"
529
+ msgstr ""
530
+
531
+ #: admin/partials/woo-feed-category-mapping.php:33
532
+ msgid "Merchant"
533
+ msgstr ""
534
+
535
+ #: admin/partials/woo-feed-category-mapping.php:45
536
+ msgid "Mapping Name"
537
+ msgstr ""
538
+
539
+ #: admin/partials/woo-feed-category-mapping.php:47
540
+ msgid "Mapping Name should be unique and don't use space. Otherwise it will override the existing Category Mapping. Example: myMappingName or my_mapping_name"
541
+ msgstr ""
542
+
543
+ #: admin/partials/woo-feed-category-mapping.php:56
544
+ msgid "Local Category"
545
+ msgstr ""
546
+
547
+ #: admin/partials/woo-feed-category-mapping.php:57
548
+ msgid "Merchant Category"
549
+ msgstr ""
550
+
551
+ #: admin/partials/woo-feed-category-mapping.php:66
552
+ msgid "Save Mapping"
553
+ msgstr ""
554
+
555
+ #: admin/partials/woo-feed-content-settings.php:26
556
  msgid "Content Settings"
557
  msgstr ""
558
 
559
+ #: admin/partials/woo-feed-content-settings.php:33
560
+ msgid "Country"
561
+ msgstr ""
562
+
563
+ #: admin/partials/woo-feed-content-settings.php:35
564
+ msgid "Select a country"
565
+ msgstr ""
566
+
567
+ #: admin/partials/woo-feed-content-settings.php:46
568
  msgid "Template"
569
  msgstr ""
570
 
571
+ #: admin/partials/woo-feed-content-settings.php:48
572
  msgid "Select a template"
573
  msgstr ""
574
 
575
+ #: admin/partials/woo-feed-content-settings.php:57
576
  msgid "File Name"
577
  msgstr ""
578
 
579
+ #: admin/partials/woo-feed-content-settings.php:59
580
  msgid "Filename should be unique. Otherwise it will override the existing filename."
581
  msgstr ""
582
 
583
+ #: admin/partials/woo-feed-content-settings.php:63
584
  msgid "Feed Type"
585
  msgstr ""
586
 
587
+ #: admin/partials/woo-feed-content-settings.php:83
588
  msgid "Items Wrapper"
589
  msgstr ""
590
 
591
+ #: admin/partials/woo-feed-content-settings.php:90
592
  msgid "Single Item Wrapper"
593
  msgstr ""
594
 
595
+ #: admin/partials/woo-feed-content-settings.php:105
596
  msgid "Delimiter"
597
  msgstr ""
598
 
599
+ #: admin/partials/woo-feed-content-settings.php:117
600
  msgid "Enclosure"
601
  msgstr ""
602
 
629
  msgstr ""
630
 
631
  #: admin/partials/woo-feed-edit-config.php:54, admin/partials/woo-feed-edit-config.php:125
632
+ msgid "Pattern (Static Value)"
633
  msgstr ""
634
 
635
  #: admin/partials/woo-feed-edit-config.php:82, admin/partials/woo-feed-edit-config.php:141
640
  msgid "Add New Attribute"
641
  msgstr ""
642
 
643
+ #: admin/partials/woo-feed-edit-filter.php:10
644
  msgid "Campaign URL Builder"
645
  msgstr ""
646
 
647
+ #: admin/partials/woo-feed-edit-filter.php:18, admin/partials/woo-feed-edit-filter.php:19
648
  msgid "Campaign Source"
649
  msgstr ""
650
 
651
+ #: admin/partials/woo-feed-edit-filter.php:18, admin/partials/woo-feed-edit-filter.php:25, admin/partials/woo-feed-edit-filter.php:32
652
  msgid "Required"
653
  msgstr ""
654
 
655
+ #: admin/partials/woo-feed-edit-filter.php:21
656
  msgid "The referrer: (e.g. google, newsletter)"
657
  msgstr ""
658
 
659
+ #: admin/partials/woo-feed-edit-filter.php:25, admin/partials/woo-feed-edit-filter.php:26
660
  msgid "Campaign Medium"
661
  msgstr ""
662
 
663
+ #: admin/partials/woo-feed-edit-filter.php:28
664
  msgid "Marketing medium: (e.g. cpc, banner, email)"
665
  msgstr ""
666
 
667
+ #: admin/partials/woo-feed-edit-filter.php:32, admin/partials/woo-feed-edit-filter.php:33
668
  msgid "Campaign Name"
669
  msgstr ""
670
 
671
+ #: admin/partials/woo-feed-edit-filter.php:35
672
  msgid "Product, promo code, or slogan (e.g. spring_sale)"
673
  msgstr ""
674
 
675
+ #: admin/partials/woo-feed-edit-filter.php:39, admin/partials/woo-feed-edit-filter.php:40
676
  msgid "Campaign Term"
677
  msgstr ""
678
 
679
+ #: admin/partials/woo-feed-edit-filter.php:42
680
  msgid "Identify the keywords"
681
  msgstr ""
682
 
683
+ #: admin/partials/woo-feed-edit-filter.php:46, admin/partials/woo-feed-edit-filter.php:47
684
  msgid "Campaign Content"
685
  msgstr ""
686
 
687
+ #: admin/partials/woo-feed-edit-filter.php:49
688
  msgid "Use to differentiate ads"
689
  msgstr ""
690
 
691
+ #: admin/partials/woo-feed-edit-filter.php:61
692
  msgid "Fill out the required fields (marked with *) in the form above, if any required field is empty, then the parameters will not be applied."
693
  msgstr ""
694
 
695
+ #: admin/partials/woo-feed-edit-filter.php:62
696
  msgid "Learn more about Campaign URL"
697
  msgstr ""
698
 
708
  msgid "Filter"
709
  msgstr ""
710
 
711
+ #: admin/partials/woo-feed-edit-tabs.php:28
712
  msgid "FTP/SFTP"
713
  msgstr ""
714
 
715
+ #: admin/partials/woo-feed-edit-tabs.php:101
716
  msgid "Save"
717
  msgstr ""
718
 
719
+ #: admin/partials/woo-feed-edit-tabs.php:103
720
  msgid "Update and Generate Feed"
721
  msgstr ""
722
 
748
  msgid "Import Now"
749
  msgstr ""
750
 
751
+ #: admin/partials/woo-feed-manage-list.php:69
 
 
 
 
752
  msgid "Auto Update Feed Interval"
753
  msgstr ""
754
 
755
+ #: admin/partials/woo-feed-manage-list.php:79
756
  msgid "Interval"
757
  msgstr ""
758
 
759
+ #: admin/partials/woo-feed-manage-list.php:88
760
  msgid "Update Interval"
761
  msgstr ""
762
 
763
+ #: admin/partials/woo-feed-option-list.php:18
764
+ msgid "Option List"
765
+ msgstr ""
766
+
767
+ #: admin/partials/woo-feed-option-list.php:18
768
+ msgid "Add New Option"
769
+ msgstr ""
770
+
771
  #: admin/partials/woo-feed-pro-vs-free.php:74, admin/partials/woo-feed-pro-vs-free.php:185
772
  msgid "Unlimited Products"
773
  msgstr ""
800
  msgid "Custom taxonomy"
801
  msgstr ""
802
 
 
 
 
 
803
  #: admin/partials/woo-feed-pro-vs-free.php:83
804
  msgid "Product/Post Meta"
805
  msgstr ""
860
  msgid "Auto Feed Update"
861
  msgstr ""
862
 
863
+ #: admin/partials/woo-feed-pro-vs-free.php:161, includes/classes/class-woo-feed-dropdown.php:627
864
  msgid "Product Attributes"
865
  msgstr ""
866
 
920
  msgid "Remove Parent Products"
921
  msgstr ""
922
 
 
 
 
 
923
  #: admin/partials/woo-feed-pro-vs-free.php:229
924
  msgid "Dynamic Attributes"
925
  msgstr ""
926
 
927
+ #: admin/partials/woo-feed-pro-vs-free.php:233, includes/classes/class-woo-feed-dropdown.php:440, includes/classes/class-woo-feed-products.php:1728
928
  msgid "Price With Tax"
929
  msgstr ""
930
 
1060
  msgid "Join the squad today!"
1061
  msgstr ""
1062
 
1063
+ #: admin/partials/woo-feed-settings.php:26
1064
  msgid "Common Settings"
1065
  msgstr ""
1066
 
1067
+ #: admin/partials/woo-feed-settings.php:29
1068
+ msgid "Version "
1069
+ msgstr ""
1070
+
1071
+ #: admin/partials/woo-feed-settings.php:39
1072
  msgid "Product per batch"
1073
  msgstr ""
1074
 
1075
+ #: admin/partials/woo-feed-settings.php:42, admin/partials/woo-feed-settings.php:53
1076
  msgid "Don't change the value if you are not sure about this. Plugin may fail to make feed."
1077
  msgstr ""
1078
 
1079
+ #: admin/partials/woo-feed-settings.php:46
1080
  msgid "Product Query Type"
1081
  msgstr ""
1082
 
1083
+ #: admin/partials/woo-feed-settings.php:57
1084
  msgid "Debug Mode"
1085
  msgstr ""
1086
 
1087
+ #: admin/partials/woo-feed-settings.php:61, admin/partials/woo-feed-settings.php:106
1088
  msgid "Off"
1089
  msgstr ""
1090
 
1091
+ #: admin/partials/woo-feed-settings.php:62, admin/partials/woo-feed-settings.php:107
1092
  msgid "On"
1093
  msgstr ""
1094
 
1095
+ #: admin/partials/woo-feed-settings.php:65
1096
  msgid "Clear All Log Data"
1097
  msgstr ""
1098
 
1099
+ #: admin/partials/woo-feed-settings.php:67
1100
  msgid "Enabling Logging will decrease performance of feed generation."
1101
  msgstr ""
1102
 
1103
+ #: admin/partials/woo-feed-settings.php:71
1104
  msgid "Send Debug Info"
1105
  msgstr ""
1106
 
1107
+ #: admin/partials/woo-feed-settings.php:74
1108
+ msgid "Allow CTXFeed To Collect Debug Info."
1109
  msgstr ""
1110
 
1111
+ #: admin/partials/woo-feed-settings.php:76
1112
  msgid "To opt out, leave this box unchecked. Your Feed Data remains un-tracked, and no data will be collected. No sensitive data is tracked."
1113
  msgstr ""
1114
 
1115
+ #: admin/partials/woo-feed-settings.php:76
1116
  msgid "See What We Collect."
1117
  msgstr ""
1118
 
1119
+ #: admin/partials/woo-feed-settings.php:88
1120
+ msgid "CTXFeed Cache TTL"
1121
  msgstr ""
1122
 
1123
+ #: admin/partials/woo-feed-settings.php:96
1124
  msgid "Purge Cache Now"
1125
  msgstr ""
1126
 
1127
+ #: admin/partials/woo-feed-settings.php:98
1128
  msgid "When to expire the Cache."
1129
  msgstr ""
1130
 
1131
+ #: admin/partials/woo-feed-settings.php:102
1132
+ msgid "WooCommerce Default Schema Override "
1133
+ msgstr ""
1134
+
1135
+ #: admin/partials/woo-feed-settings.php:110
1136
+ msgid "Turn off when you don't want to override default WooCommerce Product Schema"
1137
+ msgstr ""
1138
+
1139
+ #: admin/partials/woo-feed-settings.php:114
1140
+ msgid "Disable/Enable Facebook Pixel"
1141
+ msgstr ""
1142
+
1143
+ #: admin/partials/woo-feed-settings.php:118, admin/partials/woo-feed-settings.php:137, admin/partials/woo-feed-settings.php:149, admin/partials/woo-feed-settings.php:161, admin/partials/woo-feed-settings.php:173
1144
+ msgid "Disabled"
1145
+ msgstr ""
1146
+
1147
+ #: admin/partials/woo-feed-settings.php:119, admin/partials/woo-feed-settings.php:138, admin/partials/woo-feed-settings.php:150, admin/partials/woo-feed-settings.php:162, admin/partials/woo-feed-settings.php:174
1148
+ msgid "Enabled"
1149
+ msgstr ""
1150
+
1151
+ #: admin/partials/woo-feed-settings.php:122
1152
+ msgid "Disables or Enables Facebook Pixel ID’s for Variation"
1153
+ msgstr ""
1154
+
1155
+ #: admin/partials/woo-feed-settings.php:126
1156
+ msgid "Facebook Pixel Content ID’s for Variation"
1157
+ msgstr ""
1158
+
1159
+ #: admin/partials/woo-feed-settings.php:129
1160
+ msgid "Insert your Facebook Pixel ID"
1161
+ msgstr ""
1162
+
1163
+ #: admin/partials/woo-feed-settings.php:133
1164
+ msgid "Add shipping costs for all countries to feed (Google Shopping / Facebook only)"
1165
+ msgstr ""
1166
+
1167
+ #: admin/partials/woo-feed-settings.php:141
1168
+ msgid "Disable or Enable all shipping to feed"
1169
+ msgstr ""
1170
+
1171
+ #: admin/partials/woo-feed-settings.php:145
1172
+ msgid "Remove all other shipping classes when free shipping criteria are met (Google Shopping / Facebook only)"
1173
+ msgstr ""
1174
+
1175
+ #: admin/partials/woo-feed-settings.php:153
1176
+ msgid "Disable or Enable all shipping when free shipping is exists"
1177
+ msgstr ""
1178
+
1179
+ #: admin/partials/woo-feed-settings.php:157
1180
+ msgid "Remove the local pickup shipping zone from feed (Google Shopping / Facebook only)"
1181
+ msgstr ""
1182
+
1183
+ #: admin/partials/woo-feed-settings.php:165
1184
+ msgid "Disable or Enable all shipping when local pickup shipping is exists"
1185
+ msgstr ""
1186
+
1187
+ #: admin/partials/woo-feed-settings.php:169
1188
+ msgid "Enable FTP Upload"
1189
+ msgstr ""
1190
+
1191
+ #: admin/partials/woo-feed-settings.php:177
1192
+ msgid "Disable or Enable FTP upload setting"
1193
+ msgstr ""
1194
+
1195
+ #: admin/partials/woo-feed-settings.php:184
1196
  msgid "Save Changes"
1197
  msgstr ""
1198
 
1199
+ #: admin/partials/woo-feed-settings.php:194
1200
+ msgid "Custom Fields"
1201
+ msgstr ""
1202
+
1203
+ #: admin/partials/woo-feed-status.php:16
1204
+ msgid "System Status"
1205
+ msgstr ""
1206
+
1207
  #. translators: 1: Method Name 2: Method Name
1208
  #: includes/classes/class-woo-feed-admin-message.php:78
1209
  msgid "%1$s Should be called before %2$s"
1210
  msgstr ""
1211
 
1212
+ #: includes/classes/class-woo-feed-admin-message.php:119, includes/classes/class-woo-feed-admin-message.php:120
1213
+ msgid "Get CTX Feed Pro"
1214
+ msgstr ""
1215
+
1216
+ #: includes/classes/class-woo-feed-admin-message.php:124, includes/classes/class-woo-feed-webappick-api.php:181
1217
  msgid "Video Tutorials"
1218
  msgstr ""
1219
 
1220
+ #: includes/classes/class-woo-feed-admin-message.php:219
1221
  msgid "Feed Config Created Successfully."
1222
  msgstr ""
1223
 
1224
+ #: includes/classes/class-woo-feed-admin-message.php:228
1225
  msgid "Feed Config Updated Successfully."
1226
  msgstr ""
1227
 
1228
+ #: includes/classes/class-woo-feed-admin-message.php:237
1229
  msgid "Feed Config Successfully Imported."
1230
  msgstr ""
1231
 
1232
  #. translators: Feed URL
1233
+ #: includes/classes/class-woo-feed-admin-message.php:255
1234
  msgid "Feed Generated Successfully. Feed URL: %s"
1235
  msgstr ""
1236
 
1237
+ #: includes/classes/class-woo-feed-admin-message.php:258
1238
  msgid "Warning:"
1239
  msgstr ""
1240
 
1241
+ #: includes/classes/class-woo-feed-admin-message.php:261
1242
  msgid "Learn more..."
1243
  msgstr ""
1244
 
1245
+ #: includes/classes/class-woo-feed-admin-message.php:262
1246
+ msgid "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."
1247
  msgstr ""
1248
 
1249
+ #: includes/classes/class-woo-feed-admin-message.php:290
1250
  msgid "Feed auto update interval updated."
1251
  msgstr ""
1252
 
1253
+ #: includes/classes/class-woo-feed-admin-message.php:299
1254
  msgid "Unable to save auto update interval."
1255
  msgstr ""
1256
 
1257
+ #: includes/classes/class-woo-feed-admin-message.php:308
1258
  msgid "Invalid interval value."
1259
  msgstr ""
1260
 
1261
+ #: includes/classes/class-woo-feed-admin-message.php:317
1262
  msgid "Invalid request."
1263
  msgstr ""
1264
 
1265
+ #: includes/classes/class-woo-feed-admin-message.php:340
1266
  msgid "Settings Updated."
1267
  msgstr ""
1268
 
1269
+ #: includes/classes/class-woo-feed-dropdown.php:412, includes/classes/class-woo-feed-products.php:1784
1270
  msgid "Primary Attributes"
1271
  msgstr ""
1272
 
1273
+ #: includes/classes/class-woo-feed-dropdown.php:413, includes/classes/class-woo-feed-products.php:1711
1274
  msgid "Product Id"
1275
  msgstr ""
1276
 
1277
+ #: includes/classes/class-woo-feed-dropdown.php:414, includes/classes/class-woo-feed-products.php:1712
1278
  msgid "Product Title"
1279
  msgstr ""
1280
 
1281
+ #: includes/classes/class-woo-feed-dropdown.php:415
1282
+ msgid "Parent Title"
1283
+ msgstr ""
1284
+
1285
+ #: includes/classes/class-woo-feed-dropdown.php:416, includes/classes/class-woo-feed-products.php:1713
1286
  msgid "Product Description"
1287
  msgstr ""
1288
 
1289
+ #: includes/classes/class-woo-feed-dropdown.php:417
1290
+ msgid "Product Description (with HTML)"
1291
+ msgstr ""
1292
+
1293
+ #: includes/classes/class-woo-feed-dropdown.php:418, includes/classes/class-woo-feed-products.php:1714
1294
  msgid "Product Short Description"
1295
  msgstr ""
1296
 
1297
+ #: includes/classes/class-woo-feed-dropdown.php:419
1298
+ msgid "Parent Category"
1299
+ msgstr ""
1300
+
1301
+ #: includes/classes/class-woo-feed-dropdown.php:420
1302
+ msgid "Parent Category ID"
1303
+ msgstr ""
1304
+
1305
+ #: includes/classes/class-woo-feed-dropdown.php:421
1306
+ msgid "Child Category"
1307
  msgstr ""
1308
 
1309
+ #: includes/classes/class-woo-feed-dropdown.php:422
1310
+ msgid "Child Category ID"
1311
  msgstr ""
1312
 
1313
+ #: includes/classes/class-woo-feed-dropdown.php:423
1314
+ msgid "Product Category [Category Path]"
1315
+ msgstr ""
1316
+
1317
+ #: includes/classes/class-woo-feed-dropdown.php:424
1318
+ msgid "Product Full Category [Category Full Path]"
1319
+ msgstr ""
1320
+
1321
+ #: includes/classes/class-woo-feed-dropdown.php:425, includes/classes/class-woo-feed-products.php:1716
1322
  msgid "Product URL"
1323
  msgstr ""
1324
 
1325
+ #: includes/classes/class-woo-feed-dropdown.php:426
1326
+ msgid "Parent URL"
1327
+ msgstr ""
1328
+
1329
+ #: includes/classes/class-woo-feed-dropdown.php:427
1330
+ msgid "Canonical URL"
1331
+ msgstr ""
1332
+
1333
+ #: includes/classes/class-woo-feed-dropdown.php:428, includes/classes/class-woo-feed-products.php:1717
1334
  msgid "External Product URL"
1335
  msgstr ""
1336
 
1337
+ #: includes/classes/class-woo-feed-dropdown.php:429
1338
+ msgid "Add to Cart URL"
1339
  msgstr ""
1340
 
1341
+ #: includes/classes/class-woo-feed-dropdown.php:430, includes/classes/class-woo-feed-products.php:1719
1342
  msgid "Parent Id [Group Id]"
1343
  msgstr ""
1344
 
1345
+ #: includes/classes/class-woo-feed-dropdown.php:431, includes/classes/class-woo-feed-products.php:1720
1346
  msgid "SKU"
1347
  msgstr ""
1348
 
1349
+ #: includes/classes/class-woo-feed-dropdown.php:432
1350
+ msgid "SKU_ID"
1351
+ msgstr ""
1352
+
1353
+ #: includes/classes/class-woo-feed-dropdown.php:433, includes/classes/class-woo-feed-products.php:1721
1354
  msgid "Parent SKU"
1355
  msgstr ""
1356
 
1357
+ #: includes/classes/class-woo-feed-dropdown.php:434, includes/classes/class-woo-feed-products.php:1722
1358
  msgid "Availability"
1359
  msgstr ""
1360
 
1361
+ #: includes/classes/class-woo-feed-dropdown.php:435, includes/classes/class-woo-feed-products.php:1723
1362
  msgid "Quantity"
1363
  msgstr ""
1364
 
1365
+ #: includes/classes/class-woo-feed-dropdown.php:436, includes/classes/class-woo-feed-products.php:1724
1366
  msgid "Regular Price"
1367
  msgstr ""
1368
 
1369
+ #: includes/classes/class-woo-feed-dropdown.php:437, includes/classes/class-woo-feed-products.php:1725
1370
  msgid "Price"
1371
  msgstr ""
1372
 
1373
+ #: includes/classes/class-woo-feed-dropdown.php:438, includes/classes/class-woo-feed-products.php:1726
1374
  msgid "Sale Price"
1375
  msgstr ""
1376
 
1377
+ #: includes/classes/class-woo-feed-dropdown.php:439, includes/classes/class-woo-feed-products.php:1727
1378
  msgid "Regular Price With Tax"
1379
  msgstr ""
1380
 
1381
+ #: includes/classes/class-woo-feed-dropdown.php:441, includes/classes/class-woo-feed-products.php:1729
1382
  msgid "Sale Price With Tax"
1383
  msgstr ""
1384
 
1385
+ #: includes/classes/class-woo-feed-dropdown.php:442, includes/classes/class-woo-feed-products.php:1730
1386
  msgid "Sale Start Date"
1387
  msgstr ""
1388
 
1389
+ #: includes/classes/class-woo-feed-dropdown.php:443, includes/classes/class-woo-feed-products.php:1731
1390
  msgid "Sale End Date"
1391
  msgstr ""
1392
 
1393
+ #: includes/classes/class-woo-feed-dropdown.php:444
1394
+ msgid "Reviewer Name"
1395
+ msgstr ""
1396
+
1397
+ #: includes/classes/class-woo-feed-dropdown.php:445, includes/classes/class-woo-feed-products.php:1732
1398
  msgid "Weight"
1399
  msgstr ""
1400
 
1401
+ #: includes/classes/class-woo-feed-dropdown.php:446
1402
+ msgid "Weight Unit"
1403
+ msgstr ""
1404
+
1405
+ #: includes/classes/class-woo-feed-dropdown.php:447, includes/classes/class-woo-feed-products.php:1733
1406
  msgid "Width"
1407
  msgstr ""
1408
 
1409
+ #: includes/classes/class-woo-feed-dropdown.php:448, includes/classes/class-woo-feed-products.php:1734
1410
  msgid "Height"
1411
  msgstr ""
1412
 
1413
+ #: includes/classes/class-woo-feed-dropdown.php:449, includes/classes/class-woo-feed-products.php:1735
1414
  msgid "Length"
1415
  msgstr ""
1416
 
1417
+ #: includes/classes/class-woo-feed-dropdown.php:450
1418
+ msgid "Shipping (Google Format)"
1419
+ msgstr ""
1420
+
1421
+ #: includes/classes/class-woo-feed-dropdown.php:451
1422
+ msgid "Shipping Cost"
1423
+ msgstr ""
1424
+
1425
+ #: includes/classes/class-woo-feed-dropdown.php:452, includes/classes/class-woo-feed-products.php:1736
1426
  msgid "Shipping Class"
1427
  msgstr ""
1428
 
1429
+ #: includes/classes/class-woo-feed-dropdown.php:453, includes/classes/class-woo-feed-products.php:1737
1430
  msgid "Product Type"
1431
  msgstr ""
1432
 
1433
+ #: includes/classes/class-woo-feed-dropdown.php:454, includes/classes/class-woo-feed-products.php:1738
1434
  msgid "Variation Type"
1435
  msgstr ""
1436
 
1437
+ #: includes/classes/class-woo-feed-dropdown.php:455, includes/classes/class-woo-feed-products.php:1739
1438
  msgid "Visibility"
1439
  msgstr ""
1440
 
1441
+ #: includes/classes/class-woo-feed-dropdown.php:456, includes/classes/class-woo-feed-products.php:1740
1442
  msgid "Total Rating"
1443
  msgstr ""
1444
 
1445
+ #: includes/classes/class-woo-feed-dropdown.php:457, includes/classes/class-woo-feed-products.php:1741
1446
  msgid "Average Rating"
1447
  msgstr ""
1448
 
1449
+ #: includes/classes/class-woo-feed-dropdown.php:458, includes/classes/class-woo-feed-products.php:1742
1450
  msgid "Tags"
1451
  msgstr ""
1452
 
1453
+ #: includes/classes/class-woo-feed-dropdown.php:459, includes/classes/class-woo-feed-products.php:1743
1454
  msgid "Sale Price Effective Date"
1455
  msgstr ""
1456
 
1457
+ #: includes/classes/class-woo-feed-dropdown.php:460, includes/classes/class-woo-feed-products.php:1744
1458
  msgid "Is Bundle"
1459
  msgstr ""
1460
 
1461
+ #: includes/classes/class-woo-feed-dropdown.php:461, includes/classes/class-woo-feed-products.php:1745
1462
  msgid "Author Name"
1463
  msgstr ""
1464
 
1465
+ #: includes/classes/class-woo-feed-dropdown.php:462, includes/classes/class-woo-feed-products.php:1746
1466
  msgid "Author Email"
1467
  msgstr ""
1468
 
1469
+ #: includes/classes/class-woo-feed-dropdown.php:463, includes/classes/class-woo-feed-products.php:1747
1470
  msgid "Date Created"
1471
  msgstr ""
1472
 
1473
+ #: includes/classes/class-woo-feed-dropdown.php:464, includes/classes/class-woo-feed-products.php:1748
1474
  msgid "Date Updated"
1475
  msgstr ""
1476
 
1477
+ #: includes/classes/class-woo-feed-dropdown.php:465
1478
+ msgid "Tax"
1479
+ msgstr ""
1480
+
1481
+ #: includes/classes/class-woo-feed-dropdown.php:466
1482
+ msgid "Tax Class"
1483
+ msgstr ""
1484
+
1485
+ #: includes/classes/class-woo-feed-dropdown.php:467
1486
+ msgid "Tax Status"
1487
+ msgstr ""
1488
+
1489
+ #: includes/classes/class-woo-feed-dropdown.php:487, includes/classes/class-woo-feed-products.php:1769
1490
  msgid "Title [All in One SEO]"
1491
  msgstr ""
1492
 
1493
+ #: includes/classes/class-woo-feed-dropdown.php:497, includes/classes/class-woo-feed-products.php:1770
1494
  msgid "Description [All in One SEO]"
1495
  msgstr ""
1496
 
1497
+ #: includes/classes/class-woo-feed-dropdown.php:508, includes/classes/class-woo-feed-products.php:1776
1498
  msgid "Title [Yoast SEO]"
1499
  msgstr ""
1500
 
1501
+ #: includes/classes/class-woo-feed-dropdown.php:516, includes/classes/class-woo-feed-products.php:1777
1502
  msgid "Description [Yoast SEO]"
1503
  msgstr ""
1504
 
1505
+ #: includes/classes/class-woo-feed-dropdown.php:523
1506
+ msgid "Canonical URL [Yoast SEO]"
1507
  msgstr ""
1508
 
1509
+ #: includes/classes/class-woo-feed-dropdown.php:540
1510
+ msgid "Title [Rank Math SEO]"
1511
  msgstr ""
1512
 
1513
+ #: includes/classes/class-woo-feed-dropdown.php:554
1514
+ msgid "Description [Rank Math SEO]"
1515
  msgstr ""
1516
 
1517
+ #: includes/classes/class-woo-feed-dropdown.php:563
1518
+ msgid "Rank Math Canonical URL [Rank Math SEO]"
1519
  msgstr ""
1520
 
1521
+ #: includes/classes/class-woo-feed-dropdown.php:572
1522
+ msgid "Subscription Period"
1523
  msgstr ""
1524
 
1525
+ #: includes/classes/class-woo-feed-dropdown.php:573
1526
+ msgid "Subscription Period Interval"
1527
  msgstr ""
1528
 
1529
+ #: includes/classes/class-woo-feed-dropdown.php:574
1530
+ msgid "Subscription Amount"
1531
  msgstr ""
1532
 
1533
+ #: includes/classes/class-woo-feed-dropdown.php:575
1534
+ msgid "Installment Months"
1535
  msgstr ""
1536
 
1537
+ #: includes/classes/class-woo-feed-dropdown.php:576
1538
+ msgid "Installment Amount"
1539
  msgstr ""
1540
 
1541
+ #: includes/classes/class-woo-feed-dropdown.php:584
1542
+ msgid "Unit Price Measure"
1543
  msgstr ""
1544
 
1545
+ #: includes/classes/class-woo-feed-dropdown.php:593
1546
+ msgid "Yoast Attributes"
1547
  msgstr ""
1548
 
1549
+ #: includes/classes/class-woo-feed-dropdown.php:595
1550
+ msgid "Yoast GTIN8"
1551
  msgstr ""
1552
 
1553
+ #: includes/classes/class-woo-feed-dropdown.php:596
1554
+ msgid "Yoast GTIN12 / UPC"
1555
  msgstr ""
1556
 
1557
+ #: includes/classes/class-woo-feed-dropdown.php:597
1558
+ msgid "Yoast GTIN13 / EAN"
1559
  msgstr ""
1560
 
1561
+ #: includes/classes/class-woo-feed-dropdown.php:598
1562
+ msgid "Yoast GTIN14 / ITF-14"
1563
  msgstr ""
1564
 
1565
+ #: includes/classes/class-woo-feed-dropdown.php:599
1566
+ msgid "Yoast ISBN"
 
1567
  msgstr ""
1568
 
1569
+ #: includes/classes/class-woo-feed-dropdown.php:600
1570
+ msgid "Yoast MPN"
1571
  msgstr ""
1572
 
1573
+ #: includes/classes/class-woo-feed-dropdown.php:606, includes/classes/class-woo-feed-products.php:1793
1574
+ msgid "Image Attributes"
1575
+ msgstr ""
1576
+
1577
+ #: includes/classes/class-woo-feed-dropdown.php:608, includes/classes/class-woo-feed-products.php:1751
1578
+ msgid "Main Image"
1579
+ msgstr ""
1580
+
1581
+ #: includes/classes/class-woo-feed-dropdown.php:609, includes/classes/class-woo-feed-products.php:1752
1582
+ msgid "Featured Image"
1583
+ msgstr ""
1584
+
1585
+ #: includes/classes/class-woo-feed-dropdown.php:610, includes/classes/class-woo-feed-products.php:1753
1586
+ msgid "Images [Comma Separated]"
1587
+ msgstr ""
1588
+
1589
+ #: includes/classes/class-woo-feed-dropdown.php:611, includes/classes/class-woo-feed-products.php:1754
1590
+ msgid "Additional Image 1"
1591
+ msgstr ""
1592
+
1593
+ #: includes/classes/class-woo-feed-dropdown.php:612, includes/classes/class-woo-feed-products.php:1755
1594
+ msgid "Additional Image 2"
1595
+ msgstr ""
1596
+
1597
+ #: includes/classes/class-woo-feed-dropdown.php:613, includes/classes/class-woo-feed-products.php:1756
1598
+ msgid "Additional Image 3"
1599
+ msgstr ""
1600
+
1601
+ #: includes/classes/class-woo-feed-dropdown.php:614, includes/classes/class-woo-feed-products.php:1757
1602
+ msgid "Additional Image 4"
1603
+ msgstr ""
1604
+
1605
+ #: includes/classes/class-woo-feed-dropdown.php:615, includes/classes/class-woo-feed-products.php:1758
1606
+ msgid "Additional Image 5"
1607
+ msgstr ""
1608
+
1609
+ #: includes/classes/class-woo-feed-dropdown.php:616, includes/classes/class-woo-feed-products.php:1759
1610
+ msgid "Additional Image 6"
1611
+ msgstr ""
1612
+
1613
+ #: includes/classes/class-woo-feed-dropdown.php:617, includes/classes/class-woo-feed-products.php:1760
1614
+ msgid "Additional Image 7"
1615
+ msgstr ""
1616
+
1617
+ #: includes/classes/class-woo-feed-dropdown.php:618, includes/classes/class-woo-feed-products.php:1761
1618
+ msgid "Additional Image 8"
1619
+ msgstr ""
1620
+
1621
+ #: includes/classes/class-woo-feed-dropdown.php:619, includes/classes/class-woo-feed-products.php:1762
1622
+ msgid "Additional Image 9"
1623
+ msgstr ""
1624
+
1625
+ #: includes/classes/class-woo-feed-dropdown.php:620, includes/classes/class-woo-feed-products.php:1763
1626
+ msgid "Additional Image 10"
1627
+ msgstr ""
1628
+
1629
+ #: includes/classes/class-woo-feed-dropdown.php:634, includes/classes/class-woo-feed-products.php:1813
1630
+ msgid "Product Custom Attributes"
1631
+ msgstr ""
1632
+
1633
+ #: includes/classes/class-woo-feed-dropdown.php:649
1634
+ msgid "Category Mappings"
1635
+ msgstr ""
1636
+
1637
+ #: includes/classes/class-woo-feed-dropdown.php:663, includes/classes/class-woo-feed-products.php:1831
1638
+ msgid "Custom Taxonomies"
1639
+ msgstr ""
1640
+
1641
+ #: includes/classes/class-woo-feed-dropdown.php:705, includes/classes/class-woo-feed-products.php:1803
1642
+ msgid "Select Attributes"
1643
+ msgstr ""
1644
+
1645
+ #: includes/classes/class-woo-feed-ftp.php:79
1646
+ msgid "FTP connection has failed!"
1647
+ msgstr ""
1648
+
1649
+ #. translators: 1: ftp username, 2: server host, 3: server port
1650
+ #: includes/classes/class-woo-feed-ftp.php:81
1651
+ msgid "Attempted to connect to %1$s@%2$s:%3$s"
1652
+ msgstr ""
1653
+
1654
+ #: includes/classes/class-woo-feed-ftp.php:90
1655
+ msgid "FTP Login has failed!"
1656
+ msgstr ""
1657
+
1658
+ #. translators: 1: ftp username, 2: server host, 3: server port
1659
+ #: includes/classes/class-woo-feed-ftp.php:92
1660
  msgid "Attempted to login %1$s@%2$s:%3$s"
1661
  msgstr ""
1662
 
1677
  msgid "Excerpt View"
1678
  msgstr ""
1679
 
1680
+ #: includes/classes/class-woo-feed-list-table.php:360
1681
+ msgid "No items found."
1682
+ msgstr ""
1683
+
1684
+ #: includes/classes/class-woo-feed-list-table.php:506
1685
+ msgid "Apply"
1686
+ msgstr ""
1687
+
1688
+ #: includes/classes/class-woo-feed-list-table.php:629
1689
+ msgid "Filter by date"
1690
+ msgstr ""
1691
+
1692
+ #: includes/classes/class-woo-feed-list-table.php:631
1693
+ msgid "All dates"
1694
+ msgstr ""
1695
+
1696
+ #. translators: 1: month name, 2: 4-digit year
1697
+ #: includes/classes/class-woo-feed-list-table.php:646
1698
+ msgid "%1$s %2$d"
1699
+ msgstr ""
1700
+
1701
+ #: includes/classes/class-woo-feed-list-table.php:699
1702
+ msgid "%s comment"
1703
+ msgid_plural "%s comments"
1704
+ msgstr[0] ""
1705
+ msgstr[1] ""
1706
+
1707
+ #: includes/classes/class-woo-feed-list-table.php:700
1708
+ msgid "%s approved comment"
1709
+ msgid_plural "%s approved comments"
1710
+ msgstr[0] ""
1711
+ msgstr[1] ""
1712
+
1713
+ #: includes/classes/class-woo-feed-list-table.php:701
1714
+ msgid "%s pending comment"
1715
+ msgid_plural "%s pending comments"
1716
+ msgstr[0] ""
1717
+ msgstr[1] ""
1718
+
1719
+ #: includes/classes/class-woo-feed-list-table.php:707
1720
+ msgid "No comments"
1721
+ msgstr ""
1722
+
1723
+ #: includes/classes/class-woo-feed-list-table.php:1433
1724
+ msgid "%s item"
1725
+ msgid_plural "%s items"
1726
+ msgstr[0] ""
1727
+ msgstr[1] ""
1728
+
1729
  #: includes/classes/class-woo-feed-merchant.php:311
1730
  msgid "Custom Template"
1731
  msgstr ""
1739
  msgstr ""
1740
 
1741
  #: includes/classes/class-woo-feed-merchant.php:324
1742
+ msgid "Google Shopping"
1743
  msgstr ""
1744
 
1745
  #: includes/classes/class-woo-feed-merchant.php:325
1746
+ msgid "Google Local Inventory Ads"
1747
  msgstr ""
1748
 
1749
  #: includes/classes/class-woo-feed-merchant.php:326
1750
+ msgid "Google Local Product Inventory"
1751
  msgstr ""
1752
 
1753
  #: includes/classes/class-woo-feed-merchant.php:327
1754
+ msgid "Google Product Review"
1755
  msgstr ""
1756
 
1757
  #: includes/classes/class-woo-feed-merchant.php:328
1758
+ msgid "Google Shopping Action"
1759
  msgstr ""
1760
 
1761
  #: includes/classes/class-woo-feed-merchant.php:329
1762
+ msgid "Google Promotions"
1763
  msgstr ""
1764
 
1765
  #: includes/classes/class-woo-feed-merchant.php:330
1766
+ msgid "Google Dynamic Search Ads"
1767
  msgstr ""
1768
 
1769
  #: includes/classes/class-woo-feed-merchant.php:331
1770
+ msgid "Google Ads"
1771
  msgstr ""
1772
 
1773
  #: includes/classes/class-woo-feed-merchant.php:332
1774
+ msgid "Facebook Catalog / Instagram"
1775
  msgstr ""
1776
 
1777
  #: includes/classes/class-woo-feed-merchant.php:333
1778
+ msgid "Pinterest Catalog"
1779
  msgstr ""
1780
 
1781
  #: includes/classes/class-woo-feed-merchant.php:334
1782
+ msgid "Pinterest RSS Board"
1783
+ msgstr ""
1784
+
1785
+ #: includes/classes/class-woo-feed-merchant.php:335
1786
+ msgid "Bing Shopping"
1787
+ msgstr ""
1788
+
1789
+ #: includes/classes/class-woo-feed-merchant.php:336
1790
+ msgid "Bing Local Inventory"
1791
+ msgstr ""
1792
+
1793
+ #: includes/classes/class-woo-feed-merchant.php:337
1794
+ msgid "Snapchat"
1795
+ msgstr ""
1796
+
1797
+ #: includes/classes/class-woo-feed-merchant.php:338
1798
+ msgid "Idealo"
1799
+ msgstr ""
1800
+
1801
+ #: includes/classes/class-woo-feed-merchant.php:339
1802
+ msgid "PriceSpy"
1803
+ msgstr ""
1804
+
1805
+ #: includes/classes/class-woo-feed-merchant.php:340
1806
+ msgid "Price Runner"
1807
+ msgstr ""
1808
+
1809
+ #: includes/classes/class-woo-feed-merchant.php:341
1810
  msgid "Yandex (CSV)"
1811
  msgstr ""
1812
 
1813
+ #: includes/classes/class-woo-feed-merchant.php:352
1814
  msgid "Templates"
1815
  msgstr ""
1816
 
1817
+ #: includes/classes/class-woo-feed-merchant.php:353
1818
  msgid "AdForm"
1819
  msgstr ""
1820
 
1821
+ #: includes/classes/class-woo-feed-merchant.php:354
1822
  msgid "AdRoll"
1823
  msgstr ""
1824
 
1825
+ #: includes/classes/class-woo-feed-merchant.php:355
1826
  msgid "Avantlink"
1827
  msgstr ""
1828
 
1829
+ #: includes/classes/class-woo-feed-merchant.php:356
1830
  msgid "Become"
1831
  msgstr ""
1832
 
1833
+ #: includes/classes/class-woo-feed-merchant.php:357
1834
  msgid "Beslist.nl"
1835
  msgstr ""
1836
 
1837
+ #: includes/classes/class-woo-feed-merchant.php:358
1838
+ msgid "Bestprice"
1839
+ msgstr ""
1840
+
1841
+ #: includes/classes/class-woo-feed-merchant.php:359
1842
  msgid "Billiger.de"
1843
  msgstr ""
1844
 
1845
+ #: includes/classes/class-woo-feed-merchant.php:360
1846
  msgid "Bol.com"
1847
  msgstr ""
1848
 
1849
+ #: includes/classes/class-woo-feed-merchant.php:361
1850
  msgid "Bonanza"
1851
  msgstr ""
1852
 
1853
+ #: includes/classes/class-woo-feed-merchant.php:362
1854
+ msgid "Catch.com.au"
1855
+ msgstr ""
1856
+
1857
+ #: includes/classes/class-woo-feed-merchant.php:363
1858
  msgid "CDiscount.fr"
1859
  msgstr ""
1860
 
1861
+ #: includes/classes/class-woo-feed-merchant.php:364
1862
  msgid "Comparer.be"
1863
  msgstr ""
1864
 
1865
+ #: includes/classes/class-woo-feed-merchant.php:365
1866
  msgid "Connexity"
1867
  msgstr ""
1868
 
1869
+ #: includes/classes/class-woo-feed-merchant.php:366
1870
  msgid "Criteo"
1871
  msgstr ""
1872
 
1873
+ #: includes/classes/class-woo-feed-merchant.php:367
1874
  msgid "Crowdfox"
1875
  msgstr ""
1876
 
1877
+ #: includes/classes/class-woo-feed-merchant.php:368
1878
  msgid "Daisycon Advertiser (General)"
1879
  msgstr ""
1880
 
1881
+ #: includes/classes/class-woo-feed-merchant.php:369
1882
  msgid "Daisycon Advertiser (Automotive)"
1883
  msgstr ""
1884
 
1885
+ #: includes/classes/class-woo-feed-merchant.php:370
1886
  msgid "Daisycon Advertiser (Books)"
1887
  msgstr ""
1888
 
1889
+ #: includes/classes/class-woo-feed-merchant.php:371
1890
  msgid "Daisycon Advertiser (Cosmetics)"
1891
  msgstr ""
1892
 
1893
+ #: includes/classes/class-woo-feed-merchant.php:372
1894
  msgid "Daisycon Advertiser (Daily Offers)"
1895
  msgstr ""
1896
 
1897
+ #: includes/classes/class-woo-feed-merchant.php:373
1898
  msgid "Daisycon Advertiser (Electronics)"
1899
  msgstr ""
1900
 
1901
+ #: includes/classes/class-woo-feed-merchant.php:374
1902
  msgid "Daisycon Advertiser (Fashion)"
1903
  msgstr ""
1904
 
1905
+ #: includes/classes/class-woo-feed-merchant.php:375
1906
  msgid "Daisycon Advertiser (Food & Drinks)"
1907
  msgstr ""
1908
 
1909
+ #: includes/classes/class-woo-feed-merchant.php:376
1910
  msgid "Daisycon Advertiser (Holidays: Accommodations and transport)"
1911
  msgstr ""
1912
 
1913
+ #: includes/classes/class-woo-feed-merchant.php:377
1914
  msgid "Daisycon Advertiser (Holidays: Accommodations)"
1915
  msgstr ""
1916
 
1917
+ #: includes/classes/class-woo-feed-merchant.php:378
1918
  msgid "Daisycon Advertiser (Holidays: Trips)"
1919
  msgstr ""
1920
 
1921
+ #: includes/classes/class-woo-feed-merchant.php:379
1922
  msgid "Daisycon Advertiser (Home & Garden)"
1923
  msgstr ""
1924
 
1925
+ #: includes/classes/class-woo-feed-merchant.php:380
1926
  msgid "Daisycon Advertiser (Housing)"
1927
  msgstr ""
1928
 
1929
+ #: includes/classes/class-woo-feed-merchant.php:381
1930
  msgid "Daisycon Advertiser (Magazines)"
1931
  msgstr ""
1932
 
1933
+ #: includes/classes/class-woo-feed-merchant.php:382
1934
  msgid "Daisycon Advertiser (Studies & Trainings)"
1935
  msgstr ""
1936
 
1937
+ #: includes/classes/class-woo-feed-merchant.php:383
1938
  msgid "Daisycon Advertiser (Telecom: Accessories)"
1939
  msgstr ""
1940
 
1941
+ #: includes/classes/class-woo-feed-merchant.php:384
1942
  msgid "Daisycon Advertiser (Telecom: All-in-one)"
1943
  msgstr ""
1944
 
1945
+ #: includes/classes/class-woo-feed-merchant.php:385
1946
  msgid "Daisycon Advertiser (Telecom: GSM + Subscription)"
1947
  msgstr ""
1948
 
1949
+ #: includes/classes/class-woo-feed-merchant.php:386
1950
  msgid "Daisycon Advertiser (Telecom: GSM only)"
1951
  msgstr ""
1952
 
1953
+ #: includes/classes/class-woo-feed-merchant.php:387
1954
  msgid "Daisycon Advertiser (Telecom: Sim only)"
1955
  msgstr ""
1956
 
1957
+ #: includes/classes/class-woo-feed-merchant.php:388
1958
  msgid "Daisycon Advertiser (Work & Jobs)"
1959
  msgstr ""
1960
 
1961
+ #: includes/classes/class-woo-feed-merchant.php:389
1962
  msgid "Dooyoo"
1963
  msgstr ""
1964
 
1965
+ #: includes/classes/class-woo-feed-merchant.php:390
1966
+ msgid "Etsy"
1967
+ msgstr ""
1968
+
1969
+ #: includes/classes/class-woo-feed-merchant.php:391
1970
  msgid "Fruugo"
1971
  msgstr ""
1972
 
1973
+ #: includes/classes/class-woo-feed-merchant.php:392
1974
+ msgid "Fashionchick.nl"
1975
+ msgstr ""
1976
+
1977
+ #: includes/classes/class-woo-feed-merchant.php:393
1978
  msgid "Fruugoaustralia.com"
1979
  msgstr ""
1980
 
1981
+ #: includes/classes/class-woo-feed-merchant.php:394
1982
  msgid "Fyndiq.se"
1983
  msgstr ""
1984
 
1985
+ #: includes/classes/class-woo-feed-merchant.php:395
1986
+ msgid "GoedGeplaatst.nl"
1987
+ msgstr ""
1988
+
1989
+ #: includes/classes/class-woo-feed-merchant.php:396
1990
+ msgid "Heureka.sk"
1991
+ msgstr ""
1992
+
1993
+ #: includes/classes/class-woo-feed-merchant.php:397
1994
  msgid "Hintaseuranta.fi"
1995
  msgstr ""
1996
 
1997
+ #: includes/classes/class-woo-feed-merchant.php:398
1998
  msgid "Incurvy"
1999
  msgstr ""
2000
 
2001
+ #: includes/classes/class-woo-feed-merchant.php:399
2002
  msgid "Jet.com"
2003
  msgstr ""
2004
 
2005
+ #: includes/classes/class-woo-feed-merchant.php:400
2006
  msgid "Kelkoo"
2007
  msgstr ""
2008
 
2009
+ #: includes/classes/class-woo-feed-merchant.php:401
2010
  msgid "Kieskeurig.nl"
2011
  msgstr ""
2012
 
2013
+ #: includes/classes/class-woo-feed-merchant.php:402
2014
  msgid "Kijiji.ca"
2015
  msgstr ""
2016
 
2017
+ #: includes/classes/class-woo-feed-merchant.php:403
2018
  msgid "LeGuide"
2019
  msgstr ""
2020
 
2021
+ #: includes/classes/class-woo-feed-merchant.php:404
2022
  msgid "Marktplaats.nl"
2023
  msgstr ""
2024
 
2025
+ #: includes/classes/class-woo-feed-merchant.php:405
2026
  msgid "Miinto.nl"
2027
  msgstr ""
2028
 
2029
+ #: includes/classes/class-woo-feed-merchant.php:406
2030
+ msgid "Modalova"
2031
+ msgstr ""
2032
+
2033
+ #: includes/classes/class-woo-feed-merchant.php:407
2034
  msgid "Modina.de"
2035
  msgstr ""
2036
 
2037
+ #: includes/classes/class-woo-feed-merchant.php:408
2038
+ msgid "Moebel.de"
2039
+ msgstr ""
2040
+
2041
+ #: includes/classes/class-woo-feed-merchant.php:409
2042
  msgid "Myshopping.com.au"
2043
  msgstr ""
2044
 
2045
+ #: includes/classes/class-woo-feed-merchant.php:410
2046
  msgid "TheNextAd"
2047
  msgstr ""
2048
 
2049
+ #: includes/classes/class-woo-feed-merchant.php:411
2050
  msgid "Nextag"
2051
  msgstr ""
2052
 
2053
+ #: includes/classes/class-woo-feed-merchant.php:412
2054
  msgid "Polyvore"
2055
  msgstr ""
2056
 
2057
+ #: includes/classes/class-woo-feed-merchant.php:413
2058
  msgid "Price Grabber"
2059
  msgstr ""
2060
 
2061
+ #: includes/classes/class-woo-feed-merchant.php:414
2062
+ msgid "Prisjakt"
2063
  msgstr ""
2064
 
2065
+ #: includes/classes/class-woo-feed-merchant.php:415
2066
+ msgid "Profit Share"
2067
  msgstr ""
2068
 
2069
+ #: includes/classes/class-woo-feed-merchant.php:416
2070
  msgid "Rakuten.de"
2071
  msgstr ""
2072
 
2073
+ #: includes/classes/class-woo-feed-merchant.php:417
2074
  msgid "Real"
2075
  msgstr ""
2076
 
2077
+ #: includes/classes/class-woo-feed-merchant.php:418
2078
  msgid "ShareASale"
2079
  msgstr ""
2080
 
2081
+ #: includes/classes/class-woo-feed-merchant.php:419
2082
  msgid "Shopalike.fr"
2083
  msgstr ""
2084
 
2085
+ #: includes/classes/class-woo-feed-merchant.php:420
2086
  msgid "Shopbot"
2087
  msgstr ""
2088
 
2089
+ #: includes/classes/class-woo-feed-merchant.php:421
2090
  msgid "Shopmania"
2091
  msgstr ""
2092
 
2093
+ #: includes/classes/class-woo-feed-merchant.php:422
2094
  msgid "Shopping.com"
2095
  msgstr ""
2096
 
2097
+ #: includes/classes/class-woo-feed-merchant.php:423
2098
  msgid "Shopzilla"
2099
  msgstr ""
2100
 
2101
+ #: includes/classes/class-woo-feed-merchant.php:424
2102
  msgid "SkinFlint.co.uk"
2103
  msgstr ""
2104
 
2105
+ #: includes/classes/class-woo-feed-merchant.php:425
2106
  msgid "Skroutz.gr"
2107
  msgstr ""
2108
 
2109
+ #: includes/classes/class-woo-feed-merchant.php:426
2110
  msgid "Smartly.io"
2111
  msgstr ""
2112
 
2113
+ #: includes/classes/class-woo-feed-merchant.php:427
2114
  msgid "Spartoo.fi"
2115
  msgstr ""
2116
 
2117
+ #: includes/classes/class-woo-feed-merchant.php:428
2118
+ msgid "Shopee"
2119
+ msgstr ""
2120
+
2121
+ #: includes/classes/class-woo-feed-merchant.php:429
2122
  msgid "Stylight.com"
2123
  msgstr ""
2124
 
2125
+ #: includes/classes/class-woo-feed-merchant.php:430
2126
  msgid "Trovaprezzi.it"
2127
  msgstr ""
2128
 
2129
+ #: includes/classes/class-woo-feed-merchant.php:431
2130
  msgid "Twenga"
2131
  msgstr ""
2132
 
2133
+ #: includes/classes/class-woo-feed-merchant.php:432
2134
+ msgid "Tweakers (XML)"
2135
+ msgstr ""
2136
+
2137
+ #: includes/classes/class-woo-feed-merchant.php:433
2138
+ msgid "Tweakers (CSV)"
2139
+ msgstr ""
2140
+
2141
+ #: includes/classes/class-woo-feed-merchant.php:434
2142
  msgid "Vertaa.fi"
2143
  msgstr ""
2144
 
2145
+ #: includes/classes/class-woo-feed-merchant.php:435
2146
  msgid "Walmart"
2147
  msgstr ""
2148
 
2149
+ #: includes/classes/class-woo-feed-merchant.php:436
2150
  msgid "Webmarchand"
2151
  msgstr ""
2152
 
2153
+ #: includes/classes/class-woo-feed-merchant.php:437
2154
+ msgid "Wine Searcher"
2155
+ msgstr ""
2156
+
2157
+ #: includes/classes/class-woo-feed-merchant.php:438
2158
  msgid "Wish.com"
2159
  msgstr ""
2160
 
2161
+ #: includes/classes/class-woo-feed-merchant.php:439
2162
  msgid "Yahoo NFA"
2163
  msgstr ""
2164
 
2165
+ #: includes/classes/class-woo-feed-merchant.php:440
2166
  msgid "Zap.co.il"
2167
  msgstr ""
2168
 
2169
+ #: includes/classes/class-woo-feed-merchant.php:441
2170
+ msgid "Zbozi.cz"
2171
  msgstr ""
2172
 
2173
+ #: includes/classes/class-woo-feed-merchant.php:442
2174
+ msgid "Zalando"
2175
  msgstr ""
2176
 
2177
+ #: includes/classes/class-woo-feed-products.php:1715
2178
+ msgid "Product Local Category"
2179
  msgstr ""
2180
 
2181
+ #: includes/classes/class-woo-feed-products.php:1718
2182
+ msgid "Condition"
2183
+ msgstr ""
2184
+
2185
+ #: includes/classes/class-woo-feed-products.php:1821
2186
+ msgid "Custom Fields/Post Meta"
2187
  msgstr ""
2188
 
2189
  #: includes/classes/class-woo-feed-webappick-api.php:96
2261
  msgstr ""
2262
 
2263
  #. translators: 1: plugin name,2: Slightly Smiling Face (Emoji), 3: line break 'br' tag
2264
+ #: includes/classes/class-woo-feed-webappick-api.php:326
2265
+ msgid "%3$s %2$s We have spent countless hours developing this free plugin for you, and we would really appreciate it if you dropped us a quick rating. Your opinion matters a lot to us.%4$s It helps us to get better. Thanks for using %1$s."
2266
  msgstr ""
2267
 
2268
+ #: includes/classes/class-woo-feed-webappick-api.php:334
2269
  msgid "Remind me later"
2270
  msgstr ""
2271
 
2272
+ #: includes/classes/class-woo-feed-webappick-api.php:335
2273
  msgid "I would not"
2274
  msgstr ""
2275
 
2276
+ #: includes/classes/class-woo-feed-webappick-api.php:336
2277
+ msgid "I already did!"
2278
  msgstr ""
2279
 
2280
+ #: includes/classes/class-woo-feed-webappick-api.php:337
2281
+ msgid "Review Here"
 
2282
  msgstr ""
2283
 
2284
  #. translators: 1: This plugin name, 2: Pro version purchase link
2285
+ #: includes/classes/class-woo-feed-webappick-api.php:351
2286
  msgid "You are awesome for using %1$s. Using the %2$s version you can make multilingual feed for your WPML languages."
2287
  msgstr ""
2288
 
2289
  #. translators: 1: This plugin Name, 2: Incompatible plugin name, 3: Pro version purchase link
2290
+ #: includes/classes/class-woo-feed-webappick-api.php:366
2291
  msgid "%1$s isn't fully compatible with %2$s. Get the %3$s version for full support."
2292
  msgstr ""
2293
 
2295
  msgid "Request Successful."
2296
  msgstr ""
2297
 
2298
+ #: libs/WebAppick/AppServices/Insights.php:332
2299
+ msgid "Server environment details (php, mysql, server, WordPress versions)."
2300
+ msgstr ""
2301
+
2302
+ #. translators: 1: plugin name
2303
+ #: libs/WebAppick/AppServices/Insights.php:455
2304
+ msgid "Want to help make %1$s even more awesome? Allow %1$s to collect non-sensitive diagnostic data and usage information."
2305
+ msgstr ""
2306
+
2307
+ #: libs/WebAppick/AppServices/Insights.php:687
2308
+ msgid "Once Weekly"
2309
+ msgstr ""
2310
+
2311
+ #: libs/WebAppick/AppServices/Insights.php:749
2312
+ msgid "I couldn't understand how to make it work"
2313
+ msgstr ""
2314
+
2315
+ #: libs/WebAppick/AppServices/Insights.php:751
2316
+ msgid "Would you like us to assist you?"
2317
+ msgstr ""
2318
+
2319
+ #: libs/WebAppick/AppServices/Insights.php:755
2320
+ msgid "I found a better plugin"
2321
+ msgstr ""
2322
+
2323
+ #: libs/WebAppick/AppServices/Insights.php:757
2324
+ msgid "Which plugin?"
2325
+ msgstr ""
2326
+
2327
+ #: libs/WebAppick/AppServices/Insights.php:761
2328
+ msgid "The plugin is great, but I need specific feature that you don't support"
2329
+ msgstr ""
2330
+
2331
+ #: libs/WebAppick/AppServices/Insights.php:763
2332
+ msgid "Could you tell us more about that feature?"
2333
+ msgstr ""
2334
+
2335
+ #: libs/WebAppick/AppServices/Insights.php:767
2336
+ msgid "The plugin is not working"
2337
+ msgstr ""
2338
+
2339
+ #: libs/WebAppick/AppServices/Insights.php:769
2340
+ msgid "Could you tell us a bit more whats not working?"
2341
+ msgstr ""
2342
+
2343
+ #: libs/WebAppick/AppServices/Insights.php:773
2344
+ msgid "It's not what I was looking for"
2345
+ msgstr ""
2346
+
2347
+ #: libs/WebAppick/AppServices/Insights.php:779
2348
+ msgid "The plugin didn't work as expected"
2349
+ msgstr ""
2350
+
2351
+ #: libs/WebAppick/AppServices/Insights.php:781
2352
+ msgid "What did you expect?"
2353
+ msgstr ""
2354
+
2355
+ #: libs/WebAppick/AppServices/Insights.php:785
2356
+ msgid "Temporary deactivation for debugging"
2357
+ msgstr ""
2358
+
2359
+ #: libs/WebAppick/AppServices/Insights.php:791
2360
+ msgid "Other"
2361
+ msgstr ""
2362
+
2363
+ #: libs/WebAppick/AppServices/Insights.php:793
2364
+ msgid "Could you tell us a bit more?"
2365
+ msgstr ""
2366
+
2367
+ #: libs/WebAppick/AppServices/Insights.php:863
2368
+ msgid "Something Went Wrong."
2369
+ msgstr ""
2370
+
2371
+ #: libs/WebAppick/AppServices/Insights.php:864
2372
+ msgid "Please try again after sometime."
2373
+ msgstr ""
2374
+
2375
+ #. translators: 1: Plugin Name
2376
+ #: libs/WebAppick/AppServices/Insights.php:963
2377
+ msgid "&ldquo;%s&rdquo; Uninstall Confirmation"
2378
+ msgstr ""
2379
+
2380
+ #: libs/WebAppick/AppServices/Insights.php:967
2381
+ msgid "Submit Support Ticket."
2382
+ msgstr ""
2383
+
2384
+ #: libs/WebAppick/AppServices/Insights.php:968, libs/WebAppick/AppServices/Insights.php:1021
2385
+ msgid "Close"
2386
+ msgstr ""
2387
+
2388
+ #: libs/WebAppick/AppServices/Insights.php:983
2389
+ msgid "Email"
2390
+ msgstr ""
2391
+
2392
+ #: libs/WebAppick/AppServices/Insights.php:990
2393
+ msgid "Subject"
2394
+ msgstr ""
2395
+
2396
+ #: libs/WebAppick/AppServices/Insights.php:996
2397
+ msgid "Website"
2398
+ msgstr ""
2399
+
2400
+ #: libs/WebAppick/AppServices/Insights.php:1003
2401
+ msgid "Message"
2402
+ msgstr ""
2403
+
2404
+ #: libs/WebAppick/AppServices/Insights.php:1013
2405
+ msgid "Send Message"
2406
+ msgstr ""
2407
+
2408
+ #: libs/WebAppick/AppServices/Insights.php:1014, libs/WebAppick/AppServices/Insights.php:1051
2409
+ msgid "Cancel"
2410
+ msgstr ""
2411
+
2412
+ #: libs/WebAppick/AppServices/Insights.php:1020
2413
+ msgid "If you have a moment, please let us know why you are deactivating:"
2414
+ msgstr ""
2415
+
2416
+ #: libs/WebAppick/AppServices/Insights.php:1039
2417
+ msgid "In trouble? Please submit a support request."
2418
+ msgstr ""
2419
+
2420
+ #: libs/WebAppick/AppServices/Insights.php:1041
2421
+ msgid "Not Interested"
2422
+ msgstr ""
2423
+
2424
+ #: libs/WebAppick/AppServices/Insights.php:1042
2425
+ msgid "Open Support Ticket"
2426
+ msgstr ""
2427
+
2428
+ #: libs/WebAppick/AppServices/Insights.php:1049
2429
+ msgid "I rather wouldn't say"
2430
+ msgstr ""
2431
+
2432
+ #: libs/WebAppick/AppServices/Insights.php:1050
2433
+ msgid "Submit & Deactivate"
2434
+ msgstr ""
2435
+
2436
+ #: libs/WebAppick/AppServices/Insights.php:1150
2437
+ msgid "Processing..."
2438
+ msgstr ""
2439
+
2440
+ #: libs/WebAppick/AppServices/Promotions.php:126
2441
+ msgid "Promotion Source URL Not Set. see Promotions::set_source( $URL )"
2442
+ msgstr ""
2443
+
2444
+ #: libs/WebAppick/AppServices/Promotions.php:360
2445
+ msgid "Promo hidden"
2446
+ msgstr ""
2447
+
2448
+ #: libs/WebAppick/AppServices/Promotions.php:373
2449
+ msgid "Method must be invoked inside admin_init action"
2450
  msgstr ""
woo-feed.php CHANGED
@@ -10,7 +10,7 @@
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
- * Version: 4.4.4
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
@@ -39,7 +39,7 @@ if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
39
  * @var string
40
  * @since 3.1.6
41
  */
42
- define( 'WOO_FEED_FREE_VERSION', '4.4.4' );
43
  }
44
 
45
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
+ * Version: 4.4.5
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
39
  * @var string
40
  * @since 3.1.6
41
  */
42
+ define( 'WOO_FEED_FREE_VERSION', '4.4.5' );
43
  }
44
 
45
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {