1(function(f,_,m){const i={moreBtnTitle:"Еще",showMoreOnHover:false,alwaysVisibleElem:undefined,onBeforeCalc:function(){}
2,onBeforeOpen:function(){}
3,onOpen:function(){}
4,onBeforeClose:function(){}
5,onClose:function(){}
6,resizeDelay:50,minWidth:null}
7;const t=300;class s{constructor(t,e){this.elements=f(t);this.options=f.extend({}
8,i,e);this.resizeTimeoutObserver=null;this.resizeTimeoutWindow=null;this.observers=[];this.setupObserversInited=false;this.initialized=false;this.destroyed=false;if(this.options.minWidth&&this.options.minWidth>0){this.checkScreenWidth();this.setupWindowResizeHandler()}
9else{this.init()}
10}
11checkScreenWidth(){const t=f(_).width();const e=this.options.minWidth&&this.options.minWidth>0?t<=this.options.minWidth:false;if(e&&this.initialized){this.destroy()}
12if(e){return}
13if(!e&&!this.initialized){this.init()}
14else if(!e){this.redrawList()}
15}
16updateDocumentClickHandler(){f(m).off("click.cutList");f(m).on("click.cutList",this.documentClickHandler.bind(this))}
17documentClickHandler(t){if(!f(t.target).closest(".cut-list__dropdown").length){this.options.onBeforeClose(this.elements);f(".cut-list__dropdown.is-show").removeClass("is-show").find(".cut-list__more").hide().removeClass("is-top is-left");this.options.onClose(this.elements)}
18}
19init(){if(this.initialized){this.destroy()}
20this.elements.each((t,e)=>{const i=f(e);i.addClass("cut-list-ready");this.setup(i)}
21);this.initialized=true;this.destroyed=false;this.updateDocumentClickHandler();this.setupObservers()}
22setup(t){if(!t.find(".cut-list__dropdown").length){this.createDropdownElements(t)}
23t.addClass("cut-list").children().not(".cut-list__dropdown").each(function(t){f(this).attr("data-index",t).addClass("cut-list__elem")}
24);let e=t.find(".cut-list__elem").length;let i=t.find(this.options.alwaysVisibleElem+":first").index();if(t.find(this.options.alwaysVisibleElem).length>1){console.warn("Внимание! Вами назначено несколько alwaysVisibleElem, будет использоваться только первый.")}
25this.create(t,i,e);this.setEventHandlers(t)}
26createDropdownElements(t){t.append('<div style="display:none" class="cut-list__elem cut-list__dropdown"></div>').find(".cut-list__dropdown").append('<div class="cut-list__drop"></div>').find(".cut-list__drop").append(`<div class="cut-list__drop-toggle">${this.options.moreBtnTitle}
27</div>`).append('<div class="cut-list__more"><div class="cut-list__more-content"></div></div>')}
28setEventHandlers(t){const e=this.options;if(e.showMoreOnHover){this.addHoverHandlers(t)}
29else{this.addClickHandlers(t)}
30}
31addHoverHandlers(t){t.find(".cut-list__drop").off("mouseenter mouseleave").hover(()=>{t.find(".cut-list__dropdown").addClass("is-show");this.showMore(t.find(".cut-list__dropdown .cut-list__more"),t)}
32,()=>{this.options.onBeforeClose(t);t.find(".cut-list__dropdown").removeClass("is-show");this.hideMore(t.find(".cut-list__dropdown").find(".cut-list__more"));this.options.onClose(t)}
33)}
34addClickHandlers(i){i.find(".cut-list__drop-toggle").off("click.cutList").on("click.cutList",()=>{const t=i.find(".cut-list__dropdown");const e=t.toggleClass("is-show").hasClass("is-show");if(e){this.showMore(t.find(".cut-list__more"),i)}
35else{this.hideMore(t.find(".cut-list__more"))}
36}
37)}
38setupObservers(){this.removeObservers();this.elements.each((t,e)=>{const i=new ResizeObserver(()=>{if(this.setupObserversInited){clearTimeout(this.resizeTimeoutObserver);this.resizeTimeoutObserver=setTimeout(()=>{if(!this.destroyed){this.redrawList()}
39}
40,this.options.resizeDelay)}
...
</html>