Files
prestashop-entity-selector/assets/js/admin/entity-selector.min.js
myprestarocks af5066dd26 Add selection validation and improve tooltip component
- Add validation system to prevent contradicting conditions:
  - Same entity in include/exclude detection
  - Parent-child conflict detection for tree entities
  - Redundant selection prevention
  - Toast notifications for validation errors

- Fix entity icons (employees: briefcase, taxes: calculator)

- Improve tooltip component:
  - Use Material Icons instead of broken FA4 icons
  - Fix positioning using getBoundingClientRect for viewport coords
  - Add click-to-pin functionality with close button
  - Pinned tooltips show X icon and close button in corner

- Add lightweight test suite (31 tests) for validation logic

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 17:05:56 +01:00

3 lines
186 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
!function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.utils={debounce:function(e,t){var i;return function(){var a=this,s=arguments;clearTimeout(i),i=setTimeout(function(){e.apply(a,s)},t)}},escapeHtml:function(e){return null==e?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")},escapeAttr:function(e){return null==e?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")},getEntityTypeIcon:function(e){return{products:"icon-shopping-cart",categories:"icon-folder-open",manufacturers:"icon-building",suppliers:"icon-truck",attributes:"icon-list-alt",features:"icon-tags",cms:"icon-file-text",cms_categories:"icon-folder"}[e]||"icon-cube"},getEntityTypeLabel:function(e){var t=this.config.trans||{};return{products:t.product||"Product",categories:t.category||"Category",manufacturers:t.manufacturer||"Manufacturer",suppliers:t.supplier||"Supplier",attributes:t.attribute||"Attribute",features:t.feature||"Feature",cms:t.cms_page||"CMS Page",cms_categories:t.cms_category||"CMS Category"}[e]||e},validate:function(){if(1!==this.$wrapper.data("required")&&"1"!==this.$wrapper.data("required"))return!0;var t=!1;return this.$wrapper.find(".target-block").each(function(){if(e(this).find(".selection-group").length>0)return t=!0,!1}),t?(this.clearValidationError(),!0):(this.showValidationError(),!1)},showValidationError:function(){this.$wrapper.addClass("has-validation-error");var t=this.$wrapper.data("required-message")||"Please select at least one item";this.$wrapper.find(".trait-validation-error").remove();var i=e("<div>",{class:"trait-validation-error",html:'<i class="icon-warning"></i> '+t});this.$wrapper.find(".condition-trait-header").after(i),e("html, body").animate({scrollTop:this.$wrapper.offset().top-100},300),this.$wrapper.find(".condition-trait-body").is(":visible")||(this.$wrapper.find(".condition-trait-body").slideDown(200),this.$wrapper.removeClass("collapsed"))},clearValidationError:function(){this.$wrapper.removeClass("has-validation-error"),this.$wrapper.find(".trait-validation-error").remove()},getBlockMode:function(e){var t=this.config.blocks[e];return t&&t.mode?t.mode:"multi"},isBlockSingleMode:function(e){return"single"===this.getBlockMode(e)},getCurrentSingleSelection:function(){if("single"!==(this.config.mode||"multi"))return null;var e=this.$wrapper.find(".entity-chips .entity-chip").first();if(e.length){var t=e.closest(".target-block");return{name:e.find(".chip-name").text()||e.data("id"),entityType:t.data("block-type")||"item"}}return null},supportsTreeBrowsing:function(e){return"categories"===e||"cms_categories"===e}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.events={bindEvents:function(){var t=this;this.$wrapper.on("click",".target-block-tab",function(i){i.preventDefault();var a=e(this).data("blockType");t.switchToBlock(a)}),this.$wrapper.on("click",".target-block-tab .tab-badge",function(i){i.stopPropagation(),i.preventDefault();var a=e(this).closest(".target-block-tab");e(this).hasClass("popover-open")?t.hidePreviewPopover():t.showPreviewPopover(a)}),this.$wrapper.on("click",".condition-match-count.clickable",function(i){i.stopPropagation(),i.preventDefault();var a=e(this);a.hasClass("popover-open")?t.hidePreviewPopover():t.showConditionPreviewPopover(a)}),this.$wrapper.on("click",".group-count-badge.clickable",function(i){i.stopPropagation(),i.preventDefault();var a=e(this);a.hasClass("popover-open")?t.hidePreviewPopover():t.showGroupPreviewPopover(a)}),this.$wrapper.on("click",".trait-total-count",function(i){i.stopPropagation(),i.preventDefault();var a=e(this);a.hasClass("popover-open")?t.hidePreviewPopover():t.showTotalPreviewPopover(a)}),e(document).on("click",function(i){e(i.target).closest(".target-preview-popover").length||e(i.target).closest(".tab-badge").length||e(i.target).closest(".condition-match-count").length||e(i.target).closest(".group-count-badge").length||e(i.target).closest(".group-modifiers").length||e(i.target).closest(".group-preview-badge").length||e(i.target).closest(".toggle-count.clickable").length||e(i.target).closest(".trait-total-count").length||t.hidePreviewPopover()}),this.$wrapper.on("click",".condition-trait-header",function(i){if(!(e(i.target).closest(".target-block-tabs").length||e(i.target).closest(".trait-header-actions").length||e(i.target).closest(".prestashop-switch").length||e(i.target).closest(".trait-total-count").length)){var a=t.$wrapper.find(".condition-trait-body");a.stop(!0,!0),a.is(":visible")?(a.slideUp(200),t.$wrapper.addClass("collapsed")):(a.slideDown(200),t.$wrapper.removeClass("collapsed"))}}),this.$wrapper.on("click",".group-header",function(i){e(i.target).closest(".btn-remove-group, .group-name-input").length||"single"!==t.$wrapper.data("mode")&&e(this).closest(".selection-group").toggleClass("collapsed")}),this.$wrapper.on("click",".trait-header-actions .btn-toggle-groups",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.attr("data-state")||"collapsed",n=t.config.trans||{};"collapsed"===s?(t.$wrapper.find(".selection-group").removeClass("collapsed"),a.attr("data-state","expanded"),a.attr("title",n.collapse_all||"Collapse all groups"),a.find("i").removeClass("icon-expand").addClass("icon-compress")):(t.$wrapper.find(".selection-group").addClass("collapsed"),a.attr("data-state","collapsed"),a.attr("title",n.expand_all||"Expand all groups"),a.find("i").removeClass("icon-compress").addClass("icon-expand"))}),this.$wrapper.on("change",".trait-show-all-toggle .show-all-checkbox",function(i){i.stopPropagation(),e(this).prop("checked")&&t.clearAllConditions()}),this.$wrapper.on("change",".target-switch-toggle",function(i){i.stopPropagation(),"1"===e(this).val()?(t.clearAllConditions(),t.$wrapper.find(".condition-trait-body").slideUp(200),t.$wrapper.addClass("collapsed")):(t.$wrapper.find(".condition-trait-body").slideDown(200),t.$wrapper.removeClass("collapsed"))}),this.$wrapper.on("click",".btn-add-group",function(i){i.preventDefault();var a=e(this).closest(".target-block"),s=a.data("blockType");t.addGroup(a,s)}),this.$wrapper.on("click",".btn-remove-group",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.removeGroup(a,s)}),this.$wrapper.on("click focus",".group-name-input",function(e){e.stopPropagation()}),this.$wrapper.on("change blur",".group-name-input",function(){var i=e(this),a=i.closest(".selection-group"),s=e.trim(i.val());a.attr("data-group-name",s),t.serializeAllBlocks()}),this.$wrapper.on("click",".btn-add-exclude",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.addFirstExcludeRow(a,s)}),this.$wrapper.on("click",".btn-add-another-exclude",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.addExcludeRow(a,s)}),this.$wrapper.on("click",".btn-remove-exclude-row",function(i){i.preventDefault();var a=e(this).closest(".exclude-row"),s=e(this).closest(".selection-group"),n=e(this).closest(".target-block");t.removeExcludeRow(a,s,n)}),this.$wrapper.on("change",".include-method-select",function(){t.hideDropdown();var i=e(this).closest(".selection-group"),a=e(this).closest(".target-block"),s=i.find(".group-include"),n=a.data("blockType"),r=(t.config.blocks[n]||{}).selection_methods||{},o=e(this).find("option:selected"),l=o.data("valueType")||"none",c=o.data("searchEntity")||"",d=o.data("options")||null,p=i.find(".include-picker"),u=t.buildValuePickerHtml("include",l,c,r);if(p.replaceWith(u),"select"===l&&d){var h=(f=i.find(".include-picker")).find(".select-value-input");h.empty(),e.each(d,function(e,i){h.append('<option value="'+t.escapeAttr(e)+'">'+t.escapeHtml(i)+"</option>")})}if("multi_select_tiles"===l&&d){var f=i.find(".include-picker"),v=!0===o.data("exclusive");t.populateTiles(f,d,v)}if("multi_numeric_range"===l){f=i.find(".include-picker");var m=o.data("step"),g=o.data("min");t.applyRangeInputConstraints(f,m,g)}"combination_attributes"===l&&(f=i.find(".include-picker"),t.loadCombinationAttributeGroups(f));var b=e(this).val();t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),b,n),t.updateBlockStatus(a),t.serializeAllBlocks(s)}),this.$wrapper.on("change",".exclude-method-select",function(){t.hideDropdown();var i=e(this).closest(".exclude-row"),a=(e(this).closest(".selection-group"),e(this).closest(".target-block").data("blockType")),s=(t.config.blocks[a]||{}).selection_methods||{},n=e(this).find("option:selected"),r=n.data("valueType")||"entity_search",o=n.data("searchEntity")||a,l=n.data("options")||null,c=i.find(".exclude-picker"),d=t.buildValuePickerHtml("exclude",r,o,s);if(c.replaceWith(d),"select"===r&&l){var p=(u=i.find(".exclude-picker")).find(".select-value-input");p.empty(),e.each(l,function(e,i){p.append('<option value="'+t.escapeAttr(e)+'">'+t.escapeHtml(i)+"</option>")})}if("multi_select_tiles"===r&&l){var u=i.find(".exclude-picker"),h=!0===n.data("exclusive");t.populateTiles(u,l,h)}if("multi_numeric_range"===r){u=i.find(".exclude-picker");var f=n.data("step"),v=n.data("min");t.applyRangeInputConstraints(u,f,v)}"combination_attributes"===r&&(u=i.find(".exclude-picker"),t.loadCombinationAttributeGroups(u));var m=e(this).val();t.updateMethodInfoPlaceholder(i.find(".exclude-header-row"),m,a),t.serializeAllBlocks(i)}),this.$wrapper.on("keydown",".pattern-input",function(t){13===t.keyCode&&(t.preventDefault(),e(this).closest(".draft-tag").find(".btn-add-pattern").click())}),this.$wrapper.on("click",".draft-tag .btn-add-pattern",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".draft-tag"),s=a.closest(".value-picker"),n=a.closest(".group-include, .exclude-row"),r=a.find(".pattern-input"),o=e.trim(r.val());if(o){var l="1"===a.attr("data-case-sensitive");t.addPatternTag(s,o,l),r.val("").focus(),a.find(".pattern-match-count").removeClass("count-found count-zero").hide(),a.find(".pattern-match-count .count-value").text(""),t.serializeAllBlocks(n)}}),this.$wrapper.on("input",".pattern-input",function(){var i=e(this),a=i.closest(".draft-tag");if(a.length){var s=e.trim(i.val());i.data("countTimeout")&&clearTimeout(i.data("countTimeout"));var n=a.find(".pattern-match-count");if(s){var r=setTimeout(function(){var e="1"===a.attr("data-case-sensitive");t.updateDraftTagCount(a,s,e)},300);i.data("countTimeout",r)}else{n.removeClass("count-found count-zero").hide(),n.find(".count-value").text("");var o=a.closest(".selection-group");o.length&&t.updateGroupTotalCount(o)}}}),this.$wrapper.on("click",".pattern-tag .btn-remove-pattern",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".group-include, .exclude-row");e(this).closest(".pattern-tag").remove(),t.serializeAllBlocks(a)}),this.$wrapper.on("click",".pattern-tag .btn-toggle-case",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".pattern-tag"),s=e(this),n=t.config.trans||{},r=a.hasClass("draft-tag"),o=!(1===a.data("caseSensitive")||"1"===a.data("caseSensitive")||"1"===a.attr("data-case-sensitive"));a.data("caseSensitive",o?1:0),a.attr("data-case-sensitive",o?"1":"0"),a.toggleClass("case-sensitive",o),s.find(".case-icon").text(o?"Aa":"aa");var l=o?n.case_sensitive||"Case sensitive - click to toggle":n.case_insensitive||"Case insensitive - click to toggle";if(s.attr("title",l),r){var c=e.trim(a.find(".pattern-input").val());c&&t.updateDraftTagCount(a,c,o)}else{var d=a.closest(".group-include, .exclude-row");t.serializeAllBlocks(d)}}),this.$wrapper.on("click",".pattern-match-count",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.data("count"),n=a.data("pattern"),r=a.data("entityType"),o=a.data("caseSensitive");!s||s<=0||!n||t.showPatternPreviewModal(n,r,o,s)}),this.$wrapper.on("click",".pattern-tag .pattern-tag-text",function(t){t.preventDefault();var i=e(this).closest(".pattern-tag");if(!i.hasClass("editing")){var a=i.data("pattern"),s=e('<input type="text" class="pattern-tag-edit">').val(a),n=e('<button type="button" class="btn-pattern-save" title="Save"><i class="icon-check"></i></button>'),r=e('<button type="button" class="btn-pattern-cancel" title="Cancel"><i class="icon-times"></i></button>'),o=e('<span class="pattern-edit-actions"></span>').append(n,r);i.addClass("editing").find(".pattern-tag-text").hide(),i.find(".btn-remove-pattern").hide(),i.prepend(o).prepend(s),s.focus().select(),s.on("keydown",function(e){13===e.keyCode?(e.preventDefault(),n.click()):27===e.keyCode&&(e.preventDefault(),r.click())})}}),this.$wrapper.on("click",".pattern-tag .btn-pattern-save",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".pattern-tag"),s=a.find(".pattern-tag-edit"),n=a.data("pattern"),r=e.trim(s.val());r&&r!==n&&(a.data("pattern",r),a.find(".pattern-tag-text").text(r)),s.remove(),a.find(".pattern-edit-actions").remove(),a.removeClass("editing").find(".pattern-tag-text, .btn-remove-pattern").show();var o=a.closest(".group-include, .exclude-row");t.serializeAllBlocks(o)}),this.$wrapper.on("click",".pattern-tag .btn-pattern-cancel",function(t){t.preventDefault(),t.stopPropagation();var i=e(this).closest(".pattern-tag");i.find(".pattern-tag-edit").remove(),i.find(".pattern-edit-actions").remove(),i.removeClass("editing").find(".pattern-tag-text, .btn-remove-pattern").show()}),this.$wrapper.on("mouseenter",".mpr-info-wrapper[data-details]",function(){var t=e(this);if(!t.data("tooltip-active")){var i=t.attr("data-details"),a=t.attr("data-tooltip-class")||"",s=e("<div>",{class:"mpr-tooltip mpr-tooltip-fixed "+a,html:i});e("body").append(s),t.data("tooltip-active",!0);var n=t.offset(),r=t.outerWidth(),o=s.outerWidth(),l=s.outerHeight(),c=n.left+r/2-o/2,d=n.top-l-10;c<10&&(c=10),c+o>e(window).width()-10&&(c=e(window).width()-o-10),s.css({position:"fixed",left:c+"px",top:d-e(window).scrollTop()+"px"}),t.data("tooltip-el",s)}}),this.$wrapper.on("mouseleave",".mpr-info-wrapper[data-details]",function(){var t=e(this),i=t.data("tooltip-el");i&&i.remove(),t.data("tooltip-active",!1),t.data("tooltip-el",null)}),this.$wrapper.on("change",".range-min-input, .range-max-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("change",".date-from-input, .date-to-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("change",".select-value-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("click",".btn-add-range",function(i){i.preventDefault();var a=e(this).closest(".value-picker"),s=e(this).closest(".group-include, .exclude-row"),n=a.find(".multi-range-container"),r=n.find(".multi-range-chips"),o=n.find(".range-min-input"),l=n.find(".range-max-input"),c=o.val().trim(),d=l.val().trim();if(""!==c||""!==d){var p=parseFloat(o.attr("step"))||.01,u=o.attr("min"),h=void 0!==u&&""!==u;u=h?parseFloat(u):null;var f=""!==c?parseFloat(c):null,v=""!==d?parseFloat(d):null;if(h){if(null!==f&&f<u)return void t.showRangeInputError(o,t.config.trans.min_value_error||"Minimum value is "+u);if(null!==v&&v<u)return void t.showRangeInputError(l,t.config.trans.min_value_error||"Minimum value is "+u)}if(null!==f&&null!==v&&f>v)t.showRangeInputError(o,t.config.trans.min_greater_than_max||"Min cannot be greater than max");else{var m,g=p<1?String(p).split(".")[1].length:0;null!==f&&(f=p>=1?Math.round(f):parseFloat(f.toFixed(g)),c=String(f)),null!==v&&(v=p>=1?Math.round(v):parseFloat(v.toFixed(g)),d=String(v)),m=""!==c&&""!==d?c+" - "+d:""!==c?"≥ "+c:"≤ "+d;var b=e("<span>",{class:"range-chip","data-min":c,"data-max":d});b.append(e("<span>",{class:"range-chip-text",text:m})),b.append(e("<button>",{type:"button",class:"btn-remove-range",html:'<i class="icon-times"></i>'})),r.append(b),o.val(""),l.val(""),t.serializeAllBlocks(s)}}}),this.$wrapper.on("click",".btn-remove-range",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".range-chip"),s=a.closest(".group-include, .exclude-row");a.remove(),t.serializeAllBlocks(s)}),this.$wrapper.on("keydown",".multi-range-container .range-min-input, .multi-range-container .range-max-input",function(t){13===t.keyCode&&(t.preventDefault(),e(this).closest(".multi-range-container").find(".btn-add-range").click())}),this.$wrapper.on("click",".tile-option",function(i){i.preventDefault();var a=e(this),s=a.closest(".multi-select-tiles"),n=a.closest(".group-include, .exclude-row");"true"===s.attr("data-exclusive")?a.hasClass("selected")?a.removeClass("selected"):(s.find(".tile-option").removeClass("selected"),a.addClass("selected")):a.toggleClass("selected"),t.serializeAllBlocks(n)}),this.$wrapper.on("click",".comb-attr-value",function(i){i.preventDefault();var a=e(this),s=a.closest(".group-include, .exclude-row"),n=a.closest(".value-picker");a.toggleClass("selected"),t.updateCombinationData(n),t.serializeAllBlocks(s)}),this.$wrapper.on("change",".comb-mode-radio",function(){var i=e(this).closest(".value-picker"),a=e(this).closest(".group-include, .exclude-row");t.updateCombinationData(i),t.serializeAllBlocks(a)}),this.$wrapper.on("click",".comb-select-all",function(i){i.preventDefault();var a=e(this).closest(".comb-attr-group"),s=e(this).closest(".value-picker"),n=e(this).closest(".group-include, .exclude-row");a.find(".comb-attr-value:visible").addClass("selected"),t.updateCombinationData(s),t.serializeAllBlocks(n)}),this.$wrapper.on("click",".comb-select-none",function(i){i.preventDefault();var a=e(this).closest(".comb-attr-group"),s=e(this).closest(".value-picker"),n=e(this).closest(".group-include, .exclude-row");a.find(".comb-attr-value").removeClass("selected"),t.updateCombinationData(s),t.serializeAllBlocks(n)}),this.$wrapper.on("input",".comb-attr-search",function(){var t=e(this).val().toLowerCase().trim();e(this).closest(".comb-attr-group").find(".comb-attr-value").each(function(){var i=e(this).data("name")||"";t&&-1===i.indexOf(t)?e(this).hide():e(this).show()})}),this.$wrapper.on("click",".btn-toggle-modifiers",function(t){t.preventDefault();var i=e(this).closest(".group-modifiers"),a=i.find(".group-modifiers-content");a.slideToggle(150,function(){i.toggleClass("expanded",a.is(":visible"))})}),this.$wrapper.on("change input",".group-modifier-limit",function(){var i=e(this).closest(".selection-group"),a=e(this),s=parseInt(a.val(),10),n=i.find(".group-header .group-count-badge").data("finalCount")||0,r=i.find(".group-preview-badge .preview-count");if(r.length&&n>0){var o=s>0&&s<n?s:n;r.text(o)}t.updateModifierButtonState(i),t.serializeAllBlocks(),t.refreshGroupPreviewIfOpen(i)}),this.$wrapper.on("change",".group-modifier-sort",function(){var i=e(this).closest(".selection-group");t.serializeAllBlocks(),t.refreshGroupPreviewIfOpen(i)}),this.$wrapper.on("click",".group-modifiers .btn-sort-dir",function(i){i.preventDefault();var a=e(this),s=a.closest(".selection-group"),n="DESC"===(a.data("dir")||"DESC")?"ASC":"DESC";a.data("dir",n),a.attr("data-dir",n);var r=a.find("i");"ASC"===n?r.removeClass("icon-sort-amount-desc").addClass("icon-sort-amount-asc"):r.removeClass("icon-sort-amount-asc").addClass("icon-sort-amount-desc"),t.serializeAllBlocks(),t.refreshGroupPreviewIfOpen(s)}),this.$wrapper.on("click",".group-preview-badge.clickable",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.closest(".selection-group"),n=a.closest(".target-block").data("blockType");a.hasClass("popover-open")?t.hidePreviewPopover():t.showGroupPreviewPopover(a,s,n)}),this.$wrapper.on("focus",".entity-search-input",function(){var i=e(this).closest(".value-picker"),a=e(this).closest(".selection-group"),s=e(this).closest(".target-block").data("blockType"),n=parseInt(a.data("groupIndex"),10),r=i.hasClass("include-picker")?"include":"exclude",o=i.attr("data-search-entity")||s,l=null;if("exclude"===r){var c=e(this).closest(".exclude-row");c.length&&(l=parseInt(c.data("excludeIndex"),10))}t.activeGroup&&t.activeGroup.searchEntity!==o&&(t.searchResults=[],t.searchOffset=0,t.searchQuery="",t.viewMode="list",t.resetFiltersWithoutSearch(),t.$dropdown.find(".dropdown-results").empty(),t.$dropdown.find(".filter-panel").removeClass("show"),t.$dropdown.find(".btn-toggle-filters").removeClass("active")),t.activeGroup={blockType:s,groupIndex:n,section:r,excludeIndex:l,searchEntity:o};var d=i.find(".entity-chips");t.pendingSelections=[],d.find(".entity-chip").each(function(){t.pendingSelections.push({id:e(this).data("id"),name:e(this).find(".chip-name").text(),data:e(this).data()})}),t.pendingPicker=i,t.pendingRow="include"===r?a.find(".group-include"):a.find('.exclude-row[data-exclude-index="'+l+'"]'),t.searchOffset=0,t.searchQuery=e(this).val().trim(),t.updateFilterPanelForEntity(o),"products"===o&&t.loadFilterableData(),t.positionDropdown(e(this)),"tree"!==t.viewMode||"categories"!==o&&"cms_categories"!==o?t.performSearch():t.loadCategoryTree()}),this.$wrapper.on("input",".entity-search-input",function(){var i=e(this).val().trim();t.searchQuery=i,t.searchOffset=0,"tree"!==t.viewMode?(clearTimeout(t.searchTimeout),t.searchTimeout=setTimeout(function(){t.performSearch()},300)):t.filterCategoryTree(i)}),this.$dropdown.on("click",".history-item",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).data("query");if(a&&t.activeGroup){var s=t.$wrapper.find(".entity-search-input:focus");s.length||(s=t.$wrapper.find('.target-block[data-block-type="'+t.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+t.activeGroup.groupIndex+'"]').find(".entity-search-input").first()),s.val(a),t.searchQuery=a,t.searchOffset=0,t.performSearch()}}),this.$dropdown.on("click",".history-item .btn-delete-history",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".history-item"),s=a.data("query");s&&t.activeGroup&&(t.removeFromSearchHistory(t.activeGroup.searchEntity,s),a.fadeOut(150,function(){e(this).remove(),t.$dropdown.find(".history-item").length||t.performSearch()}))}),this.$dropdown.on("click",".dropdown-item",function(i){i.preventDefault(),e(document.activeElement).filter("input, textarea").blur();var a=e(this),s=a.data("id"),n=a.data("name"),r=a.hasClass("selected");if(t.activeGroup){var o,l,c=t.$wrapper.find('.target-block[data-block-type="'+t.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+t.activeGroup.groupIndex+'"]');if("include"===t.activeGroup.section)o=c.find(".include-picker"),l=c.find(".group-include");else{var d=c.find('.exclude-row[data-exclude-index="'+t.activeGroup.excludeIndex+'"]');o=d.find(".exclude-picker"),l=d}if(r)t.removeSelection(o,s),a.toggleClass("selected"),t.serializeAllBlocks(l);else{var p=t.activeGroup.section,u=t.validateSelection(s,n,p,a.data());if(!u.valid)return void t.showValidationError(u.error);var h=t.getCurrentSingleSelection();if(h){var f=t.activeGroup.blockType;t.showReplaceConfirmation(h,{name:n,entityType:f},function(){t.addSelection(o,s,n,a.data()),a.addClass("selected"),t.serializeAllBlocks(l)})}else t.addSelection(o,s,n,a.data()),a.toggleClass("selected"),t.serializeAllBlocks(l)}}}),this.$wrapper.on("click",".chip-remove",function(i){i.stopPropagation();var a=e(this).closest(".entity-chip"),s=e(this).closest(".value-picker"),n=e(this).closest(".group-include, .exclude-row"),r=a.data("id");t.removeSelection(s,r),t.serializeAllBlocks(n),t.$dropdown&&t.$dropdown.hasClass("show")&&t.$dropdown.find('.dropdown-item[data-id="'+r+'"]').removeClass("selected")}),this.$wrapper.on("click",".chips-show-more-toggle",function(i){i.stopPropagation();var a=e(this).closest(".entity-chips");a.hasClass("chips-expanded")?a.removeClass("chips-expanded").addClass("chips-collapsed"):a.addClass("chips-expanded").removeClass("chips-collapsed"),t.updateChipsVisibility(a)}),this.$dropdown.on("click",".btn-select-all",function(i){if(i.preventDefault(),t.activeGroup){var a=t.activeGroup.section,s=0;if("tree"!==t.viewMode){var n,r,o=t.$wrapper.find('.target-block[data-block-type="'+t.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+t.activeGroup.groupIndex+'"]');if("include"===t.activeGroup.section)n=o.find(".include-picker"),r=o.find(".group-include");else{var l=o.find('.exclude-row[data-exclude-index="'+t.activeGroup.excludeIndex+'"]');n=l.find(".exclude-picker"),r=l}t.$dropdown.find(".dropdown-item:visible").each(function(){if(!e(this).hasClass("selected")){var i=e(this).data("id"),r=e(this).data("name");if(!t.validateSelection(i,r,a,e(this).data()).valid)return void s++;t.addSelectionNoUpdate(n,i,r,e(this).data()),e(this).addClass("selected")}}),s>0&&(d=((t.config.trans||{}).items_skipped_conflicts||"{count} item(s) were skipped due to conflicts.").replace("{count}",s),t.showValidationError(d));var c=n.find(".entity-chips");t.updateChipsVisibility(c),t.serializeAllBlocks(r)}else{if(t.pendingSelections||(t.pendingSelections=[]),t.$dropdown.find(".tree-item:not(.filtered-out)").each(function(){var i=e(this),n=parseInt(i.data("id"),10),r=i.data("name");if(!i.hasClass("selected")){if(!t.validateSelection(n,r,a,i.data()).valid)return void s++;i.addClass("selected"),t.pendingSelections.some(function(e){return parseInt(e.id,10)===n})||t.pendingSelections.push({id:n,name:r,data:i.data()})}}),s>0){var d=((t.config.trans||{}).items_skipped_conflicts||"{count} item(s) were skipped due to conflicts.").replace("{count}",s);t.showValidationError(d)}var p=t.$dropdown.find(".tree-item.selected").length,u=t.$dropdown.find(".tree-item").length,h="cms_categories"===(t.$dropdown.find(".category-tree").data("entity-type")||"categories")?"CMS categories":"categories";t.$dropdown.find(".results-count").text(u+" "+h+" ("+p+" selected)")}}}),this.$dropdown.on("click",".btn-clear-selection",function(e){if(e.preventDefault(),t.activeGroup)if("tree"!==t.viewMode){var i,a,s=t.$wrapper.find('.target-block[data-block-type="'+t.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+t.activeGroup.groupIndex+'"]');if("include"===t.activeGroup.section)i=s.find(".include-picker"),a=s.find(".group-include");else{var n=s.find('.exclude-row[data-exclude-index="'+t.activeGroup.excludeIndex+'"]');i=n.find(".exclude-picker"),a=n}i.find(".entity-chips").empty().removeClass("chips-expanded chips-collapsed"),t.$dropdown.find(".dropdown-item").removeClass("selected"),t.serializeAllBlocks(a)}else{t.pendingSelections=[],t.$dropdown.find(".tree-item").removeClass("selected");var r=t.$dropdown.find(".tree-item").length,o="cms_categories"===(t.$dropdown.find(".category-tree").data("entity-type")||"categories")?"CMS categories":"categories";t.$dropdown.find(".results-count").text(r+" "+o)}}),this.$dropdown.on("click",".btn-confirm-dropdown",function(e){if(e.preventDefault(),t.pendingPicker&&t.pendingSelections){var i=t.pendingPicker.find(".entity-chips");i.empty(),t.pendingSelections.forEach(function(e){t.addSelectionNoUpdate(t.pendingPicker,e.id,e.name,e.data)}),t.updateChipsVisibility(i),t.pendingRow&&t.serializeAllBlocks(t.pendingRow)}t.pendingSelections=null,t.pendingPicker=null,t.pendingRow=null,t.hideDropdown()}),this.$dropdown.on("click",".btn-cancel-dropdown",function(e){e.preventDefault(),t.pendingSelections=null,t.pendingPicker=null,t.pendingRow=null,t.hideDropdown()}),this.$dropdown.on("click",".btn-load-more",function(e){if(e.preventDefault(),!t.isLoading){var i=parseInt(t.$dropdown.find(".load-more-select").val(),10)||20;t.searchOffset=t.searchResults.length,t.loadMoreCount=i,t.performSearch(!0)}}),this.$dropdown.on("change",".sort-field-select",function(){t.currentSort.field=e(this).val(),t.refreshSearch()}),this.$dropdown.on("click",".btn-sort-dir",function(i){i.preventDefault();var a=e(this),s="ASC"===a.data("dir")?"DESC":"ASC";a.data("dir",s),a.find("i").attr("class","ASC"===s?"icon-sort-alpha-asc":"icon-sort-alpha-desc"),t.currentSort.dir=s,t.refreshSearch()}),this.$dropdown.on("click",".category-tree .tree-toggle",function(i){i.stopPropagation();var a=e(this).closest(".tree-item"),s=t.$dropdown.find(".tree-item");a.toggleClass("collapsed");var n=a.hasClass("collapsed");e(this).find("i").toggleClass("icon-caret-down",!n).toggleClass("icon-caret-right",n);for(var r=t.findTreeDescendants(a,s),o=0;o<r.length;o++)e(r[o]).toggle(!n)}),this.$dropdown.on("click",".category-tree .tree-item",function(i){if(!e(i.target).closest(".tree-toggle, .btn-select-children, .tree-count").length){e(document.activeElement).filter("input, textarea").blur();var a=e(this),s=parseInt(a.data("id"),10),n=a.data("name"),r=a.hasClass("selected");if(t.activeGroup){t.pendingSelections||(t.pendingSelections=[]);var o,l,c,d=t.$dropdown.find(".tree-item");if(r)t.pendingSelections=t.pendingSelections.filter(function(e){return parseInt(e.id,10)!==s}),a.removeClass("selected");else{var p=t.activeGroup.section,u=t.validateSelection(s,n,p,a.data());if(!u.valid)return void t.showValidationError(u.error);t.pendingSelections.some(function(e){return parseInt(e.id,10)===s})||t.pendingSelections.push({id:s,name:n,data:a.data()}),a.addClass("selected")}o=t.$dropdown.find(".tree-item.selected").length,l=t.$dropdown.find(".tree-item").length,c="cms_categories"===(t.$dropdown.find(".category-tree").data("entity-type")||"categories")?"CMS categories":"categories",t.$dropdown.find(".results-count").text(l+" "+c+(o>0?" ("+o+" selected)":"")),t.updateSelectChildrenButtons(d)}}}),this.$dropdown.on("click",".category-tree .tree-count.clickable",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.data("category-id"),n=a.closest(".tree-item").data("name"),r=t.$dropdown.find(".category-tree").data("entity-type")||"categories";a.hasClass("popover-open")?t.hidePreviewPopover():t.showCategoryItemsPreview(a,s,n,r)}),this.$dropdown.on("click",".category-tree .btn-select-children",function(i){i.stopPropagation();var a=e(this),s=a.closest(".tree-item"),n=t.$dropdown.find(".tree-item");if(t.activeGroup){var r,o,l=t.$wrapper.find('.target-block[data-block-type="'+t.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+t.activeGroup.groupIndex+'"]');if("include"===t.activeGroup.section)r=l.find(".include-picker"),o=l.find(".group-include");else{var c=l.find('.exclude-row[data-exclude-index="'+t.activeGroup.excludeIndex+'"]');r=c.find(".exclude-picker"),o=c}for(var d=t.findTreeDescendants(s,n),p=s.hasClass("selected"),u=0;u<d.length&&p;u++)e(d[u]).hasClass("selected")||(p=!1);var h=t.config.trans||{};if(p){t.removeSelection(r,s.data("id")),s.removeClass("selected");for(var f=0;f<d.length;f++){var v=e(d[f]);t.removeSelection(r,v.data("id")),v.removeClass("selected")}a.find("i").removeClass("icon-minus-square").addClass("icon-plus-square"),a.attr("title",h.select_with_children||"Select with all children")}else{var m=t.activeGroup.section,g=0;if(!s.hasClass("selected")){var b=t.validateSelection(s.data("id"),s.data("name"),m,s.data());if(!b.valid)return void t.showValidationError(b.error);t.addSelectionNoUpdate(r,s.data("id"),s.data("name"),s.data()),s.addClass("selected")}for(var w=0;w<d.length;w++){var y=e(d[w]);y.hasClass("selected")||(t.validateSelection(y.data("id"),y.data("name"),m,y.data()).valid?(t.addSelectionNoUpdate(r,y.data("id"),y.data("name"),y.data()),y.addClass("selected")):g++)}if(g>0){var x=(h.children_skipped_conflicts||"{count} child item(s) were skipped due to conflicts.").replace("{count}",g);t.showValidationError(x)}a.find("i").removeClass("icon-plus-square").addClass("icon-minus-square"),a.attr("title",h.deselect_with_children||"Deselect with all children")}var _=r.find(".entity-chips");t.updateChipsVisibility(_),t.serializeAllBlocks(o),t.updateSelectChildrenButtons(n);var k=t.$dropdown.find(".tree-item.selected").length,C=t.$dropdown.find(".tree-item").length,S="cms_categories"===(t.$dropdown.find(".category-tree").data("entity-type")||"categories")?"CMS categories":"categories";t.$dropdown.find(".results-count").text(C+" "+S+(k>0?" ("+k+" selected)":""))}}),this.$dropdown.on("click",".category-tree .btn-expand-all",function(e){e.preventDefault(),t.$dropdown.find(".tree-item").removeClass("collapsed").show(),t.$dropdown.find(".tree-toggle i").removeClass("icon-caret-right").addClass("icon-caret-down")}),this.$dropdown.on("click",".category-tree .btn-collapse-all",function(i){i.preventDefault();var a=1/0;t.$dropdown.find(".tree-item").each(function(){var t=parseInt(e(this).data("level"),10);t<a&&(a=t)}),t.$dropdown.find(".tree-item").each(function(){var t=e(this),i=parseInt(t.data("level"),10),s=t.hasClass("has-children");i===a?(s&&(t.addClass("collapsed"),t.find(".tree-toggle i").removeClass("icon-caret-down").addClass("icon-caret-right")),t.show()):t.hide()})}),this.$dropdown.on("keyup",".refine-input",function(){var i=e(this).val().trim();t.refineQuery=i,t.$dropdown.find(".btn-clear-refine").toggle(i.length>0),clearTimeout(t.refineTimeout),t.refineTimeout=setTimeout(function(){"tree"!==t.viewMode?t.refreshSearch():t.filterCategoryTree(i)},300)}),this.$dropdown.on("click",".btn-clear-refine",function(i){i.preventDefault(),t.refineQuery="",t.$dropdown.find(".refine-input").val(""),e(this).hide(),"tree"!==t.viewMode?t.refreshSearch():t.filterCategoryTree("")}),this.$dropdown.on("click",".btn-refine-negate",function(i){i.preventDefault(),t.refineNegate=!t.refineNegate,e(this).toggleClass("active",t.refineNegate);var a=t.config.trans||{},s=t.refineNegate?a.refine_exclude||"Exclude...":a.refine_short||"Refine...";t.$dropdown.find(".refine-input").attr("placeholder",s),t.refineQuery&&t.refreshSearch()}),this.$dropdown.on("click",".btn-toggle-filters",function(i){i.preventDefault();var a=t.$dropdown.find(".filter-panel");a.toggleClass("show"),e(this).toggleClass("active",a.hasClass("show")),a.hasClass("show")&&t.activeGroup&&t.updateFilterPanelForEntity(t.activeGroup.searchEntity)}),this.$dropdown.on("click",".btn-show-history",function(i){i.preventDefault(),e(this).toggleClass("active"),e(this).hasClass("active")&&t.activeGroup?t.showSearchHistory(t.activeGroup.searchEntity):t.performSearch()}),this.$dropdown.on("change",".filter-in-stock",function(){t.filters.inStock=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-discounted",function(){t.filters.discounted=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-price-min, .filter-price-max",function(){var e=t.$dropdown.find(".filter-panel");t.filters.priceMin=e.find(".filter-price-min").val()||null,t.filters.priceMax=e.find(".filter-price-max").val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-product-count-min, .filter-product-count-max",function(){var i=e(this).closest(".filter-row");t.filters.productCountMin=i.find(".filter-product-count-min").val()||null,t.filters.productCountMax=i.find(".filter-product-count-max").val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-sales-min, .filter-sales-max",function(){var i=e(this).closest(".filter-row");t.filters.salesMin=i.find(".filter-sales-min").val()||null,t.filters.salesMax=i.find(".filter-sales-max").val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-turnover-min, .filter-turnover-max",function(){var i=e(this).closest(".filter-row");t.filters.turnoverMin=i.find(".filter-turnover-min").val()||null,t.filters.turnoverMax=i.find(".filter-turnover-max").val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-date-add-from, .filter-date-add-to",function(){var i=e(this).closest(".filter-row");t.filters.dateAddFrom=i.find(".filter-date-add-from").val()||null,t.filters.dateAddTo=i.find(".filter-date-add-to").val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-last-product-from, .filter-last-product-to",function(){var i=e(this).closest(".filter-row");t.filters.lastProductFrom=i.find(".filter-last-product-from").val()||null,t.filters.lastProductTo=i.find(".filter-last-product-to").val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-depth-select",function(){t.filters.depth=e(this).val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-has-products",function(){t.filters.hasProducts=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-has-description",function(){t.filters.hasDescription=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-has-image",function(){t.filters.hasImage=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-active-only",function(){t.filters.activeOnly=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-attribute-group-select",function(){t.filters.attributeGroup=e(this).val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-feature-group-select",function(){t.filters.featureGroup=e(this).val()||null,t.refreshSearch()}),this.$dropdown.on("change",".filter-is-color",function(){t.filters.isColor=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-is-custom",function(){t.filters.isCustom=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("change",".filter-indexable",function(){t.filters.indexable=e(this).is(":checked"),t.refreshSearch()}),this.$dropdown.on("click",".filter-row-entity-categories .btn-clear-filters, .filter-row-entity-manufacturers .btn-clear-filters, .filter-row-entity-suppliers .btn-clear-filters, .filter-row-entity-attributes .btn-clear-filters, .filter-row-entity-features .btn-clear-filters, .filter-row-entity-cms .btn-clear-filters, .filter-row-entity-cms-categories .btn-clear-filters",function(i){i.preventDefault();var a=e(this).closest(".filter-row");a.find('input[type="number"]').val(""),a.find('input[type="date"]').val(""),a.find("select").val(""),a.find('input[type="checkbox"]').prop("checked",!1),a.find(".filter-active-only").prop("checked",!0),t.filters.productCountMin=null,t.filters.productCountMax=null,t.filters.salesMin=null,t.filters.salesMax=null,t.filters.turnoverMin=null,t.filters.turnoverMax=null,t.filters.depth=null,t.filters.hasProducts=!1,t.filters.hasDescription=!1,t.filters.hasImage=!1,t.filters.activeOnly=!0,t.filters.attributeGroup=null,t.filters.featureGroup=null,t.filters.isColor=!1,t.filters.isCustom=!1,t.filters.indexable=!1,t.filters.dateAddFrom=null,t.filters.dateAddTo=null,t.filters.lastProductFrom=null,t.filters.lastProductTo=null,t.refreshSearch()}),this.$dropdown.on("click",".filter-group-toggle",function(i){if(!e(i.target).closest(".toggle-count.clickable").length){i.preventDefault();var a=e(this),s=a.data("group-id"),n=a.data("type"),r=a.hasClass("active");t.$dropdown.find(".filter-group-toggle").removeClass("active"),r?t.hideFilterGroupValues():(a.addClass("active"),t.showFilterGroupValues(s,n))}}),this.$dropdown.on("click",".filter-group-toggle .toggle-count.clickable",function(i){i.stopPropagation(),i.preventDefault();var a=e(this),s=a.data("groupId"),n=a.data("type"),r=a.data("groupName");a.hasClass("popover-open")?t.hidePreviewPopover():t.showFilterGroupPreviewPopover(a,s,n,r)}),this.$dropdown.on("change",".view-mode-select",function(){var i=e(this).val(),a=t.viewMode;t.viewMode=i,t.$dropdown.removeClass("view-list view-tree view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8").addClass("view-"+i.replace("cols-","cols-"));var s=t.activeGroup?t.activeGroup.searchEntity:"";"tree"!==i||"categories"!==s&&"cms_categories"!==s?"tree"!==i&&("tree"===a?t.refreshSearch():t.renderSearchResults(!1)):t.loadCategoryTree()}),this.$dropdown.on("click",".btn-close-values",function(e){e.preventDefault(),e.stopPropagation(),t.hideFilterGroupValues()}),this.$dropdown.on("click",".filter-chip",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=parseInt(a.data("id"),10),n=a.hasClass("filter-attr-chip")?t.filters.attributes:t.filters.features,r=n.indexOf(s);-1===r?(n.push(s),a.addClass("active")):(n.splice(r,1),a.removeClass("active")),t.updateFilterToggleStates(),t.refreshSearch()}),this.$dropdown.on("click",".filter-row-quick .btn-clear-filters",function(e){e.preventDefault(),t.clearFilters()}),e(document).on("click",function(i){e(i.target).closest(".value-picker").length||e(i.target).closest(".target-search-dropdown").length||e(i.target).closest(".target-preview-popover").length||t.hideDropdown()}),e(document).on("keydown",function(i){if(t.$dropdown&&t.$dropdown.hasClass("show")){var a=e(document.activeElement).is("input, textarea");if((i.ctrlKey||i.metaKey)&&65===i.keyCode){if(a)return;return i.preventDefault(),i.stopPropagation(),t.$dropdown.find(".btn-select-all").trigger("click"),!1}if((i.ctrlKey||i.metaKey)&&68===i.keyCode){if(a)return;return i.preventDefault(),i.stopPropagation(),t.$dropdown.find(".btn-clear-selection").trigger("click"),!1}("Escape"===i.key||"Enter"===i.key)&&(i.preventDefault(),t.hideDropdown())}}),this.$wrapper.on("mouseenter",".mpr-info-wrapper:not(.pinned)",function(){var t=e(this),i=t.attr("data-tooltip");if(i&&!e(".mpr-tooltip-fixed.pinned").length){e(".mpr-tooltip-fixed:not(.pinned)").remove();var a=e("<div>",{class:"mpr-tooltip-fixed"}).html(i);e("body").append(a);var s=t[0].getBoundingClientRect(),n=a.outerWidth(),r=a.outerHeight(),o=s.left+s.width/2-n/2,l=s.top-r-8;o<10&&(o=10),o+n>window.innerWidth-10&&(o=window.innerWidth-n-10),l<10&&(l=s.bottom+8),a.css({top:l,left:o})}}),this.$wrapper.on("mouseleave",".mpr-info-wrapper:not(.pinned)",function(){e(".mpr-tooltip-fixed:not(.pinned)").remove()}),this.$wrapper.on("click",".mpr-info-wrapper",function(t){t.preventDefault(),t.stopPropagation();var i=e(this);if(i.hasClass("pinned"))return i.removeClass("pinned"),i.find(".material-icons").text("info_outline"),void e(".mpr-tooltip-fixed.pinned").remove();e(".mpr-info-wrapper.pinned").removeClass("pinned").find(".material-icons").text("info_outline"),e(".mpr-tooltip-fixed").remove();var a=i.attr("data-tooltip");if(a){i.addClass("pinned"),i.find(".material-icons").text("close");var s=e("<div>",{class:"mpr-tooltip-fixed pinned"}),n=e("<button>",{class:"mpr-tooltip-close",type:"button"}).append(e("<i>",{class:"material-icons",text:"close"}));s.append(n).append(a),e("body").append(s),n.on("click",function(){i.removeClass("pinned"),i.find(".material-icons").text("info_outline"),s.remove()});var r=i[0].getBoundingClientRect(),o=s.outerWidth(),l=s.outerHeight(),c=r.left+r.width/2-o/2,d=r.top-l-8;c<10&&(c=10),c+o>window.innerWidth-10&&(c=window.innerWidth-o-10),d<10&&(d=r.bottom+8),s.css({top:d,left:c})}})}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.dropdown={createDropdown:function(){this.$wrapper.find(".target-search-dropdown").remove();var t=this.config.trans||{},i='<div class="target-search-dropdown view-list">';i+='<div class="dropdown-header">',i+='<span class="results-count">0 results</span>',i+='<div class="dropdown-actions">',i+='<button type="button" class="btn-select-all" title="'+(t.select_all||"Select all visible")+'">',i+='<i class="icon-check-square-o"></i> '+(t.all||"All")+" <kbd>Ctrl+A</kbd>",i+="</button>",i+='<button type="button" class="btn-clear-selection" title="'+(t.clear_selection||"Clear selection")+'">',i+='<i class="icon-square-o"></i> '+(t.clear||"Clear")+" <kbd>Ctrl+D</kbd>",i+="</button>",i+='<div class="sort-controls">',i+='<select class="sort-field-select" title="Sort by">',i+='<option value="name">'+(t.sort_name||"Name")+"</option>",i+='<option value="id">'+(t.sort_id||"ID")+"</option>",i+='<option value="position">'+(t.sort_position||"Position")+"</option>",i+='<option value="popularity">'+(t.sort_popularity||"Popularity")+"</option>",i+='<option value="selected">'+(t.sort_selected||"Selected")+"</option>",i+="</select>",i+='<button type="button" class="btn-sort-dir" data-dir="ASC" title="Sort direction">',i+='<i class="icon-sort-alpha-asc"></i>',i+="</button>",i+='<select class="view-mode-select" title="View mode">',i+='<option value="list">'+(t.view_list||"List")+"</option>",i+='<option value="tree" class="tree-view-option">'+(t.view_tree||"Tree")+"</option>",i+='<option value="cols-2">2 '+(t.cols||"cols")+"</option>",i+='<option value="cols-3">3 '+(t.cols||"cols")+"</option>",i+='<option value="cols-4">4 '+(t.cols||"cols")+"</option>",i+='<option value="cols-5">5 '+(t.cols||"cols")+"</option>",i+='<option value="cols-6">6 '+(t.cols||"cols")+"</option>",i+='<option value="cols-7">7 '+(t.cols||"cols")+"</option>",i+='<option value="cols-8">8 '+(t.cols||"cols")+"</option>",i+="</select>",i+="</div>",i+='<div class="refine-compact">',i+='<button type="button" class="btn-refine-negate" title="'+(t.exclude_matches||"Exclude matches (NOT contains)")+'"><i class="icon-ban"></i></button>',i+='<input type="text" class="refine-input" placeholder="'+(t.refine_short||"Refine...")+'">',i+='<button type="button" class="btn-clear-refine" style="display:none;"><i class="icon-times"></i></button>',i+="</div>",i+='<button type="button" class="btn-toggle-filters" title="'+(t.toggle_filters||"Filters")+'">',i+='<i class="icon-filter"></i>',i+="</button>",i+='<button type="button" class="btn-show-history" title="'+(t.recent_searches||"Recent searches")+'">',i+='<i class="icon-clock-o"></i>',i+="</button>",i+="</div>",i+="</div>",i+='<div class="filter-panel">',i+='<div class="filter-row filter-row-quick" data-entity="products">',i+='<label class="filter-label"><input type="checkbox" class="filter-in-stock"> '+(t.in_stock||"In stock")+"</label>",i+='<label class="filter-label"><input type="checkbox" class="filter-discounted"> '+(t.discounted||"On sale")+"</label>",i+='<div class="filter-price-range">',i+='<span class="filter-price-label">'+(t.price||"Price")+":</span>",i+='<input type="number" class="filter-price-min" placeholder="'+(t.min||"Min")+'" min="0" step="0.01">',i+='<span class="filter-price-sep">-</span>',i+='<input type="number" class="filter-price-max" placeholder="'+(t.max||"Max")+'" min="0" step="0.01">',i+="</div>",i+='<button type="button" class="btn-clear-filters" title="'+(t.clear_filters||"Clear filters")+'">',i+='<i class="icon-times"></i>',i+="</button>",i+="</div>",i+='<div class="filter-row filter-row-attributes" data-entity="products" style="display:none;">',i+='<span class="filter-row-label"><i class="icon-tags"></i> '+(t.attributes||"Attributes")+":</span>",i+='<div class="filter-attributes-container"></div>',i+="</div>",i+='<div class="filter-row filter-row-values filter-row-attr-values" data-type="attribute" style="display:none;">',i+='<div class="filter-values-container"></div>',i+="</div>",i+='<div class="filter-row filter-row-features" data-entity="products" style="display:none;">',i+='<span class="filter-row-label"><i class="icon-list-ul"></i> '+(t.features||"Features")+":</span>",i+='<div class="filter-features-container"></div>',i+="</div>",i+='<div class="filter-row filter-row-values filter-row-feat-values" data-type="feature" style="display:none;">',i+='<div class="filter-values-container"></div>',i+="</div>",i+='<div class="filter-row filter-row-entity-categories filter-row-multi" data-entity="categories" style="display:none;">',i+='<div class="filter-subrow">',i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-cubes"></i> '+(t.product_count||"Products")+":</span>",i+='<input type="number" class="filter-product-count-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-product-count-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-shopping-cart"></i> '+(t.total_sales||"Sales")+":</span>",i+='<input type="number" class="filter-sales-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-sales-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-money"></i> '+(t.turnover||"Revenue")+":</span>",i+='<input type="number" class="filter-turnover-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-turnover-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<label class="filter-label"><input type="checkbox" class="filter-active-only" checked> '+(t.active_only||"Active only")+"</label>",i+="</div>",i+='<div class="filter-subrow">',i+='<div class="filter-select-group">',i+='<span class="filter-select-label"><i class="icon-sitemap"></i> '+(t.depth||"Depth")+":</span>",i+='<select class="filter-depth-select">',i+='<option value="">'+(t.all_levels||"All levels")+"</option>",i+='<option value="1">'+(t.level||"Level")+" 1 ("+(t.root||"Root")+")</option>",i+='<option value="2">'+(t.level||"Level")+" 2</option>",i+='<option value="3">'+(t.level||"Level")+" 3</option>",i+='<option value="4">'+(t.level||"Level")+" 4+</option>",i+="</select>",i+="</div>",i+='<label class="filter-label"><input type="checkbox" class="filter-has-products"> '+(t.has_products||"Has products")+"</label>",i+='<label class="filter-label"><input type="checkbox" class="filter-has-description"> '+(t.has_description||"Has description")+"</label>",i+='<label class="filter-label"><input type="checkbox" class="filter-has-image"> '+(t.has_image||"Has image")+"</label>",i+='<button type="button" class="btn-clear-filters"><i class="icon-times"></i></button>',i+="</div>",i+="</div>",i+='<div class="filter-row filter-row-entity-manufacturers filter-row-multi" data-entity="manufacturers" style="display:none;">',i+='<div class="filter-subrow">',i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-cubes"></i> '+(t.product_count||"Products")+":</span>",i+='<input type="number" class="filter-product-count-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-product-count-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-shopping-cart"></i> '+(t.total_sales||"Sales")+":</span>",i+='<input type="number" class="filter-sales-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-sales-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-money"></i> '+(t.turnover||"Revenue")+":</span>",i+='<input type="number" class="filter-turnover-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-turnover-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<label class="filter-label"><input type="checkbox" class="filter-active-only" checked> '+(t.active_only||"Active only")+"</label>",i+="</div>",i+='<div class="filter-subrow">',i+='<div class="filter-date-group">',i+='<span class="filter-date-label"><i class="icon-calendar"></i> '+(t.date_added||"Added")+":</span>",i+='<input type="date" class="filter-date-add-from" title="'+(t.from||"From")+'">',i+='<span class="filter-range-sep">-</span>',i+='<input type="date" class="filter-date-add-to" title="'+(t.to||"To")+'">',i+="</div>",i+='<div class="filter-date-group">',i+='<span class="filter-date-label"><i class="icon-clock-o"></i> '+(t.last_product||"Last product")+":</span>",i+='<input type="date" class="filter-last-product-from" title="'+(t.from||"From")+'">',i+='<span class="filter-range-sep">-</span>',i+='<input type="date" class="filter-last-product-to" title="'+(t.to||"To")+'">',i+="</div>",i+='<button type="button" class="btn-clear-filters"><i class="icon-times"></i></button>',i+="</div>",i+="</div>",i+='<div class="filter-row filter-row-entity-suppliers filter-row-multi" data-entity="suppliers" style="display:none;">',i+='<div class="filter-subrow">',i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-cubes"></i> '+(t.product_count||"Products")+":</span>",i+='<input type="number" class="filter-product-count-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-product-count-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-shopping-cart"></i> '+(t.total_sales||"Sales")+":</span>",i+='<input type="number" class="filter-sales-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-sales-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-money"></i> '+(t.turnover||"Revenue")+":</span>",i+='<input type="number" class="filter-turnover-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-turnover-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<label class="filter-label"><input type="checkbox" class="filter-active-only" checked> '+(t.active_only||"Active only")+"</label>",i+="</div>",i+='<div class="filter-subrow">',i+='<div class="filter-date-group">',i+='<span class="filter-date-label"><i class="icon-calendar"></i> '+(t.date_added||"Added")+":</span>",i+='<input type="date" class="filter-date-add-from" title="'+(t.from||"From")+'">',i+='<span class="filter-range-sep">-</span>',i+='<input type="date" class="filter-date-add-to" title="'+(t.to||"To")+'">',i+="</div>",i+='<div class="filter-date-group">',i+='<span class="filter-date-label"><i class="icon-clock-o"></i> '+(t.last_product||"Last product")+":</span>",i+='<input type="date" class="filter-last-product-from" title="'+(t.from||"From")+'">',i+='<span class="filter-range-sep">-</span>',i+='<input type="date" class="filter-last-product-to" title="'+(t.to||"To")+'">',i+="</div>",i+='<button type="button" class="btn-clear-filters"><i class="icon-times"></i></button>',i+="</div>",i+="</div>",i+='<div class="filter-row filter-row-entity-attributes filter-row-multi" data-entity="attributes" style="display:none;">',i+='<div class="filter-subrow">',i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-cubes"></i> '+(t.product_count||"Products")+":</span>",i+='<input type="number" class="filter-product-count-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-product-count-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-shopping-cart"></i> '+(t.total_sales||"Sales")+":</span>",i+='<input type="number" class="filter-sales-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-sales-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-money"></i> '+(t.turnover||"Revenue")+":</span>",i+='<input type="number" class="filter-turnover-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-turnover-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+="</div>",i+='<div class="filter-subrow">',i+='<div class="filter-select-group">',i+='<span class="filter-select-label"><i class="icon-tags"></i> '+(t.attribute_group||"Group")+":</span>",i+='<select class="filter-attribute-group-select">',i+='<option value="">'+(t.all_groups||"All groups")+"</option>",i+="</select>",i+="</div>",i+='<label class="filter-label"><input type="checkbox" class="filter-is-color"> '+(t.color_only||"Color attributes")+"</label>",i+='<button type="button" class="btn-clear-filters"><i class="icon-times"></i></button>',i+="</div>",i+="</div>",i+='<div class="filter-row filter-row-entity-features filter-row-multi" data-entity="features" style="display:none;">',i+='<div class="filter-subrow">',i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-cubes"></i> '+(t.product_count||"Products")+":</span>",i+='<input type="number" class="filter-product-count-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-product-count-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-shopping-cart"></i> '+(t.total_sales||"Sales")+":</span>",i+='<input type="number" class="filter-sales-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-sales-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+='<div class="filter-range-group">',i+='<span class="filter-range-label"><i class="icon-money"></i> '+(t.turnover||"Revenue")+":</span>",i+='<input type="number" class="filter-turnover-min" placeholder="'+(t.min||"Min")+'" min="0" step="1">',i+='<span class="filter-range-sep">-</span>',i+='<input type="number" class="filter-turnover-max" placeholder="'+(t.max||"Max")+'" min="0" step="1">',i+="</div>",i+="</div>",i+='<div class="filter-subrow">',i+='<div class="filter-select-group">',i+='<span class="filter-select-label"><i class="icon-list-ul"></i> '+(t.feature_group||"Group")+":</span>",i+='<select class="filter-feature-group-select">',i+='<option value="">'+(t.all_groups||"All groups")+"</option>",i+="</select>",i+="</div>",i+='<label class="filter-label"><input type="checkbox" class="filter-is-custom"> '+(t.custom_only||"Custom values")+"</label>",i+='<button type="button" class="btn-clear-filters"><i class="icon-times"></i></button>',i+="</div>",i+="</div>",i+='<div class="filter-row filter-row-entity-cms" data-entity="cms" style="display:none;">',i+='<label class="filter-label"><input type="checkbox" class="filter-active-only" checked> '+(t.active_only||"Active only")+"</label>",i+='<label class="filter-label"><input type="checkbox" class="filter-indexable"> '+(t.indexable||"Indexable")+"</label>",i+='<button type="button" class="btn-clear-filters"><i class="icon-times"></i></button>',i+="</div>",i+='<div class="filter-row filter-row-entity-cms-categories" data-entity="cms_categories" style="display:none;">',i+='<label class="filter-label"><input type="checkbox" class="filter-active-only" checked> '+(t.active_only||"Active only")+"</label>",i+='<button type="button" class="btn-clear-filters"><i class="icon-times"></i></button>',i+="</div>",i+="</div>",i+='<div class="results-header">',i+='<span class="header-spacer"></span>',i+='<span class="header-col header-col-name">'+(t.product||"Product")+"</span>",i+='<span class="header-col header-col-price">'+(t.price||"Price")+"</span>",i+='<span class="header-col header-col-sale">'+(t.sale||"Sale")+"</span>",i+='<span class="header-col header-col-stock">'+(t.stock||"Stock")+"</span>",i+='<span class="header-col header-col-sales">'+(t.sold||"Sold")+"</span>",i+="</div>",i+='<div class="dropdown-results"></div>',i+='<div class="dropdown-footer">',i+='<div class="load-more-controls" style="display:none;">',i+='<span class="load-more-label">'+(t.load||"Load")+"</span>",i+='<select class="load-more-select">',i+='<option value="10">10</option>',i+='<option value="20" selected>20</option>',i+='<option value="50">50</option>',i+='<option value="100">100</option>',i+="</select>",i+='<span class="load-more-of">'+(t.of||"of")+' <span class="remaining-count">0</span> '+(t.remaining||"remaining")+"</span>",i+='<button type="button" class="btn-load-more"><i class="icon-plus"></i></button>',i+="</div>",i+='<button type="button" class="btn-cancel-dropdown"><i class="icon-times"></i> '+(t.cancel||"Cancel")+" <kbd>Esc</kbd></button>",i+='<button type="button" class="btn-confirm-dropdown"><i class="icon-check"></i> '+(t.save||"Save")+" <kbd>⏎</kbd></button>",i+="</div>",i+="</div>",this.$dropdown=e(i),e("body").append(this.$dropdown)},hideDropdown:function(){this.$dropdown&&this.$dropdown.removeClass("show"),this.activeGroup=null},positionDropdown:function(t){if(this.$dropdown){var i=t.closest(".value-picker"),a=t.closest(".entity-search-box"),s=a.offset(),n=a.outerHeight(),r=i.offset(),o=i.outerWidth(),l=s.top+n+4,c=r.left,d=Math.max(o,400),p=e(window).width();c+d>p-10&&(d=p-c-10);var u=e(window).height()-(l-e(window).scrollTop())-20;u=Math.max(u,400),this.$dropdown.css({position:"absolute",top:l,left:c,width:d,maxHeight:u,zIndex:1e4}),this.$dropdown.addClass("show")}}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.search={categoryTreeCache:null,performSearch:function(t){var i=this;if(this.activeGroup){this.isLoading=!0;var a=this.activeGroup.searchEntity,s=t&&this.loadMoreCount?this.loadMoreCount:20,n={ajax:1,action:"searchTargetEntities",trait:"EntitySelector",entity_type:a,q:this.searchQuery,limit:s,offset:t?this.searchOffset:0,sort_by:this.currentSort?this.currentSort.field:"name",sort_dir:this.currentSort?this.currentSort.dir:"ASC"};this.refineQuery&&(n.refine=this.refineQuery,this.refineNegate&&(n.refine_negate=1)),"products"===a&&this.filters&&(this.filters.inStock&&(n.filter_in_stock=1),this.filters.discounted&&(n.filter_discounted=1),null!==this.filters.priceMin&&""!==this.filters.priceMin&&(n.filter_price_min=this.filters.priceMin),null!==this.filters.priceMax&&""!==this.filters.priceMax&&(n.filter_price_max=this.filters.priceMax),this.filters.attributes&&this.filters.attributes.length>0&&(n.filter_attributes=JSON.stringify(this.filters.attributes)),this.filters.features&&this.filters.features.length>0&&(n.filter_features=JSON.stringify(this.filters.features))),"products"!==a&&this.filters&&(null!==this.filters.productCountMin&&""!==this.filters.productCountMin&&(n.filter_product_count_min=this.filters.productCountMin),null!==this.filters.productCountMax&&""!==this.filters.productCountMax&&(n.filter_product_count_max=this.filters.productCountMax),"categories"===a&&(this.filters.depth&&(n.filter_depth=this.filters.depth),this.filters.hasProducts&&(n.filter_has_products=1),this.filters.hasDescription&&(n.filter_has_description=1),this.filters.hasImage&&(n.filter_has_image=1),null!==this.filters.salesMin&&""!==this.filters.salesMin&&(n.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(n.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(n.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(n.filter_turnover_max=this.filters.turnoverMax),this.filters.activeOnly&&(n.filter_active=1)),"manufacturers"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(n.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(n.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(n.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(n.filter_turnover_max=this.filters.turnoverMax),this.filters.dateAddFrom&&(n.filter_date_add_from=this.filters.dateAddFrom),this.filters.dateAddTo&&(n.filter_date_add_to=this.filters.dateAddTo),this.filters.lastProductFrom&&(n.filter_last_product_from=this.filters.lastProductFrom),this.filters.lastProductTo&&(n.filter_last_product_to=this.filters.lastProductTo),this.filters.activeOnly&&(n.filter_active=1)),"suppliers"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(n.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(n.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(n.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(n.filter_turnover_max=this.filters.turnoverMax),this.filters.dateAddFrom&&(n.filter_date_add_from=this.filters.dateAddFrom),this.filters.dateAddTo&&(n.filter_date_add_to=this.filters.dateAddTo),this.filters.lastProductFrom&&(n.filter_last_product_from=this.filters.lastProductFrom),this.filters.lastProductTo&&(n.filter_last_product_to=this.filters.lastProductTo),this.filters.activeOnly&&(n.filter_active=1)),"attributes"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(n.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(n.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(n.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(n.filter_turnover_max=this.filters.turnoverMax),this.filters.attributeGroup&&(n.filter_attribute_group=this.filters.attributeGroup),this.filters.isColor&&(n.filter_is_color=1)),"features"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(n.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(n.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(n.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(n.filter_turnover_max=this.filters.turnoverMax),this.filters.featureGroup&&(n.filter_feature_group=this.filters.featureGroup),this.filters.isCustom&&(n.filter_is_custom=1)),"cms"===a&&(this.filters.activeOnly&&(n.filter_active=1),this.filters.indexable&&(n.filter_indexable=1)),"cms_categories"===a&&this.filters.activeOnly&&(n.filter_active=1)),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:n,success:function(e){i.isLoading=!1,e.success&&(i.searchQuery&&i.searchQuery.length>=2&&e.total>0&&i.addToSearchHistory(a,i.searchQuery),i.searchResults=t?i.searchResults.concat(e.results||[]):e.results||[],i.searchTotal=e.total||0,i.searchOffset=t?i.searchOffset+(e.results||[]).length:(e.results||[]).length,i.renderSearchResults(t),i.$dropdown.addClass("show"))},error:function(){i.isLoading=!1}})}},renderSearchResults:function(t){var i=this,a=this.config.trans||{},s=this.$dropdown.find(".dropdown-results"),n=[],r=[];if(this.activeGroup){var o=this.$wrapper.find('.target-block[data-block-type="'+this.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+this.activeGroup.groupIndex+'"]'),l=this.activeGroup.searchEntity,c=this.activeGroup.excludeIndex;"include"===this.activeGroup.section?o.find(".include-picker").find(".entity-chip").each(function(){n.push(String(e(this).data("id")))}):(o.find('.exclude-row[data-exclude-index="'+c+'"]').find(".exclude-picker").find(".entity-chip").each(function(){n.push(String(e(this).data("id")))}),o.find(".exclude-row").each(function(){var t=e(this);if(parseInt(t.data("excludeIndex"),10)!==c){var a=t.find(".exclude-picker");(a.attr("data-search-entity")||i.activeGroup.blockType)===l&&a.find(".entity-chip").each(function(){r.push(String(e(this).data("id")))})}}))}var d=this.activeGroup&&"products"===this.activeGroup.searchEntity,p="list"===this.viewMode;this.$dropdown.find(".results-header").toggle(d&&p);var u=this.searchResults.filter(function(e){return-1===r.indexOf(String(e.id))}),h=this.searchResults.length-u.length,f=u.length+" / "+this.searchTotal+" results";h>0&&(f+=" ("+h+" hidden)"),this.$dropdown.find(".results-count").text(f);var v="";0!==u.length||t?u.forEach(function(e){var t="dropdown-item"+(-1!==n.indexOf(String(e.id))?" selected":"");if("product"===e.type&&(t+=" result-item-product"),v+='<div class="'+t+'" ',v+='data-id="'+i.escapeAttr(e.id)+'" ',v+='data-name="'+i.escapeAttr(e.name)+'"',e.image&&(v+=' data-image="'+i.escapeAttr(e.image)+'"'),e.subtitle&&(v+=' data-subtitle="'+i.escapeAttr(e.subtitle)+'"'),v+=">",v+='<span class="result-checkbox"><i class="icon-check"></i></span>',e.image)v+='<div class="result-image"><img src="'+i.escapeAttr(e.image)+'" alt=""></div>';else{var a="icon-cube",s=i.activeGroup?i.activeGroup.searchEntity:null;"categories"===s?a="icon-folder":"manufacturers"===s?a="icon-building":"suppliers"===s?a="icon-truck":"attributes"===s?a="icon-paint-brush":"features"===s?a="icon-list-ul":"cms"===s?a="icon-file-text-o":"cms_categories"===s&&(a="icon-folder-o"),v+='<div class="result-icon"><i class="'+a+'"></i></div>'}if(v+='<div class="result-info">',v+='<div class="result-name">'+i.escapeHtml(e.name)+"</div>",e.subtitle){var r=e.subtitle.split("\n");v+='<div class="result-subtitle">',r.forEach(function(e,t){v+='<div class="'+(0===t?"subtitle-line subtitle-line-primary":"subtitle-line subtitle-line-secondary")+'">'+i.escapeHtml(e)+"</div>"}),v+="</div>"}if(v+="</div>","product"===e.type)if(p){v+='<div class="result-col result-col-price">',v+='<span class="col-value">'+(e.regular_price_formatted||e.price_formatted||"")+"</span>",v+="</div>",e.has_discount?(v+='<div class="result-col result-col-sale">',v+='<span class="col-value">'+(e.price_formatted||"")+"</span>",v+="</div>"):v+='<div class="result-col result-col-sale"></div>';var o="out_of_stock"===e.stock_status?"stock-out":"low_stock"===e.stock_status?"stock-low":"stock-ok";v+='<div class="result-col result-col-stock">',v+='<span class="col-value '+o+'">'+(void 0!==e.stock_qty?e.stock_qty:"")+"</span>",v+="</div>",v+='<div class="result-col result-col-sales">',v+='<span class="col-value">'+(void 0!==e.sales_qty?e.sales_qty:"0")+"</span>",v+="</div>"}else{var l="out_of_stock"===e.stock_status?"stock-out":"low_stock"===e.stock_status?"stock-low":"";v+='<div class="result-grid-info">',v+='<span class="grid-price">'+(e.price_formatted||"")+"</span>",void 0!==e.stock_qty&&(v+='<span class="grid-stock '+l+'">'+e.stock_qty+" qty</span>"),e.has_discount&&(v+='<span class="grid-discount">-'+(e.discount_percent||"")+"%</span>"),v+="</div>"}v+="</div>"}):v='<div class="no-results"><i class="icon-search"></i> '+(a.no_results||"No results found")+"</div>",t?s.append(v):s.html(v);var m=this.searchResults.length<this.searchTotal,g=this.$dropdown.find(".load-more-controls");if(g.toggle(m),m){var b=this.searchTotal-this.searchResults.length;g.find(".remaining-count").text(b);var w=g.find(".load-more-select"),y=w.find('option[data-all="true"]');y.length?y.val(b).text((a.all||"All")+" ("+b+")"):w.find("option:last").after('<option value="'+b+'" data-all="true">'+(a.all||"All")+" ("+b+")</option>")}this.$dropdown.find(".dropdown-actions").show(),this.$dropdown.find(".btn-show-history").removeClass("active");var x=this.activeGroup?this.activeGroup.searchEntity:null,_=x&&this.getSearchHistory(x).length>0;this.$dropdown.find(".btn-show-history").prop("disabled",!_)},loadSearchHistory:function(){try{var e=localStorage.getItem(this.searchHistoryKey);this.searchHistory=e?JSON.parse(e):{}}catch(e){this.searchHistory={}}},saveSearchHistory:function(){try{localStorage.setItem(this.searchHistoryKey,JSON.stringify(this.searchHistory))}catch(e){}},addToSearchHistory:function(e,t){if(t&&!(t.length<2)){this.searchHistory[e]||(this.searchHistory[e]=[]);var i=this.searchHistory[e],a=i.indexOf(t);-1!==a&&i.splice(a,1),i.unshift(t),i.length>this.searchHistoryMax&&(i=i.slice(0,this.searchHistoryMax)),this.searchHistory[e]=i,this.saveSearchHistory()}},removeFromSearchHistory:function(e,t){if(this.searchHistory[e]){var i=this.searchHistory[e].indexOf(t);-1!==i&&(this.searchHistory[e].splice(i,1),this.saveSearchHistory())}},getSearchHistory:function(e){return this.searchHistory[e]||[]},showSearchHistory:function(e){var t=this.getSearchHistory(e),i=this.config.trans||{},a=this.$dropdown.find(".dropdown-results");if(this.$dropdown.find(".results-count").text(i.recent_searches||"Recent searches"),this.$dropdown.find(".dropdown-actions").hide(),this.$dropdown.find(".filter-panel").removeClass("show"),this.$dropdown.find(".btn-toggle-filters").removeClass("active"),this.$dropdown.find(".results-header").hide(),t.length){for(var s='<div class="search-history-list">',n=0;n<t.length;n++){var r=t[n];s+='<div class="history-item" data-query="'+this.escapeAttr(r)+'">',s+='<i class="icon-clock-o"></i>',s+='<span class="history-query">'+this.escapeHtml(r)+"</span>",s+='<button type="button" class="btn-delete-history" title="'+(i.remove||"Remove")+'">',s+='<i class="icon-times"></i>',s+="</button>",s+="</div>"}s+="</div>",a.html(s),this.$dropdown.addClass("show")}else this.performSearch()},refreshSearch:function(){"tree"!==this.viewMode?(this.searchOffset=0,this.loadMoreCount=20,this.$dropdown&&(this.$dropdown.find(".load-more-select").val("20"),this.$dropdown.find('.load-more-select option[data-all="true"]').remove()),this.performSearch(!1)):this.filterCategoryTree(this.searchQuery||"")},clearFilters:function(){if(this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown){var e=this.config.trans||{};this.$dropdown.find(".refine-input").val("").attr("placeholder",e.refine_short||"Refine..."),this.$dropdown.find(".btn-clear-refine").hide(),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min").val(""),this.$dropdown.find(".filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip").removeClass("active"),this.$dropdown.find(".filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-group-toggle").removeClass("active has-selection"),this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-turnover-min, .filter-turnover-max").val(""),this.$dropdown.find(".filter-date-add-from, .filter-date-add-to").val(""),this.$dropdown.find(".filter-last-product-from, .filter-last-product-to").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-has-description").prop("checked",!1),this.$dropdown.find(".filter-has-image").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0),this.$dropdown.find(".filter-attribute-group-select, .filter-feature-group-select").val("")}this.refreshSearch()},resetFiltersWithoutSearch:function(){if(this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown){var e=this.config.trans||{};this.$dropdown.find(".refine-input").val("").attr("placeholder",e.refine_short||"Refine..."),this.$dropdown.find(".btn-clear-refine").hide(),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min").val(""),this.$dropdown.find(".filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip").removeClass("active"),this.$dropdown.find(".filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-group-toggle").removeClass("active has-selection"),this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-turnover-min, .filter-turnover-max").val(""),this.$dropdown.find(".filter-date-add-from, .filter-date-add-to").val(""),this.$dropdown.find(".filter-last-product-from, .filter-last-product-to").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-has-description").prop("checked",!1),this.$dropdown.find(".filter-has-image").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0),this.$dropdown.find(".filter-attribute-group-select, .filter-feature-group-select").val("")}},updateFilterPanelForEntity:function(e){if(this.$dropdown){var t=this.$dropdown.find(".filter-panel");t.find(".filter-row").hide();var i=this.$dropdown.find(".view-mode-select option.tree-view-option");"categories"===e||"cms_categories"===e?(i.prop("disabled",!1).prop("hidden",!1),"tree"!==this.viewMode?(this.viewMode="tree",this.$dropdown.find(".view-mode-select").val("tree"),this.$dropdown.removeClass("view-list view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8").addClass("view-tree"),this.loadCategoryTree()):this.loadCategoryTree()):(i.prop("disabled",!0).prop("hidden",!0),"tree"===this.viewMode&&(this.viewMode="list",this.$dropdown.find(".view-mode-select").val("list"),this.$dropdown.removeClass("view-tree").addClass("view-list"))),"products"===e?(t.find(".filter-row-quick").show(),this.filterableData&&(this.filterableData.attributes&&this.filterableData.attributes.length>0&&this.$dropdown.find(".filter-row-attributes").show(),this.filterableData.features&&this.filterableData.features.length>0&&this.$dropdown.find(".filter-row-features").show())):"categories"===e?t.find(".filter-row-entity-categories").show():"manufacturers"===e?t.find(".filter-row-entity-manufacturers").show():"suppliers"===e?t.find(".filter-row-entity-suppliers").show():"attributes"===e?(t.find(".filter-row-entity-attributes").show(),this.loadAttributeGroups()):"features"===e?t.find(".filter-row-entity-features").show():"cms"===e?t.find(".filter-row-entity-cms").show():"cms_categories"===e&&t.find(".filter-row-entity-cms-categories").show()}},loadAttributeGroups:function(){var t=this,i=this.$dropdown.find(".filter-attribute-group-select");i.find("option").length>1||e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getAttributeGroups",trait:"EntitySelector"},success:function(a){a.success&&a.groups&&e.each(a.groups,function(e,a){i.append('<option value="'+a.id+'">'+t.escapeHtml(a.name)+" ("+a.count+")</option>")})}})},loadFeatureGroups:function(){var t=this,i=this.$dropdown.find(".filter-feature-group-select");i.find("option").length>1||e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getFeatureGroups",trait:"EntitySelector"},success:function(a){a.success&&a.groups&&e.each(a.groups,function(e,a){i.append('<option value="'+a.id+'">'+t.escapeHtml(a.name)+" ("+a.count+")</option>")})}})}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.filters={clearFilters:function(){this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown&&(this.config.trans,this.$dropdown.find(".refine-input").val(""),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min, .filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip, .filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0)),this.refreshSearch()},resetFiltersWithoutSearch:function(){this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null}},updateFilterPanelForEntity:function(e){if(this.$dropdown){var t=this.$dropdown.find(".filter-panel");t.find(".filter-row").hide(),t.find('.filter-row[data-entity="'+e+'"]').show(),t.find(".filter-row-entity-"+e.replace("_","-")).show();var i="categories"===e||"cms_categories"===e;this.$dropdown.find(".tree-view-option").toggle(i),i&&"list"===this.viewMode?(this.viewMode="tree",this.$dropdown.find(".view-mode-select").val("tree"),this.$dropdown.removeClass("view-list view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8").addClass("view-tree")):i||"tree"!==this.viewMode||(this.viewMode="list",this.$dropdown.find(".view-mode-select").val("list"),this.$dropdown.removeClass("view-tree view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8").addClass("view-list"))}},loadFilterableData:function(){var t=this;this.filterableData?this.renderFilterDropdowns():e.ajax({url:this.config.ajaxUrl,type:"POST",data:{ajax:1,action:"getTargetFilterableAttributes",trait:"EntitySelector"},dataType:"json",success:function(e){e.success&&e.data&&(t.filterableData=e.data,t.renderFilterDropdowns())}})},renderFilterDropdowns:function(){if(this.$dropdown&&this.filterableData){var e=this,t=this.$dropdown.find(".filter-attributes-container");t.empty(),this.filterableData.attributes&&this.filterableData.attributes.length>0&&(this.filterableData.attributes.forEach(function(i){var a='<button type="button" class="filter-group-toggle" data-group-id="'+i.id+'" data-type="attribute" data-group-name="'+e.escapeAttr(i.name)+'">';a+='<span class="toggle-name">'+i.name+"</span>",void 0!==i.count&&(a+='<span class="toggle-count clickable" data-group-id="'+i.id+'" data-type="attribute" data-group-name="'+e.escapeAttr(i.name)+'"><i class="icon-eye"></i> '+i.count+"</span>"),a+="</button>",t.append(a)}),this.$dropdown.find(".filter-row-attributes").show());var i=this.$dropdown.find(".filter-features-container");i.empty(),this.filterableData.features&&this.filterableData.features.length>0&&(this.filterableData.features.forEach(function(t){var a='<button type="button" class="filter-group-toggle" data-group-id="'+t.id+'" data-type="feature" data-group-name="'+e.escapeAttr(t.name)+'">';a+='<span class="toggle-name">'+t.name+"</span>",void 0!==t.count&&(a+='<span class="toggle-count clickable" data-group-id="'+t.id+'" data-type="feature" data-group-name="'+e.escapeAttr(t.name)+'"><i class="icon-eye"></i> '+t.count+"</span>"),a+="</button>",i.append(a)}),this.$dropdown.find(".filter-row-features").show())}},showFilterGroupValues:function(e,t){if(this.filterableData){var i=this,a=("attribute"===t?this.filterableData.attributes:this.filterableData.features).find(function(t){return t.id==e});if(a){this.$dropdown.find(".filter-row-values").hide();var s="attribute"===t?".filter-row-attr-values":".filter-row-feat-values",n=this.$dropdown.find(s),r=n.find(".filter-values-container");r.empty();var o='<span class="filter-values-label">'+a.name+":</span>";a.values.forEach(function(a){var s=("attribute"===t?-1!==i.filters.attributes.indexOf(a.id):-1!==i.filters.features.indexOf(a.id))?" active":"",n="attribute"===t?"filter-attr-chip":"filter-feat-chip",r=a.color?' style="--chip-color: '+a.color+'"':"",l=a.color?" has-color":"";o+='<button type="button" class="filter-chip '+n+s+l+'" data-id="'+a.id+'" data-group-id="'+e+'"'+r+">",a.color&&(o+='<span class="chip-color-dot"></span>'),o+='<span class="chip-name">'+a.name+"</span>",void 0!==a.count&&(o+='<span class="chip-count">('+a.count+")</span>"),o+="</button>"}),r.html(o),n.find(".btn-close-values").remove(),n.append('<button type="button" class="btn-close-values"><i class="icon-times"></i></button>'),n.show();var l=n[0];l&&l.scrollIntoView({behavior:"smooth",block:"nearest"})}}},hideFilterGroupValues:function(){this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-group-toggle").removeClass("active")},updateFilterToggleStates:function(){if(this.$dropdown&&this.filterableData){var e=this;this.filterableData.attributes&&this.filterableData.attributes.forEach(function(t){var i=e.$dropdown.find('.filter-group-toggle[data-group-id="'+t.id+'"][data-type="attribute"]'),a=t.values.some(function(t){return-1!==e.filters.attributes.indexOf(t.id)});i.toggleClass("has-selection",a)}),this.filterableData.features&&this.filterableData.features.forEach(function(t){var i=e.$dropdown.find('.filter-group-toggle[data-group-id="'+t.id+'"][data-type="feature"]'),a=t.values.some(function(t){return-1!==e.filters.features.indexOf(t.id)});i.toggleClass("has-selection",a)})}}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.chips={addSelection:function(e,t,i,a){this.addSelectionNoUpdate(e,t,i,a);var s=e.find(".entity-chips");this.updateChipsVisibility(s)},addSelectionNoUpdate:function(e,t,i,a){var s=e.find(".entity-chips"),n=e.closest(".target-block");if("single"===(this.config.mode||"multi")?(this.$wrapper.find(".entity-chips .entity-chip").remove(),this.$dropdown&&this.$dropdown.find(".dropdown-item.selected, .tree-item.selected").removeClass("selected"),this.$wrapper.find(".target-block-tab .tab-badge").remove(),this.$wrapper.find(".target-block-tab").removeClass("has-data")):"single"===(n.data("mode")||"multi")&&(s.find(".entity-chip").remove(),this.$dropdown&&this.$dropdown.find(".dropdown-item.selected, .tree-item.selected").removeClass("selected")),!s.find('.entity-chip[data-id="'+t+'"]').length){var r='<span class="entity-chip" data-id="'+this.escapeAttr(t)+'">';a&&a.image&&(r+='<span class="chip-icon"><img src="'+this.escapeAttr(a.image)+'" alt=""></span>'),r+='<span class="chip-name">'+this.escapeHtml(i)+"</span>",r+='<button type="button" class="chip-remove" title="Remove"><i class="icon-times"></i></button>',r+="</span>",s.append(r)}},removeSelection:function(e,t){var i=e.find(".entity-chips");e.find('.entity-chip[data-id="'+t+'"]').remove(),this.updateChipsVisibility(i)},updateChipsVisibility:function(t){var i=this.config.trans||{},a=(t.closest(".value-picker"),t.find(".entity-chip")),s=a.length,n=t.closest(".chips-wrapper");if(0!==s){this.ensureChipsWrapper(t);var r=t.closest(".chips-wrapper"),o=r.find(".chips-toolbar"),l=r.find(".chips-load-more"),c=o.find(".chips-search-input").val()||"";c=c.toLowerCase().trim();var d=0,p=0,u=t.hasClass("chips-expanded"),h=u?999999:this.maxVisibleChips||12;a.each(function(){var t=e(this),i=(t.find(".chip-name").text()||"").toLowerCase(),a=!c||-1!==i.indexOf(c);t.removeClass("chip-filtered-out chip-paginated-out"),a?++p>h?t.addClass("chip-paginated-out"):d++:t.addClass("chip-filtered-out")}),o.addClass("has-chips"),this.updateChipsToolbar(o,s,p,c);var f=p-d;if(f>0&&!u){var v=(i.show_more||"Show {count} more").replace("{count}",f);l.html('<button type="button" class="btn-load-more"><i class="icon-chevron-down"></i> '+v+"</button>").show()}else if(u&&p>(this.maxVisibleChips||12)){var m=i.show_less||"Show less";l.html('<button type="button" class="btn-load-more"><i class="icon-chevron-up"></i> '+m+"</button>").show()}else l.hide()}else n.length&&(n.before(t),n.remove())},ensureChipsWrapper:function(t){if(!t.closest(".chips-wrapper").length){var i=this.config.trans||{},a=(t.closest(".value-picker"),'<div class="chips-wrapper"><div class="chips-toolbar"><i class="icon-search"></i><input type="text" class="chips-search-input" placeholder="'+(i.filter||"Filter")+'..."><span class="chips-count"></span><button type="button" class="btn-chips-clear" title="'+(i.clear_all||"Clear all")+'"><i class="icon-trash"></i> <span class="clear-text">'+(i.clear_all||"Clear all")+'</span></button></div><div class="chips-load-more" style="display:none;"></div></div>'),s=e(a);t.before(s),s.find(".chips-toolbar").after(t),s.append(s.find(".chips-load-more")),this.bindChipsToolbarEvents(s)}},bindChipsToolbarEvents:function(t){var i,a=this,s=t.find(".entity-chips");t.on("input",".chips-search-input",function(){clearTimeout(i),i=setTimeout(function(){s.removeClass("chips-expanded"),a.updateChipsVisibility(s)},150)}),t.on("click",".btn-chips-clear",function(){((t.find(".chips-search-input").val()||"").trim()?s.find(".entity-chip:not(.chip-filtered-out)"):s.find(".entity-chip")).each(function(){e(this).find(".chip-remove").trigger("click")}),t.find(".chips-search-input").val(""),a.updateChipsVisibility(s)}),t.on("click",".btn-load-more",function(){s.hasClass("chips-expanded")?s.removeClass("chips-expanded"):s.addClass("chips-expanded"),a.updateChipsVisibility(s)})},updateChipsToolbar:function(e,t,i,a){var s=this.config.trans||{},n=e.find(".chips-count"),r=e.find(".btn-chips-clear"),o=r.find(".clear-text");a?(n.addClass("has-filter").html('<span class="count-filtered">'+i+'</span><span class="count-separator">/</span><span class="count-total">'+t+"</span>"),o.text((s.clear||"Clear")+" "+i)):(n.removeClass("has-filter").html(t),o.text(s.clear_all||"Clear all")),a&&0===i?r.hide():t>0?r.show():r.hide()},loadExistingSelections:function(){var t=this,i={};this.$wrapper.find(".selection-group").each(function(){var a=e(this),s=a.closest(".target-block").data("blockType"),n=a.find(".include-picker");t.collectPickerEntities(n,s,i),t.enhanceMethodSelect(a.find(".include-method-select")),a.find(".exclude-row").each(function(){var a=e(this);t.collectPickerEntities(a.find(".exclude-picker"),s,i),t.enhanceMethodSelect(a.find(".exclude-method-select"))}),a.find(".group-excludes.has-excludes").length>0&&t.updateMethodSelectorLock(a,!0)});var a={},s=!1;Object.keys(i).forEach(function(e){var t=i[e];if(0!==t.ids.length){var n=t.ids.filter(function(e,t,i){return i.indexOf(e)===t});a[e]=n,s=!0}}),s&&e.ajax({url:t.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getTargetEntitiesByIdsBulk",trait:"EntitySelector",entities:JSON.stringify(a)},success:function(e){e.success&&e.entities&&Object.keys(i).forEach(function(a){var s=i[a],n=e.entities[a]||[],r={};n.forEach(function(e){r[e.id]=e}),s.pickers.forEach(function(e){var i=e.$picker,a=i.find(".entity-chips"),s=i.find(".include-values-data, .exclude-values-data"),n=[];e.ids.forEach(function(e){var i=a.find('.entity-chip-loading[data-id="'+e+'"]');if(r[e]){var s=r[e];n.push(s.id);var o='<span class="entity-chip" data-id="'+t.escapeAttr(s.id)+'">';s.image&&(o+='<span class="chip-icon"><img src="'+t.escapeAttr(s.image)+'" alt=""></span>'),o+='<span class="chip-name">'+t.escapeHtml(s.name)+"</span>",o+='<button type="button" class="chip-remove" title="Remove"><i class="icon-times"></i></button>',o+="</span>",i.replaceWith(o)}else i.remove()}),t.updateChipsVisibility(a),n.length!==e.ids.length&&(s.val(JSON.stringify(n)),t.serializeAllBlocks()),t.updateBlockStatus(i.closest(".target-block"))})})}})},collectPickerEntities:function(t,i,a){if(t.length){var s=this,n=t.find(".include-values-data, .exclude-values-data");if(n.length){var r=t.attr("data-value-type"),o=n.val()||"[]",l=[];try{l=JSON.parse(o)}catch(e){return}if("multi_numeric_range"!==r)if("multi_select_tiles"!==r){if("combination_attributes"===r)return"object"!=typeof l||null===l||0===Object.keys(l).length||n.val(JSON.stringify(l)),void s.loadCombinationAttributeGroups(t);if(l.length)if("pattern"!==r){var c=t.attr("data-search-entity")||i,d=t.find(".entity-chips"),p=this.getEntityTypeIcon(c);l.forEach(function(e){var t='<span class="entity-chip entity-chip-loading" data-id="'+s.escapeAttr(e)+'">';t+='<span class="chip-icon"><i class="'+p+' icon-spin-pulse"></i></span>',t+='<span class="chip-name">Loading...</span>',t+="</span>",d.append(t)}),a[c]||(a[c]={ids:[],pickers:[]}),a[c].ids=a[c].ids.concat(l),a[c].pickers.push({$picker:t,ids:l})}else l.forEach(function(e){"string"==typeof e&&e?s.addPatternTag(t,e,!1):e&&e.pattern&&s.addPatternTag(t,e.pattern,!0===e.caseSensitive)})}else{if(!Array.isArray(l)||0===l.length)return;l.forEach(function(e){t.find('.tile-option[data-value="'+e+'"]').addClass("selected")})}else{if(!Array.isArray(l)||0===l.length)return;var u=t.find(".multi-range-chips");l.forEach(function(t){if(t&&(null!==t.min||null!==t.max)){var i;i=null!==t.min&&null!==t.max?t.min+" - "+t.max:null!==t.min?"≥ "+t.min:"≤ "+t.max;var a=e("<span>",{class:"range-chip","data-min":null!==t.min?t.min:"","data-max":null!==t.max?t.max:""});a.append(e("<span>",{class:"range-chip-text",text:i})),a.append(e("<button>",{type:"button",class:"btn-remove-range",html:'<i class="icon-times"></i>'})),u.append(a)}})}}}},loadPickerValues:function(t,i){if(t.length){var a=this,s=t.find(".include-values-data, .exclude-values-data");if(s.length){var n=t.attr("data-value-type"),r=[];try{r=JSON.parse(s.val()||"[]")}catch(e){return}if("multi_numeric_range"!==n)if("multi_select_tiles"!==n){if("combination_attributes"===n)return"object"!=typeof r||null===r||0===Object.keys(r).length||s.val(JSON.stringify(r)),void a.loadCombinationAttributeGroups(t);if(r.length)if("pattern"!==n){var o=t.attr("data-search-entity")||i;e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getTargetEntitiesByIds",trait:"EntitySelector",entity_type:o,ids:JSON.stringify(r)},success:function(e){if(e.success&&e.entities){var i=[];e.entities.forEach(function(e){a.addSelectionNoUpdate(t,e.id,e.name,e),i.push(e.id)});var n=t.find(".entity-chips");a.updateChipsVisibility(n),i.length!==r.length&&(s.val(JSON.stringify(i)),a.serializeAllBlocks()),a.updateBlockStatus(t.closest(".target-block"))}}})}else r.forEach(function(e){"string"==typeof e&&e?a.addPatternTag(t,e,!1):e&&e.pattern&&a.addPatternTag(t,e.pattern,!0===e.caseSensitive)})}else{if(!Array.isArray(r)||0===r.length)return;r.forEach(function(e){t.find('.tile-option[data-value="'+e+'"]').addClass("selected")})}else{if(!Array.isArray(r)||0===r.length)return;var l=t.find(".multi-range-chips");r.forEach(function(t){if(t&&(null!==t.min||null!==t.max)){var i;i=null!==t.min&&null!==t.max?t.min+" - "+t.max:null!==t.min?"≥ "+t.min:"≤ "+t.max;var a=e("<span>",{class:"range-chip","data-min":null!==t.min?t.min:"","data-max":null!==t.max?t.max:""});a.append(e("<span>",{class:"range-chip-text",text:i})),a.append(e("<button>",{type:"button",class:"btn-remove-range",html:'<i class="icon-times"></i>'})),l.append(a)}})}}}},addPatternTag:function(e,t,i){var a=this.config.trans||{},s=e.find(".pattern-chips"),n=!0===i,r=n?a.case_sensitive||"Case sensitive - click to toggle":a.case_insensitive||"Case insensitive - click to toggle",o='<div class="pattern-tag'+(n?" case-sensitive":"")+'" data-pattern="'+this.escapeAttr(t)+'" data-case-sensitive="'+(n?"1":"0")+'">';o+='<button type="button" class="btn-toggle-case" title="'+this.escapeAttr(r)+'">',o+='<span class="case-icon">'+(n?"Aa":"aa")+"</span>",o+="</button>",o+='<span class="pattern-tag-text">'+this.escapeHtml(t)+"</span>",o+='<button type="button" class="btn-remove-pattern" title="'+this.escapeAttr(a.remove_pattern||"Remove pattern")+'"><i class="icon-trash"></i></button>',o+="</div>",s.append(o)},getPatternTags:function(t){var i=[];return t.find(".pattern-tag:not(.draft-tag)").each(function(){var t=e(this).data("pattern"),a=1===e(this).data("caseSensitive")||"1"===e(this).data("caseSensitive");t&&i.push({pattern:t,caseSensitive:a})}),i},updateDraftTagCount:function(t,i,a){var s=this,n=t.find(".pattern-match-count"),r=n.find(".count-value"),o=t.closest(".target-block").data("blockType")||"products";r.html('<i class="icon-spinner icon-spin"></i>'),n.show(),n.data("pattern",i),n.data("caseSensitive",a),n.data("entityType",o),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countPatternMatches",trait:"EntitySelector",pattern:i,field:"name",entity_type:o,case_sensitive:a?1:0},success:function(e){if(e.success){var i=parseInt(e.count,10)||0;r.text(i),n.show(),n.removeClass("count-zero count-found"),n.addClass(0===i?"count-zero":"count-found"),n.data("count",i);var a=t.closest(".selection-group");a.length&&s.updateGroupTotalCount(a)}else r.text("?"),n.show()},error:function(){r.text("?"),n.show()}})},updateConditionCountWithPendingPattern:function(t,i){this.config.trans;var a=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count").first();if(a.length){var s=t.hasClass("exclude-row"),n=(s?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(n){var r=s?t.find(".exclude-picker"):t.find(".include-picker");if("pattern"===(r.data("valueType")||"none")){var o=this.getPatternTags(r);if(i&&o.push({pattern:i,caseSensitive:!1}),0!==o.length){var l=t.closest(".target-block").data("blockType")||"products";a.find(".preview-count").html('<i class="icon-spinner icon-spin"></i>'),a.removeClass("clickable no-matches").show(),a.data("conditionData",{method:n,values:o,blockType:l,isExclude:s}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:n,values:JSON.stringify(o),block_type:l},success:function(e){if(e&&e.success){var t=e.count||0;a.removeClass("no-matches clickable"),0===t?(a.find(".preview-count").text(t),a.addClass("no-matches").show()):(a.find(".preview-count").text(t),a.addClass("clickable").show())}else a.hide().removeClass("clickable")},error:function(){a.hide().removeClass("clickable")}})}else a.hide()}}else a.hide()}},fetchPatternMatchCount:function(t,i,a){var s=t.closest(".exclude-row"),n=-1!==((s.length?s.find(".exclude-method-select"):t.closest(".selection-group").find(".include-method-select")).val()||"").indexOf("reference")?"reference":"name",r=t.closest(".target-block").data("blockType")||"products";a.find(".preview-count").html('<i class="icon-spinner icon-spin"></i>'),a.removeClass("clickable no-matches").show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countPatternMatches",trait:"EntitySelector",pattern:i,field:n,entity_type:r,case_sensitive:0},success:function(e){if(e&&e.success){var t=e.count||0;a.find(".preview-count").text(t),a.removeClass("no-matches clickable").show(),0===t?a.addClass("no-matches"):a.addClass("clickable")}else a.hide()},error:function(){a.hide()}})},getPickerValues:function(t,i){switch(i){case"entity_search":var a=[];return t.find(".entity-chip").each(function(){var t=e(this).data("id");t&&a.push(t)}),a;case"pattern":var s=this.getPatternTags(t),n=t.find(".draft-tag .pattern-input"),r=e.trim(n.val());if(r){var o="1"===n.closest(".draft-tag").attr("data-case-sensitive");s.push({pattern:r,caseSensitive:o})}return s;case"numeric_range":return{min:t.find(".range-min-input").val()||null,max:t.find(".range-max-input").val()||null};case"date_range":return{from:t.find(".date-from-input").val()||null,to:t.find(".date-to-input").val()||null};case"select":return[t.find(".select-value-input").val()];case"boolean":return[!0];default:return[]}},updateConditionCount:function(t){this.config.trans;var i=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count").first();if(i.length){var a=t.hasClass("exclude-row"),s=(a?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(s){var n=a?t.find(".exclude-picker"):t.find(".include-picker"),r=n.data("valueType")||"none",o=this.getPickerValues(n,r),l=!o||Array.isArray(o)&&0===o.length||"object"==typeof o&&!Array.isArray(o)&&("combination_attributes"===r&&void 0!==o.attributes&&0===Object.keys(o.attributes).length||"combination_attributes"!==r&&0===Object.keys(o).length);if("none"!==r&&"boolean"!==r&&l)i.hide();else{var c=t.closest(".target-block").data("blockType")||"products";i.find(".preview-count").html('<i class="icon-spinner icon-spin"></i>'),i.removeClass("clickable no-matches").show(),i.data("conditionData",{method:s,values:o,blockType:c,isExclude:a}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:s,values:JSON.stringify(o),block_type:c},success:function(e){if(e&&e.success){var t=e.count||0;i.removeClass("no-matches clickable"),0===t?(i.find(".preview-count").text(t),i.addClass("no-matches").show()):(i.find(".preview-count").text(t),i.addClass("clickable").show())}else i.hide().removeClass("clickable")},error:function(){i.hide().removeClass("clickable")}})}}else i.hide()}},updateGroupCounts:function(t){var i=this,a=t.find(".group-include");a.length&&this.updateConditionCount(a),t.find(".exclude-row").each(function(){i.updateConditionCount(e(this))}),this.updateGroupTotalCount(t)},updateGroupTotalCount:function(t){var i=t.closest(".target-block").data("blockType")||"products",a=t.find(".group-header .group-count-badge"),s=t.find(".group-modifier-limit"),n=this.serializeGroup(t,i);if(!n.include||!n.include.method)return a.hide(),void s.attr("placeholder","");a.html('<i class="icon-spinner icon-spin"></i>').show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countGroupItems",trait:"EntitySelector",group_data:JSON.stringify(n),block_type:i},success:function(e){if(e&&e.success){var r=e.final_count||0,o=e.exclude_count||0,l='<i class="icon-eye"></i> '+r;o>0&&(l+=' <span class="exclude-info">(-'+o+")</span>"),a.html(l),a.addClass("clickable").show(),a.data("groupData",n),a.data("blockType",i),a.data("finalCount",r),s.attr("placeholder",r);var c=t.find(".group-preview-badge .preview-count");if(c.length){var d=parseInt(s.val(),10),p=d>0&&d<r?d:r;c.text(p)}}else a.hide().removeClass("clickable"),s.attr("placeholder","")},error:function(){a.hide(),s.attr("placeholder","")}})},updateAllConditionCounts:function(){var t=this;this.$wrapper.find(".target-block.active .selection-group").each(function(){t.updateGroupCounts(e(this))})},fetchCategoryNamesAndAddChips:function(t,i,a,s){var n=this;i&&0!==i.length?e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getTargetEntitiesByIds",trait:"EntitySelector",entity_type:a,ids:JSON.stringify(i)},success:function(e){e.success&&e.entities&&e.entities.forEach(function(e){n.addSelectionNoUpdate(t,e.id,e.name,e)}),"function"==typeof s&&s()},error:function(){"function"==typeof s&&s()}}):"function"==typeof s&&s()}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.groups={addGroup:function(t,i){var a=t.find(".groups-container"),s=this.config.trans||{},n=(this.config.blocks[i]||{}).selection_methods||{};a.find(".groups-empty-state").remove();var r=-1;a.find(".selection-group").each(function(){var t=parseInt(e(this).data("groupIndex"),10);t>r&&(r=t)});var o=r+1,l=this.buildMethodOptions(n,!1),c=(this.buildMethodOptions(n,!0),'<div class="selection-group" data-group-index="'+o+'" data-group-name="">');c+='<div class="group-header">',c+='<span class="group-collapse-toggle"><i class="icon-chevron-up"></i></span>',c+='<span class="group-name-wrapper">',c+='<input type="text" class="group-name-input" value="" placeholder="'+(s.group||"Group")+" "+(o+1)+'" title="'+(s.click_to_name||"Click to name this group")+'">',c+='<span class="group-count-badge" style="display:none;"><i class="icon-spinner icon-spin"></i></span>',c+="</span>",c+='<button type="button" class="btn-remove-group" title="'+(s.remove_group||"Remove group")+'">',c+='<i class="icon-trash"></i>',c+="</button>",c+="</div>",c+='<div class="group-body">',c+='<div class="group-include">',c+='<div class="section-row">',c+='<div class="method-selector-wrapper">',c+='<select class="include-method-select">'+l+"</select>",c+='<span class="condition-match-count no-matches"><i class="icon-eye"></i> <span class="preview-count">0</span></span>',c+='<span class="method-info-placeholder"></span>',c+="</div>",c+='<div class="value-picker include-picker" style="display:none;" data-search-entity="'+i+'">',c+='<div class="entity-chips include-chips" data-placeholder="'+(s.no_items_selected||"No items selected - use search below")+'"></div>',c+='<div class="entity-search-box">',c+='<i class="icon-search entity-search-icon"></i>',c+='<input type="text" class="entity-search-input" placeholder="'+(s.search_placeholder||"Search by name, reference, ID...")+'" autocomplete="off">',c+='<span class="search-loading" style="display:none;"><i class="icon-spinner icon-spin"></i></span>',c+="</div>",c+='<input type="hidden" class="include-values-data" value="[]">',c+="</div>",c+="</div>",c+="</div>",c+='<div class="group-excludes">',c+='<button type="button" class="btn-add-exclude">',c+='<i class="icon-plus"></i> '+(s.add_exceptions||"Add exceptions"),c+="</button>",c+="</div>",c+='<div class="group-modifiers">',c+='<span class="modifier-inline modifier-limit">',c+='<span class="modifier-label">'+(s.limit||"Limit")+"</span>",c+='<input type="number" class="group-modifier-limit" placeholder="" min="1" step="1" title="'+(s.limit_tooltip||"Max items to return (empty = all)")+'">',c+="</span>",c+='<span class="modifier-inline modifier-sort">',c+='<span class="modifier-label">'+(s.sort||"Sort")+"</span>",c+='<select class="group-modifier-sort">',c+='<option value="sales" selected>'+(s.sort_bestsellers||"Best sellers")+"</option>",c+='<option value="date_add">'+(s.sort_newest||"Newest")+"</option>",c+='<option value="price">'+(s.sort_price||"Price")+"</option>",c+='<option value="name">'+(s.sort_name||"Name")+"</option>",c+='<option value="position">'+(s.sort_position||"Position")+"</option>",c+='<option value="quantity">'+(s.sort_stock||"Stock quantity")+"</option>",c+='<option value="random">'+(s.sort_random||"Random")+"</option>",c+="</select>",c+='<button type="button" class="btn-sort-dir" data-dir="DESC" title="'+(s.sort_direction||"Sort direction")+'">',c+='<i class="icon-sort-amount-desc"></i>',c+="</button>",c+="</span>",c+='<span class="group-preview-badge clickable" title="'+(s.preview_results||"Preview results")+'">',c+='<i class="icon-eye"></i> <span class="preview-count"></span>',c+="</span>",c+="</div>",c+="</div>",c+="</div>",a.append(c);var d=a.find('.selection-group[data-group-index="'+o+'"]');this.enhanceMethodSelect(d.find(".include-method-select")),d.find(".include-method-select").val("all").trigger("change"),this.updateBlockStatus(t),this.serializeAllBlocks()},removeGroup:function(e,t){e.remove();var i=t.find(".groups-container");if(0===i.find(".selection-group").length){var a='<div class="groups-empty-state">';a+='<span class="empty-state-text">'+this.getEmptyStateText(t)+"</span>",a+="</div>",i.html(a)}this.updateBlockStatus(t),this.serializeAllBlocks(),this.updateTabBadges()},clearAllConditions:function(){var t=this;this.$wrapper.find(".target-block").each(function(){var i=e(this),a=i.find(".groups-container");a.find(".selection-group").remove();var s='<div class="groups-empty-state">';s+='<span class="empty-state-text">'+t.getEmptyStateText(i)+"</span>",s+="</div>",a.html(s),t.updateBlockStatus(i)}),this.serializeAllBlocks(),this.updateTabBadges(),this.updateHeaderTotalCount()},switchToBlock:function(e){this.$wrapper.find(".target-block-tab").removeClass("active"),this.$wrapper.find('.target-block-tab[data-block-type="'+e+'"]').addClass("active"),this.$wrapper.find(".target-block").removeClass("active").hide(),this.$wrapper.find('.target-block[data-block-type="'+e+'"]').addClass("active").show(),this.hideDropdown()},updateTabBadges:function(){var t=this,i=[];this.$wrapper.find(".target-block-tab").each(function(){var a=e(this),s=a.data("blockType"),n=t.$wrapper.find('.target-block[data-block-type="'+s+'"]').find(".selection-group").length,r=a.find(".tab-badge");n>0?(r.length?r.addClass("loading").html('<i class="icon-spinner icon-spin"></i>'):a.append('<span class="tab-badge loading"><i class="icon-spinner icon-spin"></i></span>'),a.addClass("has-data"),i.push(s)):(r.remove(),a.removeClass("has-data"))}),this.updateTargetSwitchState(),i.length>0&&this.fetchAllCounts(i)},updateTargetSwitchState:function(){var t=this.$wrapper.find(".prestashop-switch");if(t.length){var i=!1;this.$wrapper.find(".target-block").each(function(){if(e(this).find(".selection-group").length>0)return i=!0,!1}),i?t.find('input[value="0"]').prop("checked",!0):t.find('input[value="1"]').prop("checked",!0)}},fetchAllCounts:function(t){var i=this,a=this.$wrapper.find('input[name="'+this.config.name+'"]'),s={};try{s=JSON.parse(a.val()||"{}")}catch(e){s={}}var n={};t.forEach(function(e){var t=s[e]&&s[e].groups?s[e].groups:[];t.length>0&&(n[e]={groups:t})}),0!==Object.keys(n).length?e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewEntitySelectorBulk",trait:"EntitySelector",conditions:JSON.stringify(n)},success:function(e){e.success&&e.counts?(Object.keys(e.counts).forEach(function(t){var a=e.counts[t],s=i.$wrapper.find('.target-block-tab[data-block-type="'+t+'"]'),n=s.find(".tab-badge");n.length&&(n.removeClass("loading").html('<i class="icon-eye"></i> '+a),s.data("previewData",{count:a,success:!0}))}),t.forEach(function(t){if(!(t in e.counts)){var a=i.$wrapper.find('.target-block-tab[data-block-type="'+t+'"]');a.find(".tab-badge").remove(),a.removeClass("has-data")}}),i.updateHeaderTotalCount()):t.forEach(function(e){i.$wrapper.find('.target-block-tab[data-block-type="'+e+'"]').find(".tab-badge").remove()})},error:function(e,a,s){t.forEach(function(e){i.$wrapper.find('.target-block-tab[data-block-type="'+e+'"]').find(".tab-badge").remove()})}}):t.forEach(function(e){var t=i.$wrapper.find('.target-block-tab[data-block-type="'+e+'"]');t.find(".tab-badge").remove(),t.removeClass("has-data")})},fetchProductCount:function(t,i){var a=this,s={},n=this.$wrapper.find('input[name="'+this.config.name+'"]'),r={};try{r=JSON.parse(n.val()||"{}")}catch(e){r={}}var o=r[t]&&r[t].groups?r[t].groups:[];if(0===o.length)return i.find(".tab-badge").remove(),i.removeClass("has-data"),void i.removeData("previewData");var l=i.find(".tab-badge");l.length?l.addClass("loading").html('<i class="icon-spinner icon-spin"></i>'):(l=e('<span class="tab-badge loading"><i class="icon-spinner icon-spin"></i></span>'),i.append(l)),i.addClass("has-data"),s[t]={groups:o},e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewEntitySelector",trait:"EntitySelector",conditions:JSON.stringify(s),block_type:t,limit:10},success:function(e){e.success?(i.find(".tab-badge").removeClass("loading").html('<i class="icon-eye"></i> '+e.count),i.data("previewData",e),a.updateHeaderTotalCount()):i.find(".tab-badge").remove()},error:function(e,t,s){i.find(".tab-badge").remove(),a.updateHeaderTotalCount()}})},updateHeaderTotalCount:function(){var t=0;this.$wrapper.find(".target-block-tab .tab-badge").each(function(){var i=e(this);if(!i.hasClass("loading")){var a=parseInt(i.text(),10);isNaN(a)||(t+=a)}});var i=this.$wrapper.find(".trait-total-count");t>0?(i.find(".count-value").text(t),i.show()):i.hide(),this.updateShowAllToggle()},updateShowAllToggle:function(){var e=this.$wrapper.find(".trait-show-all-toggle");if(e.length){var t=e.find(".show-all-checkbox"),i=this.$wrapper.find(".target-block-tab.has-data").length>0;t.prop("checked",!i)}},updateBlockStatus:function(e){var t=e.find(".block-status"),i=e.data("blockType"),a=this.config.blocks[i]||{},s=this.config.trans||{},n=this.getBlockGroups(e);0===n.length?!1!==this.config.emptyMeansAll?t.text((s.all||"All")+" "+(a.entity_label_plural||"items")):t.text(s.nothing_selected||"Nothing selected"):t.text(n.length+" "+(1===n.length?s.group||"group":s.groups||"groups"))},getEmptyStateText:function(e){var t=e.data("blockType"),i=e.data("mode")||"multi",a=this.config.blocks[t]||{},s=this.config.trans||{},n=!1!==this.config.emptyMeansAll;return"single"===i?s.no_item_selected||"No item selected":n?(s.all||"All")+" "+(a.entity_label_plural||"items")+" "+(s.included||"included"):s.nothing_selected||"Nothing selected"},serializeGroup:function(t,i){var a=this,s=t.find(".include-method-select").val()||"all",n=t.find(".include-picker"),r=this.getPickerValues(n),o=[];t.find(".group-excludes.has-excludes").length&&t.find(".exclude-row").each(function(){var t=e(this),i=t.find(".exclude-method-select").val()||null,s=t.find(".exclude-picker"),n=a.getPickerValues(s);i&&n&&(!Array.isArray(n)||n.length>0)&&o.push({method:i,values:n})});var l={include:{method:s,values:r}};o.length>0&&(l.excludes=o);var c=this.getGroupModifiers(t);return(c.limit||c.sort_by)&&(l.modifiers=c),l},serializeAllBlocks:function(t){var i=this,a={};this.$wrapper.find(".target-block").each(function(){var t=e(this),s=t.data("blockType"),n=i.getBlockGroups(t);n.length>0&&(a[s]={groups:n}),i.updateBlockStatus(t)}),this.$wrapper.find('input[name="'+this.config.name+'"]').val(JSON.stringify(a)),this.updateTabBadges(),this.countUpdateTimeout&&clearTimeout(this.countUpdateTimeout),this.countUpdateTimeout=setTimeout(function(){if(t&&t.length){i.updateConditionCount(t);var e=t.closest(".selection-group");e.length&&i.updateGroupTotalCount(e)}else i.updateAllConditionCounts()},500)},getBlockGroups:function(t){var i=this,a=[];return t.find(".selection-group").each(function(){var t=e(this),s=t.find(".include-method-select").val()||"all",n=t.find(".include-picker"),r=i.getPickerValues(n);if(!i.isConditionValid(s,r,n))return!0;var o=[];t.find(".group-excludes.has-excludes").length&&t.find(".exclude-row").each(function(){var t=e(this),a=t.find(".exclude-method-select").val()||null,s=t.find(".exclude-picker"),n=i.getPickerValues(s);a&&i.isConditionValid(a,n,s)&&o.push({method:a,values:n})});var l={include:{method:s,values:r}},c=e.trim(t.attr("data-group-name")||"");c&&(l.name=c),o.length>0&&(l.excludes=o);var d=i.getGroupModifiers(t);(d.limit||d.sort_by)&&(l.modifiers=d),a.push(l)}),a},getGroupModifiers:function(e){var t=e.find(".group-modifier-limit").val(),i=e.find(".group-modifier-sort").val()||"sales",a=e.find(".group-modifiers .btn-sort-dir").data("dir")||"DESC";return{limit:t?parseInt(t,10):null,sort_by:i||null,sort_dir:a||"DESC"}},getPickerValues:function(t){var i=t.attr("data-value-type")||"entity_search",a=[];switch(i){case"entity_search":t.find(".entity-chip").each(function(){var t=e(this).data("id");a.push(isNaN(t)?t:Number(t))});break;case"pattern":a=this.getPatternTags(t);var s=t.find(".draft-tag .pattern-input"),n=e.trim(s.val());if(n){var r="1"===s.closest(".draft-tag").attr("data-case-sensitive");a.push({pattern:n,caseSensitive:r})}break;case"numeric_range":var o=t.find(".range-min-input").val(),l=t.find(".range-max-input").val();""===o&&""===l||(a={min:""!==o?parseFloat(o):null,max:""!==l?parseFloat(l):null});break;case"date_range":var c=t.find(".date-from-input").val(),d=t.find(".date-to-input").val();(c||d)&&(a={from:c||null,to:d||null});break;case"select":var p=t.find(".select-value-input").val();p&&(a=[p]);break;case"boolean":a=[!0];break;case"multi_numeric_range":var u=[];t.find(".range-chip").each(function(){var t=e(this),i=t.data("min"),a=t.data("max");u.push({min:""!==i&&void 0!==i?parseFloat(i):null,max:""!==a&&void 0!==a?parseFloat(a):null})}),u.length>0&&(a=u);break;case"multi_select_tiles":t.find(".tile-option.selected").each(function(){a.push(e(this).data("value"))});break;case"combination_attributes":var h={};if(t.find(".comb-attr-value.selected").each(function(){var t=e(this).data("groupId").toString(),i=e(this).data("valueId");h[t]||(h[t]=[]),h[t].push(i)}),Object.keys(h).length>0){var f,v=t.find(".combination-attributes-picker").data("combinationMode")||this.config.combinationMode||"products";f="toggle"===v?t.find(".comb-mode-radio:checked").val()||"products":v,a={mode:f,attributes:h}}}return a},isConditionValid:function(e,t,i){if("all"===e)return!0;var a=i.attr("data-value-type")||"entity_search";return"boolean"===a||(Array.isArray(t)?t.length>0:"object"==typeof t&&null!==t&&("combination_attributes"===a&&void 0!==t.attributes?Object.keys(t.attributes).length>0:Object.keys(t).some(function(e){return null!==t[e]&&""!==t[e]})))},updateAllConditionCounts:function(){var t=this,i={},a={},s=0;this.$wrapper.find(".target-block.active .selection-group").each(function(){var n=e(this),r=n.closest(".target-block").data("blockType")||"products",o=n.find(".group-include");if(o.length){var l=t.getConditionData(o,r);if(l){var c="c"+s++;i[c]=l.condition,a[c]=l.$countEl}}n.find(".exclude-row").each(function(){var n=t.getConditionData(e(this),r);if(n){var o="c"+s++;i[o]=n.condition,a[o]=n.$countEl}})}),0!==Object.keys(i).length&&e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatchesBulk",trait:"EntitySelector",conditions:JSON.stringify(i)},success:function(e){e&&e.success&&e.counts&&Object.keys(e.counts).forEach(function(t){var i=e.counts[t]||0,s=a[t];s&&s.length&&(s.removeClass("no-matches clickable"),0===i?(s.find(".preview-count").text(i),s.addClass("no-matches").show()):(s.find(".preview-count").text(i),s.addClass("clickable").show()))})},error:function(){Object.keys(a).forEach(function(e){var t=a[e];t&&t.length&&t.hide().removeClass("clickable")})}})},getConditionData:function(e,t){var i=e.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row .condition-match-count").first();if(!i.length)return null;var a=e.hasClass("exclude-row"),s=(a?e.find(".exclude-method-select"):e.find(".include-method-select")).val();if(!s)return i.hide(),null;var n=a?e.find(".exclude-picker"):e.find(".include-picker"),r=n.data("valueType")||"none",o=this.getPickerValues(n,r),l=!o||Array.isArray(o)&&0===o.length||"object"==typeof o&&!Array.isArray(o)&&("combination_attributes"===r&&void 0!==o.attributes&&0===Object.keys(o.attributes).length||"combination_attributes"!==r&&0===Object.keys(o).length);return"none"!==r&&"boolean"!==r&&l?(i.hide(),null):(i.find(".preview-count").html('<i class="icon-spinner icon-spin"></i>'),i.removeClass("clickable no-matches").show(),i.data("conditionData",{method:s,values:o,blockType:t,isExclude:a}),{condition:{method:s,values:o,block_type:t},$countEl:i})},updateGroupCounts:function(t){var i=this,a=t.closest(".target-block").data("blockType")||"products",s=t.find(".group-include");s.length&&this.updateConditionCount(s,a),t.find(".exclude-row").each(function(){i.updateConditionCount(e(this),a)}),this.updateGroupTotalCount(t)},updateConditionCount:function(t,i){var a=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row .condition-match-count").first();if(a.length){var s=t.hasClass("exclude-row"),n=(s?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(n){var r=s?t.find(".exclude-picker"):t.find(".include-picker"),o=r.data("valueType")||"none",l=this.getPickerValues(r,o),c=!l||Array.isArray(l)&&0===l.length||"object"==typeof l&&!Array.isArray(l)&&("combination_attributes"===o&&void 0!==l.attributes&&0===Object.keys(l.attributes).length||"combination_attributes"!==o&&0===Object.keys(l).length);"none"!==o&&"boolean"!==o&&c?a.hide():(i||(i=t.closest(".target-block").data("blockType")||"products"),a.find(".preview-count").html('<i class="icon-spinner icon-spin"></i>'),a.removeClass("clickable no-matches").show(),a.data("conditionData",{method:n,values:l,blockType:i,isExclude:s}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:n,values:JSON.stringify(l),block_type:i},success:function(e){if(e&&e.success){var t=e.count||0;a.removeClass("no-matches clickable"),0===t?(a.find(".preview-count").text(t),a.addClass("no-matches").show()):(a.find(".preview-count").text(t),a.addClass("clickable").show())}else a.hide().removeClass("clickable")},error:function(){a.hide().removeClass("clickable")}}))}else a.hide()}},updateGroupTotalCount:function(t){var i=t.closest(".target-block").data("blockType")||"products",a=t.find(".group-header .group-count-badge"),s=t.find(".group-modifier-limit"),n=this.serializeGroup(t,i);if(!n.include||!n.include.method)return a.hide(),void s.attr("placeholder","");a.html('<i class="icon-spinner icon-spin"></i>').show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countGroupItems",trait:"EntitySelector",group_data:JSON.stringify(n),block_type:i},success:function(e){if(e&&e.success){var r=e.final_count||0,o=e.exclude_count||0,l='<i class="icon-eye"></i> '+r;o>0&&(l+=' <span class="exclude-info">(-'+o+")</span>"),a.html(l),a.addClass("clickable").show(),a.data("groupData",n),a.data("blockType",i),a.data("finalCount",r),s.attr("placeholder",r);var c=t.find(".group-preview-badge .preview-count");if(c.length){var d=parseInt(s.val(),10),p=d>0&&d<r?d:r;c.text(p)}}else a.hide().removeClass("clickable"),s.attr("placeholder","")},error:function(){a.hide(),s.attr("placeholder","")}})},addFirstExcludeRow:function(e,t){var i=e.find(".group-excludes"),a=this.config.trans||{},s='<div class="except-separator">';s+='<span class="except-label"><i class="icon-ban"></i> '+(a.except||"EXCEPT")+"</span>",s+="</div>",s+='<div class="exclude-rows-container">',s+=this.buildExcludeRowHtml(t,0),s+="</div>",s+='<button type="button" class="btn-add-another-exclude">',s+='<i class="icon-plus"></i> '+(a.add_another_exception||"Add another exception"),s+="</button>",i.addClass("has-excludes").html(s);var n=i.find('.exclude-row[data-exclude-index="0"]'),r=n.find(".exclude-method-select");this.enhanceMethodSelect(r);var o=t.data("blockType"),l=r.val();this.updateMethodInfoPlaceholder(n.find(".method-selector-wrapper"),l,o),this.updateMethodSelectorLock(e,!0),this.serializeAllBlocks()},addExcludeRow:function(t,i){var a=t.find(".exclude-rows-container"),s=-1;a.find(".exclude-row").each(function(){var t=parseInt(e(this).data("excludeIndex"),10);t>s&&(s=t)});var n=s+1,r=this.buildExcludeRowHtml(i,n);a.append(r);var o=a.find('.exclude-row[data-exclude-index="'+n+'"]'),l=o.find(".exclude-method-select");this.enhanceMethodSelect(l);var c=i.data("blockType"),d=l.val();this.updateMethodInfoPlaceholder(o.find(".method-selector-wrapper"),d,c),this.serializeAllBlocks()},buildExcludeRowHtml:function(t,i){var a=t.data("blockType"),s=(this.config.blocks[a]||{}).selection_methods||{},n=this.config.trans||{},r=this.buildMethodOptions(s,!0),o=a,l="entity_search";e.each(s,function(e,t){return"all"===e||(o=t.search_entity||a,l=t.value_type||"entity_search",!1)});var c='<div class="exclude-row" data-exclude-index="'+i+'">';return c+='<div class="exclude-header-row">',c+='<div class="method-selector-wrapper">',c+='<select class="exclude-method-select">'+r+"</select>",c+='<span class="condition-match-count no-matches"><i class="icon-eye"></i> <span class="preview-count">0</span></span>',c+='<span class="method-info-placeholder"></span>',c+="</div>",c+='<button type="button" class="btn-remove-exclude-row" title="'+(n.remove_this_exception||"Remove this exception")+'">',c+='<i class="icon-trash"></i>',c+="</button>",c+="</div>",(c+=this.buildValuePickerHtml("exclude",l,o,s))+"</div>"},removeExcludeRow:function(e,t,i){var a=t.find(".exclude-rows-container"),s=this.config.trans||{};e.remove(),0===a.find(".exclude-row").length&&(t.find(".group-excludes").removeClass("has-excludes").html('<button type="button" class="btn-add-exclude"><i class="icon-plus"></i> '+(s.add_exceptions||"Add exceptions")+"</button>"),this.updateMethodSelectorLock(t,!1)),this.serializeAllBlocks()},buildMethodOptions:function(t,i){var a=this,s=this.config.trans||{},n="",r={select_by:s.select_by||"Select by...",filter_by:s.filter_by||"Filter by..."},o={},l={};return e.each(t,function(e,t){if(i&&"all"===e)return!0;var a=t.group||"";a?(o[a]||(o[a]={}),o[a][e]=t):l[e]=t}),e.each(l,function(e,t){n+=a.buildMethodOption(e,t)}),e.each(o,function(t,i){var s=r[t]||t.replace(/_/g," ");n+='<optgroup label="'+a.escapeAttr(s)+'">',e.each(i,function(e,t){n+=a.buildMethodOption(e,t)}),n+="</optgroup>"}),n},buildMethodOption:function(e,t){var i='<option value="'+this.escapeAttr(e)+'"';return i+=' data-value-type="'+this.escapeAttr(t.value_type||"none")+'"',t.icon&&(i+=' data-icon="'+this.escapeAttr(t.icon)+'"'),t.search_entity&&(i+=' data-search-entity="'+this.escapeAttr(t.search_entity)+'"'),t.options&&(i+=' data-options="'+this.escapeAttr(JSON.stringify(t.options))+'"'),t.exclusive&&(i+=' data-exclusive="true"'),void 0!==t.step&&(i+=' data-step="'+this.escapeAttr(t.step)+'"'),void 0!==t.min&&(i+=' data-min="'+this.escapeAttr(t.min)+'"'),i+">"+this.escapeHtml(t.label)+"</option>"},buildValuePickerHtml:function(e,t,i,a){var s=this.config.trans||{},n=e+"-picker",r=e+"-chips",o=e+"-values-data",l="";if("none"===t)return l='<div class="value-picker '+n+'" style="display:none;" data-search-entity="" data-value-type="none">',(l+='<input type="hidden" class="'+o+'" value="[]">')+"</div>";switch(l='<div class="value-picker '+n+'" data-search-entity="'+this.escapeAttr(i)+'" data-value-type="'+this.escapeAttr(t)+'">',t){case"entity_search":var c=s.no_items_selected||"No items selected - use search below";l+='<div class="entity-chips '+r+'" data-placeholder="'+this.escapeAttr(c)+'"></div>',l+='<div class="entity-search-box">',l+='<i class="icon-search entity-search-icon"></i>',l+='<input type="text" class="entity-search-input" placeholder="'+this.escapeAttr(s.search_placeholder||"Search by name, reference, ID...")+'" autocomplete="off">',l+='<span class="search-loading" style="display:none;"><i class="icon-spinner icon-spin"></i></span>',l+="</div>",l+='<input type="hidden" class="'+o+'" value="[]">';break;case"pattern":var d="<strong>"+this.escapeHtml(s.pattern_help_title||"Pattern Syntax")+"</strong>";d+='<div class="pattern-help-content">',d+='<div class="pattern-help-item"><code>*</code> <span>'+this.escapeHtml(s.pattern_help_wildcard||"any text (wildcard)")+"</span></div>",d+='<div class="pattern-help-item"><code>{number}</code> <span>'+this.escapeHtml(s.pattern_help_number||"any number (e.g. 100, 250)")+"</span></div>",d+='<div class="pattern-help-item"><code>{letter}</code> <span>'+this.escapeHtml(s.pattern_help_letter||"single letter (A-Z)")+"</span></div>",d+="</div>",d+='<div class="pattern-help-examples">',d+="<strong>"+this.escapeHtml(s.pattern_help_examples||"Examples:")+"</strong>",d+='<div class="pattern-example"><code>*cotton*</code> <span>'+this.escapeHtml(s.pattern_example_1||'contains "cotton"')+"</span></div>",d+='<div class="pattern-example"><code>iPhone {number} Pro*</code> <span>'+this.escapeHtml(s.pattern_example_2||'matches "iPhone 15 Pro Max"')+"</span></div>",d+='<div class="pattern-example"><code>Size {letter}</code> <span>'+this.escapeHtml(s.pattern_example_3||'matches "Size M", "Size L"')+"</span></div>",d+="</div>";var p=s.no_patterns||"No patterns - press Enter to add";l+='<div class="entity-chips pattern-chips" data-placeholder="'+this.escapeAttr(p)+'"></div>',l+='<div class="pattern-input-row">',l+='<div class="pattern-tag draft-tag" data-case-sensitive="0">',l+='<button type="button" class="btn-toggle-case" title="'+this.escapeAttr(s.case_insensitive||"Case insensitive - click to toggle")+'"><span class="case-icon">aa</span></button>',l+='<input type="text" class="pattern-input" value="" placeholder="'+this.escapeAttr(s.enter_pattern||"e.g. *cotton*")+'">',l+='<span class="pattern-match-count" title="'+this.escapeAttr(s.click_to_preview||"Click to preview matches")+'"><i class="icon-eye"></i> <span class="count-value"></span></span>',l+='<button type="button" class="btn-add-pattern" title="'+this.escapeAttr(s.add_pattern||"Add pattern (Enter)")+'"><i class="icon-plus"></i></button>',l+="</div>",l+='<span class="mpr-info-wrapper" data-details="'+this.escapeAttr(d)+'">',l+='<span class="mpr-icon icon-info link"></span>',l+="</span>",l+="</div>",l+='<input type="hidden" class="'+o+'" value="[]">';break;case"numeric_range":l+='<div class="numeric-range-box">',l+='<input type="number" class="range-min-input" value="" placeholder="'+this.escapeAttr(s.min||"Min")+'" step="0.01">',l+='<span class="range-separator">-</span>',l+='<input type="number" class="range-max-input" value="" placeholder="'+this.escapeAttr(s.max||"Max")+'" step="0.01">',l+="</div>",l+='<input type="hidden" class="'+o+'" value="[]">';break;case"multi_numeric_range":l+='<div class="multi-range-container">',l+='<div class="multi-range-chips"></div>',l+='<div class="multi-range-input-row">',l+='<input type="number" class="range-min-input" value="" placeholder="'+this.escapeAttr(s.min||"Min")+'" step="0.01">',l+='<span class="range-separator">-</span>',l+='<input type="number" class="range-max-input" value="" placeholder="'+this.escapeAttr(s.max||"Max")+'" step="0.01">',l+='<button type="button" class="btn-add-range" title="'+this.escapeAttr(s.add_range||"Add range")+'"><i class="icon-plus"></i></button>',l+="</div>",l+="</div>",l+='<input type="hidden" class="'+o+'" value="[]">';break;case"multi_select_tiles":l+='<div class="multi-select-tiles">',l+="</div>",l+='<input type="hidden" class="'+o+'" value="[]">';break;case"date_range":l+='<div class="date-range-box">',l+='<input type="date" class="date-from-input" value="">',l+='<span class="range-separator">-</span>',l+='<input type="date" class="date-to-input" value="">',l+="</div>",l+='<input type="hidden" class="'+o+'" value="[]">';break;case"select":l+='<div class="select-input-box">',l+='<select class="select-value-input"></select>',l+="</div>",l+='<input type="hidden" class="'+o+'" value="[]">';break;case"boolean":l+='<div class="boolean-input-box">',l+='<span class="boolean-label">'+this.escapeHtml(s.yes||"Yes")+"</span>",l+="</div>",l+='<input type="hidden" class="'+o+'" value="[true]">';break;case"combination_attributes":this.escapeHtml(s.combination_help_title||"Combination Targeting"),this.escapeHtml(s.combination_help_desc||"Select attributes to target specific product combinations."),this.escapeHtml(s.combination_help_logic||"Logic:"),this.escapeHtml(s.combination_help_within||"Within group: OR (Red OR Blue)"),this.escapeHtml(s.combination_help_between||"Between groups: AND (Color AND Size)");var u=this.config.combinationMode||"products",h="toggle"===u,f=h?"products":u;l+='<div class="combination-attributes-picker" data-combination-mode="'+this.escapeAttr(u)+'">',h&&(l+='<div class="combination-mode-toggle">',l+='<label class="combination-mode-option">',l+='<input type="radio" name="'+this.escapeAttr(e)+"_comb_mode_"+Date.now()+'" class="comb-mode-radio" value="products" checked>',l+='<span class="mode-label">'+this.escapeHtml(s.comb_mode_products||"Products with these combinations")+"</span>",l+="</label>",l+='<label class="combination-mode-option">',l+='<input type="radio" name="'+this.escapeAttr(e)+"_comb_mode_"+Date.now()+'" class="comb-mode-radio" value="combinations">',l+='<span class="mode-label">'+this.escapeHtml(s.comb_mode_combinations||"Only these exact combinations")+"</span>",l+="</label>",l+="</div>"),l+='<div class="combination-groups-container">',l+='<span class="combination-loading"><i class="icon-spinner icon-spin"></i> '+this.escapeHtml(s.loading||"Loading...")+"</span>",l+="</div>",l+="</div>",l+='<input type="hidden" class="'+o+'" value=\'{"mode":"'+f+'","attributes":{}}\'>';break;default:l+='<input type="hidden" class="'+o+'" value="[]">'}return l+"</div>"},getSortOptionsArray:function(e){var t=this.config.trans||{};switch(e){case"products":return[{value:"sales",label:t.sort_bestsellers||"Best sellers"},{value:"date_add",label:t.sort_newest||"Newest"},{value:"price",label:t.sort_price||"Price"},{value:"name",label:t.sort_name||"Name"},{value:"position",label:t.sort_position||"Position"},{value:"quantity",label:t.sort_stock||"Stock quantity"},{value:"random",label:t.sort_random||"Random"}];case"categories":return[{value:"name",label:t.sort_name||"Name"},{value:"position",label:t.sort_position||"Position"},{value:"product_count",label:t.sort_products||"Products count"},{value:"date_add",label:t.sort_newest||"Newest"}];default:return[{value:"name",label:t.sort_name||"Name"},{value:"date_add",label:t.sort_newest||"Newest"}]}},getSortIconClass:function(e,t){var i="ASC"===t;switch(e){case"name":return i?"icon-sort-alpha-asc":"icon-sort-alpha-desc";case"price":case"quantity":case"product_count":case"date_add":case"newest_products":case"position":return i?"icon-sort-numeric-asc":"icon-sort-numeric-desc";case"sales":case"total_sales":default:return i?"icon-sort-amount-asc":"icon-sort-amount-desc";case"random":return"icon-random"}},cycleSortOption:function(e,t){for(var i,a,s,n=this.getSortOptionsArray(t),r=e.data("sort")||"sales",o=e.data("dir")||"DESC",l=-1,c=0;c<n.length;c++)if(n[c].value===r){l=c;break}"DESC"===o?(i=r,a="ASC"):(i=n[(l+1)%n.length].value,a="DESC");for(var d=0;d<n.length;d++)if(n[d].value===i){s=n[d].label;break}e.data("sort",i),e.data("dir",a),e.attr("data-sort",i),e.attr("data-dir",a),e.attr("title",s+" "+("DESC"===a?"↓":"↑")),e.find("i").attr("class",this.getSortIconClass(i,a))},validate:function(){if(1!==this.$wrapper.data("required")&&"1"!==this.$wrapper.data("required"))return!0;var t=!1;return this.$wrapper.find(".target-block").each(function(){if(e(this).find(".selection-group").length>0)return t=!0,!1}),t?(this.clearValidationError(),!0):(this.showValidationError(),!1)},showValidationError:function(){this.$wrapper.addClass("has-validation-error");var t=this.$wrapper.data("required-message")||"Please select at least one item";this.$wrapper.find(".trait-validation-error").remove();var i=e("<div>",{class:"trait-validation-error",html:'<i class="icon-warning"></i> '+t});this.$wrapper.find(".condition-trait-header").after(i),e("html, body").animate({scrollTop:this.$wrapper.offset().top-100},300),this.$wrapper.find(".condition-trait-body").is(":visible")||(this.$wrapper.find(".condition-trait-body").slideDown(200),this.$wrapper.removeClass("collapsed"))},clearValidationError:function(){this.$wrapper.removeClass("has-validation-error"),this.$wrapper.find(".trait-validation-error").remove()}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.methods={initMethodDropdowns:function(){var t=this;this.$wrapper.find(".include-method-select").each(function(){t.enhanceMethodSelect(e(this))}),this.$wrapper.find(".exclude-method-select").each(function(){t.enhanceMethodSelect(e(this))}),this.initMethodInfoPlaceholders()},initMethodInfoPlaceholders:function(){var t=this;this.$wrapper.find(".selection-group").each(function(){var i=e(this),a=i.closest(".target-block").data("blockType")||"products",s=i.find(".include-method-select").val()||"all";t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),s,a),i.find(".exclude-row").each(function(){var i=e(this),s=i.find(".exclude-method-select").val();s&&t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),s,a)})})},enhanceMethodSelect:function(t){var i=this;if(t.length&&!t.data("methodDropdownInit")){t.data("methodDropdownInit",!0),t.addClass("method-select-hidden");var a=t.find("option:selected"),s=a.data("icon")||"icon-caret-down",n=a.text(),r='<div class="method-dropdown-trigger">';r+='<i class="'+this.escapeAttr(s)+' method-trigger-icon"></i>',r+='<span class="method-trigger-label">'+this.escapeHtml(n)+"</span>",r+='<i class="icon-caret-down method-trigger-caret"></i>';var o=e(r+="</div>");t.after(o),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),t.closest(".method-selector-wrapper").hasClass("selector-locked")||i.showMethodDropdownMenu(t,o)}),t.on("change.methodDropdown",function(){i.updateMethodTrigger(t,o)})}},updateMethodTrigger:function(e,t){var i=e.find("option:selected"),a=i.data("icon")||"icon-caret-down",s=i.text();t.find(".method-trigger-icon").attr("class",a+" method-trigger-icon"),t.find(".method-trigger-label").text(s)},showMethodDropdownMenu:function(t,i){var a=this;this.closeMethodDropdownMenu();var s=this.buildMethodDropdownMenuHtml(t),n=e(s),r=i.offset(),o=i.outerWidth(),l=i.outerHeight();n.css({position:"absolute",top:r.top+l+2,left:r.left,minWidth:o,zIndex:10001}),e("body").append(n),this.$methodDropdownMenu=n,this.$methodDropdownSelect=t,this.$methodDropdownTrigger=i,n.on("click",".method-dropdown-item",function(i){i.preventDefault(),i.stopPropagation();var s=e(this).data("value");t.val(s).trigger("change"),a.closeMethodDropdownMenu()}),e(document).on("click.methodDropdown",function(t){e(t.target).closest(".method-dropdown-menu, .method-dropdown-trigger").length||a.closeMethodDropdownMenu()}),e(document).on("keydown.methodDropdown",function(e){27===e.keyCode&&a.closeMethodDropdownMenu()})},buildMethodDropdownMenuHtml:function(t){var i=this,a='<div class="method-dropdown-menu">';return t.children("option").each(function(){var t=e(this),s=t.data("icon")||"icon-asterisk",n=t.text(),r=t.val(),o=t.is(":selected");a+='<div class="method-dropdown-item'+(o?" selected":"")+'" data-value="'+i.escapeAttr(r)+'">',a+='<i class="'+i.escapeAttr(s)+' method-item-icon"></i>',a+='<span class="method-item-label">'+i.escapeHtml(n)+"</span>",o&&(a+='<i class="icon-check method-item-check"></i>'),a+="</div>"}),t.children("optgroup").each(function(){var t=e(this),s=t.attr("label")||"";a+='<div class="method-dropdown-optgroup">',a+='<div class="method-optgroup-label">'+i.escapeHtml(s)+"</div>",a+='<div class="method-optgroup-items">',t.children("option").each(function(){var t=e(this),s=t.data("icon")||"icon-cog",n=t.text(),r=t.val(),o=t.is(":selected");a+='<div class="method-dropdown-item'+(o?" selected":"")+'" data-value="'+i.escapeAttr(r)+'">',a+='<i class="'+i.escapeAttr(s)+' method-item-icon"></i>',a+='<span class="method-item-label">'+i.escapeHtml(n)+"</span>",o&&(a+='<i class="icon-check method-item-check"></i>'),a+="</div>"}),a+="</div>",a+="</div>"}),a+="</div>"},closeMethodDropdownMenu:function(){this.$methodDropdownMenu&&(this.$methodDropdownMenu.remove(),this.$methodDropdownMenu=null),this.$methodDropdownSelect=null,this.$methodDropdownTrigger=null,e(document).off("click.methodDropdown keydown.methodDropdown")},populateTiles:function(t,i,a){var s=t.find(".multi-select-tiles");s.empty(),a?s.attr("data-exclusive","true"):s.removeAttr("data-exclusive"),e.each(i,function(t,i){var a="object"==typeof i?i.label:i,n="object"==typeof i&&i.icon?i.icon:null,r="object"==typeof i&&i.color?i.color:null,o="tile-option";r&&(o+=" tile-color-"+r);var l=e("<button>",{type:"button",class:o,"data-value":t});n&&l.append(e("<i>",{class:n})),l.append(e("<span>",{class:"tile-label",text:a})),s.append(l)})},applyRangeInputConstraints:function(e,t,i){var a=e.find(".range-min-input, .range-max-input");null!=t?a.attr("step",t):a.attr("step","any"),null!=i?a.attr("min",i):a.removeAttr("min")},showRangeInputError:function(t,i){var a=t.closest(".multi-range-input-row");a.find(".range-input-error").remove(),a.find(".range-min-input, .range-max-input").removeClass("has-error"),t.addClass("has-error");var s=e("<span>",{class:"range-input-error",text:i});a.append(s),setTimeout(function(){t.removeClass("has-error"),s.fadeOut(200,function(){e(this).remove()})},3e3)},loadCombinationAttributeGroups:function(t){var i=this,a=this.config.trans||{},s=t.find(".combination-groups-container");e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getAttributeGroups",trait:"TargetConditions"},success:function(n){s.empty(),n.success&&n.groups&&0!==n.groups.length?n.groups.forEach(function(n){var r=e("<div>",{class:"comb-attr-group","data-group-id":n.id}),o=e("<div>",{class:"comb-attr-group-header"});o.append(e("<span>",{class:"comb-attr-group-name",text:n.name})),o.append(e("<span>",{class:"comb-attr-group-count",text:"0"}));var l=e("<div>",{class:"comb-attr-toolbar"});l.append(e("<button>",{type:"button",class:"comb-toolbar-btn comb-select-all",title:a.select_all||"Select all",html:'<i class="icon-check-square-o"></i>'})),l.append(e("<button>",{type:"button",class:"comb-toolbar-btn comb-select-none",title:a.clear||"Clear",html:'<i class="icon-square-o"></i>'})),l.append(e("<input>",{type:"text",class:"comb-attr-search",placeholder:a.filter_results||"Filter..."}));var c=e("<div>",{class:"comb-attr-values","data-loaded":"false"});c.append(e("<span>",{class:"comb-attr-loading",html:'<i class="icon-spinner icon-spin"></i>'})),r.append(o),r.append(l),r.append(c),s.append(r),i.loadCombinationAttributeValues(t,n.id,c)}):s.html('<span class="combination-empty">'+i.escapeHtml(a.no_attribute_groups||"No attribute groups found")+"</span>")},error:function(){s.html('<span class="combination-error">'+i.escapeHtml(a.error_loading||"Error loading attribute groups")+"</span>")}})},loadCombinationAttributeValues:function(t,i,a){var s=this,n=this.config.trans||{};e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getAttributeValues",trait:"TargetConditions",id_attribute_group:i},success:function(r){a.empty(),a.attr("data-loaded","true"),r.success&&r.values&&0!==r.values.length?(r.values.forEach(function(t){var s=parseInt(t.product_count)||0,n=e("<button>",{type:"button",class:"comb-attr-value","data-value-id":t.id,"data-group-id":i,"data-name":t.name.toLowerCase()});n.append(e("<span>",{class:"comb-attr-value-name",text:t.name})),s>0&&n.append(e("<span>",{class:"comb-attr-value-count",text:s})),a.append(n)}),s.restoreCombinationSelections(t)):a.html('<span class="comb-attr-empty">'+s.escapeHtml(n.no_values||"No values")+"</span>")},error:function(){a.html('<span class="comb-attr-error">'+s.escapeHtml(n.error_loading||"Error")+"</span>")}})},restoreCombinationSelections:function(t){var i,a=t.find(".include-values-data, .exclude-values-data").first().val()||"{}";try{i=JSON.parse(a)}catch(e){return}var s=i.attributes||i,n=i.mode||"products";t.find('.comb-mode-radio[value="'+n+'"]').prop("checked",!0),e.each(s,function(e,i){Array.isArray(i)&&i.forEach(function(i){t.find('.comb-attr-value[data-group-id="'+e+'"][data-value-id="'+i+'"]').addClass("selected")})}),this.updateCombinationGroupCounts(t)},updateCombinationData:function(t){var i={};t.find(".comb-attr-value.selected").each(function(){var t=e(this).data("groupId").toString(),a=e(this).data("valueId");i[t]||(i[t]=[]),i[t].push(a)});var a=t.find(".combination-attributes-picker").data("combinationMode")||this.config.combinationMode||"products",s={mode:"toggle"===a?t.find(".comb-mode-radio:checked").val()||"products":a,attributes:i};t.find(".include-values-data, .exclude-values-data").first().val(JSON.stringify(s)),this.updateCombinationGroupCounts(t)},updateCombinationGroupCounts:function(t){t.find(".comb-attr-group").each(function(){var t=e(this),i=t.find(".comb-attr-value.selected").length;t.find(".comb-attr-group-count").text(i),i>0?t.addClass("has-selections"):t.removeClass("has-selections")})},updateMethodInfoPlaceholder:function(t,i,a){var s=t.find(".method-info-placeholder");if(s.length){s.empty();var n=this.config.methodHelp||{},r=(n[a]||n.products||{})[i]||this.getBuiltInMethodHelp(i);if(r){var o=e("<span>",{class:"mpr-info-wrapper","data-tooltip":r});o.append(e("<i>",{class:"material-icons",text:"info_outline"})),s.append(o)}}},getBuiltInMethodHelp:function(e){var t=this.config.trans||{},i="";switch(e){case"all":i="<strong>"+this.escapeHtml(t.help_all_title||"All Items")+"</strong>",i+="<p>"+this.escapeHtml(t.help_all_desc||"Selects all items without any filtering.")+"</p>";break;case"specific":i="<strong>"+this.escapeHtml(t.help_specific_title||"Specific Items")+"</strong>",i+="<p>"+this.escapeHtml(t.help_specific_desc||"Search and select individual items by name, reference, or ID.")+"</p>";break;case"by_category":i="<strong>"+this.escapeHtml(t.help_category_title||"By Category")+"</strong>",i+="<p>"+this.escapeHtml(t.help_category_desc||"Select items belonging to specific categories. Includes subcategories.")+"</p>";break;case"by_manufacturer":i="<strong>"+this.escapeHtml(t.help_manufacturer_title||"By Manufacturer")+"</strong>",i+="<p>"+this.escapeHtml(t.help_manufacturer_desc||"Select items from specific manufacturers/brands.")+"</p>";break;case"by_supplier":i="<strong>"+this.escapeHtml(t.help_supplier_title||"By Supplier")+"</strong>",i+="<p>"+this.escapeHtml(t.help_supplier_desc||"Select items from specific suppliers.")+"</p>";break;case"by_tag":i="<strong>"+this.escapeHtml(t.help_tag_title||"By Tag")+"</strong>",i+="<p>"+this.escapeHtml(t.help_tag_desc||"Select items with specific tags assigned.")+"</p>";break;case"by_attribute":i="<strong>"+this.escapeHtml(t.help_attribute_title||"By Attribute")+"</strong>",i+="<p>"+this.escapeHtml(t.help_attribute_desc||"Select items with specific attribute values (e.g., Color: Red).")+"</p>";break;case"by_feature":i="<strong>"+this.escapeHtml(t.help_feature_title||"By Feature")+"</strong>",i+="<p>"+this.escapeHtml(t.help_feature_desc||"Select items with specific feature values (e.g., Material: Cotton).")+"</p>";break;case"by_combination":i="<strong>"+this.escapeHtml(t.help_combination_title||"Combination Targeting")+"</strong>",i+="<p>"+this.escapeHtml(t.help_combination_desc||"Select items by combination attributes.")+"</p>",i+="<p><strong>"+this.escapeHtml(t.help_combination_logic||"Logic:")+"</strong></p>",i+="<ul>",i+="<li>"+this.escapeHtml(t.help_combination_within||"Within group: OR (Red OR Blue)")+"</li>",i+="<li>"+this.escapeHtml(t.help_combination_between||"Between groups: AND (Color AND Size)")+"</li>",i+="</ul>";break;case"by_carrier":i="<strong>"+this.escapeHtml(t.help_carrier_title||"By Carrier")+"</strong>",i+="<p>"+this.escapeHtml(t.help_carrier_desc||"Select items available with specific carriers.")+"</p>";break;case"by_condition":i="<strong>"+this.escapeHtml(t.help_condition_title||"By Condition")+"</strong>",i+="<p>"+this.escapeHtml(t.help_condition_desc||"Filter by product condition: New, Used, or Refurbished.")+"</p>";break;case"by_visibility":i="<strong>"+this.escapeHtml(t.help_visibility_title||"By Visibility")+"</strong>",i+="<p>"+this.escapeHtml(t.help_visibility_desc||"Filter by where products are visible in the store.")+"</p>";break;case"by_active_status":i="<strong>"+this.escapeHtml(t.help_active_title||"By Active Status")+"</strong>",i+="<p>"+this.escapeHtml(t.help_active_desc||"Filter by whether products are enabled or disabled.")+"</p>";break;case"by_stock_status":i="<strong>"+this.escapeHtml(t.help_stock_title||"By Stock Status")+"</strong>",i+="<p>"+this.escapeHtml(t.help_stock_desc||"Filter by stock availability: In stock, Out of stock, or Low stock.")+"</p>";break;case"by_on_sale":case"by_has_specific_price":case"by_is_virtual":case"by_is_pack":case"by_has_combinations":case"by_available_for_order":case"by_online_only":case"by_has_related":case"by_has_customization":case"by_has_attachments":case"by_has_additional_shipping":i="<strong>"+this.escapeHtml(t.help_boolean_title||"Yes/No Filter")+"</strong>",i+="<p>"+this.escapeHtml(t.help_boolean_desc||"Filter products by this property.")+"</p>";break;case"by_name_pattern":case"by_reference_pattern":case"by_description_pattern":case"by_long_description_pattern":case"by_ean13_pattern":case"by_upc_pattern":case"by_isbn_pattern":case"by_mpn_pattern":case"by_meta_title_pattern":case"by_meta_description_pattern":i="<strong>"+this.escapeHtml(t.help_pattern_title||"Pattern Matching")+"</strong>",i+="<p>"+this.escapeHtml(t.help_pattern_desc||"Match text using patterns with wildcards.")+"</p>",i+="<div><code>*</code> "+this.escapeHtml(t.help_pattern_wildcard||"any text")+"</div>",i+="<div><code>{number}</code> "+this.escapeHtml(t.help_pattern_number||"any number")+"</div>",i+="<div><code>{letter}</code> "+this.escapeHtml(t.help_pattern_letter||"single letter A-Z")+"</div>";break;case"by_id_range":case"by_price_range":case"by_weight_range":case"by_quantity_range":case"by_position_range":i="<strong>"+this.escapeHtml(t.help_range_title||"Numeric Range")+"</strong>",i+="<p>"+this.escapeHtml(t.help_range_desc||"Filter by numeric values within specified ranges.")+"</p>",i+="<p>"+this.escapeHtml(t.help_range_tip||"Leave min or max empty for open-ended ranges.")+"</p>";break;case"by_date_added":case"by_date_updated":i="<strong>"+this.escapeHtml(t.help_date_title||"Date Range")+"</strong>",i+="<p>"+this.escapeHtml(t.help_date_desc||"Filter by date within a specific period.")+"</p>"}return i},buildSortOptions:function(e){var t=[];switch(e){case"products":t=[{value:"sales",label:"Best sellers"},{value:"date_add",label:"Newest"},{value:"price",label:"Price"},{value:"name",label:"Name"},{value:"position",label:"Position"},{value:"quantity",label:"Stock quantity"},{value:"random",label:"Random"}];break;case"categories":t=[{value:"name",label:"Name"},{value:"position",label:"Position"},{value:"product_count",label:"Product count"},{value:"total_sales",label:"Best sellers"},{value:"newest_products",label:"Newest products"},{value:"date_add",label:"Creation date"},{value:"random",label:"Random"}];break;case"manufacturers":case"suppliers":t=[{value:"name",label:"Name"},{value:"product_count",label:"Product count"},{value:"total_sales",label:"Best sellers"},{value:"newest_products",label:"Newest products"},{value:"random",label:"Random"}];break;case"cms":case"cms_categories":t=[{value:"name",label:"Name"},{value:"position",label:"Position"},{value:"random",label:"Random"}];break;default:t=[{value:"name",label:"Name"},{value:"random",label:"Random"}]}for(var i="",a=0;a<t.length;a++)i+='<option value="'+this.escapeAttr(t[a].value)+'">'+this.escapeHtml(t[a].label)+"</option>";return i},updateModifierButtonState:function(t){var i=t.find(".group-modifier-limit").val(),a=t.find(".group-modifier-sort").val(),s=t.find(".group-modifiers"),n=t.find(".btn-toggle-modifiers"),r=this.config.trans||{};if(n.find(".modifier-summary").remove(),i||a){s.addClass("has-values");var o=[];if(i&&o.push((r.top||"Top")+" "+i),a){var l=t.find(".group-modifier-sort option:selected").text();o.push(l)}var c=n.find(".toggle-arrow");e('<span class="modifier-summary">'+this.escapeHtml(o.join(", "))+"</span>").insertBefore(c)}else s.removeClass("has-values")},updateMethodSelectorLock:function(e,t){var i=e.find(".include-method-select"),a=i.closest(".method-selector-wrapper"),s=this.config.trans||{};if(t){if(i.prop("disabled",!0),a.length||(i.wrap('<div class="method-selector-wrapper"></div>'),a=i.parent(".method-selector-wrapper")),a.addClass("selector-locked"),!a.find(".lock-indicator").length){var n='<span class="mpr-info-wrapper lock-indicator"><i class="icon-lock"></i><span class="mpr-tooltip">'+(s.remove_excludes_first||"Remove all exceptions to change selection type")+"</span></span>",r=a.find(".condition-match-count");r.length?r.before(n):a.append(n)}}else i.prop("disabled",!1),a.length?(a.removeClass("selector-locked"),a.find(".mpr-info-wrapper.lock-indicator").remove()):i.siblings(".mpr-info-wrapper.lock-indicator").remove()}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.preview={updateHeaderTotalCount:function(){var t=0;this.$wrapper.find(".target-block-tab .tab-badge").each(function(){var i=e(this);if(!i.hasClass("loading")){var a=parseInt(i.text(),10);isNaN(a)||(t+=a)}});var i=this.$wrapper.find(".trait-total-count");t>0?i.text(t).show():i.hide(),this.updateShowAllToggle()},updateShowAllToggle:function(){var e=this.$wrapper.find(".trait-show-all-toggle");if(e.length){var t=e.find(".show-all-checkbox"),i=this.$wrapper.find(".target-block-tab.has-data").length>0;t.prop("checked",!i)}},createPreviewPopover:function(t){var i=this,a=this.config.trans||{},s=t.$badge,n=t.items||[],r=t.totalCount||0,o=t.hasMore||!1,l=t.entityLabel||"products",c='<div class="target-preview-popover preview-type-'+(t.previewType||"default")+'">';if(c+='<div class="preview-header">',c+='<span class="preview-count">'+r+" "+l+"</span>",c+='<button type="button" class="preview-close"><i class="icon-times"></i></button>',c+="</div>",c+='<div class="preview-filter">',c+='<input type="text" class="preview-filter-input" placeholder="'+(a.filter_results||"Filter results...")+'">',c+="</div>",n.length>0){if(c+='<div class="preview-list">',c+=this.renderPreviewItems(n),c+="</div>",o){var d=r-n.length;c+='<div class="preview-footer">',c+='<div class="load-more-controls">',c+='<span class="load-more-label">'+(a.load||"Load")+"</span>",c+='<select class="load-more-select">',d>=10&&(c+='<option value="10">10</option>'),d>=20&&(c+='<option value="20" selected>20</option>'),d>=50&&(c+='<option value="50">50</option>'),d>=100&&(c+='<option value="100">100</option>'),c+='<option value="'+d+'">'+(a.all||"All")+" ("+d+")</option>",c+="</select>",c+='<span class="load-more-of">'+(a.of||"of")+' <span class="remaining-count">'+d+"</span> "+(a.remaining||"remaining")+"</span>",c+='<button type="button" class="btn-load-more"><i class="icon-plus"></i></button>',c+="</div>",c+="</div>"}}else c+='<div class="preview-empty">'+(a.no_preview||"No items to preview")+"</div>";var p=e(c+="</div>");e("body").append(p),this.$previewPopover=p,this.$previewList=p.find(".preview-list"),this.previewLoadedCount=n.length,this.previewTotalCount=r,this.previewContext=t.context||{},this.previewOnLoadMore=t.onLoadMore||null,this.previewOnFilter=t.onFilter||null,this.previewCurrentFilter="",this.previewEntityLabel=l,p.find(".preview-close").on("click",function(){i.hidePreviewPopover()});var u=p.find(".preview-filter-input");if(t.onFilter){var h=this.debounce(function(e){i.previewCurrentFilter=e,i.showFilterLoading(!0),t.onFilter.call(i,e)},300);u.on("input",function(){var t=e(this).val().trim();t!==i.previewCurrentFilter&&h(t)})}else u.on("input",function(){var t=e(this).val().toLowerCase().trim();i.filterPreviewItems(t)});t.onLoadMore&&p.find(".btn-load-more").on("click",function(){var a=e(this),s=a.closest(".load-more-controls").find(".load-more-select");if(!a.hasClass("loading")){a.addClass("loading"),a.find("i").removeClass("icon-plus").addClass("icon-spinner icon-spin"),s.prop("disabled",!0);var n=parseInt(s.val(),10)||20;i.previewLoadCount=n,t.onLoadMore.call(i,a)}});var f=s.offset(),v=s.outerHeight(),m=s.outerWidth(),g=p.outerWidth(),b=f.left+m/2-g/2,w=e(window).width()-g-10;return b=Math.max(10,Math.min(b,w)),p.css({position:"absolute",top:f.top+v+8,left:b,zIndex:1e4}),p.addClass("show"),p},updatePreviewPopover:function(e,t){var i=this.config.trans||{};this.$previewList.html(this.renderPreviewItems(e)),this.previewLoadedCount=e.length;var a=this.$previewPopover.find(".preview-footer");if(t){var s=this.previewTotalCount-e.length,n=a.find(".load-more-controls"),r=n.find(".btn-load-more"),o=n.find(".load-more-select");r.removeClass("loading"),r.find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),o.prop("disabled",!1),n.find(".remaining-count").text(s),o.empty(),s>=10&&o.append('<option value="10">10</option>'),s>=20&&o.append('<option value="20" selected>20</option>'),s>=50&&o.append('<option value="50">50</option>'),s>=100&&o.append('<option value="100">100</option>'),o.append('<option value="'+s+'">'+(i.all||"All")+" ("+s+")</option>")}else a.remove();var l=this.$previewPopover.find(".preview-filter-input").val();l&&this.filterPreviewItems(l.toLowerCase().trim())},renderPreviewItems:function(e){for(var t="",i=0;i<e.length;i++){var a=e[i],s="preview-item";a.isCombination&&(s+=" is-combination");var n="";n+=' data-name="'+this.escapeAttr((a.name||"").toLowerCase())+'"',n+=' data-ref="'+this.escapeAttr((a.reference||"").toLowerCase())+'"',a.attributes&&(n+=' data-attrs="'+this.escapeAttr((a.attributes||"").toLowerCase())+'"'),t+='<div class="'+s+'"'+n+">",a.image?t+='<img src="'+this.escapeAttr(a.image)+'" class="preview-item-image" alt="">':t+='<div class="preview-item-icon"><i class="material-icons">inventory_2</i></div>',t+='<div class="preview-item-info">',t+='<div class="preview-item-name">'+this.escapeHtml(a.name||"Unnamed")+"</div>";var r=[];a.reference&&r.push("Ref: "+a.reference),a.manufacturer&&r.push(a.manufacturer),a.category&&r.push(a.category),a.attributes&&r.push(a.attributes),r.length>0&&(t+='<div class="preview-item-meta">'+this.escapeHtml(r.join(" • "))+"</div>"),t+="</div>",void 0!==a.price&&null!==a.price?t+='<div class="preview-item-price">'+this.formatPrice(a.price)+"</div>":a.price_formatted&&(t+='<div class="preview-item-price">'+this.escapeHtml(a.price_formatted)+"</div>"),void 0===a.active||a.active||(t+='<span class="preview-item-badge badge-inactive">Inactive</span>'),t+="</div>"}return t},filterPreviewItems:function(t){if(this.$previewList){var i=this.$previewList.find(".preview-item");t?i.each(function(){var i=e(this),a=i.data("name")||"",s=i.data("ref")||"",n=i.data("attrs")||"",r=-1!==a.indexOf(t)||-1!==s.indexOf(t)||-1!==n.indexOf(t);i.toggle(r)}):i.show()}},showFilterLoading:function(e){if(this.$previewPopover){var t=this.$previewList;t&&(e?(this.previewLockedWidth||(this.previewLockedWidth=this.$previewPopover.outerWidth(),this.$previewPopover.css("width",this.previewLockedWidth+"px")),t.addClass("filtering"),t.find(".filter-loading-overlay").length||t.append('<div class="filter-loading-overlay"><i class="icon-spinner icon-spin"></i></div>')):(t.removeClass("filtering"),t.find(".filter-loading-overlay").remove()))}},updatePreviewPopoverFiltered:function(t){var i=this.config.trans||{};if(this.showFilterLoading(!1),t.success){var a=t.items||[],s=t.count||0,n=t.hasMore||!1,r=this.$previewPopover.find(".preview-header"),o=this.previewEntityLabel||"items";if(r.find(".preview-count").text(s+" "+o),a.length>0)this.$previewList.html(this.renderPreviewItems(a)),this.previewLoadedCount=a.length,this.previewTotalCount=s;else{var l=i.no_filter_results||"No matching items found";this.$previewList.html('<div class="preview-empty">'+l+"</div>"),this.previewLoadedCount=0,this.previewTotalCount=0}var c=this.$previewPopover.find(".preview-footer");if(n&&a.length>0){var d=s-a.length;if(c.length){var p=c.find(".load-more-controls"),u=p.find(".btn-load-more"),h=p.find(".load-more-select");u.removeClass("loading"),u.find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),h.prop("disabled",!1),p.find(".remaining-count").text(d),h.empty(),d>=10&&h.append('<option value="10">10</option>'),d>=20&&h.append('<option value="20" selected>20</option>'),d>=50&&h.append('<option value="50">50</option>'),d>=100&&h.append('<option value="100">100</option>'),h.append('<option value="'+d+'">'+(i.all||"All")+" ("+d+")</option>")}else{var f='<div class="preview-footer">';f+='<div class="load-more-controls">',f+='<span class="load-more-label">'+(i.load||"Load")+"</span>",f+='<select class="load-more-select">',d>=10&&(f+='<option value="10">10</option>'),d>=20&&(f+='<option value="20" selected>20</option>'),d>=50&&(f+='<option value="50">50</option>'),d>=100&&(f+='<option value="100">100</option>'),f+='<option value="'+d+'">'+(i.all||"All")+" ("+d+")</option>",f+="</select>",f+='<span class="load-more-of">'+(i.of||"of")+' <span class="remaining-count">'+d+"</span> "+(i.remaining||"remaining")+"</span>",f+='<button type="button" class="btn-load-more"><i class="icon-plus"></i></button>',f+="</div>";var v=e(f+="</div>");this.$previewList.after(v);var m=this;this.previewOnLoadMore&&v.find(".btn-load-more").on("click",function(){var t=e(this),i=t.closest(".load-more-controls").find(".load-more-select");if(!t.hasClass("loading")){t.addClass("loading"),t.find("i").removeClass("icon-plus").addClass("icon-spinner icon-spin"),i.prop("disabled",!0);var a=parseInt(i.val(),10)||20;m.previewLoadCount=a,m.previewOnLoadMore.call(m,t)}})}}else c.remove()}},formatPrice:function(e){"number"!=typeof e&&(e=parseFloat(e)||0);var t=this.config&&this.config.currency_sign||"€",i=this.config&&this.config.currency_format||"right",a=e.toFixed(2);return"left"===i?t+" "+a:a+" "+t},hidePreviewPopover:function(){this.$activeBadge&&(this.$activeBadge.removeClass("popover-open loading"),this.$activeBadge=null),this.$previewPopover&&(this.$previewPopover.remove(),this.$previewPopover=null),this.$previewList=null,this.previewContext=null,this.previewOnLoadMore=null,this.previewOnFilter=null,this.previewCurrentFilter="",this.previewEntityLabel=null,this.previewLockedWidth=null},showPreviewPopover:function(e){var t=this,i=e.data("previewData");if(i){this.hidePreviewPopover();var a=e.find(".tab-badge");a.addClass("popover-open"),this.$activeBadge=a;var s=i.items||i.products||[],n=e.data("blockType"),r=(this.config.blocks&&this.config.blocks[n]?this.config.blocks[n]:{}).entity_label_plural||"items";this.previewBlockType=n,this.createPreviewPopover({$badge:a,items:s,totalCount:i.count,hasMore:i.hasMore,entityLabel:r,previewType:"tab",context:{$tab:e,blockType:n},onLoadMore:function(i){t.loadMoreTabPreviewItems(e,i)},onFilter:function(i){t.filterTabPreviewItems(e,i)}})}},filterTabPreviewItems:function(t,i){var a=this,s=this.previewBlockType,n=this.$wrapper.find('input[name="'+this.config.name+'"]'),r={};try{r=JSON.parse(n.val()||"{}")}catch(e){return void a.showFilterLoading(!1)}var o=r[s]&&r[s].groups?r[s].groups:[];if(0!==o.length){var l={};l[s]={groups:o},e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewTargetConditions",trait:"TargetConditions",conditions:JSON.stringify(l),block_type:s,filter:i,limit:20,offset:0},success:function(e){a.updatePreviewPopoverFiltered(e)},error:function(){a.showFilterLoading(!1)}})}else a.showFilterLoading(!1)},loadMoreTabPreviewItems:function(t,i){var a=this,s=this.previewBlockType,n=this.$wrapper.find('input[name="'+this.config.name+'"]'),r={};try{r=JSON.parse(n.val()||"{}")}catch(e){return}var o=r[s]&&r[s].groups?r[s].groups:[];if(0!==o.length){var l={};l[s]={groups:o};var c=this.previewLoadCount||20,d={ajax:1,action:"previewTargetConditions",trait:"TargetConditions",conditions:JSON.stringify(l),block_type:s,limit:a.previewLoadedCount+c,offset:0};a.previewCurrentFilter&&(d.filter=a.previewCurrentFilter),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:d,success:function(e){var i=e.items||e.products||[];e.success&&i.length>0&&(t.data("previewData",e),a.previewTotalCount=e.count,a.updatePreviewPopover(i,e.hasMore))},error:function(){var e=i.closest(".load-more-controls").find(".load-more-select");i.removeClass("loading"),i.find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),e.prop("disabled",!1)}})}},showConditionPreviewPopover:function(t){var i=this,a=t.data("conditionData");if(a){this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t;var s=a.blockType||"products",n=(this.config.blocks&&this.config.blocks[s]?this.config.blocks[s]:{}).entity_label_plural||"products";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewConditionItems",trait:"EntitySelector",method:a.method,values:JSON.stringify(a.values),block_type:s,limit:10},success:function(e){t.removeClass("loading"),e.success?i.createPreviewPopover({$badge:t,items:e.items||[],totalCount:e.count,hasMore:e.hasMore,entityLabel:n,previewType:"condition",context:{conditionData:a,blockType:s},onLoadMore:function(e){i.loadMoreConditionItems(e)},onFilter:function(e){i.filterConditionItems(e)}}):(t.removeClass("popover-open"),i.$activeBadge=null)},error:function(){t.removeClass("loading popover-open"),i.$activeBadge=null}})}},filterConditionItems:function(t){var i=this,a=this.previewContext;a&&a.conditionData?e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewConditionItems",trait:"EntitySelector",method:a.conditionData.method,values:JSON.stringify(a.conditionData.values),block_type:a.blockType,filter:t,limit:20},success:function(e){i.updatePreviewPopoverFiltered(e)},error:function(){i.showFilterLoading(!1)}}):i.showFilterLoading(!1)},loadMoreConditionItems:function(t){var i=this,a=this.previewContext;if(a&&a.conditionData){var s=this.previewLoadCount||20,n={ajax:1,action:"previewConditionItems",trait:"EntitySelector",method:a.conditionData.method,values:JSON.stringify(a.conditionData.values),block_type:a.blockType,limit:i.previewLoadedCount+s};i.previewCurrentFilter&&(n.filter=i.previewCurrentFilter),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:n,success:function(e){e.success&&(i.previewTotalCount=e.count,i.updatePreviewPopover(e.items||[],e.hasMore))},error:function(){var e=t.closest(".load-more-controls").find(".load-more-select");t.removeClass("loading"),t.find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),e.prop("disabled",!1)}})}},showGroupPreviewPopover:function(t,i,a){var s=this;if(i||(i=t.closest(".selection-group")),!a){var n=t.closest(".target-block");a=n.data("blockType")||"products"}var r=t.data("groupData");if(r||(r=this.serializeGroup(i,a)),r&&r.include){this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t;var o=(this.config.blocks&&this.config.blocks[a]?this.config.blocks[a]:{}).entity_label_plural||"products";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewGroupItems",trait:"EntitySelector",group_data:JSON.stringify(r),block_type:a,limit:10},success:function(e){t.removeClass("loading"),e.success?s.createPreviewPopover({$badge:t,items:e.items||[],totalCount:e.count,hasMore:e.hasMore,entityLabel:o,previewType:"group",context:{groupData:r,blockType:a,$group:i},onLoadMore:function(e){s.loadMoreGroupItems(e)},onFilter:function(e){s.filterGroupItems(e)}}):(t.removeClass("popover-open"),s.$activeBadge=null)},error:function(){t.removeClass("loading popover-open"),s.$activeBadge=null}})}},filterGroupItems:function(t){var i=this,a=this.previewContext;a&&a.groupData?e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewGroupItems",trait:"EntitySelector",group_data:JSON.stringify(a.groupData),block_type:a.blockType,filter:t,limit:20},success:function(e){i.updatePreviewPopoverFiltered(e)},error:function(){i.showFilterLoading(!1)}}):i.showFilterLoading(!1)},loadMoreGroupItems:function(t){var i=this,a=this.previewContext;if(a&&a.groupData){var s=this.previewLoadCount||20,n={ajax:1,action:"previewGroupItems",trait:"EntitySelector",group_data:JSON.stringify(a.groupData),block_type:a.blockType,limit:i.previewLoadedCount+s};i.previewCurrentFilter&&(n.filter=i.previewCurrentFilter),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:n,success:function(e){e.success&&(i.previewTotalCount=e.count,i.updatePreviewPopover(e.items||[],e.hasMore))},error:function(){t.removeClass("loading"),t.find(".load-more-text").show(),t.find(".load-more-loading").hide()}})}},showFilterGroupPreviewPopover:function(t,i,a,s){var n=this;this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t,e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewFilterGroupProducts",trait:"EntitySelector",group_id:i,group_type:a,limit:10},success:function(e){t.removeClass("loading"),e.success?n.createPreviewPopover({$badge:t,items:e.items||[],totalCount:e.count||0,hasMore:e.hasMore||!1,entityLabel:"products",previewType:"filter-group",context:{groupId:i,groupType:a,groupName:s},onLoadMore:function(e){n.loadMoreFilterGroupItems(e)},onFilter:function(e){n.filterFilterGroupItems(e)}}):(t.removeClass("popover-open"),n.$activeBadge=null)},error:function(){t.removeClass("loading popover-open"),n.$activeBadge=null}})},filterFilterGroupItems:function(t){var i=this,a=this.previewContext;a&&a.groupId?e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewFilterGroupProducts",trait:"EntitySelector",group_id:a.groupId,group_type:a.groupType,filter:t,limit:20},success:function(e){i.updatePreviewPopoverFiltered(e)},error:function(){i.showFilterLoading(!1)}}):i.showFilterLoading(!1)},loadMoreFilterGroupItems:function(t){var i=this,a=this.previewContext;if(a&&a.groupId){var s=this.previewLoadCount||20,n={ajax:1,action:"previewFilterGroupProducts",trait:"EntitySelector",group_id:a.groupId,group_type:a.groupType,limit:i.previewLoadedCount+s};i.previewCurrentFilter&&(n.filter=i.previewCurrentFilter),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:n,success:function(e){e.success&&(i.previewTotalCount=e.count,i.updatePreviewPopover(e.items||[],e.hasMore))},error:function(){t.removeClass("loading"),t.find(".load-more-text").show(),t.find(".load-more-loading").hide()}})}},showCategoryItemsPreview:function(t,i,a,s){var n=this;this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t;var r="categories"===s,o=r?"products":"pages",l=r?"previewCategoryProducts":"previewCategoryPages";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:l,trait:"EntitySelector",category_id:i,limit:10},success:function(e){t.removeClass("loading"),e.success?n.createPreviewPopover({$badge:t,items:e.items||[],totalCount:e.count||0,hasMore:e.hasMore||!1,entityLabel:o,previewType:"category-items",context:{categoryId:i,categoryName:a,entityType:s},onLoadMore:function(e){n.loadMoreCategoryItems(e)},onFilter:function(e){n.filterCategoryItems(e)}}):(t.removeClass("popover-open"),n.$activeBadge=null)},error:function(){t.removeClass("loading popover-open"),n.$activeBadge=null}})},loadMoreCategoryItems:function(t){var i=this,a=this.previewContext;if(a&&a.categoryId){var s="categories"===a.entityType?"previewCategoryProducts":"previewCategoryPages";t.prop("disabled",!0).find("i").addClass("icon-spin"),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:s,trait:"EntitySelector",category_id:a.categoryId,offset:this.previewOffset,limit:10,query:this.previewFilterQuery||""},success:function(e){t.prop("disabled",!1).find("i").removeClass("icon-spin"),e.success&&e.items&&(i.appendPreviewItems(e.items),i.previewOffset+=e.items.length,e.hasMore||t.hide())},error:function(){t.prop("disabled",!1).find("i").removeClass("icon-spin")}})}},filterCategoryItems:function(t){var i=this,a=this.previewContext;if(a&&a.categoryId){var s="categories"===a.entityType?"previewCategoryProducts":"previewCategoryPages";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:s,trait:"EntitySelector",category_id:a.categoryId,query:t,limit:10},success:function(e){i.showFilterLoading(!1),e.success&&(i.replacePreviewItems(e.items||[],e.count||0,e.hasMore||!1),i.previewOffset=e.items?e.items.length:0,i.previewFilterQuery=t)},error:function(){i.showFilterLoading(!1)}})}else i.showFilterLoading(!1)},showPatternPreviewModal:function(t,i,a,s){var n=this,r=this.config.trans||{},o=this.config.blocks&&this.config.blocks[i]?this.config.blocks[i]:{},l=o.entity_label_plural||"items",c=o.entity_label||"item",d='<div class="pattern-preview-modal-overlay">';d+='<div class="pattern-preview-modal">',d+='<div class="pattern-preview-header">',d+='<span class="pattern-preview-title">',d+='<i class="icon-eye"></i> '+(r.preview||"Preview")+": <code>"+this.escapeHtml(t)+"</code>",d+="</span>",d+='<span class="pattern-preview-count">'+s+" "+(1===s?c:l)+"</span>",d+='<button type="button" class="pattern-preview-close"><i class="icon-times"></i></button>',d+="</div>",d+='<div class="pattern-preview-content">',d+='<div class="pattern-preview-loading"><i class="icon-spinner icon-spin"></i> '+(r.loading||"Loading...")+"</div>",d+="</div>",d+="</div>";var p=e(d+="</div>");e("body").append(p),p.find(".pattern-preview-close").on("click",function(){p.remove()}),p.on("click",function(t){e(t.target).hasClass("pattern-preview-modal-overlay")&&p.remove()}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewPatternMatches",trait:"TargetConditions",pattern:t,entity_type:i,case_sensitive:a?1:0,limit:50},success:function(e){if(e.success&&e.items){var t=e.items,i='<div class="pattern-preview-list">';if(0===t.length)i+='<div class="pattern-preview-empty">'+(r.no_matches||"No matches found")+"</div>";else{for(var a=0;a<t.length;a++){var o=t[a];i+='<div class="pattern-preview-item">',o.image&&(i+='<img src="'+n.escapeAttr(o.image)+'" alt="" class="preview-item-image">'),i+='<span class="preview-item-name">'+n.escapeHtml(o.name)+"</span>",o.id&&(i+='<span class="preview-item-id">#'+o.id+"</span>"),i+="</div>"}s>t.length&&(i+='<div class="pattern-preview-more">... '+(r.and||"and")+" "+(s-t.length)+" "+(r.more||"more")+"</div>")}i+="</div>",p.find(".pattern-preview-content").html(i)}else p.find(".pattern-preview-content").html('<div class="pattern-preview-error">'+(r.error_loading||"Error loading preview")+"</div>")},error:function(){p.find(".pattern-preview-content").html('<div class="pattern-preview-error">'+(r.error_loading||"Error loading preview")+"</div>")}})},refreshGroupPreviewIfOpen:function(e){this.$activeBadge&&this.$previewPopover},escapeHtml:function(e){return e?String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"):""},escapeAttr:function(e){return e?String(e).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"):""},showTotalPreviewPopover:function(t){var i=this,a=this.config.trans||{};this.hidePreviewPopover(),t.addClass("popover-open"),this.$activeBadge=t;var s=[];this.$wrapper.find(".target-block-tab.has-data").each(function(){var t=e(this),a=t.data("blockType"),n=t.find(".tab-badge").text().replace(/[^0-9]/g,""),r=parseInt(n,10)||0;if(r>0){i.config.blocks&&i.config.blocks[a]&&i.config.blocks[a];var o=t.find(".tab-label").prev("i").attr("class")||"icon-cube",l=t.find(".tab-label").text()||a;s.push({blockType:a,label:l,icon:o,count:r})}});var n=parseInt(t.find(".count-value").text(),10)||0,r='<div class="target-preview-popover total-preview-popover">';r+='<div class="preview-popover-header">',r+='<span class="preview-popover-title">'+(a.total_summary||"Selection Summary")+"</span>",r+='<span class="preview-popover-count">'+n+" "+(a.total_items||"total items")+"</span>",r+="</div>",r+='<div class="preview-popover-body">',r+='<ul class="total-summary-list">';for(var o=0;o<s.length;o++){var l=s[o];r+='<li class="total-summary-item" data-block-type="'+l.blockType+'">',r+='<i class="'+i.escapeAttr(l.icon)+'"></i>',r+='<span class="summary-item-label">'+i.escapeHtml(l.label)+"</span>",r+='<span class="summary-item-count">'+l.count+"</span>",r+="</li>"}r+="</ul>",r+="</div>";var c=e(r+="</div>");this.$previewPopover=c,c.on("click",".total-summary-item",function(){var t=e(this).data("blockType");i.hidePreviewPopover(),i.switchToBlock(t)}),e("body").append(c);var d=t.offset(),p=t.outerHeight(),u=c.outerWidth();c.css({position:"absolute",top:d.top+p+5,left:d.left-u/2+t.outerWidth()/2,zIndex:1e4});var h=e(window).width();c.offset().left+u>h-10&&c.css("left",h-u-10),c.offset().left<10&&c.css("left",10),c.hide().fadeIn(150)}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.tree={treeData:null,treeFlatData:null,loadCategoryTree:function(){var t=this,i=this.$dropdown.find(".dropdown-results"),a=this.config.trans||{},s=this.activeGroup?this.activeGroup.searchEntity:"categories";i.html('<div class="tree-loading"><i class="icon-spinner icon-spin"></i> '+this.escapeHtml(a.loading||"Loading...")+"</div>"),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getCategoryTree",trait:"EntitySelector",entity_type:s},success:function(e){e.success&&e.categories&&e.categories.length>0?(t.treeFlatData=e.categories,t.treeData=t.buildTreeStructure(e.categories),t.renderCategoryTree(i,s)):i.html('<div class="dropdown-empty">'+t.escapeHtml(a.no_categories||"No categories found")+"</div>")},error:function(){i.html('<div class="dropdown-error">'+t.escapeHtml(a.error_loading||"Failed to load categories")+"</div>")}})},buildTreeStructure:function(t){var i={},a=[];return t.forEach(function(t){i[t.id]=e.extend({},t,{children:[]})}),t.forEach(function(e){var t=i[e.id],s=parseInt(e.parent_id,10);s&&i[s]?i[s].children.push(t):a.push(t)}),a},renderCategoryTree:function(e,t){var i=this.config.trans||{},a=this.getSelectedIdsFromChips(),s='<div class="category-tree" data-entity-type="'+this.escapeAttr(t)+'">';s+='<div class="tree-toolbar">',s+='<button type="button" class="btn-expand-all" title="'+this.escapeAttr(i.expand_all||"Expand all")+'">',s+='<i class="icon-plus-square-o"></i> '+this.escapeHtml(i.expand_all||"Expand all"),s+="</button>",s+='<button type="button" class="btn-collapse-all" title="'+this.escapeAttr(i.collapse_all||"Collapse all")+'">',s+='<i class="icon-minus-square-o"></i> '+this.escapeHtml(i.collapse_all||"Collapse all"),s+="</button>",s+="</div>",s+='<div class="tree-items">',s+=this.renderTreeItems(this.treeData,0,a),s+="</div>",s+="</div>",e.html(s);var n=this.treeFlatData?this.treeFlatData.length:0,r=a.length,o=n+" "+("cms_categories"===t?"CMS categories":"categories");r>0&&(o+=" ("+r+" selected)"),this.$dropdown.find(".results-count").text(o),this.updateSelectChildrenButtons(this.$dropdown.find(".tree-item"))},renderTreeItems:function(e,t,i){var a=this,s="",n=this.config.trans||{};return e.forEach(function(e){var r=e.children&&e.children.length>0,o=-1!==i.indexOf(parseInt(e.id,10)),l=20*t,c="tree-item";r&&(c+=" has-children"),o&&(c+=" selected"),e.active||(c+=" inactive"),s+='<div class="'+c+'" data-id="'+e.id+'" ',s+='data-name="'+a.escapeAttr(e.name)+'" ',s+='data-level="'+t+'" ',s+='data-parent-id="'+(e.parent_id||0)+'">',s+='<span class="tree-indent" style="width: '+l+'px;"></span>',r?(s+='<span class="tree-toggle"><i class="icon-caret-down"></i></span>',s+='<button type="button" class="btn-select-children" title="'+a.escapeAttr(n.select_with_children||"Select with all children")+'">',s+='<i class="icon-check-square-o"></i>',s+="</button>"):s+='<span class="tree-toggle tree-leaf"></span>',s+='<span class="tree-checkbox"><i class="icon-check"></i></span>',s+='<span class="tree-icon"><i class="icon-folder"></i></span>',s+='<span class="tree-name">'+a.escapeHtml(e.name)+"</span>";var d=e.product_count||e.page_count||0;if(d>0){var p=e.page_count?n.pages||"pages":n.products||"products";s+='<span class="tree-count clickable" data-category-id="'+e.id+'" ',s+='title="'+a.escapeAttr(d+" "+p)+'">',s+='<i class="icon-eye"></i> '+d,s+="</span>"}e.active||(s+='<span class="tree-badge inactive">'+a.escapeHtml(n.inactive||"Inactive")+"</span>"),s+="</div>",r&&(s+='<div class="tree-children">',s+=a.renderTreeItems(e.children,t+1,i),s+="</div>")}),s},getSelectedIdsFromChips:function(){var t=[];if(!this.activeGroup)return t;var i=this.$wrapper.find('.target-block[data-block-type="'+this.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+this.activeGroup.groupIndex+'"]');return("include"===this.activeGroup.section?i.find(".include-picker"):i.find('.exclude-row[data-exclude-index="'+this.activeGroup.excludeIndex+'"]').find(".exclude-picker")).find(".entity-chip").each(function(){t.push(parseInt(e(this).data("id"),10))}),t},filterCategoryTree:function(t){var i=this.$dropdown.find(".category-tree");if(i.length){var a=i.find(".tree-item"),s=i.find(".tree-children");if(t=(t||"").toLowerCase().trim(),a.css("display",""),!t)return a.removeClass("filtered-out filter-match"),void s.removeClass("filter-expanded");a.addClass("filtered-out").removeClass("filter-match"),a.each(function(){var i=e(this);-1!==(i.data("name")||"").toLowerCase().indexOf(t)&&(i.removeClass("filtered-out"),i.parents(".tree-children").addClass("filter-expanded"),i.parents(".tree-item").removeClass("filtered-out"),i.next(".tree-children").find(".tree-item").removeClass("filtered-out"),i.next(".tree-children").addClass("filter-expanded"))})}},findTreeDescendants:function(e,t){var i=[],a=(parseInt(e.data("id"),10),parseInt(e.data("level"),10),e.next(".tree-children"));return a.length&&a.find(".tree-item").each(function(){i.push(this)}),i},updateSelectChildrenButtons:function(t){var i=this.config.trans||{};t.filter(".has-children").each(function(){var t=e(this),a=t.find(".btn-select-children");if(a.length){var s=t.next(".tree-children");if(s.length){var n=s.find(".tree-item"),r=t.hasClass("selected"),o=!0;n.each(function(){if(!e(this).hasClass("selected"))return o=!1,!1}),r&&o?(a.find("i").removeClass("icon-plus-square").addClass("icon-minus-square"),a.attr("title",i.deselect_with_children||"Deselect with all children")):(a.find("i").removeClass("icon-minus-square").addClass("icon-plus-square"),a.attr("title",i.select_with_children||"Select with all children"))}}})}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.validation={validateSelection:function(t,i,a,s){if(!this.activeGroup)return{valid:!0};var n=this.config.trans||{};t=parseInt(t,10);var r=this.$wrapper.find('.target-block[data-block-type="'+this.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+this.activeGroup.groupIndex+'"]'),o=this.getChipIds(r.find(".include-picker")),l=[];r.find(".exclude-row").each(function(){var t=e(this).find(".exclude-picker"),i=[];t.find(".entity-chip").each(function(){i.push(parseInt(e(this).data("id"),10))}),l=l.concat(i)});var c=this.checkIncludeExcludeConflict(t,i,a,o,l,n);if(!c.valid)return c;var d=this.checkRedundantSelection(t,i,a,o,l,n);if(!d.valid)return d;var p=this.activeGroup.searchEntity;if("categories"===p||"cms_categories"===p){var u=this.checkTreeConflicts(t,i,a,s,o,l,n);if(!u.valid)return u}return{valid:!0}},checkIncludeExcludeConflict:function(e,t,i,a,s,n){return"include"===i&&-1!==s.indexOf(e)?{valid:!1,type:"include_exclude_conflict",error:(n.error_in_exclude||'"{name}" is already in the exclude list. Remove it from exclude first.').replace("{name}",t)}:"exclude"===i&&-1!==a.indexOf(e)?{valid:!1,type:"include_exclude_conflict",error:(n.error_in_include||'"{name}" is already in the include list. Remove it from include first.').replace("{name}",t)}:{valid:!0}},checkRedundantSelection:function(e,t,i,a,s,n){return"include"===i&&-1!==a.indexOf(e)?{valid:!1,type:"redundant",error:(n.error_already_selected||'"{name}" is already selected.').replace("{name}",t)}:"exclude"===i&&-1!==s.indexOf(e)?{valid:!1,type:"redundant",error:(n.error_already_excluded||'"{name}" is already in an exclude list.').replace("{name}",t)}:{valid:!0}},checkTreeConflicts:function(e,t,i,a,s,n,r){if(!this.treeFlatData)return{valid:!0};a&&a.parentId&&parseInt(a.parentId,10);var o={};this.treeFlatData.forEach(function(e){o[parseInt(e.id,10)]=e});var l=this.getAncestorIds(e,o),c=this.getDescendantIds(e,o);if("include"===i){for(var d=0;d<l.length;d++)if(-1!==n.indexOf(l[d])){var p=o[l[d]]?o[l[d]].name:"Parent";return{valid:!1,type:"parent_excluded",error:(r.error_parent_excluded||'Cannot include "{name}" because its parent "{parent}" is excluded.').replace("{name}",t).replace("{parent}",p)}}for(var u=0;u<c.length;u++)if(-1!==n.indexOf(c[u])){var h=o[c[u]]?o[c[u]].name:"Child";return{valid:!1,type:"child_excluded",error:(r.error_child_excluded||'Cannot include "{name}" because its child "{child}" is excluded. Remove the child from exclude first.').replace("{name}",t).replace("{child}",h)}}}if("exclude"===i){for(var f=0;f<l.length;f++)if(-1!==s.indexOf(l[f])){var v=o[l[f]]?o[l[f]].name:"Parent";return{valid:!1,type:"parent_included",error:(r.error_parent_included||'Cannot exclude "{name}" because its parent "{parent}" is included. This would create a contradiction.').replace("{name}",t).replace("{parent}",v)}}for(var m=[],g=0;g<c.length;g++)if(-1!==s.indexOf(c[g])){var b=o[c[g]]?o[c[g]].name:"Child";m.push(b)}if(m.length>0)return{valid:!1,type:"children_included",error:(r.error_children_included||'Cannot exclude "{name}" because its children ({children}) are included. Remove them from include first.').replace("{name}",t).replace("{children}",m.slice(0,3).join(", ")+(m.length>3?"...":""))}}return{valid:!0}},getAncestorIds:function(e,t){for(var i=[],a=t[e];a&&a.parent_id;){var s=parseInt(a.parent_id,10);if(!s||!t[s])break;i.push(s),a=t[s]}return i},getDescendantIds:function(e,t){var i=[],a=this;return Object.keys(t).forEach(function(s){var n=t[s];if(parseInt(n.parent_id,10)===e){var r=parseInt(n.id,10);i.push(r);var o=a.getDescendantIds(r,t);i=i.concat(o)}}),i},getChipIds:function(t){var i=[];return t.find(".entity-chip").each(function(){i.push(parseInt(e(this).data("id"),10))}),i},validatePendingSelections:function(e,t){var i=this,a=[];return e&&e.length?(e.forEach(function(e){var s=i.validateSelection(e.id,e.name,t,e.data||{});s.valid||a.push({id:e.id,name:e.name,error:s.error,type:s.type})}),a):a},showValidationError:function(t){var i=(this.config.trans||{}).validation_error||"Selection Conflict";e(".es-validation-toast").remove();var a='<div class="es-validation-toast">';a+='<div class="es-toast-icon"><i class="icon-exclamation-triangle"></i></div>',a+='<div class="es-toast-content">',a+='<div class="es-toast-title">'+this.escapeHtml(i)+"</div>",a+='<div class="es-toast-message">'+this.escapeHtml(t)+"</div>",a+="</div>",a+='<button type="button" class="es-toast-close"><i class="icon-times"></i></button>';var s=e(a+="</div>");if(e("body").append(s),this.$dropdown&&this.$dropdown.hasClass("show")){var n=this.$dropdown.offset();s.css({position:"fixed",top:n.top-s.outerHeight()-10,left:n.left,zIndex:10001})}else s.css({position:"fixed",top:20,right:20,zIndex:10001});s.hide().fadeIn(200),setTimeout(function(){s.fadeOut(200,function(){e(this).remove()})},5e3),s.on("click",".es-toast-close",function(){s.fadeOut(200,function(){e(this).remove()})})},validateAndAddSelection:function(e,t,i,a,s){var n=this.validateSelection(t,i,s,a||{});return n.valid?(this.addSelection(e,t,i,a),!0):(this.showValidationError(n.error),!1)}}}(jQuery),function(e){"use strict";var t={instances:[],create:function(t){var i=function(){var t={config:{},$wrapper:null,$dropdown:null,activeGroup:null,searchTimeout:null,searchResults:[],searchTotal:0,searchOffset:0,searchQuery:"",isLoading:!1,loadMoreCount:20,viewMode:"list",currentSort:{field:"name",dir:"ASC"},refineQuery:"",refineNegate:!1,filters:{inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[]},filterableData:null,searchHistory:{},searchHistoryMax:10,searchHistoryKey:"targetConditionsSearchHistory",maxVisibleChips:20,$methodDropdownMenu:null,$methodDropdownSelect:null,$methodDropdownTrigger:null,$previewPopover:null,$activeBadge:null,$previewList:null,previewLoadedCount:0,previewBlockType:null,allPreviewData:null,countUpdateTimeout:null,init:function(t){if(this.config=e.extend({id:"target-conditions",name:"target_conditions",namePrefix:"target_",mode:"multi",blocks:{},ajaxUrl:"",trans:{}},t),this.$wrapper=e('[data-entity-selector-id="'+this.config.id+'"]'),this.$wrapper.length){"single"===this.config.mode&&(this.$wrapper.find(".btn-add-group").hide(),this.$wrapper.find(".group-excludes").hide(),this.$wrapper.find(".group-modifiers").hide());var i=this.$wrapper.closest(".form-group");i.addClass("condition-trait-fullwidth"),i.find(".col-lg-offset-3").removeClass("col-lg-offset-3"),this.createDropdown(),this.bindEvents(),this.loadExistingSelections(),this.loadSearchHistory(),this.initMethodDropdowns(),this.observeNewSelects();var a=this;setTimeout(function(){a.updateTabBadges(),a.updateAllConditionCounts()},100)}},observeNewSelects:function(){var t=this;"undefined"!=typeof MutationObserver&&new MutationObserver(function(i){i.forEach(function(i){i.addedNodes.length&&e(i.addedNodes).find(".include-method-select, .exclude-method-select").each(function(){t.enhanceMethodSelect(e(this))})})}).observe(this.$wrapper[0],{childList:!0,subtree:!0})},loadExistingSelections:function(){}},i=window._EntitySelectorMixins||{};return i.utils&&e.extend(t,i.utils),i.events&&e.extend(t,i.events),i.dropdown&&e.extend(t,i.dropdown),i.search&&e.extend(t,i.search),i.filters&&e.extend(t,i.filters),i.chips&&e.extend(t,i.chips),i.groups&&e.extend(t,i.groups),i.methods&&e.extend(t,i.methods),i.preview&&e.extend(t,i.preview),i.tree&&e.extend(t,i.tree),t}();return i.init(t),this.instances.push(i),i},init:function(e){return this.create(e)},validateAll:function(){for(var e=!0,t=0;t<this.instances.length;t++)this.instances[t].validate()||(e=!1);return e}};window.TargetConditions=t,e(document).ready(function(){e("[data-entity-selector-id]").each(function(){var i=e(this).data("config");i&&t.create(i)}),e(document).on("click",".target-tips-box .tips-header",function(t){t.preventDefault(),e(this).closest(".target-tips-box").toggleClass("expanded")}),e(document).on("submit","form",function(i){if(e(this).find(".target-conditions-trait[data-required]").length>0&&!t.validateAll())return i.preventDefault(),!1})})}(jQuery);
//# sourceMappingURL=entity-selector.min.js.map