vgapp 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -265,20 +265,22 @@ class VGFormSender extends BaseModule {
|
|
|
265
265
|
let $modal = Selectors.find('.' + _this._params.classes.alertModal);
|
|
266
266
|
if ($modal) $modal.remove();
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
268
|
+
setTimeout(() => {
|
|
269
|
+
let id = _this._params.classes.general + '-' + makeRandomString();
|
|
270
|
+
VGModal.init(id, {
|
|
271
|
+
classes: {
|
|
272
|
+
alert: _this._params.classes.alertModal
|
|
273
|
+
}
|
|
274
|
+
}, function (self) {
|
|
275
|
+
let element = self._element;
|
|
276
|
+
element.classList.add(_this._params.classes.alertModal);
|
|
276
277
|
|
|
277
|
-
|
|
278
|
-
|
|
278
|
+
let $body = Selectors.find('.vg-modal-body', element);
|
|
279
|
+
if ($body) $body.append(_this.setDataRelationStatus(element, status, data, 'modal'));
|
|
279
280
|
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
self.toggle();
|
|
282
|
+
});
|
|
283
|
+
}, 175)
|
|
282
284
|
}
|
|
283
285
|
|
|
284
286
|
_alertCollapse(data, status) {
|
package/build/vgapp.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var vg;(()=>{"use strict";var e={d:(t,s)=>{for(var a in s)e.o(s,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:s[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function s(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}e.r(t),e.d(t,{VGCollapse:()=>_e,VGDropdown:()=>Ue,VGFormSender:()=>yt,VGModal:()=>_t,VGNav:()=>je,VGRollup:()=>Et,VGSidebar:()=>ne});const a=e=>!!r(e)&&void 0!==e.nodeType,n=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"));function i(e){if(!a(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),s=e.closest("details:not([open])");if(!s)return t;if(s!==e){const t=e.closest("summary");if(t&&t.parentNode!==s)return!1;if(null===t)return!1}return t}function r(e){return e&&"object"==typeof e}function o(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function l(...e){const t=e=>e&&"object"==typeof e;return e.reduce(((e,s)=>(Object.keys(s).forEach((a=>{const n=e[a],i=s[a];Array.isArray(n)&&Array.isArray(i)?e[a]=n.concat(...i):t(n)&&t(i)?e[a]=l(n,i):e[a]=i})),e)),{})}function d(e,t=[],s=e){return"function"==typeof e?e(...t):s}const c="transitionend",m=e=>{e.offsetHeight},g=()=>{};function h(e=7){let t="";let s=0;for(;s<e;)t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random())),s+=1;return t}const u=()=>"rtl"===document.documentElement.dir,p=e=>{let t=e.getAttribute("data-vg-target");if(!t||"#"===t){let s=e.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s=`#${s.split("#")[1]}`),t=s&&"#"!==s?s.trim():null}return t?t.split(",").map((e=>(e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e))(e))).join(","):null},f={find:(e,t=document.documentElement)=>a(e)?e:Element.prototype.querySelector.call(t,e),findAll:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),getSelectorFromElement(e){const t=p(e);return t&&f.find(t)?t:null},getElementFromSelector(e){const t=p(e);return t?f.find(t):null},getMultipleElementsFromSelector(e){const t=p(e);return t?f.findAll(t):[]}},_=f,v=new Map,b={set(e,t,s){v.has(e)||v.set(e,new Map);const a=v.get(e);a.has(t)||0===a.size?a.set(t,s):console.error(`VGApp не допускает более одного экземпляра для каждого элемента. Связанный экземпляр: ${Array.from(a.keys())[0]}.`)},get:(e,t)=>v.has(e)&&v.get(e).get(t)||null,remove(e,t){if(!v.has(e))return;const s=v.get(e);s.delete(t),0===s.size&&v.delete(e)}},w={get(e,t="data",s=!0){if(!e)return{};if("data"===t){let t=["data-vg-toggle","data-vg-target","data-vg-dismiss"],a={},n=[].filter.call(e.attributes,(function(e){return/^data-/.test(e.name)}));return n.length&&n.forEach((function(e){let n=e.name;t.includes(n)||(s&&(n=n.slice(5)),a[n]=o(e.value))})),a}return"all"===t?e.getAttributeNames().reduce(((t,s)=>({...t,[s]:e.getAttribute(s)})),{}):e.getAttribute(t)},has:(e,t)=>e.hasAttribute(t),set(e,t,s){a(e)&&t&&e.setAttribute(t,s)},remove(e,t){a(e)&&t&&e.removeAttribute(t)}},y=class{constructor(e,t=null){this._params=this.merge(e,t)}get(){return this._params}fromElement(e){return a(e)?w.get(e):{}}merge(e,t){let s=l(e,this.fromElement(t));for(let e in s)if(-1!==e.indexOf("-")){let t=e.split("-"),a=o(s[e]);t[0]in s&&t[1]in s[t[0]]&&(s[t[0]][t[1]]=a),delete s[e]}return"params"in s&&(s=l(s,s.params),delete s.params),s}},k=/[^.]*(?=\..*)\.|.*/,x=/\..*/,L=/::\d+$/,E={};let A=1;const S={mouseenter:"mouseover",mouseleave:"mouseout"},T=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","submit","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function C(e,t){return t&&`${t}::${A++}`||e.uidEvent||A++}function M(e){const t=C(e);return e.uidEvent=t,E[t]=E[t]||{},E[t]}function O(e,t,s=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===s))}function $(e,t,s){const a="string"==typeof t,n=a?s:t||s;let i=(r=(r=e).replace(x,""),S[r]||r);var r;return T.has(i)||(i=e),[a,n,i]}function j(e,t,s,a,n){if("string"!=typeof t||!e)return;let[i,r,o]=$(t,s,a);if(t in S){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};r=e(r)}const l=M(e),d=l[o]||(l[o]={}),c=O(d,r,i?s:null);if(c)return void(c.oneOff=c.oneOff&&n);const m=C(r,t.replace(k,"")),g=i?function(e,t,s){return function a(n){const i=e.querySelectorAll(t);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(const o of i)if(o===r)return q(n,{delegateTarget:r}),a.oneOff&&D.off(e,n.type,t,s),s.apply(r,[n])}}(e,s,r):function(e,t){return function s(a){return q(a,{delegateTarget:e}),s.oneOff&&D.off(e,a.type,t),t.apply(e,[a])}}(e,r);g.delegationSelector=i?s:null,g.callable=r,g.oneOff=n,g.uidEvent=m,d[m]=g,e.addEventListener(o,g,i)}function N(e,t,s,a,n){const i=O(t[s],a,n);i&&(e.removeEventListener(s,i,Boolean(n)),delete t[s][i.uidEvent])}function P(e,t,s,a){const n=t[s]||{};for(const[i,r]of Object.entries(n))i.includes(a)&&N(e,t,s,r.callable,r.delegationSelector)}function q(e,t={}){for(const[s,a]of Object.entries(t))try{e[s]=a}catch{Object.defineProperty(e,s,{configurable:!0,get:()=>a})}return e}const D={on(e,t,s,a){j(e,t,s,a,!1)},one(e,t,s,a){j(e,t,s,a,!0)},off(e,t,s,a){if("string"!=typeof t||!e)return;const[n,i,r]=$(t,s,a),o=r!==t,l=M(e),d=l[r]||{},c=t.startsWith(".");if(void 0===i){if(c)for(const s of Object.keys(l))P(e,l,s,t.slice(1));for(const[s,a]of Object.entries(d)){const n=s.replace(L,"");o&&!t.includes(n)||N(e,l,r,a.callable,a.delegationSelector)}}else{if(!Object.keys(d).length)return;N(e,l,r,i,n?s:null)}},trigger(e,t,s){if("string"!=typeof t||!e)return null;const a=q(new Event(t,{bubbles:!0,cancelable:!0}),s);return e.dispatchEvent(a),a}},I=D,H=e=>({error:'<svg viewBox="0 0 87 87" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="ui-success" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Group-2" transform="translate(2.000000, 2.000000)"><circle id="Oval-2" stroke="rgba(252, 191, 191, .5)" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><circle class="ui-error-circle" stroke="#F74444" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><path class="ui-error-line1" d="M22.244224,22 L60.4279902,60.1837662" id="Line" stroke="#F74444" stroke-width="3" stroke-linecap="square"></path><path class="ui-error-line2" d="M60.755776,21 L23.244224,59.8443492" id="Line" stroke="#F74444" stroke-width="3" stroke-linecap="square"></path></g></g></svg>',success:'<svg viewBox="0 0 87 87" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="ui-error" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Group-3" transform="translate(2.000000, 2.000000)"><circle id="Oval-2" stroke="rgba(117, 183, 152, 0.4)" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><circle class="ui-success-circle" id="Oval-2" stroke="#A5DC86" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><polyline class="ui-success-path" id="Path-2" stroke="#A5DC86" stroke-width="4" points="19 38.8036813 31.1020744 54.8046875 63.299221 28"></polyline></g></g></svg>',waiting:'<svg viewBox="0 0 87 87" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="ui-waiting" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Group-3" transform="translate(2.000000, 2.000000)"><circle id="Oval-2" stroke="rgba(255, 218, 106, 0.4)" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><circle class="ui-waiting-circle" id="Oval-2" stroke="#ffda6a" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><path class="ui-waiting-line1" d="M43 63C54.598 63 64 53.598 64 42C64 30.402 54.598 21 43 21C31.402 21 22 30.402 22 42C22 53.598 31.402 63 43 63Z" stroke-width="3" stroke="#ffda6a" stroke-linecap="round" stroke-linejoin="round"/><path class="ui-waiting-line2" d="M40.6667 32.6641V44.3307H52.3334" stroke="#ffda6a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>',dots:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-three-dots-vertical" viewBox="0 0 16 16"><path d="M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/></svg>',cross:'<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 224.512 224.512" xml:space="preserve"><g><polygon points="224.507,6.997 217.521,0 112.256,105.258 6.998,0 0.005,6.997 105.263,112.254 0.005,217.512 6.998,224.512 112.256,119.24 217.521,224.512 224.507,217.512 119.249,112.254 "/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>'}[e]??{}),B=(e,t="hide")=>{const s=`click.dismiss.${e.EVENT_KEY}`,a=e.NAME;I.on(document,s,`[data-vg-dismiss="${a}"]`,(function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),n(this))return;const i=_.getSelectorFromElement(this)||this.closest(`.vg-${a}`);e.getOrCreateInstance(i)[t]()}))},F={x:function(){if("undefined"!=typeof XMLHttpRequest)return new XMLHttpRequest;let e,t=["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp.2.0","Microsoft.XmlHttp"];for(let s=0;s<t.length;s++)try{e=new ActiveXObject(t[s]);break}catch(e){}return e},send:function(e,t,s,a,n){void 0===n&&(n=!0);let i=F.x();i.open(s,e,n),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.onreadystatechange=function(){4===i.readyState&&(200===i.status?t("success",{text:i.statusText,response:i.responseText,code:i.status}):t("error",{text:i.statusText,response:i.responseText,code:i.status}))},i.send(a)},get:function(e,t,a,n){let i=[];if(!s(t))for(let e of t)i.push(encodeURIComponent(e[0])+"="+encodeURIComponent(e[1]));F.send(e+(i.length?"?"+i.join("&"):""),a,"GET",null,n)},post:function(e,t,s,a){F.send(e,s,"POST",t,a)}},R=class{constructor(e){if(e){if(this._element=_.find(e),!this._element)throw new Error("Товарищ! Первый параметр не должен быть пустым!");this._params={},b.set(this._element,this.constructor.NAME_KEY,this)}}_getParams(e,t){return new y(t,e).get()}dispose(){b.remove(this._element,this.constructor.NAME_KEY),I.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_route(e){const t=this;let s=null;const a=e=>{s&&(s.innerHTML=e)};t._params.hasOwnProperty("ajax")&&t._params.ajax.route&&(!1 in t._params.ajax&&(t._params.ajax.method="get"),"target"in t._params.ajax&&t._params.ajax.target&&(s=_.find(t._params.ajax.target)),"loader"in t._params.ajax&&t._params.ajax.loader&&a('<div class="vg-loader"></div>'),F[t._params.ajax.method](t._params.ajax.route,t._params.ajax.data||{},(function(t,s){a(s.response),d(e,[t,s])})))}_dismissElement(){let e=H("cross"),t=this._element.querySelector(".vg-btn-close");t&&(t.querySelector("svg")||t.insertAdjacentHTML("beforeend",e))}_queueCallback(e,t,s=!0,a){!function(e,t,s=!0,a){if(!s)return void d(e);const n=a||(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:s}=window.getComputedStyle(e);const a=Number.parseFloat(t),n=Number.parseFloat(s);return a||n?(t=t.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(s))):0})(t)+5;let i=!1;const r=({target:s})=>{s===t&&(i=!0,t.removeEventListener(c,r),d(e))};t.addEventListener(c,r),setTimeout((()=>{i||(e=>{e.dispatchEvent(new Event(c))})(t)}),n)}(e,t,s,a)}static getInstance(e){return b.get(_.find(e),this.NAME_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,s(t)?{}:t)}static get DATA_KEY(){return`vg.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}},X=class{static append(){document.body.style.paddingRight=function(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}()+"px",document.body.style.overflow="hidden"}static destroy(){document.body.style.overflow="",document.body.style.paddingRight="",w.get(document.body,"style")||w.remove(document.body,"style")}},z="vg-backdrop",W="fade";class Y{static show(e){Y._append(),d(e)}static hide(e){Y._destroy(),d(e)}static _append(){if(_.find("."+z))return!1;let e=document.createElement("div");e.classList.add(z),document.body.append(e),setTimeout((()=>{e.classList.add(W)}),50),I.on(e,"mousedown.vg.backdrop",(()=>{Y.hide(),X.destroy()}))}static _destroy(){let e=_.find("."+z);e&&(e.classList.remove(W),setTimeout((()=>{e.remove()}),500))}}const V=Y,G="vg.sidebar",K="show",U=`${G}.hide`,J=`${G}.hidden`,Z=`${G}.show`,Q=`${G}.shown`,ee=`keydown.dismiss.${G}`,te=`hidePrevented.${G}`,se=`click.${G}.data.api`;class ae extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({backdrop:!0,overflow:!0,keyboard:!0,ajax:{route:"",target:"",method:"get"}},t)),this._addEventListeners(),this._dismissElement()}static get NAME(){return"sidebar"}static get NAME_KEY(){return G}toggle(e){return this._isShown()?this.hide():this.show(e)}show(e){const t=this;n(t._element)||(this._route(),I.trigger(this._element,Z,{relatedTarget:e}).defaultPrevented||(t._params.backdrop&&V.show(),t._params.overflow&&X.append(),t._element.classList.add(K),this._queueCallback((()=>{I.on(_.find(".vg-backdrop"),"mousedown.vg.backdrop",(function(){t.hide()})),I.trigger(this._element,Q,{relatedTarget:e})}),this._element,!0,50)))}hide(){const e=this;n(e._element)||I.trigger(this._element,U).defaultPrevented||(e._params.backdrop&&V.hide((function(){e._params.overflow&&X.destroy()})),e._params.overflow&&X.destroy(),e._element.setAttribute("aria-expanded",!1),e._element.classList.remove(K),this._queueCallback((()=>I.trigger(this._element,J)),this._element,!0))}dispose(){super.dispose()}_isShown(){return this._element.classList.contains(K)}_addEventListeners(){I.on(document,ee,(e=>{"Escape"===e.key&&(this._params.keyboard?this.hide():I.trigger(this._element,te))}))}}B(ae),I.on(document,se,'[data-vg-toggle="sidebar"]',(function(e){const t=_.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),n(this))return;this.setAttribute("aria-expanded",!0),I.one(t,J,(()=>{this.setAttribute("aria-expanded",!1)}));const s=_.find(".vg-sidebar.show");s&&s!==t&&ae.getInstance(s).hide(),ae.getOrCreateInstance(t).toggle(this)}));const ne=ae,ie="vg.collapse",re="show",oe="vg-collapse",le="vg-collapsing",de=`:scope .${oe} .${oe}`,ce='[data-vg-toggle="collapse"]',me=`${ie}.hide`,ge=`${ie}.hidden`,he=`${ie}.show`,ue=`${ie}.shown`,pe=`click.${ie}.data.api`;class fe extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({toggle:!0,parent:null,ajax:{route:"",target:"",method:"get"}},t)),this._isTransitioning=!1,this._triggerArray=[];const s=_.findAll(ce);for(const e of s){const t=_.getSelectorFromElement(e),s=_.findAll(t).filter((e=>e===this._element));null!==t&&s.length&&this._triggerArray.push(e)}this._initializeChildren(),this._params.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._params.toggle&&this.toggle()}static get NAME(){return"collapse"}static get NAME_KEY(){return ie}toggle(e){return this._isShown()?this.hide():this.show(e)}show(){const e=this;if(e._isTransitioning||e._isShown())return;let t=[];if(!(e._params.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>fe.getOrCreateInstance(e,{toggle:!1})))),t.length&&t[0]._isTransitioning||I.trigger(e._element,he).defaultPrevented)){for(const e of t)e.hide();e._element.classList.remove(oe),e._element.classList.add(le),e._element.style.height=0,e._addAriaAndCollapsedClass(e._triggerArray,!0),e._isTransitioning=!0,e._route(),e._queueCallback((()=>{e._isTransitioning=!1,e._element.classList.remove(le),e._element.classList.add(oe,re),e._element.style.height="",I.trigger(e._element,ue)}),e._element,!0),e._element.style.height=`${e._element.scrollHeight}px`}}hide(){const e=this;if(!e._isTransitioning&&e._isShown()&&!I.trigger(e._element,me).defaultPrevented){e._element.style.height=`${this._element.getBoundingClientRect().height}px`,m(e._element),e._element.classList.add(le),e._element.classList.remove(oe,re);for(const t of e._triggerArray){const s=_.getElementFromSelector(t);s&&!e._isShown(s)&&e._addAriaAndCollapsedClass([t],!1)}e._isTransitioning=!0,e._element.style.height="",e._queueCallback((()=>{e._isTransitioning=!1,e._element.classList.remove(le),e._element.classList.add(oe),I.trigger(e._element,ge)}),e._element,!0)}}dispose(){super.dispose()}_isShown(e=this._element){return e.classList.contains(re)}_addAriaAndCollapsedClass(e,t){if(e.length)for(const s of e)this._changeStateButton(s,t)}_initializeChildren(){if(!this._params.parent)return;const e=this._getFirstLevelChildren(ce);for(const t of e){const e=_.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=_.find(de,this._params.parent);return _.find(e,this._params.parent).filter((e=>!t.includes(e)))}_changeStateButton(e,t){e.classList.toggle("vg-collapsed",!t),e.setAttribute("aria-expanded",t),e.innerHTML=w.get(e,`data-${t?"hide":"show"}-text`)||e.innerHTML}}I.on(document,pe,ce,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault(),_.getMultipleElementsFromSelector(this).forEach((function(e){fe.getOrCreateInstance(e,{toggle:!1}).toggle()}))}));const _e=fe,ve=class{constructor(){this.breakpoints={xs:0,sm:576,md:768,lg:992,xl:1200,xxl:1400,xxxl:1600}}static check(e){return(new this).define(e)}static checkMobileOrTablet(){let e=!1;var t;return t=navigator.userAgent||navigator.vendor||window.opera,(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.slice(0,4)))&&(e=!0),e}define(e){let t=window.innerWidth,s=this._checkResponsiveClass(e),a=this.breakpoints,n=Object.keys(a).find((e=>a[e]===s)),i=Object.keys(a),r=i.indexOf(n);return t>=a[i[r+1]]}_checkResponsiveClass(e){let t=e._element,s=e._params,a=0;return a=t.classList.contains(s.classes.XXXL)?this.breakpoints.xxxl:t.classList.contains(s.classes.XXL)?this.breakpoints.xxl:t.classList.contains(s.classes.XL)?this.breakpoints.xl:t.classList.contains(s.classes.LG)?this.breakpoints.lg:t.classList.contains(s.classes.MD)?this.breakpoints.md:t.classList.contains(s.classes.SM)?this.breakpoints.sm:(t.classList.contains(s.classes.XS),this.breakpoints.xs),a}},be="vg.nav",we="show",ye="fade",ke="active",xe=`${be}.hide`,Le=`${be}.hidden`,Ee=`${be}.show`,Ae=`${be}.shown`,Se=`mouseover.${be}.data.api`,Te=`mouseout.${be}.data.api`,Ce=`click.${be}.data.api`,Me=`keyup.${be}.data.api`,Oe=`resize.${be}.data.api`;class $e extends R{constructor(e,t={}){super(e),this._params=this._getParams(e,l({breakpoint:!1,placement:"horizontal",classes:{hamburgerActive:"vg-nav-hamburger-active",hamburgerAlways:"vg-nav-hamburger-always",hamburger:"vg-nav-hamburger",container:"vg-nav-container",wrapper:"vg-nav-wrapper",active:"vg-nav-active",expand:"vg-nav-expand",cloned:"vg-nav-cloned",hover:"vg-nav-hover",flip:"vg-nav-flip",XXXL:"vg-nav-xxxl",XXL:"vg-nav-xxl",XL:"vg-nav-xl",LG:"vg-nav-lg",MD:"vg-nav-md",SM:"vg-nav-sm",XS:"vg-nav-xs"},expand:!0,hover:!1,position:!0,collapse:!0,toggle:'<span class="default"></span>',hamburger:{enable:!0,always:!1,title:"",body:null},callback:g,animation:!0,timeoutAnimation:300,ajax:{route:"",target:"",method:"get"}},t)),this._navigation=null,this.navigation="."+this._params.classes.wrapper,this.movedLinks=[],this.$links=_.findAll("."+this._params.classes.wrapper+" > li",this.navigation),!1===this._params.animation&&(this._params.timeoutAnimation=10)}static get NAME(){return"nav"}static get NAME_KEY(){return be}get navigation(){return this._navigation}set navigation(e){let t=_.find(e,this._element);t&&(this._navigation=t)}build(){if(!this.navigation)return;let e=this._params;if(this._element.classList.add(e.classes.container),this._element.classList.add("vg-nav-"+e.placement),e.breakpoint||(e.expand=!1),e.hamburger.always?this._element.classList.add(e.classes.hamburgerAlways):e.breakpoint&&e.expand?!1!==e.breakpoint&&this._element.classList.add("vg-nav-"+e.breakpoint):this._element.classList.add(e.classes.expand),e.hover&&(this._element.classList.add(e.classes.hover),ve.checkMobileOrTablet()&&this._element.classList.remove(e.classes.hover)),e.expand&&!e.hamburger.body&&null===_.find("."+e.classes.hamburger,this._element)){let t="",s='<span class="'+e.classes.hamburger+'--lines"><span></span><span></span><span></span></span>';e.hamburger.title&&(t='<span class="'+e.classes.hamburger+'--title">'+e.hamburger.title+"</span>"),null!==e.hamburger.body&&(s=e.hamburger.body),this._element.insertAdjacentHTML("afterbegin",'<a href="#sidebar-nav" class="'+e.classes.hamburger+'" data-vg-toggle="sidebar">'+t+s+"</a>")}if(e.toggle){let t=[..._.findAll(".dropdown-mega > a, .dropdown > a",this._element)],s='<span class="toggle">'+e.toggle+"</span>";t.length&&t.forEach((function(e){e.querySelector(".toggle")||e.closest(".dots")||(e.setAttribute("aria-expanded","false"),e.insertAdjacentHTML("beforeend",s))}))}e.collapse&&ve.check(this)&&"vertical"!==e.placement&&function(e){let t=e.navigation.clientWidth,s=0,a=_.find(".dots",e.navigation),n=H("dots");if(e.$links.length){if(a)s=a.clientWidth;else{let t=_.find("a",e.$links[0]),a=getComputedStyle(t);s=o(a.paddingLeft.slice(0,-2))+o(a.paddingRight.slice(0,-2))+16}for(let n of e.$links)s+=n.getBoundingClientRect().width,t<s?(e.movedLinks.push(n),n.remove()):e.movedLinks.length&&(a?e.navigation.insertBefore(e.movedLinks[0],a):e.navigation.appendChild(e.movedLinks[0]),e.movedLinks.splice(0,1));e.movedLinks.length?a||e.navigation.insertAdjacentHTML("beforeend",'<li class="dropdown dots"><a href="#" aria-expanded="false">'+n+"</a></li>"):a&&a.remove();let i=e.navigation.querySelector(".dots");if(i&&e.movedLinks.length){let t=i.querySelector("ul");if(t)for(let s of e.movedLinks)t.prepend(s);else{let t=document.createElement("ul");t.classList.add("dropdown-content"),t.classList.add("right");for(let s of e.movedLinks)t.prepend(s);i.appendChild(t)}}}}(this),"afterInit"in this._params.callback&&d(this._params.callback.afterInit,[this])}show(e){let t=e.relatedTarget;if(!t||n(t))return;if(t.closest(".dropdown-content")||t.classList.add("first"),I.trigger(t,Ee,{relatedTarget:e}).defaultPrevented)return;let s=_.find(".dropdown-content",t),a=t.firstElementChild;a&&a.setAttribute("aria-expanded","true"),s.classList.add(we),t.classList.add(ke),function(e){let{width:t,right:s}=e.getBoundingClientRect(),a=window.innerWidth-s-t;e.classList.remove("right"),e.classList.remove("left");let n=e.closest("li").querySelectorAll("ul");if(a>t)for(const e of n)e.classList.add("left");else for(const e of n)e.classList.add("right")}(s),this._queueCallback((()=>{s.classList.add(ye),I.trigger(t,Ae,e)}),s,!0,50)}hide(e){const t=this;if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))I.off(e,"mouseover",g);let s=e.relatedTarget;if("elm"in e&&e.elm&&(s=e.elm),s){if(I.trigger(s,xe).defaultPrevented)return;s.classList.remove(ke),s.classList.contains("first")&&s.classList.remove("first"),[..._.findAll("."+we,s)].forEach((function(s,a){s.classList.remove(ye);let n=s.closest(".dropdown");n.classList.contains(ke)&&n.classList.remove(ke);let i=s.previousElementSibling;if(i&&i.setAttribute("aria-expanded","false"),0===a){const a=()=>{s.classList.remove(we),I.trigger(s,Le,e)};t._queueCallback(a,s,!0,500)}}))}}static init(e,t={}){const s=$e.getOrCreateInstance(e,t);s.build();let a=_.findAll(".dropdown",s._navigation);s._params.hover?[...a].forEach((function(e){let t=null;I.on(e,Se,(function(e){if(t)return;$e.hideOpenDrops(e);let a=e.target.closest(".dropdown");if(!a)return;if(!s.navigation.contains(a))return;t=a;let n={relatedTarget:a};s.show(n)})),I.on(e,Te,(function(e){if(!t)return;let a=e.relatedTarget.closest(".dropdown"),n=t;for(;a;){if(a===t)return;a=a.parentNode}t=null,s.hide({relatedTarget:a,elm:n})}))})):(I.on(document,Me,$e.clearDrops),I.on(document,Ce,$e.clearDrops),I.on(document,Ce,".vg-nav a",(function(e){if(!w.has(this,"aria-expanded"))return;"click"in s._params.callback&&d(s._params.callback.click,[this]),e.preventDefault();let t=this.closest(".vg-nav"),a=t.querySelector(".first"),r=this.closest(".dropdown");if(r&&(!n(r)||i(r))){if(a&&this.closest(".first")){if(r.classList.contains("active"))return void s.hide({relatedTarget:r})}else[..._.findAll(".active",t)].forEach((function(e){e&&e!==r&&s.hide({relatedTarget:e})}));s.show({relatedTarget:r})}})));const r=document.getElementById("sidebar-nav");let o=s._element.querySelector("."+s._params.classes.hamburger);r&&o&&(r.addEventListener("vg.sidebar.show",(function(){o.classList.add(s._params.classes.hamburgerActive)})),r.addEventListener("vg.sidebar.hide",(function(){o.classList.remove(s._params.classes.hamburgerActive)})))}static clearDrops(e){2===e.button||"keyup"===e.type&&"Tab"!==e.key||$e.hideOpenDrops(e)}static hideOpenDrops(e){const t=_.findAll(".dropdown:not(.disabled):not(:disabled).active");for(const s of t){const t=$e.getInstance(s.closest(".vg-nav"));if(!t)continue;if(e.target.closest(".first"))return;const a={relatedTarget:s};"click"===e.type&&(a.clickEvent=e),t.hide(a)}}}I.on(window,Oe,(function(e){$e.getOrCreateInstance(".vg-nav",{}).build()}));const je=$e,Ne=class{constructor(e={}){this.params=l({element:null,drop:null},e)}_getPlacement(){const e=this,t=e=>{let s=e.parentNode,a=getComputedStyle(s).overflow;return"BODY"===s.tagName?null:"visible"!==a?s:void t(s)};let s,a,n=!1,i=e.params.drop.getBoundingClientRect(),r=e.params.element.getBoundingClientRect();if(t(e.params.element))n=!0,s=i.top,a=i.left;else{let t=getComputedStyle(e.params.drop);s=o(t.top.slice(0,-2)),a=o(t.left.slice(0,-2))}return i.left+i.width>window.innerWidth&&(a=r.width-i.width),{isFixed:n,top:s,left:a}}},Pe="vg.dropdown",qe="show",De="fade",Ie="vg-dropdown-content",He='[data-vg-toggle="dropdown"]',Be=`${Pe}.hide`,Fe=`${Pe}.hidden`,Re=`${Pe}.show`,Xe=`${Pe}.shown`,ze=`keyup.${Pe}.data.api`,We=`keydown.${Pe}.data.api`,Ye=`click.${Pe}.data.api`,Ve=`mouseover.${Pe}.data.api`,Ge=`mouseout.${Pe}.data.api`;class Ke extends R{constructor(e,t){super(e,t);let s={offset:[0,2],over:!1,backdrop:!0,overflow:!0,keyboard:!0,placement:"bottom",animation:!0,timeoutAnimation:350,hover:!1,ajax:{route:"",target:"",method:"get"}};"offset"in t&&Array.isArray(t.offset)&&(s.offset=t.offset),this._params=this._getParams(e,l(s,t)),this._parent=this._element.parentNode,this._drop=_.find("."+Ie,this._parent),this._isPlacement=!1,!1===this._params.animation&&(this._params.timeoutAnimation=10)}static get NAME(){return"dropdown"}static get NAME_KEY(){return Pe}toggle(){return this._isShown()?this.hide():this.show()}show(){if(n(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!I.trigger(this._element,Re,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))I.on(e,"mouseover",g);this._route(),this._element.setAttribute("aria-expanded",!0),this._element.classList.add(qe),this._drop.classList.add(qe),this._setPlacement(),this._queueCallback((()=>{this._drop.classList.add(De),I.trigger(this._element,Xe,e)}),this._drop,!0,50)}}hide(){if(n(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){return super.dispose()}_isShown(){return this._element.classList.contains(qe)}_completeHide(e){if(!I.trigger(this._element,Be,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))I.off(e,"mouseover",g);this._drop.classList.remove(De),this._element.classList.remove(qe),this._element.setAttribute("aria-expanded","false"),this._queueCallback((()=>{this._drop.classList.remove(qe),I.trigger(this._element,Fe,e)}),this._parent,!0,this._params.timeoutAnimation)}}_setPlacement(){const e=this;if(!e._isPlacement){let t=new Ne({element:this._parent,drop:this._drop})._getPlacement();t.isFixed&&(e._drop.style.position="fixed",e._drop.style.transform="translateY(-20%)"),e._drop.style.left=t.left+"px",e._drop.style.top=t.top+"px"}e._params.offset&&(e._drop.style.paddingTop=e._params.offset[1]+"px",e._drop.style.paddingRight=e._params.offset[0]+"px"),e._isPlacement=!0}static init(e,t={}){const s=Ke.getOrCreateInstance(e,t);if(s._params.hover){let e=null;I.on(s._parent,Ve,(function(t){if(e)return;Ke.hideOpenToggles(t);let a=t.target.closest(".vg-dropdown");a&&s._parent.contains(a)&&(e=a,s.show())})),I.on(s._parent,Ge,(function(t){if(!e)return;let a=t.relatedTarget;for(;a;){if(a===e)return;a=a.parentNode}e=null,s._completeHide({relatedTarget:s._element})}))}else I.on(document,ze,He,Ke.keydownHandler),I.on(document,We,"."+Ie,Ke.keydownHandler),I.on(document,ze,Ke.clearDrops),I.on(document,Ye,Ke.clearDrops),I.on(e,Ye,(function(e){e.preventDefault(),s.toggle()}))}static hideOpenToggles(e){const t=_.findAll('[data-vg-toggle="dropdown"]:not(.disabled):not(:disabled).show');for(const s of t){const t=Ke.getInstance(s);if(!t)continue;if(e.target.closest("."+Ie)===t._drop)return;if(e.composedPath().includes(t._element))continue;const a={relatedTarget:t._element};"click"===e.type&&(a.clickEvent=e),t._completeHide(a)}}static keydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),s="Escape"===e.key,a=["ArrowUp","ArrowDown"].includes(e.key);if(!a&&!s)return;if(t&&!s)return;e.preventDefault();const n=this.matches(He)?this:_.find(He,e.delegateTarget.parentNode),i=Ke.getOrCreateInstance(n);if(a)return e.stopPropagation(),void i.show();i._isShown()&&(e.stopPropagation(),i.hide(),n.focus())}static clearDrops(e){2===e.button||"keyup"===e.type&&"Tab"!==e.key||Ke.hideOpenToggles(e)}}const Ue=Ke,Je=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ze=".sticky-top",Qe="padding-right",et="margin-right",tt=class{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Qe,(t=>t+e)),this._setElementAttributes(Je,Qe,(t=>t+e)),this._setElementAttributes(Ze,et,(t=>t-e))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Qe),this._resetElementAttributes(Je,Qe),this._resetElementAttributes(Ze,et)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,s){const a=this.getWidth();this._applyManipulationCallback(e,(e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+a)return;this._saveInitialAttribute(e,t);const n=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${s(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(e,t){const s=e.style.getPropertyValue(t);s&&w.get(e,t,s)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,(e=>{const s=w.get(e,t);null!==s?(w.remove(e,t),e.style.setProperty(t,s)):e.style.removeProperty(t)}))}_applyManipulationCallback(e,t){if(a(e))t(e);else for(const s of _.findAll(e,this._element))t(s)}},st="vg.modal",at="vg-modal-open",nt="show",it="vg-modal-static",rt=`${st}.hide`,ot=`${st}.hidden`,lt=`${st}.show`,dt=`${st}.shown`,ct=`${st}.resize`,mt=`keydown.dismiss.${st}`,gt=`hidePrevented.${st}`,ht=`click.${st}.data.api`,ut=`mousedown.dismiss${st}`,pt=`click.dismiss${st}`;class ft extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({backdrop:!0,focus:!0,keyboard:!0,fields:[],ajax:{route:"",target:"",method:"get",loader:!1},animation:{name:["animate__backInUp","animate__backOutUp"],duration:1e3,delay:1e3,repeat:1},classes:{general:"vg-modal",dialog:"vg-modal-dialog",content:"vg-modal-content",header:"vg-modal-header",title:"vg-modal-title",body:"vg-modal-body",footer:"vg-modal-footer",animated:"animate__animated"}},t)),this._button=null,this._dialog=_.find(".vg-modal-dialog",this._element),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new tt,this._addEventListeners(),this._dismissElement()}static get NAME(){return"modal"}static get NAME_KEY(){return st}static init(e,t,s){ft.build(e,t,s)}static build(e,t,s){if("string"!=typeof e)return;let a=document.createElement("div");a.classList.add("vg-modal","fade"),a.id=e;let n=document.createElement("div");n.classList.add("vg-modal-dialog");let i=document.createElement("div");i.classList.add("vg-modal-content");let r=document.createElement("button");w.set(r,"type","button"),w.set(r,"data-vg-dismiss","modal"),w.set(r,"data-vg-target","#"+e),w.set(r,"aria-label","close"),r.classList.add("vg-btn-close"),i.append(r);let o=document.createElement("div");o.classList.add("vg-modal-body"),i.append(o),n.append(i),a.append(n),document.body.append(a),d(s,[ft.getOrCreateInstance(a,t)])}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){n(this._element)||(this._route(),I.trigger(this._element,lt,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(at),this._addFieldsInModal(e),this._adjustDialog(),V.show((()=>this._showElement(e)))))}hide(){this._isShown&&!this._isTransitioning&&(I.trigger(this._element,rt).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._element.classList.remove(nt),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,V.hide((()=>{document.body.classList.remove(at),this._resetAdjustments(),this._scrollBar.reset(),I.trigger(this._element,ot)}))}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const t=_.find(".vg-modal-body",this._dialog);t&&(t.scrollTop=0),m(this._element),this._element.classList.add(nt),this._queueCallback((()=>{this._params.focus,this._isTransitioning=!1,I.trigger(this._element,dt,{relatedTarget:e})}),this._dialog,this._isAnimated())}_isAnimated(){return this._element.classList.contains("fade")}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),s=t>0;if(s&&!e){const e=u()?"paddingLeft":"paddingRight";this._element.style[e]=`${t}px`}if(!s&&e){const e=u()?"paddingRight":"paddingLeft";this._element.style[e]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}_addEventListeners(){I.on(this._element,mt,(e=>{"Escape"===e.key&&(this._params.keyboard?this.hide():this._triggerBackdropTransition())})),I.on(window,ct,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),I.on(this._element,ut,(e=>{I.one(this._element,pt,(t=>{this._element===e.target&&this._element===t.target&&("static"!==this._params.backdrop?this._params.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_triggerBackdropTransition(){if(I.trigger(this._element,gt).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;"hidden"===t||this._element.classList.contains(it)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(it),this._queueCallback((()=>{this._element.classList.remove(it),this._queueCallback((()=>{this._element.style.overflowY=t}),this._dialog)}),this._dialog),this._element.focus())}_addFieldsInModal(e){this._params=this._getParams(e,this._params),this._params.fields.length&&this._params.fields.forEach((function(e){if(!1 in e&&!1 in e)return;let t=_.findAll("[data-"+e.name+"]");if(t.length)for(const s of t)switch(s.tagName){case"INPUT":s.value=e.value;break;case"IMG":w.set(s,"src",e.value);break;default:s.innerHTML=e.value}}))}}B(ft),I.on(document,ht,'[data-vg-toggle="modal"]',(function(e){const t=_.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),I.one(t,lt,(e=>{e.defaultPrevented||I.one(t,ot,(()=>{i(this)&&this.focus()}))}));const s=_.find(".vg-modal.show");s&&ft.getInstance(s).hide(),ft.getOrCreateInstance(t).toggle(this)}));const _t=ft,vt="vg.fs",bt=`submit.${vt}.data.api`;class wt extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({redirect:"",validate:!1,submit:!1,fields:[],alert:{enabled:!0,type:"modal"},ajax:{route:"",target:"",method:"get"},classes:{general:"vg-form-sender",alertCollapse:"vg-form-sender-collapse",alertModal:"vg-form-sender-modal",validation:"needs-validation",wasValidate:"was-validated"}},t)),this._params.ajax.route=w.get(this._element,"action").toLowerCase(),this._params.ajax.method=w.get(this._element,"method").toLowerCase(),this._button=_.find('[type="submit"]',this._element)||_.find('[form="'+this._element.id+'"]')||null,this._params.isBtnText="false"!==w.get(this._element,"data-btn-text"),this._params.isJsonParse="false"!==w.get(this._element,"data-json-parse"),this._params.isShowPass="true"===w.get(this._element,"data-show-pass")}static get NAME(){return"form-sender"}static get NAME_KEY(){return vt}build(){return this._element.classList.add(this._params.classes.general),this._params.validate&&(w.set(this._element,"novalidate",""),this._element.classList.add(this._params.classes.validation)),this}request(e,t){const s=this;s._alertBefore(),s._params.ajax.data=e,s._route((function(e,a){s._element.classList.remove("was-validated"),s._params.alert.enabled&&("string"==typeof e&&"error"===e?s._alertError(t,a):"string"==typeof e&&"success"===e&&s._alertSuccess(t,a)),s._params.redirect&&(window.location.href=s._params.redirect)}))}_alertBefore(){const e=this;"collapse"===e._params.alert.type&&[...document.getElementsByClassName(e._params.classes.alertCollapse)].forEach((function(e){e&&e.classList.contains("show")&&_e.getOrCreateInstance(e,{toggle:!1}).hide()})),e._statusButton("before"),I.trigger(e._element,"vg.fs.before",e)}_alertError(e,t){const s=this;s._statusButton("after"),s._jsonParse(t,"error"),I.trigger(s._element,"vg.fs.error",[e,s,t])}_alertSuccess(e,t){const s=this;s._statusButton("after"),s._jsonParse(t,"success"),I.trigger(s._element,"vg.fs.success",[e,s,t])}_statusButton(e){const t=this;if(!t._button)return;let s=t._button,a={send:"Отправляем...",text:"Отправить"};if(w.has(t._button,"data-spinner")&&"before"===e&&t._button.insertAdjacentHTML("afterbegin",'<span class="spinner-border spinner-border-sm me-2"></span>'),w.has(t._button,"data-text"))a.text=w.get(t._button,"data-text");else{let e=t._button.querySelector("[data-text]");e&&(a.text=w.get(e,"data-text"),s=e)}if(w.has(t._button,"data-text-send"))a.send=w.get(t._button,"data-text-send");else{let e=t._button.querySelector("[data-text-send]");e&&(a.send=w.get(e,"data-text-send"),s=e)}if("before"===e&&(t._params.isBtnText&&(s.innerHTML=a.send),w.set(t._button,"disabled","disabled")),"after"===e){t._params.isBtnText&&(s.innerHTML=a.text),w.remove(t._button,"disabled");let e=t._button.querySelector(".spinner-border");e&&e.remove()}}_jsonParse(e,t){const s=this;if(s._params.isJsonParse&&"string"==typeof e){let a={};try{a=JSON.parse(e),s.alert(a,t)}catch(a){s.alert(e,t)}}else s.alert(e,t)}alert(e,t){const s=this;if(r(e)&&"code"in e&&e.code&&200===e.code&&"response"in e&&e.response){let s=o(e.response);"string"==typeof s?-1===s.indexOf("Parse error")&&-1===s.indexOf("syntax error")||(t="error",e={response:{title:"Error",message:"Something went wrong, please repeat later"},text:"Something went wrong, please repeat later"}):"errors"in s&&o(s.errors)&&(t=o(s.errors)?"error":"success")}s._params.alert.enabled&&("modal"===s._params.alert.type&&s._alertModal(e,t),"collapse"===s._params.alert.type&&s._alertCollapse(e,t))}_alertModal(e,t){const s=this;[...document.getElementsByClassName("modal")].forEach((function(e){e&&e.classList.contains("show")&&bootstrap.Modal.getOrCreateInstance(e).hide()})),[...document.getElementsByClassName("vg-modal")].forEach((function(e){e&&e.classList.contains("show")&&_t.getOrCreateInstance(e).hide()}));let a=_.find("."+s._params.classes.alertModal);a&&a.remove();let n=s._params.classes.general+"-"+h();_t.init(n,{classes:{alert:s._params.classes.alertModal}},(function(a){let n=a._element;n.classList.add(s._params.classes.alertModal);let i=_.find(".vg-modal-body",n);i&&i.append(s.setDataRelationStatus(n,t,e,"modal")),a.toggle()}))}_alertCollapse(e,t){const s=this;let a=_.find("."+s._params.classes.alertCollapse);a||(a=document.createElement("div"),a.classList.add(s._params.classes.alertCollapse),a.classList.add("vg-collapse"),a.id=s._params.classes.general+"-"+h(),a.append(s.setDataRelationStatus(a,t,e,"collapse")),s._element.prepend(a)),_e.getOrCreateInstance(a,{toggle:!1}).toggle()}setDataRelationStatus(e,t,s,a){let n=_.find(".vg-alert-"+t,e);if(r(s)){if("error"===t&&"code"in s&&200!==s.code&&"text"in s&&!s.text)switch(s.text="Something went wrong, please repeat later",s.code){case 400:s.text="Bad Request";break;case 401:case 403:s.text="Unauthorized";break;case 413:s.text="Forbidden";break;case 404:s.text="Not Found";break;case 422:s.text="Unprocessable Entity";break;case 500:s.text="Internal Server Error";break;case 504:s.text="Gateway Timeout"}if("response"in s){let e=o(s.response),a="",n="",i="";if("string"!=typeof e){if(!("view"in e)){if("title"in e&&(a=e.title),"error"===t&&200!==s.code&&(i=" "+s.text+" ("+s.code+")"),n+='<h4 class="vg-alert-content--title">'+a+i+"</h4>","message"in e&&(n+='<div class="vg-alert-content--message">'+e.message+"</div>"),"errors"in e){let t=o(e.errors)||null;if(r(t))for(const e in t)Array.isArray(t[e])?t[e].forEach((function(e){n+="<div>"+e+"</div>"})):n="<div>"+t[e]+"</div>"}s={view:n}}}else s.view=e}}if(n)_.find(".vg-alert-content--text",n).innerHTML=s.view;else{n=document.createElement("div"),n.classList.add("vg-alert","vg-alert-"+t,"vg-alert-"+a);let e=document.createElement("div");e.classList.add("vg-alert-content");let i=document.createElement("div");i.classList.add("vg-alert-content--icon");let r=document.createElement("i");r.innerHTML=H(t),i.append(r),e.append(i);let o=document.createElement("div");o.classList.add("vg-alert-content--text"),o.innerHTML=s.view,e.append(o),n.append(e)}return n}static init(e,t={}){wt.getOrCreateInstance(e,t).build()}}I.on(document,bt,(function(e){if(!w.has(e.target,"data-vgformsender"))return;const t=wt.getOrCreateInstance(e.target,{});if(t){if(t._params.validate&&!t._element.checkValidity())return e.preventDefault(),e.stopPropagation(),t._element.classList.add(t._params.classes.wasValidate),!1;if(!t._params.submit){e.preventDefault();let s=new FormData(t._element);return t.request(s,e)}}}));const yt=wt,kt="vg.rollup",xt=`click.${kt}.data.api`;class Lt extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({},t))}static get NAME(){return"rollup"}static get NAME_KEY(){return kt}static init(e,t={}){Lt.getOrCreateInstance(e,t).build()}build(){}toggle(e){return this._isShown()?this.hide():this.show(e)}show(e){}_isShown(){return this._element.classList.contains("show")}}I.on(document,xt,'[data-vg-toggle="rollup"]',(function(e){const t=_.getElementFromSelector(this);t&&(["A","AREA"].includes(this.tagName)&&e.preventDefault(),n(this)||(this.setAttribute("aria-expanded",!0),Lt.getOrCreateInstance(t).toggle(this)))}));const Et=Lt;vg=t})();
|
|
1
|
+
var vg;(()=>{"use strict";var e={d:(t,s)=>{for(var a in s)e.o(s,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:s[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function s(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}e.r(t),e.d(t,{VGCollapse:()=>_e,VGDropdown:()=>Ue,VGFormSender:()=>yt,VGModal:()=>_t,VGNav:()=>je,VGRollup:()=>Et,VGSidebar:()=>ne});const a=e=>!!r(e)&&void 0!==e.nodeType,n=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"));function i(e){if(!a(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),s=e.closest("details:not([open])");if(!s)return t;if(s!==e){const t=e.closest("summary");if(t&&t.parentNode!==s)return!1;if(null===t)return!1}return t}function r(e){return e&&"object"==typeof e}function o(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function l(...e){const t=e=>e&&"object"==typeof e;return e.reduce(((e,s)=>(Object.keys(s).forEach((a=>{const n=e[a],i=s[a];Array.isArray(n)&&Array.isArray(i)?e[a]=n.concat(...i):t(n)&&t(i)?e[a]=l(n,i):e[a]=i})),e)),{})}function d(e,t=[],s=e){return"function"==typeof e?e(...t):s}const c="transitionend",m=e=>{e.offsetHeight},g=()=>{};function h(e=7){let t="";let s=0;for(;s<e;)t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random())),s+=1;return t}const u=()=>"rtl"===document.documentElement.dir,p=e=>{let t=e.getAttribute("data-vg-target");if(!t||"#"===t){let s=e.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s=`#${s.split("#")[1]}`),t=s&&"#"!==s?s.trim():null}return t?t.split(",").map((e=>(e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e))(e))).join(","):null},f={find:(e,t=document.documentElement)=>a(e)?e:Element.prototype.querySelector.call(t,e),findAll:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),getSelectorFromElement(e){const t=p(e);return t&&f.find(t)?t:null},getElementFromSelector(e){const t=p(e);return t?f.find(t):null},getMultipleElementsFromSelector(e){const t=p(e);return t?f.findAll(t):[]}},_=f,v=new Map,b={set(e,t,s){v.has(e)||v.set(e,new Map);const a=v.get(e);a.has(t)||0===a.size?a.set(t,s):console.error(`VGApp не допускает более одного экземпляра для каждого элемента. Связанный экземпляр: ${Array.from(a.keys())[0]}.`)},get:(e,t)=>v.has(e)&&v.get(e).get(t)||null,remove(e,t){if(!v.has(e))return;const s=v.get(e);s.delete(t),0===s.size&&v.delete(e)}},w={get(e,t="data",s=!0){if(!e)return{};if("data"===t){let t=["data-vg-toggle","data-vg-target","data-vg-dismiss"],a={},n=[].filter.call(e.attributes,(function(e){return/^data-/.test(e.name)}));return n.length&&n.forEach((function(e){let n=e.name;t.includes(n)||(s&&(n=n.slice(5)),a[n]=o(e.value))})),a}return"all"===t?e.getAttributeNames().reduce(((t,s)=>({...t,[s]:e.getAttribute(s)})),{}):e.getAttribute(t)},has:(e,t)=>e.hasAttribute(t),set(e,t,s){a(e)&&t&&e.setAttribute(t,s)},remove(e,t){a(e)&&t&&e.removeAttribute(t)}},y=class{constructor(e,t=null){this._params=this.merge(e,t)}get(){return this._params}fromElement(e){return a(e)?w.get(e):{}}merge(e,t){let s=l(e,this.fromElement(t));for(let e in s)if(-1!==e.indexOf("-")){let t=e.split("-"),a=o(s[e]);t[0]in s&&t[1]in s[t[0]]&&(s[t[0]][t[1]]=a),delete s[e]}return"params"in s&&(s=l(s,s.params),delete s.params),s}},k=/[^.]*(?=\..*)\.|.*/,x=/\..*/,L=/::\d+$/,E={};let A=1;const S={mouseenter:"mouseover",mouseleave:"mouseout"},T=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","submit","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function C(e,t){return t&&`${t}::${A++}`||e.uidEvent||A++}function M(e){const t=C(e);return e.uidEvent=t,E[t]=E[t]||{},E[t]}function O(e,t,s=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===s))}function $(e,t,s){const a="string"==typeof t,n=a?s:t||s;let i=(r=(r=e).replace(x,""),S[r]||r);var r;return T.has(i)||(i=e),[a,n,i]}function j(e,t,s,a,n){if("string"!=typeof t||!e)return;let[i,r,o]=$(t,s,a);if(t in S){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};r=e(r)}const l=M(e),d=l[o]||(l[o]={}),c=O(d,r,i?s:null);if(c)return void(c.oneOff=c.oneOff&&n);const m=C(r,t.replace(k,"")),g=i?function(e,t,s){return function a(n){const i=e.querySelectorAll(t);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(const o of i)if(o===r)return q(n,{delegateTarget:r}),a.oneOff&&D.off(e,n.type,t,s),s.apply(r,[n])}}(e,s,r):function(e,t){return function s(a){return q(a,{delegateTarget:e}),s.oneOff&&D.off(e,a.type,t),t.apply(e,[a])}}(e,r);g.delegationSelector=i?s:null,g.callable=r,g.oneOff=n,g.uidEvent=m,d[m]=g,e.addEventListener(o,g,i)}function N(e,t,s,a,n){const i=O(t[s],a,n);i&&(e.removeEventListener(s,i,Boolean(n)),delete t[s][i.uidEvent])}function P(e,t,s,a){const n=t[s]||{};for(const[i,r]of Object.entries(n))i.includes(a)&&N(e,t,s,r.callable,r.delegationSelector)}function q(e,t={}){for(const[s,a]of Object.entries(t))try{e[s]=a}catch{Object.defineProperty(e,s,{configurable:!0,get:()=>a})}return e}const D={on(e,t,s,a){j(e,t,s,a,!1)},one(e,t,s,a){j(e,t,s,a,!0)},off(e,t,s,a){if("string"!=typeof t||!e)return;const[n,i,r]=$(t,s,a),o=r!==t,l=M(e),d=l[r]||{},c=t.startsWith(".");if(void 0===i){if(c)for(const s of Object.keys(l))P(e,l,s,t.slice(1));for(const[s,a]of Object.entries(d)){const n=s.replace(L,"");o&&!t.includes(n)||N(e,l,r,a.callable,a.delegationSelector)}}else{if(!Object.keys(d).length)return;N(e,l,r,i,n?s:null)}},trigger(e,t,s){if("string"!=typeof t||!e)return null;const a=q(new Event(t,{bubbles:!0,cancelable:!0}),s);return e.dispatchEvent(a),a}},I=D,H=e=>({error:'<svg viewBox="0 0 87 87" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="ui-success" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Group-2" transform="translate(2.000000, 2.000000)"><circle id="Oval-2" stroke="rgba(252, 191, 191, .5)" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><circle class="ui-error-circle" stroke="#F74444" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><path class="ui-error-line1" d="M22.244224,22 L60.4279902,60.1837662" id="Line" stroke="#F74444" stroke-width="3" stroke-linecap="square"></path><path class="ui-error-line2" d="M60.755776,21 L23.244224,59.8443492" id="Line" stroke="#F74444" stroke-width="3" stroke-linecap="square"></path></g></g></svg>',success:'<svg viewBox="0 0 87 87" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="ui-error" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Group-3" transform="translate(2.000000, 2.000000)"><circle id="Oval-2" stroke="rgba(117, 183, 152, 0.4)" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><circle class="ui-success-circle" id="Oval-2" stroke="#A5DC86" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><polyline class="ui-success-path" id="Path-2" stroke="#A5DC86" stroke-width="4" points="19 38.8036813 31.1020744 54.8046875 63.299221 28"></polyline></g></g></svg>',waiting:'<svg viewBox="0 0 87 87" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="ui-waiting" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Group-3" transform="translate(2.000000, 2.000000)"><circle id="Oval-2" stroke="rgba(255, 218, 106, 0.4)" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><circle class="ui-waiting-circle" id="Oval-2" stroke="#ffda6a" stroke-width="4" cx="41.5" cy="41.5" r="41.5"></circle><path class="ui-waiting-line1" d="M43 63C54.598 63 64 53.598 64 42C64 30.402 54.598 21 43 21C31.402 21 22 30.402 22 42C22 53.598 31.402 63 43 63Z" stroke-width="3" stroke="#ffda6a" stroke-linecap="round" stroke-linejoin="round"/><path class="ui-waiting-line2" d="M40.6667 32.6641V44.3307H52.3334" stroke="#ffda6a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>',dots:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-three-dots-vertical" viewBox="0 0 16 16"><path d="M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/></svg>',cross:'<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 224.512 224.512" xml:space="preserve"><g><polygon points="224.507,6.997 217.521,0 112.256,105.258 6.998,0 0.005,6.997 105.263,112.254 0.005,217.512 6.998,224.512 112.256,119.24 217.521,224.512 224.507,217.512 119.249,112.254 "/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>'}[e]??{}),B=(e,t="hide")=>{const s=`click.dismiss.${e.EVENT_KEY}`,a=e.NAME;I.on(document,s,`[data-vg-dismiss="${a}"]`,(function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),n(this))return;const i=_.getSelectorFromElement(this)||this.closest(`.vg-${a}`);e.getOrCreateInstance(i)[t]()}))},F={x:function(){if("undefined"!=typeof XMLHttpRequest)return new XMLHttpRequest;let e,t=["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp.2.0","Microsoft.XmlHttp"];for(let s=0;s<t.length;s++)try{e=new ActiveXObject(t[s]);break}catch(e){}return e},send:function(e,t,s,a,n){void 0===n&&(n=!0);let i=F.x();i.open(s,e,n),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.onreadystatechange=function(){4===i.readyState&&(200===i.status?t("success",{text:i.statusText,response:i.responseText,code:i.status}):t("error",{text:i.statusText,response:i.responseText,code:i.status}))},i.send(a)},get:function(e,t,a,n){let i=[];if(!s(t))for(let e of t)i.push(encodeURIComponent(e[0])+"="+encodeURIComponent(e[1]));F.send(e+(i.length?"?"+i.join("&"):""),a,"GET",null,n)},post:function(e,t,s,a){F.send(e,s,"POST",t,a)}},R=class{constructor(e){if(e){if(this._element=_.find(e),!this._element)throw new Error("Товарищ! Первый параметр не должен быть пустым!");this._params={},b.set(this._element,this.constructor.NAME_KEY,this)}}_getParams(e,t){return new y(t,e).get()}dispose(){b.remove(this._element,this.constructor.NAME_KEY),I.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_route(e){const t=this;let s=null;const a=e=>{s&&(s.innerHTML=e)};t._params.hasOwnProperty("ajax")&&t._params.ajax.route&&(!1 in t._params.ajax&&(t._params.ajax.method="get"),"target"in t._params.ajax&&t._params.ajax.target&&(s=_.find(t._params.ajax.target)),"loader"in t._params.ajax&&t._params.ajax.loader&&a('<div class="vg-loader"></div>'),F[t._params.ajax.method](t._params.ajax.route,t._params.ajax.data||{},(function(t,s){a(s.response),d(e,[t,s])})))}_dismissElement(){let e=H("cross"),t=this._element.querySelector(".vg-btn-close");t&&(t.querySelector("svg")||t.insertAdjacentHTML("beforeend",e))}_queueCallback(e,t,s=!0,a){!function(e,t,s=!0,a){if(!s)return void d(e);const n=a||(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:s}=window.getComputedStyle(e);const a=Number.parseFloat(t),n=Number.parseFloat(s);return a||n?(t=t.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(s))):0})(t)+5;let i=!1;const r=({target:s})=>{s===t&&(i=!0,t.removeEventListener(c,r),d(e))};t.addEventListener(c,r),setTimeout((()=>{i||(e=>{e.dispatchEvent(new Event(c))})(t)}),n)}(e,t,s,a)}static getInstance(e){return b.get(_.find(e),this.NAME_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,s(t)?{}:t)}static get DATA_KEY(){return`vg.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}},X=class{static append(){document.body.style.paddingRight=function(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}()+"px",document.body.style.overflow="hidden"}static destroy(){document.body.style.overflow="",document.body.style.paddingRight="",w.get(document.body,"style")||w.remove(document.body,"style")}},z="vg-backdrop",W="fade";class Y{static show(e){Y._append(),d(e)}static hide(e){Y._destroy(),d(e)}static _append(){if(_.find("."+z))return!1;let e=document.createElement("div");e.classList.add(z),document.body.append(e),setTimeout((()=>{e.classList.add(W)}),50),I.on(e,"mousedown.vg.backdrop",(()=>{Y.hide(),X.destroy()}))}static _destroy(){let e=_.find("."+z);e&&(e.classList.remove(W),setTimeout((()=>{e.remove()}),500))}}const V=Y,G="vg.sidebar",K="show",U=`${G}.hide`,J=`${G}.hidden`,Z=`${G}.show`,Q=`${G}.shown`,ee=`keydown.dismiss.${G}`,te=`hidePrevented.${G}`,se=`click.${G}.data.api`;class ae extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({backdrop:!0,overflow:!0,keyboard:!0,ajax:{route:"",target:"",method:"get"}},t)),this._addEventListeners(),this._dismissElement()}static get NAME(){return"sidebar"}static get NAME_KEY(){return G}toggle(e){return this._isShown()?this.hide():this.show(e)}show(e){const t=this;n(t._element)||(this._route(),I.trigger(this._element,Z,{relatedTarget:e}).defaultPrevented||(t._params.backdrop&&V.show(),t._params.overflow&&X.append(),t._element.classList.add(K),this._queueCallback((()=>{I.on(_.find(".vg-backdrop"),"mousedown.vg.backdrop",(function(){t.hide()})),I.trigger(this._element,Q,{relatedTarget:e})}),this._element,!0,50)))}hide(){const e=this;n(e._element)||I.trigger(this._element,U).defaultPrevented||(e._params.backdrop&&V.hide((function(){e._params.overflow&&X.destroy()})),e._params.overflow&&X.destroy(),e._element.setAttribute("aria-expanded",!1),e._element.classList.remove(K),this._queueCallback((()=>I.trigger(this._element,J)),this._element,!0))}dispose(){super.dispose()}_isShown(){return this._element.classList.contains(K)}_addEventListeners(){I.on(document,ee,(e=>{"Escape"===e.key&&(this._params.keyboard?this.hide():I.trigger(this._element,te))}))}}B(ae),I.on(document,se,'[data-vg-toggle="sidebar"]',(function(e){const t=_.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),n(this))return;this.setAttribute("aria-expanded",!0),I.one(t,J,(()=>{this.setAttribute("aria-expanded",!1)}));const s=_.find(".vg-sidebar.show");s&&s!==t&&ae.getInstance(s).hide(),ae.getOrCreateInstance(t).toggle(this)}));const ne=ae,ie="vg.collapse",re="show",oe="vg-collapse",le="vg-collapsing",de=`:scope .${oe} .${oe}`,ce='[data-vg-toggle="collapse"]',me=`${ie}.hide`,ge=`${ie}.hidden`,he=`${ie}.show`,ue=`${ie}.shown`,pe=`click.${ie}.data.api`;class fe extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({toggle:!0,parent:null,ajax:{route:"",target:"",method:"get"}},t)),this._isTransitioning=!1,this._triggerArray=[];const s=_.findAll(ce);for(const e of s){const t=_.getSelectorFromElement(e),s=_.findAll(t).filter((e=>e===this._element));null!==t&&s.length&&this._triggerArray.push(e)}this._initializeChildren(),this._params.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._params.toggle&&this.toggle()}static get NAME(){return"collapse"}static get NAME_KEY(){return ie}toggle(e){return this._isShown()?this.hide():this.show(e)}show(){const e=this;if(e._isTransitioning||e._isShown())return;let t=[];if(!(e._params.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>fe.getOrCreateInstance(e,{toggle:!1})))),t.length&&t[0]._isTransitioning||I.trigger(e._element,he).defaultPrevented)){for(const e of t)e.hide();e._element.classList.remove(oe),e._element.classList.add(le),e._element.style.height=0,e._addAriaAndCollapsedClass(e._triggerArray,!0),e._isTransitioning=!0,e._route(),e._queueCallback((()=>{e._isTransitioning=!1,e._element.classList.remove(le),e._element.classList.add(oe,re),e._element.style.height="",I.trigger(e._element,ue)}),e._element,!0),e._element.style.height=`${e._element.scrollHeight}px`}}hide(){const e=this;if(!e._isTransitioning&&e._isShown()&&!I.trigger(e._element,me).defaultPrevented){e._element.style.height=`${this._element.getBoundingClientRect().height}px`,m(e._element),e._element.classList.add(le),e._element.classList.remove(oe,re);for(const t of e._triggerArray){const s=_.getElementFromSelector(t);s&&!e._isShown(s)&&e._addAriaAndCollapsedClass([t],!1)}e._isTransitioning=!0,e._element.style.height="",e._queueCallback((()=>{e._isTransitioning=!1,e._element.classList.remove(le),e._element.classList.add(oe),I.trigger(e._element,ge)}),e._element,!0)}}dispose(){super.dispose()}_isShown(e=this._element){return e.classList.contains(re)}_addAriaAndCollapsedClass(e,t){if(e.length)for(const s of e)this._changeStateButton(s,t)}_initializeChildren(){if(!this._params.parent)return;const e=this._getFirstLevelChildren(ce);for(const t of e){const e=_.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=_.find(de,this._params.parent);return _.find(e,this._params.parent).filter((e=>!t.includes(e)))}_changeStateButton(e,t){e.classList.toggle("vg-collapsed",!t),e.setAttribute("aria-expanded",t),e.innerHTML=w.get(e,`data-${t?"hide":"show"}-text`)||e.innerHTML}}I.on(document,pe,ce,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault(),_.getMultipleElementsFromSelector(this).forEach((function(e){fe.getOrCreateInstance(e,{toggle:!1}).toggle()}))}));const _e=fe,ve=class{constructor(){this.breakpoints={xs:0,sm:576,md:768,lg:992,xl:1200,xxl:1400,xxxl:1600}}static check(e){return(new this).define(e)}static checkMobileOrTablet(){let e=!1;var t;return t=navigator.userAgent||navigator.vendor||window.opera,(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.slice(0,4)))&&(e=!0),e}define(e){let t=window.innerWidth,s=this._checkResponsiveClass(e),a=this.breakpoints,n=Object.keys(a).find((e=>a[e]===s)),i=Object.keys(a),r=i.indexOf(n);return t>=a[i[r+1]]}_checkResponsiveClass(e){let t=e._element,s=e._params,a=0;return a=t.classList.contains(s.classes.XXXL)?this.breakpoints.xxxl:t.classList.contains(s.classes.XXL)?this.breakpoints.xxl:t.classList.contains(s.classes.XL)?this.breakpoints.xl:t.classList.contains(s.classes.LG)?this.breakpoints.lg:t.classList.contains(s.classes.MD)?this.breakpoints.md:t.classList.contains(s.classes.SM)?this.breakpoints.sm:(t.classList.contains(s.classes.XS),this.breakpoints.xs),a}},be="vg.nav",we="show",ye="fade",ke="active",xe=`${be}.hide`,Le=`${be}.hidden`,Ee=`${be}.show`,Ae=`${be}.shown`,Se=`mouseover.${be}.data.api`,Te=`mouseout.${be}.data.api`,Ce=`click.${be}.data.api`,Me=`keyup.${be}.data.api`,Oe=`resize.${be}.data.api`;class $e extends R{constructor(e,t={}){super(e),this._params=this._getParams(e,l({breakpoint:!1,placement:"horizontal",classes:{hamburgerActive:"vg-nav-hamburger-active",hamburgerAlways:"vg-nav-hamburger-always",hamburger:"vg-nav-hamburger",container:"vg-nav-container",wrapper:"vg-nav-wrapper",active:"vg-nav-active",expand:"vg-nav-expand",cloned:"vg-nav-cloned",hover:"vg-nav-hover",flip:"vg-nav-flip",XXXL:"vg-nav-xxxl",XXL:"vg-nav-xxl",XL:"vg-nav-xl",LG:"vg-nav-lg",MD:"vg-nav-md",SM:"vg-nav-sm",XS:"vg-nav-xs"},expand:!0,hover:!1,position:!0,collapse:!0,toggle:'<span class="default"></span>',hamburger:{enable:!0,always:!1,title:"",body:null},callback:g,animation:!0,timeoutAnimation:300,ajax:{route:"",target:"",method:"get"}},t)),this._navigation=null,this.navigation="."+this._params.classes.wrapper,this.movedLinks=[],this.$links=_.findAll("."+this._params.classes.wrapper+" > li",this.navigation),!1===this._params.animation&&(this._params.timeoutAnimation=10)}static get NAME(){return"nav"}static get NAME_KEY(){return be}get navigation(){return this._navigation}set navigation(e){let t=_.find(e,this._element);t&&(this._navigation=t)}build(){if(!this.navigation)return;let e=this._params;if(this._element.classList.add(e.classes.container),this._element.classList.add("vg-nav-"+e.placement),e.breakpoint||(e.expand=!1),e.hamburger.always?this._element.classList.add(e.classes.hamburgerAlways):e.breakpoint&&e.expand?!1!==e.breakpoint&&this._element.classList.add("vg-nav-"+e.breakpoint):this._element.classList.add(e.classes.expand),e.hover&&(this._element.classList.add(e.classes.hover),ve.checkMobileOrTablet()&&this._element.classList.remove(e.classes.hover)),e.expand&&!e.hamburger.body&&null===_.find("."+e.classes.hamburger,this._element)){let t="",s='<span class="'+e.classes.hamburger+'--lines"><span></span><span></span><span></span></span>';e.hamburger.title&&(t='<span class="'+e.classes.hamburger+'--title">'+e.hamburger.title+"</span>"),null!==e.hamburger.body&&(s=e.hamburger.body),this._element.insertAdjacentHTML("afterbegin",'<a href="#sidebar-nav" class="'+e.classes.hamburger+'" data-vg-toggle="sidebar">'+t+s+"</a>")}if(e.toggle){let t=[..._.findAll(".dropdown-mega > a, .dropdown > a",this._element)],s='<span class="toggle">'+e.toggle+"</span>";t.length&&t.forEach((function(e){e.querySelector(".toggle")||e.closest(".dots")||(e.setAttribute("aria-expanded","false"),e.insertAdjacentHTML("beforeend",s))}))}e.collapse&&ve.check(this)&&"vertical"!==e.placement&&function(e){let t=e.navigation.clientWidth,s=0,a=_.find(".dots",e.navigation),n=H("dots");if(e.$links.length){if(a)s=a.clientWidth;else{let t=_.find("a",e.$links[0]),a=getComputedStyle(t);s=o(a.paddingLeft.slice(0,-2))+o(a.paddingRight.slice(0,-2))+16}for(let n of e.$links)s+=n.getBoundingClientRect().width,t<s?(e.movedLinks.push(n),n.remove()):e.movedLinks.length&&(a?e.navigation.insertBefore(e.movedLinks[0],a):e.navigation.appendChild(e.movedLinks[0]),e.movedLinks.splice(0,1));e.movedLinks.length?a||e.navigation.insertAdjacentHTML("beforeend",'<li class="dropdown dots"><a href="#" aria-expanded="false">'+n+"</a></li>"):a&&a.remove();let i=e.navigation.querySelector(".dots");if(i&&e.movedLinks.length){let t=i.querySelector("ul");if(t)for(let s of e.movedLinks)t.prepend(s);else{let t=document.createElement("ul");t.classList.add("dropdown-content"),t.classList.add("right");for(let s of e.movedLinks)t.prepend(s);i.appendChild(t)}}}}(this),"afterInit"in this._params.callback&&d(this._params.callback.afterInit,[this])}show(e){let t=e.relatedTarget;if(!t||n(t))return;if(t.closest(".dropdown-content")||t.classList.add("first"),I.trigger(t,Ee,{relatedTarget:e}).defaultPrevented)return;let s=_.find(".dropdown-content",t),a=t.firstElementChild;a&&a.setAttribute("aria-expanded","true"),s.classList.add(we),t.classList.add(ke),function(e){let{width:t,right:s}=e.getBoundingClientRect(),a=window.innerWidth-s-t;e.classList.remove("right"),e.classList.remove("left");let n=e.closest("li").querySelectorAll("ul");if(a>t)for(const e of n)e.classList.add("left");else for(const e of n)e.classList.add("right")}(s),this._queueCallback((()=>{s.classList.add(ye),I.trigger(t,Ae,e)}),s,!0,50)}hide(e){const t=this;if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))I.off(e,"mouseover",g);let s=e.relatedTarget;if("elm"in e&&e.elm&&(s=e.elm),s){if(I.trigger(s,xe).defaultPrevented)return;s.classList.remove(ke),s.classList.contains("first")&&s.classList.remove("first"),[..._.findAll("."+we,s)].forEach((function(s,a){s.classList.remove(ye);let n=s.closest(".dropdown");n.classList.contains(ke)&&n.classList.remove(ke);let i=s.previousElementSibling;if(i&&i.setAttribute("aria-expanded","false"),0===a){const a=()=>{s.classList.remove(we),I.trigger(s,Le,e)};t._queueCallback(a,s,!0,500)}}))}}static init(e,t={}){const s=$e.getOrCreateInstance(e,t);s.build();let a=_.findAll(".dropdown",s._navigation);s._params.hover?[...a].forEach((function(e){let t=null;I.on(e,Se,(function(e){if(t)return;$e.hideOpenDrops(e);let a=e.target.closest(".dropdown");if(!a)return;if(!s.navigation.contains(a))return;t=a;let n={relatedTarget:a};s.show(n)})),I.on(e,Te,(function(e){if(!t)return;let a=e.relatedTarget.closest(".dropdown"),n=t;for(;a;){if(a===t)return;a=a.parentNode}t=null,s.hide({relatedTarget:a,elm:n})}))})):(I.on(document,Me,$e.clearDrops),I.on(document,Ce,$e.clearDrops),I.on(document,Ce,".vg-nav a",(function(e){if(!w.has(this,"aria-expanded"))return;"click"in s._params.callback&&d(s._params.callback.click,[this]),e.preventDefault();let t=this.closest(".vg-nav"),a=t.querySelector(".first"),r=this.closest(".dropdown");if(r&&(!n(r)||i(r))){if(a&&this.closest(".first")){if(r.classList.contains("active"))return void s.hide({relatedTarget:r})}else[..._.findAll(".active",t)].forEach((function(e){e&&e!==r&&s.hide({relatedTarget:e})}));s.show({relatedTarget:r})}})));const r=document.getElementById("sidebar-nav");let o=s._element.querySelector("."+s._params.classes.hamburger);r&&o&&(r.addEventListener("vg.sidebar.show",(function(){o.classList.add(s._params.classes.hamburgerActive)})),r.addEventListener("vg.sidebar.hide",(function(){o.classList.remove(s._params.classes.hamburgerActive)})))}static clearDrops(e){2===e.button||"keyup"===e.type&&"Tab"!==e.key||$e.hideOpenDrops(e)}static hideOpenDrops(e){const t=_.findAll(".dropdown:not(.disabled):not(:disabled).active");for(const s of t){const t=$e.getInstance(s.closest(".vg-nav"));if(!t)continue;if(e.target.closest(".first"))return;const a={relatedTarget:s};"click"===e.type&&(a.clickEvent=e),t.hide(a)}}}I.on(window,Oe,(function(e){$e.getOrCreateInstance(".vg-nav",{}).build()}));const je=$e,Ne=class{constructor(e={}){this.params=l({element:null,drop:null},e)}_getPlacement(){const e=this,t=e=>{let s=e.parentNode,a=getComputedStyle(s).overflow;return"BODY"===s.tagName?null:"visible"!==a?s:void t(s)};let s,a,n=!1,i=e.params.drop.getBoundingClientRect(),r=e.params.element.getBoundingClientRect();if(t(e.params.element))n=!0,s=i.top,a=i.left;else{let t=getComputedStyle(e.params.drop);s=o(t.top.slice(0,-2)),a=o(t.left.slice(0,-2))}return i.left+i.width>window.innerWidth&&(a=r.width-i.width),{isFixed:n,top:s,left:a}}},Pe="vg.dropdown",qe="show",De="fade",Ie="vg-dropdown-content",He='[data-vg-toggle="dropdown"]',Be=`${Pe}.hide`,Fe=`${Pe}.hidden`,Re=`${Pe}.show`,Xe=`${Pe}.shown`,ze=`keyup.${Pe}.data.api`,We=`keydown.${Pe}.data.api`,Ye=`click.${Pe}.data.api`,Ve=`mouseover.${Pe}.data.api`,Ge=`mouseout.${Pe}.data.api`;class Ke extends R{constructor(e,t){super(e,t);let s={offset:[0,2],over:!1,backdrop:!0,overflow:!0,keyboard:!0,placement:"bottom",animation:!0,timeoutAnimation:350,hover:!1,ajax:{route:"",target:"",method:"get"}};"offset"in t&&Array.isArray(t.offset)&&(s.offset=t.offset),this._params=this._getParams(e,l(s,t)),this._parent=this._element.parentNode,this._drop=_.find("."+Ie,this._parent),this._isPlacement=!1,!1===this._params.animation&&(this._params.timeoutAnimation=10)}static get NAME(){return"dropdown"}static get NAME_KEY(){return Pe}toggle(){return this._isShown()?this.hide():this.show()}show(){if(n(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!I.trigger(this._element,Re,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))I.on(e,"mouseover",g);this._route(),this._element.setAttribute("aria-expanded",!0),this._element.classList.add(qe),this._drop.classList.add(qe),this._setPlacement(),this._queueCallback((()=>{this._drop.classList.add(De),I.trigger(this._element,Xe,e)}),this._drop,!0,50)}}hide(){if(n(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){return super.dispose()}_isShown(){return this._element.classList.contains(qe)}_completeHide(e){if(!I.trigger(this._element,Be,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))I.off(e,"mouseover",g);this._drop.classList.remove(De),this._element.classList.remove(qe),this._element.setAttribute("aria-expanded","false"),this._queueCallback((()=>{this._drop.classList.remove(qe),I.trigger(this._element,Fe,e)}),this._parent,!0,this._params.timeoutAnimation)}}_setPlacement(){const e=this;if(!e._isPlacement){let t=new Ne({element:this._parent,drop:this._drop})._getPlacement();t.isFixed&&(e._drop.style.position="fixed",e._drop.style.transform="translateY(-20%)"),e._drop.style.left=t.left+"px",e._drop.style.top=t.top+"px"}e._params.offset&&(e._drop.style.paddingTop=e._params.offset[1]+"px",e._drop.style.paddingRight=e._params.offset[0]+"px"),e._isPlacement=!0}static init(e,t={}){const s=Ke.getOrCreateInstance(e,t);if(s._params.hover){let e=null;I.on(s._parent,Ve,(function(t){if(e)return;Ke.hideOpenToggles(t);let a=t.target.closest(".vg-dropdown");a&&s._parent.contains(a)&&(e=a,s.show())})),I.on(s._parent,Ge,(function(t){if(!e)return;let a=t.relatedTarget;for(;a;){if(a===e)return;a=a.parentNode}e=null,s._completeHide({relatedTarget:s._element})}))}else I.on(document,ze,He,Ke.keydownHandler),I.on(document,We,"."+Ie,Ke.keydownHandler),I.on(document,ze,Ke.clearDrops),I.on(document,Ye,Ke.clearDrops),I.on(e,Ye,(function(e){e.preventDefault(),s.toggle()}))}static hideOpenToggles(e){const t=_.findAll('[data-vg-toggle="dropdown"]:not(.disabled):not(:disabled).show');for(const s of t){const t=Ke.getInstance(s);if(!t)continue;if(e.target.closest("."+Ie)===t._drop)return;if(e.composedPath().includes(t._element))continue;const a={relatedTarget:t._element};"click"===e.type&&(a.clickEvent=e),t._completeHide(a)}}static keydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),s="Escape"===e.key,a=["ArrowUp","ArrowDown"].includes(e.key);if(!a&&!s)return;if(t&&!s)return;e.preventDefault();const n=this.matches(He)?this:_.find(He,e.delegateTarget.parentNode),i=Ke.getOrCreateInstance(n);if(a)return e.stopPropagation(),void i.show();i._isShown()&&(e.stopPropagation(),i.hide(),n.focus())}static clearDrops(e){2===e.button||"keyup"===e.type&&"Tab"!==e.key||Ke.hideOpenToggles(e)}}const Ue=Ke,Je=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ze=".sticky-top",Qe="padding-right",et="margin-right",tt=class{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Qe,(t=>t+e)),this._setElementAttributes(Je,Qe,(t=>t+e)),this._setElementAttributes(Ze,et,(t=>t-e))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Qe),this._resetElementAttributes(Je,Qe),this._resetElementAttributes(Ze,et)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,s){const a=this.getWidth();this._applyManipulationCallback(e,(e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+a)return;this._saveInitialAttribute(e,t);const n=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${s(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(e,t){const s=e.style.getPropertyValue(t);s&&w.get(e,t,s)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,(e=>{const s=w.get(e,t);null!==s?(w.remove(e,t),e.style.setProperty(t,s)):e.style.removeProperty(t)}))}_applyManipulationCallback(e,t){if(a(e))t(e);else for(const s of _.findAll(e,this._element))t(s)}},st="vg.modal",at="vg-modal-open",nt="show",it="vg-modal-static",rt=`${st}.hide`,ot=`${st}.hidden`,lt=`${st}.show`,dt=`${st}.shown`,ct=`${st}.resize`,mt=`keydown.dismiss.${st}`,gt=`hidePrevented.${st}`,ht=`click.${st}.data.api`,ut=`mousedown.dismiss${st}`,pt=`click.dismiss${st}`;class ft extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({backdrop:!0,focus:!0,keyboard:!0,fields:[],ajax:{route:"",target:"",method:"get",loader:!1},animation:{name:["animate__backInUp","animate__backOutUp"],duration:1e3,delay:1e3,repeat:1},classes:{general:"vg-modal",dialog:"vg-modal-dialog",content:"vg-modal-content",header:"vg-modal-header",title:"vg-modal-title",body:"vg-modal-body",footer:"vg-modal-footer",animated:"animate__animated"}},t)),this._button=null,this._dialog=_.find(".vg-modal-dialog",this._element),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new tt,this._addEventListeners(),this._dismissElement()}static get NAME(){return"modal"}static get NAME_KEY(){return st}static init(e,t,s){ft.build(e,t,s)}static build(e,t,s){if("string"!=typeof e)return;let a=document.createElement("div");a.classList.add("vg-modal","fade"),a.id=e;let n=document.createElement("div");n.classList.add("vg-modal-dialog");let i=document.createElement("div");i.classList.add("vg-modal-content");let r=document.createElement("button");w.set(r,"type","button"),w.set(r,"data-vg-dismiss","modal"),w.set(r,"data-vg-target","#"+e),w.set(r,"aria-label","close"),r.classList.add("vg-btn-close"),i.append(r);let o=document.createElement("div");o.classList.add("vg-modal-body"),i.append(o),n.append(i),a.append(n),document.body.append(a),d(s,[ft.getOrCreateInstance(a,t)])}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){n(this._element)||(this._route(),I.trigger(this._element,lt,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(at),this._addFieldsInModal(e),this._adjustDialog(),V.show((()=>this._showElement(e)))))}hide(){this._isShown&&!this._isTransitioning&&(I.trigger(this._element,rt).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._element.classList.remove(nt),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,V.hide((()=>{document.body.classList.remove(at),this._resetAdjustments(),this._scrollBar.reset(),I.trigger(this._element,ot)}))}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const t=_.find(".vg-modal-body",this._dialog);t&&(t.scrollTop=0),m(this._element),this._element.classList.add(nt),this._queueCallback((()=>{this._params.focus,this._isTransitioning=!1,I.trigger(this._element,dt,{relatedTarget:e})}),this._dialog,this._isAnimated())}_isAnimated(){return this._element.classList.contains("fade")}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),s=t>0;if(s&&!e){const e=u()?"paddingLeft":"paddingRight";this._element.style[e]=`${t}px`}if(!s&&e){const e=u()?"paddingRight":"paddingLeft";this._element.style[e]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}_addEventListeners(){I.on(this._element,mt,(e=>{"Escape"===e.key&&(this._params.keyboard?this.hide():this._triggerBackdropTransition())})),I.on(window,ct,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),I.on(this._element,ut,(e=>{I.one(this._element,pt,(t=>{this._element===e.target&&this._element===t.target&&("static"!==this._params.backdrop?this._params.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_triggerBackdropTransition(){if(I.trigger(this._element,gt).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;"hidden"===t||this._element.classList.contains(it)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(it),this._queueCallback((()=>{this._element.classList.remove(it),this._queueCallback((()=>{this._element.style.overflowY=t}),this._dialog)}),this._dialog),this._element.focus())}_addFieldsInModal(e){this._params=this._getParams(e,this._params),this._params.fields.length&&this._params.fields.forEach((function(e){if(!1 in e&&!1 in e)return;let t=_.findAll("[data-"+e.name+"]");if(t.length)for(const s of t)switch(s.tagName){case"INPUT":s.value=e.value;break;case"IMG":w.set(s,"src",e.value);break;default:s.innerHTML=e.value}}))}}B(ft),I.on(document,ht,'[data-vg-toggle="modal"]',(function(e){const t=_.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),I.one(t,lt,(e=>{e.defaultPrevented||I.one(t,ot,(()=>{i(this)&&this.focus()}))}));const s=_.find(".vg-modal.show");s&&ft.getInstance(s).hide(),ft.getOrCreateInstance(t).toggle(this)}));const _t=ft,vt="vg.fs",bt=`submit.${vt}.data.api`;class wt extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({redirect:"",validate:!1,submit:!1,fields:[],alert:{enabled:!0,type:"modal"},ajax:{route:"",target:"",method:"get"},classes:{general:"vg-form-sender",alertCollapse:"vg-form-sender-collapse",alertModal:"vg-form-sender-modal",validation:"needs-validation",wasValidate:"was-validated"}},t)),this._params.ajax.route=w.get(this._element,"action").toLowerCase(),this._params.ajax.method=w.get(this._element,"method").toLowerCase(),this._button=_.find('[type="submit"]',this._element)||_.find('[form="'+this._element.id+'"]')||null,this._params.isBtnText="false"!==w.get(this._element,"data-btn-text"),this._params.isJsonParse="false"!==w.get(this._element,"data-json-parse"),this._params.isShowPass="true"===w.get(this._element,"data-show-pass")}static get NAME(){return"form-sender"}static get NAME_KEY(){return vt}build(){return this._element.classList.add(this._params.classes.general),this._params.validate&&(w.set(this._element,"novalidate",""),this._element.classList.add(this._params.classes.validation)),this}request(e,t){const s=this;s._alertBefore(),s._params.ajax.data=e,s._route((function(e,a){s._element.classList.remove("was-validated"),s._params.alert.enabled&&("string"==typeof e&&"error"===e?s._alertError(t,a):"string"==typeof e&&"success"===e&&s._alertSuccess(t,a)),s._params.redirect&&(window.location.href=s._params.redirect)}))}_alertBefore(){const e=this;"collapse"===e._params.alert.type&&[...document.getElementsByClassName(e._params.classes.alertCollapse)].forEach((function(e){e&&e.classList.contains("show")&&_e.getOrCreateInstance(e,{toggle:!1}).hide()})),e._statusButton("before"),I.trigger(e._element,"vg.fs.before",e)}_alertError(e,t){const s=this;s._statusButton("after"),s._jsonParse(t,"error"),I.trigger(s._element,"vg.fs.error",[e,s,t])}_alertSuccess(e,t){const s=this;s._statusButton("after"),s._jsonParse(t,"success"),I.trigger(s._element,"vg.fs.success",[e,s,t])}_statusButton(e){const t=this;if(!t._button)return;let s=t._button,a={send:"Отправляем...",text:"Отправить"};if(w.has(t._button,"data-spinner")&&"before"===e&&t._button.insertAdjacentHTML("afterbegin",'<span class="spinner-border spinner-border-sm me-2"></span>'),w.has(t._button,"data-text"))a.text=w.get(t._button,"data-text");else{let e=t._button.querySelector("[data-text]");e&&(a.text=w.get(e,"data-text"),s=e)}if(w.has(t._button,"data-text-send"))a.send=w.get(t._button,"data-text-send");else{let e=t._button.querySelector("[data-text-send]");e&&(a.send=w.get(e,"data-text-send"),s=e)}if("before"===e&&(t._params.isBtnText&&(s.innerHTML=a.send),w.set(t._button,"disabled","disabled")),"after"===e){t._params.isBtnText&&(s.innerHTML=a.text),w.remove(t._button,"disabled");let e=t._button.querySelector(".spinner-border");e&&e.remove()}}_jsonParse(e,t){const s=this;if(s._params.isJsonParse&&"string"==typeof e){let a={};try{a=JSON.parse(e),s.alert(a,t)}catch(a){s.alert(e,t)}}else s.alert(e,t)}alert(e,t){const s=this;if(r(e)&&"code"in e&&e.code&&200===e.code&&"response"in e&&e.response){let s=o(e.response);"string"==typeof s?-1===s.indexOf("Parse error")&&-1===s.indexOf("syntax error")||(t="error",e={response:{title:"Error",message:"Something went wrong, please repeat later"},text:"Something went wrong, please repeat later"}):"errors"in s&&o(s.errors)&&(t=o(s.errors)?"error":"success")}s._params.alert.enabled&&("modal"===s._params.alert.type&&s._alertModal(e,t),"collapse"===s._params.alert.type&&s._alertCollapse(e,t))}_alertModal(e,t){const s=this;[...document.getElementsByClassName("modal")].forEach((function(e){e&&e.classList.contains("show")&&bootstrap.Modal.getOrCreateInstance(e).hide()})),[...document.getElementsByClassName("vg-modal")].forEach((function(e){e&&e.classList.contains("show")&&_t.getOrCreateInstance(e).hide()}));let a=_.find("."+s._params.classes.alertModal);a&&a.remove(),setTimeout((()=>{let a=s._params.classes.general+"-"+h();_t.init(a,{classes:{alert:s._params.classes.alertModal}},(function(a){let n=a._element;n.classList.add(s._params.classes.alertModal);let i=_.find(".vg-modal-body",n);i&&i.append(s.setDataRelationStatus(n,t,e,"modal")),a.toggle()}))}),175)}_alertCollapse(e,t){const s=this;let a=_.find("."+s._params.classes.alertCollapse);a||(a=document.createElement("div"),a.classList.add(s._params.classes.alertCollapse),a.classList.add("vg-collapse"),a.id=s._params.classes.general+"-"+h(),a.append(s.setDataRelationStatus(a,t,e,"collapse")),s._element.prepend(a)),_e.getOrCreateInstance(a,{toggle:!1}).toggle()}setDataRelationStatus(e,t,s,a){let n=_.find(".vg-alert-"+t,e);if(r(s)){if("error"===t&&"code"in s&&200!==s.code&&"text"in s&&!s.text)switch(s.text="Something went wrong, please repeat later",s.code){case 400:s.text="Bad Request";break;case 401:case 403:s.text="Unauthorized";break;case 413:s.text="Forbidden";break;case 404:s.text="Not Found";break;case 422:s.text="Unprocessable Entity";break;case 500:s.text="Internal Server Error";break;case 504:s.text="Gateway Timeout"}if("response"in s){let e=o(s.response),a="",n="",i="";if("string"!=typeof e){if(!("view"in e)){if("title"in e&&(a=e.title),"error"===t&&200!==s.code&&(i=" "+s.text+" ("+s.code+")"),n+='<h4 class="vg-alert-content--title">'+a+i+"</h4>","message"in e&&(n+='<div class="vg-alert-content--message">'+e.message+"</div>"),"errors"in e){let t=o(e.errors)||null;if(r(t))for(const e in t)Array.isArray(t[e])?t[e].forEach((function(e){n+="<div>"+e+"</div>"})):n="<div>"+t[e]+"</div>"}s={view:n}}}else s.view=e}}if(n)_.find(".vg-alert-content--text",n).innerHTML=s.view;else{n=document.createElement("div"),n.classList.add("vg-alert","vg-alert-"+t,"vg-alert-"+a);let e=document.createElement("div");e.classList.add("vg-alert-content");let i=document.createElement("div");i.classList.add("vg-alert-content--icon");let r=document.createElement("i");r.innerHTML=H(t),i.append(r),e.append(i);let o=document.createElement("div");o.classList.add("vg-alert-content--text"),o.innerHTML=s.view,e.append(o),n.append(e)}return n}static init(e,t={}){wt.getOrCreateInstance(e,t).build()}}I.on(document,bt,(function(e){if(!w.has(e.target,"data-vgformsender"))return;const t=wt.getOrCreateInstance(e.target,{});if(t){if(t._params.validate&&!t._element.checkValidity())return e.preventDefault(),e.stopPropagation(),t._element.classList.add(t._params.classes.wasValidate),!1;if(!t._params.submit){e.preventDefault();let s=new FormData(t._element);return t.request(s,e)}}}));const yt=wt,kt="vg.rollup",xt=`click.${kt}.data.api`;class Lt extends R{constructor(e,t={}){super(e,t),this._params=this._getParams(e,l({},t))}static get NAME(){return"rollup"}static get NAME_KEY(){return kt}static init(e,t={}){Lt.getOrCreateInstance(e,t).build()}build(){}toggle(e){return this._isShown()?this.hide():this.show(e)}show(e){}_isShown(){return this._element.classList.contains("show")}}I.on(document,xt,'[data-vg-toggle="rollup"]',(function(e){const t=_.getElementFromSelector(this);t&&(["A","AREA"].includes(this.tagName)&&e.preventDefault(),n(this)||(this.setAttribute("aria-expanded",!0),Lt.getOrCreateInstance(t).toggle(this)))}));const Et=Lt;vg=t})();
|
|
2
2
|
//# sourceMappingURL=vgapp.js.map
|
package/build/vgapp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vgapp.js","mappings":"0BACA,IAAIA,EAAsB,CCA1BA,EAAwB,CAACC,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDH,EAAwB,CAACS,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFV,EAAyBC,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GAAO,G,KCI9D,SAASC,EAAWR,GACnB,IAAK,IAAIC,KAAQD,EAChB,GAAIJ,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GAC7C,OAAO,EAIT,OAAO,CACR,C,qIAOA,MAAMQ,EAAYC,KACZC,EAASD,SAIoB,IAApBA,EAAOE,SAQhBC,EAAaC,IACbA,GAAWA,EAAQF,WAAaG,KAAKC,gBAItCF,EAAQG,UAAUC,SAAS,mBAIC,IAArBJ,EAAQK,SACXL,EAAQK,SAGTL,EAAQM,aAAa,aAAoD,UAArCN,EAAQO,aAAa,aAQjE,SAASC,EAAWR,GACnB,IAAKL,EAAUK,IAAgD,IAApCA,EAAQS,iBAAiBC,OACnD,OAAO,EAGR,MAAMC,EAAgF,YAA7DC,iBAAiBZ,GAASa,iBAAiB,cAC9DC,EAAgBd,EAAQe,QAAQ,uBAEtC,IAAKD,EACJ,OAAOH,EAGR,GAAIG,IAAkBd,EAAS,CAC9B,MAAMgB,EAAUhB,EAAQe,QAAQ,WAChC,GAAIC,GAAWA,EAAQC,aAAeH,EACrC,OAAO,EAGR,GAAgB,OAAZE,EACH,OAAO,CAET,CAEA,OAAOL,CACR,CAOA,SAASd,EAASX,GACjB,OAAOA,GAAsB,iBAARA,CACtB,CAOA,SAASgC,EAAczB,GACtB,GAAc,SAAVA,EACH,OAAO,EAGR,GAAc,UAAVA,EACH,OAAO,EAGR,GAAIA,IAAU0B,OAAO1B,GAAO2B,WAC3B,OAAOD,OAAO1B,GAGf,GAAc,KAAVA,GAA0B,SAAVA,EACnB,OAAO,KAGR,GAAqB,iBAAVA,EACV,OAAOA,EAGR,IACC,OAAO4B,KAAKC,MAAMC,mBAAmB9B,GACtC,CAAE,MACD,OAAOA,CACR,CACD,CAgBA,SAAS+B,KAAmBC,GAC3B,MAAM5B,EAAWX,GAAOA,GAAsB,iBAARA,EAEtC,OAAOuC,EAAQC,QAAO,CAACC,EAAMzC,KAC5BJ,OAAO8C,KAAK1C,GAAK2C,SAAQjD,IACxB,MAAMkD,EAAOH,EAAK/C,GACZmD,EAAO7C,EAAIN,GAEboD,MAAMC,QAAQH,IAASE,MAAMC,QAAQF,GACxCJ,EAAK/C,GAAOkD,EAAKI,UAAUH,GAEnBlC,EAASiC,IAASjC,EAASkC,GACnCJ,EAAK/C,GAAO4C,EAAgBM,EAAMC,GAGlCJ,EAAK/C,GAAOmD,CACb,IAGMJ,IACL,CAAC,EACL,CASA,SAASQ,EAAQC,EAAkBC,EAAO,GAAIC,EAAeF,GAC5D,MAAmC,mBAArBA,EAAkCA,KAAoBC,GAAQC,CAC7E,CAQA,MAAMC,EAAiB,gBAmEjBC,EAASxC,IACdA,EAAQyC,YAAY,EAMfC,EAAOA,OAKb,SAASC,EAAiBjC,EAAS,GAClC,IAAIkC,EAAS,GAGb,IAAIC,EAAU,EACd,KAAOA,EAAUnC,GAChBkC,GAJkB,iEAIGE,OAAOC,KAAKC,MAHTC,GAGeF,KAAKG,WAC5CL,GAAW,EAEZ,OAAOD,CACR,CAKA,MAAMO,EAAQA,IAAuC,QAAjCC,SAASC,gBAAgBC,ICnQvCC,EAAcvD,IACnB,IAAIwD,EAAWxD,EAAQO,aAAa,kBAEpC,IAAKiD,GAAyB,MAAbA,EAAkB,CAClC,IAAIC,EAAgBzD,EAAQO,aAAa,QACzC,IAAKkD,IAAmBA,EAAcC,SAAS,OAASD,EAAcE,WAAW,KAChF,OAAO,KAGJF,EAAcC,SAAS,OAASD,EAAcE,WAAW,OAC5DF,EAAgB,IAAIA,EAAcG,MAAM,KAAK,MAG9CJ,EAAWC,GAAmC,MAAlBA,EAAwBA,EAAcI,OAAS,IAC5E,CAEA,OAAOL,EAAWA,EAASI,MAAM,KAAKE,KAAIC,GAxBrBP,KACjBA,GAAYQ,OAAOC,KAAOD,OAAOC,IAAIC,SACxCV,EAAWA,EAASW,QAAQ,iBAAiB,CAACC,EAAOC,IAAO,IAAIJ,IAAIC,OAAOG,QAGrEb,GAmB0Cc,CAAcP,KAAMQ,KAAK,KAAO,IAAI,EAGhFC,EAAY,CACjBC,KAAIA,CAACjB,EAAUxD,EAAUoD,SAASC,kBAC7B1D,EAAU6D,GACNA,EAEAkB,QAAQtF,UAAUuF,cAAcrF,KAAKU,EAASwD,GAIvDoB,QAAOA,CAACpB,EAAUqB,EAAYzB,SAASC,kBAC/B,GAAGnB,UAAUwC,QAAQtF,UAAU0F,iBAAiBxF,KAAKuF,EAAWrB,IAGxEuB,sBAAAA,CAAuB/E,GACtB,MAAMwD,EAAWD,EAAYvD,GAC7B,OAAIwD,GAAiBgB,EAAUC,KAAKjB,GAAYA,EACzC,IACR,EAEAwB,sBAAAA,CAAuBhF,GACtB,MAAMwD,EAAWD,EAAYvD,GAC7B,OAAOwD,EAAWgB,EAAUC,KAAKjB,GAAY,IAC9C,EAEAyB,+BAAAA,CAAgCjF,GAC/B,MAAMwD,EAAWD,EAAYvD,GAC7B,OAAOwD,EAAWgB,EAAUI,QAAQpB,GAAY,EACjD,GAGD,ICpDM0B,EAAa,IAAIC,IAEvB,GACCC,GAAAA,CAAIpF,EAASpB,EAAKyG,GACZH,EAAWI,IAAItF,IACnBkF,EAAWE,IAAIpF,EAAS,IAAImF,KAG7B,MAAMI,EAAcL,EAAWjG,IAAIe,GAC9BuF,EAAYD,IAAI1G,IAA6B,IAArB2G,EAAYC,KAKzCD,EAAYH,IAAIxG,EAAKyG,GAJpBI,QAAQC,MAAM,yFAAyF1D,MAAM2D,KAAKJ,EAAY3D,QAAQ,MAKxI,EAEA3C,IAAGA,CAACe,EAASpB,IACRsG,EAAWI,IAAItF,IACXkF,EAAWjG,IAAIe,GAASf,IAAIL,IAG7B,KAGRgH,MAAAA,CAAO5F,EAASpB,GACf,IAAKsG,EAAWI,IAAItF,GACnB,OAGD,MAAMuF,EAAcL,EAAWjG,IAAIe,GAEnCuF,EAAYM,OAAOjH,GAEM,IAArB2G,EAAYC,MACfN,EAAWW,OAAO7F,EAEpB,GCxCK8F,EAAc,CACnB7G,GAAAA,CAAIe,EAAS+F,EAAgB,OAAQC,GAAmB,GACvD,IAAKhG,EACJ,MAAO,CAAC,EAGT,GAAsB,SAAlB+F,EAA0B,CAC7B,IAAIE,EAAU,CAAC,iBAAkB,iBAAkB,mBAClDC,EAAa,CAAC,EAEXC,EAAM,GAAGC,OAAO9G,KAAKU,EAAQkG,YAAY,SAAUG,GACtD,MAAO,SAASC,KAAKD,EAAGE,KACzB,IAaA,OAXIJ,EAAIzF,QACPyF,EAAItE,SAAQ,SAAU2E,GACrB,IAAID,EAAOC,EAAED,KAERN,EAAQvC,SAAS6C,KACjBP,IAAkBO,EAAOA,EAAKE,MAAM,IACxCP,EAAWK,GAAQrF,EAAcsF,EAAE/G,OAErC,IAGMyG,CACR,CAAO,MAAsB,QAAlBH,EACH/F,EAAQ0G,oBAAoBhF,QAAO,CAACiF,EAAKJ,KACxC,IAAII,EAAK,CAACJ,GAAOvG,EAAQO,aAAagG,MAC3C,CAAC,GAEGvG,EAAQO,aAAawF,EAE9B,EAEAT,IAAGA,CAACtF,EAAS+F,IACL/F,EAAQM,aAAayF,GAG7BX,GAAAA,CAAIpF,EAASuG,EAAM9G,GACdE,EAAUK,IAAYuG,GACzBvG,EAAQ4G,aAAaL,EAAM9G,EAE7B,EAEAmG,MAAAA,CAAO5F,EAAS+F,GACXpG,EAAUK,IAAY+F,GACzB/F,EAAQ6G,gBAAgBd,EAE1B,GCfD,EAxCA,MACCe,WAAAA,CAAYC,EAAQ/G,EAAU,MAC7BgH,KAAKC,QAAUD,KAAKE,MAAMH,EAAQ/G,EACnC,CAEAf,GAAAA,GACC,OAAO+H,KAAKC,OACb,CAEAE,WAAAA,CAAYnH,GACX,OAAOL,EAAUK,GAAW8F,EAAY7G,IAAIe,GAAW,CAAC,CACzD,CAEAkH,KAAAA,CAAMH,EAAQ/G,GACb,IAAIoH,EAAU5F,EAAgBuF,EAAQC,KAAKG,YAAYnH,IAEvD,IAAK,IAAIpB,KAAOwI,EACf,IAA0B,IAAtBxI,EAAIyI,QAAQ,KAAa,CAC5B,IAAIzF,EAAOhD,EAAIgF,MAAM,KACpBnE,EAAQyB,EAAckG,EAAQxI,IAE3BgD,EAAK,KAAMwF,GACVxF,EAAK,KAAMwF,EAAQxF,EAAK,MAC3BwF,EAAQxF,EAAK,IAAIA,EAAK,IAAMnC,UAIvB2H,EAAQxI,EAChB,CAQD,MALI,WAAYwI,IACfA,EAAU5F,EAAgB4F,EAASA,EAAQL,eACpCK,EAAQL,QAGTK,CACR,GC5BKE,EAAiB,qBACjBC,EAAiB,OACjBC,EAAgB,SAChBC,EAAgB,CAAC,EACvB,IAAIC,EAAW,EACf,MAAMC,EAAe,CACpBC,WAAY,YACZC,WAAY,YAGPC,EAAe,IAAIC,IAAI,CAC5B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,SACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WAOD,SAASC,EAAahI,EAASiI,GAC9B,OAAQA,GAAO,GAAGA,MAAQP,OAAiB1H,EAAQ0H,UAAYA,GAChE,CAEA,SAASQ,EAAiBlI,GACzB,MAAMiI,EAAMD,EAAahI,GAKzB,OAHAA,EAAQ0H,SAAWO,EACnBR,EAAcQ,GAAOR,EAAcQ,IAAQ,CAAC,EAErCR,EAAcQ,EACtB,CAoCA,SAASE,EAAYC,EAAQC,EAAUC,EAAqB,MAC3D,OAAOxJ,OAAOyJ,OAAOH,GACnB3D,MAAK+D,GAASA,EAAMH,WAAaA,GAAYG,EAAMF,qBAAuBA,GAC7E,CAEA,SAASG,EAAoBC,EAAmBC,EAASC,GACxD,MAAMC,EAAiC,iBAAZF,EAErBN,EAAWQ,EAAcD,EAAsBD,GAAWC,EAChE,IAAIE,GA6EJN,GAFqBA,EA3EQE,GA6EfvE,QAAQoD,EAAgB,IAC/BI,EAAaa,IAAUA,GAH/B,IAAsBA,EArErB,OAJKV,EAAaxC,IAAIwD,KACrBA,EAAYJ,GAGN,CAACG,EAAaR,EAAUS,EAChC,CAEA,SAASC,EAAW/I,EAAS0I,EAAmBC,EAASC,EAAoBI,GAC5E,GAAiC,iBAAtBN,IAAmC1I,EAC7C,OAGD,IAAK6I,EAAaR,EAAUS,GAAaL,EAAoBC,EAAmBC,EAASC,GAIzF,GAAIF,KAAqBf,EAAc,CACtC,MAAMsB,EAAeC,GACb,SAAUV,GAChB,IAAKA,EAAMW,eAAkBX,EAAMW,gBAAkBX,EAAMY,iBAAmBZ,EAAMY,eAAehJ,SAASoI,EAAMW,eACjH,OAAOD,EAAG5J,KAAK0H,KAAMwB,EAEvB,EAGDH,EAAWY,EAAaZ,EACzB,CAEA,MAAMD,EAASF,EAAiBlI,GAC1BqJ,EAAWjB,EAAOU,KAAeV,EAAOU,GAAa,CAAC,GACtDQ,EAAmBnB,EAAYkB,EAAUhB,EAAUQ,EAAcF,EAAU,MAEjF,GAAIW,EAGH,YAFAA,EAAiBN,OAASM,EAAiBN,QAAUA,GAKtD,MAAMf,EAAMD,EAAaK,EAAUK,EAAkBvE,QAAQmD,EAAgB,KACvE4B,EAAKL,EAxEZ,SAAoC7I,EAASwD,EAAU0F,GACtD,OAAO,SAASP,EAAQH,GACvB,MAAMe,EAAcvJ,EAAQ8E,iBAAiBtB,GAE7C,IAAK,IAAI,OAAEgG,GAAWhB,EAAOgB,GAAUA,IAAWxC,KAAMwC,EAASA,EAAOvI,WACvE,IAAK,MAAMwI,KAAcF,EACxB,GAAIE,IAAeD,EAUnB,OANAE,EAAWlB,EAAO,CAAEY,eAAgBI,IAEhCb,EAAQK,QACXW,EAAaC,IAAI5J,EAASwI,EAAMqB,KAAMrG,EAAU0F,GAG1CA,EAAGY,MAAMN,EAAQ,CAAChB,GAG5B,CACD,CAqDEuB,CAA2B/J,EAAS2I,EAASN,GArF/C,SAA0BrI,EAASkJ,GAClC,OAAO,SAASP,EAAQH,GAOvB,OANAkB,EAAWlB,EAAO,CAAEY,eAAgBpJ,IAEhC2I,EAAQK,QACXW,EAAaC,IAAI5J,EAASwI,EAAMqB,KAAMX,GAGhCA,EAAGY,MAAM9J,EAAS,CAACwI,GAC3B,CACD,CA4EEwB,CAAiBhK,EAASqI,GAE3Ba,EAAGZ,mBAAqBO,EAAcF,EAAU,KAChDO,EAAGb,SAAWA,EACda,EAAGF,OAASA,EACZE,EAAGxB,SAAWO,EACdoB,EAASpB,GAAOiB,EAEhBlJ,EAAQiK,iBAAiBnB,EAAWI,EAAIL,EACzC,CAEA,SAASqB,EAAclK,EAASoI,EAAQU,EAAWH,EAASL,GAC3D,MAAMY,EAAKf,EAAYC,EAAOU,GAAYH,EAASL,GAE9CY,IAILlJ,EAAQmK,oBAAoBrB,EAAWI,EAAIkB,QAAQ9B,WAC5CF,EAAOU,GAAWI,EAAGxB,UAC7B,CAEA,SAAS2C,EAAyBrK,EAASoI,EAAQU,EAAWwB,GAC7D,MAAMC,EAAoBnC,EAAOU,IAAc,CAAC,EAEhD,IAAK,MAAO0B,EAAYhC,KAAU1J,OAAO2L,QAAQF,GAC5CC,EAAW9G,SAAS4G,IACvBJ,EAAclK,EAASoI,EAAQU,EAAWN,EAAMH,SAAUG,EAAMF,mBAGnE,CAQA,SAASoB,EAAWxK,EAAKwL,EAAO,CAAC,GAChC,IAAK,MAAO9L,EAAKa,KAAUX,OAAO2L,QAAQC,GACzC,IACCxL,EAAIN,GAAOa,CACZ,CAAE,MACDX,OAAOC,eAAeG,EAAKN,EAAK,CAC/B+L,cAAc,EACd1L,IAAGA,IACKQ,GAGV,CAGD,OAAOP,CACR,CAMA,MAAMyK,EAAe,CAQpBiB,EAAAA,CAAG5K,EAASwI,EAAOG,EAASC,GAC3BG,EAAW/I,EAASwI,EAAOG,EAASC,GAAoB,EACzD,EASAiC,GAAAA,CAAI7K,EAASwI,EAAOG,EAASC,GAC5BG,EAAW/I,EAASwI,EAAOG,EAASC,GAAoB,EACzD,EASAgB,GAAAA,CAAI5J,EAAS0I,EAAmBC,EAASC,GACxC,GAAiC,iBAAtBF,IAAmC1I,EAC7C,OAGD,MAAO6I,EAAaR,EAAUS,GAAaL,EAAoBC,EAAmBC,EAASC,GACrFkC,EAAchC,IAAcJ,EAC5BN,EAASF,EAAiBlI,GAC1BuK,EAAoBnC,EAAOU,IAAc,CAAC,EAC1CiC,EAAcrC,EAAkB/E,WAAW,KAEjD,QAAwB,IAAb0E,EAAX,CAUA,GAAI0C,EACH,IAAK,MAAMC,KAAgBlM,OAAO8C,KAAKwG,GACtCiC,EAAyBrK,EAASoI,EAAQ4C,EAActC,EAAkBjC,MAAM,IAIlF,IAAK,MAAOwE,EAAazC,KAAU1J,OAAO2L,QAAQF,GAAoB,CACrE,MAAMC,EAAaS,EAAY9G,QAAQqD,EAAe,IAEjDsD,IAAepC,EAAkBhF,SAAS8G,IAC9CN,EAAclK,EAASoI,EAAQU,EAAWN,EAAMH,SAAUG,EAAMF,mBAElE,CAdA,KARA,CAEC,IAAKxJ,OAAO8C,KAAK2I,GAAmB7J,OACnC,OAGDwJ,EAAclK,EAASoI,EAAQU,EAAWT,EAAUQ,EAAcF,EAAU,KAE7E,CAeD,EASAuC,OAAAA,CAAQlL,EAASwI,EAAOnG,GACvB,GAAqB,iBAAVmG,IAAuBxI,EACjC,OAAO,KAOR,MAAMmL,EAAMzB,EAAW,IAAI0B,MAAM5C,EAAO,CAAE6C,SAJ5B,EAIqCC,YAAY,IAASjJ,GAUxE,OAHCrC,EAAQuL,cAAcJ,GAGhBA,CACR,GAGD,IC7TMK,EAAUjF,IACF,CACZb,MAAO,wwBACP+F,QAAS,yoBACTC,QAAS,g3BACTC,KAAM,4RACNC,MAAO,qeAGGrF,IAAS,CAAC,GAQhBsF,EAAiBA,CAACC,EAAQC,EAAS,UACxC,MAAMC,EAAa,iBAAiBF,EAAOG,YACrC1F,EAAOuF,EAAOI,KAEpBvC,EAAaiB,GAAGxH,SAAU4I,EAAY,qBAAqBzF,OAAU,SAAUiC,GAK9E,GAJI,CAAC,IAAK,QAAQ9E,SAASsD,KAAKmF,UAC/B3D,EAAM4D,iBAGHrM,EAAWiH,MACd,OAGD,MAAMwC,EAAShF,EAAUO,uBAAuBiC,OAASA,KAAKjG,QAAQ,OAAOwF,KAC5DuF,EAAOO,oBAAoB7C,GAEnCuC,IACV,GAAE,EAOGO,EAAO,CACZC,EAAG,WACF,GAA8B,oBAAnBC,eACV,OAAO,IAAIA,eAEZ,IASIC,EATAC,EAAW,CACd,qBACA,qBACA,qBACA,qBACA,qBACA,qBAID,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAShM,OAAQiM,IACpC,IACCF,EAAM,IAAIG,cAAcF,EAASC,IACjC,KACD,CAAE,MAAOE,GAAI,CAGd,OAAOJ,CACR,EAEAK,KAAM,SAAUC,EAAKC,EAAUjB,EAAQkB,EAAMC,QAC9BC,IAAVD,IACHA,GAAQ,GAET,IAAIX,EAAID,EAAKC,IACbA,EAAEa,KAAKrB,EAAQgB,EAAKG,GACpBX,EAAEc,iBAAiB,mBAAoB,kBACvCd,EAAEe,mBAAqB,WACD,IAAjBf,EAAEgB,aAEC,MADEhB,EAAEiB,OAERR,EAAS,UAAW,CAACS,KAAMlB,EAAEmB,WAAYC,SAAUpB,EAAEqB,aAAcC,KAAMtB,EAAEiB,SAG3ER,EAAS,QAAS,CAACS,KAAMlB,EAAEmB,WAAYC,SAAUpB,EAAEqB,aAAcC,KAAMtB,EAAEiB,SAI7E,EACAjB,EAAEO,KAAKG,EACR,EAEAhO,IAAK,SAAU8N,EAAKE,EAAMD,EAAUE,GACnC,IAAIY,EAAQ,GAEZ,IAAKpO,EAAWuN,GACf,IAAK,IAAIrO,KAAOqO,EACfa,EAAMC,KAAKC,mBAAmBpP,EAAI,IAAM,IAAMoP,mBAAmBpP,EAAI,KAGvE0N,EAAKQ,KAAKC,GAAOe,EAAMpN,OAAS,IAAMoN,EAAMvJ,KAAK,KAAO,IAAKyI,EAAU,MAAO,KAAME,EACrF,EAEAe,KAAM,SAAUlB,EAAKE,EAAMD,EAAUE,GACpCZ,EAAKQ,KAAKC,EAAKC,EAAU,OAAQC,EAAMC,EACxC,GChBD,EA3FA,MACCpG,WAAAA,CAAY9G,GACX,GAAKA,EAAL,CAGA,GADAgH,KAAKkH,SAAW1J,EAAUC,KAAKzE,IAC1BgH,KAAKkH,SACT,MAAM,IAAIC,MAAM,mDAGjBnH,KAAKC,QAAU,CAAC,EAChBmH,EAAKhJ,IAAI4B,KAAKkH,SAAUlH,KAAKF,YAAYuH,SAAUrH,KAR/B,CASrB,CAEAsH,UAAAA,CAAWtO,EAAS+G,GACnB,OAAO,IAAIwH,EAAOxH,EAAQ/G,GAASf,KACpC,CAEAuP,OAAAA,GACCJ,EAAKxI,OAAOoB,KAAKkH,SAAUlH,KAAKF,YAAYuH,UAC5C1E,EAAaC,IAAI5C,KAAKkH,SAAUlH,KAAKF,YAAYmF,WAEjD,IAAK,MAAMwC,KAAgB3P,OAAO4P,oBAAoB1H,MACrDA,KAAKyH,GAAgB,IAEvB,CAEAE,MAAAA,CAAO3B,GACN,MAAM4B,EAAQ5H,KACd,IAAI6H,EAAW,KAEf,MAAMC,EAAW7B,IACZ4B,IAAUA,EAASE,UAAY9B,EAAI,EAGnC2B,EAAM3H,QAAQ5H,eAAe,SAI7BuP,EAAM3H,QAAQ+H,KAAKC,SAIpB,KAAaL,EAAM3H,QAAQ+H,OAC9BJ,EAAM3H,QAAQ+H,KAAKjD,OAAS,OAGzB,WAAY6C,EAAM3H,QAAQ+H,MAAQJ,EAAM3H,QAAQ+H,KAAKxF,SACxDqF,EAAWrK,EAAUC,KAAKmK,EAAM3H,QAAQ+H,KAAKxF,SAG1C,WAAYoF,EAAM3H,QAAQ+H,MAAQJ,EAAM3H,QAAQ+H,KAAKE,QACxDJ,EAAQ,iCAGTxC,EAAKsC,EAAM3H,QAAQ+H,KAAKjD,QAAQ6C,EAAM3H,QAAQ+H,KAAKC,MAAOL,EAAM3H,QAAQ+H,KAAK/B,MAAQ,CAAC,GAAG,SAAUO,EAAQP,GAC1G6B,EAAQ7B,EAAKU,UACbxL,EAAQ6K,EAAU,CAACQ,EAAQP,GAC5B,IACD,CAEAkC,eAAAA,GACC,IAAIvD,EAAQJ,EAAO,SAClB4D,EAASpI,KAAKkH,SAASvJ,cAAc,iBAElCyK,IACOA,EAAOzK,cAAc,QACrByK,EAAOC,mBAAmB,YAAazD,GAEnD,CAEA0D,cAAAA,CAAetC,EAAUhN,EAASuP,GAAa,EAAMC,IP0GtD,SAAiCxC,EAAUyC,EAAmBC,GAAoB,EAAMF,GACvF,IAAKE,EAEJ,YADAvN,EAAQ6K,GAIT,MACM2C,EAAmBH,GAsBexP,KACxC,IAAKA,EACJ,OAAO,EAIR,IAAI,mBAAE4P,EAAkB,gBAAEC,GAAoB7L,OAAOpD,iBAAiBZ,GAEtE,MAAM8P,EAA0B3O,OAAO4O,WAAWH,GAC5CI,EAAuB7O,OAAO4O,WAAWF,GAG/C,OAAKC,GAA4BE,GAKjCJ,EAAqBA,EAAmBhM,MAAM,KAAK,GACnDiM,EAAkBA,EAAgBjM,MAAM,KAAK,GAjDd,KAmDvBzC,OAAO4O,WAAWH,GAAsBzO,OAAO4O,WAAWF,KAP1D,CAOqG,EA1C5DI,CAAiCR,GAD1D,EAGxB,IAAIS,GAAS,EAEb,MAAMvH,EAAUA,EAAGa,aACdA,IAAWiG,IAIfS,GAAS,EACTT,EAAkBtF,oBAAoB5H,EAAgBoG,GACtDxG,EAAQ6K,GAAS,EAGlByC,EAAkBxF,iBAAiB1H,EAAgBoG,GACnDwH,YAAW,KACLD,GA6BsBlQ,KAC5BA,EAAQuL,cAAc,IAAIH,MAAM7I,GAAgB,EA7B9C6N,CAAqBX,EACtB,GACEE,EACJ,COpIEU,CAAuBrD,EAAUhN,EAASuP,EAAYC,EACvD,CAEA,kBAAOc,CAAYtQ,GAClB,OAAOoO,EAAKnP,IAAIuF,EAAUC,KAAKzE,GAAUgH,KAAKqH,SAC/C,CAEA,0BAAOhC,CAAoBrM,EAAS+G,EAAS,CAAC,GAC7C,OAAOC,KAAKsJ,YAAYtQ,IAAY,IAAIgH,KAAKhH,EAAUN,EAAWqH,GAAmB,CAAC,EAAVA,EAC7E,CAEA,mBAAWwJ,GACV,MAAO,MAAMvJ,KAAKkF,MACnB,CAEA,oBAAWD,GACV,MAAO,IAAIjF,KAAKuJ,UACjB,GCpED,EApBA,MACC,aAAOC,GACNpN,SAASqN,KAAKC,MAAMC,aAGpB,WACC,MAAMC,EAAgBxN,SAASC,gBAAgBwN,YAC/C,OAAO9N,KAAK+N,IAAI9M,OAAO+M,WAAaH,EACrC,CANmCI,GAAa,KAChD5N,SAASqN,KAAKC,MAAMO,SAAW,QAMhC,CAEA,cAAOC,GACN9N,SAASqN,KAAKC,MAAMO,SAAW,GAC/B7N,SAASqN,KAAKC,MAAMC,aAAe,GAEtB7K,EAAY7G,IAAImE,SAASqN,KAAM,UAC/B3K,EAAYF,OAAOxC,SAASqN,KAAM,QAChD,GClBKU,EAAa,cACbC,EAAkB,OAGxB,MAAMC,EACL,WAAOC,CAAKtE,GACXqE,EAASE,UACTpP,EAAQ6K,EACT,CAEA,WAAOwE,CAAKxE,GACXqE,EAASI,WACTtP,EAAQ6K,EACT,CAEA,cAAOuE,GACN,GAAI/M,EAAUC,KAAK,IAAM0M,GACxB,OAAO,EAGR,IAAIO,EAAWtO,SAASuO,cAAc,OACtCD,EAASvR,UAAUyR,IAAIT,GAEvB/N,SAASqN,KAAKD,OAAOkB,GAErBvB,YAAW,KACVuB,EAASvR,UAAUyR,IAAIR,EAAgB,GACrC,IAEHzH,EAAaiB,GAAG8G,EA3BM,yBA2BqB,KAC1CL,EAASG,OACTK,EAASX,SAAS,GAEpB,CAEA,eAAOO,GACN,IAAIzR,EAAUwE,EAAUC,KAAK,IAAM0M,GAC9BnR,IAELA,EAAQG,UAAUyF,OAAOwL,GAEzBjB,YAAW,KACVnQ,EAAQ4F,QAAQ,GACd,KACJ,EAGD,UCzCMyI,EAAW,aACXyD,EAAkB,OAGlBC,EAAmB,GAAG1D,SACtB2D,EAAmB,GAAG3D,WACtB4D,EAAmB,GAAG5D,SACtB6D,EAAmB,GAAG7D,UAEtB8D,GAA4B,mBAAmB9D,IAC/C+D,GAA2B,iBAAiB/D,IAC5CgE,GAA2B,SAAShE,aAE1C,MAAMiE,WAAkBC,EACvBzL,WAAAA,CAAY9G,EAAS+G,EAAS,CAAC,GAC9ByL,MAAMxS,EAAS+G,GAEfC,KAAKC,QAAUD,KAAKsH,WAAWtO,EAASwB,EAAgB,CACvDkQ,UAAU,EACVT,UAAU,EACVwB,UAAU,EACVzD,KAAM,CACLC,MAAO,GACPzF,OAAQ,GACRuC,OAAQ,QAEPhF,IAEHC,KAAK0L,qBACL1L,KAAKmI,iBACN,CAEA,eAAWjD,GACV,MAlCW,SAmCZ,CAEA,mBAAWmC,GACV,OAAOA,CACR,CAEAsE,MAAAA,CAAOxJ,GACN,OAAQnC,KAAK4L,WAAwC5L,KAAKwK,OAAhCxK,KAAKsK,KAAKnI,EACrC,CAEAmI,IAAAA,CAAKnI,GACJ,MAAMyF,EAAQ5H,KACVjH,EAAW6O,EAAMV,YAErBlH,KAAK2H,SAEahF,EAAauB,QAAQlE,KAAKkH,SAAU+D,EAAgB,CAAE9I,kBAC1D0J,mBAEVjE,EAAM3H,QAAQyK,UACjBL,EAASC,OAGN1C,EAAM3H,QAAQgK,UACjBY,EAASrB,SAGV5B,EAAMV,SAAS/N,UAAUyR,IAAIE,GAS7B9K,KAAKsI,gBAPoBwD,KACxBnJ,EAAaiB,GAAGpG,EAAUC,KAAK,gBAAiB,yBAAyB,WACxEmK,EAAM4C,MACP,IAEA7H,EAAauB,QAAQlE,KAAKkH,SAAUgE,EAAiB,CAAE/I,iBAAgB,GAElCnC,KAAKkH,UAAU,EAAM,KAC5D,CAEAsD,IAAAA,GACC,MAAM5C,EAAQ5H,KACVjH,EAAW6O,EAAMV,WAEHvE,EAAauB,QAAQlE,KAAKkH,SAAU6D,GACxCc,mBAEVjE,EAAM3H,QAAQyK,UACjBL,EAASG,MAAK,WACT5C,EAAM3H,QAAQgK,UACjBY,EAASX,SAEX,IAGGtC,EAAM3H,QAAQgK,UACjBY,EAASX,UAGVtC,EAAMV,SAAStH,aAAa,iBAAiB,GAC7CgI,EAAMV,SAAS/N,UAAUyF,OAAOkM,GAGhC9K,KAAKsI,gBADoByD,IAAMpJ,EAAauB,QAAQlE,KAAKkH,SAAU8D,IAC7BhL,KAAKkH,UAAU,GACtD,CAEAM,OAAAA,GACCgE,MAAMhE,SACP,CAEAoE,QAAAA,GACC,OAAO5L,KAAKkH,SAAS/N,UAAUC,SAAS0R,EACzC,CAEAY,kBAAAA,GACC/I,EAAaiB,GAAGxH,SAAU+O,IAA2B3J,IAClC,WAAdA,EAAM5J,MAENoI,KAAKC,QAAQwL,SAChBzL,KAAKwK,OAIN7H,EAAauB,QAAQlE,KAAKkH,SAAUkE,IAAyB,GAE/D,EAGDvG,EAAeyG,IAKf3I,EAAaiB,GAAGxH,SAAUiP,GA5HE,8BA4H8C,SAAU7J,GACnF,MAAMgB,EAAShF,EAAUQ,uBAAuBgC,MAMhD,GAJI,CAAC,IAAK,QAAQtD,SAASsD,KAAKmF,UAC/B3D,EAAM4D,iBAGHrM,EAAWiH,MACd,OAGDA,KAAKJ,aAAa,iBAAiB,GACnC+C,EAAakB,IAAIrB,EAAQwI,GAAkB,KAE1ChL,KAAKJ,aAAa,iBAAiB,EAAM,IAG1C,MAAMoM,EAAcxO,EAAUC,KAAK,oBAC/BuO,GAAeA,IAAgBxJ,GAClC8I,GAAUhC,YAAY0C,GAAaxB,OAGvBc,GAAUjG,oBAAoB7C,GACtCmJ,OAAO3L,KACb,IAEA,YC1JMqH,GAAW,cACXyD,GAAkB,OAClBmB,GAAsB,cACtBC,GAAwB,gBAExBC,GAA6B,WAAWF,OAAwBA,KAEhEG,GAAsB,8BAGtBrB,GAAmB,GAAG1D,UACtB2D,GAAmB,GAAG3D,YACtB4D,GAAmB,GAAG5D,UACtB6D,GAAmB,GAAG7D,WAEtBgE,GAA2B,SAAShE,cAE1C,MAAMgF,WAAmBd,EACxBzL,WAAAA,CAAY9G,EAAS+G,EAAS,CAAC,GAC9ByL,MAAMxS,EAAS+G,GAEfC,KAAKC,QAAUD,KAAKsH,WAAWtO,EAASwB,EAAgB,CACvDmR,QAAQ,EACRW,OAAQ,KACRtE,KAAM,CACLC,MAAO,GACPzF,OAAQ,GACRuC,OAAQ,QAEPhF,IAEHC,KAAKuM,kBAAmB,EACxBvM,KAAKwM,cAAgB,GAErB,MAAMC,EAAajP,EAAUI,QAAQwO,IAErC,IAAK,MAAMM,KAAQD,EAAY,CAC9B,MAAMjQ,EAAWgB,EAAUO,uBAAuB2O,GAC5CC,EAAgBnP,EAAUI,QAAQpB,GAAU4C,QAAOwN,GAAgBA,IAAiB5M,KAAKkH,WAE9E,OAAb1K,GAAqBmQ,EAAcjT,QACtCsG,KAAKwM,cAAczF,KAAK2F,EAE1B,CAEA1M,KAAK6M,sBAEA7M,KAAKC,QAAQqM,QACjBtM,KAAK8M,0BAA0B9M,KAAKwM,cAAexM,KAAK4L,YAGrD5L,KAAKC,QAAQ0L,QAChB3L,KAAK2L,QAEP,CAEA,eAAWzG,GACV,MA1DW,UA2DZ,CAEA,mBAAWmC,GACV,OAAOA,EACR,CAEAsE,MAAAA,CAAOxJ,GACN,OAAQnC,KAAK4L,WAAwC5L,KAAKwK,OAAhCxK,KAAKsK,KAAKnI,EACrC,CAEAmI,IAAAA,GACC,MAAM1C,EAAQ5H,KAEd,GAAI4H,EAAM2E,kBAAoB3E,EAAMgE,WAAY,OAEhD,IAAImB,EAAiB,GAQrB,KANInF,EAAM3H,QAAQqM,SACjBS,EAAiB/M,KAAKgN,uBApEA,wCAqEpB5N,QAAOpG,GAAWA,IAAYgH,KAAKkH,WACnCpK,KAAI9D,GAAWqT,GAAWhH,oBAAoBrM,EAAS,CAAE2S,QAAQ,OAGhEoB,EAAerT,QAAUqT,EAAe,GAAGR,kBAE5B5J,EAAauB,QAAQ0D,EAAMV,SAAU+D,IACzCY,kBAAf,CAEA,IAAK,MAAMoB,KAAkBF,EAC5BE,EAAezC,OAGhB5C,EAAMV,SAAS/N,UAAUyF,OAAOqN,IAChCrE,EAAMV,SAAS/N,UAAUyR,IAAIsB,IAE7BtE,EAAMV,SAASwC,MAAMwD,OAAS,EAE9BtF,EAAMkF,0BAA0BlF,EAAM4E,eAAe,GACrD5E,EAAM2E,kBAAmB,EAEzB3E,EAAMD,SAYNC,EAAMU,gBAVW6E,KAChBvF,EAAM2E,kBAAmB,EAEzB3E,EAAMV,SAAS/N,UAAUyF,OAAOsN,IAChCtE,EAAMV,SAAS/N,UAAUyR,IAAIqB,GAAqBnB,IAElDlD,EAAMV,SAASwC,MAAMwD,OAAS,GAC9BvK,EAAauB,QAAQ0D,EAAMV,SAAUgE,GAAgB,GAGvBtD,EAAMV,UAAU,GAG/CU,EAAMV,SAASwC,MAAMwD,OAAS,GAAGtF,EAAMV,SAAmB,gBA7BnB,CA8BxC,CAEAsD,IAAAA,GACC,MAAM5C,EAAQ5H,KAEd,IAAI4H,EAAM2E,kBAAqB3E,EAAMgE,aAElBjJ,EAAauB,QAAQ0D,EAAMV,SAAU6D,IACzCc,iBAAf,CAEAjE,EAAMV,SAASwC,MAAMwD,OAAS,GAAGlN,KAAKkH,SAASkG,wBAAwBF,WACvE1R,EAAOoM,EAAMV,UAEbU,EAAMV,SAAS/N,UAAUyR,IAAIsB,IAC7BtE,EAAMV,SAAS/N,UAAUyF,OAAOqN,GAAqBnB,IAErD,IAAK,MAAM5G,KAAW0D,EAAM4E,cAAe,CAC1C,MAAMxT,EAAUwE,EAAUQ,uBAAuBkG,GAE7ClL,IAAY4O,EAAMgE,SAAS5S,IAC9B4O,EAAMkF,0BAA0B,CAAC5I,IAAU,EAE7C,CAEA0D,EAAM2E,kBAAmB,EASzB3E,EAAMV,SAASwC,MAAMwD,OAAS,GAC9BtF,EAAMU,gBARW6E,KAChBvF,EAAM2E,kBAAmB,EACzB3E,EAAMV,SAAS/N,UAAUyF,OAAOsN,IAChCtE,EAAMV,SAAS/N,UAAUyR,IAAIqB,IAC7BtJ,EAAauB,QAAQ0D,EAAMV,SAAU8D,GAAiB,GAIxBpD,EAAMV,UAAU,EA1BR,CA2BxC,CAEAM,OAAAA,GACCgE,MAAMhE,SACP,CAEAoE,QAAAA,CAAS5S,EAAUgH,KAAKkH,UACvB,OAAOlO,EAAQG,UAAUC,SAAS0R,GACnC,CAEAgC,yBAAAA,CAA0BO,EAAcC,GACvC,GAAKD,EAAa3T,OAIlB,IAAK,MAAMV,KAAWqU,EACrBrN,KAAKuN,mBAAmBvU,EAASsU,EAEnC,CAEAT,mBAAAA,GACC,IAAK7M,KAAKC,QAAQqM,OAAQ,OAE1B,MAAMkB,EAAWxN,KAAKgN,uBAAuBZ,IAE7C,IAAK,MAAMpT,KAAWwU,EAAU,CAC/B,MAAMC,EAAWjQ,EAAUQ,uBAAuBhF,GAE9CyU,GACHzN,KAAK8M,0BAA0B,CAAC9T,GAAUgH,KAAK4L,SAAS6B,GAE1D,CACD,CAEAT,sBAAAA,CAAuBxQ,GACtB,MAAMgR,EAAWhQ,EAAUC,KAAK0O,GAA4BnM,KAAKC,QAAQqM,QACzE,OAAO9O,EAAUC,KAAKjB,EAAUwD,KAAKC,QAAQqM,QAAQlN,QAAOpG,IAAYwU,EAAS9Q,SAAS1D,IAC3F,CAEAuU,kBAAAA,CAAmBvU,EAASsU,GAC3BtU,EAAQG,UAAUwS,OAzLS,gBAyLqB2B,GAChDtU,EAAQ4G,aAAa,gBAAiB0N,GACtCtU,EAAQ+O,UAAYjJ,EAAY7G,IAAIe,EAAS,QAAQsU,EAAS,OAAS,gBAAkBtU,EAAQ+O,SAClG,EAMDpF,EAAaiB,GAAGxH,SAAUiP,GAA0Be,IAAsB,SAAU5K,IACtD,MAAzBA,EAAMgB,OAAO2C,SAAoB3D,EAAMY,gBAAmD,MAAjCZ,EAAMY,eAAe+C,UACjF3D,EAAM4D,iBAGP5H,EAAUS,gCAAgC+B,MAAMnF,SAAQ,SAAU7B,GACjEqT,GAAWhH,oBAAoBrM,EAAS,CAAC2S,QAAQ,IAAQA,QAC1D,GACD,IAEA,YCxIA,GA7EA,MACC7L,WAAAA,GACCE,KAAK0N,YAAc,CAClBC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,IAAK,KACLC,KAAM,KAER,CAOA,YAAOC,CAAMpJ,GAEZ,OADe,IAAI9E,MACHmO,OAAOrJ,EACxB,CAMA,0BAAOsJ,GACN,IAAIF,GAAQ,EACZ,IAAUG,EAMV,OANUA,EAIPC,UAAUC,WAAWD,UAAUE,QAAQxR,OAAOyR,OAH5C,sVAAsVnP,KAAK+O,IAAI,0kDAA0kD/O,KAAK+O,EAAE5O,MAAM,EAAE,OAC37DyO,GAAQ,GAIHA,CACR,CAEAC,MAAAA,CAAOrJ,GACN,IAAI4J,EAAc1R,OAAO+M,WACxB4E,EAAkB3O,KAAK4O,sBAAsB9J,GAC7C4I,EAAc1N,KAAK0N,YACnBmB,EAAQ/W,OAAO8C,KAAK8S,GAAajQ,MAAK7F,GAAO8V,EAAY9V,KAAS+W,IAE/D/T,EAAO9C,OAAO8C,KAAK8S,GACtBoB,EAAMlU,EAAKyF,QAAQwO,GAEpB,OAAOH,GAAehB,EAAY9S,EAAKkU,EAAM,GAC9C,CAEAF,qBAAAA,CAAsB9J,GACrB,IAAI9L,EAAU8L,EAAOoC,SACpBnH,EAAS+E,EAAO7E,QAChB8O,EAA0B,EAoB3B,OAjBCA,EADG/V,EAAQG,UAAUC,SAAS2G,EAAOiP,QAAQC,MACnBjP,KAAK0N,YAAYO,KACjCjV,EAAQG,UAAUC,SAAS2G,EAAOiP,QAAQE,KAC1BlP,KAAK0N,YAAYM,IACjChV,EAAQG,UAAUC,SAAS2G,EAAOiP,QAAQG,IAC1BnP,KAAK0N,YAAYK,GACjC/U,EAAQG,UAAUC,SAAS2G,EAAOiP,QAAQI,IAC1BpP,KAAK0N,YAAYI,GACjC9U,EAAQG,UAAUC,SAAS2G,EAAOiP,QAAQK,IAC1BrP,KAAK0N,YAAYG,GACjC7U,EAAQG,UAAUC,SAAS2G,EAAOiP,QAAQM,IAC1BtP,KAAK0N,YAAYE,IACjC5U,EAAQG,UAAUC,SAAS2G,EAAOiP,QAAQO,IAC1BvP,KAAK0N,YAAYC,IAKrCoB,CACR,GCnEK1H,GAAW,SAKXyD,GAAoB,OACpBV,GAAoB,OACpBoF,GAAoB,SAMpBzE,GAAmB,GAAG1D,UACtB2D,GAAmB,GAAG3D,YACtB4D,GAAmB,GAAG5D,UACtB6D,GAAmB,GAAG7D,WAEtBoI,GAA2B,aAAapI,cACxCqI,GAA2B,YAAYrI,cACvCsI,GAAuB,SAAStI,cAChCuI,GAAuB,SAASvI,cAChCwI,GAAwB,UAAUxI,cAExC,MAAMyI,WAAcvE,EACnBzL,WAAAA,CAAY9G,EAAS+G,EAAS,CAAC,GAC9ByL,MAAMxS,GAENgH,KAAKC,QAAUD,KAAKsH,WAAWtO,EAASwB,EAAgB,CACvDuV,YAAY,EACZC,UAAW,aACXhB,QAAS,CACRiB,gBAAiB,0BACjBC,gBAAiB,0BACjBC,UAAW,mBACXtS,UAAW,mBACXuS,QAAS,iBACTC,OAAQ,gBACRC,OAAQ,gBACRC,OAAQ,gBACRC,MAAO,eACPC,KAAM,cACNxB,KAAM,cACNC,IAAK,aACLC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,aAELe,QAAQ,EACRE,OAAO,EACPE,UAAU,EACVC,UAAU,EACVhF,OAAQ,gCACRwE,UAAW,CACVS,QAAQ,EACRC,QAAQ,EACRC,MAAO,GACPrH,KAAM,MAEPzD,SAAUtK,EACVqV,WAAW,EACXC,iBAAkB,IAClBhJ,KAAM,CACLC,MAAO,GACPzF,OAAQ,GACRuC,OAAQ,QAEPhF,IAEHC,KAAKiR,YAAc,KACnBjR,KAAKkR,WAAa,IAAMlR,KAAKC,QAAQ+O,QAAQoB,QAE7CpQ,KAAKmR,WAAa,GAClBnR,KAAKoR,OAAS5T,EAAUI,QAAQ,IAAMoC,KAAKC,QAAQ+O,QAAQoB,QAAU,QAASpQ,KAAKkR,aAEpD,IAA3BlR,KAAKC,QAAQ8Q,YAChB/Q,KAAKC,QAAQ+Q,iBAAmB,GAElC,CAEA,eAAW9L,GACV,MApFW,KAqFZ,CAEA,mBAAWmC,GACV,OAAOA,EACR,CAEA,cAAI6J,GACH,OAAOlR,KAAKiR,WACb,CAEA,cAAIC,CAAWG,GACd,IAAIC,EAAM9T,EAAUC,KAAK4T,EAAIrR,KAAKkH,UAC7BoK,IACLtR,KAAKiR,YAAcK,EACpB,CAEAC,KAAAA,GACC,IAAKvR,KAAKkR,WAAY,OAEtB,IAAInR,EAASC,KAAKC,QA+BlB,GA5BAD,KAAKkH,SAAS/N,UAAUyR,IAAI7K,EAAOiP,QAAQnR,WAC3CmC,KAAKkH,SAAS/N,UAAUyR,IAAI,UAAY7K,EAAOiQ,WAG1CjQ,EAAOgQ,aACXhQ,EAAOuQ,QAAS,GAGZvQ,EAAOoQ,UAAUU,OAOrB7Q,KAAKkH,SAAS/N,UAAUyR,IAAI7K,EAAOiP,QAAQkB,iBANtCnQ,EAAOgQ,YAAehQ,EAAOuQ,QAED,IAAtBvQ,EAAOgQ,YACjB/P,KAAKkH,SAAS/N,UAAUyR,IAAI,UAAY7K,EAAOgQ,YAF/C/P,KAAKkH,SAAS/N,UAAUyR,IAAI7K,EAAOiP,QAAQsB,QASzCvQ,EAAOyQ,QACVxQ,KAAKkH,SAAS/N,UAAUyR,IAAI7K,EAAOiP,QAAQwB,OAEvCgB,GAAWpD,uBACdpO,KAAKkH,SAAS/N,UAAUyF,OAAOmB,EAAOiP,QAAQwB,QAK5CzQ,EAAOuQ,SAAWvQ,EAAOoQ,UAAU1G,MAGlB,OAFFjM,EAAUC,KAAK,IAAMsC,EAAOiP,QAAQmB,UAAWnQ,KAAKkH,UAE5C,CACzB,IAAIuK,EAAS,GACZtB,EAAY,gBAAkBpQ,EAAOiP,QAAQmB,UAAY,0DAEtDpQ,EAAOoQ,UAAUW,QACpBW,EAAS,gBAAkB1R,EAAOiP,QAAQmB,UAAY,YAAapQ,EAAOoQ,UAAUW,MAAO,WAG9D,OAA1B/Q,EAAOoQ,UAAU1G,OACpB0G,EAAYpQ,EAAOoQ,UAAU1G,MAG9BzJ,KAAKkH,SAASmB,mBAAmB,aAAa,iCAAmCtI,EAAOiP,QAAQmB,UAAY,8BAAgCsB,EAAStB,EAAW,OACjK,CAID,GAAIpQ,EAAO4L,OAAQ,CAClB,IAAI+F,EAAc,IAAIlU,EAAUI,QAAQ,oCAAqCoC,KAAKkH,WACjFyE,EAAS,wBAA0B5L,EAAO4L,OAAS,UAEhD+F,EAAYhY,QACfgY,EAAY7W,SAAQ,SAAU6R,GACxBA,EAAK/O,cAAc,YAAe+O,EAAK3S,QAAQ,WACnD2S,EAAK9M,aAAa,gBAAiB,SACnC8M,EAAKrE,mBAAmB,YAAasD,GAEvC,GAEF,CAEI5L,EAAO4Q,UAAYa,GAAWtD,MAAMlO,OAA8B,aAArBD,EAAOiQ,WAaxD,SAAqBpI,GACpB,IAAI+J,EAA8B/J,EAAMsJ,WAAWrH,YAClD+H,EAA6B,EAC7BC,EAAQrU,EAAUC,KAAK,QAASmK,EAAMsJ,YACtCY,EAAQtN,EAAO,QAEhB,GAAIoD,EAAMwJ,OAAO1X,OAAQ,CACxB,GAAImY,EACHD,EAA6BC,EAAMhI,gBAC7B,CACN,IAAIkI,EAAKvU,EAAUC,KAAK,IAAKmK,EAAMwJ,OAAO,IACzCY,EAAapY,iBAAiBmY,GAM/BH,EALe1X,EAAc8X,EAAWC,YAAYxS,MAAM,GAAI,IAC7CvF,EAAc8X,EAAWrI,aAAalK,MAAM,GAAI,IAI1B,EACxC,CAEA,IAAK,IAAIyS,KAAStK,EAAMwJ,OAEvBQ,GADYM,EAAM9E,wBAAwB+E,MAGrCR,EAA+BC,GACnChK,EAAMuJ,WAAWpK,KAAKmL,GACtBA,EAAMtT,UAEFgJ,EAAMuJ,WAAWzX,SAChBmY,EACHjK,EAAMsJ,WAAWkB,aAAaxK,EAAMuJ,WAAW,GAAIU,GAEnDjK,EAAMsJ,WAAWmB,YAAYzK,EAAMuJ,WAAW,IAE/CvJ,EAAMuJ,WAAWmB,OAAO,EAAG,IAK1B1K,EAAMuJ,WAAWzX,OACfmY,GACJjK,EAAMsJ,WAAW7I,mBAAmB,YAAY,+DAAqEyJ,EAAO,aAGzHD,GACHA,EAAMjT,SAIR,IAAI2T,EAAK3K,EAAMsJ,WAAWvT,cAAc,SACxC,GAAI4U,GAAM3K,EAAMuJ,WAAWzX,OAAQ,CAClC,IAAI8Y,EAAYD,EAAG5U,cAAc,MACjC,GAAI6U,EACH,IAAK,IAAIC,KAAQ7K,EAAMuJ,WACtBqB,EAAUE,QAAQD,OAEb,CACN,IAAID,EAAYpW,SAASuO,cAAc,MACvC6H,EAAUrZ,UAAUyR,IAAI,oBACxB4H,EAAUrZ,UAAUyR,IAAI,SAExB,IAAK,IAAI6H,KAAQ7K,EAAMuJ,WACtBqB,EAAUE,QAAQD,GAGnBF,EAAGF,YAAYG,EAChB,CACD,CACD,CACD,CAjFCG,CAAY3S,MAGT,cAAeA,KAAKC,QAAQ+F,UAC/B7K,EAAQ6E,KAAKC,QAAQ+F,SAAS4M,UAAW,CAAC5S,MA8E5C,CAEAsK,IAAAA,CAAKnI,GACJ,IAAIK,EAASL,EAAcA,cAE3B,IAAKK,GAAUzJ,EAAWyJ,GACzB,OAQD,GALKA,EAAOzI,QAAQ,sBACnByI,EAAOrJ,UAAUyR,IAAI,SAGJjI,EAAauB,QAAQ1B,EAAQyI,GAAgB,CAAE9I,kBACnD0J,iBAAkB,OAEhC,IAAIgH,EAAOrV,EAAUC,KAAK,oBAAqB+E,GAC9CiQ,EAAOjQ,EAAOsQ,kBAEXL,GAAMA,EAAK7S,aAAa,gBAAiB,QAC7CiT,EAAK1Z,UAAUyR,IAAIE,IACnBtI,EAAOrJ,UAAUyR,IAAI4E,IAcrB,SAAyBuD,GACxB,IAAI,MAACZ,EAAK,MAAEa,GAASD,EAAM3F,wBAGvB6F,EAFYjW,OAAO+M,WAEMiJ,EAAQb,EAErCY,EAAM5Z,UAAUyF,OAAO,SACvBmU,EAAM5Z,UAAUyF,OAAO,QAEvB,IACCsU,EADaH,EAAMhZ,QAAQ,MACb+D,iBAAiB,MAEhC,GAAImV,EAAUd,EACb,IAAK,MAAMgB,KAAOD,EACjBC,EAAIha,UAAUyR,IAAI,aAGnB,IAAK,MAAMuI,KAAOD,EACjBC,EAAIha,UAAUyR,IAAI,QAGrB,CAjCAwI,CAAgBP,GAMhB7S,KAAKsI,gBAJoBwD,KACxB+G,EAAK1Z,UAAUyR,IAAIR,IACnBzH,EAAauB,QAAQ1B,EAAQ0I,GAAiB/I,EAAc,GAEvB0Q,GAAM,EAAM,GA4BnD,CAEArI,IAAAA,CAAKrI,GACJ,MAAMyF,EAAQ5H,KACd,GAAI,iBAAkB5D,SAASC,gBAC9B,IAAK,MAAMrD,IAAW,GAAGkC,UAAUkB,SAASqN,KAAK+D,UAChD7K,EAAaC,IAAI5J,EAAS,YAAa0C,GAIzC,IAAI1C,EAAUmJ,EAAcA,cAM5B,GAJI,QAASA,GAAiBA,EAAcmP,MAC3CtY,EAAUmJ,EAAcmP,KAGrBtY,EAAS,CAEZ,GADkB2J,EAAauB,QAAQlL,EAAS+R,IAClCc,iBAAkB,OAEhC7S,EAAQG,UAAUyF,OAAO4Q,IAErBxW,EAAQG,UAAUC,SAAS,UAC9BJ,EAAQG,UAAUyF,OAAO,SAG1B,IAAIpB,EAAUI,QAAQ,IAAMkN,GAAiB9R,IAAU6B,SAAQ,SAAUwW,EAAIgC,GAC5EhC,EAAGlY,UAAUyF,OAAOwL,IAEpB,IAAIkC,EAAS+E,EAAGtX,QAAQ,aACpBuS,EAAOnT,UAAUC,SAASoW,KAC7BlD,EAAOnT,UAAUyF,OAAO4Q,IAGzB,IAAIiD,EAAOpB,EAAGiC,uBAGd,GAFIb,GAAMA,EAAK7S,aAAa,gBAAiB,SAE/B,IAAVyT,EAAa,CAChB,MAAMtH,EAAmBA,KACxBsF,EAAGlY,UAAUyF,OAAOkM,IACpBnI,EAAauB,QAAQmN,EAAIrG,GAAkB7I,EAAc,EAG1DyF,EAAMU,eAAeyD,EAAkBsF,GAAI,EAAM,IAClD,CACD,GACD,CACD,CAOA,WAAOkC,CAAKva,EAAS+G,EAAS,CAAC,GAC9B,MAAM1B,EAAWyR,GAAMzK,oBAAoBrM,EAAS+G,GACpD1B,EAASkT,QAET,IAAIiC,EAAQhW,EAAUI,QAAQ,YAAaS,EAAS4S,aAEhD5S,EAAS4B,QAAQuQ,MACpB,IAAIgD,GAAO3Y,SAAQ,SAAUwW,GAC5B,IAAIoC,EAAc,KAClB9Q,EAAaiB,GAAGyN,EAAI5B,IAA0B,SAAUjO,GACvD,GAAIiS,EAAa,OACjB3D,GAAM4D,cAAclS,GAEpB,IAAIgB,EAAShB,EAAMgB,OAAOzI,QAAQ,aAClC,IAAKyI,EAAQ,OAEb,IAAKnE,EAAS6S,WAAW9X,SAASoJ,GAAS,OAC3CiR,EAAcjR,EAEd,IAAIL,EAAgB,CACnBA,cAAeK,GAGhBnE,EAASiM,KAAKnI,EACf,IACAQ,EAAaiB,GAAGyN,EAAI3B,IAAyB,SAAUlO,GACtD,IAAKiS,EAAa,OAElB,IAAItR,EAAgBX,EAAMW,cAAcpI,QAAQ,aAC/CuX,EAAMmC,EAEP,KAAOtR,GAAe,CACrB,GAAIA,IAAkBsR,EAAa,OACnCtR,EAAgBA,EAAclI,UAC/B,CAEAwZ,EAAc,KACdpV,EAASmM,KAAK,CAACrI,cAAeA,EAAemP,IAAKA,GACnD,GACD,KAEA3O,EAAaiB,GAAGxH,SAAUwT,GAAsBE,GAAM6D,YACtDhR,EAAaiB,GAAGxH,SAAUuT,GAAsBG,GAAM6D,YACtDhR,EAAaiB,GAAGxH,SAAUuT,GA7YA,aA6Y4C,SAAUnO,GAC/E,IAAK1C,EAAYR,IAAI0B,KAAM,iBAC1B,OAGG,UAAW3B,EAAS4B,QAAQ+F,UAC/B7K,EAAQkD,EAAS4B,QAAQ+F,SAAS4N,MAAO,CAAC5T,OAG3CwB,EAAM4D,iBAEN,IAAIyO,EAAO7T,KAAKjG,QAAQ,WACvB+Z,EAAUD,EAAKlW,cAAc,UAE1B6E,EAASxC,KAAKjG,QAAQ,aAC1B,GAAKyI,KAEDzJ,EAAWyJ,IAAYhJ,EAAUgJ,IAArC,CAIA,GAAIsR,GAAW9T,KAAKjG,QAAQ,WAC3B,GAAIyI,EAAOrJ,UAAUC,SAAS,UAE7B,YADAiF,EAASmM,KAAK,CAACrI,cAAeK,QAI/B,IAAIhF,EAAUI,QAAQ,UAAWiW,IAAOhZ,SAAQ,SAAUwW,GACrDA,GAAMA,IAAO7O,GAChBnE,EAASmM,KAAK,CAACrI,cAAekP,GAEhC,IAGDhT,EAASiM,KAAK,CAACnI,cAAeK,GAf9B,CAgBD,KAGD,MAAMuR,EAAe3X,SAAS4X,eAAe,eAC7C,IAAI7D,EAAY9R,EAAS6I,SAASvJ,cAAc,IAAMU,EAAS4B,QAAQ+O,QAAQmB,WAE3E4D,GAAgB5D,IACnB4D,EAAa9Q,iBAAiB,mBAAmB,WAChDkN,EAAUhX,UAAUyR,IAAIvM,EAAS4B,QAAQ+O,QAAQiB,gBAClD,IAEA8D,EAAa9Q,iBAAiB,mBAAmB,WAChDkN,EAAUhX,UAAUyF,OAAOP,EAAS4B,QAAQ+O,QAAQiB,gBACrD,IAEF,CAEA,iBAAO0D,CAAWnS,GACI,IAAjBA,EAAM4G,QAAgC,UAAf5G,EAAMqB,MAAkC,QAAdrB,EAAM5J,KAI3DkY,GAAM4D,cAAclS,EACrB,CAEA,oBAAOkS,CAAclS,GACpB,MAAMyS,EAAczW,EAAUI,QAAQ,kDAEtC,IAAK,MAAM+N,KAAUsI,EAAa,CACjC,MAAMC,EAAUpE,GAAMxG,YAAYqC,EAAO5R,QAAQ,YACjD,IAAKma,EAAS,SAEd,GAAI1S,EAAMgB,OAAOzI,QAAQ,UACxB,OAGD,MAAMoI,EAAgB,CAAEA,cAAewJ,GAEpB,UAAfnK,EAAMqB,OACTV,EAAc6C,WAAaxD,GAG5B0S,EAAQ1J,KAAKrI,EACd,CACD,EAGDQ,EAAaiB,GAAG5G,OAAQ6S,IAAuB,SAAUrO,GACvCsO,GAAMzK,oBAAoB,UAAW,CAAC,GAC9CkM,OACV,IAEA,YC9bA,GAnDA,MACCzR,WAAAA,CAAYqU,EAAM,CAAC,GAClBnU,KAAKD,OAASvF,EAAgB,CAC7BxB,QAAS,KACT6Z,KAAM,MACJsB,EACJ,CAEAC,aAAAA,GACC,MAAMxM,EAAQ5H,KACRqU,EAAWR,IAChB,IAAIvH,EAASuH,EAAK5Z,WACjBgQ,EAAWrQ,iBAAiB0S,GAAQrC,SAErC,MAAuB,SAAnBqC,EAAOnH,QAOH,KANU,YAAb8E,EAGIqC,OAFP+H,EAAQ/H,EAMV,EAGD,IAAqBgI,EAAKC,EAAtBC,GAAU,EACbC,EAAS7M,EAAM7H,OAAO8S,KAAKzF,wBAC3Bd,EAAS1E,EAAM7H,OAAO/G,QAAQoU,wBAE/B,GAAIiH,EAAQzM,EAAM7H,OAAO/G,SACxBwb,GAAU,EACVF,EAAMG,EAAOH,IACbC,EAAOE,EAAOF,SACR,CACN,IAAIG,EAAS9a,iBAAiBgO,EAAM7H,OAAO8S,MAC3CyB,EAAMpa,EAAcwa,EAAOJ,IAAI7U,MAAM,GAAI,IACzC8U,EAAOra,EAAcwa,EAAOH,KAAK9U,MAAM,GAAI,GAC5C,CAMA,OAJKgV,EAAOF,KAAOE,EAAOtC,MAASnV,OAAO+M,aACzCwK,EAAOjI,EAAO6F,MAAQsC,EAAOtC,OAGvB,CACNqC,QAASA,EACTF,IAAKA,EACLC,KAAMA,EAER,GChDKlN,GAAmB,cACnByD,GAAmB,OACnBV,GAAmB,OACnBuK,GAAmB,sBAEnBvI,GAAuB,8BAEvBrB,GAAmB,GAAG1D,UACtB2D,GAAmB,GAAG3D,YACtB4D,GAAmB,GAAG5D,UACtB6D,GAAmB,GAAG7D,WAEtBuI,GAA2B,SAASvI,cACpCuN,GAA2B,WAAWvN,cACtCsI,GAA2B,SAAStI,cACpCoI,GAA2B,aAAapI,cACxCqI,GAA2B,YAAYrI,cAE7C,MAAMwN,WAAmBtJ,EACxBzL,WAAAA,CAAY9G,EAAS+G,GACpByL,MAAMxS,EAAS+G,GAEf,IAAI+U,EAAgB,CACnBC,OAAQ,CAAC,EAAG,GACZC,MAAM,EACNtK,UAAU,EACVT,UAAU,EACVwB,UAAU,EACVuE,UAAW,SACXe,WAAW,EACXC,iBAAkB,IAClBR,OAAO,EACPxI,KAAM,CACLC,MAAO,GACPzF,OAAQ,GACRuC,OAAQ,QAIN,WAAYhF,GAAU/E,MAAMC,QAAQ8E,EAAOgV,UAC9CD,EAAcC,OAAShV,EAAOgV,QAG/B/U,KAAKC,QAAUD,KAAKsH,WAAWtO,EAASwB,EAAgBsa,EAAe/U,IAEvEC,KAAKqU,QAAUrU,KAAKkH,SAASjN,WAC7B+F,KAAKiV,MAAQzX,EAAUC,KAAK,IAAMkX,GAAkB3U,KAAKqU,SACzDrU,KAAKkV,cAAe,GAEW,IAA3BlV,KAAKC,QAAQ8Q,YAChB/Q,KAAKC,QAAQ+Q,iBAAmB,GAElC,CAEA,eAAW9L,GACV,MAxDuB,UAyDxB,CAEA,mBAAWmC,GACV,OAAOA,EACR,CAEAsE,MAAAA,GACC,OAAO3L,KAAK4L,WAAa5L,KAAKwK,OAASxK,KAAKsK,MAC7C,CAEAA,IAAAA,GACC,GAAIvR,EAAWiH,KAAKkH,WAAalH,KAAK4L,WAAY,OAElD,MAAMzJ,EAAgB,CACrBA,cAAenC,KAAKkH,UAIrB,IADkBvE,EAAauB,QAAQlE,KAAKkH,SAAU+D,GAAgB9I,GACxD0J,iBAAd,CAEA,GAAI,iBAAkBzP,SAASC,gBAC9B,IAAK,MAAMrD,IAAW,GAAGkC,UAAUkB,SAASqN,KAAK+D,UAChD7K,EAAaiB,GAAG5K,EAAS,YAAa0C,GAIxCsE,KAAK2H,SAEL3H,KAAKkH,SAAStH,aAAa,iBAAiB,GAC5CI,KAAKkH,SAAS/N,UAAUyR,IAAIE,IAC5B9K,KAAKiV,MAAM9b,UAAUyR,IAAIE,IACzB9K,KAAKmV,gBAMLnV,KAAKsI,gBAJoBwD,KACxB9L,KAAKiV,MAAM9b,UAAUyR,IAAIR,IACzBzH,EAAauB,QAAQlE,KAAKkH,SAAUgE,GAAiB/I,EAAc,GAE9BnC,KAAKiV,OAAO,EAAM,GAnBlB,CAoBvC,CAEAzK,IAAAA,GACC,GAAIzR,EAAWiH,KAAKkH,YAAclH,KAAK4L,WACtC,OAGD,MAAMzJ,EAAgB,CACrBA,cAAenC,KAAKkH,UAGrBlH,KAAKoV,cAAcjT,EACpB,CAEAqF,OAAAA,GACC,OAAOgE,MAAMhE,SACd,CAEAoE,QAAAA,GACC,OAAO5L,KAAKkH,SAAS/N,UAAUC,SAAS0R,GACzC,CAEAsK,aAAAA,CAAcjT,GAEb,IADkBQ,EAAauB,QAAQlE,KAAKkH,SAAU6D,GAAgB5I,GACxD0J,iBAAd,CAIA,GAAI,iBAAkBzP,SAASC,gBAC9B,IAAK,MAAMrD,IAAW,GAAGkC,UAAUkB,SAASqN,KAAK+D,UAChD7K,EAAaC,IAAI5J,EAAS,YAAa0C,GAIzCsE,KAAKiV,MAAM9b,UAAUyF,OAAOwL,IAC5BpK,KAAKkH,SAAS/N,UAAUyF,OAAOkM,IAC/B9K,KAAKkH,SAAStH,aAAa,gBAAiB,SAM5CI,KAAKsI,gBAJoByD,KACxB/L,KAAKiV,MAAM9b,UAAUyF,OAAOkM,IAC5BnI,EAAauB,QAAQlE,KAAKkH,SAAU8D,GAAkB7I,EAAc,GAE/BnC,KAAKqU,SAAS,EAAMrU,KAAKC,QAAQ+Q,iBAhBvE,CAiBD,CAGAmE,aAAAA,GACC,MAAMvN,EAAQ5H,KAEd,IAAK4H,EAAMsN,aAAc,CACxB,IAAIlF,EAAY,IAAIqF,GAAU,CAC7Brc,QAASgH,KAAKqU,QACdxB,KAAM7S,KAAKiV,QACTb,gBAECpE,EAAUwE,UACb5M,EAAMqN,MAAMvL,MAAMgH,SAAW,QAC7B9I,EAAMqN,MAAMvL,MAAM4L,UAAY,oBAG/B1N,EAAMqN,MAAMvL,MAAM6K,KAAOvE,EAAUuE,KAAO,KAC1C3M,EAAMqN,MAAMvL,MAAM4K,IAAOtE,EAAUsE,IAAM,IAC1C,CAEI1M,EAAM3H,QAAQ8U,SACjBnN,EAAMqN,MAAMvL,MAAM6L,WAAa3N,EAAM3H,QAAQ8U,OAAO,GAAK,KACzDnN,EAAMqN,MAAMvL,MAAMC,aAAe/B,EAAM3H,QAAQ8U,OAAO,GAAK,MAG5DnN,EAAMsN,cAAe,CACtB,CAEA,WAAO3B,CAAKva,EAAS+G,EAAS,CAAC,GAC9B,MAAM1B,EAAWwW,GAAWxP,oBAAoBrM,EAAS+G,GAEzD,GAAI1B,EAAS4B,QAAQuQ,MAAO,CAC3B,IAAIiD,EAAc,KAClB9Q,EAAaiB,GAAGvF,EAASgW,QAAS5E,IAA0B,SAAUjO,GACrE,GAAIiS,EAAa,OACjBoB,GAAWW,gBAAgBhU,GAE3B,IAAIgB,EAAShB,EAAMgB,OAAOzI,QAAQ,gBAC7ByI,GAEAnE,EAASgW,QAAQjb,SAASoJ,KAC/BiR,EAAcjR,EACdnE,EAASiM,OACV,IAEA3H,EAAaiB,GAAGvF,EAASgW,QAAS3E,IAAyB,SAAUlO,GACpE,IAAKiS,EAAa,OAElB,IAAItR,EAAgBX,EAAMW,cAE1B,KAAOA,GAAe,CACrB,GAAIA,IAAkBsR,EAAa,OACnCtR,EAAgBA,EAAclI,UAC/B,CAEAwZ,EAAc,KACdpV,EAAS+W,cAAc,CAACjT,cAAe9D,EAAS6I,UACjD,GACD,MACCvE,EAAaiB,GAAGxH,SAAUwT,GAAsBxD,GAAsByI,GAAWY,gBACjF9S,EAAaiB,GAAGxH,SAAUwY,GAAwB,IAAMD,GAAkBE,GAAWY,gBACrF9S,EAAaiB,GAAGxH,SAAUwT,GAAsBiF,GAAWlB,YAC3DhR,EAAaiB,GAAGxH,SAAUuT,GAAsBkF,GAAWlB,YAC3DhR,EAAaiB,GAAG5K,EAAS2W,IAAsB,SAAUnO,GACxDA,EAAM4D,iBACN/G,EAASsN,QACV,GAEF,CAEA,sBAAO6J,CAAgBhU,GACtB,MAAMyS,EAAczW,EAAUI,QAAQ,kEACtC,IAAK,MAAM+N,KAAUsI,EAAa,CACjC,MAAMC,EAAUW,GAAWvL,YAAYqC,GACvC,IAAKuI,EACJ,SAGD,GAAI1S,EAAMgB,OAAOzI,QAAQ,IAAM4a,MAAsBT,EAAQe,MAC5D,OAID,GADqBzT,EAAMkU,eACVhZ,SAASwX,EAAQhN,UACjC,SAGD,MAAM/E,EAAgB,CAAEA,cAAe+R,EAAQhN,UAE5B,UAAf1F,EAAMqB,OACTV,EAAc6C,WAAaxD,GAG5B0S,EAAQkB,cAAcjT,EACvB,CACD,CAEA,qBAAOsT,CAAejU,GACrB,MAAMmU,EAAU,kBAAkBrW,KAAKkC,EAAMgB,OAAO2C,SAC9CyQ,EAA8B,WAAdpU,EAAM5J,IACtBie,EAAkB,CAAC,UAAW,aAAanZ,SAAS8E,EAAM5J,KAEhE,IAAKie,IAAoBD,EACxB,OAGD,GAAID,IAAYC,EACf,OAGDpU,EAAM4D,iBAEN,MAAM0Q,EAAkB9V,KAAK+V,QAAQ3J,IACpCpM,KAAQxC,EAAUC,KAAK2O,GAAsB5K,EAAMY,eAAenI,YAE7DoE,EAAWwW,GAAWxP,oBAAoByQ,GAEhD,GAAID,EAGH,OAFArU,EAAMwU,uBACN3X,EAASiM,OAINjM,EAASuN,aACZpK,EAAMwU,kBACN3X,EAASmM,OACTsL,EAAgBG,QAElB,CAEA,iBAAOtC,CAAWnS,GACI,IAAjBA,EAAM4G,QAAgC,UAAf5G,EAAMqB,MAAkC,QAAdrB,EAAM5J,KAI3Did,GAAWW,gBAAgBhU,EAC5B,EAGD,YC7QM0U,GAAyB,oDACzBC,GAA0B,cAC1BC,GAAmB,gBACnBC,GAAkB,eA+FxB,GAzFA,MACCvW,WAAAA,GACCE,KAAKkH,SAAW9K,SAASqN,IAC1B,CAGAO,QAAAA,GAEC,MAAMJ,EAAgBxN,SAASC,gBAAgBwN,YAC/C,OAAO9N,KAAK+N,IAAI9M,OAAO+M,WAAaH,EACrC,CAEAY,IAAAA,GACC,MAAM2H,EAAQnS,KAAKgK,WACnBhK,KAAKsW,mBAELtW,KAAKuW,sBAAsBvW,KAAKkH,SAAUkP,IAAkBI,GAAmBA,EAAkBrE,IAEjGnS,KAAKuW,sBAAsBL,GAAwBE,IAAkBI,GAAmBA,EAAkBrE,IAC1GnS,KAAKuW,sBAAsBJ,GAAyBE,IAAiBG,GAAmBA,EAAkBrE,GAC3G,CAEAsE,KAAAA,GACCzW,KAAK0W,wBAAwB1W,KAAKkH,SAAU,YAC5ClH,KAAK0W,wBAAwB1W,KAAKkH,SAAUkP,IAC5CpW,KAAK0W,wBAAwBR,GAAwBE,IACrDpW,KAAK0W,wBAAwBP,GAAyBE,GACvD,CAEAM,aAAAA,GACC,OAAO3W,KAAKgK,WAAa,CAC1B,CAGAsM,gBAAAA,GACCtW,KAAK4W,sBAAsB5W,KAAKkH,SAAU,YAC1ClH,KAAKkH,SAASwC,MAAMO,SAAW,QAChC,CAEAsM,qBAAAA,CAAsB/Z,EAAUqa,EAAe7Q,GAC9C,MAAM8Q,EAAiB9W,KAAKgK,WAW5BhK,KAAK+W,2BAA2Bva,GAVHxD,IAC5B,GAAIA,IAAYgH,KAAKkH,UAAYlK,OAAO+M,WAAa/Q,EAAQ6Q,YAAciN,EAC1E,OAGD9W,KAAK4W,sBAAsB5d,EAAS6d,GACpC,MAAML,EAAkBxZ,OAAOpD,iBAAiBZ,GAASa,iBAAiBgd,GAC1E7d,EAAQ0Q,MAAMsN,YAAYH,EAAe,GAAG7Q,EAAS7L,OAAO4O,WAAWyN,QAAsB,GAI/F,CAEAI,qBAAAA,CAAsB5d,EAAS6d,GAC9B,MAAMI,EAAcje,EAAQ0Q,MAAM7P,iBAAiBgd,GAC/CI,GACHnY,EAAY7G,IAAIe,EAAS6d,EAAeI,EAE1C,CAEAP,uBAAAA,CAAwBla,EAAUqa,GAajC7W,KAAK+W,2BAA2Bva,GAZHxD,IAC5B,MAAMP,EAAQqG,EAAY7G,IAAIe,EAAS6d,GAEzB,OAAVpe,GAKJqG,EAAYF,OAAO5F,EAAS6d,GAC5B7d,EAAQ0Q,MAAMsN,YAAYH,EAAepe,IALxCO,EAAQ0Q,MAAMwN,eAAeL,EAKiB,GAIjD,CAEAE,0BAAAA,CAA2Bva,EAAU2a,GACpC,GAAIxe,EAAU6D,GACb2a,EAAS3a,QAIV,IAAK,MAAMO,KAAOS,EAAUI,QAAQpB,EAAUwD,KAAKkH,UAClDiQ,EAASpa,EAEX,GChGKsK,GAAW,WASX+P,GAAkB,gBAClBtM,GAAkB,OAElBuM,GAAoB,kBAEpBtM,GAAmB,GAAG1D,UACtB2D,GAAmB,GAAG3D,YACtB4D,GAAmB,GAAG5D,UACtB6D,GAAmB,GAAG7D,WACtBiQ,GAAmB,GAAGjQ,YAEtB8D,GAAgC,mBAAmB9D,KACnD+D,GAAgC,iBAAiB/D,KACjDgE,GAAgC,SAAShE,cACzCkQ,GAAgC,oBAAoBlQ,KACpDmQ,GAAoC,gBAAgBnQ,KAE1D,MAAMoQ,WAAgBlM,EACrBzL,WAAAA,CAAY9G,EAAS+G,EAAS,CAAC,GAC9ByL,MAAMxS,EAAS+G,GAEfC,KAAKC,QAAUD,KAAKsH,WAAWtO,EAASwB,EAAgB,CACvDkQ,UAAU,EACVuL,OAAO,EACPxK,UAAU,EACViM,OAAQ,GACR1P,KAAM,CACLC,MAAO,GACPzF,OAAQ,GACRuC,OAAQ,MACRmD,QAAQ,GAET6I,UAAW,CACVxR,KAAM,CAAC,oBAAqB,sBAC5BoY,SAAU,IACVC,MAAO,IACPC,OAAQ,GAET7I,QAAS,CACR8I,QAAS,WACTC,OAAQ,kBACRC,QAAS,mBACTC,OAAQ,kBACRnH,MAAO,iBACPrH,KAAM,gBACNyO,OAAQ,kBACRC,SAAU,sBAETpY,IACHC,KAAKoY,QAAU,KACfpY,KAAKqY,QAAU7a,EAAUC,KAtDH,mBAsDyBuC,KAAKkH,UACpDlH,KAAK4L,UAAW,EAChB5L,KAAKuM,kBAAmB,EACxBvM,KAAKsY,WAAa,IAAIC,GAEtBvY,KAAK0L,qBACL1L,KAAKmI,iBACN,CAEA,eAAWjD,GACV,MAtEW,OAuEZ,CAEA,mBAAWmC,GACV,OAAOA,EACR,CAEA,WAAOkM,CAAKva,EAAS+G,EAAQiG,GAC5ByR,GAAQlG,MAAMvY,EAAS+G,EAAQiG,EAChC,CAEA,YAAOuL,CAAMlU,EAAI0C,EAAQiG,GACxB,GAAkB,iBAAP3I,EAAiB,OAE5B,IAAI6J,EAAW9K,SAASuO,cAAc,OACtCzD,EAAS/N,UAAUyR,IAAI,WAAY,QACnC1D,EAAS7J,GAAKA,EAAG,IAAI0a,EAAS3b,SAASuO,cAAc,OACrDoN,EAAO5e,UAAUyR,IAAI,mBAErB,IAAIoN,EAAU5b,SAASuO,cAAc,OACrCqN,EAAQ7e,UAAUyR,IAAI,oBAEtB,IAAI4N,EAAWpc,SAASuO,cAAc,UACtC7L,EAAYV,IAAIoa,EAAU,OAAQ,UAClC1Z,EAAYV,IAAIoa,EAAU,kBAAmB,SAC7C1Z,EAAYV,IAAIoa,EAAU,iBAAkB,IAAMnb,GAClDyB,EAAYV,IAAIoa,EAAU,aAAc,SACxCA,EAASrf,UAAUyR,IAAI,gBAEvBoN,EAAQxO,OAAOgP,GAEf,IAAI/O,EAAOrN,SAASuO,cAAc,OAClClB,EAAKtQ,UAAUyR,IAAI,iBAEnBoN,EAAQxO,OAAOC,GACfsO,EAAOvO,OAAOwO,GACd9Q,EAASsC,OAAOuO,GAEhB3b,SAASqN,KAAKD,OAAOtC,GAIrB/L,EAAQ6K,EAAU,CAFJyR,GAAQpS,oBAAoB6B,EAAUnH,IAGrD,CAEA4L,MAAAA,CAAOxJ,GACN,OAAQnC,KAAK4L,SAAsC5L,KAAKwK,OAAhCxK,KAAKsK,KAAKnI,EACnC,CAEAmI,IAAAA,CAAKnI,GAEApJ,EADUiH,KACOkH,YAErBlH,KAAK2H,SAEahF,EAAauB,QAAQlE,KAAKkH,SAAU+D,GAAgB,CAAE9I,kBAC1D0J,mBAEd7L,KAAK4L,UAAW,EAChB5L,KAAKuM,kBAAmB,EAExBvM,KAAKsY,WAAW9N,OAEhBpO,SAASqN,KAAKtQ,UAAUyR,IAAIwM,IAE5BpX,KAAKyY,kBAAkBtW,GACvBnC,KAAK0Y,gBAELrO,EAASC,MAAK,IAAMtK,KAAK2Y,aAAaxW,MACvC,CAEAqI,IAAAA,GACMxK,KAAK4L,WAAY5L,KAAKuM,mBAET5J,EAAauB,QAAQlE,KAAKkH,SAAU6D,IACxCc,mBAEd7L,KAAK4L,UAAW,EAChB5L,KAAKuM,kBAAmB,EAExBvM,KAAKkH,SAAS/N,UAAUyF,OAAOkM,IAE/B9K,KAAKsI,gBAAe,IAAMtI,KAAK4Y,cAAc5Y,KAAKkH,SAAUlH,KAAK6Y,gBAClE,CAEAD,UAAAA,GACC5Y,KAAKkH,SAASwC,MAAMoP,QAAU,OAC9B9Y,KAAKkH,SAAStH,aAAa,eAAe,GAC1CI,KAAKkH,SAASrH,gBAAgB,cAC9BG,KAAKkH,SAASrH,gBAAgB,QAC9BG,KAAKuM,kBAAmB,EAExBlC,EAASG,MAAK,KACbpO,SAASqN,KAAKtQ,UAAUyF,OAAOwY,IAC/BpX,KAAK+Y,oBACL/Y,KAAKsY,WAAW7B,QAChB9T,EAAauB,QAAQlE,KAAKkH,SAAU8D,GAAiB,GAEvD,CAEA2N,YAAAA,CAAaxW,GACP/F,SAASqN,KAAKrQ,SAAS4G,KAAKkH,WAChC9K,SAASqN,KAAKD,OAAOxJ,KAAKkH,UAG3BlH,KAAKkH,SAASwC,MAAMoP,QAAU,QAC9B9Y,KAAKkH,SAASrH,gBAAgB,eAC9BG,KAAKkH,SAAStH,aAAa,cAAc,GACzCI,KAAKkH,SAAStH,aAAa,OAAQ,UACnCI,KAAKkH,SAAS8R,UAAY,EAE1B,MAAMC,EAAYzb,EAAUC,KA9KF,iBA8K4BuC,KAAKqY,SACvDY,IACHA,EAAUD,UAAY,GAGvBxd,EAAOwE,KAAKkH,UAEZlH,KAAKkH,SAAS/N,UAAUyR,IAAIE,IAa5B9K,KAAKsI,gBAXsB4Q,KACtBlZ,KAAKC,QAAQgW,MAIjBjW,KAAKuM,kBAAmB,EACxB5J,EAAauB,QAAQlE,KAAKkH,SAAUgE,GAAiB,CACpD/I,iBACC,GAGqCnC,KAAKqY,QAASrY,KAAK6Y,cAC5D,CAEAA,WAAAA,GACC,OAAO7Y,KAAKkH,SAAS/N,UAAUC,SAjMT,OAkMvB,CAEAsf,aAAAA,GACC,MAAMS,EAAqBnZ,KAAKkH,SAASkS,aAAehd,SAASC,gBAAgBgd,aAC3EvC,EAAiB9W,KAAKsY,WAAWtO,WACjCsP,EAAoBxC,EAAiB,EAE3C,GAAIwC,IAAsBH,EAAoB,CAC7C,MAAMI,EAAWpd,IAAU,cAAgB,eAC3C6D,KAAKkH,SAASwC,MAAM6P,GAAY,GAAGzC,KACpC,CAEA,IAAKwC,GAAqBH,EAAoB,CAC7C,MAAMI,EAAWpd,IAAU,eAAiB,cAC5C6D,KAAKkH,SAASwC,MAAM6P,GAAY,GAAGzC,KACpC,CACD,CAEAiC,iBAAAA,GACC/Y,KAAKkH,SAASwC,MAAMuI,YAAc,GAClCjS,KAAKkH,SAASwC,MAAMC,aAAe,EACpC,CAEA+B,kBAAAA,GACC/I,EAAaiB,GAAG5D,KAAKkH,SAAUiE,IAA2B3J,IAnOzC,WAoOZA,EAAM5J,MAENoI,KAAKC,QAAQwL,SAChBzL,KAAKwK,OAINxK,KAAKwZ,6BAA4B,IAGlC7W,EAAaiB,GAAG5G,OAAQsa,IAAkB,KACrCtX,KAAK4L,WAAa5L,KAAKuM,kBAAkBvM,KAAK0Y,eAAe,IAGlE/V,EAAaiB,GAAG5D,KAAKkH,SAAUqQ,IAA6B/V,IAC3DmB,EAAakB,IAAI7D,KAAKkH,SAAUsQ,IAAyBiC,IACpDzZ,KAAKkH,WAAa1F,EAAMgB,QAAUxC,KAAKkH,WAAauS,EAAOjX,SAEjC,WAA1BxC,KAAKC,QAAQyK,SAKb1K,KAAKC,QAAQyK,UAChB1K,KAAKwK,OALLxK,KAAKwZ,6BAMN,GACC,GAEJ,CAEAA,0BAAAA,GAEC,GADkB7W,EAAauB,QAAQlE,KAAKkH,SAAUkE,IACxCS,iBAAkB,OAEhC,MAAMsN,EAAqBnZ,KAAKkH,SAASkS,aAAehd,SAASC,gBAAgBgd,aAC3EK,EAAmB1Z,KAAKkH,SAASwC,MAAMiQ,UAEpB,WAArBD,GAAiC1Z,KAAKkH,SAAS/N,UAAUC,SAASie,MACjE8B,IAAoBnZ,KAAKkH,SAASwC,MAAMiQ,UAAY,UAEzD3Z,KAAKkH,SAAS/N,UAAUyR,IAAIyM,IAE5BrX,KAAKsI,gBAAe,KACnBtI,KAAKkH,SAAS/N,UAAUyF,OAAOyY,IAC/BrX,KAAKsI,gBAAe,KACnBtI,KAAKkH,SAASwC,MAAMiQ,UAAYD,CAAgB,GAC9C1Z,KAAKqY,QAAQ,GACdrY,KAAKqY,SAERrY,KAAKkH,SAAS+O,QACf,CAEAwC,iBAAAA,CAAkBtW,GACjBnC,KAAKC,QAAUD,KAAKsH,WAAWnF,EAAenC,KAAKC,SAE9CD,KAAKC,QAAQyX,OAAOhe,QAEzBsG,KAAKC,QAAQyX,OAAO7c,SAAQ,SAAU+e,GACrC,IAAI,KAAWA,IAAQ,KAAYA,EAAM,OAEzC,IAAIC,EAAWrc,EAAUI,QAAQ,SAAWgc,EAAKra,KAAO,KACxD,GAAKsa,EAASngB,OAEd,IAAK,MAAM4X,KAAOuI,EACjB,OAAQvI,EAAInM,SACX,IAAK,QAASmM,EAAI7Y,MAAQmhB,EAAKnhB,MAAO,MACtC,IAAK,MAAOqG,EAAYV,IAAIkT,EAAK,MAAOsI,EAAKnhB,OAAQ,MACrD,QAAS6Y,EAAIvJ,UAAY6R,EAAKnhB,MAGjC,GACD,EAGDoM,EAAe4S,IAOf9U,EAAaiB,GAAGxH,SAAUiP,GAhTG,4BAgT6C,SAAU7J,GACnF,MAAMgB,EAAShF,EAAUQ,uBAAuBgC,MAE5C,CAAC,IAAK,QAAQtD,SAASsD,KAAKmF,UAAU3D,EAAM4D,iBAEhDzC,EAAakB,IAAIrB,EAAQyI,IAAgB6O,IACpCA,EAAUjO,kBAEdlJ,EAAakB,IAAIrB,EAAQwI,IAAkB,KACtCxR,EAAUwG,OAAOA,KAAKiW,OAAO,GAChC,IAGH,MAAMjK,EAAcxO,EAAUC,KAhUT,kBAiUjBuO,GAAayL,GAAQnO,YAAY0C,GAAaxB,OAErCiN,GAAQpS,oBAAoB7C,GACpCmJ,OAAO3L,KACb,IAEA,YC5UMqH,GAAW,QASX0S,GAAwB,UAAU1S,cAExC,MAAM2S,WAAqBzO,EAC1BzL,WAAAA,CAAY9G,EAAS+G,EAAS,CAAC,GAC9ByL,MAAMxS,EAAS+G,GAEfC,KAAKC,QAAUD,KAAKsH,WAAWtO,EAASwB,EAAgB,CACvDyf,SAAU,GACVC,UAAU,EACVC,QAAQ,EACRzC,OAAQ,GACR0C,MAAO,CACNC,SAAS,EACTxX,KAAM,SAEPmF,KAAM,CACLC,MAAO,GACPzF,OAAQ,GACRuC,OAAQ,OAETiK,QAAS,CACR8I,QAAS,iBACTwC,cAAe,0BACfC,WAAY,uBACZC,WAAY,mBACZC,YAAa,kBAEZ1a,IAEHC,KAAKC,QAAQ+H,KAAKC,MAAQnJ,EAAY7G,IAAI+H,KAAKkH,SAAU,UAAUwT,cACnE1a,KAAKC,QAAQ+H,KAAKjD,OAASjG,EAAY7G,IAAI+H,KAAKkH,SAAU,UAAUwT,cACpE1a,KAAKoY,QAAU5a,EAAUC,KAAK,kBAAmBuC,KAAKkH,WAAa1J,EAAUC,KAAK,UAAYuC,KAAKkH,SAAS7J,GAAK,OAAS,KAE1H2C,KAAKC,QAAQ0a,UAAkE,UAApD7b,EAAY7G,IAAI+H,KAAKkH,SAAU,iBAC1DlH,KAAKC,QAAQ2a,YAAoE,UAAtD9b,EAAY7G,IAAI+H,KAAKkH,SAAU,mBAC1DlH,KAAKC,QAAQ4a,WAAmE,SAArD/b,EAAY7G,IAAI+H,KAAKkH,SAAU,iBAC3D,CAEA,eAAWhC,GACV,MAjDW,aAkDZ,CAEA,mBAAWmC,GACV,OAAOA,EACR,CAEAkK,KAAAA,GAUC,OATAvR,KAAKkH,SAAS/N,UAAUyR,IAAI5K,KAAKC,QAAQ+O,QAAQ8I,SAE7C9X,KAAKC,QAAQia,WAChBpb,EAAYV,IAAI4B,KAAKkH,SAAU,aAAc,IAC7ClH,KAAKkH,SAAS/N,UAAUyR,IAAI5K,KAAKC,QAAQ+O,QAAQwL,aAK3Cxa,IACR,CAEA8a,OAAAA,CAAQ7U,EAAMzE,GACb,MAAMoG,EAAQ5H,KAEd4H,EAAMmT,eAENnT,EAAM3H,QAAQ+H,KAAK/B,KAAOA,EAE1B2B,EAAMD,QAAO,SAAUnB,EAAQP,GAC9B2B,EAAMV,SAAS/N,UAAUyF,OAAO,iBAE5BgJ,EAAM3H,QAAQma,MAAMC,UACD,iBAAX7T,GAAkC,UAAXA,EACjCoB,EAAMoT,YAAYxZ,EAAOyE,GACG,iBAAXO,GAAkC,YAAXA,GACxCoB,EAAMqT,cAAczZ,EAAOyE,IAIzB2B,EAAM3H,QAAQga,WACjBjd,OAAOke,SAASC,KAAOvT,EAAM3H,QAAQga,SAEvC,GACD,CAEAc,YAAAA,GACC,MAAMnT,EAAQ5H,KAEmB,aAA7B4H,EAAM3H,QAAQma,MAAMvX,MACvB,IAAIzG,SAASgf,uBAAuBxT,EAAM3H,QAAQ+O,QAAQsL,gBAAgBzf,SAAQ,SAAU7B,GACvFA,GAAWA,EAAQG,UAAUC,SAAS,SACzCiT,GAAWhH,oBAAoBrM,EAAS,CAAC2S,QAAQ,IAAQnB,MAE3D,IAGD5C,EAAMyT,cAAc,UACpB1Y,EAAauB,QAAQ0D,EAAMV,SAjGH,eAiG+BU,EACxD,CAEAoT,WAAAA,CAAYxZ,EAAOyE,GAClB,MAAM2B,EAAQ5H,KAEd4H,EAAMyT,cAAc,SACpBzT,EAAM0T,WAAWrV,EAAM,SACvBtD,EAAauB,QAAQ0D,EAAMV,SA1GH,cA0G8B,CAAC1F,EAAOoG,EAAO3B,GACtE,CAEAgV,aAAAA,CAAczZ,EAAOyE,GACpB,MAAM2B,EAAQ5H,KAEd4H,EAAMyT,cAAc,SACpBzT,EAAM0T,WAAWrV,EAAM,WACvBtD,EAAauB,QAAQ0D,EAAMV,SAnHH,gBAmHgC,CAAC1F,EAAOoG,EAAO3B,GACxE,CAEAoV,aAAAA,CAAc7U,GACb,MAAMoB,EAAQ5H,KAEd,IAAK4H,EAAMwQ,QAAS,OAEpB,IAAImD,EAAgB3T,EAAMwQ,QACzBoD,EAAU,CACV1V,KAAM,gBACNW,KAAM,aAOP,GAJI3H,EAAYR,IAAIsJ,EAAMwQ,QAAS,iBAA8B,WAAX5R,GACrDoB,EAAMwQ,QAAQ/P,mBAAmB,aAAc,+DAG5CvJ,EAAYR,IAAIsJ,EAAMwQ,QAAS,aAClCoD,EAAQ/U,KAAO3H,EAAY7G,IAAI2P,EAAMwQ,QAAS,iBACxC,CACN,IAAIqD,EAAW7T,EAAMwQ,QAAQza,cAAc,eACvC8d,IACHD,EAAQ/U,KAAO3H,EAAY7G,IAAIwjB,EAAU,aACzCF,EAAgBE,EAElB,CAEA,GAAI3c,EAAYR,IAAIsJ,EAAMwQ,QAAS,kBAClCoD,EAAQ1V,KAAOhH,EAAY7G,IAAI2P,EAAMwQ,QAAS,sBACxC,CACN,IAAIsD,EAAe9T,EAAMwQ,QAAQza,cAAc,oBAC3C+d,IACHF,EAAQ1V,KAAOhH,EAAY7G,IAAIyjB,EAAc,kBAC7CH,EAAgBG,EAElB,CASA,GAPe,WAAXlV,IACCoB,EAAM3H,QAAQ0a,YACjBY,EAAcxT,UAAYyT,EAAQ1V,MAEnChH,EAAYV,IAAIwJ,EAAMwQ,QAAQ,WAAY,aAG5B,UAAX5R,EAAoB,CACnBoB,EAAM3H,QAAQ0a,YACjBY,EAAcxT,UAAYyT,EAAQ/U,MAEnC3H,EAAYF,OAAOgJ,EAAMwQ,QAAQ,YAEjC,IAAIuD,EAAU/T,EAAMwQ,QAAQza,cAAc,mBACtCge,GAASA,EAAQ/c,QACtB,CACD,CAEA0c,UAAAA,CAAWrV,EAAMO,GAChB,MAAMoB,EAAQ5H,KAEd,GAAI4H,EAAM3H,QAAQ2a,aAA+B,iBAAT3U,EAAmB,CAC1D,IAAI2V,EAAa,CAAC,EAElB,IACCA,EAAavhB,KAAKC,MAAM2L,GACxB2B,EAAMwS,MAAMwB,EAAYpV,EACzB,CAAE,MAAOX,GACR+B,EAAMwS,MAAMnU,EAAMO,EACnB,CACD,MACCoB,EAAMwS,MAAMnU,EAAMO,EAEpB,CAEA4T,KAAAA,CAAMnU,EAAMO,GACX,MAAMoB,EAAQ5H,KAEd,GAAInH,EAASoN,IACP,SAAUA,GAASA,EAAKY,MAAsB,MAAdZ,EAAKY,MACrC,aAAcZ,GAAQA,EAAKU,SAAU,CACxC,IAAIA,EAAWzM,EAAc+L,EAAKU,UACV,iBAAbA,GAC+B,IAArCA,EAAStG,QAAQ,iBAA+D,IAAtCsG,EAAStG,QAAQ,kBAC9DmG,EAAS,QACTP,EAAO,CACNU,SAAU,CACTmK,MAAO,QACP+K,QAAS,6CAEVpV,KAAM,8CAIJ,WAAYE,GAAYzM,EAAcyM,EAASmV,UAClDtV,EAAStM,EAAcyM,EAASmV,QAAU,QAAU,UAGvD,CAIGlU,EAAM3H,QAAQma,MAAMC,UAIQ,UAA7BzS,EAAM3H,QAAQma,MAAMvX,MACvB+E,EAAMmU,YAAY9V,EAAMO,GAGQ,aAA7BoB,EAAM3H,QAAQma,MAAMvX,MACvB+E,EAAMoU,eAAe/V,EAAMO,GAE7B,CAEAuV,WAAAA,CAAY9V,EAAMO,GACjB,MAAMoB,EAAQ5H,KAGd,IAAI5D,SAASgf,uBAAuB,UAAUvgB,SAAQ,SAAU7B,GAC3DA,GAAWA,EAAQG,UAAUC,SAAS,SAC/B6iB,UAAUC,MAAM7W,oBAAoBrM,GAC1CwR,MAEN,IAEA,IAAIpO,SAASgf,uBAAuB,aAAavgB,SAAQ,SAAU7B,GAC9DA,GAAWA,EAAQG,UAAUC,SAAS,SAC7Bqe,GAAQpS,oBAAoBrM,GACpCwR,MAEN,IAEA,IAAI2R,EAAS3e,EAAUC,KAAK,IAAMmK,EAAM3H,QAAQ+O,QAAQuL,YACpD4B,GAAQA,EAAOvd,SAEnB,IAAIvB,EAAKuK,EAAM3H,QAAQ+O,QAAQ8I,QAAU,IAAMnc,IAC/C8b,GAAQlE,KAAKlW,EAAI,CAChB2R,QAAS,CACRoL,MAAOxS,EAAM3H,QAAQ+O,QAAQuL,cAE5B,SAAU1G,GACZ,IAAI7a,EAAU6a,EAAK3M,SACnBlO,EAAQG,UAAUyR,IAAIhD,EAAM3H,QAAQ+O,QAAQuL,YAE5C,IAAI6B,EAAQ5e,EAAUC,KAAK,iBAAkBzE,GACzCojB,GAAOA,EAAM5S,OAAO5B,EAAMyU,sBAAsBrjB,EAASwN,EAAQP,EAAM,UAE3E4N,EAAKlI,QACN,GACD,CAEAqQ,cAAAA,CAAe/V,EAAMO,GACpB,MAAMoB,EAAQ5H,KAEd,IAAIsc,EAAY9e,EAAUC,KAAK,IAAMmK,EAAM3H,QAAQ+O,QAAQsL,eACtDgC,IACJA,EAAYlgB,SAASuO,cAAc,OACnC2R,EAAUnjB,UAAUyR,IAAIhD,EAAM3H,QAAQ+O,QAAQsL,eAC9CgC,EAAUnjB,UAAUyR,IAAI,eACxB0R,EAAUjf,GAAKuK,EAAM3H,QAAQ+O,QAAQ8I,QAAU,IAAMnc,IACrD2gB,EAAU9S,OAAO5B,EAAMyU,sBAAsBC,EAAW9V,EAAQP,EAAM,aAEtE2B,EAAMV,SAASwL,QAAQ4J,IAGxBjQ,GAAWhH,oBAAoBiX,EAAW,CAAC3Q,QAAQ,IAAQA,QAC5D,CAEA0Q,qBAAAA,CAAsBE,EAAU/V,EAAQP,EAAMpD,GAC7C,IAAI2Z,EAAShf,EAAUC,KAAK,aAAe+I,EAAQ+V,GAEnD,GAAI1jB,EAASoN,GAAO,CACnB,GAAe,UAAXO,GACC,SAAUP,GAAsB,MAAdA,EAAKY,MACtB,SAAUZ,IAASA,EAAKQ,KAG3B,OAFAR,EAAKQ,KAAO,4CAEJR,EAAKY,MACZ,KAAK,IACJZ,EAAKQ,KAAO,cACZ,MACD,KAAK,IAGL,KAAK,IACJR,EAAKQ,KAAO,eACZ,MACD,KAAK,IACJR,EAAKQ,KAAO,YACZ,MACD,KAAK,IACJR,EAAKQ,KAAO,YACZ,MACD,KAAK,IACJR,EAAKQ,KAAO,uBACZ,MACD,KAAK,IACJR,EAAKQ,KAAO,wBACZ,MACD,KAAK,IACJR,EAAKQ,KAAO,kBAOjB,GAAI,aAAcR,EAAM,CACvB,IAAIU,EAAWzM,EAAc+L,EAAKU,UAAWmK,EAAQ,GAAI2L,EAAM,GAAI5V,EAAO,GAC1E,GAAwB,iBAAbF,GACV,KAAM,SAAUA,GAAW,CAY1B,GAXI,UAAWA,IAAUmK,EAAQnK,EAASmK,OAC3B,UAAXtK,GAAoC,MAAdP,EAAKY,OAC9BA,EAAO,IAAMZ,EAAKQ,KAAO,KAAOR,EAAKY,KAAO,KAG7C4V,GAAO,uCAAyC3L,EAAQjK,EAAO,QAE3D,YAAaF,IAChB8V,GAAO,0CAA4C9V,EAASkV,QAAU,UAGnE,WAAYlV,EAAU,CACzB,IAAImV,EAAS5hB,EAAcyM,EAASmV,SAAW,KAC/C,GAAIjjB,EAASijB,GACZ,IAAK,MAAMpd,KAASod,EACf9gB,MAAMC,QAAQ6gB,EAAOpd,IACxBod,EAAOpd,GAAO7D,SAAQ,SAAU6hB,GAC/BD,GAAO,QAASC,EAAG,QACpB,IAEAD,EAAM,QAASX,EAAOpd,GAAQ,QAIlC,CAEAuH,EAAO,CACN0W,KAAMF,EAER,OAEAxW,EAAK0W,KAAOhW,CAEd,CACD,CAEA,GAAK6V,EAuBOhf,EAAUC,KAAK,0BAA2B+e,GAChDzU,UAAY9B,EAAK0W,SAxBV,CACZH,EAASpgB,SAASuO,cAAc,OAChC6R,EAAOrjB,UAAUyR,IAAI,WAAY,YAAcpE,EAAQ,YAAc3D,GAErE,IAAImV,EAAU5b,SAASuO,cAAc,OACrCqN,EAAQ7e,UAAUyR,IAAI,oBAEtB,IAAIgS,EAAOxgB,SAASuO,cAAc,OAClCiS,EAAKzjB,UAAUyR,IAAI,0BAEnB,IAAIjF,EAAIvJ,SAASuO,cAAc,KAC/BhF,EAAEoC,UAAYvD,EAAOgC,GAErBoW,EAAKpT,OAAO7D,GACZqS,EAAQxO,OAAOoT,GAEf,IAAInW,EAAOrK,SAASuO,cAAc,OAClClE,EAAKtN,UAAUyR,IAAI,0BACnBnE,EAAKsB,UAAY9B,EAAK0W,KAEtB3E,EAAQxO,OAAO/C,GACf+V,EAAOhT,OAAOwO,EACf,CAKA,OAAOwE,CACR,CAOA,WAAOjJ,CAAKva,EAAS+G,EAAS,CAAC,GACbia,GAAa3U,oBAAoBrM,EAAS+G,GAClDwR,OACV,EAGD5O,EAAaiB,GAAGxH,SAAU2d,IAAuB,SAAUvY,GAC1D,IAAK1C,EAAYR,IAAIkD,EAAMgB,OAAQ,qBAClC,OAGD,MAAMnE,EAAW2b,GAAa3U,oBAAoB7D,EAAMgB,OAAQ,CAAC,GACjE,GAAKnE,EAAL,CAIA,GAAIA,EAAS4B,QAAQia,WACf7b,EAAS6I,SAAS2V,gBAMtB,OALArb,EAAM4D,iBACN5D,EAAMwU,kBAEN3X,EAAS6I,SAAS/N,UAAUyR,IAAIvM,EAAS4B,QAAQ+O,QAAQyL,cAElD,EAqBT,IAAKpc,EAAS4B,QAAQka,OAAQ,CAC7B3Y,EAAM4D,iBAEN,IAAIa,EAAO,IAAI6W,SAASze,EAAS6I,UAOjC,OAAO7I,EAASyc,QAAQ7U,EAAMzE,EAC/B,CAzCA,CA0CD,IAEA,YC9cM6F,GAAW,YAUXgE,GAA2B,SAAShE,cAE1C,MAAM0V,WAAkBxR,EACvBzL,WAAAA,CAAY9G,EAAS+G,EAAS,CAAC,GAC9ByL,MAAMxS,EAAS+G,GAEfC,KAAKC,QAAUD,KAAKsH,WAAWtO,EAASwB,EAAgB,CAExD,EAAGuF,GAGJ,CAEA,eAAWmF,GACV,MAzBW,QA0BZ,CAEA,mBAAWmC,GACV,OAAOA,EACR,CAOA,WAAOkM,CAAKva,EAAS+G,EAAS,CAAC,GACbgd,GAAS1X,oBAAoBrM,EAAS+G,GAC9CwR,OACV,CAEAA,KAAAA,GAEA,CAEA5F,MAAAA,CAAOxJ,GACN,OAAQnC,KAAK4L,WAAwC5L,KAAKwK,OAAhCxK,KAAKsK,KAAKnI,EACrC,CAEAmI,IAAAA,CAAKnI,GAEL,CAEAyJ,QAAAA,GACC,OAAO5L,KAAKkH,SAAS/N,UAAUC,SArDT,OAsDvB,EAMDuJ,EAAaiB,GAAGxH,SAAUiP,GA1DE,6BA0D8C,SAAU7J,GACnF,MAAMgB,EAAShF,EAAUQ,uBAAuBgC,MAC3CwC,IAED,CAAC,IAAK,QAAQ9F,SAASsD,KAAKmF,UAC/B3D,EAAM4D,iBAGHrM,EAAWiH,QAIfA,KAAKJ,aAAa,iBAAiB,GAEtBmd,GAAS1X,oBAAoB7C,GACrCmJ,OAAO3L,OACb,IAGA,Y","sources":["webpack://vg/webpack/bootstrap","webpack://vg/webpack/runtime/define property getters","webpack://vg/webpack/runtime/hasOwnProperty shorthand","webpack://vg/webpack/runtime/make namespace object","webpack://vg/./app/utils/js/functions.js","webpack://vg/./app/utils/js/dom/selectors.js","webpack://vg/./app/utils/js/dom/data.js","webpack://vg/./app/utils/js/dom/manipulator.js","webpack://vg/./app/utils/js/components/params.js","webpack://vg/./app/utils/js/dom/event.js","webpack://vg/./app/modules/module-fn.js","webpack://vg/./app/modules/base-module.js","webpack://vg/./app/utils/js/components/overflow.js","webpack://vg/./app/utils/js/components/backdrop.js","webpack://vg/./app/modules/vgsidebar/js/vgsidebar.js","webpack://vg/./app/modules/vgcollapse/js/vgcollapse.js","webpack://vg/./app/utils/js/components/responsive.js","webpack://vg/./app/modules/vgnav/js/vgnav.js","webpack://vg/./app/utils/js/components/placement.js","webpack://vg/./app/modules/vgdropdown/js/vgdropdown.js","webpack://vg/./app/utils/js/components/scrollbar.js","webpack://vg/./app/modules/vgmodal/js/vgmodal.js","webpack://vg/./app/modules/vgformsender/js/vgformsender.js","webpack://vg/./app/modules/vgrollup/js/vgrollup.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * Набор скриптов для широкого применения\r\n */\r\n\r\n/**\r\n * Если что-нибудь в объекте\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isEmptyObj(obj) {\r\n\tfor (let prop in obj) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(obj, prop)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\n/**\r\n * isElement\r\n * @param object\r\n * @returns {boolean}\r\n */\r\nconst isElement = object => {\r\n\tif (!isObject(object)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn typeof object.nodeType !== 'undefined'\r\n}\r\n\r\n/**\r\n * isDisabled\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nconst isDisabled = element => {\r\n\tif (!element || element.nodeType !== Node.ELEMENT_NODE) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (element.classList.contains('disabled')) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (typeof element.disabled !== 'undefined') {\r\n\t\treturn element.disabled\r\n\t}\r\n\r\n\treturn element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\r\n}\r\n\r\n/**\r\n * isVisible\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nfunction isVisible (element) {\r\n\tif (!isElement(element) || element.getClientRects().length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\tconst elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\r\n\tconst closedDetails = element.closest('details:not([open])')\r\n\r\n\tif (!closedDetails) {\r\n\t\treturn elementIsVisible\r\n\t}\r\n\r\n\tif (closedDetails !== element) {\r\n\t\tconst summary = element.closest('summary')\r\n\t\tif (summary && summary.parentNode !== closedDetails) {\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tif (summary === null) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementIsVisible\r\n}\r\n\r\n/**\r\n * isObject\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isObject(obj) {\r\n\treturn obj && typeof obj === 'object'\r\n}\r\n\r\n/**\r\n * Приводим в порядок типы данных\r\n * @param value\r\n * @returns {any}\r\n */\r\nfunction normalizeData(value) {\r\n\tif (value === 'true') {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (value === 'false') {\r\n\t\treturn false\r\n\t}\r\n\r\n\tif (value === Number(value).toString()) {\r\n\t\treturn Number(value)\r\n\t}\r\n\r\n\tif (value === '' || value === 'null') {\r\n\t\treturn null\r\n\t}\r\n\r\n\tif (typeof value !== 'string') {\r\n\t\treturn value\r\n\t}\r\n\r\n\ttry {\r\n\t\treturn JSON.parse(decodeURIComponent(value))\r\n\t} catch {\r\n\t\treturn value\r\n\t}\r\n}\r\n\r\n/**\r\n * Удаляем элементы с массива\r\n * @param arr\r\n * @param el\r\n */\r\nfunction removeElementArray(arr, el) {\r\n\treturn arr.filter((item) => !el.includes(item));\r\n}\r\n\r\n/**\r\n * Глубокое объединение объектов\r\n * @param objects\r\n * @returns {*}\r\n */\r\nfunction mergeDeepObject(...objects) {\r\n\tconst isObject = obj => obj && typeof obj === 'object';\r\n\r\n\treturn objects.reduce((prev, obj) => {\r\n\t\tObject.keys(obj).forEach(key => {\r\n\t\t\tconst pVal = prev[key];\r\n\t\t\tconst oVal = obj[key];\r\n\r\n\t\t\tif (Array.isArray(pVal) && Array.isArray(oVal)) {\r\n\t\t\t\tprev[key] = pVal.concat(...oVal);\r\n\t\t\t}\r\n\t\t\telse if (isObject(pVal) && isObject(oVal)) {\r\n\t\t\t\tprev[key] = mergeDeepObject(pVal, oVal);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tprev[key] = oVal;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn prev;\r\n\t}, {});\r\n}\r\n\r\n/**\r\n * Callback\r\n * @param possibleCallback\r\n * @param args\r\n * @param defaultValue\r\n * @returns {*}\r\n */\r\nfunction execute(possibleCallback, args = [], defaultValue = possibleCallback) {\r\n\treturn typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\r\n}\r\n\r\n/**\r\n * Transition\r\n * @param callback\r\n * @param transitionElement\r\n * @param waitForTransition\r\n */\r\nconst TRANSITION_END = 'transitionend';\r\nconst MILLISECONDS_MULTIPLIER = 1000;\r\n\r\nfunction executeAfterTransition (callback, transitionElement, waitForTransition = true, timeOutMs) {\r\n\tif (!waitForTransition) {\r\n\t\texecute(callback)\r\n\t\treturn\r\n\t}\r\n\r\n\tconst durationPadding = 5\r\n\tconst emulatedDuration = timeOutMs ? timeOutMs : getTransitionDurationFromElement(transitionElement) + durationPadding;\r\n\r\n\tlet called = false\r\n\r\n\tconst handler = ({ target }) => {\r\n\t\tif (target !== transitionElement) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tcalled = true\r\n\t\ttransitionElement.removeEventListener(TRANSITION_END, handler)\r\n\t\texecute(callback)\r\n\t}\r\n\r\n\ttransitionElement.addEventListener(TRANSITION_END, handler)\r\n\tsetTimeout(() => {\r\n\t\tif (!called) {\r\n\t\t\ttriggerTransitionEnd(transitionElement)\r\n\t\t}\r\n\t}, emulatedDuration)\r\n}\r\n\r\nconst getTransitionDurationFromElement = element => {\r\n\tif (!element) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// Get transition-duration of the element\r\n\tlet { transitionDuration, transitionDelay } = window.getComputedStyle(element)\r\n\r\n\tconst floatTransitionDuration = Number.parseFloat(transitionDuration)\r\n\tconst floatTransitionDelay = Number.parseFloat(transitionDelay)\r\n\r\n\t// Return 0 if element or transition duration is not found\r\n\tif (!floatTransitionDuration && !floatTransitionDelay) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// If multiple durations are defined, take the first\r\n\ttransitionDuration = transitionDuration.split(',')[0]\r\n\ttransitionDelay = transitionDelay.split(',')[0]\r\n\r\n\treturn (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\r\n}\r\n\r\nconst triggerTransitionEnd = element => {\r\n\telement.dispatchEvent(new Event(TRANSITION_END))\r\n}\r\n\r\n/**\r\n * Трюк для перезапуска анимации элемента\r\n *\r\n * @param {HTMLElement} element\r\n * @return void\r\n *\r\n * @смотри https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\r\n */\r\nconst reflow = element => {\r\n\telement.offsetHeight // eslint-disable-line no-unused-expressions\r\n}\r\n\r\n/**\r\n * Noop\r\n */\r\nconst noop = () => {};\r\n\r\n/**\r\n * Генерация случайной строки\r\n */\r\nfunction makeRandomString(length = 7) {\r\n\tlet result = '';\r\n\tconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\tconst charactersLength = characters.length;\r\n\tlet counter = 0;\r\n\twhile (counter < length) {\r\n\t\tresult += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n\t\tcounter += 1;\r\n\t}\r\n\treturn result;\r\n}\r\n\r\n/**\r\n *\r\n */\r\nconst isRTL = () => document.documentElement.dir === 'rtl'\r\n\r\nexport {isElement, isVisible, isDisabled, isObject, isEmptyObj, mergeDeepObject, removeElementArray, normalizeData, execute, executeAfterTransition, reflow, noop, makeRandomString, isRTL}","/**\r\n * Работа с DOM\r\n * @param selector\r\n * @returns {*}\r\n */\r\nimport {isElement} from \"../functions\";\r\n\r\nconst parseSelector = selector => {\r\n\tif (selector && window.CSS && window.CSS.escape) {\r\n\t\tselector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\r\n\t}\r\n\r\n\treturn selector\r\n}\r\n\r\nconst getSelector = element => {\r\n\tlet selector = element.getAttribute('data-vg-target');\r\n\r\n\tif (!selector || selector === '#') {\r\n\t\tlet hrefAttribute = element.getAttribute('href');\r\n\t\tif (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\r\n\t\t\threfAttribute = `#${hrefAttribute.split('#')[1]}`;\r\n\t\t}\r\n\r\n\t\tselector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\r\n\t}\r\n\r\n\treturn selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\r\n}\r\n\r\nconst Selectors = {\r\n\tfind(selector, element = document.documentElement) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\treturn selector;\r\n\t\t} else {\r\n\t\t\treturn Element.prototype.querySelector.call(element, selector);\r\n\t\t}\r\n\t},\r\n\r\n\tfindAll(selector, container = document.documentElement) {\r\n\t\treturn [].concat(...Element.prototype.querySelectorAll.call(container, selector));\r\n\t},\r\n\r\n\tgetSelectorFromElement(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\tif (selector) return Selectors.find(selector) ? selector : null\r\n\t\treturn null\r\n\t},\r\n\r\n\tgetElementFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.find(selector) : null\r\n\t},\r\n\r\n\tgetMultipleElementsFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.findAll(selector) : []\r\n\t}\r\n}\r\n\r\nexport default Selectors;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap data.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт работает с коллекцией модулей. Подробнее тут https://learn.javascript.ru/map-set\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst elementMap = new Map()\r\n\r\nexport default {\r\n\tset(element, key, instance) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\telementMap.set(element, new Map())\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\t\tif (!instanceMap.has(key) && instanceMap.size !== 0) {\r\n\t\t\tconsole.error(`VGApp не допускает более одного экземпляра для каждого элемента. Связанный экземпляр: ${Array.from(instanceMap.keys())[0]}.`)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tinstanceMap.set(key, instance)\r\n\t},\r\n\r\n\tget(element, key) {\r\n\t\tif (elementMap.has(element)) {\r\n\t\t\treturn elementMap.get(element).get(key) || null\r\n\t\t}\r\n\r\n\t\treturn null\r\n\t},\r\n\r\n\tremove(element, key) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\r\n\t\tinstanceMap.delete(key);\r\n\r\n\t\tif (instanceMap.size === 0) {\r\n\t\t\telementMap.delete(element)\r\n\t\t}\r\n\t}\r\n}\r\n","import {isElement, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Манипуляции с атрибутами у элемента:\r\n * get (элемент, имя, флаг - вырезать data-) - метод выбирает значение атрибута по его имени, если в поле имени передать 'data' -> будут выбраны только дата атрибуты, если 'all' -> метод вернет значение всех атрибутов\r\n * has (элемент, имя) - есть ли атрибут у элемента\r\n * set (элемент, имя, значение) - установка у элемента атрибута или его изменение\r\n * remove (элемент, имя) - удаляет атрибут у элемента\r\n */\r\nconst Manipulator = {\r\n\tget(element, nameAttribute = 'data', isRemoveDataName = true) {\r\n\t\tif (!element) {\r\n\t\t\treturn {}\r\n\t\t}\r\n\r\n\t\tif (nameAttribute === 'data') {\r\n\t\t\tlet elmBase = ['data-vg-toggle', 'data-vg-target', 'data-vg-dismiss'],\r\n\t\t\t\tattributes = {};\r\n\r\n\t\t\tlet arr = [].filter.call(element.attributes, function (at) {\r\n\t\t\t\treturn /^data-/.test(at.name);\r\n\t\t\t});\r\n\r\n\t\t\tif (arr.length) {\r\n\t\t\t\tarr.forEach(function (v) {\r\n\t\t\t\t\tlet name = v.name;\r\n\r\n\t\t\t\t\tif (!elmBase.includes(name)) {\r\n\t\t\t\t\t\tif (isRemoveDataName) name = name.slice(5);\r\n\t\t\t\t\t\tattributes[name] = normalizeData(v.value)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn attributes;\r\n\t\t} else if (nameAttribute === 'all') {\r\n\t\t\treturn element.getAttributeNames().reduce((acc, name) => {\r\n\t\t\t\treturn {...acc, [name]: element.getAttribute(name)};\r\n\t\t\t}, {});\r\n\t\t} else {\r\n\t\t\treturn element.getAttribute(nameAttribute);\r\n\t\t}\r\n\t},\r\n\r\n\thas(element, nameAttribute) {\r\n\t\treturn element.hasAttribute(nameAttribute);\r\n\t},\r\n\r\n\tset(element, name, value) {\r\n\t\tif (isElement(element) && name) {\r\n\t\t\telement.setAttribute(name, value);\r\n\t\t}\r\n\t},\r\n\r\n\tremove(element, nameAttribute) {\r\n\t\tif (isElement(element) && nameAttribute) {\r\n\t\t\telement.removeAttribute(nameAttribute);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport {Manipulator}\r\n","import {isElement, mergeDeepObject, normalizeData} from \"../functions\";\r\nimport {Manipulator} from \"../dom/manipulator\";\r\n\r\nclass Params {\r\n\tconstructor(params, element = null) {\r\n\t\tthis._params = this.merge(params, element);\r\n\t}\r\n\r\n\tget() {\r\n\t\treturn this._params;\r\n\t}\r\n\r\n\tfromElement(element) {\r\n\t\treturn isElement(element) ? Manipulator.get(element) : {};\r\n\t}\r\n\r\n\tmerge(params, element) {\r\n\t\tlet mParams = mergeDeepObject(params, this.fromElement(element));\r\n\r\n\t\tfor (let key in mParams) {\r\n\t\t\tif (key.indexOf('-') !== -1) {\r\n\t\t\t\tlet keys = key.split('-'),\r\n\t\t\t\t\tvalue = normalizeData(mParams[key]);\r\n\r\n\t\t\t\tif (keys[0] in mParams) {\r\n\t\t\t\t\tif (keys[1] in mParams[keys[0]]) {\r\n\t\t\t\t\t\tmParams[keys[0]][keys[1]] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete mParams[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ('params' in mParams) {\r\n\t\t\tmParams = mergeDeepObject(mParams, mParams.params);\r\n\t\t\tdelete mParams.params;\r\n\t\t}\r\n\r\n\t\treturn mParams;\r\n\t}\r\n}\r\n\r\nexport default Params;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap event.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт для прослушивания события\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\r\nconst stripNameRegex = /\\..*/\r\nconst stripUidRegex = /::\\d+$/\r\nconst eventRegistry = {} // Events storage\r\nlet uidEvent = 1\r\nconst customEvents = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout'\r\n}\r\n\r\nconst nativeEvents = new Set([\r\n\t'click',\r\n\t'dblclick',\r\n\t'mouseup',\r\n\t'mousedown',\r\n\t'contextmenu',\r\n\t'mousewheel',\r\n\t'DOMMouseScroll',\r\n\t'mouseover',\r\n\t'mouseout',\r\n\t'mousemove',\r\n\t'selectstart',\r\n\t'selectend',\r\n\t'submit',\r\n\t'keydown',\r\n\t'keypress',\r\n\t'keyup',\r\n\t'orientationchange',\r\n\t'touchstart',\r\n\t'touchmove',\r\n\t'touchend',\r\n\t'touchcancel',\r\n\t'pointerdown',\r\n\t'pointermove',\r\n\t'pointerup',\r\n\t'pointerleave',\r\n\t'pointercancel',\r\n\t'gesturestart',\r\n\t'gesturechange',\r\n\t'gestureend',\r\n\t'focus',\r\n\t'blur',\r\n\t'change',\r\n\t'reset',\r\n\t'select',\r\n\t'submit',\r\n\t'focusin',\r\n\t'focusout',\r\n\t'load',\r\n\t'unload',\r\n\t'beforeunload',\r\n\t'resize',\r\n\t'move',\r\n\t'DOMContentLoaded',\r\n\t'readystatechange',\r\n\t'error',\r\n\t'abort',\r\n\t'scroll'\r\n])\r\n\r\n/**\r\n * Приватные методы\r\n */\r\n\r\nfunction makeEventUid(element, uid) {\r\n\treturn (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\r\n}\r\n\r\nfunction getElementEvents(element) {\r\n\tconst uid = makeEventUid(element)\r\n\r\n\telement.uidEvent = uid\r\n\teventRegistry[uid] = eventRegistry[uid] || {}\r\n\r\n\treturn eventRegistry[uid]\r\n}\r\n\r\nfunction bootstrapHandler(element, fn) {\r\n\treturn function handler(event) {\r\n\t\thydrateObj(event, { delegateTarget: element })\r\n\r\n\t\tif (handler.oneOff) {\r\n\t\t\tEventHandler.off(element, event.type, fn)\r\n\t\t}\r\n\r\n\t\treturn fn.apply(element, [event])\r\n\t}\r\n}\r\n\r\nfunction bootstrapDelegationHandler(element, selector, fn) {\r\n\treturn function handler(event) {\r\n\t\tconst domElements = element.querySelectorAll(selector)\r\n\r\n\t\tfor (let { target } = event; target && target !== this; target = target.parentNode) {\r\n\t\t\tfor (const domElement of domElements) {\r\n\t\t\t\tif (domElement !== target) {\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\r\n\t\t\t\thydrateObj(event, { delegateTarget: target })\r\n\r\n\t\t\t\tif (handler.oneOff) {\r\n\t\t\t\t\tEventHandler.off(element, event.type, selector, fn)\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn fn.apply(target, [event])\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction findHandler(events, callable, delegationSelector = null) {\r\n\treturn Object.values(events)\r\n\t\t.find(event => event.callable === callable && event.delegationSelector === delegationSelector)\r\n}\r\n\r\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\r\n\tconst isDelegated = typeof handler === 'string'\r\n\t// TODO: выдает \"false\" вместо селектора, поэтому нужно проверить. boot\r\n\tconst callable = isDelegated ? delegationFunction : (handler || delegationFunction)\r\n\tlet typeEvent = getTypeEvent(originalTypeEvent)\r\n\r\n\tif (!nativeEvents.has(typeEvent)) {\r\n\t\ttypeEvent = originalTypeEvent\r\n\t}\r\n\r\n\treturn [isDelegated, callable, typeEvent]\r\n}\r\n\r\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\r\n\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\treturn\r\n\t}\r\n\r\n\tlet [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\r\n\t// in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\r\n\t// this prevents the handler from being dispatched the same way as mouseover or mouseout does\r\n\tif (originalTypeEvent in customEvents) {\r\n\t\tconst wrapFunction = fn => {\r\n\t\t\treturn function (event) {\r\n\t\t\t\tif (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\r\n\t\t\t\t\treturn fn.call(this, event)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcallable = wrapFunction(callable)\r\n\t}\r\n\r\n\tconst events = getElementEvents(element)\r\n\tconst handlers = events[typeEvent] || (events[typeEvent] = {})\r\n\tconst previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\r\n\r\n\tif (previousFunction) {\r\n\t\tpreviousFunction.oneOff = previousFunction.oneOff && oneOff\r\n\r\n\t\treturn\r\n\t}\r\n\r\n\tconst uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\r\n\tconst fn = isDelegated ?\r\n\t\tbootstrapDelegationHandler(element, handler, callable) :\r\n\t\tbootstrapHandler(element, callable)\r\n\r\n\tfn.delegationSelector = isDelegated ? handler : null\r\n\tfn.callable = callable\r\n\tfn.oneOff = oneOff\r\n\tfn.uidEvent = uid\r\n\thandlers[uid] = fn\r\n\r\n\telement.addEventListener(typeEvent, fn, isDelegated)\r\n}\r\n\r\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\r\n\tconst fn = findHandler(events[typeEvent], handler, delegationSelector)\r\n\r\n\tif (!fn) {\r\n\t\treturn\r\n\t}\r\n\r\n\telement.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\r\n\tdelete events[typeEvent][fn.uidEvent]\r\n}\r\n\r\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\r\n\tconst storeElementEvent = events[typeEvent] || {}\r\n\r\n\tfor (const [handlerKey, event] of Object.entries(storeElementEvent)) {\r\n\t\tif (handlerKey.includes(namespace)) {\r\n\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction getTypeEvent(event) {\r\n\t// allow to get the native events from namespaced events ('click.bs.button' --> 'click')\r\n\tevent = event.replace(stripNameRegex, '')\r\n\treturn customEvents[event] || event\r\n}\r\n\r\nfunction hydrateObj(obj, meta = {}) {\r\n\tfor (const [key, value] of Object.entries(meta)) {\r\n\t\ttry {\r\n\t\t\tobj[key] = value\r\n\t\t} catch {\r\n\t\t\tObject.defineProperty(obj, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget() {\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\treturn obj\r\n}\r\n\r\n/**\r\n * События\r\n * @type {{one(*, *, *, *): void, trigger(*, *, *): (null|*), off(*, *, *, *): void, on(*, *, *, *): void}}\r\n */\r\nconst EventHandler = {\r\n\t/**\r\n\t * Прослушиватель событий (элемент, событие (полный список смотри в константе nativeEvents, источник события или хендлер, функция обратного вызова))\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\ton(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, false)\r\n\t},\r\n\r\n\t/**\r\n\t * Прослушиватель событий, но замыкается и больше не повторяется на элементе\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\tone(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, true)\r\n\t},\r\n\r\n\t/**\r\n\t * Удаление обработчика\r\n\t * @param element\r\n\t * @param originalTypeEvent\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\toff(element, originalTypeEvent, handler, delegationFunction) {\r\n\t\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\t\tconst inNamespace = typeEvent !== originalTypeEvent\r\n\t\tconst events = getElementEvents(element)\r\n\t\tconst storeElementEvent = events[typeEvent] || {}\r\n\t\tconst isNamespace = originalTypeEvent.startsWith('.')\r\n\r\n\t\tif (typeof callable !== 'undefined') {\r\n\t\t\t// Simplest case: handler is passed, remove that listener ONLY.\r\n\t\t\tif (!Object.keys(storeElementEvent).length) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tremoveHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isNamespace) {\r\n\t\t\tfor (const elementEvent of Object.keys(events)) {\r\n\t\t\t\tremoveNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\r\n\t\t\tconst handlerKey = keyHandlers.replace(stripUidRegex, '')\r\n\r\n\t\t\tif (!inNamespace || originalTypeEvent.includes(handlerKey)) {\r\n\t\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Пользовательские события. Подробнее тут https://learn.javascript.ru/dispatch-events\r\n\t * @param element\r\n\t * @param event\r\n\t * @param args\r\n\t * @returns {*|null}\r\n\t */\r\n\ttrigger(element, event, args) {\r\n\t\tif (typeof event !== 'string' || !element) {\r\n\t\t\treturn null\r\n\t\t}\r\n\r\n\t\tlet bubbles = true;\r\n\t\tlet nativeDispatch = true;\r\n\t\tlet defaultPrevented = false;\r\n\r\n\t\tconst evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\r\n\r\n\t\tif (defaultPrevented) {\r\n\t\t\tevt.preventDefault()\r\n\t\t}\r\n\r\n\t\tif (nativeDispatch) {\r\n\t\t\telement.dispatchEvent(evt)\r\n\t\t}\r\n\r\n\t\treturn evt\r\n\t}\r\n}\r\n\r\nexport default EventHandler\r\n","import EventHandler from \"../utils/js/dom/event\";\r\nimport {isDisabled, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Тут собраны вспомогательные скрипты для работы модулей\r\n */\r\n\r\n/**\r\n * Набор svg элементов\r\n * @param name\r\n * @returns {*|{}}\r\n */\r\nconst getSVG = (name) => {\r\n\tconst svg = {\r\n\t\terror: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-success\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-2\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(252, 191, 191, .5)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-error-circle\" stroke=\"#F74444\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-error-line1\" d=\"M22.244224,22 L60.4279902,60.1837662\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path><path class=\"ui-error-line2\" d=\"M60.755776,21 L23.244224,59.8443492\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path></g></g></svg>',\r\n\t\tsuccess: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-error\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(117, 183, 152, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-success-circle\" id=\"Oval-2\" stroke=\"#A5DC86\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><polyline class=\"ui-success-path\" id=\"Path-2\" stroke=\"#A5DC86\" stroke-width=\"4\" points=\"19 38.8036813 31.1020744 54.8046875 63.299221 28\"></polyline></g></g></svg>',\r\n\t\twaiting: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-waiting\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(255, 218, 106, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-waiting-circle\" id=\"Oval-2\" stroke=\"#ffda6a\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-waiting-line1\" d=\"M43 63C54.598 63 64 53.598 64 42C64 30.402 54.598 21 43 21C31.402 21 22 30.402 22 42C22 53.598 31.402 63 43 63Z\" stroke-width=\"3\" stroke=\"#ffda6a\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path class=\"ui-waiting-line2\" d=\"M40.6667 32.6641V44.3307H52.3334\" stroke=\"#ffda6a\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></g></svg>',\r\n\t\tdots: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-three-dots-vertical\" viewBox=\"0 0 16 16\"><path d=\"M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/></svg>',\r\n\t\tcross: '<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 224.512 224.512\" xml:space=\"preserve\"><g><polygon points=\"224.507,6.997 217.521,0 112.256,105.258 6.998,0 0.005,6.997 105.263,112.254 0.005,217.512 6.998,224.512 112.256,119.24 217.521,224.512 224.507,217.512 119.249,112.254 \"/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>'\r\n\t};\r\n\r\n\treturn svg[name] ?? {};\r\n}\r\n\r\n/**\r\n * Вешаем событие \"Закрыть\" на все модалки, сайдбары и т.п.\r\n * @param module\r\n * @param method\r\n */\r\nconst dismissTrigger = (module, method = 'hide') => {\r\n\tconst clickEvent = `click.dismiss.${module.EVENT_KEY}`\r\n\tconst name = module.NAME;\r\n\r\n\tEventHandler.on(document, clickEvent, `[data-vg-dismiss=\"${name}\"]`, function (event) {\r\n\t\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\t\tevent.preventDefault()\r\n\t\t}\r\n\r\n\t\tif (isDisabled(this)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst target = Selectors.getSelectorFromElement(this) || this.closest(`.vg-${name}`)\r\n\t\tconst instance = module.getOrCreateInstance(target)\r\n\r\n\t\tinstance[method]()\r\n\t})\r\n}\r\n\r\n/**\r\n * AJAX REQUEST\r\n * @type {{post: ajax.post, get: ajax.get, x: ((function(): (XMLHttpRequest))|*), send: ajax.send}}\r\n */\r\nconst Ajax = {\r\n\tx: function () {\r\n\t\tif (typeof XMLHttpRequest !== 'undefined') {\r\n\t\t\treturn new XMLHttpRequest();\r\n\t\t}\r\n\t\tlet versions = [\r\n\t\t\t\"MSXML2.XmlHttp.6.0\",\r\n\t\t\t\"MSXML2.XmlHttp.5.0\",\r\n\t\t\t\"MSXML2.XmlHttp.4.0\",\r\n\t\t\t\"MSXML2.XmlHttp.3.0\",\r\n\t\t\t\"MSXML2.XmlHttp.2.0\",\r\n\t\t\t\"Microsoft.XmlHttp\"\r\n\t\t];\r\n\r\n\t\tlet xhr;\r\n\t\tfor (let i = 0; i < versions.length; i++) {\r\n\t\t\ttry {\r\n\t\t\t\txhr = new ActiveXObject(versions[i]);\r\n\t\t\t\tbreak;\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\treturn xhr;\r\n\t},\r\n\r\n\tsend: function (url, callback, method, data, async) {\r\n\t\tif (async === undefined) {\r\n\t\t\tasync = true;\r\n\t\t}\r\n\t\tlet x = Ajax.x();\r\n\t\tx.open(method, url, async);\r\n\t\tx.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\tx.onreadystatechange = function () {\r\n\t\t\tif (x.readyState === 4) {\r\n\t\t\t\tswitch (x.status) {\r\n\t\t\t\t\tcase 200:\r\n\t\t\t\t\t\tcallback('success', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tcallback('error', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tx.send(data)\r\n\t},\r\n\r\n\tget: function (url, data, callback, async) {\r\n\t\tlet query = [];\r\n\r\n\t\tif (!isEmptyObj(data)) {\r\n\t\t\tfor (let key of data) {\r\n\t\t\t\tquery.push(encodeURIComponent(key[0]) + '=' + encodeURIComponent(key[1]));\r\n\t\t\t}\r\n\t\t}\r\n\t\tAjax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async)\r\n\t},\r\n\r\n\tpost: function (url, data, callback, async) {\r\n\t\tAjax.send(url, callback, 'POST', data, async)\r\n\t}\r\n};\r\n\r\nexport {\r\n\tdismissTrigger, Ajax, getSVG\r\n}","import {execute, executeAfterTransition, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\nimport Data from \"../utils/js/dom/data\";\r\nimport Params from \"../utils/js/components/params\";\r\nimport EventHandler from \"../utils/js/dom/event\";\r\nimport {Ajax, getSVG} from \"./module-fn\";\r\n\r\nclass BaseModule {\r\n\tconstructor(element) {\r\n\t\tif (!element) return\r\n\r\n\t\tthis._element = Selectors.find(element);\r\n\t\tif (!this._element){\r\n\t\t\tthrow new Error('Товарищ! Первый параметр не должен быть пустым!');\r\n\t\t}\r\n\r\n\t\tthis._params = {};\r\n\t\tData.set(this._element, this.constructor.NAME_KEY, this)\r\n\t}\r\n\r\n\t_getParams(element, params) {\r\n\t\treturn new Params(params, element).get();\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tData.remove(this._element, this.constructor.NAME_KEY);\r\n\t\tEventHandler.off(this._element, this.constructor.EVENT_KEY)\r\n\r\n\t\tfor (const propertyName of Object.getOwnPropertyNames(this)) {\r\n\t\t\tthis[propertyName] = null\r\n\t\t}\r\n\t}\r\n\r\n\t_route(callback) {\r\n\t\tconst _this = this;\r\n\t\tlet $content = null;\r\n\r\n\t\tconst setData = (data) => {\r\n\t\t\tif ($content) $content.innerHTML = data;\r\n\t\t};\r\n\r\n\t\tif (!_this._params.hasOwnProperty('ajax')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!_this._params.ajax.route) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!'method' in _this._params.ajax) {\r\n\t\t\t_this._params.ajax.method = 'get';\r\n\t\t}\r\n\r\n\t\tif ('target' in _this._params.ajax && _this._params.ajax.target) {\r\n\t\t\t$content = Selectors.find(_this._params.ajax.target);\r\n\t\t}\r\n\r\n\t\tif ('loader' in _this._params.ajax && _this._params.ajax.loader) {\r\n\t\t\tsetData('<div class=\"vg-loader\"></div>');\r\n\t\t}\r\n\r\n\t\tAjax[_this._params.ajax.method](_this._params.ajax.route, _this._params.ajax.data || {}, function (status, data) {\r\n\t\t\tsetData(data.response);\r\n\t\t\texecute(callback, [status, data]);\r\n\t\t});\r\n\t}\r\n\r\n\t_dismissElement() {\r\n\t\tlet cross = getSVG('cross'),\r\n\t\t\tbutton = this._element.querySelector('.vg-btn-close');\r\n\r\n\t\tif (button) {\r\n\t\t\tlet svg = button.querySelector('svg');\r\n\t\t\tif (!svg) button.insertAdjacentHTML('beforeend', cross);\r\n\t\t}\r\n\t}\r\n\r\n\t_queueCallback(callback, element, isAnimated = true, timeOutMs) {\r\n\t\texecuteAfterTransition(callback, element, isAnimated, timeOutMs);\r\n\t}\r\n\r\n\tstatic getInstance(element) {\r\n\t\treturn Data.get(Selectors.find(element), this.NAME_KEY)\r\n\t}\r\n\r\n\tstatic getOrCreateInstance(element, params = {}) {\r\n\t\treturn this.getInstance(element) || new this(element, !isEmptyObj(params) ? params : {})\r\n\t}\r\n\r\n\tstatic get DATA_KEY() {\r\n\t\treturn `vg.${this.NAME}`\r\n\t}\r\n\r\n\tstatic get EVENT_KEY() {\r\n\t\treturn `.${this.DATA_KEY}`\r\n\t}\r\n}\r\n\r\nexport default BaseModule;","import {Manipulator} from \"../dom/manipulator\";\r\n\r\n/**\r\n * Класс Overflow\r\n * Запрещает скроллинг и убирает его, компенсируя отступом\r\n */\r\n\r\nclass Overflow {\r\n\tstatic append() {\r\n\t\tdocument.body.style.paddingRight = getWidth() + 'px';\r\n\t\tdocument.body.style.overflow = 'hidden';\r\n\r\n\t\tfunction getWidth() {\r\n\t\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic destroy() {\r\n\t\tdocument.body.style.overflow = '';\r\n\t\tdocument.body.style.paddingRight = '';\r\n\r\n\t\tlet styles = Manipulator.get(document.body, 'style');\r\n\t\tif (!styles) Manipulator.remove(document.body, 'style');\r\n\t}\r\n}\r\n\r\nexport default Overflow;","import {execute} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\nimport EventHandler from \"../dom/event\";\r\nimport Overflow from \"./overflow\";\r\n\r\nconst NAME = 'backdrop'\r\nconst CLASS_NAME = 'vg-backdrop'\r\nconst CLASS_NAME_FADE = 'fade'\r\nconst EVENT_MOUSEDOWN = `mousedown.vg.${NAME}`\r\n\r\nclass Backdrop {\r\n\tstatic show(callback) {\r\n\t\tBackdrop._append()\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic hide(callback) {\r\n\t\tBackdrop._destroy();\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic _append() {\r\n\t\tif (Selectors.find('.' + CLASS_NAME)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet backdrop = document.createElement('div');\r\n\t\tbackdrop.classList.add(CLASS_NAME);\r\n\r\n\t\tdocument.body.append(backdrop);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tbackdrop.classList.add(CLASS_NAME_FADE)\r\n\t\t}, 50);\r\n\r\n\t\tEventHandler.on(backdrop, EVENT_MOUSEDOWN, () => {\r\n\t\t\tBackdrop.hide()\r\n\t\t\tOverflow.destroy();\r\n\t\t});\r\n\t}\r\n\r\n\tstatic _destroy() {\r\n\t\tlet element = Selectors.find('.' + CLASS_NAME);\r\n\t\tif (!element) return;\r\n\r\n\t\telement.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\telement.remove();\r\n\t\t}, 500);\r\n\t}\r\n}\r\n\r\nexport default Backdrop;","import BaseModule from \"../../base-module\";\r\nimport {isDisabled, isVisible, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'sidebar';\r\nconst NAME_KEY = 'vg.sidebar';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"sidebar\"]'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGSidebar extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\toverflow: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tthis._route();\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif (_this._params.backdrop) {\r\n\t\t\tBackdrop.show();\r\n\t\t}\r\n\r\n\t\tif (_this._params.overflow) {\r\n\t\t\tOverflow.append();\r\n\t\t}\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_SHOW);\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tEventHandler.on(Selectors.find('.vg-backdrop'), 'mousedown.vg.backdrop', function () {\r\n\t\t\t\t_this.hide();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._element, true, 50)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tif (_this._params.backdrop) {\r\n\t\t\tBackdrop.hide(function () {\r\n\t\t\t\tif (_this._params.overflow) {\r\n\t\t\t\t\tOverflow.destroy();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (_this._params.overflow) {\r\n\t\t\tOverflow.destroy();\r\n\t\t}\r\n\r\n\t\t_this._element.setAttribute('aria-expanded', false);\r\n\t\t_this._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\tconst completeCallback = () => EventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\tthis._queueCallback(completeCallback, this._element, true);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(document, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== 'Escape') return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED)\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGSidebar);\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\t//if (isVisible(this)) this.focus();\r\n\t\tthis.setAttribute('aria-expanded', false);\r\n\t})\r\n\r\n\tconst alreadyOpen = Selectors.find('.vg-sidebar.show')\r\n\tif (alreadyOpen && alreadyOpen !== target) {\r\n\t\tVGSidebar.getInstance(alreadyOpen).hide()\r\n\t}\r\n\r\n\tconst data = VGSidebar.getOrCreateInstance(target)\r\n\tdata.toggle(this);\r\n});\r\n\r\nexport default VGSidebar;\r\n","import BaseModule from \"../../base-module\";\r\nimport {mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'collapse';\r\nconst NAME_KEY = 'vg.collapse';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_COLLAPSE = 'vg-collapse';\r\nconst CLASS_NAME_COLLAPSING = 'vg-collapsing';\r\nconst CLASS_NAME_COLLAPSED = 'vg-collapsed';\r\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\r\n\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"collapse\"]';\r\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGCollapse extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\ttoggle: true,\r\n\t\t\tparent: null,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._isTransitioning = false\r\n\t\tthis._triggerArray = []\r\n\r\n\t\tconst toggleList = Selectors.findAll(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const elem of toggleList) {\r\n\t\t\tconst selector = Selectors.getSelectorFromElement(elem);\r\n\t\t\tconst filterElement = Selectors.findAll(selector).filter(foundElement => foundElement === this._element);\r\n\r\n\t\t\tif (selector !== null && filterElement.length) {\r\n\t\t\t\tthis._triggerArray.push(elem)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._initializeChildren();\r\n\r\n\t\tif (!this._params.parent) {\r\n\t\t\tthis._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\r\n\t\t}\r\n\r\n\t\tif (this._params.toggle) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || _this._isShown()) return;\r\n\r\n\t\tlet activeChildren = [];\r\n\r\n\t\tif (_this._params.parent) {\r\n\t\t\tactiveChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\r\n\t\t\t\t.filter(element => element !== this._element)\r\n\t\t\t\t.map(element => VGCollapse.getOrCreateInstance(element, { toggle: false }));\r\n\t\t}\r\n\r\n\t\tif (activeChildren.length && activeChildren[0]._isTransitioning) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_SHOW);\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\tfor (const activeInstance of activeChildren) {\r\n\t\t\tactiveInstance.hide();\r\n\t\t}\r\n\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE)\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING)\r\n\r\n\t\t_this._element.style.height = 0;\r\n\r\n\t\t_this._addAriaAndCollapsedClass(_this._triggerArray, true);\r\n\t\t_this._isTransitioning = true;\r\n\r\n\t\t_this._route();\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\t\t_this._element.style.height = '';\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_SHOWN);\r\n\t\t}\r\n\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\r\n\t\tconst scrollSize = `scrollHeight`;\r\n\t\t_this._element.style.height = `${_this._element[scrollSize]}px`;\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || !_this._isShown()) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_HIDE)\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\t_this._element.style.height = `${this._element.getBoundingClientRect().height}px`;\r\n\t\treflow(_this._element);\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING);\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\tfor (const trigger of _this._triggerArray) {\r\n\t\t\tconst element = Selectors.getElementFromSelector(trigger);\r\n\r\n\t\t\tif (element && !_this._isShown(element)) {\r\n\t\t\t\t_this._addAriaAndCollapsedClass([trigger], false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_this._isTransitioning = true\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE);\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_HIDDEN);\r\n\t\t}\r\n\r\n\t\t_this._element.style.height = '';\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown(element = this._element) {\r\n\t\treturn element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addAriaAndCollapsedClass(triggerArray, isOpen) {\r\n\t\tif (!triggerArray.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const element of triggerArray) {\r\n\t\t\tthis._changeStateButton(element, isOpen);\r\n\t\t}\r\n\t}\r\n\r\n\t_initializeChildren() {\r\n\t\tif (!this._params.parent) return;\r\n\r\n\t\tconst children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const element of children) {\r\n\t\t\tconst selected = Selectors.getElementFromSelector(element)\r\n\r\n\t\t\tif (selected) {\r\n\t\t\t\tthis._addAriaAndCollapsedClass([element], this._isShown(selected))\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_getFirstLevelChildren(selector) {\r\n\t\tconst children = Selectors.find(CLASS_NAME_DEEPER_CHILDREN, this._params.parent);\r\n\t\treturn Selectors.find(selector, this._params.parent).filter(element => !children.includes(element));\r\n\t}\r\n\r\n\t_changeStateButton(element, isOpen) {\r\n\t\telement.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\r\n\t\telement.setAttribute('aria-expanded', isOpen);\r\n\t\telement.innerHTML = Manipulator.get(element, `data-${isOpen ? 'hide' : 'show'}-text`) || element.innerHTML;\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tSelectors.getMultipleElementsFromSelector(this).forEach(function (element) {\r\n\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).toggle();\r\n\t});\r\n})\r\n\r\nexport default VGCollapse;","/**\r\n * Класс Responsive, работает по таким же медиа точкам, что и bootstrap\r\n * и определяет на тач устройства.\r\n */\r\n\r\nclass Responsive {\r\n\tconstructor() {\r\n\t\tthis.breakpoints = {\r\n\t\t\txs: 0,\r\n\t\t\tsm: 576,\r\n\t\t\tmd: 768,\r\n\t\t\tlg: 992,\r\n\t\t\txl: 1200,\r\n\t\t\txxl: 1400,\r\n\t\t\txxxl: 1600,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Если наша ширина экрана совпадает с диапазоном который указан в модуле выдаем true, иначе false\r\n\t * @param module\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic check(module) {\r\n\t\tlet instance = new this ;\r\n\t\treturn instance.define(module);\r\n\t}\r\n\r\n\t/**\r\n\t * Проверяет на тач устройства. TODO не совсем правильно, надо сделать по-другому\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic checkMobileOrTablet() {\r\n\t\tlet check = false;\r\n\t\t(function(a) {\r\n\t\t\tif (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.slice(0,4))){\r\n\t\t\t\tcheck = true;\r\n\t\t\t}\r\n\t\t})(navigator.userAgent||navigator.vendor||window.opera);\r\n\r\n\t\treturn check;\r\n\t}\r\n\r\n\tdefine(module) {\r\n\t\tlet windowWidth = window.innerWidth,\r\n\t\t\tresponsive_size = this._checkResponsiveClass(module),\r\n\t\t\tbreakpoints = this.breakpoints,\r\n\t\t\tpoint = Object.keys(breakpoints).find(key => breakpoints[key] === responsive_size);\r\n\r\n\t\tlet keys = Object.keys(breakpoints),\r\n\t\t\tloc = keys.indexOf(point);\r\n\r\n\t\treturn windowWidth >= breakpoints[keys[loc + 1]];\r\n\t}\r\n\r\n\t_checkResponsiveClass(module) {\r\n\t\tlet element = module._element,\r\n\t\t\tparams = module._params,\r\n\t\t\tcurrent_responsive_size = 0;\r\n\r\n\t\tif (element.classList.contains(params.classes.XXXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxxl;\r\n\t\t} else if (element.classList.contains(params.classes.XXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxl;\r\n\t\t} else if (element.classList.contains(params.classes.XL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xl;\r\n\t\t} else if (element.classList.contains(params.classes.LG)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.lg;\r\n\t\t} else if (element.classList.contains(params.classes.MD)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.md;\r\n\t\t} else if (element.classList.contains(params.classes.SM)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.sm;\r\n\t\t} else if (element.classList.contains(params.classes.XS)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t} else {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t}\r\n\r\n\t\treturn current_responsive_size\r\n\t}\r\n}\r\n\r\nexport default Responsive;","import BaseModule from \"../../base-module\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Responsive from \"../../../utils/js/components/responsive\";\r\nimport {getSVG} from \"../../module-fn\";\r\nimport {execute, isDisabled, isVisible, mergeDeepObject, noop, normalizeData} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'nav';\r\nconst NAME_KEY = 'vg.nav';\r\n\r\n/**\r\n * Constants Classes\r\n */\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst SELECTOR_DATA_TOGGLE = '.vg-nav a';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_RESIZE_DATA_API = `resize.${NAME_KEY}.data.api`;\r\n\r\nclass VGNav extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbreakpoint: false,\r\n\t\t\tplacement: 'horizontal',\r\n\t\t\tclasses: {\r\n\t\t\t\thamburgerActive: 'vg-nav-hamburger-active',\r\n\t\t\t\thamburgerAlways: 'vg-nav-hamburger-always',\r\n\t\t\t\thamburger: 'vg-nav-hamburger',\r\n\t\t\t\tcontainer: 'vg-nav-container',\r\n\t\t\t\twrapper: 'vg-nav-wrapper',\r\n\t\t\t\tactive: 'vg-nav-active',\r\n\t\t\t\texpand: 'vg-nav-expand',\r\n\t\t\t\tcloned: 'vg-nav-cloned',\r\n\t\t\t\thover: 'vg-nav-hover',\r\n\t\t\t\tflip: 'vg-nav-flip',\r\n\t\t\t\tXXXL: 'vg-nav-xxxl',\r\n\t\t\t\tXXL: 'vg-nav-xxl',\r\n\t\t\t\tXL: 'vg-nav-xl',\r\n\t\t\t\tLG: 'vg-nav-lg',\r\n\t\t\t\tMD: 'vg-nav-md',\r\n\t\t\t\tSM: 'vg-nav-sm',\r\n\t\t\t\tXS: 'vg-nav-xs'\r\n\t\t\t},\r\n\t\t\texpand: true,\r\n\t\t\thover: false,\r\n\t\t\tposition: true,\r\n\t\t\tcollapse: true,\r\n\t\t\ttoggle: '<span class=\"default\"></span>',\r\n\t\t\thamburger: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\talways: false,\r\n\t\t\t\ttitle: '',\r\n\t\t\t\tbody: null\r\n\t\t\t},\r\n\t\t\tcallback: noop,\r\n\t\t\tanimation: true,\r\n\t\t\ttimeoutAnimation: 300,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._navigation = null;\r\n\t\tthis.navigation = '.' + this._params.classes.wrapper;\r\n\r\n\t\tthis.movedLinks = [];\r\n\t\tthis.$links = Selectors.findAll('.' + this._params.classes.wrapper + ' > li', this.navigation)\r\n\r\n\t\tif (this._params.animation === false) {\r\n\t\t\tthis._params.timeoutAnimation = 10\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tget navigation() {\r\n\t\treturn this._navigation;\r\n\t}\r\n\r\n\tset navigation(el) {\r\n\t\tlet elm = Selectors.find(el, this._element);\r\n\t\tif (!elm) return;\r\n\t\tthis._navigation = elm;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tif (!this.navigation) return;\r\n\r\n\t\tlet params = this._params;\r\n\r\n\t\t// Вешаем основные классы\r\n\t\tthis._element.classList.add(params.classes.container);\r\n\t\tthis._element.classList.add('vg-nav-' + params.placement);\r\n\r\n\t\t// Если нужно оставить список меню или установить медиа точку\r\n\t\tif (!params.breakpoint) {\r\n\t\t\tparams.expand = false;\r\n\t\t}\r\n\r\n\t\tif (!params.hamburger.always) {\r\n\t\t\tif (!params.breakpoint || !params.expand) {\r\n\t\t\t\tthis._element.classList.add(params.classes.expand);\r\n\t\t\t} else if (params.breakpoint !== false) {\r\n\t\t\t\tthis._element.classList.add('vg-nav-' + params.breakpoint);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._element.classList.add(params.classes.hamburgerAlways);\r\n\t\t}\r\n\r\n\t\t// Меню срабатывает при наведении, если это не мобильное устройство\r\n\t\tif (params.hover) {\r\n\t\t\tthis._element.classList.add(params.classes.hover);\r\n\r\n\t\t\tif (Responsive.checkMobileOrTablet()) {\r\n\t\t\t\tthis._element.classList.remove(params.classes.hover);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем гамбургер, если его нет в разметке\r\n\t\tif (params.expand && !params.hamburger.body) {\r\n\t\t\tlet isHamburger = Selectors.find('.' + params.classes.hamburger, this._element);\r\n\r\n\t\t\tif (isHamburger === null) {\r\n\t\t\t\tlet mTitle = '',\r\n\t\t\t\t\thamburger = '<span class=\"' + params.classes.hamburger + '--lines\"><span></span><span></span><span></span></span>';\r\n\r\n\t\t\t\tif (params.hamburger.title) {\r\n\t\t\t\t\tmTitle = '<span class=\"' + params.classes.hamburger + '--title\">'+ params.hamburger.title +'</span>';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (params.hamburger.body !== null) {\r\n\t\t\t\t\thamburger = params.hamburger.body;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._element.insertAdjacentHTML('afterbegin','<a href=\"#sidebar-nav\" class=\"' + params.classes.hamburger + '\" data-vg-toggle=\"sidebar\">' + mTitle + hamburger +'</a>');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем указатель переключателя\r\n\t\tif (params.toggle) {\r\n\t\t\tlet $dropdown_a = [...Selectors.findAll('.dropdown-mega > a, .dropdown > a', this._element)],\r\n\t\t\t\ttoggle = '<span class=\"toggle\">' + params.toggle + '</span>';\r\n\r\n\t\t\tif ($dropdown_a.length) {\r\n\t\t\t\t$dropdown_a.forEach(function (elem) {\r\n\t\t\t\t\tif (!elem.querySelector('.toggle') && !elem.closest('.dots')) {\r\n\t\t\t\t\t\telem.setAttribute('aria-expanded', 'false')\r\n\t\t\t\t\t\telem.insertAdjacentHTML('beforeend', toggle)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (params.collapse && Responsive.check(this) && params.placement !== 'vertical') {\r\n\t\t\tsetCollapse(this);\r\n\t\t}\r\n\r\n\t\tif ('afterInit' in this._params.callback) {\r\n\t\t\texecute(this._params.callback.afterInit, [this]);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Функция сворачивания\r\n\t\t * TODO Придумать что то с мега меню, которое уходит в подменю\r\n\t\t * TODO Так же есть косяки при ресайзе\r\n\t\t */\r\n\t\tfunction setCollapse(_this) {\r\n\t\t\tlet width_navigation_responsive = _this.navigation.clientWidth,\r\n\t\t\t\twidth_all_links_responsive = 0,\r\n\t\t\t\t$dots = Selectors.find('.dots', _this.navigation),\r\n\t\t\t\t_dots = getSVG('dots');\r\n\r\n\t\t\tif (_this.$links.length) {\r\n\t\t\t\tif ($dots) {\r\n\t\t\t\t\twidth_all_links_responsive = $dots.clientWidth\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet $a = Selectors.find('a', _this.$links[0]),\r\n\t\t\t\t\t\t$linkStyle = getComputedStyle($a),\r\n\t\t\t\t\t\tpaddingLeft = normalizeData($linkStyle.paddingLeft.slice(0, -2)),\r\n\t\t\t\t\t\tpaddingRight = normalizeData($linkStyle.paddingRight.slice(0, -2)),\r\n\t\t\t\t\t\tpadding = paddingLeft + paddingRight;\r\n\r\n\t\t\t\t\t// TODO не совсем верно, но мы точно знаем ширину точек в svg - 16px\r\n\t\t\t\t\twidth_all_links_responsive = padding + 16;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let $link of _this.$links) {\r\n\t\t\t\t\tlet width = $link.getBoundingClientRect().width;\r\n\t\t\t\t\twidth_all_links_responsive = width_all_links_responsive + width;\r\n\r\n\t\t\t\t\tif ((width_navigation_responsive) < width_all_links_responsive) {\r\n\t\t\t\t\t\t_this.movedLinks.push($link);\r\n\t\t\t\t\t\t$link.remove();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (_this.movedLinks.length) {\r\n\t\t\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t\t\t_this.navigation.insertBefore(_this.movedLinks[0], $dots)\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_this.navigation.appendChild(_this.movedLinks[0])\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_this.movedLinks.splice(0, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_this.movedLinks.length) {\r\n\t\t\t\t\tif (!$dots) {\r\n\t\t\t\t\t\t_this.navigation.insertAdjacentHTML('beforeend','<li class=\"dropdown dots\">' + '<a href=\"#\" aria-expanded=\"false\">'+ _dots +'</a></li>');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t$dots.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet $d = _this.navigation.querySelector('.dots');\r\n\t\t\t\tif ($d && _this.movedLinks.length) {\r\n\t\t\t\t\tlet $dropdown = $d.querySelector('ul');\r\n\t\t\t\t\tif ($dropdown) {\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet $dropdown = document.createElement('ul');\r\n\t\t\t\t\t\t$dropdown.classList.add('dropdown-content');\r\n\t\t\t\t\t\t$dropdown.classList.add('right');\r\n\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$d.appendChild($dropdown);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tlet target = relatedTarget.relatedTarget;\r\n\r\n\t\tif (!target || isDisabled(target)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.closest('.dropdown-content')) {\r\n\t\t\ttarget.classList.add('first');\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(target, EVENT_KEY_SHOW, { relatedTarget });\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tlet drop = Selectors.find('.dropdown-content', target),\r\n\t\t\tlink = target.firstElementChild;\r\n\r\n\t\tif (link) link.setAttribute('aria-expanded', 'true');\r\n\t\tdrop.classList.add(CLASS_NAME_SHOW);\r\n\t\ttarget.classList.add(CLASS_NAME_ACTIVE);\r\n\r\n\t\tsetDropPosition(drop)\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tdrop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(target, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, drop, true, 50);\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @param $drop\r\n\t\t */\r\n\t\tfunction setDropPosition($drop) {\r\n\t\t\tlet {width, right} = $drop.getBoundingClientRect(),\r\n\t\t\t\twindow_width = window.innerWidth;\r\n\r\n\t\t\tlet N_right = window_width - right - width;\r\n\r\n\t\t\t$drop.classList.remove('right');\r\n\t\t\t$drop.classList.remove('left');\r\n\r\n\t\t\tlet $parent = $drop.closest('li'),\r\n\t\t\t\t$ul = $parent.querySelectorAll('ul');\r\n\r\n\t\t\tif (N_right > width) {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('left');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('right');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thide(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet element = relatedTarget.relatedTarget;\r\n\r\n\t\tif ('elm' in relatedTarget && relatedTarget.elm) {\r\n\t\t\telement = relatedTarget.elm\r\n\t\t}\r\n\r\n\t\tif (element) {\r\n\t\t\tconst hideEvent = EventHandler.trigger(element, EVENT_KEY_HIDE);\r\n\t\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\t\telement.classList.remove(CLASS_NAME_ACTIVE);\r\n\r\n\t\t\tif (element.classList.contains('first')) {\r\n\t\t\t\telement.classList.remove('first');\r\n\t\t\t}\r\n\r\n\t\t\t[...Selectors.findAll('.' + CLASS_NAME_SHOW, element)].forEach(function (el, index) {\r\n\t\t\t\tel.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\t\t\tlet parent = el.closest('.dropdown');\r\n\t\t\t\tif (parent.classList.contains(CLASS_NAME_ACTIVE)) {\r\n\t\t\t\t\tparent.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet link = el.previousElementSibling;\r\n\t\t\t\tif (link) link.setAttribute('aria-expanded', 'false');\r\n\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tconst completeCallback = () => {\r\n\t\t\t\t\t\tel.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\t\t\tEventHandler.trigger(el, EVENT_KEY_HIDDEN, relatedTarget)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_this._queueCallback(completeCallback, el, true, 500);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * TODO если на странице несколько навигаций, то есть косяки\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGNav.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\r\n\t\tlet drops = Selectors.findAll('.dropdown', instance._navigation)\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\t[...drops].forEach(function (el) {\r\n\t\t\t\tlet currentElem = null;\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\t\tif (currentElem) return;\r\n\t\t\t\t\tVGNav.hideOpenDrops(event);\r\n\r\n\t\t\t\t\tlet target = event.target.closest('.dropdown');\r\n\t\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\t\tif (!instance.navigation.contains(target)) return;\r\n\t\t\t\t\tcurrentElem = target;\r\n\r\n\t\t\t\t\tlet relatedTarget = {\r\n\t\t\t\t\t\trelatedTarget: target\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinstance.show(relatedTarget);\r\n\t\t\t\t});\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\t\tlet relatedTarget = event.relatedTarget.closest('.dropdown'),\r\n\t\t\t\t\t\telm = currentElem;\r\n\r\n\t\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentElem = null;\r\n\t\t\t\t\tinstance.hide({relatedTarget: relatedTarget, elm: elm});\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\t\t\t\tif (!Manipulator.has(this, 'aria-expanded')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ('click' in instance._params.callback) {\r\n\t\t\t\t\texecute(instance._params.callback.click, [this]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tlet self = this.closest('.vg-nav'),\r\n\t\t\t\t\tisFirst = self.querySelector('.first');\r\n\r\n\t\t\t\tlet target = this.closest('.dropdown');\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (isDisabled(target) && !isVisible(target)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isFirst && this.closest('.first')) {\r\n\t\t\t\t\tif (target.classList.contains('active')) {\r\n\t\t\t\t\t\tinstance.hide({relatedTarget: target});\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t[...Selectors.findAll('.active', self)].forEach(function (el) {\r\n\t\t\t\t\t\tif (el && el !== target) {\r\n\t\t\t\t\t\t\tinstance.hide({relatedTarget: el})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinstance.show({relatedTarget: target});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst vgNavSidebar = document.getElementById('sidebar-nav');\r\n\t\tlet hamburger = instance._element.querySelector('.' + instance._params.classes.hamburger);\r\n\r\n\t\tif (vgNavSidebar && hamburger) {\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.show', function () {\r\n\t\t\t\thamburger.classList.add(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.hide', function () {\r\n\t\t\t\thamburger.classList.remove(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGNav.hideOpenDrops(event)\r\n\t}\r\n\r\n\tstatic hideOpenDrops(event) {\r\n\t\tconst openToggles = Selectors.findAll('.dropdown:not(.disabled):not(:disabled).active');\r\n\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGNav.getInstance(toggle.closest('.vg-nav'));\r\n\t\t\tif (!context) continue;\r\n\r\n\t\t\tif (event.target.closest('.first')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: toggle }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext.hide(relatedTarget)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEventHandler.on(window, EVENT_RESIZE_DATA_API, function (event) {\r\n\tconst instance = VGNav.getOrCreateInstance('.vg-nav', {});\r\n\tinstance.build();\r\n})\r\n\r\nexport default VGNav;","import {mergeDeepObject, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Класс Placement, определяет и устанавливает местоположение элемента на странице.\r\n * TODO класс не дописан\r\n */\r\n\r\nclass Placement {\r\n\tconstructor(arg = {}) {\r\n\t\tthis.params = mergeDeepObject({\r\n\t\t\telement: null,\r\n\t\t\tdrop: null\r\n\t\t}, arg);\r\n\t}\r\n\r\n\t_getPlacement() {\r\n\t\tconst _this = this;\r\n\t\tconst _parent = (self) => {\r\n\t\t\tlet parent = self.parentNode,\r\n\t\t\t\toverflow = getComputedStyle(parent).overflow;\r\n\r\n\t\t\tif (parent.tagName !== 'BODY') {\r\n\t\t\t\tif (overflow === 'visible') {\r\n\t\t\t\t\t_parent(parent)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn parent;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet isFixed = false, top, left,\r\n\t\t\tbounds = _this.params.drop.getBoundingClientRect(),\r\n\t\t\tparent = _this.params.element.getBoundingClientRect();\r\n\r\n\t\tif (_parent(_this.params.element)) {\r\n\t\t\tisFixed = true;\r\n\t\t\ttop = bounds.top;\r\n\t\t\tleft = bounds.left;\r\n\t\t} else {\r\n\t\t\tlet styles = getComputedStyle(_this.params.drop);\r\n\t\t\ttop = normalizeData(styles.top.slice(0, -2));\r\n\t\t\tleft = normalizeData(styles.left.slice(0, -2));\r\n\t\t}\r\n\r\n\t\tif ((bounds.left + bounds.width) > window.innerWidth) {\r\n\t\t\tleft = parent.width - bounds.width;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tisFixed: isFixed,\r\n\t\t\ttop: top,\r\n\t\t\tleft: left\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Placement;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {isDisabled, mergeDeepObject, noop} from \"../../../utils/js/functions\";\r\nimport Placement from \"../../../utils/js/components/placement\";\r\n\r\nconst NAME = 'dropdown';\r\nconst NAME_KEY = 'vg.dropdown';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst TARGET_CONTAINER = 'vg-dropdown-content';\r\nconst PARENT_CONTAINER = 'vg-dropdown';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"dropdown\"]';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYDOWN_DATA_API = `keydown.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\n\r\nclass VGDropdown extends BaseModule {\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tlet defaultParams = {\r\n\t\t\toffset: [0, 2],\r\n\t\t\tover: false,\r\n\t\t\tbackdrop: true,\r\n\t\t\toverflow: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tplacement: 'bottom',\r\n\t\t\tanimation: true,\r\n\t\t\ttimeoutAnimation: 350,\r\n\t\t\thover: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ('offset' in params && Array.isArray(params.offset)) {\r\n\t\t\tdefaultParams.offset = params.offset;\r\n\t\t}\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject(defaultParams, params));\r\n\r\n\t\tthis._parent = this._element.parentNode;\r\n\t\tthis._drop = Selectors.find('.' + TARGET_CONTAINER, this._parent);\r\n\t\tthis._isPlacement = false;\r\n\r\n\t\tif (this._params.animation === false) {\r\n\t\t\tthis._params.timeoutAnimation = 10\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\treturn this._isShown() ? this.hide() : this.show();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tif (isDisabled(this._element) || this._isShown()) return;\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, relatedTarget)\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.on(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._route();\r\n\r\n\t\tthis._element.setAttribute('aria-expanded', true);\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._drop.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._setPlacement();\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._drop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._drop, true, 50);\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element) || !this._isShown()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tthis._completeHide(relatedTarget);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\treturn super.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_completeHide(relatedTarget) {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE, relatedTarget)\r\n\t\tif (hideEvent.defaultPrevented) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._drop.classList.remove(CLASS_NAME_FADE);\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\tthis._element.setAttribute('aria-expanded', 'false');\r\n\r\n\t\tconst completeCallback = () => {\r\n\t\t\tthis._drop.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN, relatedTarget);\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallback, this._parent, true, this._params.timeoutAnimation);\r\n\t}\r\n\r\n\t// TODO class Placement isn't done\r\n\t_setPlacement() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._isPlacement) {\r\n\t\t\tlet placement = new Placement({\r\n\t\t\t\telement: this._parent,\r\n\t\t\t\tdrop: this._drop\r\n\t\t\t})._getPlacement();\r\n\r\n\t\t\tif (placement.isFixed) {\r\n\t\t\t\t_this._drop.style.position = 'fixed';\r\n\t\t\t\t_this._drop.style.transform = 'translateY(-20%)'; // todo this is костыль поfixить\r\n\t\t\t}\r\n\r\n\t\t\t_this._drop.style.left = placement.left + 'px';\r\n\t\t\t_this._drop.style.top = placement.top + 'px';\r\n\t\t}\r\n\r\n\t\tif (_this._params.offset) {\r\n\t\t\t_this._drop.style.paddingTop = _this._params.offset[1] + 'px';\r\n\t\t\t_this._drop.style.paddingRight = _this._params.offset[0] + 'px';\r\n\t\t}\r\n\r\n\t\t_this._isPlacement = true;\r\n\t}\r\n\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(element, params);\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\tlet currentElem = null;\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\tif (currentElem) return;\r\n\t\t\t\tVGDropdown.hideOpenToggles(event);\r\n\r\n\t\t\t\tlet target = event.target.closest('.' + PARENT_CONTAINER);\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (!instance._parent.contains(target)) return;\r\n\t\t\t\tcurrentElem = target;\r\n\t\t\t\tinstance.show();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\tlet relatedTarget = event.relatedTarget;\r\n\r\n\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentElem = null;\r\n\t\t\t\tinstance._completeHide({relatedTarget: instance._element});\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_DATA_TOGGLE, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYDOWN_DATA_API, '.' + TARGET_CONTAINER, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(element, EVENT_CLICK_DATA_API, function (event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tinstance.toggle();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic hideOpenToggles(event) {\r\n\t\tconst openToggles = Selectors.findAll('[data-vg-toggle=\"dropdown\"]:not(.disabled):not(:disabled).show');\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGDropdown.getInstance(toggle);\r\n\t\t\tif (!context) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (event.target.closest('.' + TARGET_CONTAINER) === context._drop) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst composedPath = event.composedPath();\r\n\t\t\tif (composedPath.includes(context._element)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: context._element }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext._completeHide(relatedTarget)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic keydownHandler(event) {\r\n\t\tconst isInput = /input|textarea/i.test(event.target.tagName)\r\n\t\tconst isEscapeEvent = event.key === 'Escape'\r\n\t\tconst isUpOrDownEvent = ['ArrowUp', 'ArrowDown'].includes(event.key)\r\n\r\n\t\tif (!isUpOrDownEvent && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isInput && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tevent.preventDefault()\r\n\r\n\t\tconst getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\r\n\t\t\tthis : (Selectors.find(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\r\n\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(getToggleButton)\r\n\r\n\t\tif (isUpOrDownEvent) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.show()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (instance._isShown()) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.hide()\r\n\t\t\tgetToggleButton.focus()\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGDropdown.hideOpenToggles(event)\r\n\t}\r\n}\r\n\r\nexport default VGDropdown;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap util/scrollBar.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n */\r\n\r\nimport {Manipulator} from \"../dom/manipulator\";\r\nimport {isElement} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\n\r\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\r\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\r\nconst PROPERTY_PADDING = 'padding-right'\r\nconst PROPERTY_MARGIN = 'margin-right'\r\n\r\n/**\r\n * Class definition\r\n */\r\n\r\nclass ScrollBarHelper {\r\n\tconstructor() {\r\n\t\tthis._element = document.body\r\n\t}\r\n\r\n\t// Public\r\n\tgetWidth() {\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\r\n\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst width = this.getWidth()\r\n\t\tthis._disableOverFlow()\r\n\t\t// give padding to element to balance the hidden scrollbar width\r\n\t\tthis._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\t// trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\r\n\t\tthis._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\tthis._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis._resetElementAttributes(this._element, 'overflow')\r\n\t\tthis._resetElementAttributes(this._element, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\r\n\t}\r\n\r\n\tisOverflowing() {\r\n\t\treturn this.getWidth() > 0\r\n\t}\r\n\r\n\t// Private\r\n\t_disableOverFlow() {\r\n\t\tthis._saveInitialAttribute(this._element, 'overflow')\r\n\t\tthis._element.style.overflow = 'hidden'\r\n\t}\r\n\r\n\t_setElementAttributes(selector, styleProperty, callback) {\r\n\t\tconst scrollbarWidth = this.getWidth()\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tif (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tthis._saveInitialAttribute(element, styleProperty)\r\n\t\t\tconst calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_saveInitialAttribute(element, styleProperty) {\r\n\t\tconst actualValue = element.style.getPropertyValue(styleProperty)\r\n\t\tif (actualValue) {\r\n\t\t\tManipulator.get(element, styleProperty, actualValue)\r\n\t\t}\r\n\t}\r\n\r\n\t_resetElementAttributes(selector, styleProperty) {\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tconst value = Manipulator.get(element, styleProperty)\r\n\t\t\t// We only want to remove the property if the value is `null`; the value can also be zero\r\n\t\t\tif (value === null) {\r\n\t\t\t\telement.style.removeProperty(styleProperty)\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tManipulator.remove(element, styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, value)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_applyManipulationCallback(selector, callBack) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\tcallBack(selector)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const sel of Selectors.findAll(selector, this._element)) {\r\n\t\t\tcallBack(sel)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default ScrollBarHelper","import BaseModule from \"../../base-module\";\r\nimport ScrollBarHelper from \"../../../utils/js/components/scrollbar\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport {execute, isDisabled, isRTL, isVisible, mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'modal';\r\nconst NAME_KEY = 'vg.modal';\r\n\r\nconst ESCAPE_KEY = 'Escape';\r\n\r\nconst OPEN_SELECTOR = '.vg-modal.show';\r\nconst SELECTOR_DIALOG = '.vg-modal-dialog';\r\nconst SELECTOR_MODAL_BODY = '.vg-modal-body';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"modal\"]';\r\n\r\nconst CLASS_NAME_OPEN = 'vg-modal-open';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_STATIC = 'vg-modal-static'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_RESIZE = `${NAME_KEY}.resize`\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_MOUSEDOWN_DISMISS = `mousedown.dismiss${NAME_KEY}`\r\nconst EVENT_KEY_CLICK_DISMISS = `click.dismiss${NAME_KEY}`\r\n\r\nclass VGModal extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\tfocus: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tfields: [],\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tname: ['animate__backInUp', 'animate__backOutUp'], // до / после не более двух элементов\r\n\t\t\t\tduration: 1000, // ms\r\n\t\t\t\tdelay: 1000, // ms\r\n\t\t\t\trepeat: 1\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-modal',\r\n\t\t\t\tdialog: 'vg-modal-dialog',\r\n\t\t\t\tcontent: 'vg-modal-content',\r\n\t\t\t\theader: 'vg-modal-header',\r\n\t\t\t\ttitle: 'vg-modal-title',\r\n\t\t\t\tbody: 'vg-modal-body',\r\n\t\t\t\tfooter: 'vg-modal-footer',\r\n\t\t\t\tanimated: 'animate__animated'\r\n\t\t\t}\r\n\t\t}, params));\r\n\t\tthis._button = null;\r\n\t\tthis._dialog = Selectors.find(SELECTOR_DIALOG, this._element);\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = false;\r\n\t\tthis._scrollBar = new ScrollBarHelper();\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tstatic init(element, params, callback) {\r\n\t\tVGModal.build(element, params, callback);\r\n\t}\r\n\r\n\tstatic build(id, params, callback) {\r\n\t\tif (typeof id !== \"string\") return;\r\n\r\n\t\tlet _element = document.createElement('div');\r\n\t\t_element.classList.add('vg-modal', 'fade');\r\n\t\t_element.id = id;let dialog = document.createElement('div');\r\n\t\tdialog.classList.add('vg-modal-dialog');\r\n\r\n\t\tlet content = document.createElement('div');\r\n\t\tcontent.classList.add('vg-modal-content');\r\n\r\n\t\tlet btnClose = document.createElement('button');\r\n\t\tManipulator.set(btnClose, 'type', 'button');\r\n\t\tManipulator.set(btnClose, 'data-vg-dismiss', 'modal');\r\n\t\tManipulator.set(btnClose, 'data-vg-target', '#' + id);\r\n\t\tManipulator.set(btnClose, 'aria-label', 'close');\r\n\t\tbtnClose.classList.add('vg-btn-close');\r\n\r\n\t\tcontent.append(btnClose);\r\n\r\n\t\tlet body = document.createElement('div');\r\n\t\tbody.classList.add('vg-modal-body');\r\n\r\n\t\tcontent.append(body);\r\n\t\tdialog.append(content);\r\n\t\t_element.append(dialog);\r\n\r\n\t\tdocument.body.append(_element);\r\n\r\n\t\tconst modal = VGModal.getOrCreateInstance(_element, params);\r\n\r\n\t\texecute(callback, [modal]);\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tthis._route();\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = true;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tthis._scrollBar.hide();\r\n\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tthis._addFieldsInModal(relatedTarget);\r\n\t\tthis._adjustDialog();\r\n\r\n\t\tBackdrop.show(() => this._showElement(relatedTarget));\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (!this._isShown || this._isTransitioning) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\tthis._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\r\n\t}\r\n\r\n\t_hideModal() {\r\n\t\tthis._element.style.display = 'none';\r\n\t\tthis._element.setAttribute('aria-hidden', true);\r\n\t\tthis._element.removeAttribute('aria-modal');\r\n\t\tthis._element.removeAttribute('role');\r\n\t\tthis._isTransitioning = false;\r\n\r\n\t\tBackdrop.hide(() => {\r\n\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\tthis._resetAdjustments();\r\n\t\t\tthis._scrollBar.reset();\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t})\r\n\t}\r\n\r\n\t_showElement(relatedTarget) {\r\n\t\tif (!document.body.contains(this._element)) {\r\n\t\t\tdocument.body.append(this._element);\r\n\t\t}\r\n\r\n\t\tthis._element.style.display = 'block';\r\n\t\tthis._element.removeAttribute('aria-hidden');\r\n\t\tthis._element.setAttribute('aria-modal', true);\r\n\t\tthis._element.setAttribute('role', 'dialog');\r\n\t\tthis._element.scrollTop = 0;\r\n\r\n\t\tconst modalBody = Selectors.find(SELECTOR_MODAL_BODY, this._dialog);\r\n\t\tif (modalBody) {\r\n\t\t\tmodalBody.scrollTop = 0;\r\n\t\t}\r\n\r\n\t\treflow(this._element);\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW)\r\n\r\n\t\tconst transitionComplete = () => {\r\n\t\t\tif (this._params.focus) {\r\n\t\t\t\t// TODO сделать фокус\r\n\t\t\t}\r\n\r\n\t\t\tthis._isTransitioning = false\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, {\r\n\t\t\t\trelatedTarget\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(transitionComplete, this._dialog, this._isAnimated())\r\n\t}\r\n\r\n\t_isAnimated() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_FADE)\r\n\t}\r\n\r\n\t_adjustDialog() {\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\r\n\t\tconst scrollbarWidth = this._scrollBar.getWidth()\r\n\t\tconst isBodyOverflowing = scrollbarWidth > 0\r\n\r\n\t\tif (isBodyOverflowing && !isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingLeft' : 'paddingRight'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\r\n\t\tif (!isBodyOverflowing && isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingRight' : 'paddingLeft'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\t}\r\n\r\n\t_resetAdjustments() {\r\n\t\tthis._element.style.paddingLeft = ''\r\n\t\tthis._element.style.paddingRight = ''\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(this._element, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== ESCAPE_KEY) return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._triggerBackdropTransition();\r\n\t\t})\r\n\r\n\t\tEventHandler.on(window, EVENT_KEY_RESIZE, () => {\r\n\t\t\tif (this._isShown && !this._isTransitioning) this._adjustDialog();\r\n\t\t})\r\n\r\n\t\tEventHandler.on(this._element, EVENT_KEY_MOUSEDOWN_DISMISS, event => {\r\n\t\t\tEventHandler.one(this._element, EVENT_KEY_CLICK_DISMISS, event2 => {\r\n\t\t\t\tif (this._element !== event.target || this._element !== event2.target) return;\r\n\r\n\t\t\t\tif (this._params.backdrop === 'static') {\r\n\t\t\t\t\tthis._triggerBackdropTransition();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._params.backdrop) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\t_triggerBackdropTransition() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\r\n\t\tconst initialOverflowY = this._element.style.overflowY;\r\n\r\n\t\tif (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) return;\r\n\t\tif (!isModalOverflowing) this._element.style.overflowY = 'hidden';\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_STATIC);\r\n\r\n\t\tthis._queueCallback(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_STATIC);\r\n\t\t\tthis._queueCallback(() => {\r\n\t\t\t\tthis._element.style.overflowY = initialOverflowY;\r\n\t\t\t}, this._dialog);\r\n\t\t}, this._dialog);\r\n\r\n\t\tthis._element.focus();\r\n\t}\r\n\r\n\t_addFieldsInModal(relatedTarget) {\r\n\t\tthis._params = this._getParams(relatedTarget, this._params);\r\n\r\n\t\tif (!this._params.fields.length) return;\r\n\r\n\t\tthis._params.fields.forEach(function (item) {\r\n\t\t\tif (!'name' in item && !'value' in item) return;\r\n\r\n\t\t\tlet elements = Selectors.findAll('[data-' + item.name + ']');\r\n\t\t\tif (!elements.length) return;\r\n\r\n\t\t\tfor (const elm of elements) {\r\n\t\t\t\tswitch (elm.tagName) {\r\n\t\t\t\t\tcase 'INPUT': elm.value = item.value; break;\r\n\t\t\t\t\tcase 'IMG': Manipulator.set(elm, 'src', item.value); break;\r\n\t\t\t\t\tdefault: elm.innerHTML = item.value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGModal);\r\n\r\n\r\n/**\r\n * Data API implementation\r\n */\r\n\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) event.preventDefault();\r\n\r\n\tEventHandler.one(target, EVENT_KEY_SHOW, showEvent => {\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\t\tif (isVisible(this)) this.focus();\r\n\t\t});\r\n\t});\r\n\r\n\tconst alreadyOpen = Selectors.find(OPEN_SELECTOR);\r\n\tif (alreadyOpen) VGModal.getInstance(alreadyOpen).hide();\r\n\r\n\tconst data = VGModal.getOrCreateInstance(target);\r\n\tdata.toggle(this);\r\n})\r\n\r\nexport default VGModal;\r\n","import BaseModule from \"../../base-module\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport VGModal from \"../../vgmodal/js/vgmodal\";\r\nimport {isObject, makeRandomString, mergeDeepObject, normalizeData} from \"../../../utils/js/functions\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport VGCollapse from \"../../vgcollapse/js/vgcollapse\";\r\nimport {getSVG} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'form-sender';\r\nconst NAME_KEY = 'vg.fs';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_SUCCESS = 'vg.fs.success';\r\nconst EVENT_KEY_ERROR = 'vg.fs.error';\r\nconst EVENT_KEY_BEFORE = 'vg.fs.before';\r\n\r\nconst EVENT_SUBMIT_DATA_API = `submit.${NAME_KEY}.data.api`;\r\n\r\nclass VGFormSender extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tredirect: '',\r\n\t\t\tvalidate: false,\r\n\t\t\tsubmit: false,\r\n\t\t\tfields: [],\r\n\t\t\talert: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\ttype: 'modal'\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-form-sender',\r\n\t\t\t\talertCollapse: 'vg-form-sender-collapse',\r\n\t\t\t\talertModal: 'vg-form-sender-modal',\r\n\t\t\t\tvalidation: 'needs-validation',\r\n\t\t\t\twasValidate: 'was-validated'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._params.ajax.route = Manipulator.get(this._element, 'action').toLowerCase();\r\n\t\tthis._params.ajax.method = Manipulator.get(this._element, 'method').toLowerCase();\r\n\t\tthis._button = Selectors.find('[type=\"submit\"]', this._element) || Selectors.find('[form=\"' + this._element.id + '\"]') || null;\r\n\r\n\t\tthis._params.isBtnText = Manipulator.get(this._element, 'data-btn-text') !== 'false';\r\n\t\tthis._params.isJsonParse = Manipulator.get(this._element, 'data-json-parse') !== 'false';\r\n\t\tthis._params.isShowPass = Manipulator.get(this._element, 'data-show-pass') === 'true';\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tthis._element.classList.add(this._params.classes.general);\r\n\r\n\t\tif (this._params.validate) {\r\n\t\t\tManipulator.set(this._element, 'novalidate', '');\r\n\t\t\tthis._element.classList.add(this._params.classes.validation);\r\n\t\t}\r\n\r\n\t\t// TODO сделать добавление глаза если есть ввод пароля\r\n\r\n\t\treturn this\r\n\t}\r\n\r\n\trequest(data, event) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._alertBefore();\r\n\r\n\t\t_this._params.ajax.data = data;\r\n\r\n\t\t_this._route(function (status, data) {\r\n\t\t\t_this._element.classList.remove('was-validated');\r\n\r\n\t\t\tif (_this._params.alert.enabled) {\r\n\t\t\t\tif (typeof status === 'string' && status === 'error') {\r\n\t\t\t\t\t_this._alertError(event, data);\r\n\t\t\t\t} else if (typeof status === 'string' && status === 'success') {\r\n\t\t\t\t\t_this._alertSuccess(event, data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (_this._params.redirect) {\r\n\t\t\t\twindow.location.href = _this._params.redirect;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_alertBefore() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t[...document.getElementsByClassName(_this._params.classes.alertCollapse)].forEach(function (element) {\r\n\t\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_this._statusButton('before');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_BEFORE, _this);\r\n\t}\r\n\r\n\t_alertError(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'error');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_ERROR, [event, _this, data]);\r\n\t}\r\n\r\n\t_alertSuccess(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'success');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_SUCCESS, [event, _this, data]);\r\n\t}\r\n\r\n\t_statusButton(status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._button) return;\r\n\r\n\t\tlet btnSubmitText = _this._button,\r\n\t\t\tbtnText = {\r\n\t\t\tsend: 'Отправляем...',\r\n\t\t\ttext: 'Отправить'\r\n\t\t};\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-spinner') && status === 'before') {\r\n\t\t\t_this._button.insertAdjacentHTML('afterbegin', '<span class=\"spinner-border spinner-border-sm me-2\"></span>');\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text')) {\r\n\t\t\tbtnText.text = Manipulator.get(_this._button, 'data-text');\r\n\t\t} else {\r\n\t\t\tlet $btnText = _this._button.querySelector('[data-text]');\r\n\t\t\tif ($btnText) {\r\n\t\t\t\tbtnText.text = Manipulator.get($btnText, 'data-text');\r\n\t\t\t\tbtnSubmitText = $btnText;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text-send')) {\r\n\t\t\tbtnText.send = Manipulator.get(_this._button, 'data-text-send');\r\n\t\t} else {\r\n\t\t\tlet $btnTextSend = _this._button.querySelector('[data-text-send]');\r\n\t\t\tif ($btnTextSend) {\r\n\t\t\t\tbtnText.send = Manipulator.get($btnTextSend, 'data-text-send');\r\n\t\t\t\tbtnSubmitText = $btnTextSend;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (status === 'before') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.send;\r\n\t\t\t}\r\n\t\t\tManipulator.set(_this._button,'disabled', 'disabled');\r\n\t\t}\r\n\r\n\t\tif (status === 'after') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.text;\r\n\t\t\t}\r\n\t\t\tManipulator.remove(_this._button,'disabled');\r\n\r\n\t\t\tlet spinner = _this._button.querySelector('.spinner-border');\r\n\t\t\tif (spinner) spinner.remove();\r\n\t\t}\r\n\t}\r\n\r\n\t_jsonParse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.isJsonParse && typeof data === 'string') {\r\n\t\t\tlet parserData = {};\r\n\r\n\t\t\ttry {\r\n\t\t\t\tparserData = JSON.parse(data);\r\n\t\t\t\t_this.alert(parserData, status);\r\n\t\t\t} catch (e) {\r\n\t\t\t\t_this.alert(data, status);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_this.alert(data, status);\r\n\t\t}\r\n\t}\r\n\r\n\talert(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (('code' in data) && data.code && data.code === 200) {\r\n\t\t\t\tif ('response' in data && data.response) {\r\n\t\t\t\t\tlet response = normalizeData(data.response);\r\n\t\t\t\t\tif (typeof response === 'string') {\r\n\t\t\t\t\t\tif (response.indexOf(\"Parse error\") !== -1 || response.indexOf(\"syntax error\") !== -1) {\r\n\t\t\t\t\t\t\tstatus = 'error';\r\n\t\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\ttext: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif ('errors' in response && normalizeData(response.errors)) {\r\n\t\t\t\t\t\t\tstatus = normalizeData(response.errors) ? 'error' : 'success';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!_this._params.alert.enabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'modal') {\r\n\t\t\t_this._alertModal(data, status)\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t_this._alertCollapse(data, status)\r\n\t\t}\r\n\t}\r\n\r\n\t_alertModal(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\t// Есть ли открытые модалки, закрываем\r\n\t\t[...document.getElementsByClassName('modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tlet mBS = bootstrap.Modal.getOrCreateInstance(element);\r\n\t\t\t\tmBS.hide();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t[...document.getElementsByClassName('vg-modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tconst mVG = VGModal.getOrCreateInstance(element);\r\n\t\t\t\tmVG.hide();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet $modal = Selectors.find('.' + _this._params.classes.alertModal);\r\n\t\tif ($modal) $modal.remove();\r\n\r\n\t\tlet id = _this._params.classes.general + '-' + makeRandomString();\r\n\t\tVGModal.init(id, {\r\n\t\t\tclasses: {\r\n\t\t\t\talert: _this._params.classes.alertModal\r\n\t\t\t}\r\n\t\t}, function (self) {\r\n\t\t\tlet element = self._element;\r\n\t\t\telement.classList.add(_this._params.classes.alertModal);\r\n\r\n\t\t\tlet $body = Selectors.find('.vg-modal-body', element);\r\n\t\t\tif ($body) $body.append(_this.setDataRelationStatus(element, status, data, 'modal'));\r\n\r\n\t\t\tself.toggle();\r\n\t\t});\r\n\t}\r\n\r\n\t_alertCollapse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tlet $collapse = Selectors.find('.' + _this._params.classes.alertCollapse);\r\n\t\tif (!$collapse) {\r\n\t\t\t$collapse = document.createElement('div');\r\n\t\t\t$collapse.classList.add(_this._params.classes.alertCollapse);\r\n\t\t\t$collapse.classList.add('vg-collapse');\r\n\t\t\t$collapse.id = _this._params.classes.general + '-' + makeRandomString();\r\n\t\t\t$collapse.append(_this.setDataRelationStatus($collapse, status, data, 'collapse'));\r\n\r\n\t\t\t_this._element.prepend($collapse);\r\n\t\t}\r\n\r\n\t\tVGCollapse.getOrCreateInstance($collapse, {toggle: false}).toggle();\r\n\t}\r\n\r\n\tsetDataRelationStatus($element, status, data, type) {\r\n\t\tlet $alert = Selectors.find('.vg-alert-' + status, $element);\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (status === 'error') {\r\n\t\t\t\tif ('code' in data && data.code !== 200) {\r\n\t\t\t\t\tif ('text' in data && !data.text) {\r\n\t\t\t\t\t\tdata.text = 'Something went wrong, please repeat later';\r\n\r\n\t\t\t\t\t\tswitch (data.code) {\r\n\t\t\t\t\t\t\tcase 400:\r\n\t\t\t\t\t\t\t\tdata.text = 'Bad Request'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 401:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 413:\r\n\t\t\t\t\t\t\t\tdata.text = 'Forbidden'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 404:\r\n\t\t\t\t\t\t\t\tdata.text = 'Not Found'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 422:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unprocessable Entity'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\t\t\tdata.text = 'Internal Server Error'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 504:\r\n\t\t\t\t\t\t\t\tdata.text = 'Gateway Timeout'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ('response' in data) {\r\n\t\t\t\tlet response = normalizeData(data.response), title = '', txt = '', code = '';\r\n\t\t\t\tif (typeof response !== 'string') {\r\n\t\t\t\t\tif (!('view' in response)) {\r\n\t\t\t\t\t\tif ('title' in response) title = response.title;\r\n\t\t\t\t\t\tif (status === 'error' && data.code !== 200) {\r\n\t\t\t\t\t\t\tcode = ' ' + data.text + ' (' + data.code + ')';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttxt += '<h4 class=\"vg-alert-content--title\">' + title + code + '</h4>';\r\n\r\n\t\t\t\t\t\tif ('message' in response) {\r\n\t\t\t\t\t\t\ttxt += '<div class=\"vg-alert-content--message\">' + response.message + '</div>'\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ('errors' in response) {\r\n\t\t\t\t\t\t\tlet errors = normalizeData(response.errors) || null;\r\n\t\t\t\t\t\t\tif (isObject(errors)) {\r\n\t\t\t\t\t\t\t\tfor (const error in errors) {\r\n\t\t\t\t\t\t\t\t\tif (Array.isArray(errors[error])) {\r\n\t\t\t\t\t\t\t\t\t\terrors[error].forEach(function (t) {\r\n\t\t\t\t\t\t\t\t\t\t\ttxt += '<div>'+ t +'</div>';\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\ttxt = '<div>'+ errors[error] +'</div>';\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\tview: txt\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdata.view = response;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!$alert) {\r\n\t\t\t$alert = document.createElement('div');\r\n\t\t\t$alert.classList.add('vg-alert', 'vg-alert-' + status, 'vg-alert-' + type);\r\n\r\n\t\t\tlet content = document.createElement('div');\r\n\t\t\tcontent.classList.add('vg-alert-content');\r\n\r\n\t\t\tlet icon = document.createElement('div');\r\n\t\t\ticon.classList.add('vg-alert-content--icon');\r\n\r\n\t\t\tlet i = document.createElement('i');\r\n\t\t\ti.innerHTML = getSVG(status);\r\n\r\n\t\t\ticon.append(i);\r\n\t\t\tcontent.append(icon);\r\n\r\n\t\t\tlet text = document.createElement('div');\r\n\t\t\ttext.classList.add('vg-alert-content--text');\r\n\t\t\ttext.innerHTML = data.view;\r\n\r\n\t\t\tcontent.append(text);\r\n\t\t\t$alert.append(content);\r\n\t\t} else {\r\n\t\t\tlet text = Selectors.find('.vg-alert-content--text', $alert);\r\n\t\t\ttext.innerHTML = data.view;\r\n\t\t}\r\n\r\n\t\treturn $alert;\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGFormSender.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\t}\r\n}\r\n\r\nEventHandler.on(document, EVENT_SUBMIT_DATA_API, function (event) {\r\n\tif (!Manipulator.has(event.target, 'data-vgformsender')) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst instance = VGFormSender.getOrCreateInstance(event.target, {});\r\n\tif (!instance) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (instance._params.validate) {\r\n\t\tif (!instance._element.checkValidity()) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\tinstance._element.classList.add(instance._params.classes.wasValidate);\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tconst collectData = function(data, fields) {\r\n\t\tfor (let name in fields) {\r\n\t\t\tif (typeof fields[name] === 'object') {\r\n\t\t\t\tfor (let key in fields[name]) {\r\n\t\t\t\t\tlet arr = Object.keys(fields[name][key]).map(function (i) {\r\n\t\t\t\t\t\treturn fields[name][key][i];\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdata.append(name, arr);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdata.append(name, fields[name]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tif (!instance._params.submit) {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tlet data = new FormData(instance._element);\r\n\r\n\t\t// TODO доделать\r\n\t\t/*if (Array.isArray(instance._params.ajax.fields) && instance._params.ajax.fields.length) {\r\n\t\t\tdata = collectData(data, instance._params.ajax.fields);\r\n\t\t}*/\r\n\r\n\t\treturn instance.request(data, event);\r\n\t}\r\n})\r\n\r\nexport default VGFormSender;","import BaseModule from \"../../base-module\";\r\nimport {execute, isDisabled, isVisible, mergeDeepObject, noop} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'rollup';\r\nconst NAME_KEY = 'vg.rollup';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_HIDE = 'd-none';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"rollup\"]'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGRollup extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\r\n\t\t}, params));\r\n\r\n\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGRollup.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\t}\r\n\r\n\tbuild() {\r\n\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\tif (!target) return;\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\r\n\tconst data = VGRollup.getOrCreateInstance(target)\r\n\tdata.toggle(this);\r\n});\r\n\r\n\r\nexport default VGRollup;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isEmptyObj","isElement","object","isObject","nodeType","isDisabled","element","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","isVisible","getClientRects","length","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","normalizeData","Number","toString","JSON","parse","decodeURIComponent","mergeDeepObject","objects","reduce","prev","keys","forEach","pVal","oVal","Array","isArray","concat","execute","possibleCallback","args","defaultValue","TRANSITION_END","reflow","offsetHeight","noop","makeRandomString","result","counter","charAt","Math","floor","characters","random","isRTL","document","documentElement","dir","getSelector","selector","hrefAttribute","includes","startsWith","split","trim","map","sel","window","CSS","escape","replace","match","id","parseSelector","join","Selectors","find","Element","querySelector","findAll","container","querySelectorAll","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","elementMap","Map","set","instance","has","instanceMap","size","console","error","from","remove","delete","Manipulator","nameAttribute","isRemoveDataName","elmBase","attributes","arr","filter","at","test","name","v","slice","getAttributeNames","acc","setAttribute","removeAttribute","constructor","params","this","_params","merge","fromElement","mParams","indexOf","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","typeEvent","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","handlers","previousFunction","domElements","target","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","meta","configurable","on","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","evt","Event","bubbles","cancelable","dispatchEvent","getSVG","success","waiting","dots","cross","dismissTrigger","module","method","clickEvent","EVENT_KEY","NAME","tagName","preventDefault","getOrCreateInstance","Ajax","x","XMLHttpRequest","xhr","versions","i","ActiveXObject","e","send","url","callback","data","async","undefined","open","setRequestHeader","onreadystatechange","readyState","status","text","statusText","response","responseText","code","query","push","encodeURIComponent","post","_element","Error","Data","NAME_KEY","_getParams","Params","dispose","propertyName","getOwnPropertyNames","_route","_this","$content","setData","innerHTML","ajax","route","loader","_dismissElement","button","insertAdjacentHTML","_queueCallback","isAnimated","timeOutMs","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","setTimeout","triggerTransitionEnd","executeAfterTransition","getInstance","DATA_KEY","append","body","style","paddingRight","documentWidth","clientWidth","abs","innerWidth","getWidth","overflow","destroy","CLASS_NAME","CLASS_NAME_FADE","Backdrop","show","_append","hide","_destroy","backdrop","createElement","add","Overflow","CLASS_NAME_SHOW","EVENT_KEY_HIDE","EVENT_KEY_HIDDEN","EVENT_KEY_SHOW","EVENT_KEY_SHOWN","EVENT_KEY_KEYDOWN_DISMISS","EVENT_KEY_HIDE_PREVENTED","EVENT_KEY_CLICK_DATA_API","VGSidebar","BaseModule","super","keyboard","_addEventListeners","toggle","_isShown","defaultPrevented","completeCallBack","completeCallback","alreadyOpen","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE","VGCollapse","parent","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","activeChildren","_getFirstLevelChildren","activeInstance","height","complete","getBoundingClientRect","triggerArray","isOpen","_changeStateButton","children","selected","breakpoints","xs","sm","md","lg","xl","xxl","xxxl","check","define","checkMobileOrTablet","a","navigator","userAgent","vendor","opera","windowWidth","responsive_size","_checkResponsiveClass","point","loc","current_responsive_size","classes","XXXL","XXL","XL","LG","MD","SM","XS","CLASS_NAME_ACTIVE","EVENT_MOUSEOVER_DATA_API","EVENT_MOUSEOUT_DATA_API","EVENT_CLICK_DATA_API","EVENT_KEYUP_DATA_API","EVENT_RESIZE_DATA_API","VGNav","breakpoint","placement","hamburgerActive","hamburgerAlways","hamburger","wrapper","active","expand","cloned","hover","flip","position","collapse","enable","always","title","animation","timeoutAnimation","_navigation","navigation","movedLinks","$links","el","elm","build","Responsive","mTitle","$dropdown_a","width_navigation_responsive","width_all_links_responsive","$dots","_dots","$a","$linkStyle","paddingLeft","$link","width","insertBefore","appendChild","splice","$d","$dropdown","link","prepend","setCollapse","afterInit","drop","firstElementChild","$drop","right","N_right","$ul","$el","setDropPosition","index","previousElementSibling","init","drops","currentElem","hideOpenDrops","clearDrops","click","self","isFirst","vgNavSidebar","getElementById","openToggles","context","arg","_getPlacement","_parent","top","left","isFixed","bounds","styles","TARGET_CONTAINER","EVENT_KEYDOWN_DATA_API","VGDropdown","defaultParams","offset","over","_drop","_isPlacement","_setPlacement","_completeHide","Placement","transform","paddingTop","hideOpenToggles","keydownHandler","composedPath","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","matches","stopPropagation","focus","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_OPEN","CLASS_NAME_STATIC","EVENT_KEY_RESIZE","EVENT_KEY_MOUSEDOWN_DISMISS","EVENT_KEY_CLICK_DISMISS","VGModal","fields","duration","delay","repeat","general","dialog","content","header","footer","animated","_button","_dialog","_scrollBar","ScrollBarHelper","btnClose","_addFieldsInModal","_adjustDialog","_showElement","_hideModal","_isAnimated","display","_resetAdjustments","scrollTop","modalBody","transitionComplete","isModalOverflowing","scrollHeight","clientHeight","isBodyOverflowing","property","_triggerBackdropTransition","event2","initialOverflowY","overflowY","item","elements","showEvent","EVENT_SUBMIT_DATA_API","VGFormSender","redirect","validate","submit","alert","enabled","alertCollapse","alertModal","validation","wasValidate","toLowerCase","isBtnText","isJsonParse","isShowPass","request","_alertBefore","_alertError","_alertSuccess","location","href","getElementsByClassName","_statusButton","_jsonParse","btnSubmitText","btnText","$btnText","$btnTextSend","spinner","parserData","message","errors","_alertModal","_alertCollapse","bootstrap","Modal","$modal","$body","setDataRelationStatus","$collapse","$element","$alert","txt","t","view","icon","checkValidity","FormData","VGRollup"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"vgapp.js","mappings":"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","sources":["webpack://vg/webpack/bootstrap","webpack://vg/webpack/runtime/define property getters","webpack://vg/webpack/runtime/hasOwnProperty shorthand","webpack://vg/webpack/runtime/make namespace object","webpack://vg/./app/utils/js/functions.js","webpack://vg/./app/utils/js/dom/selectors.js","webpack://vg/./app/utils/js/dom/data.js","webpack://vg/./app/utils/js/dom/manipulator.js","webpack://vg/./app/utils/js/components/params.js","webpack://vg/./app/utils/js/dom/event.js","webpack://vg/./app/modules/module-fn.js","webpack://vg/./app/modules/base-module.js","webpack://vg/./app/utils/js/components/overflow.js","webpack://vg/./app/utils/js/components/backdrop.js","webpack://vg/./app/modules/vgsidebar/js/vgsidebar.js","webpack://vg/./app/modules/vgcollapse/js/vgcollapse.js","webpack://vg/./app/utils/js/components/responsive.js","webpack://vg/./app/modules/vgnav/js/vgnav.js","webpack://vg/./app/utils/js/components/placement.js","webpack://vg/./app/modules/vgdropdown/js/vgdropdown.js","webpack://vg/./app/utils/js/components/scrollbar.js","webpack://vg/./app/modules/vgmodal/js/vgmodal.js","webpack://vg/./app/modules/vgformsender/js/vgformsender.js","webpack://vg/./app/modules/vgrollup/js/vgrollup.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * Набор скриптов для широкого применения\r\n */\r\n\r\n/**\r\n * Если что-нибудь в объекте\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isEmptyObj(obj) {\r\n\tfor (let prop in obj) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(obj, prop)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\n/**\r\n * isElement\r\n * @param object\r\n * @returns {boolean}\r\n */\r\nconst isElement = object => {\r\n\tif (!isObject(object)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn typeof object.nodeType !== 'undefined'\r\n}\r\n\r\n/**\r\n * isDisabled\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nconst isDisabled = element => {\r\n\tif (!element || element.nodeType !== Node.ELEMENT_NODE) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (element.classList.contains('disabled')) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (typeof element.disabled !== 'undefined') {\r\n\t\treturn element.disabled\r\n\t}\r\n\r\n\treturn element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\r\n}\r\n\r\n/**\r\n * isVisible\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nfunction isVisible (element) {\r\n\tif (!isElement(element) || element.getClientRects().length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\tconst elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\r\n\tconst closedDetails = element.closest('details:not([open])')\r\n\r\n\tif (!closedDetails) {\r\n\t\treturn elementIsVisible\r\n\t}\r\n\r\n\tif (closedDetails !== element) {\r\n\t\tconst summary = element.closest('summary')\r\n\t\tif (summary && summary.parentNode !== closedDetails) {\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tif (summary === null) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementIsVisible\r\n}\r\n\r\n/**\r\n * isObject\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isObject(obj) {\r\n\treturn obj && typeof obj === 'object'\r\n}\r\n\r\n/**\r\n * Приводим в порядок типы данных\r\n * @param value\r\n * @returns {any}\r\n */\r\nfunction normalizeData(value) {\r\n\tif (value === 'true') {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (value === 'false') {\r\n\t\treturn false\r\n\t}\r\n\r\n\tif (value === Number(value).toString()) {\r\n\t\treturn Number(value)\r\n\t}\r\n\r\n\tif (value === '' || value === 'null') {\r\n\t\treturn null\r\n\t}\r\n\r\n\tif (typeof value !== 'string') {\r\n\t\treturn value\r\n\t}\r\n\r\n\ttry {\r\n\t\treturn JSON.parse(decodeURIComponent(value))\r\n\t} catch {\r\n\t\treturn value\r\n\t}\r\n}\r\n\r\n/**\r\n * Удаляем элементы с массива\r\n * @param arr\r\n * @param el\r\n */\r\nfunction removeElementArray(arr, el) {\r\n\treturn arr.filter((item) => !el.includes(item));\r\n}\r\n\r\n/**\r\n * Глубокое объединение объектов\r\n * @param objects\r\n * @returns {*}\r\n */\r\nfunction mergeDeepObject(...objects) {\r\n\tconst isObject = obj => obj && typeof obj === 'object';\r\n\r\n\treturn objects.reduce((prev, obj) => {\r\n\t\tObject.keys(obj).forEach(key => {\r\n\t\t\tconst pVal = prev[key];\r\n\t\t\tconst oVal = obj[key];\r\n\r\n\t\t\tif (Array.isArray(pVal) && Array.isArray(oVal)) {\r\n\t\t\t\tprev[key] = pVal.concat(...oVal);\r\n\t\t\t}\r\n\t\t\telse if (isObject(pVal) && isObject(oVal)) {\r\n\t\t\t\tprev[key] = mergeDeepObject(pVal, oVal);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tprev[key] = oVal;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn prev;\r\n\t}, {});\r\n}\r\n\r\n/**\r\n * Callback\r\n * @param possibleCallback\r\n * @param args\r\n * @param defaultValue\r\n * @returns {*}\r\n */\r\nfunction execute(possibleCallback, args = [], defaultValue = possibleCallback) {\r\n\treturn typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\r\n}\r\n\r\n/**\r\n * Transition\r\n * @param callback\r\n * @param transitionElement\r\n * @param waitForTransition\r\n */\r\nconst TRANSITION_END = 'transitionend';\r\nconst MILLISECONDS_MULTIPLIER = 1000;\r\n\r\nfunction executeAfterTransition (callback, transitionElement, waitForTransition = true, timeOutMs) {\r\n\tif (!waitForTransition) {\r\n\t\texecute(callback)\r\n\t\treturn\r\n\t}\r\n\r\n\tconst durationPadding = 5\r\n\tconst emulatedDuration = timeOutMs ? timeOutMs : getTransitionDurationFromElement(transitionElement) + durationPadding;\r\n\r\n\tlet called = false\r\n\r\n\tconst handler = ({ target }) => {\r\n\t\tif (target !== transitionElement) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tcalled = true\r\n\t\ttransitionElement.removeEventListener(TRANSITION_END, handler)\r\n\t\texecute(callback)\r\n\t}\r\n\r\n\ttransitionElement.addEventListener(TRANSITION_END, handler)\r\n\tsetTimeout(() => {\r\n\t\tif (!called) {\r\n\t\t\ttriggerTransitionEnd(transitionElement)\r\n\t\t}\r\n\t}, emulatedDuration)\r\n}\r\n\r\nconst getTransitionDurationFromElement = element => {\r\n\tif (!element) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// Get transition-duration of the element\r\n\tlet { transitionDuration, transitionDelay } = window.getComputedStyle(element)\r\n\r\n\tconst floatTransitionDuration = Number.parseFloat(transitionDuration)\r\n\tconst floatTransitionDelay = Number.parseFloat(transitionDelay)\r\n\r\n\t// Return 0 if element or transition duration is not found\r\n\tif (!floatTransitionDuration && !floatTransitionDelay) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// If multiple durations are defined, take the first\r\n\ttransitionDuration = transitionDuration.split(',')[0]\r\n\ttransitionDelay = transitionDelay.split(',')[0]\r\n\r\n\treturn (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\r\n}\r\n\r\nconst triggerTransitionEnd = element => {\r\n\telement.dispatchEvent(new Event(TRANSITION_END))\r\n}\r\n\r\n/**\r\n * Трюк для перезапуска анимации элемента\r\n *\r\n * @param {HTMLElement} element\r\n * @return void\r\n *\r\n * @смотри https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\r\n */\r\nconst reflow = element => {\r\n\telement.offsetHeight // eslint-disable-line no-unused-expressions\r\n}\r\n\r\n/**\r\n * Noop\r\n */\r\nconst noop = () => {};\r\n\r\n/**\r\n * Генерация случайной строки\r\n */\r\nfunction makeRandomString(length = 7) {\r\n\tlet result = '';\r\n\tconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\tconst charactersLength = characters.length;\r\n\tlet counter = 0;\r\n\twhile (counter < length) {\r\n\t\tresult += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n\t\tcounter += 1;\r\n\t}\r\n\treturn result;\r\n}\r\n\r\n/**\r\n *\r\n */\r\nconst isRTL = () => document.documentElement.dir === 'rtl'\r\n\r\nexport {isElement, isVisible, isDisabled, isObject, isEmptyObj, mergeDeepObject, removeElementArray, normalizeData, execute, executeAfterTransition, reflow, noop, makeRandomString, isRTL}","/**\r\n * Работа с DOM\r\n * @param selector\r\n * @returns {*}\r\n */\r\nimport {isElement} from \"../functions\";\r\n\r\nconst parseSelector = selector => {\r\n\tif (selector && window.CSS && window.CSS.escape) {\r\n\t\tselector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\r\n\t}\r\n\r\n\treturn selector\r\n}\r\n\r\nconst getSelector = element => {\r\n\tlet selector = element.getAttribute('data-vg-target');\r\n\r\n\tif (!selector || selector === '#') {\r\n\t\tlet hrefAttribute = element.getAttribute('href');\r\n\t\tif (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\r\n\t\t\threfAttribute = `#${hrefAttribute.split('#')[1]}`;\r\n\t\t}\r\n\r\n\t\tselector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\r\n\t}\r\n\r\n\treturn selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\r\n}\r\n\r\nconst Selectors = {\r\n\tfind(selector, element = document.documentElement) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\treturn selector;\r\n\t\t} else {\r\n\t\t\treturn Element.prototype.querySelector.call(element, selector);\r\n\t\t}\r\n\t},\r\n\r\n\tfindAll(selector, container = document.documentElement) {\r\n\t\treturn [].concat(...Element.prototype.querySelectorAll.call(container, selector));\r\n\t},\r\n\r\n\tgetSelectorFromElement(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\tif (selector) return Selectors.find(selector) ? selector : null\r\n\t\treturn null\r\n\t},\r\n\r\n\tgetElementFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.find(selector) : null\r\n\t},\r\n\r\n\tgetMultipleElementsFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.findAll(selector) : []\r\n\t}\r\n}\r\n\r\nexport default Selectors;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap data.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт работает с коллекцией модулей. Подробнее тут https://learn.javascript.ru/map-set\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst elementMap = new Map()\r\n\r\nexport default {\r\n\tset(element, key, instance) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\telementMap.set(element, new Map())\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\t\tif (!instanceMap.has(key) && instanceMap.size !== 0) {\r\n\t\t\tconsole.error(`VGApp не допускает более одного экземпляра для каждого элемента. Связанный экземпляр: ${Array.from(instanceMap.keys())[0]}.`)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tinstanceMap.set(key, instance)\r\n\t},\r\n\r\n\tget(element, key) {\r\n\t\tif (elementMap.has(element)) {\r\n\t\t\treturn elementMap.get(element).get(key) || null\r\n\t\t}\r\n\r\n\t\treturn null\r\n\t},\r\n\r\n\tremove(element, key) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\r\n\t\tinstanceMap.delete(key);\r\n\r\n\t\tif (instanceMap.size === 0) {\r\n\t\t\telementMap.delete(element)\r\n\t\t}\r\n\t}\r\n}\r\n","import {isElement, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Манипуляции с атрибутами у элемента:\r\n * get (элемент, имя, флаг - вырезать data-) - метод выбирает значение атрибута по его имени, если в поле имени передать 'data' -> будут выбраны только дата атрибуты, если 'all' -> метод вернет значение всех атрибутов\r\n * has (элемент, имя) - есть ли атрибут у элемента\r\n * set (элемент, имя, значение) - установка у элемента атрибута или его изменение\r\n * remove (элемент, имя) - удаляет атрибут у элемента\r\n */\r\nconst Manipulator = {\r\n\tget(element, nameAttribute = 'data', isRemoveDataName = true) {\r\n\t\tif (!element) {\r\n\t\t\treturn {}\r\n\t\t}\r\n\r\n\t\tif (nameAttribute === 'data') {\r\n\t\t\tlet elmBase = ['data-vg-toggle', 'data-vg-target', 'data-vg-dismiss'],\r\n\t\t\t\tattributes = {};\r\n\r\n\t\t\tlet arr = [].filter.call(element.attributes, function (at) {\r\n\t\t\t\treturn /^data-/.test(at.name);\r\n\t\t\t});\r\n\r\n\t\t\tif (arr.length) {\r\n\t\t\t\tarr.forEach(function (v) {\r\n\t\t\t\t\tlet name = v.name;\r\n\r\n\t\t\t\t\tif (!elmBase.includes(name)) {\r\n\t\t\t\t\t\tif (isRemoveDataName) name = name.slice(5);\r\n\t\t\t\t\t\tattributes[name] = normalizeData(v.value)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn attributes;\r\n\t\t} else if (nameAttribute === 'all') {\r\n\t\t\treturn element.getAttributeNames().reduce((acc, name) => {\r\n\t\t\t\treturn {...acc, [name]: element.getAttribute(name)};\r\n\t\t\t}, {});\r\n\t\t} else {\r\n\t\t\treturn element.getAttribute(nameAttribute);\r\n\t\t}\r\n\t},\r\n\r\n\thas(element, nameAttribute) {\r\n\t\treturn element.hasAttribute(nameAttribute);\r\n\t},\r\n\r\n\tset(element, name, value) {\r\n\t\tif (isElement(element) && name) {\r\n\t\t\telement.setAttribute(name, value);\r\n\t\t}\r\n\t},\r\n\r\n\tremove(element, nameAttribute) {\r\n\t\tif (isElement(element) && nameAttribute) {\r\n\t\t\telement.removeAttribute(nameAttribute);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport {Manipulator}\r\n","import {isElement, mergeDeepObject, normalizeData} from \"../functions\";\r\nimport {Manipulator} from \"../dom/manipulator\";\r\n\r\nclass Params {\r\n\tconstructor(params, element = null) {\r\n\t\tthis._params = this.merge(params, element);\r\n\t}\r\n\r\n\tget() {\r\n\t\treturn this._params;\r\n\t}\r\n\r\n\tfromElement(element) {\r\n\t\treturn isElement(element) ? Manipulator.get(element) : {};\r\n\t}\r\n\r\n\tmerge(params, element) {\r\n\t\tlet mParams = mergeDeepObject(params, this.fromElement(element));\r\n\r\n\t\tfor (let key in mParams) {\r\n\t\t\tif (key.indexOf('-') !== -1) {\r\n\t\t\t\tlet keys = key.split('-'),\r\n\t\t\t\t\tvalue = normalizeData(mParams[key]);\r\n\r\n\t\t\t\tif (keys[0] in mParams) {\r\n\t\t\t\t\tif (keys[1] in mParams[keys[0]]) {\r\n\t\t\t\t\t\tmParams[keys[0]][keys[1]] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete mParams[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ('params' in mParams) {\r\n\t\t\tmParams = mergeDeepObject(mParams, mParams.params);\r\n\t\t\tdelete mParams.params;\r\n\t\t}\r\n\r\n\t\treturn mParams;\r\n\t}\r\n}\r\n\r\nexport default Params;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap event.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт для прослушивания события\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\r\nconst stripNameRegex = /\\..*/\r\nconst stripUidRegex = /::\\d+$/\r\nconst eventRegistry = {} // Events storage\r\nlet uidEvent = 1\r\nconst customEvents = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout'\r\n}\r\n\r\nconst nativeEvents = new Set([\r\n\t'click',\r\n\t'dblclick',\r\n\t'mouseup',\r\n\t'mousedown',\r\n\t'contextmenu',\r\n\t'mousewheel',\r\n\t'DOMMouseScroll',\r\n\t'mouseover',\r\n\t'mouseout',\r\n\t'mousemove',\r\n\t'selectstart',\r\n\t'selectend',\r\n\t'submit',\r\n\t'keydown',\r\n\t'keypress',\r\n\t'keyup',\r\n\t'orientationchange',\r\n\t'touchstart',\r\n\t'touchmove',\r\n\t'touchend',\r\n\t'touchcancel',\r\n\t'pointerdown',\r\n\t'pointermove',\r\n\t'pointerup',\r\n\t'pointerleave',\r\n\t'pointercancel',\r\n\t'gesturestart',\r\n\t'gesturechange',\r\n\t'gestureend',\r\n\t'focus',\r\n\t'blur',\r\n\t'change',\r\n\t'reset',\r\n\t'select',\r\n\t'submit',\r\n\t'focusin',\r\n\t'focusout',\r\n\t'load',\r\n\t'unload',\r\n\t'beforeunload',\r\n\t'resize',\r\n\t'move',\r\n\t'DOMContentLoaded',\r\n\t'readystatechange',\r\n\t'error',\r\n\t'abort',\r\n\t'scroll'\r\n])\r\n\r\n/**\r\n * Приватные методы\r\n */\r\n\r\nfunction makeEventUid(element, uid) {\r\n\treturn (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\r\n}\r\n\r\nfunction getElementEvents(element) {\r\n\tconst uid = makeEventUid(element)\r\n\r\n\telement.uidEvent = uid\r\n\teventRegistry[uid] = eventRegistry[uid] || {}\r\n\r\n\treturn eventRegistry[uid]\r\n}\r\n\r\nfunction bootstrapHandler(element, fn) {\r\n\treturn function handler(event) {\r\n\t\thydrateObj(event, { delegateTarget: element })\r\n\r\n\t\tif (handler.oneOff) {\r\n\t\t\tEventHandler.off(element, event.type, fn)\r\n\t\t}\r\n\r\n\t\treturn fn.apply(element, [event])\r\n\t}\r\n}\r\n\r\nfunction bootstrapDelegationHandler(element, selector, fn) {\r\n\treturn function handler(event) {\r\n\t\tconst domElements = element.querySelectorAll(selector)\r\n\r\n\t\tfor (let { target } = event; target && target !== this; target = target.parentNode) {\r\n\t\t\tfor (const domElement of domElements) {\r\n\t\t\t\tif (domElement !== target) {\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\r\n\t\t\t\thydrateObj(event, { delegateTarget: target })\r\n\r\n\t\t\t\tif (handler.oneOff) {\r\n\t\t\t\t\tEventHandler.off(element, event.type, selector, fn)\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn fn.apply(target, [event])\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction findHandler(events, callable, delegationSelector = null) {\r\n\treturn Object.values(events)\r\n\t\t.find(event => event.callable === callable && event.delegationSelector === delegationSelector)\r\n}\r\n\r\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\r\n\tconst isDelegated = typeof handler === 'string'\r\n\t// TODO: выдает \"false\" вместо селектора, поэтому нужно проверить. boot\r\n\tconst callable = isDelegated ? delegationFunction : (handler || delegationFunction)\r\n\tlet typeEvent = getTypeEvent(originalTypeEvent)\r\n\r\n\tif (!nativeEvents.has(typeEvent)) {\r\n\t\ttypeEvent = originalTypeEvent\r\n\t}\r\n\r\n\treturn [isDelegated, callable, typeEvent]\r\n}\r\n\r\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\r\n\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\treturn\r\n\t}\r\n\r\n\tlet [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\r\n\t// in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\r\n\t// this prevents the handler from being dispatched the same way as mouseover or mouseout does\r\n\tif (originalTypeEvent in customEvents) {\r\n\t\tconst wrapFunction = fn => {\r\n\t\t\treturn function (event) {\r\n\t\t\t\tif (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\r\n\t\t\t\t\treturn fn.call(this, event)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcallable = wrapFunction(callable)\r\n\t}\r\n\r\n\tconst events = getElementEvents(element)\r\n\tconst handlers = events[typeEvent] || (events[typeEvent] = {})\r\n\tconst previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\r\n\r\n\tif (previousFunction) {\r\n\t\tpreviousFunction.oneOff = previousFunction.oneOff && oneOff\r\n\r\n\t\treturn\r\n\t}\r\n\r\n\tconst uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\r\n\tconst fn = isDelegated ?\r\n\t\tbootstrapDelegationHandler(element, handler, callable) :\r\n\t\tbootstrapHandler(element, callable)\r\n\r\n\tfn.delegationSelector = isDelegated ? handler : null\r\n\tfn.callable = callable\r\n\tfn.oneOff = oneOff\r\n\tfn.uidEvent = uid\r\n\thandlers[uid] = fn\r\n\r\n\telement.addEventListener(typeEvent, fn, isDelegated)\r\n}\r\n\r\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\r\n\tconst fn = findHandler(events[typeEvent], handler, delegationSelector)\r\n\r\n\tif (!fn) {\r\n\t\treturn\r\n\t}\r\n\r\n\telement.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\r\n\tdelete events[typeEvent][fn.uidEvent]\r\n}\r\n\r\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\r\n\tconst storeElementEvent = events[typeEvent] || {}\r\n\r\n\tfor (const [handlerKey, event] of Object.entries(storeElementEvent)) {\r\n\t\tif (handlerKey.includes(namespace)) {\r\n\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction getTypeEvent(event) {\r\n\t// allow to get the native events from namespaced events ('click.bs.button' --> 'click')\r\n\tevent = event.replace(stripNameRegex, '')\r\n\treturn customEvents[event] || event\r\n}\r\n\r\nfunction hydrateObj(obj, meta = {}) {\r\n\tfor (const [key, value] of Object.entries(meta)) {\r\n\t\ttry {\r\n\t\t\tobj[key] = value\r\n\t\t} catch {\r\n\t\t\tObject.defineProperty(obj, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget() {\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\treturn obj\r\n}\r\n\r\n/**\r\n * События\r\n * @type {{one(*, *, *, *): void, trigger(*, *, *): (null|*), off(*, *, *, *): void, on(*, *, *, *): void}}\r\n */\r\nconst EventHandler = {\r\n\t/**\r\n\t * Прослушиватель событий (элемент, событие (полный список смотри в константе nativeEvents, источник события или хендлер, функция обратного вызова))\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\ton(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, false)\r\n\t},\r\n\r\n\t/**\r\n\t * Прослушиватель событий, но замыкается и больше не повторяется на элементе\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\tone(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, true)\r\n\t},\r\n\r\n\t/**\r\n\t * Удаление обработчика\r\n\t * @param element\r\n\t * @param originalTypeEvent\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\toff(element, originalTypeEvent, handler, delegationFunction) {\r\n\t\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\t\tconst inNamespace = typeEvent !== originalTypeEvent\r\n\t\tconst events = getElementEvents(element)\r\n\t\tconst storeElementEvent = events[typeEvent] || {}\r\n\t\tconst isNamespace = originalTypeEvent.startsWith('.')\r\n\r\n\t\tif (typeof callable !== 'undefined') {\r\n\t\t\t// Simplest case: handler is passed, remove that listener ONLY.\r\n\t\t\tif (!Object.keys(storeElementEvent).length) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tremoveHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isNamespace) {\r\n\t\t\tfor (const elementEvent of Object.keys(events)) {\r\n\t\t\t\tremoveNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\r\n\t\t\tconst handlerKey = keyHandlers.replace(stripUidRegex, '')\r\n\r\n\t\t\tif (!inNamespace || originalTypeEvent.includes(handlerKey)) {\r\n\t\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Пользовательские события. Подробнее тут https://learn.javascript.ru/dispatch-events\r\n\t * @param element\r\n\t * @param event\r\n\t * @param args\r\n\t * @returns {*|null}\r\n\t */\r\n\ttrigger(element, event, args) {\r\n\t\tif (typeof event !== 'string' || !element) {\r\n\t\t\treturn null\r\n\t\t}\r\n\r\n\t\tlet bubbles = true;\r\n\t\tlet nativeDispatch = true;\r\n\t\tlet defaultPrevented = false;\r\n\r\n\t\tconst evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\r\n\r\n\t\tif (defaultPrevented) {\r\n\t\t\tevt.preventDefault()\r\n\t\t}\r\n\r\n\t\tif (nativeDispatch) {\r\n\t\t\telement.dispatchEvent(evt)\r\n\t\t}\r\n\r\n\t\treturn evt\r\n\t}\r\n}\r\n\r\nexport default EventHandler\r\n","import EventHandler from \"../utils/js/dom/event\";\r\nimport {isDisabled, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Тут собраны вспомогательные скрипты для работы модулей\r\n */\r\n\r\n/**\r\n * Набор svg элементов\r\n * @param name\r\n * @returns {*|{}}\r\n */\r\nconst getSVG = (name) => {\r\n\tconst svg = {\r\n\t\terror: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-success\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-2\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(252, 191, 191, .5)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-error-circle\" stroke=\"#F74444\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-error-line1\" d=\"M22.244224,22 L60.4279902,60.1837662\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path><path class=\"ui-error-line2\" d=\"M60.755776,21 L23.244224,59.8443492\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path></g></g></svg>',\r\n\t\tsuccess: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-error\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(117, 183, 152, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-success-circle\" id=\"Oval-2\" stroke=\"#A5DC86\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><polyline class=\"ui-success-path\" id=\"Path-2\" stroke=\"#A5DC86\" stroke-width=\"4\" points=\"19 38.8036813 31.1020744 54.8046875 63.299221 28\"></polyline></g></g></svg>',\r\n\t\twaiting: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-waiting\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(255, 218, 106, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-waiting-circle\" id=\"Oval-2\" stroke=\"#ffda6a\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-waiting-line1\" d=\"M43 63C54.598 63 64 53.598 64 42C64 30.402 54.598 21 43 21C31.402 21 22 30.402 22 42C22 53.598 31.402 63 43 63Z\" stroke-width=\"3\" stroke=\"#ffda6a\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path class=\"ui-waiting-line2\" d=\"M40.6667 32.6641V44.3307H52.3334\" stroke=\"#ffda6a\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></g></svg>',\r\n\t\tdots: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-three-dots-vertical\" viewBox=\"0 0 16 16\"><path d=\"M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/></svg>',\r\n\t\tcross: '<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 224.512 224.512\" xml:space=\"preserve\"><g><polygon points=\"224.507,6.997 217.521,0 112.256,105.258 6.998,0 0.005,6.997 105.263,112.254 0.005,217.512 6.998,224.512 112.256,119.24 217.521,224.512 224.507,217.512 119.249,112.254 \"/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>'\r\n\t};\r\n\r\n\treturn svg[name] ?? {};\r\n}\r\n\r\n/**\r\n * Вешаем событие \"Закрыть\" на все модалки, сайдбары и т.п.\r\n * @param module\r\n * @param method\r\n */\r\nconst dismissTrigger = (module, method = 'hide') => {\r\n\tconst clickEvent = `click.dismiss.${module.EVENT_KEY}`\r\n\tconst name = module.NAME;\r\n\r\n\tEventHandler.on(document, clickEvent, `[data-vg-dismiss=\"${name}\"]`, function (event) {\r\n\t\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\t\tevent.preventDefault()\r\n\t\t}\r\n\r\n\t\tif (isDisabled(this)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst target = Selectors.getSelectorFromElement(this) || this.closest(`.vg-${name}`)\r\n\t\tconst instance = module.getOrCreateInstance(target)\r\n\r\n\t\tinstance[method]()\r\n\t})\r\n}\r\n\r\n/**\r\n * AJAX REQUEST\r\n * @type {{post: ajax.post, get: ajax.get, x: ((function(): (XMLHttpRequest))|*), send: ajax.send}}\r\n */\r\nconst Ajax = {\r\n\tx: function () {\r\n\t\tif (typeof XMLHttpRequest !== 'undefined') {\r\n\t\t\treturn new XMLHttpRequest();\r\n\t\t}\r\n\t\tlet versions = [\r\n\t\t\t\"MSXML2.XmlHttp.6.0\",\r\n\t\t\t\"MSXML2.XmlHttp.5.0\",\r\n\t\t\t\"MSXML2.XmlHttp.4.0\",\r\n\t\t\t\"MSXML2.XmlHttp.3.0\",\r\n\t\t\t\"MSXML2.XmlHttp.2.0\",\r\n\t\t\t\"Microsoft.XmlHttp\"\r\n\t\t];\r\n\r\n\t\tlet xhr;\r\n\t\tfor (let i = 0; i < versions.length; i++) {\r\n\t\t\ttry {\r\n\t\t\t\txhr = new ActiveXObject(versions[i]);\r\n\t\t\t\tbreak;\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\treturn xhr;\r\n\t},\r\n\r\n\tsend: function (url, callback, method, data, async) {\r\n\t\tif (async === undefined) {\r\n\t\t\tasync = true;\r\n\t\t}\r\n\t\tlet x = Ajax.x();\r\n\t\tx.open(method, url, async);\r\n\t\tx.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\tx.onreadystatechange = function () {\r\n\t\t\tif (x.readyState === 4) {\r\n\t\t\t\tswitch (x.status) {\r\n\t\t\t\t\tcase 200:\r\n\t\t\t\t\t\tcallback('success', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tcallback('error', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tx.send(data)\r\n\t},\r\n\r\n\tget: function (url, data, callback, async) {\r\n\t\tlet query = [];\r\n\r\n\t\tif (!isEmptyObj(data)) {\r\n\t\t\tfor (let key of data) {\r\n\t\t\t\tquery.push(encodeURIComponent(key[0]) + '=' + encodeURIComponent(key[1]));\r\n\t\t\t}\r\n\t\t}\r\n\t\tAjax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async)\r\n\t},\r\n\r\n\tpost: function (url, data, callback, async) {\r\n\t\tAjax.send(url, callback, 'POST', data, async)\r\n\t}\r\n};\r\n\r\nexport {\r\n\tdismissTrigger, Ajax, getSVG\r\n}","import {execute, executeAfterTransition, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\nimport Data from \"../utils/js/dom/data\";\r\nimport Params from \"../utils/js/components/params\";\r\nimport EventHandler from \"../utils/js/dom/event\";\r\nimport {Ajax, getSVG} from \"./module-fn\";\r\n\r\nclass BaseModule {\r\n\tconstructor(element) {\r\n\t\tif (!element) return\r\n\r\n\t\tthis._element = Selectors.find(element);\r\n\t\tif (!this._element){\r\n\t\t\tthrow new Error('Товарищ! Первый параметр не должен быть пустым!');\r\n\t\t}\r\n\r\n\t\tthis._params = {};\r\n\t\tData.set(this._element, this.constructor.NAME_KEY, this)\r\n\t}\r\n\r\n\t_getParams(element, params) {\r\n\t\treturn new Params(params, element).get();\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tData.remove(this._element, this.constructor.NAME_KEY);\r\n\t\tEventHandler.off(this._element, this.constructor.EVENT_KEY)\r\n\r\n\t\tfor (const propertyName of Object.getOwnPropertyNames(this)) {\r\n\t\t\tthis[propertyName] = null\r\n\t\t}\r\n\t}\r\n\r\n\t_route(callback) {\r\n\t\tconst _this = this;\r\n\t\tlet $content = null;\r\n\r\n\t\tconst setData = (data) => {\r\n\t\t\tif ($content) $content.innerHTML = data;\r\n\t\t};\r\n\r\n\t\tif (!_this._params.hasOwnProperty('ajax')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!_this._params.ajax.route) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!'method' in _this._params.ajax) {\r\n\t\t\t_this._params.ajax.method = 'get';\r\n\t\t}\r\n\r\n\t\tif ('target' in _this._params.ajax && _this._params.ajax.target) {\r\n\t\t\t$content = Selectors.find(_this._params.ajax.target);\r\n\t\t}\r\n\r\n\t\tif ('loader' in _this._params.ajax && _this._params.ajax.loader) {\r\n\t\t\tsetData('<div class=\"vg-loader\"></div>');\r\n\t\t}\r\n\r\n\t\tAjax[_this._params.ajax.method](_this._params.ajax.route, _this._params.ajax.data || {}, function (status, data) {\r\n\t\t\tsetData(data.response);\r\n\t\t\texecute(callback, [status, data]);\r\n\t\t});\r\n\t}\r\n\r\n\t_dismissElement() {\r\n\t\tlet cross = getSVG('cross'),\r\n\t\t\tbutton = this._element.querySelector('.vg-btn-close');\r\n\r\n\t\tif (button) {\r\n\t\t\tlet svg = button.querySelector('svg');\r\n\t\t\tif (!svg) button.insertAdjacentHTML('beforeend', cross);\r\n\t\t}\r\n\t}\r\n\r\n\t_queueCallback(callback, element, isAnimated = true, timeOutMs) {\r\n\t\texecuteAfterTransition(callback, element, isAnimated, timeOutMs);\r\n\t}\r\n\r\n\tstatic getInstance(element) {\r\n\t\treturn Data.get(Selectors.find(element), this.NAME_KEY)\r\n\t}\r\n\r\n\tstatic getOrCreateInstance(element, params = {}) {\r\n\t\treturn this.getInstance(element) || new this(element, !isEmptyObj(params) ? params : {})\r\n\t}\r\n\r\n\tstatic get DATA_KEY() {\r\n\t\treturn `vg.${this.NAME}`\r\n\t}\r\n\r\n\tstatic get EVENT_KEY() {\r\n\t\treturn `.${this.DATA_KEY}`\r\n\t}\r\n}\r\n\r\nexport default BaseModule;","import {Manipulator} from \"../dom/manipulator\";\r\n\r\n/**\r\n * Класс Overflow\r\n * Запрещает скроллинг и убирает его, компенсируя отступом\r\n */\r\n\r\nclass Overflow {\r\n\tstatic append() {\r\n\t\tdocument.body.style.paddingRight = getWidth() + 'px';\r\n\t\tdocument.body.style.overflow = 'hidden';\r\n\r\n\t\tfunction getWidth() {\r\n\t\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic destroy() {\r\n\t\tdocument.body.style.overflow = '';\r\n\t\tdocument.body.style.paddingRight = '';\r\n\r\n\t\tlet styles = Manipulator.get(document.body, 'style');\r\n\t\tif (!styles) Manipulator.remove(document.body, 'style');\r\n\t}\r\n}\r\n\r\nexport default Overflow;","import {execute} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\nimport EventHandler from \"../dom/event\";\r\nimport Overflow from \"./overflow\";\r\n\r\nconst NAME = 'backdrop'\r\nconst CLASS_NAME = 'vg-backdrop'\r\nconst CLASS_NAME_FADE = 'fade'\r\nconst EVENT_MOUSEDOWN = `mousedown.vg.${NAME}`\r\n\r\nclass Backdrop {\r\n\tstatic show(callback) {\r\n\t\tBackdrop._append()\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic hide(callback) {\r\n\t\tBackdrop._destroy();\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic _append() {\r\n\t\tif (Selectors.find('.' + CLASS_NAME)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet backdrop = document.createElement('div');\r\n\t\tbackdrop.classList.add(CLASS_NAME);\r\n\r\n\t\tdocument.body.append(backdrop);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tbackdrop.classList.add(CLASS_NAME_FADE)\r\n\t\t}, 50);\r\n\r\n\t\tEventHandler.on(backdrop, EVENT_MOUSEDOWN, () => {\r\n\t\t\tBackdrop.hide()\r\n\t\t\tOverflow.destroy();\r\n\t\t});\r\n\t}\r\n\r\n\tstatic _destroy() {\r\n\t\tlet element = Selectors.find('.' + CLASS_NAME);\r\n\t\tif (!element) return;\r\n\r\n\t\telement.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\telement.remove();\r\n\t\t}, 500);\r\n\t}\r\n}\r\n\r\nexport default Backdrop;","import BaseModule from \"../../base-module\";\r\nimport {isDisabled, isVisible, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'sidebar';\r\nconst NAME_KEY = 'vg.sidebar';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"sidebar\"]'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGSidebar extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\toverflow: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tthis._route();\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif (_this._params.backdrop) {\r\n\t\t\tBackdrop.show();\r\n\t\t}\r\n\r\n\t\tif (_this._params.overflow) {\r\n\t\t\tOverflow.append();\r\n\t\t}\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_SHOW);\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tEventHandler.on(Selectors.find('.vg-backdrop'), 'mousedown.vg.backdrop', function () {\r\n\t\t\t\t_this.hide();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._element, true, 50)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tif (_this._params.backdrop) {\r\n\t\t\tBackdrop.hide(function () {\r\n\t\t\t\tif (_this._params.overflow) {\r\n\t\t\t\t\tOverflow.destroy();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (_this._params.overflow) {\r\n\t\t\tOverflow.destroy();\r\n\t\t}\r\n\r\n\t\t_this._element.setAttribute('aria-expanded', false);\r\n\t\t_this._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\tconst completeCallback = () => EventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\tthis._queueCallback(completeCallback, this._element, true);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(document, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== 'Escape') return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED)\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGSidebar);\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\t//if (isVisible(this)) this.focus();\r\n\t\tthis.setAttribute('aria-expanded', false);\r\n\t})\r\n\r\n\tconst alreadyOpen = Selectors.find('.vg-sidebar.show')\r\n\tif (alreadyOpen && alreadyOpen !== target) {\r\n\t\tVGSidebar.getInstance(alreadyOpen).hide()\r\n\t}\r\n\r\n\tconst data = VGSidebar.getOrCreateInstance(target)\r\n\tdata.toggle(this);\r\n});\r\n\r\nexport default VGSidebar;\r\n","import BaseModule from \"../../base-module\";\r\nimport {mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'collapse';\r\nconst NAME_KEY = 'vg.collapse';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_COLLAPSE = 'vg-collapse';\r\nconst CLASS_NAME_COLLAPSING = 'vg-collapsing';\r\nconst CLASS_NAME_COLLAPSED = 'vg-collapsed';\r\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\r\n\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"collapse\"]';\r\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGCollapse extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\ttoggle: true,\r\n\t\t\tparent: null,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._isTransitioning = false\r\n\t\tthis._triggerArray = []\r\n\r\n\t\tconst toggleList = Selectors.findAll(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const elem of toggleList) {\r\n\t\t\tconst selector = Selectors.getSelectorFromElement(elem);\r\n\t\t\tconst filterElement = Selectors.findAll(selector).filter(foundElement => foundElement === this._element);\r\n\r\n\t\t\tif (selector !== null && filterElement.length) {\r\n\t\t\t\tthis._triggerArray.push(elem)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._initializeChildren();\r\n\r\n\t\tif (!this._params.parent) {\r\n\t\t\tthis._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\r\n\t\t}\r\n\r\n\t\tif (this._params.toggle) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || _this._isShown()) return;\r\n\r\n\t\tlet activeChildren = [];\r\n\r\n\t\tif (_this._params.parent) {\r\n\t\t\tactiveChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\r\n\t\t\t\t.filter(element => element !== this._element)\r\n\t\t\t\t.map(element => VGCollapse.getOrCreateInstance(element, { toggle: false }));\r\n\t\t}\r\n\r\n\t\tif (activeChildren.length && activeChildren[0]._isTransitioning) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_SHOW);\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\tfor (const activeInstance of activeChildren) {\r\n\t\t\tactiveInstance.hide();\r\n\t\t}\r\n\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE)\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING)\r\n\r\n\t\t_this._element.style.height = 0;\r\n\r\n\t\t_this._addAriaAndCollapsedClass(_this._triggerArray, true);\r\n\t\t_this._isTransitioning = true;\r\n\r\n\t\t_this._route();\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\t\t_this._element.style.height = '';\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_SHOWN);\r\n\t\t}\r\n\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\r\n\t\tconst scrollSize = `scrollHeight`;\r\n\t\t_this._element.style.height = `${_this._element[scrollSize]}px`;\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || !_this._isShown()) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_HIDE)\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\t_this._element.style.height = `${this._element.getBoundingClientRect().height}px`;\r\n\t\treflow(_this._element);\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING);\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\tfor (const trigger of _this._triggerArray) {\r\n\t\t\tconst element = Selectors.getElementFromSelector(trigger);\r\n\r\n\t\t\tif (element && !_this._isShown(element)) {\r\n\t\t\t\t_this._addAriaAndCollapsedClass([trigger], false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_this._isTransitioning = true\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE);\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_HIDDEN);\r\n\t\t}\r\n\r\n\t\t_this._element.style.height = '';\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown(element = this._element) {\r\n\t\treturn element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addAriaAndCollapsedClass(triggerArray, isOpen) {\r\n\t\tif (!triggerArray.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const element of triggerArray) {\r\n\t\t\tthis._changeStateButton(element, isOpen);\r\n\t\t}\r\n\t}\r\n\r\n\t_initializeChildren() {\r\n\t\tif (!this._params.parent) return;\r\n\r\n\t\tconst children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const element of children) {\r\n\t\t\tconst selected = Selectors.getElementFromSelector(element)\r\n\r\n\t\t\tif (selected) {\r\n\t\t\t\tthis._addAriaAndCollapsedClass([element], this._isShown(selected))\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_getFirstLevelChildren(selector) {\r\n\t\tconst children = Selectors.find(CLASS_NAME_DEEPER_CHILDREN, this._params.parent);\r\n\t\treturn Selectors.find(selector, this._params.parent).filter(element => !children.includes(element));\r\n\t}\r\n\r\n\t_changeStateButton(element, isOpen) {\r\n\t\telement.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\r\n\t\telement.setAttribute('aria-expanded', isOpen);\r\n\t\telement.innerHTML = Manipulator.get(element, `data-${isOpen ? 'hide' : 'show'}-text`) || element.innerHTML;\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tSelectors.getMultipleElementsFromSelector(this).forEach(function (element) {\r\n\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).toggle();\r\n\t});\r\n})\r\n\r\nexport default VGCollapse;","/**\r\n * Класс Responsive, работает по таким же медиа точкам, что и bootstrap\r\n * и определяет на тач устройства.\r\n */\r\n\r\nclass Responsive {\r\n\tconstructor() {\r\n\t\tthis.breakpoints = {\r\n\t\t\txs: 0,\r\n\t\t\tsm: 576,\r\n\t\t\tmd: 768,\r\n\t\t\tlg: 992,\r\n\t\t\txl: 1200,\r\n\t\t\txxl: 1400,\r\n\t\t\txxxl: 1600,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Если наша ширина экрана совпадает с диапазоном который указан в модуле выдаем true, иначе false\r\n\t * @param module\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic check(module) {\r\n\t\tlet instance = new this ;\r\n\t\treturn instance.define(module);\r\n\t}\r\n\r\n\t/**\r\n\t * Проверяет на тач устройства. TODO не совсем правильно, надо сделать по-другому\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic checkMobileOrTablet() {\r\n\t\tlet check = false;\r\n\t\t(function(a) {\r\n\t\t\tif (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.slice(0,4))){\r\n\t\t\t\tcheck = true;\r\n\t\t\t}\r\n\t\t})(navigator.userAgent||navigator.vendor||window.opera);\r\n\r\n\t\treturn check;\r\n\t}\r\n\r\n\tdefine(module) {\r\n\t\tlet windowWidth = window.innerWidth,\r\n\t\t\tresponsive_size = this._checkResponsiveClass(module),\r\n\t\t\tbreakpoints = this.breakpoints,\r\n\t\t\tpoint = Object.keys(breakpoints).find(key => breakpoints[key] === responsive_size);\r\n\r\n\t\tlet keys = Object.keys(breakpoints),\r\n\t\t\tloc = keys.indexOf(point);\r\n\r\n\t\treturn windowWidth >= breakpoints[keys[loc + 1]];\r\n\t}\r\n\r\n\t_checkResponsiveClass(module) {\r\n\t\tlet element = module._element,\r\n\t\t\tparams = module._params,\r\n\t\t\tcurrent_responsive_size = 0;\r\n\r\n\t\tif (element.classList.contains(params.classes.XXXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxxl;\r\n\t\t} else if (element.classList.contains(params.classes.XXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxl;\r\n\t\t} else if (element.classList.contains(params.classes.XL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xl;\r\n\t\t} else if (element.classList.contains(params.classes.LG)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.lg;\r\n\t\t} else if (element.classList.contains(params.classes.MD)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.md;\r\n\t\t} else if (element.classList.contains(params.classes.SM)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.sm;\r\n\t\t} else if (element.classList.contains(params.classes.XS)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t} else {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t}\r\n\r\n\t\treturn current_responsive_size\r\n\t}\r\n}\r\n\r\nexport default Responsive;","import BaseModule from \"../../base-module\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Responsive from \"../../../utils/js/components/responsive\";\r\nimport {getSVG} from \"../../module-fn\";\r\nimport {execute, isDisabled, isVisible, mergeDeepObject, noop, normalizeData} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'nav';\r\nconst NAME_KEY = 'vg.nav';\r\n\r\n/**\r\n * Constants Classes\r\n */\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst SELECTOR_DATA_TOGGLE = '.vg-nav a';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_RESIZE_DATA_API = `resize.${NAME_KEY}.data.api`;\r\n\r\nclass VGNav extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbreakpoint: false,\r\n\t\t\tplacement: 'horizontal',\r\n\t\t\tclasses: {\r\n\t\t\t\thamburgerActive: 'vg-nav-hamburger-active',\r\n\t\t\t\thamburgerAlways: 'vg-nav-hamburger-always',\r\n\t\t\t\thamburger: 'vg-nav-hamburger',\r\n\t\t\t\tcontainer: 'vg-nav-container',\r\n\t\t\t\twrapper: 'vg-nav-wrapper',\r\n\t\t\t\tactive: 'vg-nav-active',\r\n\t\t\t\texpand: 'vg-nav-expand',\r\n\t\t\t\tcloned: 'vg-nav-cloned',\r\n\t\t\t\thover: 'vg-nav-hover',\r\n\t\t\t\tflip: 'vg-nav-flip',\r\n\t\t\t\tXXXL: 'vg-nav-xxxl',\r\n\t\t\t\tXXL: 'vg-nav-xxl',\r\n\t\t\t\tXL: 'vg-nav-xl',\r\n\t\t\t\tLG: 'vg-nav-lg',\r\n\t\t\t\tMD: 'vg-nav-md',\r\n\t\t\t\tSM: 'vg-nav-sm',\r\n\t\t\t\tXS: 'vg-nav-xs'\r\n\t\t\t},\r\n\t\t\texpand: true,\r\n\t\t\thover: false,\r\n\t\t\tposition: true,\r\n\t\t\tcollapse: true,\r\n\t\t\ttoggle: '<span class=\"default\"></span>',\r\n\t\t\thamburger: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\talways: false,\r\n\t\t\t\ttitle: '',\r\n\t\t\t\tbody: null\r\n\t\t\t},\r\n\t\t\tcallback: noop,\r\n\t\t\tanimation: true,\r\n\t\t\ttimeoutAnimation: 300,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._navigation = null;\r\n\t\tthis.navigation = '.' + this._params.classes.wrapper;\r\n\r\n\t\tthis.movedLinks = [];\r\n\t\tthis.$links = Selectors.findAll('.' + this._params.classes.wrapper + ' > li', this.navigation)\r\n\r\n\t\tif (this._params.animation === false) {\r\n\t\t\tthis._params.timeoutAnimation = 10\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tget navigation() {\r\n\t\treturn this._navigation;\r\n\t}\r\n\r\n\tset navigation(el) {\r\n\t\tlet elm = Selectors.find(el, this._element);\r\n\t\tif (!elm) return;\r\n\t\tthis._navigation = elm;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tif (!this.navigation) return;\r\n\r\n\t\tlet params = this._params;\r\n\r\n\t\t// Вешаем основные классы\r\n\t\tthis._element.classList.add(params.classes.container);\r\n\t\tthis._element.classList.add('vg-nav-' + params.placement);\r\n\r\n\t\t// Если нужно оставить список меню или установить медиа точку\r\n\t\tif (!params.breakpoint) {\r\n\t\t\tparams.expand = false;\r\n\t\t}\r\n\r\n\t\tif (!params.hamburger.always) {\r\n\t\t\tif (!params.breakpoint || !params.expand) {\r\n\t\t\t\tthis._element.classList.add(params.classes.expand);\r\n\t\t\t} else if (params.breakpoint !== false) {\r\n\t\t\t\tthis._element.classList.add('vg-nav-' + params.breakpoint);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._element.classList.add(params.classes.hamburgerAlways);\r\n\t\t}\r\n\r\n\t\t// Меню срабатывает при наведении, если это не мобильное устройство\r\n\t\tif (params.hover) {\r\n\t\t\tthis._element.classList.add(params.classes.hover);\r\n\r\n\t\t\tif (Responsive.checkMobileOrTablet()) {\r\n\t\t\t\tthis._element.classList.remove(params.classes.hover);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем гамбургер, если его нет в разметке\r\n\t\tif (params.expand && !params.hamburger.body) {\r\n\t\t\tlet isHamburger = Selectors.find('.' + params.classes.hamburger, this._element);\r\n\r\n\t\t\tif (isHamburger === null) {\r\n\t\t\t\tlet mTitle = '',\r\n\t\t\t\t\thamburger = '<span class=\"' + params.classes.hamburger + '--lines\"><span></span><span></span><span></span></span>';\r\n\r\n\t\t\t\tif (params.hamburger.title) {\r\n\t\t\t\t\tmTitle = '<span class=\"' + params.classes.hamburger + '--title\">'+ params.hamburger.title +'</span>';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (params.hamburger.body !== null) {\r\n\t\t\t\t\thamburger = params.hamburger.body;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._element.insertAdjacentHTML('afterbegin','<a href=\"#sidebar-nav\" class=\"' + params.classes.hamburger + '\" data-vg-toggle=\"sidebar\">' + mTitle + hamburger +'</a>');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем указатель переключателя\r\n\t\tif (params.toggle) {\r\n\t\t\tlet $dropdown_a = [...Selectors.findAll('.dropdown-mega > a, .dropdown > a', this._element)],\r\n\t\t\t\ttoggle = '<span class=\"toggle\">' + params.toggle + '</span>';\r\n\r\n\t\t\tif ($dropdown_a.length) {\r\n\t\t\t\t$dropdown_a.forEach(function (elem) {\r\n\t\t\t\t\tif (!elem.querySelector('.toggle') && !elem.closest('.dots')) {\r\n\t\t\t\t\t\telem.setAttribute('aria-expanded', 'false')\r\n\t\t\t\t\t\telem.insertAdjacentHTML('beforeend', toggle)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (params.collapse && Responsive.check(this) && params.placement !== 'vertical') {\r\n\t\t\tsetCollapse(this);\r\n\t\t}\r\n\r\n\t\tif ('afterInit' in this._params.callback) {\r\n\t\t\texecute(this._params.callback.afterInit, [this]);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Функция сворачивания\r\n\t\t * TODO Придумать что то с мега меню, которое уходит в подменю\r\n\t\t * TODO Так же есть косяки при ресайзе\r\n\t\t */\r\n\t\tfunction setCollapse(_this) {\r\n\t\t\tlet width_navigation_responsive = _this.navigation.clientWidth,\r\n\t\t\t\twidth_all_links_responsive = 0,\r\n\t\t\t\t$dots = Selectors.find('.dots', _this.navigation),\r\n\t\t\t\t_dots = getSVG('dots');\r\n\r\n\t\t\tif (_this.$links.length) {\r\n\t\t\t\tif ($dots) {\r\n\t\t\t\t\twidth_all_links_responsive = $dots.clientWidth\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet $a = Selectors.find('a', _this.$links[0]),\r\n\t\t\t\t\t\t$linkStyle = getComputedStyle($a),\r\n\t\t\t\t\t\tpaddingLeft = normalizeData($linkStyle.paddingLeft.slice(0, -2)),\r\n\t\t\t\t\t\tpaddingRight = normalizeData($linkStyle.paddingRight.slice(0, -2)),\r\n\t\t\t\t\t\tpadding = paddingLeft + paddingRight;\r\n\r\n\t\t\t\t\t// TODO не совсем верно, но мы точно знаем ширину точек в svg - 16px\r\n\t\t\t\t\twidth_all_links_responsive = padding + 16;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let $link of _this.$links) {\r\n\t\t\t\t\tlet width = $link.getBoundingClientRect().width;\r\n\t\t\t\t\twidth_all_links_responsive = width_all_links_responsive + width;\r\n\r\n\t\t\t\t\tif ((width_navigation_responsive) < width_all_links_responsive) {\r\n\t\t\t\t\t\t_this.movedLinks.push($link);\r\n\t\t\t\t\t\t$link.remove();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (_this.movedLinks.length) {\r\n\t\t\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t\t\t_this.navigation.insertBefore(_this.movedLinks[0], $dots)\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_this.navigation.appendChild(_this.movedLinks[0])\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_this.movedLinks.splice(0, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_this.movedLinks.length) {\r\n\t\t\t\t\tif (!$dots) {\r\n\t\t\t\t\t\t_this.navigation.insertAdjacentHTML('beforeend','<li class=\"dropdown dots\">' + '<a href=\"#\" aria-expanded=\"false\">'+ _dots +'</a></li>');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t$dots.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet $d = _this.navigation.querySelector('.dots');\r\n\t\t\t\tif ($d && _this.movedLinks.length) {\r\n\t\t\t\t\tlet $dropdown = $d.querySelector('ul');\r\n\t\t\t\t\tif ($dropdown) {\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet $dropdown = document.createElement('ul');\r\n\t\t\t\t\t\t$dropdown.classList.add('dropdown-content');\r\n\t\t\t\t\t\t$dropdown.classList.add('right');\r\n\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$d.appendChild($dropdown);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tlet target = relatedTarget.relatedTarget;\r\n\r\n\t\tif (!target || isDisabled(target)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.closest('.dropdown-content')) {\r\n\t\t\ttarget.classList.add('first');\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(target, EVENT_KEY_SHOW, { relatedTarget });\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tlet drop = Selectors.find('.dropdown-content', target),\r\n\t\t\tlink = target.firstElementChild;\r\n\r\n\t\tif (link) link.setAttribute('aria-expanded', 'true');\r\n\t\tdrop.classList.add(CLASS_NAME_SHOW);\r\n\t\ttarget.classList.add(CLASS_NAME_ACTIVE);\r\n\r\n\t\tsetDropPosition(drop)\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tdrop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(target, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, drop, true, 50);\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @param $drop\r\n\t\t */\r\n\t\tfunction setDropPosition($drop) {\r\n\t\t\tlet {width, right} = $drop.getBoundingClientRect(),\r\n\t\t\t\twindow_width = window.innerWidth;\r\n\r\n\t\t\tlet N_right = window_width - right - width;\r\n\r\n\t\t\t$drop.classList.remove('right');\r\n\t\t\t$drop.classList.remove('left');\r\n\r\n\t\t\tlet $parent = $drop.closest('li'),\r\n\t\t\t\t$ul = $parent.querySelectorAll('ul');\r\n\r\n\t\t\tif (N_right > width) {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('left');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('right');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thide(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet element = relatedTarget.relatedTarget;\r\n\r\n\t\tif ('elm' in relatedTarget && relatedTarget.elm) {\r\n\t\t\telement = relatedTarget.elm\r\n\t\t}\r\n\r\n\t\tif (element) {\r\n\t\t\tconst hideEvent = EventHandler.trigger(element, EVENT_KEY_HIDE);\r\n\t\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\t\telement.classList.remove(CLASS_NAME_ACTIVE);\r\n\r\n\t\t\tif (element.classList.contains('first')) {\r\n\t\t\t\telement.classList.remove('first');\r\n\t\t\t}\r\n\r\n\t\t\t[...Selectors.findAll('.' + CLASS_NAME_SHOW, element)].forEach(function (el, index) {\r\n\t\t\t\tel.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\t\t\tlet parent = el.closest('.dropdown');\r\n\t\t\t\tif (parent.classList.contains(CLASS_NAME_ACTIVE)) {\r\n\t\t\t\t\tparent.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet link = el.previousElementSibling;\r\n\t\t\t\tif (link) link.setAttribute('aria-expanded', 'false');\r\n\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tconst completeCallback = () => {\r\n\t\t\t\t\t\tel.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\t\t\tEventHandler.trigger(el, EVENT_KEY_HIDDEN, relatedTarget)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_this._queueCallback(completeCallback, el, true, 500);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * TODO если на странице несколько навигаций, то есть косяки\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGNav.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\r\n\t\tlet drops = Selectors.findAll('.dropdown', instance._navigation)\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\t[...drops].forEach(function (el) {\r\n\t\t\t\tlet currentElem = null;\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\t\tif (currentElem) return;\r\n\t\t\t\t\tVGNav.hideOpenDrops(event);\r\n\r\n\t\t\t\t\tlet target = event.target.closest('.dropdown');\r\n\t\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\t\tif (!instance.navigation.contains(target)) return;\r\n\t\t\t\t\tcurrentElem = target;\r\n\r\n\t\t\t\t\tlet relatedTarget = {\r\n\t\t\t\t\t\trelatedTarget: target\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinstance.show(relatedTarget);\r\n\t\t\t\t});\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\t\tlet relatedTarget = event.relatedTarget.closest('.dropdown'),\r\n\t\t\t\t\t\telm = currentElem;\r\n\r\n\t\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentElem = null;\r\n\t\t\t\t\tinstance.hide({relatedTarget: relatedTarget, elm: elm});\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\t\t\t\tif (!Manipulator.has(this, 'aria-expanded')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ('click' in instance._params.callback) {\r\n\t\t\t\t\texecute(instance._params.callback.click, [this]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tlet self = this.closest('.vg-nav'),\r\n\t\t\t\t\tisFirst = self.querySelector('.first');\r\n\r\n\t\t\t\tlet target = this.closest('.dropdown');\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (isDisabled(target) && !isVisible(target)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isFirst && this.closest('.first')) {\r\n\t\t\t\t\tif (target.classList.contains('active')) {\r\n\t\t\t\t\t\tinstance.hide({relatedTarget: target});\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t[...Selectors.findAll('.active', self)].forEach(function (el) {\r\n\t\t\t\t\t\tif (el && el !== target) {\r\n\t\t\t\t\t\t\tinstance.hide({relatedTarget: el})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinstance.show({relatedTarget: target});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst vgNavSidebar = document.getElementById('sidebar-nav');\r\n\t\tlet hamburger = instance._element.querySelector('.' + instance._params.classes.hamburger);\r\n\r\n\t\tif (vgNavSidebar && hamburger) {\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.show', function () {\r\n\t\t\t\thamburger.classList.add(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.hide', function () {\r\n\t\t\t\thamburger.classList.remove(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGNav.hideOpenDrops(event)\r\n\t}\r\n\r\n\tstatic hideOpenDrops(event) {\r\n\t\tconst openToggles = Selectors.findAll('.dropdown:not(.disabled):not(:disabled).active');\r\n\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGNav.getInstance(toggle.closest('.vg-nav'));\r\n\t\t\tif (!context) continue;\r\n\r\n\t\t\tif (event.target.closest('.first')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: toggle }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext.hide(relatedTarget)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEventHandler.on(window, EVENT_RESIZE_DATA_API, function (event) {\r\n\tconst instance = VGNav.getOrCreateInstance('.vg-nav', {});\r\n\tinstance.build();\r\n})\r\n\r\nexport default VGNav;","import {mergeDeepObject, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Класс Placement, определяет и устанавливает местоположение элемента на странице.\r\n * TODO класс не дописан\r\n */\r\n\r\nclass Placement {\r\n\tconstructor(arg = {}) {\r\n\t\tthis.params = mergeDeepObject({\r\n\t\t\telement: null,\r\n\t\t\tdrop: null\r\n\t\t}, arg);\r\n\t}\r\n\r\n\t_getPlacement() {\r\n\t\tconst _this = this;\r\n\t\tconst _parent = (self) => {\r\n\t\t\tlet parent = self.parentNode,\r\n\t\t\t\toverflow = getComputedStyle(parent).overflow;\r\n\r\n\t\t\tif (parent.tagName !== 'BODY') {\r\n\t\t\t\tif (overflow === 'visible') {\r\n\t\t\t\t\t_parent(parent)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn parent;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet isFixed = false, top, left,\r\n\t\t\tbounds = _this.params.drop.getBoundingClientRect(),\r\n\t\t\tparent = _this.params.element.getBoundingClientRect();\r\n\r\n\t\tif (_parent(_this.params.element)) {\r\n\t\t\tisFixed = true;\r\n\t\t\ttop = bounds.top;\r\n\t\t\tleft = bounds.left;\r\n\t\t} else {\r\n\t\t\tlet styles = getComputedStyle(_this.params.drop);\r\n\t\t\ttop = normalizeData(styles.top.slice(0, -2));\r\n\t\t\tleft = normalizeData(styles.left.slice(0, -2));\r\n\t\t}\r\n\r\n\t\tif ((bounds.left + bounds.width) > window.innerWidth) {\r\n\t\t\tleft = parent.width - bounds.width;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tisFixed: isFixed,\r\n\t\t\ttop: top,\r\n\t\t\tleft: left\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Placement;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {isDisabled, mergeDeepObject, noop} from \"../../../utils/js/functions\";\r\nimport Placement from \"../../../utils/js/components/placement\";\r\n\r\nconst NAME = 'dropdown';\r\nconst NAME_KEY = 'vg.dropdown';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst TARGET_CONTAINER = 'vg-dropdown-content';\r\nconst PARENT_CONTAINER = 'vg-dropdown';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"dropdown\"]';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYDOWN_DATA_API = `keydown.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\n\r\nclass VGDropdown extends BaseModule {\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tlet defaultParams = {\r\n\t\t\toffset: [0, 2],\r\n\t\t\tover: false,\r\n\t\t\tbackdrop: true,\r\n\t\t\toverflow: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tplacement: 'bottom',\r\n\t\t\tanimation: true,\r\n\t\t\ttimeoutAnimation: 350,\r\n\t\t\thover: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ('offset' in params && Array.isArray(params.offset)) {\r\n\t\t\tdefaultParams.offset = params.offset;\r\n\t\t}\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject(defaultParams, params));\r\n\r\n\t\tthis._parent = this._element.parentNode;\r\n\t\tthis._drop = Selectors.find('.' + TARGET_CONTAINER, this._parent);\r\n\t\tthis._isPlacement = false;\r\n\r\n\t\tif (this._params.animation === false) {\r\n\t\t\tthis._params.timeoutAnimation = 10\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\treturn this._isShown() ? this.hide() : this.show();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tif (isDisabled(this._element) || this._isShown()) return;\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, relatedTarget)\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.on(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._route();\r\n\r\n\t\tthis._element.setAttribute('aria-expanded', true);\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._drop.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._setPlacement();\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._drop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._drop, true, 50);\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element) || !this._isShown()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tthis._completeHide(relatedTarget);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\treturn super.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_completeHide(relatedTarget) {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE, relatedTarget)\r\n\t\tif (hideEvent.defaultPrevented) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._drop.classList.remove(CLASS_NAME_FADE);\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\tthis._element.setAttribute('aria-expanded', 'false');\r\n\r\n\t\tconst completeCallback = () => {\r\n\t\t\tthis._drop.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN, relatedTarget);\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallback, this._parent, true, this._params.timeoutAnimation);\r\n\t}\r\n\r\n\t// TODO class Placement isn't done\r\n\t_setPlacement() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._isPlacement) {\r\n\t\t\tlet placement = new Placement({\r\n\t\t\t\telement: this._parent,\r\n\t\t\t\tdrop: this._drop\r\n\t\t\t})._getPlacement();\r\n\r\n\t\t\tif (placement.isFixed) {\r\n\t\t\t\t_this._drop.style.position = 'fixed';\r\n\t\t\t\t_this._drop.style.transform = 'translateY(-20%)'; // todo this is костыль поfixить\r\n\t\t\t}\r\n\r\n\t\t\t_this._drop.style.left = placement.left + 'px';\r\n\t\t\t_this._drop.style.top = placement.top + 'px';\r\n\t\t}\r\n\r\n\t\tif (_this._params.offset) {\r\n\t\t\t_this._drop.style.paddingTop = _this._params.offset[1] + 'px';\r\n\t\t\t_this._drop.style.paddingRight = _this._params.offset[0] + 'px';\r\n\t\t}\r\n\r\n\t\t_this._isPlacement = true;\r\n\t}\r\n\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(element, params);\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\tlet currentElem = null;\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\tif (currentElem) return;\r\n\t\t\t\tVGDropdown.hideOpenToggles(event);\r\n\r\n\t\t\t\tlet target = event.target.closest('.' + PARENT_CONTAINER);\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (!instance._parent.contains(target)) return;\r\n\t\t\t\tcurrentElem = target;\r\n\t\t\t\tinstance.show();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\tlet relatedTarget = event.relatedTarget;\r\n\r\n\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentElem = null;\r\n\t\t\t\tinstance._completeHide({relatedTarget: instance._element});\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_DATA_TOGGLE, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYDOWN_DATA_API, '.' + TARGET_CONTAINER, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(element, EVENT_CLICK_DATA_API, function (event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tinstance.toggle();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic hideOpenToggles(event) {\r\n\t\tconst openToggles = Selectors.findAll('[data-vg-toggle=\"dropdown\"]:not(.disabled):not(:disabled).show');\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGDropdown.getInstance(toggle);\r\n\t\t\tif (!context) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (event.target.closest('.' + TARGET_CONTAINER) === context._drop) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst composedPath = event.composedPath();\r\n\t\t\tif (composedPath.includes(context._element)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: context._element }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext._completeHide(relatedTarget)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic keydownHandler(event) {\r\n\t\tconst isInput = /input|textarea/i.test(event.target.tagName)\r\n\t\tconst isEscapeEvent = event.key === 'Escape'\r\n\t\tconst isUpOrDownEvent = ['ArrowUp', 'ArrowDown'].includes(event.key)\r\n\r\n\t\tif (!isUpOrDownEvent && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isInput && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tevent.preventDefault()\r\n\r\n\t\tconst getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\r\n\t\t\tthis : (Selectors.find(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\r\n\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(getToggleButton)\r\n\r\n\t\tif (isUpOrDownEvent) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.show()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (instance._isShown()) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.hide()\r\n\t\t\tgetToggleButton.focus()\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGDropdown.hideOpenToggles(event)\r\n\t}\r\n}\r\n\r\nexport default VGDropdown;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap util/scrollBar.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n */\r\n\r\nimport {Manipulator} from \"../dom/manipulator\";\r\nimport {isElement} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\n\r\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\r\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\r\nconst PROPERTY_PADDING = 'padding-right'\r\nconst PROPERTY_MARGIN = 'margin-right'\r\n\r\n/**\r\n * Class definition\r\n */\r\n\r\nclass ScrollBarHelper {\r\n\tconstructor() {\r\n\t\tthis._element = document.body\r\n\t}\r\n\r\n\t// Public\r\n\tgetWidth() {\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\r\n\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst width = this.getWidth()\r\n\t\tthis._disableOverFlow()\r\n\t\t// give padding to element to balance the hidden scrollbar width\r\n\t\tthis._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\t// trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\r\n\t\tthis._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\tthis._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis._resetElementAttributes(this._element, 'overflow')\r\n\t\tthis._resetElementAttributes(this._element, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\r\n\t}\r\n\r\n\tisOverflowing() {\r\n\t\treturn this.getWidth() > 0\r\n\t}\r\n\r\n\t// Private\r\n\t_disableOverFlow() {\r\n\t\tthis._saveInitialAttribute(this._element, 'overflow')\r\n\t\tthis._element.style.overflow = 'hidden'\r\n\t}\r\n\r\n\t_setElementAttributes(selector, styleProperty, callback) {\r\n\t\tconst scrollbarWidth = this.getWidth()\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tif (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tthis._saveInitialAttribute(element, styleProperty)\r\n\t\t\tconst calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_saveInitialAttribute(element, styleProperty) {\r\n\t\tconst actualValue = element.style.getPropertyValue(styleProperty)\r\n\t\tif (actualValue) {\r\n\t\t\tManipulator.get(element, styleProperty, actualValue)\r\n\t\t}\r\n\t}\r\n\r\n\t_resetElementAttributes(selector, styleProperty) {\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tconst value = Manipulator.get(element, styleProperty)\r\n\t\t\t// We only want to remove the property if the value is `null`; the value can also be zero\r\n\t\t\tif (value === null) {\r\n\t\t\t\telement.style.removeProperty(styleProperty)\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tManipulator.remove(element, styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, value)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_applyManipulationCallback(selector, callBack) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\tcallBack(selector)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const sel of Selectors.findAll(selector, this._element)) {\r\n\t\t\tcallBack(sel)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default ScrollBarHelper","import BaseModule from \"../../base-module\";\r\nimport ScrollBarHelper from \"../../../utils/js/components/scrollbar\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport {execute, isDisabled, isRTL, isVisible, mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'modal';\r\nconst NAME_KEY = 'vg.modal';\r\n\r\nconst ESCAPE_KEY = 'Escape';\r\n\r\nconst OPEN_SELECTOR = '.vg-modal.show';\r\nconst SELECTOR_DIALOG = '.vg-modal-dialog';\r\nconst SELECTOR_MODAL_BODY = '.vg-modal-body';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"modal\"]';\r\n\r\nconst CLASS_NAME_OPEN = 'vg-modal-open';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_STATIC = 'vg-modal-static'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_RESIZE = `${NAME_KEY}.resize`\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_MOUSEDOWN_DISMISS = `mousedown.dismiss${NAME_KEY}`\r\nconst EVENT_KEY_CLICK_DISMISS = `click.dismiss${NAME_KEY}`\r\n\r\nclass VGModal extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\tfocus: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tfields: [],\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tname: ['animate__backInUp', 'animate__backOutUp'], // до / после не более двух элементов\r\n\t\t\t\tduration: 1000, // ms\r\n\t\t\t\tdelay: 1000, // ms\r\n\t\t\t\trepeat: 1\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-modal',\r\n\t\t\t\tdialog: 'vg-modal-dialog',\r\n\t\t\t\tcontent: 'vg-modal-content',\r\n\t\t\t\theader: 'vg-modal-header',\r\n\t\t\t\ttitle: 'vg-modal-title',\r\n\t\t\t\tbody: 'vg-modal-body',\r\n\t\t\t\tfooter: 'vg-modal-footer',\r\n\t\t\t\tanimated: 'animate__animated'\r\n\t\t\t}\r\n\t\t}, params));\r\n\t\tthis._button = null;\r\n\t\tthis._dialog = Selectors.find(SELECTOR_DIALOG, this._element);\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = false;\r\n\t\tthis._scrollBar = new ScrollBarHelper();\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tstatic init(element, params, callback) {\r\n\t\tVGModal.build(element, params, callback);\r\n\t}\r\n\r\n\tstatic build(id, params, callback) {\r\n\t\tif (typeof id !== \"string\") return;\r\n\r\n\t\tlet _element = document.createElement('div');\r\n\t\t_element.classList.add('vg-modal', 'fade');\r\n\t\t_element.id = id;let dialog = document.createElement('div');\r\n\t\tdialog.classList.add('vg-modal-dialog');\r\n\r\n\t\tlet content = document.createElement('div');\r\n\t\tcontent.classList.add('vg-modal-content');\r\n\r\n\t\tlet btnClose = document.createElement('button');\r\n\t\tManipulator.set(btnClose, 'type', 'button');\r\n\t\tManipulator.set(btnClose, 'data-vg-dismiss', 'modal');\r\n\t\tManipulator.set(btnClose, 'data-vg-target', '#' + id);\r\n\t\tManipulator.set(btnClose, 'aria-label', 'close');\r\n\t\tbtnClose.classList.add('vg-btn-close');\r\n\r\n\t\tcontent.append(btnClose);\r\n\r\n\t\tlet body = document.createElement('div');\r\n\t\tbody.classList.add('vg-modal-body');\r\n\r\n\t\tcontent.append(body);\r\n\t\tdialog.append(content);\r\n\t\t_element.append(dialog);\r\n\r\n\t\tdocument.body.append(_element);\r\n\r\n\t\tconst modal = VGModal.getOrCreateInstance(_element, params);\r\n\r\n\t\texecute(callback, [modal]);\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tthis._route();\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = true;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tthis._scrollBar.hide();\r\n\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tthis._addFieldsInModal(relatedTarget);\r\n\t\tthis._adjustDialog();\r\n\r\n\t\tBackdrop.show(() => this._showElement(relatedTarget));\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (!this._isShown || this._isTransitioning) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\tthis._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\r\n\t}\r\n\r\n\t_hideModal() {\r\n\t\tthis._element.style.display = 'none';\r\n\t\tthis._element.setAttribute('aria-hidden', true);\r\n\t\tthis._element.removeAttribute('aria-modal');\r\n\t\tthis._element.removeAttribute('role');\r\n\t\tthis._isTransitioning = false;\r\n\r\n\t\tBackdrop.hide(() => {\r\n\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\tthis._resetAdjustments();\r\n\t\t\tthis._scrollBar.reset();\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t})\r\n\t}\r\n\r\n\t_showElement(relatedTarget) {\r\n\t\tif (!document.body.contains(this._element)) {\r\n\t\t\tdocument.body.append(this._element);\r\n\t\t}\r\n\r\n\t\tthis._element.style.display = 'block';\r\n\t\tthis._element.removeAttribute('aria-hidden');\r\n\t\tthis._element.setAttribute('aria-modal', true);\r\n\t\tthis._element.setAttribute('role', 'dialog');\r\n\t\tthis._element.scrollTop = 0;\r\n\r\n\t\tconst modalBody = Selectors.find(SELECTOR_MODAL_BODY, this._dialog);\r\n\t\tif (modalBody) {\r\n\t\t\tmodalBody.scrollTop = 0;\r\n\t\t}\r\n\r\n\t\treflow(this._element);\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW)\r\n\r\n\t\tconst transitionComplete = () => {\r\n\t\t\tif (this._params.focus) {\r\n\t\t\t\t// TODO сделать фокус\r\n\t\t\t}\r\n\r\n\t\t\tthis._isTransitioning = false\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, {\r\n\t\t\t\trelatedTarget\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(transitionComplete, this._dialog, this._isAnimated())\r\n\t}\r\n\r\n\t_isAnimated() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_FADE)\r\n\t}\r\n\r\n\t_adjustDialog() {\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\r\n\t\tconst scrollbarWidth = this._scrollBar.getWidth()\r\n\t\tconst isBodyOverflowing = scrollbarWidth > 0\r\n\r\n\t\tif (isBodyOverflowing && !isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingLeft' : 'paddingRight'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\r\n\t\tif (!isBodyOverflowing && isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingRight' : 'paddingLeft'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\t}\r\n\r\n\t_resetAdjustments() {\r\n\t\tthis._element.style.paddingLeft = ''\r\n\t\tthis._element.style.paddingRight = ''\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(this._element, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== ESCAPE_KEY) return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._triggerBackdropTransition();\r\n\t\t})\r\n\r\n\t\tEventHandler.on(window, EVENT_KEY_RESIZE, () => {\r\n\t\t\tif (this._isShown && !this._isTransitioning) this._adjustDialog();\r\n\t\t})\r\n\r\n\t\tEventHandler.on(this._element, EVENT_KEY_MOUSEDOWN_DISMISS, event => {\r\n\t\t\tEventHandler.one(this._element, EVENT_KEY_CLICK_DISMISS, event2 => {\r\n\t\t\t\tif (this._element !== event.target || this._element !== event2.target) return;\r\n\r\n\t\t\t\tif (this._params.backdrop === 'static') {\r\n\t\t\t\t\tthis._triggerBackdropTransition();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._params.backdrop) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\t_triggerBackdropTransition() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\r\n\t\tconst initialOverflowY = this._element.style.overflowY;\r\n\r\n\t\tif (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) return;\r\n\t\tif (!isModalOverflowing) this._element.style.overflowY = 'hidden';\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_STATIC);\r\n\r\n\t\tthis._queueCallback(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_STATIC);\r\n\t\t\tthis._queueCallback(() => {\r\n\t\t\t\tthis._element.style.overflowY = initialOverflowY;\r\n\t\t\t}, this._dialog);\r\n\t\t}, this._dialog);\r\n\r\n\t\tthis._element.focus();\r\n\t}\r\n\r\n\t_addFieldsInModal(relatedTarget) {\r\n\t\tthis._params = this._getParams(relatedTarget, this._params);\r\n\r\n\t\tif (!this._params.fields.length) return;\r\n\r\n\t\tthis._params.fields.forEach(function (item) {\r\n\t\t\tif (!'name' in item && !'value' in item) return;\r\n\r\n\t\t\tlet elements = Selectors.findAll('[data-' + item.name + ']');\r\n\t\t\tif (!elements.length) return;\r\n\r\n\t\t\tfor (const elm of elements) {\r\n\t\t\t\tswitch (elm.tagName) {\r\n\t\t\t\t\tcase 'INPUT': elm.value = item.value; break;\r\n\t\t\t\t\tcase 'IMG': Manipulator.set(elm, 'src', item.value); break;\r\n\t\t\t\t\tdefault: elm.innerHTML = item.value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGModal);\r\n\r\n\r\n/**\r\n * Data API implementation\r\n */\r\n\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) event.preventDefault();\r\n\r\n\tEventHandler.one(target, EVENT_KEY_SHOW, showEvent => {\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\t\tif (isVisible(this)) this.focus();\r\n\t\t});\r\n\t});\r\n\r\n\tconst alreadyOpen = Selectors.find(OPEN_SELECTOR);\r\n\tif (alreadyOpen) VGModal.getInstance(alreadyOpen).hide();\r\n\r\n\tconst data = VGModal.getOrCreateInstance(target);\r\n\tdata.toggle(this);\r\n})\r\n\r\nexport default VGModal;\r\n","import BaseModule from \"../../base-module\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport VGModal from \"../../vgmodal/js/vgmodal\";\r\nimport {isObject, makeRandomString, mergeDeepObject, normalizeData} from \"../../../utils/js/functions\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport VGCollapse from \"../../vgcollapse/js/vgcollapse\";\r\nimport {getSVG} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'form-sender';\r\nconst NAME_KEY = 'vg.fs';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_SUCCESS = 'vg.fs.success';\r\nconst EVENT_KEY_ERROR = 'vg.fs.error';\r\nconst EVENT_KEY_BEFORE = 'vg.fs.before';\r\n\r\nconst EVENT_SUBMIT_DATA_API = `submit.${NAME_KEY}.data.api`;\r\n\r\nclass VGFormSender extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tredirect: '',\r\n\t\t\tvalidate: false,\r\n\t\t\tsubmit: false,\r\n\t\t\tfields: [],\r\n\t\t\talert: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\ttype: 'modal'\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-form-sender',\r\n\t\t\t\talertCollapse: 'vg-form-sender-collapse',\r\n\t\t\t\talertModal: 'vg-form-sender-modal',\r\n\t\t\t\tvalidation: 'needs-validation',\r\n\t\t\t\twasValidate: 'was-validated'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._params.ajax.route = Manipulator.get(this._element, 'action').toLowerCase();\r\n\t\tthis._params.ajax.method = Manipulator.get(this._element, 'method').toLowerCase();\r\n\t\tthis._button = Selectors.find('[type=\"submit\"]', this._element) || Selectors.find('[form=\"' + this._element.id + '\"]') || null;\r\n\r\n\t\tthis._params.isBtnText = Manipulator.get(this._element, 'data-btn-text') !== 'false';\r\n\t\tthis._params.isJsonParse = Manipulator.get(this._element, 'data-json-parse') !== 'false';\r\n\t\tthis._params.isShowPass = Manipulator.get(this._element, 'data-show-pass') === 'true';\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tthis._element.classList.add(this._params.classes.general);\r\n\r\n\t\tif (this._params.validate) {\r\n\t\t\tManipulator.set(this._element, 'novalidate', '');\r\n\t\t\tthis._element.classList.add(this._params.classes.validation);\r\n\t\t}\r\n\r\n\t\t// TODO сделать добавление глаза если есть ввод пароля\r\n\r\n\t\treturn this\r\n\t}\r\n\r\n\trequest(data, event) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._alertBefore();\r\n\r\n\t\t_this._params.ajax.data = data;\r\n\r\n\t\t_this._route(function (status, data) {\r\n\t\t\t_this._element.classList.remove('was-validated');\r\n\r\n\t\t\tif (_this._params.alert.enabled) {\r\n\t\t\t\tif (typeof status === 'string' && status === 'error') {\r\n\t\t\t\t\t_this._alertError(event, data);\r\n\t\t\t\t} else if (typeof status === 'string' && status === 'success') {\r\n\t\t\t\t\t_this._alertSuccess(event, data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (_this._params.redirect) {\r\n\t\t\t\twindow.location.href = _this._params.redirect;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_alertBefore() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t[...document.getElementsByClassName(_this._params.classes.alertCollapse)].forEach(function (element) {\r\n\t\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_this._statusButton('before');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_BEFORE, _this);\r\n\t}\r\n\r\n\t_alertError(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'error');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_ERROR, [event, _this, data]);\r\n\t}\r\n\r\n\t_alertSuccess(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'success');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_SUCCESS, [event, _this, data]);\r\n\t}\r\n\r\n\t_statusButton(status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._button) return;\r\n\r\n\t\tlet btnSubmitText = _this._button,\r\n\t\t\tbtnText = {\r\n\t\t\tsend: 'Отправляем...',\r\n\t\t\ttext: 'Отправить'\r\n\t\t};\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-spinner') && status === 'before') {\r\n\t\t\t_this._button.insertAdjacentHTML('afterbegin', '<span class=\"spinner-border spinner-border-sm me-2\"></span>');\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text')) {\r\n\t\t\tbtnText.text = Manipulator.get(_this._button, 'data-text');\r\n\t\t} else {\r\n\t\t\tlet $btnText = _this._button.querySelector('[data-text]');\r\n\t\t\tif ($btnText) {\r\n\t\t\t\tbtnText.text = Manipulator.get($btnText, 'data-text');\r\n\t\t\t\tbtnSubmitText = $btnText;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text-send')) {\r\n\t\t\tbtnText.send = Manipulator.get(_this._button, 'data-text-send');\r\n\t\t} else {\r\n\t\t\tlet $btnTextSend = _this._button.querySelector('[data-text-send]');\r\n\t\t\tif ($btnTextSend) {\r\n\t\t\t\tbtnText.send = Manipulator.get($btnTextSend, 'data-text-send');\r\n\t\t\t\tbtnSubmitText = $btnTextSend;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (status === 'before') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.send;\r\n\t\t\t}\r\n\t\t\tManipulator.set(_this._button,'disabled', 'disabled');\r\n\t\t}\r\n\r\n\t\tif (status === 'after') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.text;\r\n\t\t\t}\r\n\t\t\tManipulator.remove(_this._button,'disabled');\r\n\r\n\t\t\tlet spinner = _this._button.querySelector('.spinner-border');\r\n\t\t\tif (spinner) spinner.remove();\r\n\t\t}\r\n\t}\r\n\r\n\t_jsonParse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.isJsonParse && typeof data === 'string') {\r\n\t\t\tlet parserData = {};\r\n\r\n\t\t\ttry {\r\n\t\t\t\tparserData = JSON.parse(data);\r\n\t\t\t\t_this.alert(parserData, status);\r\n\t\t\t} catch (e) {\r\n\t\t\t\t_this.alert(data, status);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_this.alert(data, status);\r\n\t\t}\r\n\t}\r\n\r\n\talert(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (('code' in data) && data.code && data.code === 200) {\r\n\t\t\t\tif ('response' in data && data.response) {\r\n\t\t\t\t\tlet response = normalizeData(data.response);\r\n\t\t\t\t\tif (typeof response === 'string') {\r\n\t\t\t\t\t\tif (response.indexOf(\"Parse error\") !== -1 || response.indexOf(\"syntax error\") !== -1) {\r\n\t\t\t\t\t\t\tstatus = 'error';\r\n\t\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\ttext: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif ('errors' in response && normalizeData(response.errors)) {\r\n\t\t\t\t\t\t\tstatus = normalizeData(response.errors) ? 'error' : 'success';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!_this._params.alert.enabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'modal') {\r\n\t\t\t_this._alertModal(data, status)\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t_this._alertCollapse(data, status)\r\n\t\t}\r\n\t}\r\n\r\n\t_alertModal(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\t// Есть ли открытые модалки, закрываем\r\n\t\t[...document.getElementsByClassName('modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tlet mBS = bootstrap.Modal.getOrCreateInstance(element);\r\n\t\t\t\tmBS.hide();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t[...document.getElementsByClassName('vg-modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tconst mVG = VGModal.getOrCreateInstance(element);\r\n\t\t\t\tmVG.hide();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet $modal = Selectors.find('.' + _this._params.classes.alertModal);\r\n\t\tif ($modal) $modal.remove();\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tlet id = _this._params.classes.general + '-' + makeRandomString();\r\n\t\t\tVGModal.init(id, {\r\n\t\t\t\tclasses: {\r\n\t\t\t\t\talert: _this._params.classes.alertModal\r\n\t\t\t\t}\r\n\t\t\t}, function (self) {\r\n\t\t\t\tlet element = self._element;\r\n\t\t\t\telement.classList.add(_this._params.classes.alertModal);\r\n\r\n\t\t\t\tlet $body = Selectors.find('.vg-modal-body', element);\r\n\t\t\t\tif ($body) $body.append(_this.setDataRelationStatus(element, status, data, 'modal'));\r\n\r\n\t\t\t\tself.toggle();\r\n\t\t\t});\r\n\t\t}, 175)\r\n\t}\r\n\r\n\t_alertCollapse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tlet $collapse = Selectors.find('.' + _this._params.classes.alertCollapse);\r\n\t\tif (!$collapse) {\r\n\t\t\t$collapse = document.createElement('div');\r\n\t\t\t$collapse.classList.add(_this._params.classes.alertCollapse);\r\n\t\t\t$collapse.classList.add('vg-collapse');\r\n\t\t\t$collapse.id = _this._params.classes.general + '-' + makeRandomString();\r\n\t\t\t$collapse.append(_this.setDataRelationStatus($collapse, status, data, 'collapse'));\r\n\r\n\t\t\t_this._element.prepend($collapse);\r\n\t\t}\r\n\r\n\t\tVGCollapse.getOrCreateInstance($collapse, {toggle: false}).toggle();\r\n\t}\r\n\r\n\tsetDataRelationStatus($element, status, data, type) {\r\n\t\tlet $alert = Selectors.find('.vg-alert-' + status, $element);\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (status === 'error') {\r\n\t\t\t\tif ('code' in data && data.code !== 200) {\r\n\t\t\t\t\tif ('text' in data && !data.text) {\r\n\t\t\t\t\t\tdata.text = 'Something went wrong, please repeat later';\r\n\r\n\t\t\t\t\t\tswitch (data.code) {\r\n\t\t\t\t\t\t\tcase 400:\r\n\t\t\t\t\t\t\t\tdata.text = 'Bad Request'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 401:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 413:\r\n\t\t\t\t\t\t\t\tdata.text = 'Forbidden'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 404:\r\n\t\t\t\t\t\t\t\tdata.text = 'Not Found'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 422:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unprocessable Entity'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\t\t\tdata.text = 'Internal Server Error'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 504:\r\n\t\t\t\t\t\t\t\tdata.text = 'Gateway Timeout'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ('response' in data) {\r\n\t\t\t\tlet response = normalizeData(data.response), title = '', txt = '', code = '';\r\n\t\t\t\tif (typeof response !== 'string') {\r\n\t\t\t\t\tif (!('view' in response)) {\r\n\t\t\t\t\t\tif ('title' in response) title = response.title;\r\n\t\t\t\t\t\tif (status === 'error' && data.code !== 200) {\r\n\t\t\t\t\t\t\tcode = ' ' + data.text + ' (' + data.code + ')';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttxt += '<h4 class=\"vg-alert-content--title\">' + title + code + '</h4>';\r\n\r\n\t\t\t\t\t\tif ('message' in response) {\r\n\t\t\t\t\t\t\ttxt += '<div class=\"vg-alert-content--message\">' + response.message + '</div>'\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ('errors' in response) {\r\n\t\t\t\t\t\t\tlet errors = normalizeData(response.errors) || null;\r\n\t\t\t\t\t\t\tif (isObject(errors)) {\r\n\t\t\t\t\t\t\t\tfor (const error in errors) {\r\n\t\t\t\t\t\t\t\t\tif (Array.isArray(errors[error])) {\r\n\t\t\t\t\t\t\t\t\t\terrors[error].forEach(function (t) {\r\n\t\t\t\t\t\t\t\t\t\t\ttxt += '<div>'+ t +'</div>';\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\ttxt = '<div>'+ errors[error] +'</div>';\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\tview: txt\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdata.view = response;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!$alert) {\r\n\t\t\t$alert = document.createElement('div');\r\n\t\t\t$alert.classList.add('vg-alert', 'vg-alert-' + status, 'vg-alert-' + type);\r\n\r\n\t\t\tlet content = document.createElement('div');\r\n\t\t\tcontent.classList.add('vg-alert-content');\r\n\r\n\t\t\tlet icon = document.createElement('div');\r\n\t\t\ticon.classList.add('vg-alert-content--icon');\r\n\r\n\t\t\tlet i = document.createElement('i');\r\n\t\t\ti.innerHTML = getSVG(status);\r\n\r\n\t\t\ticon.append(i);\r\n\t\t\tcontent.append(icon);\r\n\r\n\t\t\tlet text = document.createElement('div');\r\n\t\t\ttext.classList.add('vg-alert-content--text');\r\n\t\t\ttext.innerHTML = data.view;\r\n\r\n\t\t\tcontent.append(text);\r\n\t\t\t$alert.append(content);\r\n\t\t} else {\r\n\t\t\tlet text = Selectors.find('.vg-alert-content--text', $alert);\r\n\t\t\ttext.innerHTML = data.view;\r\n\t\t}\r\n\r\n\t\treturn $alert;\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGFormSender.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\t}\r\n}\r\n\r\nEventHandler.on(document, EVENT_SUBMIT_DATA_API, function (event) {\r\n\tif (!Manipulator.has(event.target, 'data-vgformsender')) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst instance = VGFormSender.getOrCreateInstance(event.target, {});\r\n\tif (!instance) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (instance._params.validate) {\r\n\t\tif (!instance._element.checkValidity()) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\tinstance._element.classList.add(instance._params.classes.wasValidate);\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tconst collectData = function(data, fields) {\r\n\t\tfor (let name in fields) {\r\n\t\t\tif (typeof fields[name] === 'object') {\r\n\t\t\t\tfor (let key in fields[name]) {\r\n\t\t\t\t\tlet arr = Object.keys(fields[name][key]).map(function (i) {\r\n\t\t\t\t\t\treturn fields[name][key][i];\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdata.append(name, arr);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdata.append(name, fields[name]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tif (!instance._params.submit) {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tlet data = new FormData(instance._element);\r\n\r\n\t\t// TODO доделать\r\n\t\t/*if (Array.isArray(instance._params.ajax.fields) && instance._params.ajax.fields.length) {\r\n\t\t\tdata = collectData(data, instance._params.ajax.fields);\r\n\t\t}*/\r\n\r\n\t\treturn instance.request(data, event);\r\n\t}\r\n})\r\n\r\nexport default VGFormSender;","import BaseModule from \"../../base-module\";\r\nimport {execute, isDisabled, isVisible, mergeDeepObject, noop} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'rollup';\r\nconst NAME_KEY = 'vg.rollup';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_HIDE = 'd-none';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"rollup\"]'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGRollup extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\r\n\t\t}, params));\r\n\r\n\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGRollup.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\t}\r\n\r\n\tbuild() {\r\n\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\tif (!target) return;\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\r\n\tconst data = VGRollup.getOrCreateInstance(target)\r\n\tdata.toggle(this);\r\n});\r\n\r\n\r\nexport default VGRollup;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isEmptyObj","isElement","object","isObject","nodeType","isDisabled","element","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","isVisible","getClientRects","length","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","normalizeData","Number","toString","JSON","parse","decodeURIComponent","mergeDeepObject","objects","reduce","prev","keys","forEach","pVal","oVal","Array","isArray","concat","execute","possibleCallback","args","defaultValue","TRANSITION_END","reflow","offsetHeight","noop","makeRandomString","result","counter","charAt","Math","floor","characters","random","isRTL","document","documentElement","dir","getSelector","selector","hrefAttribute","includes","startsWith","split","trim","map","sel","window","CSS","escape","replace","match","id","parseSelector","join","Selectors","find","Element","querySelector","findAll","container","querySelectorAll","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","elementMap","Map","set","instance","has","instanceMap","size","console","error","from","remove","delete","Manipulator","nameAttribute","isRemoveDataName","elmBase","attributes","arr","filter","at","test","name","v","slice","getAttributeNames","acc","setAttribute","removeAttribute","constructor","params","this","_params","merge","fromElement","mParams","indexOf","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","typeEvent","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","handlers","previousFunction","domElements","target","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","meta","configurable","on","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","evt","Event","bubbles","cancelable","dispatchEvent","getSVG","success","waiting","dots","cross","dismissTrigger","module","method","clickEvent","EVENT_KEY","NAME","tagName","preventDefault","getOrCreateInstance","Ajax","x","XMLHttpRequest","xhr","versions","i","ActiveXObject","e","send","url","callback","data","async","undefined","open","setRequestHeader","onreadystatechange","readyState","status","text","statusText","response","responseText","code","query","push","encodeURIComponent","post","_element","Error","Data","NAME_KEY","_getParams","Params","dispose","propertyName","getOwnPropertyNames","_route","_this","$content","setData","innerHTML","ajax","route","loader","_dismissElement","button","insertAdjacentHTML","_queueCallback","isAnimated","timeOutMs","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","setTimeout","triggerTransitionEnd","executeAfterTransition","getInstance","DATA_KEY","append","body","style","paddingRight","documentWidth","clientWidth","abs","innerWidth","getWidth","overflow","destroy","CLASS_NAME","CLASS_NAME_FADE","Backdrop","show","_append","hide","_destroy","backdrop","createElement","add","Overflow","CLASS_NAME_SHOW","EVENT_KEY_HIDE","EVENT_KEY_HIDDEN","EVENT_KEY_SHOW","EVENT_KEY_SHOWN","EVENT_KEY_KEYDOWN_DISMISS","EVENT_KEY_HIDE_PREVENTED","EVENT_KEY_CLICK_DATA_API","VGSidebar","BaseModule","super","keyboard","_addEventListeners","toggle","_isShown","defaultPrevented","completeCallBack","completeCallback","alreadyOpen","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE","VGCollapse","parent","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","activeChildren","_getFirstLevelChildren","activeInstance","height","complete","getBoundingClientRect","triggerArray","isOpen","_changeStateButton","children","selected","breakpoints","xs","sm","md","lg","xl","xxl","xxxl","check","define","checkMobileOrTablet","a","navigator","userAgent","vendor","opera","windowWidth","responsive_size","_checkResponsiveClass","point","loc","current_responsive_size","classes","XXXL","XXL","XL","LG","MD","SM","XS","CLASS_NAME_ACTIVE","EVENT_MOUSEOVER_DATA_API","EVENT_MOUSEOUT_DATA_API","EVENT_CLICK_DATA_API","EVENT_KEYUP_DATA_API","EVENT_RESIZE_DATA_API","VGNav","breakpoint","placement","hamburgerActive","hamburgerAlways","hamburger","wrapper","active","expand","cloned","hover","flip","position","collapse","enable","always","title","animation","timeoutAnimation","_navigation","navigation","movedLinks","$links","el","elm","build","Responsive","mTitle","$dropdown_a","width_navigation_responsive","width_all_links_responsive","$dots","_dots","$a","$linkStyle","paddingLeft","$link","width","insertBefore","appendChild","splice","$d","$dropdown","link","prepend","setCollapse","afterInit","drop","firstElementChild","$drop","right","N_right","$ul","$el","setDropPosition","index","previousElementSibling","init","drops","currentElem","hideOpenDrops","clearDrops","click","self","isFirst","vgNavSidebar","getElementById","openToggles","context","arg","_getPlacement","_parent","top","left","isFixed","bounds","styles","TARGET_CONTAINER","EVENT_KEYDOWN_DATA_API","VGDropdown","defaultParams","offset","over","_drop","_isPlacement","_setPlacement","_completeHide","Placement","transform","paddingTop","hideOpenToggles","keydownHandler","composedPath","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","matches","stopPropagation","focus","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_OPEN","CLASS_NAME_STATIC","EVENT_KEY_RESIZE","EVENT_KEY_MOUSEDOWN_DISMISS","EVENT_KEY_CLICK_DISMISS","VGModal","fields","duration","delay","repeat","general","dialog","content","header","footer","animated","_button","_dialog","_scrollBar","ScrollBarHelper","btnClose","_addFieldsInModal","_adjustDialog","_showElement","_hideModal","_isAnimated","display","_resetAdjustments","scrollTop","modalBody","transitionComplete","isModalOverflowing","scrollHeight","clientHeight","isBodyOverflowing","property","_triggerBackdropTransition","event2","initialOverflowY","overflowY","item","elements","showEvent","EVENT_SUBMIT_DATA_API","VGFormSender","redirect","validate","submit","alert","enabled","alertCollapse","alertModal","validation","wasValidate","toLowerCase","isBtnText","isJsonParse","isShowPass","request","_alertBefore","_alertError","_alertSuccess","location","href","getElementsByClassName","_statusButton","_jsonParse","btnSubmitText","btnText","$btnText","$btnTextSend","spinner","parserData","message","errors","_alertModal","_alertCollapse","bootstrap","Modal","$modal","$body","setDataRelationStatus","$collapse","$element","$alert","txt","t","view","icon","checkValidity","FormData","VGRollup"],"sourceRoot":""}
|