New:Socket for Asana Is Now Available.Learn more
Get Started

@topvisor/ui

Package Overview
Dependencies
Maintainers
2
Versions
412
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@topvisor/ui - npm Package Compare versions

Comparing version
1.5.8-dialogShadow.0
to
1.5.8-topBanner.0
+2
.chunks/app-BaHwxbWz.amd.js
var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`../utils/dom.amd`,`./worker-D28QqQ45.amd`,`./utils-B1P0BzZ1.amd`,`../utils/route.amd`,`../utils/clipboard.amd`,`../utils/string.amd`,`vue`],function(e,t,r,i,a,o,s,c,ee,l){"use strict";if(te===void 0)var te=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.n=void 0;var u=class{static init(){this.isInited||(this.isInited=!0,document.addEventListener(`mouseover`,e=>{!(e.target instanceof HTMLElement)||!e.target.dataset?.topPopupOpenByHover||e.target.click()}),document.addEventListener(`scroll`,()=>{r.O.state.isMobile||r.O.state.isMobileUA||a.t.getAll().forEach(e=>a.t.close(e))}),r.k.addOnReize(e=>{r.O.state.isMobile&&e.topEvent.widthDiff&&a.t.getAll().forEach(e=>a.t.close(e))}),document.addEventListener(`click`,this.onclick,{capture:!0}))}static async onclick(e){if(!(e.target instanceof HTMLElement)||e.target.dataset.topPopupDisabled)return;let t;switch(!0){case!!e.target.dataset?.topPopup:t=e.target;break;case!!e.target.parentElement?.dataset.topPopup:t=e.target.parentElement;break;case!!e.target.parentElement?.parentElement?.dataset.topPopup:t=e.target.parentElement?.parentElement}if(t&&!t.dataset.topPopupDisabled){if(t.dataset.topPopupOpened){let e=a.t.getPopupFromOpener(t);e?.openerIsInput||e?.close();return}e.preventDefault(),await a.t.openByOpener(t)}}};(0,r.K)(u,`isInited`,!1);var d,ne={mounted:async(t,r)=>{d||=(await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar)).storage;let i=r.arg,a=r.value;d(t,i,a)}},f,p=[],m,re=async()=>{let{isVisible:t}=await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar);p=p.filter(t),p.length&&(p[0].focus(),p=[])},h=async t=>{f||=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar),m||=f.debounce(re,30),p.push(t),m()},ie={mounted:function(e,t){e.__TOP_V_FOCUS_VALUE=t.value??!0,(t.value??!0)&&h(e)},updated:function(e,t){t.modifiers.onupdate&&e.__TOP_V_FOCUS_VALUE!==(t.value??!0)&&(e.__TOP_V_FOCUS_VALUE=t.value??!0,(t.value??!0)&&h(e))}},g,_,v=e=>typeof e==`boolean`?e:(e=e?{...e}:{},e.behavior??=`smooth`,e.block??=`nearest`,e.inline??=`nearest`,e),y,b,ae=async()=>{if(!y)return;let e=await S(y);e.isVisible&&y.scrollIntoView(e.scrollIntoViewOptions)},x=async t=>{_||=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar),b||=_.debounce(ae,30),y=t,b()},S=async(t,r)=>{g||=await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar);let a=g.storage(t,`v-top-scrollIntoView`);return a||(a={isVisible:(0,i.isVisible)(t),scrollIntoViewOptions:v(r)},g.storage(t,`v-top-scrollIntoView`,a)),a},oe={async mounted(e,t){await S(e,t.value),t.modifiers.immediate&&x(e)},async updated(e,t){let n=await S(e,t.value);n.scrollIntoViewOptions=v(t.value);let r=(0,i.isVisible)(e);r&&n.isVisible!==r&&x(e),n.isVisible=r}},C,se={async mounted(t){C||=await new Promise((t,n)=>{e([`../utils/scroll.amd`],t,n)}).then(__importStar),C.connectScrollShadow(t)},async unmounted(t){C||=await new Promise((t,n)=>{e([`../utils/scroll.amd`],t,n)}).then(__importStar),C.unconnectScrollShadow(t)}},w=new Map,T,E=new Map,D=!1,ce={ctrl:(0,r.H)()?`⌘`:`Ctrl`,alt:(0,r.H)()?`⌥`:`Alt`,shift:(0,r.H)()?`⇧`:`Shift`},le=e=>{let t=e;return e.includes(`Key`)&&(t=e.replace(`Key`,``)),e.includes(`Digit`)&&(t=e.replace(`Digit`,``)),e===`Escape`&&(t=`Esc`),t},O=(e,t)=>{let n=le(e);if(!t)return n;let{ctrl:i,alt:a,shift:o}=ce,s=[];return t.ctrl&&s.push(i),t.alt&&s.push(a),t.shift&&s.push(o),s.push(n),s.join((0,r.H)()?``:`+`)},k=(e,t,n)=>{let r=O(t,n);if(e.__TOP_V_SHORTCUT_VALUE){console.warn(`Element already has shortcut "${e.__TOP_V_SHORTCUT_VALUE}"`);return}if(E.has(r)){console.warn(`Shortcut "${r}" is taken`);return}E.set(r,e),e.title=e.title?`${e.title} (${r})`:r,e.__TOP_V_SHORTCUT_VALUE=r},A=e=>{let t=e.__TOP_V_SHORTCUT_VALUE;t&&(E.delete(t),delete e.__TOP_V_SHORTCUT_VALUE,e.title===t&&e.removeAttribute(`title`),e.title.includes(` (${t})`)&&(e.title=e.title.replace(` (${t})`,``)))},ue=()=>{for(let[e]of w)!(0,i.isVisible)(e)&&e.__TOP_V_SHORTCUT_VALUE&&A(e);for(let[e,t]of w)(0,i.isVisible)(e)&&!e.__TOP_V_SHORTCUT_VALUE&&k(e,t.value,t.modifiers);w.clear()},de=async(t,r,i)=>{if(!T){let{debounce:t}=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar);T=t(ue,30)}w.set(t,{value:r,modifiers:i}),T()},j=()=>{D||(D=!0,document.addEventListener(`keydown`,e=>{if(!(e.target instanceof HTMLElement)||[`INPUT`,`TEXTAREA`].includes(e.target.tagName)||e.target.isContentEditable)return;let t={ctrl:(0,r.H)()?e.metaKey:e.ctrlKey,alt:e.altKey,shift:e.shiftKey},n=O(e.code,t),a=E.get(n);a&&(a.disabled||!(0,i.isVisible)(a)||(e.preventDefault(),a.click()))}))},fe={mounted:function(e,t){let{value:n,modifiers:r}=t;!n||!(0,i.isVisible)(e)||(j(),k(e,n,r))},updated:function(e,t){if(!!e.__TOP_V_SHORTCUT_VALUE===(0,i.isVisible)(e))return;let{value:n,modifiers:r}=t;n&&(j(),de(e,n,r))},unmounted:function(e){A(e)}},M,pe={mounted(e,t,n){let r=t.value||`top-sticky`;M=new IntersectionObserver(n=>{let i=n[0].intersectionRatio<1;i&&t.modifiers.bottom&&n[0].intersectionRect.y===0&&(i=!1),e.classList.toggle(r,i)},{threshold:[1]}),M.observe(e)},unmounted(e,t,n){M?.disconnect()}},me=!1,N,P=new Set,F=null,I=(e,t)=>{let{distance:n,percent:r}=e.directiveSwimUpOptions,i=e.getBoundingClientRect().top,a=t,o=t*(100-r)/100,s=(a-i)/(a-o),c=n*(1-Math.min(Math.max(s,0),1));e.style.transform=`translateY(${c}px)`},he=()=>{let e=window.innerHeight;window.addEventListener(`scroll`,()=>{F===null&&(F=requestAnimationFrame(()=>{P.forEach(t=>I(t,e)),F=null}))},{passive:!0}),N=new IntersectionObserver(t=>{e=window.innerHeight,t.forEach(e=>{let t=e.target;if(e.intersectionRatio<.01?P.delete(t):P.add(t),e.intersectionRatio===0){let{distance:e}=t.directiveSwimUpOptions,n=t.getBoundingClientRect().top;t.style.transform=`translateY(${n>0?e:0}px)`}})},{threshold:.01})},ge={mounted(e,t,n){let i=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;if(r.O.state.isMobileUA||i)return;let a={distance:t.value?.distance??100,percent:t.value?.percent??30};a.percent<=0||(e.directiveSwimUpOptions=a,me||=(he(),!0),I(e,window.innerHeight),N.observe(e))},unmounted(e,t,n){P.delete(e),N?.unobserve(e)}},L=e=>{if(!r.O.$?.ui?.tooltip){console.info(`Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip`);return}return r.O.$(e)},_e=(e,t)=>{let n={...e.value??{}};return n.content??=t.getAttribute(`ui-tooltip-title`)??t.getAttribute(`title`)??``,n.content=String(n.content).replace(/([^<>])\r?\n([^<>])/g,`$1<br>$2`),n.position??={my:`bottom-18px`,at:`top center`,collision:`flipfit`},n},ve={mounted(e,t){L(e)?.tooltip(_e(t,e))},updated(e,t){let n=_e(t,e),r=L(e)?.tooltip(`instance`);if(!r){L(e)?.tooltip(n);return}r.options={...r.options,...n}},unmounted(e){L(e)?.tooltip(`destroy`)}},ye=(0,l.defineAsyncComponent)(()=>new Promise((t,n)=>{e([`./notice-FzLgMsrr.amd`],t,n)}).then(__importStar));window.vd=console.log,t.n={install:(e,t)=>{e.config.globalProperties.$core=r.O,e.config.globalProperties.$vd=console.log;for(let e in t)r.O.state[e]=t[e];t.widthForMobile&&(r.O.widthForMobile=t.widthForMobile),t.themeName&&(r.O.themeName=t.themeName),r.O._setState(),t.topPopupOptions&&(a.t.options=t.topPopupOptions),u.init(),o.o.init(t.topDialogOptions),e.directive(`top-data`,ne),e.directive(`top-focus`,ie),e.directive(`top-scroll-into-view`,oe),e.directive(`top-scroll-shadow`,se),e.directive(`top-shortcut`,fe),e.directive(`top-sticky`,pe),e.directive(`top-swim-up`,ge),e.directive(`top-tooltip`,ve),e.component(`TopAvatar`,r.g),e.component(`TopButton`,r.h),e.component(`TopCheckbox`,r.f),e.component(`TopControlLabel`,r.p),e.component(`TopHint`,r.d),e.component(`TopInput`,r.c),e.component(`TopInputDate`,r.s),e.component(`TopInputRange`,r.o),e.component(`TopLoadbar`,r.l),e.component(`TopRadio`,r.a),e.component(`TopSelect`,r.n),e.component(`TopSwitcher`,r.i),e.component(`TopTextarea`,r.r),e.component(`TopNotice`,ye),e.component(`TopDialogs`,o.i)}};function be(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function xe(e,t){be(e,t),t.add(e)}function R(e,t,n){be(e,t),t.set(e,n)}function z(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function B(e,t,n){return e.set(z(e,t),n),n}function V(e,t){return e.get(z(e,t))}var H=new WeakMap,U=new WeakMap,W=new WeakMap,G=new WeakMap,K=new WeakMap,q=new WeakMap,J=new WeakMap,Y=new WeakMap,X=new WeakMap,Z=new WeakSet,Se=class{constructor(e){xe(this,Z),R(this,H,void 0),R(this,U,void 0),R(this,W,void 0),R(this,G,void 0),R(this,K,void 0),R(this,q,[]),R(this,J,[]),R(this,Y,[]),R(this,X,[]),B(U,this,e.store),B(H,this,V(U,this).$id),B(W,this,e.options.Page),B(G,this,e.options.user),B(K,this,e.options.Api),B(q,this,e.options.tpaNamesUrlHash||[]),B(J,this,e.options.tpaNamesStorage||[]),B(Y,this,e.options.tpaNamesStorageLocal||[]),B(X,this,e.options.tpaNamesGuestLink||[]),e.store.genGuestLink=(e,t)=>this.genGuestLink(e,t),V(G,this).guest_data?.data||(z(Z,this,Oe).call(this),z(Z,this,Oe).call(this,!0),z(Z,this,Ee).call(this)),z(Z,this,Ae).call(this),z(Z,this,je).call(this);let t=(0,r.P)(()=>{z(Z,this,De).call(this),z(Z,this,ke).call(this),z(Z,this,ke).call(this,!0)});e.store.$subscribe(t)}async genGuestLink(e,t){let n=z(Z,this,Ce).call(this);t=Object.assign(t,Object.fromEntries(n));let r=await V(K,this).gen(e).setParams(t).call();if(r?.errors)return;let i=r.result;await(0,c.guestLinkToClipboard)(i)}};function Ce(){let e=new Map;return V(X,this).forEach(t=>{let n=(0,ee.camelToSnakeCase)(t);e.set(n,V(U,this)[t])}),e}function Q(e){e.forEach((e,t)=>{let n=V(U,this)[t];e!=null&&n!==void 0&&e?.constructor&&e.constructor===n.constructor&&(t.indexOf(`date`)===0&&!Array.isArray(e)&&typeof e==`string`&&!/\d\d\d\d-\d\d-\d\d/.test(e)||(V(U,this)[t]=e))})}function we(e){let t=new Map;return e.forEach((e,n)=>{e!==null&&(e=JSON.stringify(e),t.set(n,e))}),t}function Te(e){let t=new Map;return e.forEach((e,n)=>{if(e!=null&&e!==`false`){try{if(typeof e==`string`&&!/^\d\d\d\d-\d\d-\d\d$/.test(e)&&(e=JSON.parse(e)),e==null||e===`false`)return}catch{}t.set(n,e)}}),t}function Ee(){let e;try{e=JSON.parse((0,s.getHash)(V(H,this)))}catch{}if(!e)return;let t=new Map;V(q,this).forEach(n=>{let r=e[n];r&&t.set(n,r)}),z(Z,this,Q).call(this,t)}function De(){let e=new Map;V(q,this).forEach(t=>{let n=V(U,this)[t];e.set(t,n)});let t=Object.fromEntries(e),n=JSON.stringify(t);(0,s.setHash)(V(H,this),n)}function Oe(e=!1){let t=new Map,n=V(J,this),r=`state:`+V(H,this);e&&(n=V(Y,this),r=`state:`+V(H,this)+`:`+location.pathname),n.forEach(e=>{let n=localStorage.getItem(r+`:`+e);t.set(e,n)});let i=z(Z,this,Te).call(this,t);z(Z,this,Q).call(this,i)}function ke(e=!1){let t=new Map,n=V(J,this),r=`state:`+V(H,this);e&&(n=V(Y,this),r=`state:`+V(H,this)+`:`+location.pathname),n.forEach(e=>{let n=V(U,this)[e];t.set(e,n)});let i=z(Z,this,we).call(this,t);n.forEach(e=>{let t=i.get(e);localStorage.setItem(r+`:`+e,t)})}function Ae(){let e=V(G,this)?.guest_data?.data;if(!e)return;V(G,this).id===-1&&(V(G,this).positionsReverseDates=e.positionsReverseDates);let t=new Map;V(X,this).forEach(n=>{let r=e[n];t.set(n,r)});let n=z(Z,this,Te).call(this,t);z(Z,this,Q).call(this,n);let r=$(`.mod_guest_title`);if(V(U,this).competitorsIds?.length===1&&V(W,this).page.data.competitors){let t=V(W,this).page.data.competitors.filter(t=>t.id===e.competitorsIds[0]);t.length&&($(`a`,r).attr(`href`,`http://`+t[0].url),$(`a`,r).text(t[0].name))}}function je(){V(U,this).regionsIndexes&&(0,l.watch)(V(U,this).regionsIndexes,e=>{if(!e.length)return;e.forEach((t,n)=>e[n]=t);let t=TplProjectSelectorRegion.genSearchersMap(),n=[];t.forEach(e=>{e.regions.forEach(e=>{e.index!==-1&&n.push(e.index)})}),V(U,this).regionsIndexes=e.filter(e=>n.includes(e))},{immediate:!0}),V(U,this).competitorsIds&&(0,l.watch)(V(U,this).competitorsIds,e=>{if(!e.length)return;e.forEach((t,n)=>e[n]=t);let t=[V(W,this).page.data.project.id];V(W,this).page.data.project.competitors.forEach(e=>{e.on>=0&&t.push(e.id)}),V(U,this).competitorsIds=e.filter(e=>t.includes(e))},{immediate:!0})}t.t=e=>{let t=e;!t.options.tpaNamesUrlHash?.length&&!t.options.tpaNamesStorage?.length&&!t.options.tpaNamesStorageLocal?.length&&!t.options.tpaNamesGuestLink?.length||new Se(t)}});
//# sourceMappingURL=app-BaHwxbWz.amd.js.map

Sorry, the diff of this file is too big to display

import { H as e, K as t, O as n, P as r, a as i, c as a, d as o, f as s, g as ee, h as te, i as ne, k as re, l as ie, n as ae, o as oe, p as se, r as ce, s as le } from "./forms-_4U0sLFk.esm.js";
import { isVisible as c } from "../utils/dom.js";
import { t as l } from "./worker-D28QqQ45.esm.js";
import { i as ue, o as de } from "./utils-B1P0BzZ1.esm.js";
import { getHash as fe, setHash as pe } from "../utils/route.js";
import { guestLinkToClipboard as me } from "../utils/clipboard.js";
import { camelToSnakeCase as he } from "../utils/string.js";
import { defineAsyncComponent as ge, watch as u } from "vue";
//#region src/components/popup/lib/worker.globalEvents.ts
var _e = class {
static init() {
this.isInited || (this.isInited = !0, document.addEventListener("mouseover", (e) => {
!(e.target instanceof HTMLElement) || !e.target.dataset?.topPopupOpenByHover || e.target.click();
}), document.addEventListener("scroll", () => {
n.state.isMobile || n.state.isMobileUA || l.getAll().forEach((e) => l.close(e));
}), re.addOnReize((e) => {
n.state.isMobile && e.topEvent.widthDiff && l.getAll().forEach((e) => l.close(e));
}), document.addEventListener("click", this.onclick, { capture: !0 }));
}
static async onclick(e) {
if (!(e.target instanceof HTMLElement) || e.target.dataset.topPopupDisabled) return;
let t;
switch (!0) {
case !!e.target.dataset?.topPopup:
t = e.target;
break;
case !!e.target.parentElement?.dataset.topPopup:
t = e.target.parentElement;
break;
case !!e.target.parentElement?.parentElement?.dataset.topPopup:
t = e.target.parentElement?.parentElement;
break;
}
if (t && !t.dataset.topPopupDisabled) {
if (t.dataset.topPopupOpened) {
let e = l.getPopupFromOpener(t);
e?.openerIsInput || e?.close();
return;
}
e.preventDefault(), await l.openByOpener(t);
}
}
};
t(_e, "isInited", !1);
//#endregion
//#region src/core/directives/data.ts
var d, ve = { mounted: async (e, t) => {
d ||= (await import("../utils/dom.js")).storage;
let n = t.arg, r = t.value;
d(e, n, r);
} }, f, p = [], m, ye = async () => {
let { isVisible: e } = await import("../utils/dom.js");
p = p.filter(e), p.length && (p[0].focus(), p = []);
}, h = async (e) => {
f ||= await import("../utils/lodash.js"), m ||= f.debounce(ye, 30), p.push(e), m();
}, be = {
mounted: function(e, t) {
e.__TOP_V_FOCUS_VALUE = t.value ?? !0, (t.value ?? !0) && h(e);
},
updated: function(e, t) {
t.modifiers.onupdate && e.__TOP_V_FOCUS_VALUE !== (t.value ?? !0) && (e.__TOP_V_FOCUS_VALUE = t.value ?? !0, (t.value ?? !0) && h(e));
}
}, g, xe, _ = (e) => typeof e == "boolean" ? e : (e = e ? { ...e } : {}, e.behavior ??= "smooth", e.block ??= "nearest", e.inline ??= "nearest", e), v, y, Se = async () => {
if (!v) return;
let e = await x(v);
e.isVisible && v.scrollIntoView(e.scrollIntoViewOptions);
}, b = async (e) => {
xe ||= await import("../utils/lodash.js"), y ||= xe.debounce(Se, 30), v = e, y();
}, x = async (e, t) => {
g ||= await import("../utils/dom.js");
let n = g.storage(e, "v-top-scrollIntoView");
return n || (n = {
isVisible: c(e),
scrollIntoViewOptions: _(t)
}, g.storage(e, "v-top-scrollIntoView", n)), n;
}, Ce = {
async mounted(e, t) {
await x(e, t.value), t.modifiers.immediate && b(e);
},
async updated(e, t) {
let n = await x(e, t.value);
n.scrollIntoViewOptions = _(t.value);
let r = c(e);
r && n.isVisible !== r && b(e), n.isVisible = r;
}
}, S, we = {
async mounted(e) {
S ||= await import("../utils/scroll.js"), S.connectScrollShadow(e);
},
async unmounted(e) {
S ||= await import("../utils/scroll.js"), S.unconnectScrollShadow(e);
}
}, C = /* @__PURE__ */ new Map(), w, T = /* @__PURE__ */ new Map(), Te = !1, Ee = {
ctrl: e() ? "⌘" : "Ctrl",
alt: e() ? "⌥" : "Alt",
shift: e() ? "⇧" : "Shift"
}, De = (e) => {
let t = e;
return e.includes("Key") && (t = e.replace("Key", "")), e.includes("Digit") && (t = e.replace("Digit", "")), e === "Escape" && (t = "Esc"), t;
}, Oe = (t, n) => {
let r = De(t);
if (!n) return r;
let { ctrl: i, alt: a, shift: o } = Ee, s = [];
return n.ctrl && s.push(i), n.alt && s.push(a), n.shift && s.push(o), s.push(r), s.join(e() ? "" : "+");
}, E = (e, t, n) => {
let r = Oe(t, n);
if (e.__TOP_V_SHORTCUT_VALUE) {
console.warn(`Element already has shortcut "${e.__TOP_V_SHORTCUT_VALUE}"`);
return;
}
if (T.has(r)) {
console.warn(`Shortcut "${r}" is taken`);
return;
}
T.set(r, e), e.title = e.title ? `${e.title} (${r})` : r, e.__TOP_V_SHORTCUT_VALUE = r;
}, D = (e) => {
let t = e.__TOP_V_SHORTCUT_VALUE;
t && (T.delete(t), delete e.__TOP_V_SHORTCUT_VALUE, e.title === t && e.removeAttribute("title"), e.title.includes(` (${t})`) && (e.title = e.title.replace(` (${t})`, "")));
}, ke = () => {
for (let [e] of C) !c(e) && e.__TOP_V_SHORTCUT_VALUE && D(e);
for (let [e, t] of C) c(e) && !e.__TOP_V_SHORTCUT_VALUE && E(e, t.value, t.modifiers);
C.clear();
}, Ae = async (e, t, n) => {
if (!w) {
let { debounce: e } = await import("../utils/lodash.js");
w = e(ke, 30);
}
C.set(e, {
value: t,
modifiers: n
}), w();
}, O = () => {
Te || (Te = !0, document.addEventListener("keydown", (t) => {
if (!(t.target instanceof HTMLElement) || ["INPUT", "TEXTAREA"].includes(t.target.tagName) || t.target.isContentEditable) return;
let n = {
ctrl: e() ? t.metaKey : t.ctrlKey,
alt: t.altKey,
shift: t.shiftKey
}, r = Oe(t.code, n), i = T.get(r);
i && (i.disabled || !c(i) || (t.preventDefault(), i.click()));
}));
}, je = {
mounted: function(e, t) {
let { value: n, modifiers: r } = t;
!n || !c(e) || (O(), E(e, n, r));
},
updated: function(e, t) {
if (!!e.__TOP_V_SHORTCUT_VALUE === c(e)) return;
let { value: n, modifiers: r } = t;
n && (O(), Ae(e, n, r));
},
unmounted: function(e) {
D(e);
}
}, k, Me = {
mounted(e, t, n) {
let r = t.value || "top-sticky";
k = new IntersectionObserver((n) => {
let i = n[0].intersectionRatio < 1;
i && t.modifiers.bottom && n[0].intersectionRect.y === 0 && (i = !1), e.classList.toggle(r, i);
}, { threshold: [1] }), k.observe(e);
},
unmounted(e, t, n) {
k?.disconnect();
}
}, Ne = !1, A, j = /* @__PURE__ */ new Set(), M = null, N = (e, t) => {
let { distance: n, percent: r } = e.directiveSwimUpOptions, i = e.getBoundingClientRect().top, a = t, o = t * (100 - r) / 100, s = (a - i) / (a - o), ee = n * (1 - Math.min(Math.max(s, 0), 1));
e.style.transform = `translateY(${ee}px)`;
}, Pe = () => {
let e = window.innerHeight;
window.addEventListener("scroll", () => {
M === null && (M = requestAnimationFrame(() => {
j.forEach((t) => N(t, e)), M = null;
}));
}, { passive: !0 }), A = new IntersectionObserver((t) => {
e = window.innerHeight, t.forEach((e) => {
let t = e.target;
if (e.intersectionRatio < .01 ? j.delete(t) : j.add(t), e.intersectionRatio === 0) {
let { distance: e } = t.directiveSwimUpOptions, n = t.getBoundingClientRect().top;
t.style.transform = `translateY(${n > 0 ? e : 0}px)`;
}
});
}, { threshold: .01 });
}, Fe = {
mounted(e, t, r) {
let i = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
if (n.state.isMobileUA || i) return;
let a = {
distance: t.value?.distance ?? 100,
percent: t.value?.percent ?? 30
};
a.percent <= 0 || (e.directiveSwimUpOptions = a, Ne ||= (Pe(), !0), N(e, window.innerHeight), A.observe(e));
},
unmounted(e, t, n) {
j.delete(e), A?.unobserve(e);
}
}, P = (e) => {
if (!n.$?.ui?.tooltip) {
console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");
return;
}
return n.$(e);
}, F = (e, t) => {
let n = { ...e.value ?? {} };
return n.content ??= t.getAttribute("ui-tooltip-title") ?? t.getAttribute("title") ?? "", n.content = String(n.content).replace(/([^<>])\r?\n([^<>])/g, "$1<br>$2"), n.position ??= {
my: "bottom-18px",
at: "top center",
collision: "flipfit"
}, n;
}, Ie = {
mounted(e, t) {
P(e)?.tooltip(F(t, e));
},
updated(e, t) {
let n = F(t, e), r = P(e)?.tooltip("instance");
if (!r) {
P(e)?.tooltip(n);
return;
}
r.options = {
...r.options,
...n
};
},
unmounted(e) {
P(e)?.tooltip("destroy");
}
}, Le = ge(() => import("./notice-FzLgMsrr.esm.js"));
window.vd = console.log;
var Re = { install: (e, t) => {
e.config.globalProperties.$core = n, e.config.globalProperties.$vd = console.log;
for (let e in t) n.state[e] = t[e];
t.widthForMobile && (n.widthForMobile = t.widthForMobile), t.themeName && (n.themeName = t.themeName), n._setState(), t.topPopupOptions && (l.options = t.topPopupOptions), _e.init(), de.init(t.topDialogOptions), e.directive("top-data", ve), e.directive("top-focus", be), e.directive("top-scroll-into-view", Ce), e.directive("top-scroll-shadow", we), e.directive("top-shortcut", je), e.directive("top-sticky", Me), e.directive("top-swim-up", Fe), e.directive("top-tooltip", Ie), e.component("TopAvatar", ee), e.component("TopButton", te), e.component("TopCheckbox", s), e.component("TopControlLabel", se), e.component("TopHint", o), e.component("TopInput", a), e.component("TopInputDate", le), e.component("TopInputRange", oe), e.component("TopLoadbar", ie), e.component("TopRadio", i), e.component("TopSelect", ae), e.component("TopSwitcher", ne), e.component("TopTextarea", ce), e.component("TopNotice", Le), e.component("TopDialogs", ue);
} };
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/checkPrivateRedeclaration.js
function I(e, t) {
if (t.has(e)) throw TypeError("Cannot initialize the same private elements twice on an object");
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateMethodInitSpec.js
function ze(e, t) {
I(e, t), t.add(e);
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateFieldInitSpec.js
function L(e, t, n) {
I(e, t), t.set(e, n);
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/assertClassBrand.js
function R(e, t, n) {
if (typeof e == "function" ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
throw TypeError("Private element is not present on this object");
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateFieldSet2.js
function z(e, t, n) {
return e.set(R(e, t), n), n;
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateFieldGet2.js
function B(e, t) {
return e.get(R(e, t));
}
//#endregion
//#region src/core/plugins/piniaTPA.ts
var V = /* @__PURE__ */ new WeakMap(), H = /* @__PURE__ */ new WeakMap(), U = /* @__PURE__ */ new WeakMap(), W = /* @__PURE__ */ new WeakMap(), G = /* @__PURE__ */ new WeakMap(), K = /* @__PURE__ */ new WeakMap(), q = /* @__PURE__ */ new WeakMap(), J = /* @__PURE__ */ new WeakMap(), Y = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakSet(), Be = class {
constructor(e) {
ze(this, X), L(this, V, void 0), L(this, H, void 0), L(this, U, void 0), L(this, W, void 0), L(this, G, void 0), L(this, K, []), L(this, q, []), L(this, J, []), L(this, Y, []), z(H, this, e.store), z(V, this, B(H, this).$id), z(U, this, e.options.Page), z(W, this, e.options.user), z(G, this, e.options.Api), z(K, this, e.options.tpaNamesUrlHash || []), z(q, this, e.options.tpaNamesStorage || []), z(J, this, e.options.tpaNamesStorageLocal || []), z(Y, this, e.options.tpaNamesGuestLink || []), e.store.genGuestLink = (e, t) => this.genGuestLink(e, t), B(W, this).guest_data?.data || (R(X, this, Ke).call(this), R(X, this, Ke).call(this, !0), R(X, this, We).call(this)), R(X, this, qe).call(this), R(X, this, Je).call(this);
let t = r(() => {
R(X, this, Ge).call(this), R(X, this, Q).call(this), R(X, this, Q).call(this, !0);
});
e.store.$subscribe(t);
}
async genGuestLink(e, t) {
let n = R(X, this, Ve).call(this);
t = Object.assign(t, Object.fromEntries(n));
let r = await B(G, this).gen(e).setParams(t).call();
if (r?.errors) return;
let i = r.result;
await me(i);
}
};
function Ve() {
let e = /* @__PURE__ */ new Map();
return B(Y, this).forEach((t) => {
let n = he(t);
e.set(n, B(H, this)[t]);
}), e;
}
function Z(e) {
e.forEach((e, t) => {
let n = B(H, this)[t];
e != null && n !== void 0 && e?.constructor && e.constructor === n.constructor && (t.indexOf("date") === 0 && !Array.isArray(e) && typeof e == "string" && !/\d\d\d\d-\d\d-\d\d/.test(e) || (B(H, this)[t] = e));
});
}
function He(e) {
let t = /* @__PURE__ */ new Map();
return e.forEach((e, n) => {
e !== null && (e = JSON.stringify(e), t.set(n, e));
}), t;
}
function Ue(e) {
let t = /* @__PURE__ */ new Map();
return e.forEach((e, n) => {
if (!(e == null || e === "false")) {
try {
if (typeof e == "string" && !/^\d\d\d\d-\d\d-\d\d$/.test(e) && (e = JSON.parse(e)), e == null || e === "false") return;
} catch {}
t.set(n, e);
}
}), t;
}
function We() {
let e;
try {
e = JSON.parse(fe(B(V, this)));
} catch {}
if (!e) return;
let t = /* @__PURE__ */ new Map();
B(K, this).forEach((n) => {
let r = e[n];
r && t.set(n, r);
}), R(X, this, Z).call(this, t);
}
function Ge() {
let e = /* @__PURE__ */ new Map();
B(K, this).forEach((t) => {
let n = B(H, this)[t];
e.set(t, n);
});
let t = Object.fromEntries(e), n = JSON.stringify(t);
pe(B(V, this), n);
}
function Ke(e = !1) {
let t = /* @__PURE__ */ new Map(), n = B(q, this), r = "state:" + B(V, this);
e && (n = B(J, this), r = "state:" + B(V, this) + ":" + location.pathname), n.forEach((e) => {
let n = localStorage.getItem(r + ":" + e);
t.set(e, n);
});
let i = R(X, this, Ue).call(this, t);
R(X, this, Z).call(this, i);
}
function Q(e = !1) {
let t = /* @__PURE__ */ new Map(), n = B(q, this), r = "state:" + B(V, this);
e && (n = B(J, this), r = "state:" + B(V, this) + ":" + location.pathname), n.forEach((e) => {
let n = B(H, this)[e];
t.set(e, n);
});
let i = R(X, this, He).call(this, t);
n.forEach((e) => {
let t = i.get(e);
localStorage.setItem(r + ":" + e, t);
});
}
function qe() {
let e = B(W, this)?.guest_data?.data;
if (!e) return;
B(W, this).id === -1 && (B(W, this).positionsReverseDates = e.positionsReverseDates);
let t = /* @__PURE__ */ new Map();
B(Y, this).forEach((n) => {
let r = e[n];
t.set(n, r);
});
let n = R(X, this, Ue).call(this, t);
R(X, this, Z).call(this, n);
let r = $(".mod_guest_title");
if (B(H, this).competitorsIds?.length === 1 && B(U, this).page.data.competitors) {
let t = B(U, this).page.data.competitors.filter((t) => t.id === e.competitorsIds[0]);
t.length && ($("a", r).attr("href", "http://" + t[0].url), $("a", r).text(t[0].name));
}
}
function Je() {
B(H, this).regionsIndexes && u(B(H, this).regionsIndexes, (e) => {
if (!e.length) return;
e.forEach((t, n) => e[n] = t);
let t = TplProjectSelectorRegion.genSearchersMap(), n = [];
t.forEach((e) => {
e.regions.forEach((e) => {
e.index !== -1 && n.push(e.index);
});
}), B(H, this).regionsIndexes = e.filter((e) => n.includes(e));
}, { immediate: !0 }), B(H, this).competitorsIds && u(B(H, this).competitorsIds, (e) => {
if (!e.length) return;
e.forEach((t, n) => e[n] = t);
let t = [B(U, this).page.data.project.id];
B(U, this).page.data.project.competitors.forEach((e) => {
e.on >= 0 && t.push(e.id);
}), B(H, this).competitorsIds = e.filter((e) => t.includes(e));
}, { immediate: !0 });
}
var Ye = (e) => {
let t = e;
!t.options.tpaNamesUrlHash?.length && !t.options.tpaNamesStorage?.length && !t.options.tpaNamesStorageLocal?.length && !t.options.tpaNamesGuestLink?.length || new Be(t);
};
//#endregion
export { Re as n, Ye as t };
//# sourceMappingURL=app-BaHwxbWz.esm.js.map
{"version":3,"file":"app-BaHwxbWz.esm.js","names":["#storeId","#store","#Page","#user","#Api","#namesUrlHash","#namesStorage","#namesStorageLocal","#namesGuestLink","#loadFromStorage","#loadFromHash","#loadFromGuestLink","#prepareParams","#saveInHash","#saveInStorage","#genOptionsForGuestLink","#setOptions","#genDataUnFormat","#genDataFormat"],"sources":["../../src/components/popup/lib/worker.globalEvents.ts","../../src/core/directives/data.ts","../../src/core/directives/focus.ts","../../src/core/directives/scrollIntoView.ts","../../src/core/directives/scrollShadow.ts","../../src/core/directives/shortcut.ts","../../src/core/directives/sticky.ts","../../src/core/directives/swimUp.ts","../../src/core/directives/tooltip.ts","../../src/core/plugins/core.ts","../../src/core/plugins/piniaTPA.ts"],"sourcesContent":["import Core from '@/core/core/core';\nimport Events from '@/core/core/events';\nimport Worker from '@/components/popup/lib/worker';\n\n/**\n * Глобальные события, для реализации Popup\n */\nclass WorkerEvents {\n\n\tprivate static isInited = false;\n\n\t/**\n\t * Добавить глобальные обработчики\n\t *\n\t * Добавляются на страницу один раз и навсегда\n\t */\n\tstatic init(): void {\n\t\tif (this.isInited) return;\n\n\t\tthis.isInited = true;\n\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\n\t\tdocument.addEventListener('mouseover', (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement) || !e.target.dataset?.topPopupOpenByHover) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.target.click();\n\t\t});\n\n\t\t// при скролле страницы закрыть Popup\n\t\tdocument.addEventListener('scroll', () => {\n\t\t\tif (Core.state.isMobile || Core.state.isMobileUA) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t});\n\n\t\tEvents.addOnReize(e => {\n\t\t\t// закрыть popup при повороте экрана телефона\n\t\t\t// если была отображена ПК версия, она будет закрыта\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t\t}\n\t\t});\n\n\t\tdocument.addEventListener('click', this.onclick, { capture: true });\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t *\n\t * Обрабатывает клики на открытие Popup\n\t */\n\tprivate static async onclick(e: Event): Promise<void> {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tif (e.target.dataset.topPopupDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet elOpener: HTMLElement | undefined;\n\n\t\tswitch (true) {\n\t\t\tcase !!e.target.dataset?.topPopup:\n\t\t\t\telOpener = e.target;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement?.parentElement;\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (!elOpener) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// меню уже открыто\n\t\tif (elOpener.dataset.topPopupOpened) {\n\t\t\tconst popup = Worker.getPopupFromOpener(elOpener);\n\t\t\tif (!popup?.openerIsInput) {\n\t\t\t\tpopup?.close();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tawait Worker.openByOpener(elOpener);\n\t}\n}\n\nexport default WorkerEvents;\n","import type { DirectiveBinding } from 'vue';\n\nlet storage: any;\n\n/**\n * Сохранить данные в элементе\n *\n * Для доступа к данным можно воспользоваться ui/utils/dom storage()\n */\nconst data = {\n\tmounted: async (el: HTMLElement, binding: DirectiveBinding) => {\n\t\tif (!storage) {\n\t\t\tconst UtilsDom = await import('@/core/utils/dom');\n\n\t\t\tstorage = UtilsDom.storage;\n\t\t}\n\n\t\tconst name = binding.arg;\n\t\tconst value = binding.value;\n\n\t\tstorage(el, name, value);\n\t},\n};\n\nexport default data;\n","import type { DirectiveBinding } from 'vue';\n\ntype Binding = DirectiveBinding<boolean, 'onupdate'>;\n\nlet UtilsLodash: typeof import('@/core/utils/lodash');\n\n/**\n * Список элементов, на которых бала запрошена фокусировка, для дедупликации фокусировок\n */\nlet elsActive: HTMLElement[] = [];\n\n/**\n * Функция скролла с дедупликацией\n */\nlet focusOnElActiveDebounce: ReturnType<typeof UtilsLodash.debounce> | undefined;\n\n/**\n * Выполнить фокусировку на активном элементе\n *\n * Если фокусирока запрошена на несколько элементов, будет выбран первый элемент\n */\nconst focusOnElActive = async () => {\n\tconst { isVisible } = await import('@/core/utils/dom');\n\telsActive = elsActive.filter(isVisible)\n\n\tif (!elsActive.length) return;\n\n\tconst el = elsActive[0];\n\n\tel.focus();\n\n\t// // UX: Если выбрано несколько чекбоксов или радио после выбора фокусировка будет снята, чтобы не делать выбор за пользователя\n\t// if (elsActive.length && el.nodeName === 'INPUT') {\n\t// \tconst type = (el as HTMLInputElement).type;\n\t// \tif (type === 'checkbox' || type === 'radio') el.blur();\n\t// }\n\n\telsActive = [];\n};\n\n/**\n * Выполнить дедуплицированную фокусировку на элементе\n */\nconst focusOnElDebounce = async (el: HTMLElement) => {\n\tif (!UtilsLodash) UtilsLodash = await import('@/core/utils/lodash');\n\tif (!focusOnElActiveDebounce) focusOnElActiveDebounce = UtilsLodash.debounce(focusOnElActive, 30);\n\n\telsActive.push(el);\n\n\tfocusOnElActiveDebounce();\n};\n\n/**\n * Фокусировка на элементе сразу после его отображения\n */\nconst focus = {\n\tmounted: function (el: HTMLElement, binding: Binding) {\n\t\tel['__TOP_V_FOCUS_VALUE'] = binding.value ?? true;\n\n\t\tif (binding.value ?? true) focusOnElDebounce(el);\n\t},\n\n\tupdated: function (el: HTMLElement, binding: Binding) {\n\t\tif (!binding.modifiers.onupdate) return;\n\n\t\tif (el['__TOP_V_FOCUS_VALUE'] === (binding.value ?? true)) return;\n\t\tel['__TOP_V_FOCUS_VALUE'] = binding.value ?? true;\n\n\t\tif (binding.value ?? true) focusOnElDebounce(el);\n\t},\n};\n\nexport default focus;\n","import type { DirectiveBinding, ObjectDirective } from 'vue';\nimport { isVisible } from '@/core/utils/dom';\n\ntype Binding = DirectiveBinding<ScrollIntoViewOptions | boolean | undefined, 'immediate'>;\n\ntype Storage = {\n\t/**\n\t * Сохраненное состояние видимости\n\t */\n\tisVisible: boolean,\n\n\t/**\n\t * Текущие настройки скролла\n\t */\n\tscrollIntoViewOptions: ScrollIntoViewOptions | boolean\n};\n\nlet UtilsDom: typeof import('@/core/utils/dom');\nlet UtilsLodash: typeof import('@/core/utils/lodash');\n\n/**\n * Сгенерировать настройки для скролла\n *\n * @see https://developer.mozilla.org/ru/docs/Web/API/Element/scrollIntoView\n */\nconst genScrollIntoViewOptions = (scrollIntoViewOptions?: ScrollIntoViewOptions | boolean) => {\n\tif (typeof scrollIntoViewOptions === 'boolean') return scrollIntoViewOptions;\n\n\tif (!scrollIntoViewOptions) {\n\t\tscrollIntoViewOptions = {};\n\t} else {\n\t\tscrollIntoViewOptions = { ...scrollIntoViewOptions };\n\t}\n\n\tscrollIntoViewOptions.behavior ??= 'smooth';\n\tscrollIntoViewOptions.block ??= 'nearest';\n\tscrollIntoViewOptions.inline ??= 'nearest';\n\n\treturn scrollIntoViewOptions;\n};\n\n/**\n * Активный элемент, для дедупликации скроллов\n *\n * Только один элемент на странице может считаться активным\n */\nlet elActive: HTMLElement | undefined;\n\n/**\n * Функция скролла с дедупликацией\n */\nlet scrollToElActiveDebounce: ReturnType<typeof UtilsLodash.debounce> | undefined;\n\n/**\n * Выполнить скролл к текущему активному элементу\n */\nconst scrollToElActive = async () => {\n\tif (!elActive) return;\n\n\tconst storage = await useStorage(elActive);\n\tif (!storage.isVisible) return;\n\n\telActive.scrollIntoView(storage.scrollIntoViewOptions);\n};\n\n/**\n * Выполнить дедуплицированный скролл к элементу\n *\n * Будет выполнен скролл к самому последнему элементу, вызвавшему срабатывание директивы\n */\nconst scrollToElDebounce = async (el: HTMLElement) => {\n\tif (!UtilsLodash) UtilsLodash = await import('@/core/utils/lodash');\n\tif (!scrollToElActiveDebounce) scrollToElActiveDebounce = UtilsLodash.debounce(scrollToElActive, 30);\n\n\telActive = el;\n\n\tscrollToElActiveDebounce();\n};\n\n/**\n * Данные, связанные с элементом и директивой\n */\nconst useStorage = async (el: HTMLElement, scrollIntoViewOptions?: ScrollIntoViewOptions | boolean) => {\n\tif (!UtilsDom) UtilsDom = await import('@/core/utils/dom');\n\n\tlet storage: Storage | undefined = UtilsDom.storage(el, 'v-top-scrollIntoView');\n\n\t// инициализация\n\tif (!storage) {\n\t\tstorage = {\n\t\t\tisVisible: isVisible(el),\n\t\t\tscrollIntoViewOptions: genScrollIntoViewOptions(scrollIntoViewOptions),\n\t\t};\n\n\t\tUtilsDom.storage(el, 'v-top-scrollIntoView', storage);\n\t}\n\n\treturn storage;\n};\n\nconst scrollIntoView: ObjectDirective = {\n\tasync mounted(el: HTMLElement, binding: Binding) {\n\t\tawait useStorage(el, binding.value);\n\n\t\tif (binding.modifiers.immediate) {\n\t\t\tscrollToElDebounce(el);\n\t\t}\n\t},\n\n\tasync updated(el: HTMLElement, binding: Binding) {\n\t\tconst storage = await useStorage(el, binding.value);\n\t\tstorage.scrollIntoViewOptions = genScrollIntoViewOptions(binding.value);\n\n\t\tconst isVisibleNew = isVisible(el);\n\t\tif (isVisibleNew && storage.isVisible !== isVisibleNew) {\n\t\t\tscrollToElDebounce(el);\n\t\t}\n\n\t\tstorage.isVisible = isVisibleNew;\n\t},\n};\n\nexport default scrollIntoView;\n","let UtilsScroll: typeof import('@/core/utils/scroll');\n\n/**\n * Добавить отображение тени при появлении скролла у элемента\n *\n * Будут добавлены события для усатновки модификаторов тени в зависимости от скролла элемента\n *\n * Модификаторы:\n * - top-scrollShadow\n * - top-scrollShadow-started\n * - top-scrollShadow-finished\n */\nconst connectScrollShadow = {\n\tasync mounted(el) {\n\t\tif (!UtilsScroll) UtilsScroll = await import('@/core/utils/scroll');\n\n\t\tUtilsScroll.connectScrollShadow(el);\n\t},\n\n\tasync unmounted(el) {\n\t\tif (!UtilsScroll) UtilsScroll = await import('@/core/utils/scroll');\n\n\t\tUtilsScroll.unconnectScrollShadow(el);\n\t},\n};\n\nexport default connectScrollShadow;\n","import { isVisible } from '@/core/utils/dom';\nimport { isMacOS } from '@/core/utils/device';\nimport type { DirectiveBinding } from 'vue';\nimport type debounce from 'lodash-es/debounce.js';\n\nexport type ShortcutValue = string;\n\n/**\n * Допустимые модификаторы\n */\ntype AllowedModifiers = 'ctrl' | 'shift' | 'alt';\ntype Binding = DirectiveBinding<ShortcutValue, AllowedModifiers>;\n\n/**\n * Очередь элементов, ожидающих синхронизации горячих клавиш.\n * Накапливает изменения для их пакетной обработки\n */\nconst elsShortcutQueue = new Map<HTMLElement, {\n\tvalue: ShortcutValue;\n\tmodifiers: Binding['modifiers'];\n}>;\n\n/**\n * Отложенная версия функции syncShortcuts.\n * Обеспечивает пакетную обработку изменений горячих клавиш\n */\nlet syncShortcutsDebounce: ReturnType<typeof debounce> | undefined;\n\n/**\n * Список горячих клавиш и html элементов, на которые они назначены\n */\nconst elementByShortcut = new Map<string, HTMLElement>();\n\n/**\n * Добавлен ли обработчик события\n */\nlet isListenerAttached = false;\n\n/**\n * Отображение названий клавиш-модификаторов в зависимости от ОС\n *\n * В наших горячих клавишах Ctrl всегда соответствует Cmd в MacOS\n */\nconst modifierKeys = {\n\tctrl: isMacOS() ? '⌘' : 'Ctrl',\n\talt: isMacOS() ? '⌥' : 'Alt',\n\tshift: isMacOS() ? '⇧' : 'Shift',\n};\n\n/**\n * Получить название клавиши из event.code\n */\nconst getKeyLabel = (code: string) => {\n\tlet keyLabel = code;\n\n\tif (code.includes('Key')) keyLabel = code.replace('Key', '');\n\tif (code.includes('Digit')) keyLabel = code.replace('Digit', '');\n\tif (code === 'Escape') keyLabel = 'Esc';\n\n\treturn keyLabel;\n};\n\n/**\n * Сгенерировать строковое представление сочетания клавиш с модификаторами\n *\n * Приводим к виду \"Ctrl+Shift+A\" или \"⌘⇧A\" для MacOS\n */\nconst genShortcutString = (code: string, modifiers: Binding['modifiers']) => {\n\tconst keyLabel = getKeyLabel(code);\n\tif (!modifiers) return keyLabel;\n\n\tconst { ctrl, alt, shift } = modifierKeys;\n\tconst parts: string[] = [];\n\n\tif (modifiers.ctrl) parts.push(ctrl);\n\tif (modifiers.alt) parts.push(alt);\n\tif (modifiers.shift) parts.push(shift);\n\n\t// Основная клавиша\n\tparts.push(keyLabel);\n\n\treturn parts.join(isMacOS() ? '' : '+');\n};\n\nconst registerShortcut = (el: HTMLElement, value: ShortcutValue, modifiers: Binding['modifiers']) => {\n\tconst shortcut = genShortcutString(value, modifiers);\n\n\tif (el['__TOP_V_SHORTCUT_VALUE']) {\n\t\tconsole.warn(`Element already has shortcut \"${el['__TOP_V_SHORTCUT_VALUE']}\"`);\n\n\t\treturn;\n\t}\n\n\tif (elementByShortcut.has(shortcut)) {\n\t\tconsole.warn(`Shortcut \"${shortcut}\" is taken`);\n\n\t\treturn;\n\t}\n\n\telementByShortcut.set(shortcut, el);\n\tel.title = el.title ? `${el.title} (${shortcut})` : shortcut;\n\tel['__TOP_V_SHORTCUT_VALUE'] = shortcut;\n};\n\nconst unregisterShortcut = (el: HTMLElement) => {\n\tconst shortcut: string | undefined = el['__TOP_V_SHORTCUT_VALUE'];\n\tif (!shortcut) return;\n\n\telementByShortcut.delete(shortcut);\n\tdelete el['__TOP_V_SHORTCUT_VALUE'];\n\n\tif (el.title === shortcut) el.removeAttribute('title');\n\tif (el.title.includes(` (${shortcut})`)) {\n\t\tel.title = el.title.replace(` (${shortcut})`, '');\n\t}\n};\n\n/**\n * Обновить регистрацию горячих клавиш для элементов в очереди\n *\n * Отменяет регистрацию для невидимых элементов и регистрирует для видимых.\n * Очищает очередь после обработки\n */\nconst syncShortcuts = () => {\n\tfor (const [el] of elsShortcutQueue) {\n\t\tif (!isVisible(el) && el['__TOP_V_SHORTCUT_VALUE']) {\n\t\t\tunregisterShortcut(el);\n\t\t}\n\t}\n\n\tfor (const [el, data] of elsShortcutQueue) {\n\t\tif (isVisible(el) && !el['__TOP_V_SHORTCUT_VALUE']) {\n\t\t\tregisterShortcut(el, data.value, data.modifiers);\n\t\t}\n\t}\n\n\telsShortcutQueue.clear();\n};\n\n/**\n * Выполняет отложенную регистрацию горячих клавиш на элементе с дедупликацией\n */\nconst registerShortcutDebounce = async (el: HTMLElement, value: ShortcutValue, modifiers: Binding['modifiers']) => {\n\tif (!syncShortcutsDebounce) {\n\t\tconst { debounce } = await import('@/core/utils/lodash');\n\t\tsyncShortcutsDebounce = debounce(syncShortcuts, 30);\n\t}\n\n\telsShortcutQueue.set(el, { value, modifiers });\n\n\tsyncShortcutsDebounce();\n};\n\nconst attachGlobalListener = () => {\n\tif (isListenerAttached) return;\n\tisListenerAttached = true;\n\n\tdocument.addEventListener('keydown', e => {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\t\tif (['INPUT', 'TEXTAREA'].includes(e.target.tagName) || e.target.isContentEditable) return;\n\n\t\tconst modifiers = {\n\t\t\tctrl: isMacOS() ? e.metaKey : e.ctrlKey,\n\t\t\talt: e.altKey,\n\t\t\tshift: e.shiftKey,\n\t\t};\n\n\t\tconst shortcut = genShortcutString(e.code, modifiers);\n\t\tconst element = elementByShortcut.get(shortcut);\n\n\t\tif (!element) return;\n\t\tif ((element as any).disabled || !isVisible(element)) return;\n\n\t\te.preventDefault();\n\t\telement.click();\n\t});\n};\n\nconst shortcut = {\n\tmounted: function (el: HTMLElement, binding: Binding) {\n\t\tconst { value, modifiers } = binding;\n\t\tif (!value || !isVisible(el)) return;\n\n\t\tattachGlobalListener();\n\t\tregisterShortcut(el, value, modifiers);\n\t},\n\n\tupdated: function (el: HTMLElement, binding: Binding) {\n\t\tif (!!el['__TOP_V_SHORTCUT_VALUE'] === isVisible(el)) return;\n\n\t\tconst { value, modifiers } = binding;\n\t\tif (!value) return;\n\n\t\tattachGlobalListener();\n\t\tvoid registerShortcutDebounce(el, value, modifiers);\n\t},\n\n\tunmounted: function (el: HTMLElement) {\n\t\tunregisterShortcut(el);\n\t},\n};\n\nexport default shortcut;\n","import type { DirectiveBinding, VNode } from 'vue';\n\nlet appStickyObserver: IntersectionObserver;\n\n/**\n * Добавление sticky\n * К элементу добляется класс переданный как значение диррективы либо **'top-sticky'** по умолчанию\n */\nconst sticky = {\n\tmounted(el: HTMLElement, binding: DirectiveBinding, _vnode: VNode) {\n\t\tconst className = binding.value || 'top-sticky';\n\n\t\tappStickyObserver = new IntersectionObserver(entries => {\n\t\t\tlet condition = entries[0].intersectionRatio < 1;\n\t\t\tif (condition) {\n\t\t\t\tif (binding.modifiers.bottom && entries[0].intersectionRect.y === 0) condition = false;\n\t\t\t}\n\n\t\t\tel.classList.toggle(className, condition);\n\t\t}, {\n\t\t\tthreshold: [1],\n\t\t});\n\n\t\tappStickyObserver.observe(el);\n\t},\n\n\tunmounted(_el: HTMLElement, _binding: DirectiveBinding, _vnode: VNode) {\n\t\tappStickyObserver?.disconnect();\n\t},\n};\n\nexport default sticky;\n","import type { DirectiveBinding, VNode } from 'vue';\nimport Core from '@/core/core/core';\n\ninterface HTMLElementWithSwimUpOptions extends HTMLElement {\n\tdirectiveSwimUpOptions: {\n\t\tdistance: number,\n\t\tpercent: number,\n\t};\n}\n\nlet appSwimUpInited = false;\nlet appSwimUpObserver: IntersectionObserver;\nconst appSwimUpEls = new Set<HTMLElementWithSwimUpOptions>();\nlet animationFrame: number | null = null;\n\n/**\n * Отодвинуть блок в зависимости от скролла старинцы\n * @param el\n * @param windowHeight\n */\nconst swimUpElTransform = (el: HTMLElementWithSwimUpOptions, windowHeight: number): void => {\n\tconst { distance, percent } = el.directiveSwimUpOptions;\n\tconst elTop = el.getBoundingClientRect().top;\n\n\tconst animationStart = windowHeight;\n\tconst animationEnd = windowHeight * (100 - percent) / 100;\n\tconst progress = (animationStart - elTop) / (animationStart - animationEnd);\n\tconst translateY = distance * (1 - Math.min(Math.max(progress, 0), 1));\n\n\tel.style.transform = `translateY(${translateY}px)`;\n};\n\nconst swimUpInit = (): void => {\n\tlet windowHeight = window.innerHeight;\n\n\twindow.addEventListener('scroll', () => {\n\t\tif (animationFrame !== null) return;\n\n\t\tanimationFrame = requestAnimationFrame(() => {\n\t\t\tappSwimUpEls.forEach((el) => swimUpElTransform(el, windowHeight));\n\t\t\tanimationFrame = null;\n\t\t});\n\t}, { passive: true });\n\n\t// проверка того, что элемент в зоне видимости\n\tappSwimUpObserver = new IntersectionObserver(entries => {\n\t\twindowHeight = window.innerHeight;\n\n\t\tentries.forEach((entry) => {\n\t\t\tconst el = entry.target as HTMLElementWithSwimUpOptions;\n\n\t\t\tif (entry.intersectionRatio < 0.01) {\n\t\t\t\t// элемент за областью видимости\n\t\t\t\tappSwimUpEls.delete(el);\n\t\t\t} else {\n\t\t\t\t// элемент на экране\n\t\t\t\tappSwimUpEls.add(el);\n\t\t\t}\n\n\t\t\tif (entry.intersectionRatio === 0) {\n\t\t\t\tconst { distance } = el.directiveSwimUpOptions;\n\t\t\t\tconst elTop = el.getBoundingClientRect().top;\n\n\t\t\t\tel.style.transform = `translateY(${elTop > 0 ? distance : 0}px)`;\n\t\t\t}\n\t\t});\n\t}, {\n\t\tthreshold: 0.01,\n\t});\n};\n\n/**\n * Добавление анимации подплытия вверх для блока\n */\nconst swimUp = {\n\tmounted(el: HTMLElementWithSwimUpOptions, binding: DirectiveBinding, _vnode: VNode): void {\n\t\tconst prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n\t\tif (Core.state.isMobileUA || prefersReducedMotion) return;\n\n\t\tconst options = {\n\t\t\tdistance: binding.value?.distance ?? 100, // количество px на которые блок изначально смещен вниз,\n\t\t\tpercent: binding.value?.percent ?? 30, // процент высоты экрана поднявшись на который блок закончит подплытие\n\t\t};\n\n\t\tif (options.percent <= 0) return;\n\n\t\tel.directiveSwimUpOptions = options;\n\n\t\tif (!appSwimUpInited) {\n\t\t\tswimUpInit();\n\n\t\t\tappSwimUpInited = true;\n\t\t}\n\n\t\tswimUpElTransform(el, window.innerHeight);\n\t\tappSwimUpObserver.observe(el);\n\t},\n\n\tunmounted(el: HTMLElementWithSwimUpOptions, _binding: DirectiveBinding, _vnode: VNode) {\n\t\tappSwimUpEls.delete(el);\n\t\tappSwimUpObserver?.unobserve(el);\n\t},\n};\n\nexport default swimUp;\n","import type { DirectiveBinding, ObjectDirective } from 'vue';\nimport Core from '@/core/core/core';\n\nconst $ = (el: HTMLElement) => {\n\tif (!Core.$?.ui?.tooltip) {\n\t\tconsole.info('Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip');\n\n\t\treturn;\n\t}\n\n\treturn Core.$(el);\n};\n\nconst tvTooltipGenOptions = (binding: DirectiveBinding, el: HTMLElement): JQueryUI.TooltipOptions => {\n\tconst options = {\n\t\t...(binding.value ?? {}),\n\t} as JQueryUI.TooltipOptions;\n\n\toptions.content ??= el.getAttribute('ui-tooltip-title') ?? el.getAttribute('title') ?? '';\n\toptions.content = String(options.content).replace(/([^<>])\\r?\\n([^<>])/g, '$1<br>$2');\n\n\toptions.position ??= {\n\t\tmy: 'bottom-18px',\n\t\tat: 'top center',\n\t\tcollision: 'flipfit',\n\t};\n\n\treturn options;\n};\n\n/**\n * Добавление всплывающей подсказки к элементу.\n */\nconst tooltip: ObjectDirective<HTMLElement> = {\n\tmounted(el, binding) {\n\t\t$(el)?.tooltip(tvTooltipGenOptions(binding, el));\n\t},\n\n\tupdated(el, binding) {\n\t\t/**\n\t\t * В результате обновления может быть открыто несколько тултипов поэтому изменить опции, без перерисовки тултипа\n\t\t */\n\t\tconst options = tvTooltipGenOptions(binding, el);\n\t\tconst instance = $(el)?.tooltip('instance') as { options: JQueryUI.TooltipOptions } | undefined;\n\n\t\tif (!instance) {\n\t\t\t$(el)?.tooltip(options);\n\t\t\treturn;\n\t\t}\n\n\t\tinstance.options = {\n\t\t\t...instance.options,\n\t\t\t...options,\n\t\t};\n\t},\n\n\tunmounted(el) {\n\t\t$(el)?.tooltip('destroy');\n\t},\n};\n\nexport default tooltip;\n","import { defineAsyncComponent, type Plugin } from 'vue';\nimport type { PartialBy } from '@/components/types';\n\nimport Core from '@/core/core/core';\nimport coreDefaultOptions from '@/core/core/options';\n\nimport * as Forms from '../../components/forms/forms';\nimport type { Options as TopPopupOptions } from '@/components/popup/lib/worker';\nimport TopPopupWorker from '@/components/popup/lib/worker';\nimport TopPopupWorkerGlobalEvents from '@/components/popup/lib/worker.globalEvents';\n\nimport TopDialogs from '@/components/dialog/dialog/dialogs/dialogs.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { TopDialogOptions } from '@/components/dialog/lib/types';\n\nimport directiveData from '@/core/directives/data';\nimport directiveFocus from '@/core/directives/focus';\nimport directiveScrollIntoView from '@/core/directives/scrollIntoView';\nimport directiveScrollShadow from '@/core/directives/scrollShadow';\nimport directiveShortcut from '@/core/directives/shortcut';\nimport directiveSticky from '@/core/directives/sticky';\nimport directiveSwimUp from '@/core/directives/swimUp';\nimport directiveTooltip from '@/core/directives/tooltip';\n\nconst TopNotice = defineAsyncComponent(() => import('@/components/core/notice/notice.vue'));\n\ndeclare global {\n\tconst vd: typeof console.log;\n}\n\nwindow['vd'] = console.log;\n\ndeclare module '@vue/runtime-core' {\n\tinterface ComponentCustomProperties {\n\t\t/**\n\t\t * Статический класс с текущим состоянием UI\n\t\t */\n\t\t$core: typeof Core;\n\n\t\t$vd: typeof console.log;\n\t}\n\n\t/**\n\t * Обязательные компоненты UI\n\t *\n\t * Они подключаются через плагин и доступны без явного указания импорта\n\t */\n\texport interface GlobalComponents {\n\t\tTopAvatar: typeof Forms.TopAvatar;\n\t\tTopButton: typeof Forms.TopButton;\n\t\tTopCheckbox: typeof Forms.TopCheckbox;\n\t\tTopControlLabel: typeof Forms.TopControlLabel;\n\t\tTopHint: typeof Forms.TopHint;\n\t\tTopInput: typeof Forms.TopInput;\n\t\tTopInputDate: typeof Forms.TopInputDate;\n\t\tTopInputRange: typeof Forms.TopInputRange;\n\t\tTopRadio: typeof Forms.TopRadio;\n\t\tTopSwitcher: typeof Forms.TopSwitcher;\n\t\tTopTextarea: typeof Forms.TopTextarea;\n\t\tTopSelect: typeof Forms.TopSelect;\n\t\tTopLoadbar: typeof Forms.TopLoadbar;\n\n\t\tTopNotice: typeof TopNotice;\n\t\tTopDialogs: typeof TopDialogs;\n\t}\n}\n\ntype CoreOptions = PartialBy<typeof coreDefaultOptions, 'documentClassModificators' | 'userId' | 'timezoneOffset' | 'closedByMod' | 'showGlobalRegionForKeywordsStats' | 'forceSearchersKeysForKeywordsStats'>;\n\ntype Options = CoreOptions & {\n\ttopPopupOptions?: TopPopupOptions\n\ttopDialogOptions?: TopDialogOptions\n};\n\n/**\n * Плагин для интеграции UI во Vue приложение\n *\n * - В глобальную область видимости шаблонов будет добавлен объект $core\n * - Будут зарегистрирвоаны директивы UI: https://ui.topvisor.com/?path=/docs/core-directives-focus--docs\n * - Будут подключены базовые компоненты UI/Forms: https://ui.topvisor.com/?path=/docs/components-forms-readme--docs\n */\nexport default {\n\n\tinstall: (app, options: Options) => {\n\t\tapp.config.globalProperties.$core = Core;\n\t\tapp.config.globalProperties.$vd = console.log;\n\n\t\t// начальные настройки UI\n\t\tfor (const name in options) {\n\t\t\tCore.state[name] = options[name];\n\t\t}\n\n\t\tif (options.widthForMobile) Core.widthForMobile = options.widthForMobile;\n\t\tif (options.themeName) Core.themeName = options.themeName;\n\n\t\tCore._setState();\n\n\t\tif (options.topPopupOptions) TopPopupWorker.options = options.topPopupOptions;\n\t\tTopPopupWorkerGlobalEvents.init();\n\n\t\tTopDialogWorker.init(options.topDialogOptions);\n\n\t\t// определение директив\n\t\tapp.directive('top-data', directiveData);\n\t\tapp.directive('top-focus', directiveFocus);\n\t\tapp.directive('top-scroll-into-view', directiveScrollIntoView);\n\t\tapp.directive('top-scroll-shadow', directiveScrollShadow);\n\t\tapp.directive('top-shortcut', directiveShortcut);\n\t\tapp.directive('top-sticky', directiveSticky);\n\t\tapp.directive('top-swim-up', directiveSwimUp);\n\t\tapp.directive('top-tooltip', directiveTooltip);\n\n\t\t// определение базовых компонентов\n\t\tapp.component('TopAvatar', Forms.TopAvatar);\n\t\tapp.component('TopButton', Forms.TopButton);\n\t\tapp.component('TopCheckbox', Forms.TopCheckbox);\n\t\tapp.component('TopControlLabel', Forms.TopControlLabel);\n\t\tapp.component('TopHint', Forms.TopHint);\n\t\tapp.component('TopInput', Forms.TopInput);\n\t\tapp.component('TopInputDate', Forms.TopInputDate);\n\t\tapp.component('TopInputRange', Forms.TopInputRange);\n\t\tapp.component('TopLoadbar', Forms.TopLoadbar);\n\t\tapp.component('TopRadio', Forms.TopRadio);\n\t\tapp.component('TopSelect', Forms.TopSelect);\n\t\tapp.component('TopSwitcher', Forms.TopSwitcher);\n\t\tapp.component('TopTextarea', Forms.TopTextarea);\n\n\t\tapp.component('TopNotice', TopNotice);\n\t\tapp.component('TopDialogs', TopDialogs);\n\t},\n\n} satisfies Plugin<Options>;\n","import type { PiniaPluginContext, Store } from 'pinia';\nimport { watch } from 'vue';\nimport { debounce } from '@/core/utils/lodash';\nimport { guestLinkToClipboard } from '@/core/utils/clipboard';\nimport { camelToSnakeCase } from '@/core/utils/string.js';\nimport { getHash, setHash } from '@/core/utils/route';\n\nclass PiniaTPA {\n\n\treadonly #storeId: string;\n\treadonly #store: Store<string, any>;\n\n\t/**\n\t * @deprecated\n\t */\n\treadonly #Page: any;\n\n\treadonly #user: any;\n\treadonly #Api: Api.Client<Api.TV.Paths, true>;\n\n\treadonly #namesUrlHash: string[] = [];\n\treadonly #namesStorage: string[] = [];\n\treadonly #namesStorageLocal: string[] = [];\n\treadonly #namesGuestLink: string[] = [];\n\n\tconstructor(context: Context) {\n\t\tthis.#store = context.store;\n\t\tthis.#storeId = this.#store.$id;\n\n\t\tthis.#Page = context.options.Page;\n\n\t\tthis.#user = context.options.user;\n\t\tthis.#Api = context.options.Api;\n\n\t\tthis.#namesUrlHash = context.options.tpaNamesUrlHash || [];\n\t\tthis.#namesStorage = context.options.tpaNamesStorage || [];\n\t\tthis.#namesStorageLocal = context.options.tpaNamesStorageLocal || [];\n\t\tthis.#namesGuestLink = context.options.tpaNamesGuestLink || [];\n\n\t\tcontext.store.genGuestLink = <Path extends Api.TV.Path>(path: Path, params: Api.TV.Params<Path>) => this.genGuestLink(path, params);\n\n\t\tif (!this.#user.guest_data?.data) {\n\t\t\tthis.#loadFromStorage();\n\t\t\tthis.#loadFromStorage(true);\n\n\t\t\t// настройки URL hash имеют приоритет\n\t\t\tthis.#loadFromHash();\n\t\t}\n\n\t\t// настройки гостевой ссылки имеют приоритет\n\t\tthis.#loadFromGuestLink();\n\n\t\tthis.#prepareParams();\n\n\t\tconst save = debounce(() => {\n\t\t\tthis.#saveInHash();\n\t\t\tthis.#saveInStorage();\n\t\t\tthis.#saveInStorage(true);\n\t\t});\n\n\t\tcontext.store.$subscribe(save);\n\t}\n\n\t/**\n\t * Сгенерировать гостевую ссылку\n\t *\n\t * Метод, путь к которому указан в path, должен возвращать сгенерированную ссылку\n\t */\n\tasync genGuestLink<Path extends Api.TV.Path>(path: Path, params: Api.TV.Params<Path>) {\n\t\tconst dataGuestLink = this.#genOptionsForGuestLink();\n\t\tparams = Object.assign(params, Object.fromEntries(dataGuestLink));\n\n\t\tconst res = await this.#Api.gen(path).setParams(params).call();\n\t\tif (res?.errors) return;\n\n\t\tconst link = res.result as string;\n\n\t\tawait guestLinkToClipboard(link);\n\t}\n\n\t/**\n\t * Сгенерировать опции для гостевой ссылки\n\t */\n\t#genOptionsForGuestLink() {\n\t\tconst data = new Map();\n\n\t\tthis.#namesGuestLink.forEach(name => {\n\t\t\t// формат параметров API: snake_case\n\t\t\tconst nameSnakeCase = camelToSnakeCase(name);\n\t\t\tdata.set(nameSnakeCase, this.#store[name]);\n\t\t});\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * Установить опции из объекта без фиксации состояния\n\t */\n\t#setOptions(data: Map<string, any>) {\n\t\tdata.forEach((value, name) => {\n\t\t\tconst currentValue = this.#store[name];\n\n\t\t\tif (value === null || value === undefined) return;\n\t\t\tif (currentValue === undefined) return;\n\t\t\tif (!value?.constructor) return;\n\t\t\tif (value.constructor !== currentValue.constructor) return;\n\n\t\t\t// дополнительная проверка на формат даты\n\t\t\tif (name.indexOf('date') === 0) {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t// value.forEach((valueI) => {\n\t\t\t\t\t// \tif (!/\\d\\d\\d\\d-\\d\\d-\\d\\d/.test(valueI)) return;\n\t\t\t\t\t// });\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof (value) === 'string') {\n\t\t\t\t\t\tif (!/\\d\\d\\d\\d-\\d\\d-\\d\\d/.test(value)) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.#store[name] = value;\n\t\t});\n\t}\n\n\t/**\n\t * Сгенерировать Map объект с опциями со значениями в виде json строк\n\t */\n\t#genDataFormat(data: Map<string, any>) {\n\t\tconst dataFormatted = new Map();\n\n\t\tdata.forEach((value, name) => {\n\t\t\tif (value === null) return;\n\n\t\t\tvalue = JSON.stringify(value);\n\n\t\t\tdataFormatted.set(name, value);\n\t\t});\n\n\t\treturn dataFormatted;\n\t}\n\n\t/**\n\t * Сгенерировать Map объект с опциями со значениями в оригинальном виде\n\t */\n\t#genDataUnFormat(dataFormatted: Map<string, string>) {\n\t\tconst data: Map<string, any> = new Map();\n\n\t\tdataFormatted.forEach((value, name) => {\n\t\t\tif (value === null || value === undefined || value === 'false') return;\n\n\t\t\ttry {\n\t\t\t\tif (typeof (value) === 'string' && !/^\\d\\d\\d\\d-\\d\\d-\\d\\d$/.test(value)) value = JSON.parse(value);\n\n\t\t\t\tif (value === null || value === undefined || value === 'false') return;\n\t\t\t} catch (_e) {\n\t\t\t\t// не json строка\n\t\t\t}\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * Установить опции из хеша адреса страницы\n\t */\n\t#loadFromHash() {\n\t\tlet dataHash: any;\n\t\ttry {\n\t\t\tdataHash = JSON.parse(getHash(this.#storeId));\n\t\t} catch (_e) {\n\n\t\t}\n\t\tif (!dataHash) return;\n\n\t\tconst data: Map<string, any> = new Map();\n\n\t\tthis.#namesUrlHash.forEach((name) => {\n\t\t\tconst value = dataHash[name];\n\t\t\tif (!value) return;\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\tthis.#setOptions(data);\n\t}\n\n\t/**\n\t * Сохранить опции в хеш адреса страницы\n\t */\n\t#saveInHash() {\n\t\tconst data = new Map();\n\n\t\tthis.#namesUrlHash.forEach((name) => {\n\t\t\tconst value = this.#store[name];\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\tconst dataObject = Object.fromEntries(data);\n\t\tconst dataJSON = JSON.stringify(dataObject);\n\n\t\tsetHash(this.#storeId, dataJSON);\n\t};\n\n\t/**\n\t * Установить опции из localStorage\n\t * @param isLocal - сохранить с учетом адреса страницы\n\t */\n\t#loadFromStorage(isLocal = false) {\n\t\tconst dataFormatted = new Map();\n\n\t\tlet names = this.#namesStorage;\n\t\tlet storageNamespace = 'state:' + this.#storeId;\n\n\t\tif (isLocal) {\n\t\t\tnames = this.#namesStorageLocal;\n\t\t\tstorageNamespace = 'state:' + this.#storeId + ':' + location.pathname;\n\t\t}\n\n\t\tnames.forEach((name) => {\n\t\t\tconst value = localStorage.getItem(storageNamespace + ':' + name);\n\t\t\tdataFormatted.set(name, value);\n\t\t});\n\n\t\tconst data = this.#genDataUnFormat(dataFormatted);\n\n\t\tthis.#setOptions(data);\n\t}\n\n\t/**\n\t * Сохранить опции в localStorage\n\t * @param isLocal - сохранить с учетом адреса страницы\n\t */\n\t#saveInStorage(isLocal = false) {\n\t\tconst data = new Map();\n\n\t\tlet names = this.#namesStorage;\n\t\tlet storageNamespace = 'state:' + this.#storeId;\n\n\t\tif (isLocal) {\n\t\t\tnames = this.#namesStorageLocal;\n\t\t\tstorageNamespace = 'state:' + this.#storeId + ':' + location.pathname;\n\t\t}\n\n\t\tnames.forEach((name) => {\n\t\t\tconst value = this.#store[name];\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\tconst dataFormatted = this.#genDataFormat(data);\n\n\t\tnames.forEach((name) => {\n\t\t\tconst value = dataFormatted.get(name);\n\n\t\t\tlocalStorage.setItem(storageNamespace + ':' + name, value);\n\t\t});\n\t}\n\n\t/**\n\t * Установить опции из гостевой ссылки\n\t */\n\t#loadFromGuestLink() {\n\t\tconst guestData = this.#user?.guest_data?.data;\n\t\tif (!guestData) return;\n\n\t\t// общие правила для гостевых сессий\n\t\tif (this.#user.id === -1) this.#user.positionsReverseDates = guestData.positionsReverseDates;\n\n\t\tconst dataFormatted = new Map();\n\n\t\tthis.#namesGuestLink.forEach((name) => {\n\t\t\tconst value = guestData[name];\n\t\t\tdataFormatted.set(name, value);\n\t\t});\n\n\t\tconst data = this.#genDataUnFormat(dataFormatted);\n\n\t\tthis.#setOptions(data);\n\n\t\tconst $guestTitle = $('.mod_guest_title');\n\n\t\t// TODO: вынести в опции плагина\n\t\tif (this.#store.competitorsIds?.length === 1 && this.#Page.page.data.competitors) {\n\t\t\tconst competitors = this.#Page.page.data.competitors.filter((competitor: any) => competitor.id === guestData.competitorsIds[0]);\n\t\t\tif (competitors.length) {\n\t\t\t\t$('a', $guestTitle).attr('href', 'http://' + competitors[0].url);\n\t\t\t\t$('a', $guestTitle).text(competitors[0].name);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Подготовить входные параметры перед инициализацией основного функционала\n\t *\n\t * Входные параметры устанавливаются при открытии страницы\n\t *\n\t * Входные параметры могут меняться пользоваталем и устаревать\n\t */\n\t#prepareParams() {\n\t\t// контролль за вводом регионов\n\t\t// TODO: вынести в опции плагина\n\t\tif (this.#store.regionsIndexes) {\n\t\t\twatch(this.#store.regionsIndexes, (regionsIndexes) => {\n\t\t\t\tif (!regionsIndexes.length) return;\n\n\t\t\t\t// приведение типа\n\t\t\t\tregionsIndexes.forEach((regionIndex: number, index: number) => regionsIndexes[index] = regionIndex);\n\n\t\t\t\t// оставить только включенные регионы\n\t\t\t\t// @ts-ignore\n\t\t\t\tconst mapSearchers = TplProjectSelectorRegion.genSearchersMap();\n\n\t\t\t\tconst availableRegionsIndexes: number[] = [];\n\t\t\t\tmapSearchers.forEach((searcher: any) => {\n\t\t\t\t\tsearcher.regions.forEach((region: any) => {\n\t\t\t\t\t\tif (region.index === -1) return;\n\n\t\t\t\t\t\tavailableRegionsIndexes.push(region.index);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tthis.#store.regionsIndexes = regionsIndexes.filter((regionIndex: number) => availableRegionsIndexes.includes(regionIndex));\n\t\t\t}, { immediate: true });\n\t\t}\n\n\t\t// контролль за вводом конкурентов\n\t\t// TODO: вынести в опции плагина\n\t\tif (this.#store.competitorsIds) {\n\t\t\twatch(this.#store.competitorsIds, (competitorsIds) => {\n\t\t\t\tif (!competitorsIds.length) return;\n\n\t\t\t\t// приведение типа\n\t\t\t\tcompetitorsIds.forEach((competitorId: number, index: number) => competitorsIds[index] = competitorId);\n\n\t\t\t\t// оставить только включенных конкурентов\n\t\t\t\tconst availableCompetitorsIds = [this.#Page.page.data.project.id];\n\t\t\t\tthis.#Page.page.data.project.competitors.forEach((competitor: any) => {\n\t\t\t\t\tif (competitor.on >= 0) availableCompetitorsIds.push(competitor.id);\n\t\t\t\t});\n\n\t\t\t\tthis.#store.competitorsIds = competitorsIds.filter((competitorId: number) => availableCompetitorsIds.includes(competitorId));\n\t\t\t}, { immediate: true });\n\t\t}\n\t}\n\n}\n\ntype Options = {\n\t/**\n\t * TODO: Убрать из плагина\n\t */\n\tPage: any,\n\n\t/**\n\t * Объект с настройками пользователя\n\t */\n\tuser: any,\n\n\t/**\n\t * Объект для работы с API\n\t *\n\t * См. на сайте: @/component/api/core/api.ts\n\t */\n\tApi: Api.Client<Api.TV.Paths, true>;\n\n\t/**\n\t * Имена свойств для сохранения в URL\n\t */\n\ttpaNamesUrlHash?: string[],\n\n\t/**\n\t * Имена свойств для сохранения в localStorage\n\t */\n\ttpaNamesStorage?: string[],\n\n\t/**\n\t * Имена свойств для сохранения в localStorage с учетом пути URL\n\t *\n\t * Каждый URL будет работать со своим состоянием\n\t */\n\ttpaNamesStorageLocal?: string[],\n\n\t/**\n\t * Имена свойств для работы с гостевой ссылкой\n\t *\n\t * Для генерации гостевой ссылки используйте store.genGuestLink(data, url)\n\t */\n\ttpaNamesGuestLink?: string[],\n};\n\ntype Context = PiniaPluginContext & {\n\toptions: Options\n};\n\n/**\n * Плагин tpa (Third-party access) для pinia\n *\n * Добавляет возможность сохранять и загружать данные в/из:\n * \t- URL hash в адресе страницы\n * \t- localStorage\n * \t- гостевая ссылка\n *\n * Для подключения плагина нужно указань одну или несколько опций при определении defineStore():\n * - tpaNamesUrlHash\n * - tpaNamesStorage\n * - tpaNamesStorageLocal\n * - tpaNamesGuestLink\n */\nexport default (contextPinia: PiniaPluginContext) => {\n\tconst context = contextPinia as Context;\n\n\t// плагин подключать не нужно\n\tif (\n\t\t!context.options.tpaNamesUrlHash?.length &&\n\t\t!context.options.tpaNamesStorage?.length &&\n\t\t!context.options.tpaNamesStorageLocal?.length &&\n\t\t!context.options.tpaNamesGuestLink?.length\n\t) {\n\t\treturn;\n\t}\n\n\tnew PiniaTPA(context);\n}\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`./utils-B1P0BzZ1.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`./dialog-BM4mfi7y.amd`,`vue`,`../require/css.amd!../assets/dialog_regionSelectorRegions.css`],function(e,t,n,r,i,a,o,s){"use strict";if(c===void 0)var c=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var l={class:`dialog_regionSelectorRegions_header`},u=[`data-top-icon`],d=[`src`,`alt`],f={class:`top-ellipsis`},p={class:`dialog_regionSelectorRegions_regionAreaName`},m={key:1},h=[`data-top-icon`];t.default=(0,s.defineComponent)({id:`regionSelectorRegions`,__name:`dialog_regionSelectorRegions`,props:{regions:{},regionsIndexes:{},"@update:regionsIndexes":{type:Function}},setup(e){let t=e,c=(0,r.r)(),g=(0,s.ref)([]),_=(0,s.ref)(null),v=(0,s.reactive)({searcher_key:-1,key:-1,name:-1}),y=(0,s.computed)({get(){return g.value.every(e=>e.selected)},set(e){g.value=g.value.map(t=>({...t,selected:e}))}}),b=e=>{v[e]=-v[e],g.value.sort((t,n)=>!t[e]||!n[e]?-1:t[e]>=n[e]?v[e]:-v[e])},x=()=>{if(!g.value.some(e=>e.selected))return;let e=g.value.filter(e=>e.selected).map(e=>e.index);t[`@update:regionsIndexes`]?.(e),c.close()};(0,s.watch)([()=>t.regions,()=>t.regionsIndexes],()=>{if(g.value=[],!t.regions||!t.regionsIndexes)return;let e=[...t.regions],n=new Map(t.regionsIndexes.map((e,t)=>[e,t]));e.sort((e,t)=>(n.get(e.index)??Number.MAX_VALUE)-(n.get(t.index)??Number.MAX_VALUE)),e.forEach(e=>{let n=e.name;e.areaName&&(n+=` (${e.areaName})`);let r=t.regionsIndexes?.includes(e.index)??!1,o=(0,a.getSearcherGIcon)(e.searcher_key),s=e.lang===void 0?void 0:(0,a.getLangLabel)(e.searcher_key??999,e.lang),c=e.device===void 0?void 0:(0,a.getDeviceGIcon)(e.device),l=e.countryCode===void 0?void 0:(0,i.genFlagLinkByCountryCode)(e.countryCode),u={...e,selected:r,title:n,searcherIcon:o,langLabel:s,deviceIcon:c,flagLink:l};g.value.push(u)})});let S=()=>{if(!n.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}_.value&&$(_.value).sortable({distance:10,stop:()=>{let e=[..._.value.children].map(e=>Number(e.getAttribute(`data-region-index`)));g.value.sort((t,n)=>e.indexOf(t.index)-e.indexOf(n.index))}})},C=()=>{n.O.$?.ui.sortable&&_.value&&$(_.value).sortable(`destroy`)};return(e,t)=>{let n=(0,s.resolveComponent)(`TopCheckbox`),i=(0,s.resolveComponent)(`TopButton`);return(0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(r.s),{id:(0,s.unref)(c).id,pageActive:`regions`,class:`dialog_regionSelectorRegions`,height:`600px`,width:`600px`,onOpen:S,onClose:C},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(o.r),{name:`regions`,order:0},{header:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,l,[(0,s.createVNode)(n,{modelValue:y.value,"onUpdate:modelValue":t[0]||=e=>y.value=e},null,8,[`modelValue`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[1]||=e=>b(`searcher_key`),title:e.$i18n.Projects?.Sort_by_search_engine},null,8,[`title`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[2]||=e=>b(`key`),title:e.$i18n.Projects?.Sort_by_yandex_region_code},null,8,[`title`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[3]||=e=>b(`name`),title:e.$i18n.Projects?.Sort_by_alphabetically},null,8,[`title`])])]),body:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,{ref_key:`elRegions`,ref:_},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(g.value,e=>((0,s.openBlock)(),(0,s.createBlock)(n,{key:e.index,modelValue:e.selected,"onUpdate:modelValue":t=>e.selected=t,class:`dialog_regionSelectorRegions_region`,"data-region-index":e.index},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,{class:`dialog_regionSelectorRegions_regionSearcherIcon`,"data-top-icon":e.searcherIcon},null,8,u),e.flagLink?((0,s.openBlock)(),(0,s.createElementBlock)(`img`,{key:0,class:`top-flag`,src:`//topvisor.dev`+e.flagLink,alt:e.countryCode},null,8,d)):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,f,[(0,s.createTextVNode)((0,s.toDisplayString)(e.name)+` `,1),(0,s.createElementVNode)(`span`,p,(0,s.toDisplayString)(e.areaName),1)]),e.langLabel?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,m,` [`+(0,s.toDisplayString)(e.langLabel)+`] `,1)):(0,s.createCommentVNode)(``,!0),e.deviceIcon?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:2,"data-top-icon":e.deviceIcon},null,8,h)):(0,s.createCommentVNode)(``,!0)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`data-region-index`]))),128))],512)]),footer:(0,s.withCtx)(()=>[(0,s.createVNode)(i,{onClick:x},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(e.$i18n.Common?.Apply),1)]),_:1})]),_:1})]),_:1},8,[`id`])}}})});
//# sourceMappingURL=dialog_regionSelectorRegions-CN3F-67P.amd.js.map
{"version":3,"sources":[".chunks/dialog_regionSelectorRegions-CN3F-67P.esm.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","vue_1","N","g","P","utils_B1P0BzZ1_esm_js_1","F","I","L","R","z","B","t","n","s","searchers_js_1","c","l","u","string_js_1","d","V","forms__4U0sLFk_esm_js_1","H","r","dialog_BM4mfi7y_esm_js_1"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-_4U0sLFk.esm.js\", \"./utils-B1P0BzZ1.esm.js\", \"../utils/string.js\", \"../utils/searchers.js\", \"./dialog-BM4mfi7y.esm.js\", \"vue\"], function (require, exports, forms__4U0sLFk_esm_js_1, utils_B1P0BzZ1_esm_js_1, string_js_1, searchers_js_1, dialog_BM4mfi7y_esm_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = void 0;\n //#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts\n var E = { class: \"dialog_regionSelectorRegions_header\" }, D = [\"data-top-icon\"], O = [\"src\", \"alt\"], k = { class: \"top-ellipsis\" }, A = { class: \"dialog_regionSelectorRegions_regionAreaName\" }, j = { key: 1 }, M = [\"data-top-icon\"], N = /* @__PURE__ */ (0, vue_1.defineComponent)({\n id: \"regionSelectorRegions\",\n __name: \"dialog_regionSelectorRegions\",\n props: {\n regions: {},\n regionsIndexes: {},\n \"@update:regionsIndexes\": { type: Function }\n },\n setup(g) {\n let N = g, P = (0, utils_B1P0BzZ1_esm_js_1.r)(), F = (0, vue_1.ref)([]), I = (0, vue_1.ref)(null), L = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), R = (0, vue_1.computed)({\n get() {\n return F.value.every((e) => e.selected);\n },\n set(e) {\n F.value = F.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), z = (e) => {\n L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);\n }, B = () => {\n if (!F.value.some((e) => e.selected))\n return;\n let e = F.value.filter((e) => e.selected).map((e) => e.index);\n N[\"@update:regionsIndexes\"]?.(e), P.close();\n };\n (0, vue_1.watch)([() => N.regions, () => N.regionsIndexes], () => {\n if (F.value = [], !N.regions || !N.regionsIndexes)\n return;\n let e = [...N.regions], t = new Map(N.regionsIndexes.map((e, t) => [e, t]));\n e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {\n let t = e.name;\n e.areaName && (t += ` (${e.areaName})`);\n let n = N.regionsIndexes?.includes(e.index) ?? !1, s = (0, searchers_js_1.getSearcherGIcon)(e.searcher_key), c = e.lang === void 0 ? void 0 : (0, searchers_js_1.getLangLabel)(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : (0, searchers_js_1.getDeviceGIcon)(e.device), u = e.countryCode === void 0 ? void 0 : (0, string_js_1.genFlagLinkByCountryCode)(e.countryCode), d = {\n ...e,\n selected: n,\n title: t,\n searcherIcon: s,\n langLabel: c,\n deviceIcon: l,\n flagLink: u\n };\n F.value.push(d);\n });\n });\n let V = () => {\n if (!forms__4U0sLFk_esm_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n I.value && $(I.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...I.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, H = () => {\n forms__4U0sLFk_esm_js_1.O.$?.ui.sortable && I.value && $(I.value).sortable(\"destroy\");\n };\n return (e, t) => {\n let r = (0, vue_1.resolveComponent)(\"TopCheckbox\"), i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.unref)(utils_B1P0BzZ1_esm_js_1.s), {\n id: (0, vue_1.unref)(P).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: V,\n onClose: H\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_BM4mfi7y_esm_js_1.r), {\n name: \"regions\",\n order: 0\n }, {\n header: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", E, [\n (0, vue_1.createVNode)(r, {\n modelValue: R.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => R.value = e\n }, null, 8, [\"modelValue\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[1] ||= (e) => z(\"searcher_key\"),\n title: e.$i18n.Projects?.Sort_by_search_engine\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[2] ||= (e) => z(\"key\"),\n title: e.$i18n.Projects?.Sort_by_yandex_region_code\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[3] ||= (e) => z(\"name\"),\n title: e.$i18n.Projects?.Sort_by_alphabetically\n }, null, 8, [\"title\"])\n ])]),\n body: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", {\n ref_key: \"elRegions\",\n ref: I\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(F.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: e.index,\n modelValue: e.selected,\n \"onUpdate:modelValue\": (t) => e.selected = t,\n class: \"dialog_regionSelectorRegions_region\",\n \"data-region-index\": e.index\n }, {\n default: (0, vue_1.withCtx)(() => [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"dialog_regionSelectorRegions_regionSearcherIcon\",\n \"data-top-icon\": e.searcherIcon\n }, null, 8, D),\n e.flagLink ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"img\", {\n key: 0,\n class: \"top-flag\",\n src: \"//topvisor.dev\" + e.flagLink,\n alt: e.countryCode\n }, null, 8, O)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createElementVNode)(\"div\", k, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.name) + \" \", 1), (0, vue_1.createElementVNode)(\"span\", A, (0, vue_1.toDisplayString)(e.areaName), 1)]),\n e.langLabel ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", j, \" [\" + (0, vue_1.toDisplayString)(e.langLabel) + \"] \", 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 2,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, M)) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]),\n _: 2\n }, 1032, [\n \"modelValue\",\n \"onUpdate:modelValue\",\n \"data-region-index\"\n ]))), 128))], 512)]),\n footer: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(i, { onClick: B }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.$i18n.Common?.Apply), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"id\"]);\n };\n }\n });\n exports.default = N;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-CN3F-67P.esm.js.map\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
/* start import css */
import { Core as _autoloadCSSCore } from '../core/app.js';
const fileNames = ['../assets/dialog_regionSelectorRegions.css'].map(fileName => import.meta.resolve(fileName));
_autoloadCSSCore.insertCSSLinkToPage(fileNames, true);
/* end import css */
import { O as e } from "./forms-_4U0sLFk.esm.js";
import { r as t, s as n } from "./utils-B1P0BzZ1.esm.js";
import { genFlagLinkByCountryCode as r } from "../utils/string.js";
import { getDeviceGIcon as i, getLangLabel as a, getSearcherGIcon as o } from "../utils/searchers.js";
import { r as s } from "./dialog-BM4mfi7y.esm.js";
import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, openBlock as _, reactive as v, ref as y, renderList as b, resolveComponent as x, toDisplayString as S, unref as C, watch as w, withCtx as T } from "vue";
//#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts
var E = { class: "dialog_regionSelectorRegions_header" }, D = ["data-top-icon"], O = ["src", "alt"], k = { class: "top-ellipsis" }, A = { class: "dialog_regionSelectorRegions_regionAreaName" }, j = { key: 1 }, M = ["data-top-icon"], N = /* @__PURE__ */ g({
id: "regionSelectorRegions",
__name: "dialog_regionSelectorRegions",
props: {
regions: {},
regionsIndexes: {},
"@update:regionsIndexes": { type: Function }
},
setup(g) {
let N = g, P = t(), F = y([]), I = y(null), L = v({
searcher_key: -1,
key: -1,
name: -1
}), R = l({
get() {
return F.value.every((e) => e.selected);
},
set(e) {
F.value = F.value.map((t) => ({
...t,
selected: e
}));
}
}), z = (e) => {
L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);
}, B = () => {
if (!F.value.some((e) => e.selected)) return;
let e = F.value.filter((e) => e.selected).map((e) => e.index);
N["@update:regionsIndexes"]?.(e), P.close();
};
w([() => N.regions, () => N.regionsIndexes], () => {
if (F.value = [], !N.regions || !N.regionsIndexes) return;
let e = [...N.regions], t = new Map(N.regionsIndexes.map((e, t) => [e, t]));
e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {
let t = e.name;
e.areaName && (t += ` (${e.areaName})`);
let n = N.regionsIndexes?.includes(e.index) ?? !1, s = o(e.searcher_key), c = e.lang === void 0 ? void 0 : a(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : i(e.device), u = e.countryCode === void 0 ? void 0 : r(e.countryCode), d = {
...e,
selected: n,
title: t,
searcherIcon: s,
langLabel: c,
deviceIcon: l,
flagLink: u
};
F.value.push(d);
});
});
let V = () => {
if (!e.$?.ui.sortable) {
console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");
return;
}
I.value && $(I.value).sortable({
distance: 10,
stop: () => {
let e = [...I.value.children].map((e) => Number(e.getAttribute("data-region-index")));
F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));
}
});
}, H = () => {
e.$?.ui.sortable && I.value && $(I.value).sortable("destroy");
};
return (e, t) => {
let r = x("TopCheckbox"), i = x("TopButton");
return _(), u(C(n), {
id: C(P).id,
pageActive: "regions",
class: "dialog_regionSelectorRegions",
height: "600px",
width: "600px",
onOpen: V,
onClose: H
}, {
default: T(() => [h(C(s), {
name: "regions",
order: 0
}, {
header: T(() => [p("div", E, [
h(r, {
modelValue: R.value,
"onUpdate:modelValue": t[0] ||= (e) => R.value = e
}, null, 8, ["modelValue"]),
h(i, {
class: "dialog_regionSelectorRegions_sortButton",
color: "theme",
"data-top-icon": "",
onClick: t[1] ||= (e) => z("searcher_key"),
title: e.$i18n.Projects?.Sort_by_search_engine
}, null, 8, ["title"]),
h(i, {
class: "dialog_regionSelectorRegions_sortButton",
color: "theme",
"data-top-icon": "",
onClick: t[2] ||= (e) => z("key"),
title: e.$i18n.Projects?.Sort_by_yandex_region_code
}, null, 8, ["title"]),
h(i, {
class: "dialog_regionSelectorRegions_sortButton",
color: "theme",
"data-top-icon": "",
onClick: t[3] ||= (e) => z("name"),
title: e.$i18n.Projects?.Sort_by_alphabetically
}, null, 8, ["title"])
])]),
body: T(() => [p("div", {
ref_key: "elRegions",
ref: I
}, [(_(!0), f(c, null, b(F.value, (e) => (_(), u(r, {
key: e.index,
modelValue: e.selected,
"onUpdate:modelValue": (t) => e.selected = t,
class: "dialog_regionSelectorRegions_region",
"data-region-index": e.index
}, {
default: T(() => [
p("div", {
class: "dialog_regionSelectorRegions_regionSearcherIcon",
"data-top-icon": e.searcherIcon
}, null, 8, D),
e.flagLink ? (_(), f("img", {
key: 0,
class: "top-flag",
src: "//topvisor.dev" + e.flagLink,
alt: e.countryCode
}, null, 8, O)) : d("", !0),
p("div", k, [m(S(e.name) + " ", 1), p("span", A, S(e.areaName), 1)]),
e.langLabel ? (_(), f("div", j, " [" + S(e.langLabel) + "] ", 1)) : d("", !0),
e.deviceIcon ? (_(), f("div", {
key: 2,
"data-top-icon": e.deviceIcon
}, null, 8, M)) : d("", !0)
]),
_: 2
}, 1032, [
"modelValue",
"onUpdate:modelValue",
"data-region-index"
]))), 128))], 512)]),
footer: T(() => [h(i, { onClick: B }, {
default: T(() => [m(S(e.$i18n.Common?.Apply), 1)]),
_: 1
})]),
_: 1
})]),
_: 1
}, 8, ["id"]);
};
}
});
//#endregion
export { N as default };
//# sourceMappingURL=dialog_regionSelectorRegions-CN3F-67P.esm.js.map
{"version":3,"file":"dialog_regionSelectorRegions-CN3F-67P.esm.js","names":[],"sources":["../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`./utils-B1P0BzZ1.amd`,`vue`],function(e,t,n,r,i){"use strict";if(a===void 0)var a=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.r=t.n=void 0;var o={key:0,style:{display:`none`}},s=[`data-order`,`data-view-page`],c={class:`modal-header`},l={class:`top-title`},u={class:`buttons`},d=[`title`],f=[`title`],p=[`data-order`,`data-view-page`],m={class:`modal-body`},h=(0,i.defineComponent)({__name:`page`,props:{isLoading:{type:Boolean},name:{},order:{default:0},prevName:{},footerFullWith:{type:Boolean}},setup(e,{slots:t}){let a=e,h=(0,r.r)(),g=(0,i.computed)(()=>({active:h.pageActive?.value===a.name,"i-load-data":a.isLoading||h.isLoadingPage.value}));return(r,a)=>{let _=(0,i.resolveDirective)(`top-scroll-shadow`);return(0,i.unref)(h).isReady.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,o,[((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`#`+(0,i.unref)(h).idAttr+` .modal-layer-header`,disabled:!(0,i.unref)(h).needShowPage(e.name)},[(0,i.createElementVNode)(`div`,{"data-order":e.order,"data-view-page":e.name,class:(0,i.normalizeClass)(g.value)},[(0,i.createElementVNode)(`div`,c,[(0,i.createElementVNode)(`div`,l,[(0,i.renderSlot)(r.$slots,`header`)]),(0,i.createElementVNode)(`div`,u,[(0,i.renderSlot)(r.$slots,`headerButtons`)]),(0,i.unref)(n.O).state.isMobile&&e.prevName?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:0,class:`close`,title:r.$i18n.Common.Back,"data-top-icon":``,onClick:a[0]||=t=>(0,i.unref)(h).open(e.prevName)},null,8,d)):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:1,class:`close`,title:r.$i18n.Common.Close,"data-top-icon":``,"data-action":`top-dialog-close`},null,8,f))])],10,s)],8,[`to`,`disabled`])),((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`#`+(0,i.unref)(h).idAttr+` .modal-layer-body`,disabled:!(0,i.unref)(h).needShowPage(e.name)},[(0,i.createElementVNode)(`div`,{"data-order":e.order,"data-view-page":e.name,class:(0,i.normalizeClass)([`has_scroll_container`,g.value]),style:(0,i.normalizeStyle)({"--top-dialog-footer-height":t.footer?void 0:`0px`})},[(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`div`,m,[(0,i.renderSlot)(r.$slots,`body`)])),[[_]]),t.footer?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:0,class:(0,i.normalizeClass)([`modal-footer`,{"modal-footer-fullWith":e.footerFullWith}])},[(0,i.renderSlot)(r.$slots,`footer`)],2)):(0,i.createCommentVNode)(``,!0)],14,p)],8,[`to`,`disabled`]))])):(0,i.createCommentVNode)(``,!0)}}}),g={name:{type:String,required:!0},order:{type:Number,required:!0},prevName:String,footerFullWith:Boolean},_=(0,i.defineComponent)({__name:`pageComponent`,props:{component:{},keepAlive:{type:Boolean,default:!0},props:{},name:{},order:{},prevName:{},footerFullWith:{type:Boolean}},setup(e){let t=e,n=(0,r.r)(),a=(e,r)=>{if(!r.value){if(e.name!==`AsyncComponentWrapper`){r.value=!0;return}n.needShowPage(t.name)&&(n.isLoadingPage.value=!0,e.__asyncResolved&&(r.value=!0,n.isLoadingPage.value=!1))}};if(t.component.name===`AsyncComponentWrapper`){let e=(0,i.ref)(!1);(0,i.onUpdated)(()=>{a(t.component,e)})}return(r,a)=>((0,i.openBlock)(),(0,i.createBlock)(i.KeepAlive,{include:e.keepAlive?``:`none`},[(0,i.unref)(n).needShowPage(e.name)?((0,i.openBlock)(),(0,i.createBlock)((0,i.resolveDynamicComponent)(e.component),(0,i.mergeProps)({key:0},t,{name:e.name,order:e.order,prevName:e.prevName}),null,16,[`name`,`order`,`prevName`])):(0,i.createCommentVNode)(``,!0)],1032,[`include`]))}});t.r=h,t.n=g,t.t=_});
//# sourceMappingURL=dialog-BM4mfi7y.amd.js.map
{"version":3,"sources":[".chunks/dialog-BM4mfi7y.esm.js","../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/types.ts","../../src/components/dialog/dialog/pageComponent/pageComponent.vue"],"names":["vue","exports","x","S","C","w","T","E","D","O","k","A","vue_1","l","u","n","p","utils_B1P0BzZ1_esm_js_1","h","t","forms__4U0sLFk_esm_js_1","j","M","r","i","s"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,uBAA2B,uBAA2B,KAAK,EAAG,SAAU,EAAS,EAAS,EAAyB,EAAyB,EAAO,CAC7K,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,EAAQ,EAAI,EAAQ,EAAI,EAAQ,EAAI,IAAK,GAEzC,IAAIC,EAAI,CACJ,IAAK,EACL,MAAO,CAAE,QAAS,MAAO,CAC7B,EAAGC,EAAI,CAAC,aAAc,gBAAgB,EAAGC,EAAI,CAAE,MAAO,cAAe,EAAGC,EAAI,CAAE,MAAO,WAAY,EAAGC,EAAI,CAAE,MAAO,SAAU,EAAGC,EAAI,CAAC,OAAO,EAAGC,EAAI,CAAC,OAAO,EAAGC,EAAI,CAAC,aAAc,gBAAgB,EAAGC,EAAI,CAAE,MAAO,YAAa,EAAGC,GAAqB,EAAGC,EAAM,gBAAe,CAAE,CAC1Q,OAAQ,OACR,MAAO,CACH,UAAW,CAAE,KAAM,OAAQ,EAC3B,KAAM,CAAC,EACP,MAAO,CAAE,QAAS,CAAE,EACpB,SAAU,CAAC,EACX,eAAgB,CAAE,KAAM,OAAQ,CACpC,ECVF,MAMA,EAAS,CAAiB,MAEhBC,GAAA,CAEN,IAAOC,EAAAC,EAAAC,GAAY,EAAAC,EAAgB,EAAA,CAAA,EAAAC,GAAA,EAAAN,EAAA,SAAA,MAAA,CAC3C,OAAqBI,EAAA,YAAoB,QAAAF,EAAc,KAExD,cAAAA,EAAA,WAAAE,EAAA,cAAA,KDEW,EAAE,EACF,OAAQ,EAAG,IAAM,CCGd,IAAAF,GAAQ,EAAAF,EAAA,iBA2DhB,CAAA,mBAzBM,EAhCU,OAAO,EAAAA,EAAM,MAAA,CAAAI,CAAA,CAAA,CAAA,QAAA,QAAA,EAAAJ,EAAA,UAAA,CAAA,GAAA,EAAAA,EAAA,mBAAA,CAAA,MAAAV,EAAA,GAAA,EAAAU,EAAA,UAAA,CAAA,GAAA,EAAAA,EAAA,YAAA,CAAAA,EAAA,SAAA,CAA8C,GAAA,KAAa,EAAAA,EAAI,MAAA,CAAAI,CAAA,CAAA,CAAA,OAAA,uBA+B1F,SAAA,EAAA,EAAAJ,EAAA,MAAA,CAAAI,CAAA,CAAA,CAAA,aAAAD,EAAA,IAAA,CA7BQ,EAAA,EAAA,EAAAH,EAAA,mBAAA,CAAA,MAAA,CACI,aAAAG,EAAA,MACF,iBAAAA,EAAA,KA0BT,OAAA,EAAAH,EAAA,eAAA,CAAAM,EAAA,KAAA,CAtBuB,EAAA,EAAA,EAAAN,EAAA,mBAAA,CAAA,MAAAR,EAAA,EAIO,EAAAQ,EAAA,mBAAA,CAAA,MAAAP,EAAA,EAAA,EAAAO,EAAA,WAAA,CAAAO,EAAA,OAAA,QAAA,CAAA,CAAA,GAIL,EAAAP,EAAA,mBAKvB,CAAA,MAAAN,EAAA,EAAA,EAAAM,EAAA,WAAA,CAAAO,EAAA,OAAA,eAAA,CAAA,CAAA,GDdqB,EAAGP,EAAM,MAAK,CAAEQ,EAAwB,CAAC,CAAC,CAAC,MAAM,UAAYL,EAAE,WAAa,EAAGH,EAAM,UAAS,CAAE,GAAI,EAAGA,EAAM,mBAAkB,CAAE,MAAO,CCU7J,IAAA,EACe,MAAA,QACP,MAAAO,EAAA,MAAA,OAAA,KACC,gBAAa,IAStB,QAAA,EAAA,KAAA,IAAA,EAAAP,EAAA,MAAA,CAAAI,CAAA,CAAA,CAAA,KAAAD,EAAA,QAAA,CDhBoB,EAAG,KAAM,EAAGR,CAAC,KAAO,EAAGK,EAAM,UAAS,CAAE,GAAI,EAAGA,EAAM,mBAAkB,CAAE,MAAO,CCYpG,IAAA,EACe,MAAA,QACP,MAAAO,EAAA,MAAA,OAAA,MACF,gBAAA,IDVkB,cAAe,kBACnB,EAAG,KAAM,EAAGX,CAAC,ECeT,CAAA,CAAA,EAAA,GAAAL,CAAA,CAAA,EAAA,EAAA,CAAA,KAAA,UAAA,CAAA,KAAA,EAAAS,EAAA,UAAA,CAAA,GAAA,EAAAA,EAAA,YAAA,CAAAA,EAAA,SAAA,CAA4C,GAAA,KAAa,EAAAA,EAAI,MAAA,CAAAI,CAAA,CAAA,CAAA,OAAA,qBAqBxF,SAAA,EAAA,EAAAJ,EAAA,MAAA,CAAAI,CAAA,CAAA,CAAA,aAAAD,EAAA,IAAA,CAnBQ,EAAA,EAAA,EAAAH,EAAA,mBAAA,CAAA,MAAA,CACI,aAAAG,EAAA,MACX,iBACSA,EAAA,KACT,OAAA,EAAAH,EAAiC,eAAgB,CAAA,CAAA,uBAASM,EAAA,KAAA,CAAA,EAG/D,OAAyB,EAAAN,EAAA,eAAA,CAQnB,CAAO,6BAGRC,EAAA,OAAA,IAAA,GAAA,KAAA,CAAA,CD1Bc,EAAG,EAAE,EAAGD,EAAM,eAAc,GAAI,EAAGA,EAAM,UAAS,CAAE,GAAI,EAAGA,EAAM,mBAAkB,CAAE,MAAOF,EAAG,EAAE,EAAGE,EAAM,WAAU,CAAEO,EAAE,OAAQ,MAAM,CAAC,CAAC,GAAI,CAAC,CAACL,CAAC,CAAC,CAAC,EAAGD,EAAE,SAAW,EAAGD,EAAM,UAAS,CAAE,GAAI,EAAGA,EAAM,mBAAkB,CAAE,MAAO,CCmB5N,IAAA,EAMO,OAAA,EAAAA,EAAA,eAAA,CAAA,CAAA,eAAA,CAAA,wBAAAG,EAAA,cAAA,CAAA,CAAA,CDtBJ,EAAG,EAAE,EAAGH,EAAM,WAAU,CAAEO,EAAE,OAAQ,QAAQ,CAAC,EAAG,CAAC,IAAM,EAAGP,EAAM,mBAAkB,CAAE,GAAI,CAAC,CAAC,CAAC,EAAG,GAAIH,CAAC,CAAC,EAAG,EAAG,CAAC,KAAM,UAAU,CAAC,EAAE,CAAC,IAAM,EAAGG,EAAM,mBAAkB,CAAE,GAAI,CAAC,CAAC,CACxL,CEZmB,CAC9B,CAAA,EAAMS,EAAA,CACC,KAAA,CACI,KAAA,OACX,SAAA,CAAA,CAEO,EACA,MAAA,CACI,KAAA,OACX,SAAA,CAAA,CAEA,EAEA,SAAgB,OACjB,eAAA,OFWI,EAAGC,GAAqB,EAAGV,EAAM,gBAAe,CAAE,CAC9C,OAAQ,gBACR,MAAO,CACH,UAAW,CAAC,EACZ,UAAW,CACP,KAAM,QACN,QAAS,CAAC,CACd,EACA,MAAO,CAAC,EACR,KAAM,CAAC,EACP,MAAO,CAAC,EACR,SAAU,CAAC,EACX,eAAgB,CAAE,KAAM,OAAQ,CACpC,EGhFF,MAIA,EAAS,CAMD,IAAAW,EAEb,EAAAC,GAAA,EAAAP,EAAA,EAAA,CAAA,EAAAQ,GAAA,EAAA,IAAA,CAAc,GAAS,CAAAN,EAAA,MAAA,CACL,GAAA,EAAA,OAAA,wBAAA,CAEjB,EAAA,MAAA,CAAA,EACD,MAEyB,CAFzBK,EAAA,aAAAD,EAAA,IAAA,IAAA,EAAA,cAAA,MAAA,CAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,cAAA,MAAA,CAAA,GAYD,CAEU,EACQ,GAASA,EAAA,UAAA,OAAA,wBAAA,CAEV,IAAA,GAAA,EAAAX,EAAA,IAAA,CAAA,CAAA,CAAA,GACgB,EAAmBA,EAAA,UAAA,KAAA,CAClDa,EAAAF,EAAA,UAAA,CAAA,CACF,CAAA,CH4DY,CGlDF,OAAA,EAAA,MAAA,EAAAX,EAAA,UAAA,CAAA,GAAA,EAAAA,EAAA,YAAA,CAAAA,EAAA,UAAA,CAAA,QAAA,EAAA,UAAA,GAAA,MAAA,EAAA,EAAA,EAAAA,EAAA,MAAA,CAAAY,CAAA,CAAA,CAAA,aAAA,EAAA,IAAA,IAAA,EAAAZ,EAAA,UAAA,CAAA,GAAA,EAAAA,EAAA,YAAA,EAAA,EAAAA,EAAA,wBAAA,CAAA,EAAA,SAAA,GAAA,EAAAA,EAAA,WAAA,CAAA,CAAA,IAAA,CAAA,EAAAW,EAAA,CACC,KAAA,EAAA,KACG,MAAA,EAAA,MHoDM,SAAU,EAAE,QAChB,CAAC,EAAG,KAAM,GAAI,CACV,OACA,QACA,UACJ,CAAC,IAAM,EAAGX,EAAM,mBAAkB,CAAE,GAAI,CAAC,CAAC,CAAC,EAAG,KAAM,CAAC,SAAS,CAAC,EACvE,CACJ,CAAC,EACD,EAAQ,EAAID,EACZ,EAAQ,EAAIU,EACZ,EAAQ,EAAIC,CAChB,CAAC","sourcesContent":["define([\"require\", \"exports\", \"./forms-_4U0sLFk.esm.js\", \"./utils-B1P0BzZ1.esm.js\", \"vue\"], function (require, exports, forms__4U0sLFk_esm_js_1, utils_B1P0BzZ1_esm_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = exports.r = exports.n = void 0;\n //#region src/components/dialog/dialog/page/page.vue?vue&type=script&setup=true&lang.ts\n var x = {\n key: 0,\n style: { display: \"none\" }\n }, S = [\"data-order\", \"data-view-page\"], C = { class: \"modal-header\" }, w = { class: \"top-title\" }, T = { class: \"buttons\" }, E = [\"title\"], D = [\"title\"], O = [\"data-order\", \"data-view-page\"], k = { class: \"modal-body\" }, A = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"page\",\n props: {\n isLoading: { type: Boolean },\n name: {},\n order: { default: 0 },\n prevName: {},\n footerFullWith: { type: Boolean }\n },\n setup(n, { slots: l }) {\n let u = n, p = (0, utils_B1P0BzZ1_esm_js_1.r)(), h = (0, vue_1.computed)(() => ({\n active: p.pageActive?.value === u.name,\n \"i-load-data\": u.isLoading || p.isLoadingPage.value\n }));\n return (t, i) => {\n let u = (0, vue_1.resolveDirective)(\"top-scroll-shadow\");\n return (0, vue_1.unref)(p).isReady.value ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", x, [((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.Teleport, {\n to: \"#\" + (0, vue_1.unref)(p).idAttr + \" .modal-layer-header\",\n disabled: !(0, vue_1.unref)(p).needShowPage(n.name)\n }, [(0, vue_1.createElementVNode)(\"div\", {\n \"data-order\": n.order,\n \"data-view-page\": n.name,\n class: (0, vue_1.normalizeClass)(h.value)\n }, [(0, vue_1.createElementVNode)(\"div\", C, [\n (0, vue_1.createElementVNode)(\"div\", w, [(0, vue_1.renderSlot)(t.$slots, \"header\")]),\n (0, vue_1.createElementVNode)(\"div\", T, [(0, vue_1.renderSlot)(t.$slots, \"headerButtons\")]),\n (0, vue_1.unref)(forms__4U0sLFk_esm_js_1.O).state.isMobile && n.prevName ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 0,\n class: \"close\",\n title: t.$i18n.Common.Back,\n \"data-top-icon\": \"\",\n onClick: i[0] ||= (e) => (0, vue_1.unref)(p).open(n.prevName)\n }, null, 8, E)) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 1,\n class: \"close\",\n title: t.$i18n.Common.Close,\n \"data-top-icon\": \"\",\n \"data-action\": \"top-dialog-close\"\n }, null, 8, D))\n ])], 10, S)], 8, [\"to\", \"disabled\"])), ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.Teleport, {\n to: \"#\" + (0, vue_1.unref)(p).idAttr + \" .modal-layer-body\",\n disabled: !(0, vue_1.unref)(p).needShowPage(n.name)\n }, [(0, vue_1.createElementVNode)(\"div\", {\n \"data-order\": n.order,\n \"data-view-page\": n.name,\n class: (0, vue_1.normalizeClass)([\"has_scroll_container\", h.value]),\n style: (0, vue_1.normalizeStyle)({ \"--top-dialog-footer-height\": l.footer ? void 0 : \"0px\" })\n }, [(0, vue_1.withDirectives)(((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", k, [(0, vue_1.renderSlot)(t.$slots, \"body\")])), [[u]]), l.footer ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 0,\n class: (0, vue_1.normalizeClass)([\"modal-footer\", { \"modal-footer-fullWith\": n.footerFullWith }])\n }, [(0, vue_1.renderSlot)(t.$slots, \"footer\")], 2)) : (0, vue_1.createCommentVNode)(\"\", !0)], 14, O)], 8, [\"to\", \"disabled\"]))])) : (0, vue_1.createCommentVNode)(\"\", !0);\n };\n }\n }), j = {\n name: {\n type: String,\n required: !0\n },\n order: {\n type: Number,\n required: !0\n },\n prevName: String,\n footerFullWith: Boolean\n }, M = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"pageComponent\",\n props: {\n component: {},\n keepAlive: {\n type: Boolean,\n default: !0\n },\n props: {},\n name: {},\n order: {},\n prevName: {},\n footerFullWith: { type: Boolean }\n },\n setup(e) {\n let r = e, i = (0, utils_B1P0BzZ1_esm_js_1.r)(), s = (e, t) => {\n if (!t.value) {\n if (e.name !== \"AsyncComponentWrapper\") {\n t.value = !0;\n return;\n }\n i.needShowPage(r.name) && (i.isLoadingPage.value = !0, e.__asyncResolved && (t.value = !0, i.isLoadingPage.value = !1));\n }\n };\n if (r.component.name === \"AsyncComponentWrapper\") {\n let e = (0, vue_1.ref)(!1);\n (0, vue_1.onUpdated)(() => {\n s(r.component, e);\n });\n }\n return (t, s) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.KeepAlive, { include: e.keepAlive ? \"\" : \"none\" }, [(0, vue_1.unref)(i).needShowPage(e.name) ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.resolveDynamicComponent)(e.component), (0, vue_1.mergeProps)({ key: 0 }, r, {\n name: e.name,\n order: e.order,\n prevName: e.prevName\n }), null, 16, [\n \"name\",\n \"order\",\n \"prevName\"\n ])) : (0, vue_1.createCommentVNode)(\"\", !0)], 1032, [\"include\"]));\n }\n });\n exports.r = A;\n exports.n = j;\n exports.t = M;\n});\n//# sourceMappingURL=dialog-BM4mfi7y.esm.js.map\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","export interface Props extends PropsCommon {\n\t/**\n\t * Статус загрузки страницы диалогового окна\n\t *\n\t * При включении взаимодействие со страницей блокируется, отображается анимация загрузки\n\t */\n\tisLoading?: boolean;\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n */\nexport interface PropsCommon {\n\t/**\n\t * Имя страницы для диалогового окна\n\t *\n\t * Имя страницы нужно для навигации между страницами в одном диалоговом окне\n\t */\n\tname: string,\n\n\t/**\n\t * Порядкой номер страницы в диалоговом окне\n\t *\n\t * Одна и та же страница может быть подключена в разные диалоговые окна и иметь разный порядковый номер\n\t */\n\torder: number,\n\n\t/**\n\t * Имя предыдущей страницы\n\t *\n\t * Для кнопки Назад / Закрыть в мобильной версии\n\t */\n\tprevName?: string,\n\n\t/**\n\t * Стиль отображения футера, при котороым элементы растягиваются на всю ширину\n\t *\n\t * Разрешены переносы\n\t */\n\tfooterFullWith?: boolean,\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n *\n * Для не SFC компонентов\n */\nexport const propsPageCommon = {\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\n\torder: {\n\t\ttype: Number,\n\t\trequired: true,\n\t},\n\n\tprevName: String,\n\n\tfooterFullWith: Boolean,\n};\n\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: Record<string, unknown>): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: Record<string, unknown>): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: Record<string, unknown>): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: Record<string, unknown>): any;\n}\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n"]}
import { O as e } from "./forms-_4U0sLFk.esm.js";
import { r as t } from "./utils-B1P0BzZ1.esm.js";
import { KeepAlive as n, Teleport as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, defineComponent as l, mergeProps as u, normalizeClass as d, normalizeStyle as f, onUpdated as p, openBlock as m, ref as h, renderSlot as g, resolveDirective as _, resolveDynamicComponent as v, unref as y, withDirectives as b } from "vue";
//#region src/components/dialog/dialog/page/page.vue?vue&type=script&setup=true&lang.ts
var x = {
key: 0,
style: { display: "none" }
}, S = ["data-order", "data-view-page"], C = { class: "modal-header" }, w = { class: "top-title" }, T = { class: "buttons" }, E = ["title"], D = ["title"], O = ["data-order", "data-view-page"], k = { class: "modal-body" }, A = /* @__PURE__ */ l({
__name: "page",
props: {
isLoading: { type: Boolean },
name: {},
order: { default: 0 },
prevName: {},
footerFullWith: { type: Boolean }
},
setup(n, { slots: l }) {
let u = n, p = t(), h = i(() => ({
active: p.pageActive?.value === u.name,
"i-load-data": u.isLoading || p.isLoadingPage.value
}));
return (t, i) => {
let u = _("top-scroll-shadow");
return y(p).isReady.value ? (m(), s("div", x, [(m(), a(r, {
to: "#" + y(p).idAttr + " .modal-layer-header",
disabled: !y(p).needShowPage(n.name)
}, [c("div", {
"data-order": n.order,
"data-view-page": n.name,
class: d(h.value)
}, [c("div", C, [
c("div", w, [g(t.$slots, "header")]),
c("div", T, [g(t.$slots, "headerButtons")]),
y(e).state.isMobile && n.prevName ? (m(), s("div", {
key: 0,
class: "close",
title: t.$i18n.Common.Back,
"data-top-icon": "",
onClick: i[0] ||= (e) => y(p).open(n.prevName)
}, null, 8, E)) : (m(), s("div", {
key: 1,
class: "close",
title: t.$i18n.Common.Close,
"data-top-icon": "",
"data-action": "top-dialog-close"
}, null, 8, D))
])], 10, S)], 8, ["to", "disabled"])), (m(), a(r, {
to: "#" + y(p).idAttr + " .modal-layer-body",
disabled: !y(p).needShowPage(n.name)
}, [c("div", {
"data-order": n.order,
"data-view-page": n.name,
class: d(["has_scroll_container", h.value]),
style: f({ "--top-dialog-footer-height": l.footer ? void 0 : "0px" })
}, [b((m(), s("div", k, [g(t.$slots, "body")])), [[u]]), l.footer ? (m(), s("div", {
key: 0,
class: d(["modal-footer", { "modal-footer-fullWith": n.footerFullWith }])
}, [g(t.$slots, "footer")], 2)) : o("", !0)], 14, O)], 8, ["to", "disabled"]))])) : o("", !0);
};
}
}), j = {
name: {
type: String,
required: !0
},
order: {
type: Number,
required: !0
},
prevName: String,
footerFullWith: Boolean
}, M = /* @__PURE__ */ l({
__name: "pageComponent",
props: {
component: {},
keepAlive: {
type: Boolean,
default: !0
},
props: {},
name: {},
order: {},
prevName: {},
footerFullWith: { type: Boolean }
},
setup(e) {
let r = e, i = t(), s = (e, t) => {
if (!t.value) {
if (e.name !== "AsyncComponentWrapper") {
t.value = !0;
return;
}
i.needShowPage(r.name) && (i.isLoadingPage.value = !0, e.__asyncResolved && (t.value = !0, i.isLoadingPage.value = !1));
}
};
if (r.component.name === "AsyncComponentWrapper") {
let e = h(!1);
p(() => {
s(r.component, e);
});
}
return (t, s) => (m(), a(n, { include: e.keepAlive ? "" : "none" }, [y(i).needShowPage(e.name) ? (m(), a(v(e.component), u({ key: 0 }, r, {
name: e.name,
order: e.order,
prevName: e.prevName
}), null, 16, [
"name",
"order",
"prevName"
])) : o("", !0)], 1032, ["include"]));
}
});
//#endregion
export { j as n, A as r, M as t };
//# sourceMappingURL=dialog-BM4mfi7y.esm.js.map
{"version":3,"file":"dialog-BM4mfi7y.esm.js","names":[],"sources":["../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/types.ts","../../src/components/dialog/dialog/pageComponent/pageComponent.vue","../../src/components/dialog/dialog/pageComponent/pageComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","export interface Props extends PropsCommon {\n\t/**\n\t * Статус загрузки страницы диалогового окна\n\t *\n\t * При включении взаимодействие со страницей блокируется, отображается анимация загрузки\n\t */\n\tisLoading?: boolean;\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n */\nexport interface PropsCommon {\n\t/**\n\t * Имя страницы для диалогового окна\n\t *\n\t * Имя страницы нужно для навигации между страницами в одном диалоговом окне\n\t */\n\tname: string,\n\n\t/**\n\t * Порядкой номер страницы в диалоговом окне\n\t *\n\t * Одна и та же страница может быть подключена в разные диалоговые окна и иметь разный порядковый номер\n\t */\n\torder: number,\n\n\t/**\n\t * Имя предыдущей страницы\n\t *\n\t * Для кнопки Назад / Закрыть в мобильной версии\n\t */\n\tprevName?: string,\n\n\t/**\n\t * Стиль отображения футера, при котороым элементы растягиваются на всю ширину\n\t *\n\t * Разрешены переносы\n\t */\n\tfooterFullWith?: boolean,\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n *\n * Для не SFC компонентов\n */\nexport const propsPageCommon = {\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\n\torder: {\n\t\ttype: Number,\n\t\trequired: true,\n\t},\n\n\tprevName: String,\n\n\tfooterFullWith: Boolean,\n};\n\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: Record<string, unknown>): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: Record<string, unknown>): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: Record<string, unknown>): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: Record<string, unknown>): any;\n}\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`./field-DEusYVqS.amd`,`../utils/keyboard.amd`,`./popup-DViuKwOc.amd`,`vue`,`./api-BD74aA98.amd`,`../require/css.amd!../assets/formsExt.css`],function(e,t,n,r,i,a,o){"use strict";if(s===void 0)var s=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.u=t.t=t.s=t.r=t.p=t.o=t.n=t.l=t.i=t.f=t.d=t.c=t.a=void 0;var c={key:0,class:`top-menu_selectAll`},l=(0,o.defineComponent)({__name:`menu`,props:(0,o.mergeModels)({modelValue:{},items:{},isMultiple:{type:Boolean},canBeEmptyMultiple:{type:Boolean},styling:{default:`default`},selectAllItem:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,r=(0,o.useModel)(e,`modelValue`),i=(0,o.ref)();!t.isMultiple&&typeof r.value!=`string`&&typeof r.value!=`number`&&console.warn(`Type check failed for prop "modelValue". Expected String: `+typeof r.value),t.isMultiple&&!Array.isArray(r.value)&&console.warn(`Type check failed for prop "modelValue". Expected Array: `+typeof r.value),t.isMultiple&&!t.canBeEmptyMultiple&&Array.isArray(r.value)&&!r.value.length&&t.items[0]&&(r.value=[t.items[0]?.href??t.items[0]?.value]);let a=e=>Array.isArray(r.value)?r.value.includes(e.value):e.value===r.value,s=(e,n=!1)=>{if(Array.isArray(r.value)){let i=r.value.slice();if(n){i.length||(i=t.items.map(e=>e.value));let n=i.indexOf(e.value);n===-1?i.push(e.value):i.splice(n,1)}else i=i.length===1&&i[0]===e.value?[]:[e.value];!t.canBeEmptyMultiple&&!i.length&&(i=[e.value]),r.value=i;return}r.value=e.value},l=e=>{if(i.value.scrollWidth<=i.value.offsetWidth||e.shiftKey||Math.abs(e.deltaY)<50)return;e.preventDefault();let t=e.deltaY>0?30:-30;i.value.scrollLeft=i.value.scrollLeft+t},u=(e=!0)=>{let t=i.value.querySelector(`.top-active`);if(!t)return;let r=t.offsetLeft-i.value.offsetLeft-24,a=t.offsetLeft-i.value.offsetLeft+t.clientWidth+24,o=i.value.scrollLeft,s=i.value.clientWidth+i.value.scrollLeft,c;r<o&&(c=r),a>s&&(c=a-i.value.clientWidth),c!==void 0&&((0,n.G)()?n.O.$?.(i.value).animate({scrollLeft:c},e?200:0):i.value.scrollTo({left:c,behavior:e?`smooth`:`auto`}))},d=()=>{if(Array.isArray(r.value)){if(r.value.length===t.items.length){r.value=[t.items[0].href??t.items[0].value];return}r.value=t.items.map(e=>e.href??e.value)}};return(0,o.onMounted)(()=>u(!1)),(0,o.onUpdated)(()=>u(!0)),(t,u)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{ref_key:`el`,ref:i,class:(0,o.normalizeClass)({"top-menu":!0,[`top-style_`+e.styling]:!0}),onWheel:l},[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.items,e=>((0,o.openBlock)(),(0,o.createBlock)(n.h,(0,o.mergeProps)({ref_for:!0},e,{class:`top-menu_item`,color:`theme`,onClick:t=>s(e,t.ctrlKey||t.metaKey),isActive:a(e)}),(0,o.createSlots)({_:2},[e.content?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.content),1)]),key:`0`}:void 0]),1040,[`onClick`,`isActive`]))),256)),Array.isArray(r.value)&&e.selectAllItem?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,c,[(0,o.createVNode)(n.h,(0,o.mergeProps)(e.selectAllItem,{class:`top-menu_item`,color:`theme`,styling:``,onClick:u[0]||=e=>d(),isActive:r.value.length===e.items.length}),(0,o.createSlots)({_:2},[e.selectAllItem.content?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.selectAllItem.content),1)]),key:`0`}:void 0]),1040,[`isActive`])])):(0,o.createCommentVNode)(``,!0)],34))}}),u={class:`top-selector2_itemMulti top-ellipsis`},d=(0,o.defineComponent)({__name:`itemMulti`,props:{id:{},name:{}},emits:[`delete`],setup(e,{emit:t}){return(n,r)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,u,[(0,o.createTextVNode)((0,o.toDisplayString)(e.name)+` `,1),(0,o.createElementVNode)(`span`,{class:`top-selector2_itemMultiDelete`,"data-top-icon":``,onClick:r[0]||=n=>t(`delete`,{id:e.id,name:e.name}),onMousedown:r[1]||=(0,o.withModifiers)(()=>{},[`stop`])},null,32)]))}}),f=new Map,p=new Map,m=new Map,h=e=>(m.has(e)||m.set(e,(0,o.ref)(0)),m.get(e)),g=e=>{h(e).value++},_=e=>{f.get(e)?.clear(),g(e)},v=(e,t)=>{f.get(e)?.forEach(e=>t(e))},y=(e,t)=>{p.get(e)?.forEach(e=>t(e))},b=(e,t,n)=>{y(e,e=>{let r=!1;if(Array.isArray(e.value))e.value.filter(e=>e.id===t).forEach(e=>{Object.assign(e,n),r=!0});else{if(e.value.id!==t)return;Object.assign(e.value,n),r=!0}r&&(0,o.triggerRef)(e)})},x=e=>{let t=window.mo?.user?.id;return JSON.stringify(e.params)+`:`+e.url+`:`+t},S=(e,t)=>{let n=f.get(t)?.get(e);if(n)return n.result=n.result.map(e=>({...e})),n},C=(e,t,n)=>{f.has(t)||f.set(t,new Map),f.get(t)?.set(e,n)},w=(e,t)=>{p.has(e)||p.set(e,new Set),p.get(e)?.add(t),(0,o.onUnmounted)(()=>p.get(e)?.delete(t))},T=(e,t,n)=>{v(e,e=>{let r=e.result.find(e=>e.id===t);r&&Object.assign(r,n)}),b(e,t,n),g(e)},E=(e,t)=>{v(e,e=>{let n=e.result.findIndex(e=>e.id===t);n!==-1&&(e.result.splice(n,1),e.nextOffset&&e.nextOffset--)}),b(e,t,{name:`--`}),g(e)},D=(e,t,r,i,a)=>{let s=(0,o.ref)([]),c=(0,o.ref)(!1),l=(0,o.ref)(0),u=``,d;e&&!e.params.limit&&(e.params.limit=100),e&&w(e.path,a);let f=()=>{if(!e)return;e.params.offset=0;let t=S(x(e),e.path);if(!t){s.value=[],d=void 0;return}s.value=t.result,d=t.nextOffset};e&&i&&(0,o.watch)(h(e.path),()=>{f()});let p=async()=>{if(!e)return;let t=i?x(e):void 0;if(t){let n=S(t,e.path);if(n)return e.abortByFingerprint(),n}let n=await e.call();if(n.errors)return;if(!Array.isArray(n.result)){console.warn("Array expected in `res.result`");return}let r=n.result.findIndex(e=>e.id===void 0||e.name===void 0);if(r!==-1){console.warn(`В result[${r}] нет id или name`);return}return t&&C(t,e.path,n),n},m=async n=>{if(!e)return;if(n){if(!d||c.value)return;e.params.offset=d}else e.params.offset=0;t?.(e,u),c.value=!0;let r=await p();c.value=!1,l.value++,r&&(d=r.nextOffset,n?s.value=s.value.concat(r.result):s.value=r.result)},g=(0,n.P)(()=>m(!1),200);return{apiRequest:e,items:s,isLoading:c,countLoading:l,load:m,setSearchTextAndLoad:(t,n=!0)=>{if(e){if(t.length<r){e.abortByFingerprint(),s.value=[];return}t===u&&s.value.length||(u=t,n?g():m(!1))}}}},O=0,k=null,A=(e,t,n=!0)=>n&&t.id===null?Array.isArray(e)?e.some(e=>e.id===t.id&&e.name===t.name):t.name===e.name:Array.isArray(e)?e.some(e=>e.id===t.id):t.id===e.id,j=(e,t,n)=>{let i=e.params.filters??[];i=i.filter(e=>e.name!==n),t&&i.push((0,r.t)(n,`CONTAINS`,[t])),e.changeParams({filters:i})},M=(e,t,r,a)=>{let s=(0,o.ref)(``),c={id:0,name:(0,n.E)().Common.All},l=()=>{s.value=``},u=()=>!(!a.apiRequest||s.value.length>=t.minLength),d=(0,o.computed)(()=>{let e=[];return!t.multiselect&&t.useAllItem&&(typeof t.useAllItem==`string`&&(c.name=t.useAllItem),e.push(c)),t.items?.forEach(t=>e.push(t)),e}),f=(0,o.ref)([]),p=(0,o.ref)(t.itemsChunkSize),m=()=>{f.value=_()},h=()=>{!t.itemsChunkSize||p.value===void 0||(p.value+=t.itemsChunkSize)},g=()=>{t.itemsChunkSize&&(p.value=t.itemsChunkSize)},_=()=>{let n=s.value.toLowerCase(),r=(0,i.invertKeyboardLayout)(n),o=[],c,l=[],u=()=>{l.at(-1)?.listItemProps?.type===`delimiter`&&l.pop(),l.length&&=(c&&o.push(c),o.push(...l),0)},f=e=>{let i=t.searchFields?.includes(`id`),a=e.name.toLowerCase(),o=t.searchFields?.filter(e=>e!==`id`).map(t=>typeof e[t]==`string`||typeof e[t]==`number`?e[t]:``).join(`☼`).toLowerCase();(i&&e.id===Number(n)||o?.includes(n)||o?.includes(r))&&(a===n||a===r?l.unshift(e):l.push(e))};for(let e of d.value)switch(e.listItemProps?.type){case`title`:u(),c=e;break;case`delimiter`:if(l.length){let t=l.length;l.at(-1)?.listItemProps?.type===`delimiter`&&t--,l[t]=e}break;default:f(e)}if(u(),o.push(...a.items.value),t.itemsChunkSize&&!a.apiRequest&&(o=o.slice(0,p.value)),t.appendSearchToResult&&s.value&&(!t.appendSearchToResultCond||t.appendSearchToResultCond(n))&&(t.appendSearchAllowDuplicate||!o.find(e=>e.name.toLowerCase()===n))){let e={id:null,name:s.value};t.appendWithoutSelect&&(e.listItemProps={closeByClick:!1}),o.push(e)}return t.multiselect&&(o=o.filter(t=>!A(e.value,t))),t.prepareItemsBeforeRender&&(o=t.prepareItemsBeforeRender(o)),o},v=n=>{n.listItemProps?.type===`title`||n.listItemProps?.type===`delimiter`||n.id===null&&(r(`appendItem`,n),t.appendWithoutSelect)||(t.multiselect&&Array.isArray(e.value)?A(e.value,n)||(e.value=[...e.value,n]):e.value=n,setTimeout(()=>{l()}))};if(a.apiRequest){let n=[()=>t.items,a.items];t.multiselect&&n.push(e),(0,o.watch)(n,()=>{m()},{deep:2})}else(0,o.watch)(s,()=>{g()}),(0,o.watch)([e,()=>t.items,s,p],()=>{m()},{immediate:!0,deep:2}),(0,o.watch)([()=>t.items?.length??0,()=>t.items],(n,r)=>{(n[0]<r[0]||n[1]!==r[1])&&(Array.isArray(e.value)?e.value:[e.value]).forEach(e=>{e.id!==c.id&&(t.items?.find(t=>t.id===e.id)||(e.name=`--`))})});return{searchText:s,resetSearch:l,genIsShort:u,itemsForShow:f,revelItemsForShow:h,resetItemsForShow:g,selectItem:v,selectNextItem:()=>{if(Array.isArray(e.value))return;let t=f.value.filter(e=>![`title`,`delimiter`].includes(e.listItemProps?.type??``));e.value={...t[(t.findIndex(t=>t.id===e.value.id)+1)%t.length]}},deleteItemByItem:async t=>{Array.isArray(e.value)&&(e.value=e.value.filter(e=>e.id!==t.id||e.name!==t.name))}}},N={key:0,class:`top-selector2_activeItems`},P={key:1,class:`top-selector2_activeName top-ellipsis`},F={key:2,class:`top-selector2_placeholder top-ellipsis`},I={class:`top-selector2_searchWidget`},L=(0,o.defineComponent)({__name:`selector2`,props:(0,o.mergeModels)({modelValue:{},items:{default:()=>[]},itemsChunkSize:{},itemsIsLoading:{type:Boolean},title:{},disabled:{type:Boolean},icon:{},modificator:{},size:{default:`s`},isError:{type:Boolean},openByFocusInput:{type:Boolean,default:void 0},searchType:{default:`popup`},searchFields:{default:()=>[`id`,`name`]},placeholder:{},hasCloserBtn:{type:Boolean},prepareItemsBeforeRender:{},api:{},apiSetSearchParams:{},minLength:{default:0},useCache:{type:Boolean},appendSearchToResult:{type:Boolean},appendSearchAllowDuplicate:{type:Boolean},appendSearchToResultCond:{},appendWithoutSelect:{type:Boolean},multiselect:{type:Boolean},useAllItem:{type:[Boolean,String]},addChanger:{type:Boolean},buttonProps:{},selectedAsPlaceholder:{type:Boolean},openerShortcut:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:(0,o.mergeModels)([`appendItem`,`open`],[`update:modelValue`]),setup(e,{expose:t,emit:r,slots:i}){let s=e,c=(0,o.useModel)(e,`modelValue`),l=r,u=(0,o.computed)(()=>s.searchType===`inline`&&s.multiselect||s.searchType===`inline`&&n.O.state.isMobile?`popup`:s.searchType),f=D(s.api,s.apiSetSearchParams,s.minLength,s.useCache,c),p=M(c,s,l,f),m=(0,o.computed)(()=>s.buttonProps?`TopButton`:u.value===`inline`?`TopInput`:`div`),h=(0,o.ref)(null),g=(0,o.ref)(null),v=()=>h.value?.popup;f.apiRequest&&(0,o.watch)(p.searchText,()=>{f.setSearchTextAndLoad(p.searchText.value)});let y=(0,o.computed)(()=>Array.isArray(c.value)||s.multiselect||!s.selectedAsPlaceholder&&u.value!==`inline`?s.placeholder:c.value?.name||s.placeholder),b=e=>{let t=!1;switch(e.key){case`Delete`:case`Backspace`:Array.isArray(c.value)&&(e.preventDefault(),e.stopPropagation(),c.value.pop());break;case`ArrowUp`:case`ArrowRight`:case`ArrowDown`:case`ArrowLeft`:case`Enter`:case` `:t=!0;break;case`Escape`:u.value===`inline`&&p.resetSearch()}let n=e.key.length===1&&!e.ctrlKey&&!e.metaKey;(u.value===`popup`||u.value===`inline`)&&n&&(t=!0),v()?.elPopup&&(t=!1),t&&(u.value===`popup`&&(e.preventDefault(),e.stopPropagation(),n&&(p.searchText.value||(p.searchText.value=e.key))),e.currentTarget?.click())},x=e=>{e.preventDefault(),p.selectNextItem()},S=()=>{f.apiRequest&&f.setSearchTextAndLoad(p.searchText.value,!1),l(`open`)},C=()=>{p.resetItemsForShow(),u.value===`popup`&&p.searchText.value&&p.resetSearch()},w=e=>{let t=e.target;t.scrollTop/(t.scrollHeight-t.offsetHeight)>.8&&(s.api?f.load(!0):p.revelItemsForShow())};return t({getPopup:v,popupOpenerRef:g,resetCache:(e=!1)=>{f.apiRequest&&(e&&_(f.apiRequest.path),f.items.value=[],f.countLoading.value=0,f.apiRequest.params.offset=0,requestAnimationFrame(()=>{p.itemsForShow.value=[]}),v()?.elPopup&&f.setSearchTextAndLoad(p.searchText.value))},updateCacheItemById:(e,t)=>{f.apiRequest&&T(f.apiRequest.path,e,t)},deleteCacheItemById:e=>{f.apiRequest&&E(f.apiRequest.path,e)}}),(t,r)=>{let s=(0,o.resolveComponent)(`TopLoadbar`),l=(0,o.resolveDirective)(`top-focus`),_=(0,o.resolveDirective)(`top-shortcut`);return(0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(a.s),{ref_key:`popupRef`,ref:h,onOpen:r[3]||=e=>S(),onClose:r[4]||=e=>C(),onScrollContentList:r[5]||=e=>w(e),notch:!1,transitionDuration:0,openByFocusInput:u.value===`inline`&&(e.openByFocusInput??!0),disabled:u.value===`inline`&&(0,o.unref)(p).genIsShort()},(0,o.createSlots)({opener:(0,o.withCtx)(()=>[(0,o.withDirectives)(((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(m.value),(0,o.mergeProps)({ref_key:`popupOpenerRef`,ref:g},e.buttonProps,{class:{"top-selector2":!0,"top-selector2-multiselect":e.multiselect,[`top-selector2-`+e.modificator]:!!e.modificator,"top-as-input":!e.buttonProps&&u.value!==`inline`,"top-as-selector":!0,[`top-size_`+e.size]:!0,"top-disabled":e.disabled,"top-forms-focusable":!e.disabled,"top-error":e.isError},icon:e.icon,tabindex:`0`,onKeydown:b,onBlur:r[0]||=e=>u.value===`inline`&&(0,o.unref)(p).resetSearch(),placeholder:y.value,title:e.title,captionType:u.value===`inline`&&e.title!==void 0?`top`:void 0,modelValue:(0,o.unref)(p).searchText.value,"onUpdate:modelValue":r[1]||=e=>(0,o.unref)(p).searchText.value=e}),{default:(0,o.withCtx)(()=>[e.multiselect?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,N,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(c.value,e=>((0,o.openBlock)(),(0,o.createBlock)(d,{key:e.id??void 0,id:e.id,name:e.name,onDelete:(0,o.unref)(p).deleteItemByItem},null,8,[`id`,`name`,`onDelete`]))),128))])):(0,o.createCommentVNode)(``,!0),u.value!==`inline`&&!e.multiselect?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,P,(0,o.toDisplayString)(Array.isArray(c.value)?``:c.value.name),1)):(0,o.createCommentVNode)(``,!0),e.multiselect&&!c.value.length?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,F,(0,o.toDisplayString)(y.value),1)):(0,o.createCommentVNode)(``,!0),e.addChanger&&!e.buttonProps&&!e.multiselect&&(0,o.unref)(p).itemsForShow.value.length>1&&!e.disabled?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,{key:3,class:`top-changer top-changer-selector`,"data-top-popup-disabled":`true`,onClick:x})):(0,o.createCommentVNode)(``,!0)]),_:1},16,[`class`,`icon`,`placeholder`,`title`,`captionType`,`modelValue`])),[[l,e.isError,void 0,{onupdate:!0}],[_,e.openerShortcut]])]),contentList:(0,o.withCtx)(()=>[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)((0,o.unref)(p).itemsForShow.value,r=>((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(a.o),(0,o.mergeProps)({key:r.id??void 0,class:{"top-active":!Array.isArray(c.value)&&!e.multiselect&&c.value.id===r.id&&c.value.name===r.name,"top-selector2_item-all":r.id===(0,o.unref)(0),"top-selector2_item-new":r.id===(0,o.unref)(null)},closeByClick:!e.multiselect||(0,o.unref)(n.O).state.isMobile},{ref_for:!0},r.listItemProps,{onClick:e=>(0,o.unref)(p).selectItem(r)}),(0,o.createSlots)({default:(0,o.withCtx)(()=>[i.item?(0,o.renderSlot)(t.$slots,`item`,{item:r},void 0,void 0,0):((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:1},[(0,o.createTextVNode)((0,o.toDisplayString)(r.name),1)],64))]),_:2},[i.actions?{name:`actions`,fn:(0,o.withCtx)(()=>[(0,o.renderSlot)(t.$slots,`actions`,{item:r})]),key:`0`}:void 0]),1040,[`class`,`closeByClick`,`onClick`]))),128)),!(0,o.unref)(p).itemsForShow.value.length&&!(0,o.unref)(p).genIsShort()?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(a.o),{key:0,type:`regular`},{default:(0,o.withCtx)(()=>[(0,o.unref)(f).isLoading.value&&!(0,o.unref)(f).countLoading.value||e.itemsIsLoading?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(n.t),{key:0,type:`circles`})):((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:1},[(0,o.createTextVNode)((0,o.toDisplayString)(t.$i18n.Common.No_results),1)],64))]),_:1})):(0,o.createCommentVNode)(``,!0),(0,o.unref)(f).countLoading.value&&(0,o.unref)(f).isLoading.value&&u.value===`inline`?((0,o.openBlock)(),(0,o.createBlock)(s,{key:1})):(0,o.createCommentVNode)(``,!0)]),_:2},[u.value===`popup`?{name:`widget`,fn:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,I,[(0,o.withDirectives)((0,o.createVNode)((0,o.unref)(a.a),{title:`Поиск`,icon:``,modelValue:(0,o.unref)(p).searchText.value,"onUpdate:modelValue":r[2]||=e=>(0,o.unref)(p).searchText.value=e,isLoading:!!(0,o.unref)(f).countLoading.value&&(0,o.unref)(f).isLoading.value,placeholder:y.value},null,8,[`modelValue`,`isLoading`,`placeholder`]),[[l,c.value,void 0,{onupdate:!0}]]),e.hasCloserBtn&&!t.$core.state.isMobile?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(n.h),{key:0,class:`closer`,color:`theme`},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(t.$i18n.Common.Cancel),1)]),_:1})):(0,o.createCommentVNode)(``,!0)])]),key:`0`}:void 0]),1032,[`openByFocusInput`,`disabled`])}}}),R={class:`top-editArea_footer`},z=(0,o.defineComponent)({__name:`editArea`,props:{defaultValue:{default:``},title:{},cancelText:{default:`Cancel`},submitText:{default:`Send`},closeText:{default:`Close`},isFocused:{type:Boolean},forceShowCloseBtn:{type:Boolean},attachToKeyboard:{type:Boolean},modelValue:{},name:{},placeholder:{},styling:{},rows:{},minHeight:{},expandable:{type:Boolean,default:!0},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{},maxLength:{}},emits:[`submit`,`close`,`clickOnTitle`],setup(e,{emit:t,slots:r}){let i=e,a=t,s=(0,o.ref)(i.defaultValue),c=(0,o.ref)(i.isFocused),l=(0,o.computed)(()=>s.value!==i.defaultValue),u=e=>{a(`submit`,e),s.value=i.defaultValue},d=()=>{if(i.forceShowCloseBtn&&!l.value){a(`close`);return}s.value=i.defaultValue},f=()=>{i.attachToKeyboard&&a(`clickOnTitle`)};return(t,i)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:(0,o.normalizeClass)({"top-editArea":!0,"top-editArea-attachedToKeyboard":e.attachToKeyboard})},[e.title||r.caption?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{key:0,class:`top-editArea_caption`,onClick:i[0]||=e=>f()},[(0,o.renderSlot)(t.$slots,`caption`,{},()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.title),1)])])):(0,o.createCommentVNode)(``,!0),(0,o.createElementVNode)(`div`,{class:(0,o.normalizeClass)({"top-editArea_form":!0,"top-forms-focusable":!0,"top-as-input":!0,"top-error":e.isError,"top-focus":c.value})},[(0,o.createVNode)(n.r,{modelValue:s.value,"onUpdate:modelValue":i[1]||=e=>s.value=e,name:e.name,placeholder:e.placeholder,rows:e.rows,minHeight:e.minHeight,expandable:e.expandable,disabled:e.disabled,readonly:e.readonly,isError:e.isError,hint:e.hint,class:`top-editArea_element`,onFocus:i[2]||=()=>c.value=!0,onBlur:i[3]||=()=>c.value=!1,onKeyup:[(0,o.withKeys)(d,[`esc`]),i[4]||=(0,o.withKeys)((0,o.withModifiers)(e=>u(s.value),[`ctrl`]),[`enter`])]},null,8,[`modelValue`,`name`,`placeholder`,`rows`,`minHeight`,`expandable`,`disabled`,`readonly`,`isError`,`hint`]),(0,o.createElementVNode)(`div`,R,[l.value||e.forceShowCloseBtn?((0,o.openBlock)(),(0,o.createBlock)(n.h,{key:0,icon:t.$core.state.isMobile?``:``,class:`top-editArea_button`,color:`theme`,styling:`soft`,onClick:d},(0,o.createSlots)({_:2},[t.$core.state.isMobile?void 0:{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.cancelText),1)]),key:`0`}]),1032,[`icon`])):(0,o.createCommentVNode)(``,!0),l.value?((0,o.openBlock)(),(0,o.createBlock)(n.h,{key:1,class:`top-editArea_button`,icon:t.$core.state.isMobile?``:``,onClick:i[5]||=e=>u(s.value)},(0,o.createSlots)({_:2},[t.$core.state.isMobile?void 0:{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.submitText),1)]),key:`0`}]),1032,[`icon`])):(0,o.createCommentVNode)(``,!0)])],2)],2))}}),B={class:`top-editInput`},V=(0,o.defineComponent)({__name:`editInput`,props:{modelValue:{},alwaysShowSubmitBtn:{type:Boolean},input:{},button:{}},emits:[`update:modelValue`],setup(e,{emit:t,slots:r}){let i=e,a=(0,o.ref)(i.modelValue);(0,o.watch)(()=>i.modelValue,()=>{a.value=i.modelValue});let s=t,c=()=>{s(`update:modelValue`,a.value)};return(t,i)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,B,[(0,o.createVNode)(n.c,(0,o.mergeProps)(e.input,{onKeydownCapture:i[0]||=(0,o.withKeys)((0,o.withModifiers)(t=>a.value=e.modelValue,[`stop`]),[`esc`]),onKeydown:(0,o.withKeys)((0,o.withModifiers)(c,[`stop`]),[`enter`]),modelValue:a.value,"onUpdate:modelValue":i[1]||=e=>a.value=e}),(0,o.createSlots)({_:2},[r.caption?{name:`caption`,fn:(0,o.withCtx)(()=>[(0,o.renderSlot)(t.$slots,`caption`)]),key:`0`}:void 0]),1040,[`onKeydown`,`modelValue`]),a.value!==e.modelValue||e.alwaysShowSubmitBtn?((0,o.openBlock)(),(0,o.createBlock)(n.h,(0,o.mergeProps)({key:0,icon:``,styling:`soft`},e.button,{onClick:c}),null,16)):(0,o.createCommentVNode)(``,!0)]))}}),H=(0,o.defineComponent)({__name:`optionGroup`,props:(0,o.mergeModels)({modelValue:{},items:{},size:{default:`s`},showIndicator:{type:Boolean},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=(0,o.useModel)(e,`modelValue`),r=e,i=(0,o.ref)(null);(0,o.watch)(t,()=>{let e=r.items.map(e=>e.value);Array.isArray(t.value)?t.value.find(t=>!e.includes(t))&&(t.value=t.value.filter(t=>e.includes(t))):e.includes(t.value)||(t.value=e[0]??``),i.value?.querySelector(`.radioGroup_item-selected`)?.scrollIntoView()},{immediate:!0});let a=`optionGroup-`+Math.random();return(r,s)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{ref_key:`elRef`,ref:i,class:(0,o.normalizeClass)({"top-optionGroup":!0,[`top-optionGroup-showIndicator_`+Number(e.showIndicator)]:!0,"top-scrollBarXHidding":!0,[`top-size_`+e.size]:!!e.size,"top-error":e.isError})},[Array.isArray(t.value)?((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,{key:0},(0,o.renderList)(e.items,r=>((0,o.openBlock)(),(0,o.createBlock)(n.f,{class:(0,o.normalizeClass)({"top-optionGroup_item-selected":t.value.includes(r.value),"top-optionGroup_item":!0}),modelValue:t.value,"onUpdate:modelValue":s[0]||=e=>t.value=e,value:r.value,title:r.title,disabled:r.disabled,isError:e.isError,"data-top-icon":r.icon},(0,o.createSlots)({_:2},[r.label?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(r.label),1)]),key:`0`}:void 0]),1032,[`class`,`modelValue`,`value`,`title`,`disabled`,`isError`,`data-top-icon`]))),256)):((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,{key:1},(0,o.renderList)(e.items,r=>((0,o.openBlock)(),(0,o.createBlock)(n.a,{class:(0,o.normalizeClass)({"top-optionGroup_item-selected":r.value===t.value,"top-optionGroup_item":!0}),modelValue:t.value,"onUpdate:modelValue":s[1]||=e=>t.value=e,name:a,value:r.value,title:r.title,disabled:r.disabled,isError:e.isError,"data-top-icon":r.icon},(0,o.createSlots)({_:2},[r.label?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(r.label),1)]),key:`0`}:void 0]),1032,[`class`,`modelValue`,`value`,`title`,`disabled`,`isError`,`data-top-icon`]))),256))],2))}}),U=(0,o.defineComponent)({__name:`radioGroup`,props:(0,o.mergeModels)({modelValue:{},items:{},size:{},showIndicator:{type:Boolean},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,o.useModel)(e,`modelValue`);return(e,r)=>((0,o.openBlock)(),(0,o.createBlock)(H,{class:`top-radioGroup`,modelValue:n.value,"onUpdate:modelValue":r[0]||=e=>n.value=e,items:t.items,size:t.size,showIndicator:t.showIndicator,isError:t.isError},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(e.$slots,`default`)]),_:3},8,[`modelValue`,`items`,`size`,`showIndicator`,`isError`]))}}),W=(0,o.defineComponent)({__name:`checkboxGroup`,props:(0,o.mergeModels)({modelValue:{},items:{},size:{},showIndicator:{type:Boolean},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,o.useModel)(e,`modelValue`);return(e,r)=>((0,o.openBlock)(),(0,o.createBlock)(H,{class:`top-checkboxGroup`,modelValue:n.value,"onUpdate:modelValue":r[0]||=e=>n.value=e,items:t.items,size:t.size,showIndicator:t.showIndicator,isError:t.isError},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(e.$slots,`default`)]),_:3},8,[`modelValue`,`items`,`size`,`showIndicator`,`isError`]))}}),G=[`data-top-icon`],K={class:`top-info_text`},q={key:0,class:`top-info_value`},J=(0,o.defineComponent)({__name:`info`,props:{icon:{},styling:{default:`default`},size:{default:`default`}},setup(e,{slots:t}){return(n,r)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:(0,o.normalizeClass)({"top-info":!0,[`top-size_`+e.size]:!0,[`top-info-styling_`+e.styling]:!0}),"data-top-icon":e.icon},[(0,o.createElementVNode)(`div`,K,[(0,o.renderSlot)(n.$slots,`default`)]),t.additional?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,q,[(0,o.renderSlot)(n.$slots,`additional`)])):(0,o.createCommentVNode)(``,!0)],10,G))}}),Y={key:0,class:`top-policy`},X={class:`top-policy_title`},Z=[`innerHTML`],Q=(0,o.defineComponent)({__name:`policy`,props:{title:{},description:{},acceptText:{}},emits:[`accept`],setup(e,{emit:t}){let r=t,i=(0,o.ref)(!0),a=()=>{i.value=!1,r(`accept`)};return(t,r)=>i.value?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,Y,[(0,o.createElementVNode)(`div`,X,(0,o.toDisplayString)(e.title),1),(0,o.createElementVNode)(`div`,{class:`top-policy_description`,innerHTML:e.description},null,8,Z),(0,o.createVNode)((0,o.unref)(n.h),{size:`m`,onClick:a},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.acceptText),1)]),_:1})])):(0,o.createCommentVNode)(``,!0)}}),$={class:`top-banner`},ee={class:`top-banner_text`},te=(0,o.defineComponent)({__name:`banner`,props:{titleClose:{default:``}},emits:[`close`],setup(e,{emit:t}){let r=t;return(t,i)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,$,[(0,o.createElementVNode)(`div`,ee,[(0,o.renderSlot)(t.$slots,`default`)]),e.titleClose?((0,o.openBlock)(),(0,o.createBlock)(n.h,{key:0,size:`s`,onClick:i[0]||=e=>r(`close`)},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.titleClose),1)]),_:1})):(0,o.createCommentVNode)(``,!0)]))}});t.p=l,t.f=_,t.l=O,t.u=k,t.d=j,t.c=L,t.s=z,t.o=V,t.a=U,t.i=W,t.r=J,t.n=Q,t.t=te});
//# sourceMappingURL=formsExt-oTFg1-Nv.amd.js.map

Sorry, the diff of this file is too big to display

/* start import css */
import { Core as _autoloadCSSCore } from '../core/app.js';
const fileNames = ['../assets/formsExt.css'].map(fileName => import.meta.resolve(fileName));
_autoloadCSSCore.insertCSSLinkToPage(fileNames, true);
/* end import css */
import "./api-BD74aA98.esm.js";
import { E as e, G as t, O as n, P as r, a as i, c as a, f as o, h as s, r as c, t as l } from "./forms-_4U0sLFk.esm.js";
import { t as u } from "./field-DEusYVqS.esm.js";
import { invertKeyboardLayout as d } from "../utils/keyboard.js";
import { a as f, o as p, s as m } from "./popup-DViuKwOc.esm.js";
import { Fragment as h, computed as g, createBlock as _, createCommentVNode as v, createElementBlock as y, createElementVNode as b, createSlots as x, createTextVNode as S, createVNode as C, defineComponent as w, mergeModels as T, mergeProps as E, normalizeClass as D, onMounted as O, onUnmounted as k, onUpdated as A, openBlock as j, ref as M, renderList as N, renderSlot as P, resolveComponent as ee, resolveDirective as F, resolveDynamicComponent as te, toDisplayString as I, triggerRef as L, unref as R, useModel as z, watch as B, withCtx as V, withDirectives as H, withKeys as U, withModifiers as W } from "vue";
//#region src/components/formsExt/menu/menu.vue?vue&type=script&setup=true&lang.ts
var G = {
key: 0,
class: "top-menu_selectAll"
}, K = /* @__PURE__ */ w({
__name: "menu",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
isMultiple: { type: Boolean },
canBeEmptyMultiple: { type: Boolean },
styling: { default: "default" },
selectAllItem: {}
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let r = e, i = z(e, "modelValue"), a = M();
!r.isMultiple && typeof i.value != "string" && typeof i.value != "number" && console.warn("Type check failed for prop \"modelValue\". Expected String: " + typeof i.value), r.isMultiple && !Array.isArray(i.value) && console.warn("Type check failed for prop \"modelValue\". Expected Array: " + typeof i.value), r.isMultiple && !r.canBeEmptyMultiple && Array.isArray(i.value) && !i.value.length && r.items[0] && (i.value = [r.items[0]?.href ?? r.items[0]?.value]);
let o = (e) => Array.isArray(i.value) ? i.value.includes(e.value) : e.value === i.value, c = (e, t = !1) => {
if (Array.isArray(i.value)) {
let n = i.value.slice();
if (t) {
n.length || (n = r.items.map((e) => e.value));
let t = n.indexOf(e.value);
t === -1 ? n.push(e.value) : n.splice(t, 1);
} else n = n.length === 1 && n[0] === e.value ? [] : [e.value];
!r.canBeEmptyMultiple && !n.length && (n = [e.value]), i.value = n;
return;
}
i.value = e.value;
}, l = (e) => {
if (a.value.scrollWidth <= a.value.offsetWidth || e.shiftKey || Math.abs(e.deltaY) < 50) return;
e.preventDefault();
let t = e.deltaY > 0 ? 30 : -30;
a.value.scrollLeft = a.value.scrollLeft + t;
}, u = (e = !0) => {
let r = a.value.querySelector(".top-active");
if (!r) return;
let i = r.offsetLeft - a.value.offsetLeft - 24, o = r.offsetLeft - a.value.offsetLeft + r.clientWidth + 24, s = a.value.scrollLeft, c = a.value.clientWidth + a.value.scrollLeft, l;
i < s && (l = i), o > c && (l = o - a.value.clientWidth), l !== void 0 && (t() ? n.$?.(a.value).animate({ scrollLeft: l }, e ? 200 : 0) : a.value.scrollTo({
left: l,
behavior: e ? "smooth" : "auto"
}));
}, d = () => {
if (Array.isArray(i.value)) {
if (i.value.length === r.items.length) {
i.value = [r.items[0].href ?? r.items[0].value];
return;
}
i.value = r.items.map((e) => e.href ?? e.value);
}
};
return O(() => u(!1)), A(() => u(!0)), (t, n) => (j(), y("div", {
ref_key: "el",
ref: a,
class: D({
"top-menu": !0,
["top-style_" + e.styling]: !0
}),
onWheel: l
}, [(j(!0), y(h, null, N(e.items, (e) => (j(), _(s, E({ ref_for: !0 }, e, {
class: "top-menu_item",
color: "theme",
onClick: (t) => c(e, t.ctrlKey || t.metaKey),
isActive: o(e)
}), x({ _: 2 }, [e.content ? {
name: "default",
fn: V(() => [S(I(e.content), 1)]),
key: "0"
} : void 0]), 1040, ["onClick", "isActive"]))), 256)), Array.isArray(i.value) && e.selectAllItem ? (j(), y("div", G, [C(s, E(e.selectAllItem, {
class: "top-menu_item",
color: "theme",
styling: "",
onClick: n[0] ||= (e) => d(),
isActive: i.value.length === e.items.length
}), x({ _: 2 }, [e.selectAllItem.content ? {
name: "default",
fn: V(() => [S(I(e.selectAllItem.content), 1)]),
key: "0"
} : void 0]), 1040, ["isActive"])])) : v("", !0)], 34));
}
}), ne = { class: "top-selector2_itemMulti top-ellipsis" }, re = /* @__PURE__ */ w({
__name: "itemMulti",
props: {
id: {},
name: {}
},
emits: ["delete"],
setup(e, { emit: t }) {
return (n, r) => (j(), y("div", ne, [S(I(e.name) + " ", 1), b("span", {
class: "top-selector2_itemMultiDelete",
"data-top-icon": "",
onClick: r[0] ||= (n) => t("delete", {
id: e.id,
name: e.name
}),
onMousedown: r[1] ||= W(() => {}, ["stop"])
}, null, 32)]));
}
}), q = /* @__PURE__ */ new Map(), J = /* @__PURE__ */ new Map(), Y = /* @__PURE__ */ new Map(), X = (e) => (Y.has(e) || Y.set(e, M(0)), Y.get(e)), Z = (e) => {
X(e).value++;
}, Q = (e) => {
q.get(e)?.clear(), Z(e);
}, $ = (e, t) => {
q.get(e)?.forEach((e) => t(e));
}, ie = (e, t) => {
J.get(e)?.forEach((e) => t(e));
}, ae = (e, t, n) => {
ie(e, (e) => {
let r = !1;
if (Array.isArray(e.value)) e.value.filter((e) => e.id === t).forEach((e) => {
Object.assign(e, n), r = !0;
});
else {
if (e.value.id !== t) return;
Object.assign(e.value, n), r = !0;
}
r && L(e);
});
}, oe = (e) => {
let t = window.mo?.user?.id;
return JSON.stringify(e.params) + ":" + e.url + ":" + t;
}, se = (e, t) => {
let n = q.get(t)?.get(e);
if (n) return n.result = n.result.map((e) => ({ ...e })), n;
}, ce = (e, t, n) => {
q.has(t) || q.set(t, /* @__PURE__ */ new Map()), q.get(t)?.set(e, n);
}, le = (e, t) => {
J.has(e) || J.set(e, /* @__PURE__ */ new Set()), J.get(e)?.add(t), k(() => J.get(e)?.delete(t));
}, ue = (e, t, n) => {
$(e, (e) => {
let r = e.result.find((e) => e.id === t);
r && Object.assign(r, n);
}), ae(e, t, n), Z(e);
}, de = (e, t) => {
$(e, (e) => {
let n = e.result.findIndex((e) => e.id === t);
n !== -1 && (e.result.splice(n, 1), e.nextOffset && e.nextOffset--);
}), ae(e, t, { name: "--" }), Z(e);
}, fe = (e, t, n, i, a) => {
let o = M([]), s = M(!1), c = M(0), l = "", u;
e && !e.params.limit && (e.params.limit = 100), e && le(e.path, a);
let d = () => {
if (!e) return;
e.params.offset = 0;
let t = se(oe(e), e.path);
if (!t) {
o.value = [], u = void 0;
return;
}
o.value = t.result, u = t.nextOffset;
};
e && i && B(X(e.path), () => {
d();
});
let f = async () => {
if (!e) return;
let t = i ? oe(e) : void 0;
if (t) {
let n = se(t, e.path);
if (n) return e.abortByFingerprint(), n;
}
let n = await e.call();
if (n.errors) return;
if (!Array.isArray(n.result)) {
console.warn("Array expected in `res.result`");
return;
}
let r = n.result.findIndex((e) => e.id === void 0 || e.name === void 0);
if (r !== -1) {
console.warn(`В result[${r}] нет id или name`);
return;
}
return t && ce(t, e.path, n), n;
}, p = async (n) => {
if (!e) return;
if (n) {
if (!u || s.value) return;
e.params.offset = u;
} else e.params.offset = 0;
t?.(e, l), s.value = !0;
let r = await f();
s.value = !1, c.value++, r && (u = r.nextOffset, n ? o.value = o.value.concat(r.result) : o.value = r.result);
}, m = r(() => p(!1), 200);
return {
apiRequest: e,
items: o,
isLoading: s,
countLoading: c,
load: p,
setSearchTextAndLoad: (t, r = !0) => {
if (e) {
if (t.length < n) {
e.abortByFingerprint(), o.value = [];
return;
}
t === l && o.value.length || (l = t, r ? m() : p(!1));
}
}
};
}, pe = 0, me = null, he = (e, t, n = !0) => n && t.id === null ? Array.isArray(e) ? e.some((e) => e.id === t.id && e.name === t.name) : t.name === e.name : Array.isArray(e) ? e.some((e) => e.id === t.id) : t.id === e.id, ge = (e, t, n) => {
let r = e.params.filters ?? [];
r = r.filter((e) => e.name !== n), t && r.push(u(n, "CONTAINS", [t])), e.changeParams({ filters: r });
}, _e = (t, n, r, i) => {
let a = M(""), o = {
id: 0,
name: e().Common.All
}, s = () => {
a.value = "";
}, c = () => !(!i.apiRequest || a.value.length >= n.minLength), l = g(() => {
let e = [];
return !n.multiselect && n.useAllItem && (typeof n.useAllItem == "string" && (o.name = n.useAllItem), e.push(o)), n.items?.forEach((t) => e.push(t)), e;
}), u = M([]), f = M(n.itemsChunkSize), p = () => {
u.value = _();
}, m = () => {
!n.itemsChunkSize || f.value === void 0 || (f.value += n.itemsChunkSize);
}, h = () => {
n.itemsChunkSize && (f.value = n.itemsChunkSize);
}, _ = () => {
let e = a.value.toLowerCase(), r = d(e), o = [], s, c = [], u = () => {
c.at(-1)?.listItemProps?.type === "delimiter" && c.pop(), c.length &&= (s && o.push(s), o.push(...c), 0);
}, p = (t) => {
let i = n.searchFields?.includes("id"), a = t.name.toLowerCase(), o = n.searchFields?.filter((e) => e !== "id").map((e) => typeof t[e] == "string" || typeof t[e] == "number" ? t[e] : "").join("☼").toLowerCase();
(i && t.id === Number(e) || o?.includes(e) || o?.includes(r)) && (a === e || a === r ? c.unshift(t) : c.push(t));
};
for (let e of l.value) switch (e.listItemProps?.type) {
case "title":
u(), s = e;
break;
case "delimiter":
if (c.length) {
let t = c.length;
c.at(-1)?.listItemProps?.type === "delimiter" && t--, c[t] = e;
}
break;
default: p(e);
}
if (u(), o.push(...i.items.value), n.itemsChunkSize && !i.apiRequest && (o = o.slice(0, f.value)), n.appendSearchToResult && a.value && (!n.appendSearchToResultCond || n.appendSearchToResultCond(e)) && (n.appendSearchAllowDuplicate || !o.find((t) => t.name.toLowerCase() === e))) {
let e = {
id: null,
name: a.value
};
n.appendWithoutSelect && (e.listItemProps = { closeByClick: !1 }), o.push(e);
}
return n.multiselect && (o = o.filter((e) => !he(t.value, e))), n.prepareItemsBeforeRender && (o = n.prepareItemsBeforeRender(o)), o;
}, v = (e) => {
e.listItemProps?.type === "title" || e.listItemProps?.type === "delimiter" || e.id === null && (r("appendItem", e), n.appendWithoutSelect) || (n.multiselect && Array.isArray(t.value) ? he(t.value, e) || (t.value = [...t.value, e]) : t.value = e, setTimeout(() => {
s();
}));
};
if (i.apiRequest) {
let e = [() => n.items, i.items];
n.multiselect && e.push(t), B(e, () => {
p();
}, { deep: 2 });
} else B(a, () => {
h();
}), B([
t,
() => n.items,
a,
f
], () => {
p();
}, {
immediate: !0,
deep: 2
}), B([() => n.items?.length ?? 0, () => n.items], (e, r) => {
(e[0] < r[0] || e[1] !== r[1]) && (Array.isArray(t.value) ? t.value : [t.value]).forEach((e) => {
e.id !== o.id && (n.items?.find((t) => t.id === e.id) || (e.name = "--"));
});
});
return {
searchText: a,
resetSearch: s,
genIsShort: c,
itemsForShow: u,
revelItemsForShow: m,
resetItemsForShow: h,
selectItem: v,
selectNextItem: () => {
if (Array.isArray(t.value)) return;
let e = u.value.filter((e) => !["title", "delimiter"].includes(e.listItemProps?.type ?? ""));
t.value = { ...e[(e.findIndex((e) => e.id === t.value.id) + 1) % e.length] };
},
deleteItemByItem: async (e) => {
Array.isArray(t.value) && (t.value = t.value.filter((t) => t.id !== e.id || t.name !== e.name));
}
};
}, ve = {
key: 0,
class: "top-selector2_activeItems"
}, ye = {
key: 1,
class: "top-selector2_activeName top-ellipsis"
}, be = {
key: 2,
class: "top-selector2_placeholder top-ellipsis"
}, xe = { class: "top-selector2_searchWidget" }, Se = /* @__PURE__ */ w({
__name: "selector2",
props: /*@__PURE__*/ T({
modelValue: {},
items: { default: () => [] },
itemsChunkSize: {},
itemsIsLoading: { type: Boolean },
title: {},
disabled: { type: Boolean },
icon: {},
modificator: {},
size: { default: "s" },
isError: { type: Boolean },
openByFocusInput: {
type: Boolean,
default: void 0
},
searchType: { default: "popup" },
searchFields: { default: () => ["id", "name"] },
placeholder: {},
hasCloserBtn: { type: Boolean },
prepareItemsBeforeRender: {},
api: {},
apiSetSearchParams: {},
minLength: { default: 0 },
useCache: { type: Boolean },
appendSearchToResult: { type: Boolean },
appendSearchAllowDuplicate: { type: Boolean },
appendSearchToResultCond: {},
appendWithoutSelect: { type: Boolean },
multiselect: { type: Boolean },
useAllItem: { type: [Boolean, String] },
addChanger: { type: Boolean },
buttonProps: {},
selectedAsPlaceholder: { type: Boolean },
openerShortcut: {}
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: /*@__PURE__*/ T(["appendItem", "open"], ["update:modelValue"]),
setup(e, { expose: t, emit: r, slots: i }) {
let a = e, o = z(e, "modelValue"), c = r, u = g(() => a.searchType === "inline" && a.multiselect || a.searchType === "inline" && n.state.isMobile ? "popup" : a.searchType), d = fe(a.api, a.apiSetSearchParams, a.minLength, a.useCache, o), w = _e(o, a, c, d), T = g(() => a.buttonProps ? "TopButton" : u.value === "inline" ? "TopInput" : "div"), D = M(null), O = M(null), k = () => D.value?.popup;
d.apiRequest && B(w.searchText, () => {
d.setSearchTextAndLoad(w.searchText.value);
});
let A = g(() => Array.isArray(o.value) || a.multiselect || !a.selectedAsPlaceholder && u.value !== "inline" ? a.placeholder : o.value?.name || a.placeholder), L = (e) => {
let t = !1;
switch (e.key) {
case "Delete":
case "Backspace":
Array.isArray(o.value) && (e.preventDefault(), e.stopPropagation(), o.value.pop());
break;
case "ArrowUp":
case "ArrowRight":
case "ArrowDown":
case "ArrowLeft":
case "Enter":
case " ":
t = !0;
break;
case "Escape":
u.value === "inline" && w.resetSearch();
break;
}
let n = e.key.length === 1 && !e.ctrlKey && !e.metaKey;
(u.value === "popup" || u.value === "inline") && n && (t = !0), k()?.elPopup && (t = !1), t && (u.value === "popup" && (e.preventDefault(), e.stopPropagation(), n && (w.searchText.value || (w.searchText.value = e.key))), e.currentTarget?.click());
}, U = (e) => {
e.preventDefault(), w.selectNextItem();
}, W = () => {
d.apiRequest && d.setSearchTextAndLoad(w.searchText.value, !1), c("open");
}, G = () => {
w.resetItemsForShow(), u.value === "popup" && w.searchText.value && w.resetSearch();
}, K = (e) => {
let t = e.target;
t.scrollTop / (t.scrollHeight - t.offsetHeight) > .8 && (a.api ? d.load(!0) : w.revelItemsForShow());
};
return t({
getPopup: k,
popupOpenerRef: O,
resetCache: (e = !1) => {
d.apiRequest && (e && Q(d.apiRequest.path), d.items.value = [], d.countLoading.value = 0, d.apiRequest.params.offset = 0, requestAnimationFrame(() => {
w.itemsForShow.value = [];
}), k()?.elPopup && d.setSearchTextAndLoad(w.searchText.value));
},
updateCacheItemById: (e, t) => {
d.apiRequest && ue(d.apiRequest.path, e, t);
},
deleteCacheItemById: (e) => {
d.apiRequest && de(d.apiRequest.path, e);
}
}), (t, r) => {
let a = ee("TopLoadbar"), c = F("top-focus"), g = F("top-shortcut");
return j(), _(R(m), {
ref_key: "popupRef",
ref: D,
onOpen: r[3] ||= (e) => W(),
onClose: r[4] ||= (e) => G(),
onScrollContentList: r[5] ||= (e) => K(e),
notch: !1,
transitionDuration: 0,
openByFocusInput: u.value === "inline" && (e.openByFocusInput ?? !0),
disabled: u.value === "inline" && R(w).genIsShort()
}, x({
opener: V(() => [H((j(), _(te(T.value), E({
ref_key: "popupOpenerRef",
ref: O
}, e.buttonProps, {
class: {
"top-selector2": !0,
"top-selector2-multiselect": e.multiselect,
["top-selector2-" + e.modificator]: !!e.modificator,
"top-as-input": !e.buttonProps && u.value !== "inline",
"top-as-selector": !0,
["top-size_" + e.size]: !0,
"top-disabled": e.disabled,
"top-forms-focusable": !e.disabled,
"top-error": e.isError
},
icon: e.icon,
tabindex: "0",
onKeydown: L,
onBlur: r[0] ||= (e) => u.value === "inline" && R(w).resetSearch(),
placeholder: A.value,
title: e.title,
captionType: u.value === "inline" && e.title !== void 0 ? "top" : void 0,
modelValue: R(w).searchText.value,
"onUpdate:modelValue": r[1] ||= (e) => R(w).searchText.value = e
}), {
default: V(() => [
e.multiselect ? (j(), y("div", ve, [(j(!0), y(h, null, N(o.value, (e) => (j(), _(re, {
key: e.id ?? void 0,
id: e.id,
name: e.name,
onDelete: R(w).deleteItemByItem
}, null, 8, [
"id",
"name",
"onDelete"
]))), 128))])) : v("", !0),
u.value !== "inline" && !e.multiselect ? (j(), y("span", ye, I(Array.isArray(o.value) ? "" : o.value.name), 1)) : v("", !0),
e.multiselect && !o.value.length ? (j(), y("span", be, I(A.value), 1)) : v("", !0),
e.addChanger && !e.buttonProps && !e.multiselect && R(w).itemsForShow.value.length > 1 && !e.disabled ? (j(), y("span", {
key: 3,
class: "top-changer top-changer-selector",
"data-top-popup-disabled": "true",
onClick: U
})) : v("", !0)
]),
_: 1
}, 16, [
"class",
"icon",
"placeholder",
"title",
"captionType",
"modelValue"
])), [[
c,
e.isError,
void 0,
{ onupdate: !0 }
], [g, e.openerShortcut]])]),
contentList: V(() => [
(j(!0), y(h, null, N(R(w).itemsForShow.value, (r) => (j(), _(R(p), E({
key: r.id ?? void 0,
class: {
"top-active": !Array.isArray(o.value) && !e.multiselect && o.value.id === r.id && o.value.name === r.name,
"top-selector2_item-all": r.id === R(0),
"top-selector2_item-new": r.id === R(null)
},
closeByClick: !e.multiselect || R(n).state.isMobile
}, { ref_for: !0 }, r.listItemProps, { onClick: (e) => R(w).selectItem(r) }), x({
default: V(() => [i.item ? P(t.$slots, "item", { item: r }, void 0, void 0, 0) : (j(), y(h, { key: 1 }, [S(I(r.name), 1)], 64))]),
_: 2
}, [i.actions ? {
name: "actions",
fn: V(() => [P(t.$slots, "actions", { item: r })]),
key: "0"
} : void 0]), 1040, [
"class",
"closeByClick",
"onClick"
]))), 128)),
!R(w).itemsForShow.value.length && !R(w).genIsShort() ? (j(), _(R(p), {
key: 0,
type: "regular"
}, {
default: V(() => [R(d).isLoading.value && !R(d).countLoading.value || e.itemsIsLoading ? (j(), _(R(l), {
key: 0,
type: "circles"
})) : (j(), y(h, { key: 1 }, [S(I(t.$i18n.Common.No_results), 1)], 64))]),
_: 1
})) : v("", !0),
R(d).countLoading.value && R(d).isLoading.value && u.value === "inline" ? (j(), _(a, { key: 1 })) : v("", !0)
]),
_: 2
}, [u.value === "popup" ? {
name: "widget",
fn: V(() => [b("div", xe, [H(C(R(f), {
title: "Поиск",
icon: "",
modelValue: R(w).searchText.value,
"onUpdate:modelValue": r[2] ||= (e) => R(w).searchText.value = e,
isLoading: !!R(d).countLoading.value && R(d).isLoading.value,
placeholder: A.value
}, null, 8, [
"modelValue",
"isLoading",
"placeholder"
]), [[
c,
o.value,
void 0,
{ onupdate: !0 }
]]), e.hasCloserBtn && !t.$core.state.isMobile ? (j(), _(R(s), {
key: 0,
class: "closer",
color: "theme"
}, {
default: V(() => [S(I(t.$i18n.Common.Cancel), 1)]),
_: 1
})) : v("", !0)])]),
key: "0"
} : void 0]), 1032, ["openByFocusInput", "disabled"]);
};
}
}), Ce = { class: "top-editArea_footer" }, we = /* @__PURE__ */ w({
__name: "editArea",
props: {
defaultValue: { default: "" },
title: {},
cancelText: { default: "Cancel" },
submitText: { default: "Send" },
closeText: { default: "Close" },
isFocused: { type: Boolean },
forceShowCloseBtn: { type: Boolean },
attachToKeyboard: { type: Boolean },
modelValue: {},
name: {},
placeholder: {},
styling: {},
rows: {},
minHeight: {},
expandable: {
type: Boolean,
default: !0
},
disabled: { type: Boolean },
readonly: { type: Boolean },
isError: { type: Boolean },
hint: {},
maxLength: {}
},
emits: [
"submit",
"close",
"clickOnTitle"
],
setup(e, { emit: t, slots: n }) {
let r = e, i = t, a = M(r.defaultValue), o = M(r.isFocused), l = g(() => a.value !== r.defaultValue), u = (e) => {
i("submit", e), a.value = r.defaultValue;
}, d = () => {
if (r.forceShowCloseBtn && !l.value) {
i("close");
return;
}
a.value = r.defaultValue;
}, f = () => {
r.attachToKeyboard && i("clickOnTitle");
};
return (t, r) => (j(), y("div", { class: D({
"top-editArea": !0,
"top-editArea-attachedToKeyboard": e.attachToKeyboard
}) }, [e.title || n.caption ? (j(), y("div", {
key: 0,
class: "top-editArea_caption",
onClick: r[0] ||= (e) => f()
}, [P(t.$slots, "caption", {}, () => [S(I(e.title), 1)])])) : v("", !0), b("div", { class: D({
"top-editArea_form": !0,
"top-forms-focusable": !0,
"top-as-input": !0,
"top-error": e.isError,
"top-focus": o.value
}) }, [C(c, {
modelValue: a.value,
"onUpdate:modelValue": r[1] ||= (e) => a.value = e,
name: e.name,
placeholder: e.placeholder,
rows: e.rows,
minHeight: e.minHeight,
expandable: e.expandable,
disabled: e.disabled,
readonly: e.readonly,
isError: e.isError,
hint: e.hint,
class: "top-editArea_element",
onFocus: r[2] ||= () => o.value = !0,
onBlur: r[3] ||= () => o.value = !1,
onKeyup: [U(d, ["esc"]), r[4] ||= U(W((e) => u(a.value), ["ctrl"]), ["enter"])]
}, null, 8, [
"modelValue",
"name",
"placeholder",
"rows",
"minHeight",
"expandable",
"disabled",
"readonly",
"isError",
"hint"
]), b("div", Ce, [l.value || e.forceShowCloseBtn ? (j(), _(s, {
key: 0,
icon: t.$core.state.isMobile ? "" : "",
class: "top-editArea_button",
color: "theme",
styling: "soft",
onClick: d
}, x({ _: 2 }, [t.$core.state.isMobile ? void 0 : {
name: "default",
fn: V(() => [S(I(e.cancelText), 1)]),
key: "0"
}]), 1032, ["icon"])) : v("", !0), l.value ? (j(), _(s, {
key: 1,
class: "top-editArea_button",
icon: t.$core.state.isMobile ? "" : "",
onClick: r[5] ||= (e) => u(a.value)
}, x({ _: 2 }, [t.$core.state.isMobile ? void 0 : {
name: "default",
fn: V(() => [S(I(e.submitText), 1)]),
key: "0"
}]), 1032, ["icon"])) : v("", !0)])], 2)], 2));
}
}), Te = { class: "top-editInput" }, Ee = /* @__PURE__ */ w({
__name: "editInput",
props: {
modelValue: {},
alwaysShowSubmitBtn: { type: Boolean },
input: {},
button: {}
},
emits: ["update:modelValue"],
setup(e, { emit: t, slots: n }) {
let r = e, i = M(r.modelValue);
B(() => r.modelValue, () => {
i.value = r.modelValue;
});
let o = t, c = () => {
o("update:modelValue", i.value);
};
return (t, r) => (j(), y("div", Te, [C(a, E(e.input, {
onKeydownCapture: r[0] ||= U(W((t) => i.value = e.modelValue, ["stop"]), ["esc"]),
onKeydown: U(W(c, ["stop"]), ["enter"]),
modelValue: i.value,
"onUpdate:modelValue": r[1] ||= (e) => i.value = e
}), x({ _: 2 }, [n.caption ? {
name: "caption",
fn: V(() => [P(t.$slots, "caption")]),
key: "0"
} : void 0]), 1040, ["onKeydown", "modelValue"]), i.value !== e.modelValue || e.alwaysShowSubmitBtn ? (j(), _(s, E({
key: 0,
icon: "",
styling: "soft"
}, e.button, { onClick: c }), null, 16)) : v("", !0)]));
}
}), De = /* @__PURE__ */ w({
__name: "optionGroup",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
size: { default: "s" },
showIndicator: { type: Boolean },
isError: { type: Boolean }
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let t = z(e, "modelValue"), n = e, r = M(null);
B(t, () => {
let e = n.items.map((e) => e.value);
Array.isArray(t.value) ? t.value.find((t) => !e.includes(t)) && (t.value = t.value.filter((t) => e.includes(t))) : e.includes(t.value) || (t.value = e[0] ?? ""), r.value?.querySelector(".radioGroup_item-selected")?.scrollIntoView();
}, { immediate: !0 });
let a = "optionGroup-" + Math.random();
return (n, s) => (j(), y("div", {
ref_key: "elRef",
ref: r,
class: D({
"top-optionGroup": !0,
["top-optionGroup-showIndicator_" + Number(e.showIndicator)]: !0,
"top-scrollBarXHidding": !0,
["top-size_" + e.size]: !!e.size,
"top-error": e.isError
})
}, [Array.isArray(t.value) ? (j(!0), y(h, { key: 0 }, N(e.items, (n) => (j(), _(o, {
class: D({
"top-optionGroup_item-selected": t.value.includes(n.value),
"top-optionGroup_item": !0
}),
modelValue: t.value,
"onUpdate:modelValue": s[0] ||= (e) => t.value = e,
value: n.value,
title: n.title,
disabled: n.disabled,
isError: e.isError,
"data-top-icon": n.icon
}, x({ _: 2 }, [n.label ? {
name: "default",
fn: V(() => [S(I(n.label), 1)]),
key: "0"
} : void 0]), 1032, [
"class",
"modelValue",
"value",
"title",
"disabled",
"isError",
"data-top-icon"
]))), 256)) : (j(!0), y(h, { key: 1 }, N(e.items, (n) => (j(), _(i, {
class: D({
"top-optionGroup_item-selected": n.value === t.value,
"top-optionGroup_item": !0
}),
modelValue: t.value,
"onUpdate:modelValue": s[1] ||= (e) => t.value = e,
name: a,
value: n.value,
title: n.title,
disabled: n.disabled,
isError: e.isError,
"data-top-icon": n.icon
}, x({ _: 2 }, [n.label ? {
name: "default",
fn: V(() => [S(I(n.label), 1)]),
key: "0"
} : void 0]), 1032, [
"class",
"modelValue",
"value",
"title",
"disabled",
"isError",
"data-top-icon"
]))), 256))], 2));
}
}), Oe = /* @__PURE__ */ w({
__name: "radioGroup",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
size: {},
showIndicator: { type: Boolean },
isError: { type: Boolean }
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let t = e, n = z(e, "modelValue");
return (e, r) => (j(), _(De, {
class: "top-radioGroup",
modelValue: n.value,
"onUpdate:modelValue": r[0] ||= (e) => n.value = e,
items: t.items,
size: t.size,
showIndicator: t.showIndicator,
isError: t.isError
}, {
default: V(() => [P(e.$slots, "default")]),
_: 3
}, 8, [
"modelValue",
"items",
"size",
"showIndicator",
"isError"
]));
}
}), ke = /* @__PURE__ */ w({
__name: "checkboxGroup",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
size: {},
showIndicator: { type: Boolean },
isError: { type: Boolean }
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let t = e, n = z(e, "modelValue");
return (e, r) => (j(), _(De, {
class: "top-checkboxGroup",
modelValue: n.value,
"onUpdate:modelValue": r[0] ||= (e) => n.value = e,
items: t.items,
size: t.size,
showIndicator: t.showIndicator,
isError: t.isError
}, {
default: V(() => [P(e.$slots, "default")]),
_: 3
}, 8, [
"modelValue",
"items",
"size",
"showIndicator",
"isError"
]));
}
}), Ae = ["data-top-icon"], je = { class: "top-info_text" }, Me = {
key: 0,
class: "top-info_value"
}, Ne = /* @__PURE__ */ w({
__name: "info",
props: {
icon: {},
styling: { default: "default" },
size: { default: "default" }
},
setup(e, { slots: t }) {
return (n, r) => (j(), y("div", {
class: D({
"top-info": !0,
["top-size_" + e.size]: !0,
["top-info-styling_" + e.styling]: !0
}),
"data-top-icon": e.icon
}, [b("div", je, [P(n.$slots, "default")]), t.additional ? (j(), y("span", Me, [P(n.$slots, "additional")])) : v("", !0)], 10, Ae));
}
}), Pe = {
key: 0,
class: "top-policy"
}, Fe = { class: "top-policy_title" }, Ie = ["innerHTML"], Le = /* @__PURE__ */ w({
__name: "policy",
props: {
title: {},
description: {},
acceptText: {}
},
emits: ["accept"],
setup(e, { emit: t }) {
let n = t, r = M(!0), i = () => {
r.value = !1, n("accept");
};
return (t, n) => r.value ? (j(), y("div", Pe, [
b("div", Fe, I(e.title), 1),
b("div", {
class: "top-policy_description",
innerHTML: e.description
}, null, 8, Ie),
C(R(s), {
size: "m",
onClick: i
}, {
default: V(() => [S(I(e.acceptText), 1)]),
_: 1
})
])) : v("", !0);
}
}), Re = { class: "top-banner" }, ze = { class: "top-banner_text" }, Be = /* @__PURE__ */ w({
__name: "banner",
props: { titleClose: { default: "" } },
emits: ["close"],
setup(e, { emit: t }) {
let n = t;
return (t, r) => (j(), y("div", Re, [b("div", ze, [P(t.$slots, "default")]), e.titleClose ? (j(), _(s, {
key: 0,
size: "s",
onClick: r[0] ||= (e) => n("close")
}, {
default: V(() => [S(I(e.titleClose), 1)]),
_: 1
})) : v("", !0)]));
}
});
//#endregion
export { Oe as a, Se as c, ge as d, Q as f, ke as i, pe as l, Le as n, Ee as o, K as p, Ne as r, we as s, Be as t, me as u };
//# sourceMappingURL=formsExt-oTFg1-Nv.esm.js.map

Sorry, the diff of this file is too big to display

var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`../utils/dom.amd`,`../utils/system.amd`,`../utils/route.amd`,`vue`],function(e,t,r,i,a,o,s){"use strict";if(c===void 0)var c=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.s=t.r=t.o=t.n=t.i=t.a=void 0;var l=[`id`,`data-view-page-active`,`data-modal`,`data-position`],u=(0,s.defineComponent)({__name:`dialog`,props:{id:{},pageActive:{},width:{default:`600px`},height:{default:`auto`},modal:{type:Boolean,default:!0},position:{},historyType:{default:`push`},classes:{}},emits:[`open`,`close`],setup(e){let t=g(e.id);if(!t)throw Error(`TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()`);return(0,s.provide)(`dialogWorker`,t),(0,s.onMounted)(()=>{let e=(0,s.getCurrentInstance)(),n=e.parent;if(n?.parent?.type.name!==`DialogWrapper`)throw Error(`TopDialog cannot be used in a template, use useTopDialog()`);if(Array.isArray(n.subTree.children)&&n.subTree.children.length!==1)throw Error(`TopDialog can has only one root element`);t.onMounted(n,e)}),(0,s.watch)(t.isOpened,()=>{t.isReady.value=!0},{flush:`post`,once:!0}),(n,r)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{id:(0,s.unref)(t).idAttr,class:(0,s.normalizeClass)([`top-dialog`,e.classes]),style:(0,s.normalizeStyle)({"--top-dialog-width":e.width,"--top-dialog-height":e.height}),tabindex:`-1`,"data-view-page-active":(0,s.unref)(t).pageActive.value,"data-modal":e.modal,"data-position":e.position},[r[0]||=(0,s.createElementVNode)(`div`,{class:`modal-layer modal-layer-header`},null,-1),(0,s.createElementVNode)(`div`,{class:`modal-layer modal-layer-body`,style:(0,s.normalizeStyle)({"min-height":e.height+`px`})},null,4),(0,s.renderSlot)(n.$slots,`default`)],14,l))}}),d,f=class t{static init(e){if(this.inited)return;this.inited=!0,this.state.load=e?.load,this.state.decoratorOnCreate=e?.decoratorOnCreate;let n=e?.autoInitDelay??5e3;window.addEventListener(`hashchange`,e=>{this.opendDialogsFromChangeUrl(e.oldURL,e.newURL)}),this.opendDialogsFromChangeUrl(``,location.href),document.addEventListener(`mousedown`,async e=>{if(!(e.target instanceof HTMLElement))return;let n=e.target.closest(`a[data-to-view]`);if(!n)return;let r=`next`;n.dataset.action===`top-dialog-close`&&(r=`prev`),n.href=t.genViewPageHash(n.dataset.toView,r)}),document.addEventListener(`click`,async e=>{if(!(e.target instanceof HTMLElement))return;let n=e.target.closest(`[data-to-view]`);if(!n)return;if(n instanceof HTMLAnchorElement&&n.href===`.`){e.preventDefault();let t=new MouseEvent(`mousedown`,{bubbles:!0,cancelable:!0,view:window});n.dispatchEvent(t),setTimeout(()=>n.click());return}let r=await this.getDialogsUtils(),a=n.dataset.toView,s=a.split(`-`)[0],c=r.getElDialogById(s),l=`next`;if(c){let e=(0,i.querySelectorAllArray)(c,`.modal-layer`),t=e.reduce((e,t)=>{let n=t.querySelector(`:scope > .active`);return n&&e.push(n),e},[]);if(t.length){let n=a.split(`-`)[1].split(`:`)[0];(e.reduce((e,t)=>{let r=t?.querySelector(`:scope > [data-view-page="${n}"]`);return r&&e.push(r),e},[])[0]?.dataset.order??0)<(t[0]?.dataset.order??0)&&(l=`prev`)}}n.dataset.action===`top-dialog-close`&&(l=`prev`);let u=t.genViewPageHash(a,l);if(n instanceof HTMLAnchorElement){if(!c||!(0,i.isVisible)(c))return;if(location.hash.indexOf(a.replace(`-`,`=`))!==-1){await r.toViewDirty(a);return}}c?.dataset.toViewReplace?(e.preventDefault(),(0,o.historySetState)(!0,u),await r.toViewDirty(a),l==`next`?t.state.viewPageN++:t.state.viewPageN--):n.tagName!==`A`&&(this.compareStates(u,location.hash)?(0,o.historySetState)(!1,u):await r.toViewDirty(a))}),setTimeout(()=>this.getDialogsUtils(),n)}static opendDialogsFromChangeUrl(e,t){let n=e.replace(/.*?#/,`#`),r=t.replace(/.*?#/,`#`);this.compareStates(n,r)&&this.opendDialogsFromUrl()}static async getDialogsUtils(){let{TopDialogUtils:t}=await new Promise((t,n)=>{e([`./utils-B1tz7GZc.amd`],t,n)}).then(__importStar);return t}static getDialog(e){return e.closest(`.ui-dialog-content`)}static get$dialog(e){return e.closest(`.ui-dialog-content`)}static getPage(e){return e.closest(`[data-view-page]`)}static get$page(e){return e.closest(`[data-view-page]`)}static get$pairPage(e){let n=t.get$dialog(e),r=t.get$page(e).data(`view-page`);return $(`[data-view-page="`+r+`"]`,n)}static getPairPage(e){let n=t.getDialog(e);if(!n)return;let r=t.getPage(e)?.dataset.viewPage;return(0,i.querySelectorAllArray)(n,`[data-view-page="${r}"]`)}static close(e){let t=$(`#`+e);if(t.dialog(`instance`)){t.dialog(`close`);return}let n=document.getElementById(e);n instanceof HTMLDialogElement&&n.close()}static destroy(e){let t=$(`#`+e);if(t.dialog(`instance`)){t.dialog(`close`),t.dialog(`destroy`);return}let n=document.getElementById(e);n instanceof HTMLDialogElement&&n.close()}static genViewPageHash(e,t=`next`){let n=this.state.viewPageN;t==`prev`?n--:n++;let r=e.split(`-`),i=r.shift(),a=r.join(`-`),s=(0,o.genHash)(`vpn`,n);return s=(0,o.genHash)(`view-`+i,a,s),s}static compareStates(e,t){let n=e.match(/[#&]view-[^&]+/g)||[],r=t.match(/[#&]view-[^&]+/g)||[];return!!(n.length!==r.length||n.filter((e,t)=>e!==(r[t]||``)).length)}};t.s=u,t.o=f,d=f,(0,r.K)(f,`state`,{load:void 0,decoratorOnCreate:void 0,viewPageN:0}),(0,r.K)(f,`inited`,!1),(0,r.K)(f,`opendDialogsFromUrl`,async()=>{let e=Number((0,o.getHash)(`vpn`))||0,t=RegExp(`view-((\\w+)=([\\w-]+)(?::([\\w.:-]+))?)`,`g`).exec(location.hash);if(t){let n=`next`;return e<d.state.viewPageN&&(n=`prev`),(await d.getDialogsUtils()).toViewDirty(t[1],n)}return(0,i.querySelectorAllArray)(document,`.ui-dialog-content[data-view-page-active]`).filter(e=>(0,i.isVisible)(e)).forEach(e=>{let t=e.getAttribute(`id`);if(!t)throw`Диалоговое окно не содержит id`;(0,o.getHash)(`view-`+t)||$(e).dialog(`close`)}),d.state.viewPageN=e,!0});var p=class{constructor(e){(0,r.K)(this,`id`,void 0),(0,r.K)(this,`idAttr`,void 0),(0,r.K)(this,`Component`,void 0),(0,r.K)(this,`isMounted`,(0,s.ref)(!1)),(0,r.K)(this,`isReady`,(0,s.ref)(!1)),(0,r.K)(this,`isOpened`,(0,s.ref)(!1)),(0,r.K)(this,`pageActive`,(0,s.ref)(``)),(0,r.K)(this,`isLoadingPage`,(0,s.ref)(!1)),(0,r.K)(this,`pageActiveNext`,(0,s.ref)(``)),(0,r.K)(this,`props`,void 0),(0,r.K)(this,`emit`,void 0),(0,r.K)(this,`onCloseOnce`,void 0),this.id=e.id,this.idAttr=`dialog_`+e.id,this.Component=(0,s.markRaw)(e)}onMounted(e,t){this.isMounted.value=!0,this.props=e.props,this.emit=t.emit}async open(e=`main`,t,n=[],r,i){t&&await this.setProps(t),r&&(this.onCloseOnce=r),await(await f.getDialogsUtils()).toView(this.idAttr,e,n,i)}async openAsLink(e=`main`,t,n=[],r,i){t&&await this.setProps(t),r&&(this.onCloseOnce=r);let a=this.idAttr+`-`+e;(0,o.historySetState)(!1,f.genViewPageHash(a,i))}async close(){f.close(this.idAttr)}async destroy(){f.destroy(this.idAttr)}async setProps(e={}){this.isMounted||await(0,a.waitWhile)(()=>!this.props);for(let t in this.props)this.props[t]=e[t]}needShowPage(e){return this.isOpened.value?this.pageActive.value===e||this.pageActiveNext.value===e:!1}},m={class:`top-dialogs`,style:{display:`none`}},h=(0,s.shallowReactive)(new Map),g=e=>(e=e.replace(/^dialog_/,``),h.get(e)),_=e=>{if(!e?.id)throw console.log({TopDialogComponent:e}),Error(`Expected TopDialogComponent`);return h.has(e.id)||h.set(e.id,new p(e)),h.get(e.id)},v=(0,s.defineComponent)({name:`DialogWrapper`,__name:`dialogs`,setup(e){return(0,s.onUnmounted)(()=>{h.forEach(e=>e.destroy()),h.clear()}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,m,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(h),([e,t])=>((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(t.Component),{key:e}))),128))]))}}),y=class{constructor(e){(0,r.K)(this,`resolve`,void 0),(0,r.K)(this,`worker`,(0,s.ref)(null)),this.resolve=e}async get(){if(this.worker.value)return this.worker.value;let e=(await this.resolve()).default;this.worker.value=x(e);let t=this.worker.value;return await(0,a.waitWhile)(()=>!t.isMounted),t}async open(...e){await(await this.get()).open(...e)}async openAsLink(...e){(await this.get()).openAsLink(...e)}async close(...e){(await this.get()).close(...e)}async destroy(...e){(await this.get()).destroy(...e)}async setProps(...e){await(await this.get()).setProps(...e)}},b=()=>{let e=(0,s.getCurrentInstance)();if(e?.type?.id){let t=g(e.type.id);if(t)return t}return(0,s.inject)(`dialogWorker`)},x=e=>_(e);t.a=g,t.i=v,t.r=b,t.n=x,t.t=e=>new y(e)});
//# sourceMappingURL=utils-B1P0BzZ1.amd.js.map
{"version":3,"sources":[".chunks/utils-B1P0BzZ1.esm.js","../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/lib/worker.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue","../../src/components/dialog/dialog/composables/asyncDialogHandle.ts","../../src/components/dialog/dialog/composables/utils.ts"],"names":["k2","k","desc","m","o","v","\"default\"","ownKeys","ar","mod","result","i","vue","exports","O","vue_1","F","A","j","e","r","t","a","s","c","l","u","dom_js_1","d","route_js_1","require","resolve_1","reject_1","forms__4U0sLFk_esm_js_1","M","system_js_1","N","P","I","L","R","B","z"],"mappings":"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","sourcesContent":["var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\ndefine([\"require\", \"exports\", \"./forms-_4U0sLFk.esm.js\", \"../utils/dom.js\", \"../utils/system.js\", \"../utils/route.js\", \"vue\"], function (require, exports, forms__4U0sLFk_esm_js_1, dom_js_1, system_js_1, route_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = exports.s = exports.r = exports.o = exports.n = exports.i = exports.a = void 0;\n //#region src/components/dialog/dialog/dialog.vue?vue&type=script&setup=true&lang.ts\n var O = [\n \"id\",\n \"data-view-page-active\",\n \"data-modal\",\n \"data-position\"\n ], k = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"dialog\",\n props: {\n id: {},\n pageActive: {},\n width: { default: \"600px\" },\n height: { default: \"auto\" },\n modal: {\n type: Boolean,\n default: !0\n },\n position: {},\n historyType: { default: \"push\" },\n classes: {}\n },\n emits: [\"open\", \"close\"],\n setup(e) {\n let t = F(e.id);\n if (!t)\n throw Error(\"TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()\");\n return (0, vue_1.provide)(\"dialogWorker\", t), (0, vue_1.onMounted)(() => {\n let e = (0, vue_1.getCurrentInstance)(), n = e.parent;\n if (n?.parent?.type.name !== \"DialogWrapper\")\n throw Error(\"TopDialog cannot be used in a template, use useTopDialog()\");\n if (Array.isArray(n.subTree.children) && n.subTree.children.length !== 1)\n throw Error(\"TopDialog can has only one root element\");\n t.onMounted(n, e);\n }), (0, vue_1.watch)(t.isOpened, () => {\n t.isReady.value = !0;\n }, {\n flush: \"post\",\n once: !0\n }), (n, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n id: (0, vue_1.unref)(t).idAttr,\n class: (0, vue_1.normalizeClass)([\"top-dialog\", e.classes]),\n style: (0, vue_1.normalizeStyle)({\n \"--top-dialog-width\": e.width,\n \"--top-dialog-height\": e.height\n }),\n tabindex: \"-1\",\n \"data-view-page-active\": (0, vue_1.unref)(t).pageActive.value,\n \"data-modal\": e.modal,\n \"data-position\": e.position\n }, [\n r[0] ||= (0, vue_1.createElementVNode)(\"div\", { class: \"modal-layer modal-layer-header\" }, null, -1),\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"modal-layer modal-layer-body\",\n style: (0, vue_1.normalizeStyle)({ \"min-height\": e.height + \"px\" })\n }, null, 4),\n (0, vue_1.renderSlot)(n.$slots, \"default\")\n ], 14, O));\n }\n }), A, j = class e {\n static init(r) {\n if (this.inited)\n return;\n this.inited = !0, this.state.load = r?.load, this.state.decoratorOnCreate = r?.decoratorOnCreate;\n let i = r?.autoInitDelay ?? 5e3;\n window.addEventListener(\"hashchange\", (e) => {\n this.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n }), this.opendDialogsFromChangeUrl(\"\", location.href), document.addEventListener(\"mousedown\", async (t) => {\n if (!(t.target instanceof HTMLElement))\n return;\n let n = t.target.closest(\"a[data-to-view]\");\n if (!n)\n return;\n let r = \"next\";\n n.dataset.action === \"top-dialog-close\" && (r = \"prev\"), n.href = e.genViewPageHash(n.dataset.toView, r);\n }), document.addEventListener(\"click\", async (r) => {\n if (!(r.target instanceof HTMLElement))\n return;\n let i = r.target.closest(\"[data-to-view]\");\n if (!i)\n return;\n if (i instanceof HTMLAnchorElement && i.href === \".\") {\n r.preventDefault();\n let e = new MouseEvent(\"mousedown\", {\n bubbles: !0,\n cancelable: !0,\n view: window\n });\n i.dispatchEvent(e), setTimeout(() => i.click());\n return;\n }\n let a = await this.getDialogsUtils(), s = i.dataset.toView, c = s.split(\"-\")[0], l = a.getElDialogById(c), u = \"next\";\n if (l) {\n let e = (0, dom_js_1.querySelectorAllArray)(l, \".modal-layer\"), t = e.reduce((e, t) => {\n let n = t.querySelector(\":scope > .active\");\n return n && e.push(n), e;\n }, []);\n if (t.length) {\n let n = s.split(\"-\")[1].split(\":\")[0];\n (e.reduce((e, t) => {\n let r = t?.querySelector(`:scope > [data-view-page=\"${n}\"]`);\n return r && e.push(r), e;\n }, [])[0]?.dataset.order ?? 0) < (t[0]?.dataset.order ?? 0) && (u = \"prev\");\n }\n }\n i.dataset.action === \"top-dialog-close\" && (u = \"prev\");\n let d = e.genViewPageHash(s, u);\n if (i instanceof HTMLAnchorElement) {\n if (!l || !(0, dom_js_1.isVisible)(l))\n return;\n if (location.hash.indexOf(s.replace(\"-\", \"=\")) !== -1) {\n await a.toViewDirty(s);\n return;\n }\n }\n l?.dataset.toViewReplace ? (r.preventDefault(), (0, route_js_1.historySetState)(!0, d), await a.toViewDirty(s), u == \"next\" ? e.state.viewPageN++ : e.state.viewPageN--) : i.tagName !== \"A\" && (this.compareStates(d, location.hash) ? (0, route_js_1.historySetState)(!1, d) : await a.toViewDirty(s));\n }), setTimeout(() => this.getDialogsUtils(), i);\n }\n static opendDialogsFromChangeUrl(e, t) {\n let n = e.replace(/.*?#/, \"#\"), r = t.replace(/.*?#/, \"#\");\n this.compareStates(n, r) && this.opendDialogsFromUrl();\n }\n static async getDialogsUtils() {\n let { TopDialogUtils: e } = await new Promise((resolve_1, reject_1) => { require([\"./utils-B1tz7GZc.esm.js\"], resolve_1, reject_1); }).then(__importStar);\n return e;\n }\n static getDialog(e) {\n return e.closest(\".ui-dialog-content\");\n }\n static get$dialog(e) {\n return e.closest(\".ui-dialog-content\");\n }\n static getPage(e) {\n return e.closest(\"[data-view-page]\");\n }\n static get$page(e) {\n return e.closest(\"[data-view-page]\");\n }\n static get$pairPage(t) {\n let n = e.get$dialog(t), r = e.get$page(t).data(\"view-page\");\n return $(\"[data-view-page=\\\"\" + r + \"\\\"]\", n);\n }\n static getPairPage(t) {\n let r = e.getDialog(t);\n if (!r)\n return;\n let i = e.getPage(t)?.dataset.viewPage;\n return (0, dom_js_1.querySelectorAllArray)(r, `[data-view-page=\"${i}\"]`);\n }\n static close(e) {\n let t = $(\"#\" + e);\n if (t.dialog(\"instance\")) {\n t.dialog(\"close\");\n return;\n }\n let n = document.getElementById(e);\n n instanceof HTMLDialogElement && n.close();\n }\n static destroy(e) {\n let t = $(\"#\" + e);\n if (t.dialog(\"instance\")) {\n t.dialog(\"close\"), t.dialog(\"destroy\");\n return;\n }\n let n = document.getElementById(e);\n n instanceof HTMLDialogElement && n.close();\n }\n static genViewPageHash(e, t = \"next\") {\n let n = this.state.viewPageN;\n t == \"prev\" ? n-- : n++;\n let r = e.split(\"-\"), a = r.shift(), o = r.join(\"-\"), s = (0, route_js_1.genHash)(\"vpn\", n);\n return s = (0, route_js_1.genHash)(\"view-\" + a, o, s), s;\n }\n static compareStates(e, t) {\n let n = e.match(/[#&]view-[^&]+/g) || [], r = t.match(/[#&]view-[^&]+/g) || [];\n return !!(n.length !== r.length || n.filter((e, t) => e !== (r[t] || \"\")).length);\n }\n };\n exports.s = k;\n exports.o = j;\n A = j, (0, forms__4U0sLFk_esm_js_1.K)(j, \"state\", {\n load: void 0,\n decoratorOnCreate: void 0,\n viewPageN: 0\n }), (0, forms__4U0sLFk_esm_js_1.K)(j, \"inited\", !1), (0, forms__4U0sLFk_esm_js_1.K)(j, \"opendDialogsFromUrl\", async () => {\n let e = Number((0, route_js_1.getHash)(\"vpn\")) || 0, r = ( /* @__PURE__ */RegExp(\"view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)\", \"g\")).exec(location.hash);\n if (r) {\n let t = \"next\";\n return e < A.state.viewPageN && (t = \"prev\"), (await A.getDialogsUtils()).toViewDirty(r[1], t);\n }\n return (0, dom_js_1.querySelectorAllArray)(document, \".ui-dialog-content[data-view-page-active]\").filter((e) => (0, dom_js_1.isVisible)(e)).forEach((e) => {\n let t = e.getAttribute(\"id\");\n if (!t)\n throw \"Диалоговое окно не содержит id\";\n (0, route_js_1.getHash)(\"view-\" + t) || $(e).dialog(\"close\");\n }), A.state.viewPageN = e, !0;\n });\n //#endregion\n //#region src/components/dialog/dialog/composables/dialogHandle.ts\n var M = class {\n constructor(t) {\n (0, forms__4U0sLFk_esm_js_1.K)(this, \"id\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"idAttr\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"Component\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isMounted\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isReady\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isOpened\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"pageActive\", (0, vue_1.ref)(\"\")), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isLoadingPage\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"pageActiveNext\", (0, vue_1.ref)(\"\")), (0, forms__4U0sLFk_esm_js_1.K)(this, \"props\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"emit\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"onCloseOnce\", void 0), this.id = t.id, this.idAttr = \"dialog_\" + t.id, this.Component = (0, vue_1.markRaw)(t);\n }\n onMounted(e, t) {\n this.isMounted.value = !0, this.props = e.props, this.emit = t.emit;\n }\n async open(e = \"main\", t, n = [], r, i) {\n t && await this.setProps(t), r && (this.onCloseOnce = r), await (await j.getDialogsUtils()).toView(this.idAttr, e, n, i);\n }\n async openAsLink(e = \"main\", t, n = [], r, i) {\n t && await this.setProps(t), r && (this.onCloseOnce = r);\n let a = this.idAttr + \"-\" + e;\n (0, route_js_1.historySetState)(!1, j.genViewPageHash(a, i));\n }\n async close() {\n j.close(this.idAttr);\n }\n async destroy() {\n j.destroy(this.idAttr);\n }\n async setProps(e = {}) {\n this.isMounted || await (0, system_js_1.waitWhile)(() => !this.props);\n for (let t in this.props)\n this.props[t] = e[t];\n }\n needShowPage(e) {\n return this.isOpened.value ? this.pageActive.value === e || this.pageActiveNext.value === e : !1;\n }\n }, N = {\n class: \"top-dialogs\",\n style: { display: \"none\" }\n }, P = (0, vue_1.shallowReactive)(/* @__PURE__ */ new Map()), F = (e) => (e = e.replace(/^dialog_/, \"\"), P.get(e)), I = (e) => {\n if (!e?.id)\n throw console.log({ TopDialogComponent: e }), Error(\"Expected TopDialogComponent\");\n return P.has(e.id) || P.set(e.id, new M(e)), P.get(e.id);\n }, L = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"DialogWrapper\",\n __name: \"dialogs\",\n setup(e) {\n return (0, vue_1.onUnmounted)(() => {\n P.forEach((e) => e.destroy()), P.clear();\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", N, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)((0, vue_1.unref)(P), ([e, t]) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.resolveDynamicComponent)(t.Component), { key: e }))), 128))]));\n }\n }), R = class {\n constructor(t) {\n (0, forms__4U0sLFk_esm_js_1.K)(this, \"resolve\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"worker\", (0, vue_1.ref)(null)), this.resolve = t;\n }\n async get() {\n if (this.worker.value)\n return this.worker.value;\n let e = (await this.resolve()).default;\n this.worker.value = B(e);\n let t = this.worker.value;\n return await (0, system_js_1.waitWhile)(() => !t.isMounted), t;\n }\n async open(...e) {\n await (await this.get()).open(...e);\n }\n async openAsLink(...e) {\n (await this.get()).openAsLink(...e);\n }\n async close(...e) {\n (await this.get()).close(...e);\n }\n async destroy(...e) {\n (await this.get()).destroy(...e);\n }\n async setProps(...e) {\n await (await this.get()).setProps(...e);\n }\n }, z = () => {\n let e = (0, vue_1.getCurrentInstance)();\n if (e?.type?.id) {\n let t = F(e.type.id);\n if (t)\n return t;\n }\n return (0, vue_1.inject)(\"dialogWorker\");\n }, B = (e) => I(e), V = (e) => new R(e);\n exports.a = F;\n exports.i = L;\n exports.r = z;\n exports.n = B;\n exports.t = V;\n});\n//# sourceMappingURL=utils-B1P0BzZ1.esm.js.map\n","<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t'--top-dialog-width': width,\n\t\t\t'--top-dialog-height': height,\n\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","import { genHash, getHash, historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogOpener, ElTopDialogPage, MoveDirection, TopDialogOptions } from './types';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\nimport type { $el } from '@/components/types';\n\nexport abstract class TopDialogWorker {\n\tstatic state = {\n\t\tload: undefined as TopDialogOptions['load'] | undefined,\n\t\tdecoratorOnCreate: undefined as TopDialogOptions['decoratorOnCreate'] | undefined,\n\n\t\t/**\n\t\t * Порядковый номер перехода в диалоговых окнах\n\t\t *\n\t\t * Для расчета анимации Вперед / Назад\n\t\t */\n\t\tviewPageN: 0,\n\t};\n\n\tprivate static inited = false;\n\n\t/**\n\t * Инициировать события слежения за парамтерами url\n\t *\n\t * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу\n\t */\n\tstatic init(options?: TopDialogOptions) {\n\t\tif (this.inited) return;\n\t\tthis.inited = true;\n\n\t\tthis.state.load = options?.load;\n\t\tthis.state.decoratorOnCreate = options?.decoratorOnCreate;\n\n\t\tconst autoInitDelay = options?.autoInitDelay ?? 5000;\n\n\t\twindow.addEventListener('hashchange', (e) => {\n\t\t\tthis.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n\t\t});\n\n\t\tthis.opendDialogsFromChangeUrl('', location.href);\n\n\t\t/**\n\t\t * Сгенерировать ссылку для перехода к странице диалогового окна\n\t\t */\n\t\tdocument.addEventListener('mousedown', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener<HTMLAnchorElement>>('a[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// const toView = el.dataset.toView;\n\t\t\t// const viewName = toView.split('-')[0];\n\t\t\t// const $toDialog = $('#' + viewName);\n\t\t\t// const $modalLayers = $('> .modal-layer', $toDialog);\n\t\t\t// const $currentPage = $('> .active', $modalLayers);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\t// /**\n\t\t\t// * Данный алгоритм определения направления работает не корректно, так как для чтения свойства order менят состояние через getDialogsUtils()\n\t\t\t// */\n\t\t\t// if ($currentPage.length) {\n\t\t\t// \tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t//\n\t\t\t// \tconst TopDialogUtils = await this.getDialogsUtils();\n\t\t\t//\n\t\t\t// \tawait TopDialogUtils.updatePageVue(viewName, undefined, pageName);\n\t\t\t//\n\t\t\t// \tconst $nextPage = $('> [data-view-page=\"' + pageName + '\"]', $modalLayers);\n\t\t\t// \tif ($nextPage.data('order') < $currentPage.data('order')) moveDirection = 'prev';\n\t\t\t// }\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tel.href = TopDialogWorker.genViewPageHash(el.dataset.toView, moveDirection);\n\t\t});\n\n\t\t/**\n\t\t * Осуществить переход по ссылке с учетом historyType\n\t\t */\n\t\tdocument.addEventListener('click', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener>('[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// Подождать генерацию ссылки\n\t\t\tif (el instanceof HTMLAnchorElement && el.href === '.') {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tconst mouseEvent = new MouseEvent('mousedown', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t\tview: window,\n\t\t\t\t});\n\n\t\t\t\tel.dispatchEvent(mouseEvent);\n\n\t\t\t\tsetTimeout(() => el.click());\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\tconst toView = el.dataset.toView;\n\t\t\tconst viewName = toView.split('-')[0];\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\tif (elDialog) {\n\t\t\t\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\t\t\t\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\tconst elCurrentPage = el.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\t\t\t\tif (elCurrentPage) acc.push(elCurrentPage);\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, []);\n\n\t\t\t\tif (elCurrentPages.length) {\n\t\t\t\t\tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t\t\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\t\tconst elNextPage = el?.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\n\t\t\t\t\t\tif (elNextPage) acc.push(elNextPage);\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, []);\n\n\t\t\t\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, moveDirection);\n\n\t\t\tif (el instanceof HTMLAnchorElement) {\n\t\t\t\t// диалоговое окно еще не открыто, произвести переход по ссылке\n\t\t\t\tif (!elDialog || !isVisible(elDialog)) return;\n\n\t\t\t\t// в адресе уже указана эта страница, необходимо явно запросить ее открытие\n\t\t\t\tif (location.hash.indexOf(toView.replace('-', '=')) !== -1) {\n\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst replaceHistory = !!elDialog?.dataset.toViewReplace;\n\n\t\t\tif (replaceHistory) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thistorySetState(true, hash);\n\n\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\tif (moveDirection == 'next') {\n\t\t\t\t\tTopDialogWorker.state.viewPageN++;\n\t\t\t\t} else {\n\t\t\t\t\tTopDialogWorker.state.viewPageN--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.tagName !== 'A') {\n\t\t\t\t\tif (this.compareStates(hash, location.hash)) {\n\t\t\t\t\t\thistorySetState(false, hash);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => this.getDialogsUtils(), autoInitDelay);\n\t}\n\n\tprivate static opendDialogsFromChangeUrl(oldUrl: string, newUrl: string) {\n\t\tconst oldHash = oldUrl.replace(/.*?#/, '#');\n\t\tconst newHash = newUrl.replace(/.*?#/, '#');\n\n\t\tconst dialogsStateChanged = this.compareStates(oldHash, newHash);\n\t\tif (dialogsStateChanged) void this.opendDialogsFromUrl();\n\t}\n\n\tstatic async getDialogsUtils() {\n\t\tconst { TopDialogUtils } = await import('./utils');\n\n\t\treturn TopDialogUtils;\n\t}\n\n\tstatic getDialog(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialog>('.ui-dialog-content');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getDialog()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$dialog($el: $el) {\n\t\treturn $el.closest('.ui-dialog-content');\n\t};\n\n\tstatic getPage(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialogPage>('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$page($el: $el) {\n\t\treturn $el.closest('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPairPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$pairPage($el: $el) {\n\t\tconst $dialog = TopDialogWorker.get$dialog($el);\n\n\t\tconst $page = TopDialogWorker.get$page($el);\n\t\tconst pageName = $page.data('view-page');\n\n\t\treturn $('[data-view-page=\"' + pageName + '\"]', $dialog);\n\t};\n\n\tstatic getPairPage(el: HTMLElement) {\n\t\tconst elDialog = TopDialogWorker.getDialog(el);\n\t\tif (!elDialog) return;\n\n\t\tconst elPage = TopDialogWorker.getPage(el);\n\t\tconst pageName = elPage?.dataset.viewPage;\n\n\t\treturn querySelectorAllArray(elDialog, `[data-view-page=\"${pageName}\"]`);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t */\n\tstatic close(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tstatic destroy(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\t\t\t$dialog.dialog('destroy');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Сгенерировать ссылку на страницу в диалоговом окне\n\t * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}\n\t * @param moveDirection\n\t */\n\tstatic genViewPageHash(toView: string, moveDirection: MoveDirection = 'next') {\n\t\tlet toViewPageN = this.state.viewPageN;\n\t\tif (moveDirection == 'prev') {\n\t\t\ttoViewPageN--;\n\t\t} else {\n\t\t\ttoViewPageN++;\n\t\t}\n\n\t\tconst viewNameAndPageLink = toView.split('-');\n\t\tconst viewName = viewNameAndPageLink.shift();\n\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\tlet hash = genHash('vpn', toViewPageN);\n\t\thash = genHash('view-' + viewName, pageLink, hash);\n\n\t\treturn hash;\n\t};\n\n\t/**\n\t * Сравнить версию открытых диалоговых окон\n\t * @returns вернет true, если состояния открытых окон изменилось\n\t */\n\tstatic compareStates(hash: string, hash2: string) {\n\t\tconst mathes = hash.match(/[#&]view-[^&]+/g) || [];\n\t\tconst mathes2 = hash2.match(/[#&]view-[^&]+/g) || [];\n\n\t\tif (mathes.length !== mathes2.length) return true;\n\n\t\tconst mathesChanged = mathes.filter((math, n) => {\n\t\t\tconst math2 = mathes2[n] || '';\n\n\t\t\treturn math !== math2;\n\t\t});\n\n\t\tif (mathesChanged.length) return true;\n\n\t\treturn false;\n\t};\n\n\tstatic opendDialogsFromUrl = async () => {\n\t\tconst toViewPageN = Number(getHash('vpn')) || 0;\n\n\t\t// Открыть диалоговое окно\n\t\t// const regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)' + '(' + Math.random() + ')?', 'g'); // fix babel minify regexp\n\t\tconst regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)', 'g');\n\t\tconst view = regexp.exec(location.hash);\n\n\t\tif (view) {\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\t\t\tif (toViewPageN < this.state.viewPageN) moveDirection = 'prev';\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\treturn TopDialogUtils.toViewDirty(view[1], moveDirection);\n\t\t}\n\n\t\t// Закрыть ненужные view\n\t\tconst elDialogs = querySelectorAllArray(document, '.ui-dialog-content[data-view-page-active]') as HTMLDialogElement[];\n\t\telDialogs.filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t}).forEach((elDialog) => {\n\t\t\tconst viewName = elDialog.getAttribute('id');\n\t\t\tif (!viewName) throw 'Диалоговое окно не содержит id';\n\t\t\tconst pageName = getHash('view-' + viewName);\n\t\t\tif (!pageName) {\n\t\t\t\tconst $dialog = $(elDialog);\n\n\t\t\t\t$dialog.dialog('close');\n\t\t\t}\n\t\t});\n\n\t\tthis.state.viewPageN = toViewPageN;\n\n\t\treturn true;\n\t};\n}\n","import { type ComponentInstance, type ComponentInternalInstance, markRaw, ref } from 'vue';\nimport { waitWhile } from '@/core/utils/system';\nimport TopDialog from '../dialog.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { MoveDirection } from '@/components/dialog/lib/types';\nimport type { TopDialogComponent } from './types';\nimport { historySetState } from '@/core/utils/route';\n\n/**\n * Объект для работы с диалоговым окном\n *\n * Каждое окно уникально и может быть открыто одновременно только один раз\n *\n * Можно определить много окон, после чего с ними можно вести работу в любой части приложения\n */\nexport class TopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Индентификатор, определяется на уровне компонента TopDialogComponent\n\t *\n\t * Может использоваться в навигации для открытия нужных окон с нужными настройками\n\t */\n\tid: string;\n\n\t/**\n\t * ID, используемый в верстке диалогового окна\n\t */\n\tidAttr: string;\n\n\t/**\n\t * Пользовательский компонент диалогового окна\n\t */\n\tComponent: T;\n\n\t/**\n\t * Компонент инициирован\n\t *\n\t * Устанавливается после первого вызова useTopDialog()\n\t */\n\tisMounted = ref(false);\n\n\t/**\n\t * Компонент готов к использованию\n\t *\n\t * Используется для внутренних преобразований после отрисовки\n\t */\n\tisReady = ref(false);\n\n\t/**\n\t * Диалоговое окно открыто\n\t */\n\tisOpened = ref(false);\n\n\t/**\n\t * Имя активной страницы дилогового окна\n\t */\n\tpageActive = ref('');\n\n\t/**\n\t * Диалоговое окно находится в состоянии загрузки своей страницы\n\t */\n\tisLoadingPage = ref(false);\n\n\t/**\n\t * Следующая активная страница\n\t *\n\t * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию\n\t */\n\tpageActiveNext = ref('');\n\n\t/**\n\t * props компонента, доступны после инициализации\n\t */\n\tprops?: ComponentInstance<T>['$props'];\n\n\t/**\n\t * emit базового компонента `TopDialog`\n\t */\n\temit?: ComponentInstance<typeof TopDialog>['$emit'];\n\n\t/**\n\t * Одноразовое событие на закрытие диалогового окна\n\t *\n\t * Используется для привязки окна к сценариям использования\n\t */\n\tonCloseOnce?: (props: typeof this.props, pageName: string) => void;\n\n\tconstructor(TopDialogComponent: T) {\n\t\tthis.id = TopDialogComponent.id!;\n\t\tthis.idAttr = 'dialog_' + TopDialogComponent.id;\n\t\tthis.Component = markRaw(TopDialogComponent);\n\t}\n\n\t/**\n\t * Событие - компонент инициирован\n\t */\n\tonMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance) {\n\t\tthis.isMounted.value = true;\n\t\tthis.props = topDialogComponent.props;\n\t\tthis.emit = topDialogBaseComponent.emit;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t *\n\t * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента\n\t */\n\tasync open(pageName: string = 'main', props?: Record<string, unknown>, args: [] = [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst TopDialogUtils = await TopDialogWorker.getDialogsUtils();\n\n\t\tawait TopDialogUtils.toView(this.idAttr, pageName, args, moveDirection);\n\t};\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader\n\t */\n\tasync openAsLink(\n\t\tpageName: string = 'main',\n\t\tprops?: Record<string, unknown>,\n\t\t_args: string[] = [],\n\t\tonCloseOnce?: typeof this.onCloseOnce,\n\t\tmoveDirection?: MoveDirection,\n\t) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst viewName = this.idAttr + '-' + pageName;\n\n\t\tconst hash = TopDialogWorker.genViewPageHash(viewName, moveDirection);\n\t\thistorySetState(false, hash);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close() {\n\t\tTopDialogWorker.close(this.idAttr);\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tasync destroy() {\n\t\tTopDialogWorker.destroy(this.idAttr);\n\t}\n\n\t/**\n\t * Устанвоить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(props: ComponentInstance<T>['$props'] = {}) {\n\t\t// ожидание инициализации компонента\n\t\tif (!this.isMounted) {\n\t\t\tawait waitWhile(() => !this.props);\n\t\t}\n\n\t\tfor (const name in this.props) {\n\t\t\tthis.props[name] = props[name];\n\t\t}\n\t}\n\n\t/**\n\t * Проверить, есть ли необходимость отрисовки страницы диалогового окна\n\t */\n\tneedShowPage(pageName: string): boolean {\n\t\tif (!this.isOpened.value) return false;\n\n\t\treturn this.pageActive.value === pageName || this.pageActiveNext.value === pageName;\n\t}\n\n}\n","<script lang=\"ts\">\nimport { shallowReactive } from 'vue';\nimport { TopDialogHandle } from '@/components/dialog/dialog/composables/dialogHandle';\nimport type { TopDialogComponent } from '@/components/dialog/dialog/composables/types';\n\n/**\n * Словарь всех используемых диалоговых окон\n *\n * В других компонентах не использовать\n */\nconst dialogsWorkers = shallowReactive(new Map<string, TopDialogHandle<TopDialogComponent>>());\n\n/**\n * Получить компонент диалогового окна по id\n */\nexport const getDialogWorker = (id: string) => {\n\tid = id.replace(/^dialog_/, '');\n\n\treturn dialogsWorkers.get(id);\n};\n\n/**\n * Добавить компонент диалогового окна для использования\n */\nexport const addDialogWorker = <T extends TopDialogComponent>(TopDialogComponent: T): TopDialogHandle<T> => {\n\tif (!TopDialogComponent?.id) {\n\t\tconsole.log({ TopDialogComponent: TopDialogComponent });\n\n\t\tthrow new Error('Expected TopDialogComponent');\n\t}\n\n\tif (!dialogsWorkers.has(TopDialogComponent.id)) {\n\t\tdialogsWorkers.set(TopDialogComponent.id, new TopDialogHandle(TopDialogComponent));\n\t}\n\n\treturn dialogsWorkers.get(TopDialogComponent.id) as TopDialogHandle<T>;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { onUnmounted } from 'vue';\n\ndefineOptions({\n\tname: 'DialogWrapper',\n});\n\nonUnmounted(() => {\n\tdialogsWorkers.forEach(dialog => dialog.destroy());\n\tdialogsWorkers.clear();\n});\n</script>\n\n<template>\n\t<div class=\"top-dialogs\" style=\"display: none;\">\n\t\t<component\n\t\t\tv-for=\"[dialogId, dialog] in dialogsWorkers\"\n\t\t\t:is=\"dialog.Component\"\n\t\t\t:key=\"dialogId\"\n\t\t/>\n\t</div>\n</template>\n","import type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { useTopDialog } from './utils';\nimport { waitWhile } from '@/core/utils/system';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { TopDialogHandle } from './dialogHandle';\n\n/**\n * Объект для работы с асинхронным диалоговым окном\n *\n * Является прослойкой для доступа к TopDialogHandle\n */\nexport class AsyncTopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Функция, определяющая компонент TopDialogComponent\n\t */\n\treadonly resolve: AsyncTopDialogComponentLoader<T>;\n\n\t/**\n\t * Реактивная Сссылка на объект worker,\n\t *\n\t * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено\n\t */\n\treadonly worker: Ref<TopDialogHandle<T> | null> = ref(null);\n\n\tconstructor(resolve: AsyncTopDialogComponentLoader<T>) {\n\t\tthis.resolve = resolve;\n\t}\n\n\t/**\n\t * Получить доступ к TopDialogHandle\n\t */\n\tasync get() {\n\t\tif (this.worker.value) return this.worker.value;\n\n\t\tconst result = await this.resolve();\n\t\tconst TopDialogComponent = result.default;\n\n\t\tthis.worker.value = useTopDialog(TopDialogComponent);\n\n\t\tconst worker = this.worker.value;\n\n\t\tawait waitWhile(() => !worker.isMounted);\n\n\t\treturn worker;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t */\n\tasync open(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.open(...args);\n\t}\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Только общедоступные диалоговые окна, расположенные в @/dialogs\n\t */\n\tasync openAsLink(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tvoid worker.openAsLink(...args);\n\t}\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.close(...args);\n\t}\n\n\t/**\n\t * Размонтировать виджет диалогового окна\n\t */\n\tasync destroy(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.destroy(...args);\n\t}\n\n\t/**\n\t * Установить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(...args: Parameters<TopDialogHandle<T>['setProps']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.setProps(...args);\n\t}\n}\n","import { getCurrentInstance, inject } from 'vue';\nimport { TopDialogHandle } from './dialogHandle';\nimport { AsyncTopDialogHandle } from './asyncDialogHandle';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { addDialogWorker, getDialogWorker } from '../dialogs/dialogs.vue';\n\n/**\n * Получить объект управленя текущим диалоговым окном\n */\nexport const useTopDialogSelf = () => {\n\t// вызов из пользовтаельского компонента диалога\n\tconst topDialogComponent = getCurrentInstance() as any;\n\tif (topDialogComponent?.type?.id) {\n\t\tconst dialogWorker = getDialogWorker(topDialogComponent.type.id);\n\t\tif (dialogWorker) return dialogWorker;\n\t}\n\n\treturn inject('dialogWorker') as TopDialogHandle<TopDialogComponent>;\n};\n\n/**\n * Получить объект управленя диалоговым окном\n *\n * При первом вызове компонент диалогового окна будет внедрен в компонент DialogWrapper\n */\nexport const useTopDialog = <T extends TopDialogComponent>(DialogComponent: T): TopDialogHandle<T> => {\n\treturn addDialogWorker(DialogComponent);\n};\n\n/**\n * Получить объект управленя асинхронным диалоговым окном\n *\n * Компонент диалогового окна будет загружен и инициирован при первом взаимодействии с объектом\n *\n * Использует useTopDialog()\n */\nexport const useAsyncTopDialog = <T extends TopDialogComponent>(resolve: AsyncTopDialogComponentLoader<T>): AsyncTopDialogHandle<T> => {\n\treturn new AsyncTopDialogHandle(resolve);\n};\n"]}
import { K as e } from "./forms-_4U0sLFk.esm.js";
import { isVisible as t, querySelectorAllArray as n } from "../utils/dom.js";
import { waitWhile as r } from "../utils/system.js";
import { genHash as i, getHash as a, historySetState as o } from "../utils/route.js";
import { Fragment as s, createBlock as c, createElementBlock as l, createElementVNode as u, defineComponent as d, getCurrentInstance as f, inject as p, markRaw as m, normalizeClass as h, normalizeStyle as g, onMounted as _, onUnmounted as v, openBlock as y, provide as b, ref as x, renderList as S, renderSlot as C, resolveDynamicComponent as w, shallowReactive as T, unref as E, watch as D } from "vue";
//#region src/components/dialog/dialog/dialog.vue?vue&type=script&setup=true&lang.ts
var O = [
"id",
"data-view-page-active",
"data-modal",
"data-position"
], k = /* @__PURE__ */ d({
__name: "dialog",
props: {
id: {},
pageActive: {},
width: { default: "600px" },
height: { default: "auto" },
modal: {
type: Boolean,
default: !0
},
position: {},
historyType: { default: "push" },
classes: {}
},
emits: ["open", "close"],
setup(e) {
let t = F(e.id);
if (!t) throw Error("TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()");
return b("dialogWorker", t), _(() => {
let e = f(), n = e.parent;
if (n?.parent?.type.name !== "DialogWrapper") throw Error("TopDialog cannot be used in a template, use useTopDialog()");
if (Array.isArray(n.subTree.children) && n.subTree.children.length !== 1) throw Error("TopDialog can has only one root element");
t.onMounted(n, e);
}), D(t.isOpened, () => {
t.isReady.value = !0;
}, {
flush: "post",
once: !0
}), (n, r) => (y(), l("div", {
id: E(t).idAttr,
class: h(["top-dialog", e.classes]),
style: g({
"--top-dialog-width": e.width,
"--top-dialog-height": e.height
}),
tabindex: "-1",
"data-view-page-active": E(t).pageActive.value,
"data-modal": e.modal,
"data-position": e.position
}, [
r[0] ||= u("div", { class: "modal-layer modal-layer-header" }, null, -1),
u("div", {
class: "modal-layer modal-layer-body",
style: g({ "min-height": e.height + "px" })
}, null, 4),
C(n.$slots, "default")
], 14, O));
}
}), A, j = class e {
static init(r) {
if (this.inited) return;
this.inited = !0, this.state.load = r?.load, this.state.decoratorOnCreate = r?.decoratorOnCreate;
let i = r?.autoInitDelay ?? 5e3;
window.addEventListener("hashchange", (e) => {
this.opendDialogsFromChangeUrl(e.oldURL, e.newURL);
}), this.opendDialogsFromChangeUrl("", location.href), document.addEventListener("mousedown", async (t) => {
if (!(t.target instanceof HTMLElement)) return;
let n = t.target.closest("a[data-to-view]");
if (!n) return;
let r = "next";
n.dataset.action === "top-dialog-close" && (r = "prev"), n.href = e.genViewPageHash(n.dataset.toView, r);
}), document.addEventListener("click", async (r) => {
if (!(r.target instanceof HTMLElement)) return;
let i = r.target.closest("[data-to-view]");
if (!i) return;
if (i instanceof HTMLAnchorElement && i.href === ".") {
r.preventDefault();
let e = new MouseEvent("mousedown", {
bubbles: !0,
cancelable: !0,
view: window
});
i.dispatchEvent(e), setTimeout(() => i.click());
return;
}
let a = await this.getDialogsUtils(), s = i.dataset.toView, c = s.split("-")[0], l = a.getElDialogById(c), u = "next";
if (l) {
let e = n(l, ".modal-layer"), t = e.reduce((e, t) => {
let n = t.querySelector(":scope > .active");
return n && e.push(n), e;
}, []);
if (t.length) {
let n = s.split("-")[1].split(":")[0];
(e.reduce((e, t) => {
let r = t?.querySelector(`:scope > [data-view-page="${n}"]`);
return r && e.push(r), e;
}, [])[0]?.dataset.order ?? 0) < (t[0]?.dataset.order ?? 0) && (u = "prev");
}
}
i.dataset.action === "top-dialog-close" && (u = "prev");
let d = e.genViewPageHash(s, u);
if (i instanceof HTMLAnchorElement) {
if (!l || !t(l)) return;
if (location.hash.indexOf(s.replace("-", "=")) !== -1) {
await a.toViewDirty(s);
return;
}
}
l?.dataset.toViewReplace ? (r.preventDefault(), o(!0, d), await a.toViewDirty(s), u == "next" ? e.state.viewPageN++ : e.state.viewPageN--) : i.tagName !== "A" && (this.compareStates(d, location.hash) ? o(!1, d) : await a.toViewDirty(s));
}), setTimeout(() => this.getDialogsUtils(), i);
}
static opendDialogsFromChangeUrl(e, t) {
let n = e.replace(/.*?#/, "#"), r = t.replace(/.*?#/, "#");
this.compareStates(n, r) && this.opendDialogsFromUrl();
}
static async getDialogsUtils() {
let { TopDialogUtils: e } = await import("./utils-B1tz7GZc.esm.js");
return e;
}
static getDialog(e) {
return e.closest(".ui-dialog-content");
}
static get$dialog(e) {
return e.closest(".ui-dialog-content");
}
static getPage(e) {
return e.closest("[data-view-page]");
}
static get$page(e) {
return e.closest("[data-view-page]");
}
static get$pairPage(t) {
let n = e.get$dialog(t), r = e.get$page(t).data("view-page");
return $("[data-view-page=\"" + r + "\"]", n);
}
static getPairPage(t) {
let r = e.getDialog(t);
if (!r) return;
let i = e.getPage(t)?.dataset.viewPage;
return n(r, `[data-view-page="${i}"]`);
}
static close(e) {
let t = $("#" + e);
if (t.dialog("instance")) {
t.dialog("close");
return;
}
let n = document.getElementById(e);
n instanceof HTMLDialogElement && n.close();
}
static destroy(e) {
let t = $("#" + e);
if (t.dialog("instance")) {
t.dialog("close"), t.dialog("destroy");
return;
}
let n = document.getElementById(e);
n instanceof HTMLDialogElement && n.close();
}
static genViewPageHash(e, t = "next") {
let n = this.state.viewPageN;
t == "prev" ? n-- : n++;
let r = e.split("-"), a = r.shift(), o = r.join("-"), s = i("vpn", n);
return s = i("view-" + a, o, s), s;
}
static compareStates(e, t) {
let n = e.match(/[#&]view-[^&]+/g) || [], r = t.match(/[#&]view-[^&]+/g) || [];
return !!(n.length !== r.length || n.filter((e, t) => e !== (r[t] || "")).length);
}
};
A = j, e(j, "state", {
load: void 0,
decoratorOnCreate: void 0,
viewPageN: 0
}), e(j, "inited", !1), e(j, "opendDialogsFromUrl", async () => {
let e = Number(a("vpn")) || 0, r = (/* @__PURE__ */ RegExp("view-((\\w+)=([\\w-]+)(?::([\\w.:-]+))?)", "g")).exec(location.hash);
if (r) {
let t = "next";
return e < A.state.viewPageN && (t = "prev"), (await A.getDialogsUtils()).toViewDirty(r[1], t);
}
return n(document, ".ui-dialog-content[data-view-page-active]").filter((e) => t(e)).forEach((e) => {
let t = e.getAttribute("id");
if (!t) throw "Диалоговое окно не содержит id";
a("view-" + t) || $(e).dialog("close");
}), A.state.viewPageN = e, !0;
});
//#endregion
//#region src/components/dialog/dialog/composables/dialogHandle.ts
var M = class {
constructor(t) {
e(this, "id", void 0), e(this, "idAttr", void 0), e(this, "Component", void 0), e(this, "isMounted", x(!1)), e(this, "isReady", x(!1)), e(this, "isOpened", x(!1)), e(this, "pageActive", x("")), e(this, "isLoadingPage", x(!1)), e(this, "pageActiveNext", x("")), e(this, "props", void 0), e(this, "emit", void 0), e(this, "onCloseOnce", void 0), this.id = t.id, this.idAttr = "dialog_" + t.id, this.Component = m(t);
}
onMounted(e, t) {
this.isMounted.value = !0, this.props = e.props, this.emit = t.emit;
}
async open(e = "main", t, n = [], r, i) {
t && await this.setProps(t), r && (this.onCloseOnce = r), await (await j.getDialogsUtils()).toView(this.idAttr, e, n, i);
}
async openAsLink(e = "main", t, n = [], r, i) {
t && await this.setProps(t), r && (this.onCloseOnce = r);
let a = this.idAttr + "-" + e;
o(!1, j.genViewPageHash(a, i));
}
async close() {
j.close(this.idAttr);
}
async destroy() {
j.destroy(this.idAttr);
}
async setProps(e = {}) {
this.isMounted || await r(() => !this.props);
for (let t in this.props) this.props[t] = e[t];
}
needShowPage(e) {
return this.isOpened.value ? this.pageActive.value === e || this.pageActiveNext.value === e : !1;
}
}, N = {
class: "top-dialogs",
style: { display: "none" }
}, P = T(/* @__PURE__ */ new Map()), F = (e) => (e = e.replace(/^dialog_/, ""), P.get(e)), I = (e) => {
if (!e?.id) throw console.log({ TopDialogComponent: e }), Error("Expected TopDialogComponent");
return P.has(e.id) || P.set(e.id, new M(e)), P.get(e.id);
}, L = /* @__PURE__ */ d({
name: "DialogWrapper",
__name: "dialogs",
setup(e) {
return v(() => {
P.forEach((e) => e.destroy()), P.clear();
}), (e, t) => (y(), l("div", N, [(y(!0), l(s, null, S(E(P), ([e, t]) => (y(), c(w(t.Component), { key: e }))), 128))]));
}
}), R = class {
constructor(t) {
e(this, "resolve", void 0), e(this, "worker", x(null)), this.resolve = t;
}
async get() {
if (this.worker.value) return this.worker.value;
let e = (await this.resolve()).default;
this.worker.value = B(e);
let t = this.worker.value;
return await r(() => !t.isMounted), t;
}
async open(...e) {
await (await this.get()).open(...e);
}
async openAsLink(...e) {
(await this.get()).openAsLink(...e);
}
async close(...e) {
(await this.get()).close(...e);
}
async destroy(...e) {
(await this.get()).destroy(...e);
}
async setProps(...e) {
await (await this.get()).setProps(...e);
}
}, z = () => {
let e = f();
if (e?.type?.id) {
let t = F(e.type.id);
if (t) return t;
}
return p("dialogWorker");
}, B = (e) => I(e), V = (e) => new R(e);
//#endregion
export { F as a, L as i, B as n, j as o, z as r, k as s, V as t };
//# sourceMappingURL=utils-B1P0BzZ1.esm.js.map
{"version":3,"file":"utils-B1P0BzZ1.esm.js","names":[],"sources":["../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/lib/worker.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue","../../src/components/dialog/dialog/dialogs/dialogs.vue","../../src/components/dialog/dialog/composables/asyncDialogHandle.ts","../../src/components/dialog/dialog/composables/utils.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t'--top-dialog-width': width,\n\t\t\t'--top-dialog-height': height,\n\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t'--top-dialog-width': width,\n\t\t\t'--top-dialog-height': height,\n\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","import { genHash, getHash, historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogOpener, ElTopDialogPage, MoveDirection, TopDialogOptions } from './types';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\nimport type { $el } from '@/components/types';\n\nexport abstract class TopDialogWorker {\n\tstatic state = {\n\t\tload: undefined as TopDialogOptions['load'] | undefined,\n\t\tdecoratorOnCreate: undefined as TopDialogOptions['decoratorOnCreate'] | undefined,\n\n\t\t/**\n\t\t * Порядковый номер перехода в диалоговых окнах\n\t\t *\n\t\t * Для расчета анимации Вперед / Назад\n\t\t */\n\t\tviewPageN: 0,\n\t};\n\n\tprivate static inited = false;\n\n\t/**\n\t * Инициировать события слежения за парамтерами url\n\t *\n\t * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу\n\t */\n\tstatic init(options?: TopDialogOptions) {\n\t\tif (this.inited) return;\n\t\tthis.inited = true;\n\n\t\tthis.state.load = options?.load;\n\t\tthis.state.decoratorOnCreate = options?.decoratorOnCreate;\n\n\t\tconst autoInitDelay = options?.autoInitDelay ?? 5000;\n\n\t\twindow.addEventListener('hashchange', (e) => {\n\t\t\tthis.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n\t\t});\n\n\t\tthis.opendDialogsFromChangeUrl('', location.href);\n\n\t\t/**\n\t\t * Сгенерировать ссылку для перехода к странице диалогового окна\n\t\t */\n\t\tdocument.addEventListener('mousedown', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener<HTMLAnchorElement>>('a[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// const toView = el.dataset.toView;\n\t\t\t// const viewName = toView.split('-')[0];\n\t\t\t// const $toDialog = $('#' + viewName);\n\t\t\t// const $modalLayers = $('> .modal-layer', $toDialog);\n\t\t\t// const $currentPage = $('> .active', $modalLayers);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\t// /**\n\t\t\t// * Данный алгоритм определения направления работает не корректно, так как для чтения свойства order менят состояние через getDialogsUtils()\n\t\t\t// */\n\t\t\t// if ($currentPage.length) {\n\t\t\t// \tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t//\n\t\t\t// \tconst TopDialogUtils = await this.getDialogsUtils();\n\t\t\t//\n\t\t\t// \tawait TopDialogUtils.updatePageVue(viewName, undefined, pageName);\n\t\t\t//\n\t\t\t// \tconst $nextPage = $('> [data-view-page=\"' + pageName + '\"]', $modalLayers);\n\t\t\t// \tif ($nextPage.data('order') < $currentPage.data('order')) moveDirection = 'prev';\n\t\t\t// }\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tel.href = TopDialogWorker.genViewPageHash(el.dataset.toView, moveDirection);\n\t\t});\n\n\t\t/**\n\t\t * Осуществить переход по ссылке с учетом historyType\n\t\t */\n\t\tdocument.addEventListener('click', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener>('[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// Подождать генерацию ссылки\n\t\t\tif (el instanceof HTMLAnchorElement && el.href === '.') {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tconst mouseEvent = new MouseEvent('mousedown', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t\tview: window,\n\t\t\t\t});\n\n\t\t\t\tel.dispatchEvent(mouseEvent);\n\n\t\t\t\tsetTimeout(() => el.click());\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\tconst toView = el.dataset.toView;\n\t\t\tconst viewName = toView.split('-')[0];\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\tif (elDialog) {\n\t\t\t\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\t\t\t\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\tconst elCurrentPage = el.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\t\t\t\tif (elCurrentPage) acc.push(elCurrentPage);\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, []);\n\n\t\t\t\tif (elCurrentPages.length) {\n\t\t\t\t\tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t\t\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\t\tconst elNextPage = el?.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\n\t\t\t\t\t\tif (elNextPage) acc.push(elNextPage);\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, []);\n\n\t\t\t\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, moveDirection);\n\n\t\t\tif (el instanceof HTMLAnchorElement) {\n\t\t\t\t// диалоговое окно еще не открыто, произвести переход по ссылке\n\t\t\t\tif (!elDialog || !isVisible(elDialog)) return;\n\n\t\t\t\t// в адресе уже указана эта страница, необходимо явно запросить ее открытие\n\t\t\t\tif (location.hash.indexOf(toView.replace('-', '=')) !== -1) {\n\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst replaceHistory = !!elDialog?.dataset.toViewReplace;\n\n\t\t\tif (replaceHistory) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thistorySetState(true, hash);\n\n\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\tif (moveDirection == 'next') {\n\t\t\t\t\tTopDialogWorker.state.viewPageN++;\n\t\t\t\t} else {\n\t\t\t\t\tTopDialogWorker.state.viewPageN--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.tagName !== 'A') {\n\t\t\t\t\tif (this.compareStates(hash, location.hash)) {\n\t\t\t\t\t\thistorySetState(false, hash);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => this.getDialogsUtils(), autoInitDelay);\n\t}\n\n\tprivate static opendDialogsFromChangeUrl(oldUrl: string, newUrl: string) {\n\t\tconst oldHash = oldUrl.replace(/.*?#/, '#');\n\t\tconst newHash = newUrl.replace(/.*?#/, '#');\n\n\t\tconst dialogsStateChanged = this.compareStates(oldHash, newHash);\n\t\tif (dialogsStateChanged) void this.opendDialogsFromUrl();\n\t}\n\n\tstatic async getDialogsUtils() {\n\t\tconst { TopDialogUtils } = await import('./utils');\n\n\t\treturn TopDialogUtils;\n\t}\n\n\tstatic getDialog(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialog>('.ui-dialog-content');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getDialog()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$dialog($el: $el) {\n\t\treturn $el.closest('.ui-dialog-content');\n\t};\n\n\tstatic getPage(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialogPage>('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$page($el: $el) {\n\t\treturn $el.closest('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPairPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$pairPage($el: $el) {\n\t\tconst $dialog = TopDialogWorker.get$dialog($el);\n\n\t\tconst $page = TopDialogWorker.get$page($el);\n\t\tconst pageName = $page.data('view-page');\n\n\t\treturn $('[data-view-page=\"' + pageName + '\"]', $dialog);\n\t};\n\n\tstatic getPairPage(el: HTMLElement) {\n\t\tconst elDialog = TopDialogWorker.getDialog(el);\n\t\tif (!elDialog) return;\n\n\t\tconst elPage = TopDialogWorker.getPage(el);\n\t\tconst pageName = elPage?.dataset.viewPage;\n\n\t\treturn querySelectorAllArray(elDialog, `[data-view-page=\"${pageName}\"]`);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t */\n\tstatic close(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tstatic destroy(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\t\t\t$dialog.dialog('destroy');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Сгенерировать ссылку на страницу в диалоговом окне\n\t * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}\n\t * @param moveDirection\n\t */\n\tstatic genViewPageHash(toView: string, moveDirection: MoveDirection = 'next') {\n\t\tlet toViewPageN = this.state.viewPageN;\n\t\tif (moveDirection == 'prev') {\n\t\t\ttoViewPageN--;\n\t\t} else {\n\t\t\ttoViewPageN++;\n\t\t}\n\n\t\tconst viewNameAndPageLink = toView.split('-');\n\t\tconst viewName = viewNameAndPageLink.shift();\n\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\tlet hash = genHash('vpn', toViewPageN);\n\t\thash = genHash('view-' + viewName, pageLink, hash);\n\n\t\treturn hash;\n\t};\n\n\t/**\n\t * Сравнить версию открытых диалоговых окон\n\t * @returns вернет true, если состояния открытых окон изменилось\n\t */\n\tstatic compareStates(hash: string, hash2: string) {\n\t\tconst mathes = hash.match(/[#&]view-[^&]+/g) || [];\n\t\tconst mathes2 = hash2.match(/[#&]view-[^&]+/g) || [];\n\n\t\tif (mathes.length !== mathes2.length) return true;\n\n\t\tconst mathesChanged = mathes.filter((math, n) => {\n\t\t\tconst math2 = mathes2[n] || '';\n\n\t\t\treturn math !== math2;\n\t\t});\n\n\t\tif (mathesChanged.length) return true;\n\n\t\treturn false;\n\t};\n\n\tstatic opendDialogsFromUrl = async () => {\n\t\tconst toViewPageN = Number(getHash('vpn')) || 0;\n\n\t\t// Открыть диалоговое окно\n\t\t// const regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)' + '(' + Math.random() + ')?', 'g'); // fix babel minify regexp\n\t\tconst regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)', 'g');\n\t\tconst view = regexp.exec(location.hash);\n\n\t\tif (view) {\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\t\t\tif (toViewPageN < this.state.viewPageN) moveDirection = 'prev';\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\treturn TopDialogUtils.toViewDirty(view[1], moveDirection);\n\t\t}\n\n\t\t// Закрыть ненужные view\n\t\tconst elDialogs = querySelectorAllArray(document, '.ui-dialog-content[data-view-page-active]') as HTMLDialogElement[];\n\t\telDialogs.filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t}).forEach((elDialog) => {\n\t\t\tconst viewName = elDialog.getAttribute('id');\n\t\t\tif (!viewName) throw 'Диалоговое окно не содержит id';\n\t\t\tconst pageName = getHash('view-' + viewName);\n\t\t\tif (!pageName) {\n\t\t\t\tconst $dialog = $(elDialog);\n\n\t\t\t\t$dialog.dialog('close');\n\t\t\t}\n\t\t});\n\n\t\tthis.state.viewPageN = toViewPageN;\n\n\t\treturn true;\n\t};\n}\n","import { type ComponentInstance, type ComponentInternalInstance, markRaw, ref } from 'vue';\nimport { waitWhile } from '@/core/utils/system';\nimport TopDialog from '../dialog.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { MoveDirection } from '@/components/dialog/lib/types';\nimport type { TopDialogComponent } from './types';\nimport { historySetState } from '@/core/utils/route';\n\n/**\n * Объект для работы с диалоговым окном\n *\n * Каждое окно уникально и может быть открыто одновременно только один раз\n *\n * Можно определить много окон, после чего с ними можно вести работу в любой части приложения\n */\nexport class TopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Индентификатор, определяется на уровне компонента TopDialogComponent\n\t *\n\t * Может использоваться в навигации для открытия нужных окон с нужными настройками\n\t */\n\tid: string;\n\n\t/**\n\t * ID, используемый в верстке диалогового окна\n\t */\n\tidAttr: string;\n\n\t/**\n\t * Пользовательский компонент диалогового окна\n\t */\n\tComponent: T;\n\n\t/**\n\t * Компонент инициирован\n\t *\n\t * Устанавливается после первого вызова useTopDialog()\n\t */\n\tisMounted = ref(false);\n\n\t/**\n\t * Компонент готов к использованию\n\t *\n\t * Используется для внутренних преобразований после отрисовки\n\t */\n\tisReady = ref(false);\n\n\t/**\n\t * Диалоговое окно открыто\n\t */\n\tisOpened = ref(false);\n\n\t/**\n\t * Имя активной страницы дилогового окна\n\t */\n\tpageActive = ref('');\n\n\t/**\n\t * Диалоговое окно находится в состоянии загрузки своей страницы\n\t */\n\tisLoadingPage = ref(false);\n\n\t/**\n\t * Следующая активная страница\n\t *\n\t * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию\n\t */\n\tpageActiveNext = ref('');\n\n\t/**\n\t * props компонента, доступны после инициализации\n\t */\n\tprops?: ComponentInstance<T>['$props'];\n\n\t/**\n\t * emit базового компонента `TopDialog`\n\t */\n\temit?: ComponentInstance<typeof TopDialog>['$emit'];\n\n\t/**\n\t * Одноразовое событие на закрытие диалогового окна\n\t *\n\t * Используется для привязки окна к сценариям использования\n\t */\n\tonCloseOnce?: (props: typeof this.props, pageName: string) => void;\n\n\tconstructor(TopDialogComponent: T) {\n\t\tthis.id = TopDialogComponent.id!;\n\t\tthis.idAttr = 'dialog_' + TopDialogComponent.id;\n\t\tthis.Component = markRaw(TopDialogComponent);\n\t}\n\n\t/**\n\t * Событие - компонент инициирован\n\t */\n\tonMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance) {\n\t\tthis.isMounted.value = true;\n\t\tthis.props = topDialogComponent.props;\n\t\tthis.emit = topDialogBaseComponent.emit;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t *\n\t * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента\n\t */\n\tasync open(pageName: string = 'main', props?: Record<string, unknown>, args: [] = [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst TopDialogUtils = await TopDialogWorker.getDialogsUtils();\n\n\t\tawait TopDialogUtils.toView(this.idAttr, pageName, args, moveDirection);\n\t};\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader\n\t */\n\tasync openAsLink(\n\t\tpageName: string = 'main',\n\t\tprops?: Record<string, unknown>,\n\t\t_args: string[] = [],\n\t\tonCloseOnce?: typeof this.onCloseOnce,\n\t\tmoveDirection?: MoveDirection,\n\t) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst viewName = this.idAttr + '-' + pageName;\n\n\t\tconst hash = TopDialogWorker.genViewPageHash(viewName, moveDirection);\n\t\thistorySetState(false, hash);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close() {\n\t\tTopDialogWorker.close(this.idAttr);\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tasync destroy() {\n\t\tTopDialogWorker.destroy(this.idAttr);\n\t}\n\n\t/**\n\t * Устанвоить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(props: ComponentInstance<T>['$props'] = {}) {\n\t\t// ожидание инициализации компонента\n\t\tif (!this.isMounted) {\n\t\t\tawait waitWhile(() => !this.props);\n\t\t}\n\n\t\tfor (const name in this.props) {\n\t\t\tthis.props[name] = props[name];\n\t\t}\n\t}\n\n\t/**\n\t * Проверить, есть ли необходимость отрисовки страницы диалогового окна\n\t */\n\tneedShowPage(pageName: string): boolean {\n\t\tif (!this.isOpened.value) return false;\n\n\t\treturn this.pageActive.value === pageName || this.pageActiveNext.value === pageName;\n\t}\n\n}\n","<script lang=\"ts\">\nimport { shallowReactive } from 'vue';\nimport { TopDialogHandle } from '@/components/dialog/dialog/composables/dialogHandle';\nimport type { TopDialogComponent } from '@/components/dialog/dialog/composables/types';\n\n/**\n * Словарь всех используемых диалоговых окон\n *\n * В других компонентах не использовать\n */\nconst dialogsWorkers = shallowReactive(new Map<string, TopDialogHandle<TopDialogComponent>>());\n\n/**\n * Получить компонент диалогового окна по id\n */\nexport const getDialogWorker = (id: string) => {\n\tid = id.replace(/^dialog_/, '');\n\n\treturn dialogsWorkers.get(id);\n};\n\n/**\n * Добавить компонент диалогового окна для использования\n */\nexport const addDialogWorker = <T extends TopDialogComponent>(TopDialogComponent: T): TopDialogHandle<T> => {\n\tif (!TopDialogComponent?.id) {\n\t\tconsole.log({ TopDialogComponent: TopDialogComponent });\n\n\t\tthrow new Error('Expected TopDialogComponent');\n\t}\n\n\tif (!dialogsWorkers.has(TopDialogComponent.id)) {\n\t\tdialogsWorkers.set(TopDialogComponent.id, new TopDialogHandle(TopDialogComponent));\n\t}\n\n\treturn dialogsWorkers.get(TopDialogComponent.id) as TopDialogHandle<T>;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { onUnmounted } from 'vue';\n\ndefineOptions({\n\tname: 'DialogWrapper',\n});\n\nonUnmounted(() => {\n\tdialogsWorkers.forEach(dialog => dialog.destroy());\n\tdialogsWorkers.clear();\n});\n</script>\n\n<template>\n\t<div class=\"top-dialogs\" style=\"display: none;\">\n\t\t<component\n\t\t\tv-for=\"[dialogId, dialog] in dialogsWorkers\"\n\t\t\t:is=\"dialog.Component\"\n\t\t\t:key=\"dialogId\"\n\t\t/>\n\t</div>\n</template>\n","<script lang=\"ts\">\nimport { shallowReactive } from 'vue';\nimport { TopDialogHandle } from '@/components/dialog/dialog/composables/dialogHandle';\nimport type { TopDialogComponent } from '@/components/dialog/dialog/composables/types';\n\n/**\n * Словарь всех используемых диалоговых окон\n *\n * В других компонентах не использовать\n */\nconst dialogsWorkers = shallowReactive(new Map<string, TopDialogHandle<TopDialogComponent>>());\n\n/**\n * Получить компонент диалогового окна по id\n */\nexport const getDialogWorker = (id: string) => {\n\tid = id.replace(/^dialog_/, '');\n\n\treturn dialogsWorkers.get(id);\n};\n\n/**\n * Добавить компонент диалогового окна для использования\n */\nexport const addDialogWorker = <T extends TopDialogComponent>(TopDialogComponent: T): TopDialogHandle<T> => {\n\tif (!TopDialogComponent?.id) {\n\t\tconsole.log({ TopDialogComponent: TopDialogComponent });\n\n\t\tthrow new Error('Expected TopDialogComponent');\n\t}\n\n\tif (!dialogsWorkers.has(TopDialogComponent.id)) {\n\t\tdialogsWorkers.set(TopDialogComponent.id, new TopDialogHandle(TopDialogComponent));\n\t}\n\n\treturn dialogsWorkers.get(TopDialogComponent.id) as TopDialogHandle<T>;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { onUnmounted } from 'vue';\n\ndefineOptions({\n\tname: 'DialogWrapper',\n});\n\nonUnmounted(() => {\n\tdialogsWorkers.forEach(dialog => dialog.destroy());\n\tdialogsWorkers.clear();\n});\n</script>\n\n<template>\n\t<div class=\"top-dialogs\" style=\"display: none;\">\n\t\t<component\n\t\t\tv-for=\"[dialogId, dialog] in dialogsWorkers\"\n\t\t\t:is=\"dialog.Component\"\n\t\t\t:key=\"dialogId\"\n\t\t/>\n\t</div>\n</template>\n","import type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { useTopDialog } from './utils';\nimport { waitWhile } from '@/core/utils/system';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { TopDialogHandle } from './dialogHandle';\n\n/**\n * Объект для работы с асинхронным диалоговым окном\n *\n * Является прослойкой для доступа к TopDialogHandle\n */\nexport class AsyncTopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Функция, определяющая компонент TopDialogComponent\n\t */\n\treadonly resolve: AsyncTopDialogComponentLoader<T>;\n\n\t/**\n\t * Реактивная Сссылка на объект worker,\n\t *\n\t * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено\n\t */\n\treadonly worker: Ref<TopDialogHandle<T> | null> = ref(null);\n\n\tconstructor(resolve: AsyncTopDialogComponentLoader<T>) {\n\t\tthis.resolve = resolve;\n\t}\n\n\t/**\n\t * Получить доступ к TopDialogHandle\n\t */\n\tasync get() {\n\t\tif (this.worker.value) return this.worker.value;\n\n\t\tconst result = await this.resolve();\n\t\tconst TopDialogComponent = result.default;\n\n\t\tthis.worker.value = useTopDialog(TopDialogComponent);\n\n\t\tconst worker = this.worker.value;\n\n\t\tawait waitWhile(() => !worker.isMounted);\n\n\t\treturn worker;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t */\n\tasync open(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.open(...args);\n\t}\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Только общедоступные диалоговые окна, расположенные в @/dialogs\n\t */\n\tasync openAsLink(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tvoid worker.openAsLink(...args);\n\t}\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.close(...args);\n\t}\n\n\t/**\n\t * Размонтировать виджет диалогового окна\n\t */\n\tasync destroy(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.destroy(...args);\n\t}\n\n\t/**\n\t * Установить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(...args: Parameters<TopDialogHandle<T>['setProps']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.setProps(...args);\n\t}\n}\n","import { getCurrentInstance, inject } from 'vue';\nimport { TopDialogHandle } from './dialogHandle';\nimport { AsyncTopDialogHandle } from './asyncDialogHandle';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { addDialogWorker, getDialogWorker } from '../dialogs/dialogs.vue';\n\n/**\n * Получить объект управленя текущим диалоговым окном\n */\nexport const useTopDialogSelf = () => {\n\t// вызов из пользовтаельского компонента диалога\n\tconst topDialogComponent = getCurrentInstance() as any;\n\tif (topDialogComponent?.type?.id) {\n\t\tconst dialogWorker = getDialogWorker(topDialogComponent.type.id);\n\t\tif (dialogWorker) return dialogWorker;\n\t}\n\n\treturn inject('dialogWorker') as TopDialogHandle<TopDialogComponent>;\n};\n\n/**\n * Получить объект управленя диалоговым окном\n *\n * При первом вызове компонент диалогового окна будет внедрен в компонент DialogWrapper\n */\nexport const useTopDialog = <T extends TopDialogComponent>(DialogComponent: T): TopDialogHandle<T> => {\n\treturn addDialogWorker(DialogComponent);\n};\n\n/**\n * Получить объект управленя асинхронным диалоговым окном\n *\n * Компонент диалогового окна будет загружен и инициирован при первом взаимодействии с объектом\n *\n * Использует useTopDialog()\n */\nexport const useAsyncTopDialog = <T extends TopDialogComponent>(resolve: AsyncTopDialogComponentLoader<T>): AsyncTopDialogHandle<T> => {\n\treturn new AsyncTopDialogHandle(resolve);\n};\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`../utils/dom.amd`,`./worker-D28QqQ45.amd`,`../utils/system.amd`,`./utils-B1P0BzZ1.amd`,`../utils/route.amd`,`../utils/scroll.amd`,`vue`,`../popup/worker.amd`],function(e,t,n,r,i,a,o,s,c,l){"use strict";if(u===void 0)var u=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopDialogUtils=void 0,$;var d=!1,f=()=>{d||(d=!0,document.addEventListener(`keydown`,e=>{if(e.key!==`Escape`||!e.target||!(e.target instanceof HTMLElement))return;let t=e.target;if(!t.closest(`.ui-dialog`)||t.contentEditable===`true`||t.contentEditable===`plaintext-only`||(0,r.querySelectorVisible)(document.documentElement,`.top-popup-wrapper`)||t.classList.contains(`autocomplete`)||(0,r.querySelectorVisible)(document.documentElement,`.fancybox-container`))return;let n=(0,r.querySelectorAllArray)(document,`.ui-dialog-content`).filter(e=>(0,r.isVisible)(e));$(n[n.length-1]).dialog(`close`)}),document.addEventListener(`click`,e=>{if(!(e.target instanceof HTMLElement))return;let t=e.target.closest(`[data-action="top-dialog-close"]`);if(!t)return;e.preventDefault();let n=t.closest(`.ui-dialog-content`);if(!n)return;let i=t.dataset.toView;if(i==`toPrevPage()`){P.toPrevPage(n);return}if(i){let e=i.split(`-`),t=e.shift(),n=e.join(`-`);if(!t)return;let a=P.getElDialogById(t);if(!a)return;let c=(0,r.querySelectorAllArray)(a,`[data-view-page="${n}"]`);if(!c)return;if(!(0,r.isVisible)(c[0])){(0,s.historySetState)(!1,o.o.genViewPageHash(i,`prev`));return}}$(n).dialog(`close`)}),document.addEventListener(`submit`,e=>{let t=e.target;(t.matches(`.modal-body > form`)||t.matches(`.modal-layer-body > form`))&&e.preventDefault()}),document.addEventListener(`keypress`,e=>{if(!(e.target instanceof HTMLElement))return;let t=e.target;if(t.closest(`.ui-dialog .modal-body`)&&(t.matches(`input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)`)||t.hasAttribute(`contenteditable`))&&e.key===`Enter`){if(t.classList.contains(`autocomplete`)){e.preventDefault();return}if(t.tagName===`TEXTAREA`){if(!e.ctrlKey&&!e.metaKey)return;let n=t.closest(`form`);n&&(0,r.querySelectorAllArray)(n,`button[type="submit"]`).concat((0,r.querySelectorAllArray)(n,`input[type="submit"]`)).find(e=>(0,r.isVisible)(e))?.click()}}}),document.addEventListener(`click`,function(e){if(!(e.target instanceof HTMLElement)||!e.target.classList.contains(`ui-widget-overlay`))return;let t,n=0;if((0,r.querySelectorAllArray)(document,`.ui-dialog`).filter(e=>(0,r.isVisible)(e)).forEach(e=>{let r=Number(window.getComputedStyle(e).zIndex);r<n||(t=e,n=r)}),t){let e=t.querySelector(`.ui-dialog-content`);$(e).dialog(`close`)}}),window.addEventListener(`resize`,P.recalcPositions),P.recalcPositions())};n.O.insertStyleToPage(`:root{--dialog-border-color:var(--color-line-1);--dialog-loading-duration:10s;--top-dialog-footer-height:var(--top-forms-base-height_s)}html.with_dialog{overflow:hidden!important}a[data-to-view]{cursor:pointer}.ui-widget-overlay{opacity:.5;filter:Alpha(Opacity=50);background:#040404}.ui-dialog{border:none;border-radius:8px;padding:0}.ui-dialog.ui-widget{border:none}.ui-dialog-titlebar{display:none}.ui-dialog .ui-dialog-content{padding:0;overflow:visible}.ui-dialog .project_name{word-break:break-all}.ui-dialog-content{--dialog-header-height:50px;--dialog-layer-pageSelector:0px}.ui-dialog-content-withPageSelector{--dialog-layer-pageSelector:42px}.modal-header,.modal-body,.modal-footer{font-size:14px;position:relative}.modal-body{padding:var(--padding-default)}.modal-body:has(>.topTable:first-child){padding-top:calc(var(--padding-default) / 4)}.modal-header{border-bottom:1px solid var(--dialog-border-color);height:var(--dialog-header-height);padding:0 var(--padding-default);justify-content:space-between;align-items:center;gap:var(--top-padding-2);display:flex}.modal-header>*{padding:10px 0;font-size:16px}.modal-header>.top-title{text-overflow:ellipsis;white-space:nowrap;flex-grow:1;order:50;align-items:center;margin:0;font-weight:400;display:flex;overflow:hidden}.modal-header>.top-title>div[class*=icon]{display:none}.modal-header>div:not(.top-title){order:60}.modal-header>div.close{--top-icon-color:var(--color-text-2);cursor:pointer;background:var(--color-layout-front-1);order:100;font-size:16px;animation-name:none!important}.modal-header>div.close:hover{--top-icon-color:var(--color-text-1)}.modal-header .links_icons{position:absolute;right:50px}.modal-header .links_icons [class*=icon-]{color:#d6dee0;width:auto;height:auto;padding:0 5px}.modal-header .links_icons [class*=icon-].active{color:var(--color-bg-warning-1)}.modal-layer-pageSelector{padding:0 10px!important}.modal-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - 1px - var(--dialog-layer-pageSelector) - var(--top-dialog-footer-height) - 1px);box-sizing:border-box;flex-grow:1;overflow:hidden auto}.modal-body hr{margin:16px -15px}.modal-body h4{margin:0 0 10px;padding:0;line-height:normal}.modal-body .inner{padding:var(--padding-default);margin:0 calc(0px - var(--padding-default));position:relative}.modal-body .inner .bt{border-top:1px dashed var(--color-layout-front-primary-3);position:absolute;top:0;left:0;right:0}.modal-body .inner .bb{border-bottom:1px dashed var(--color-layout-front-primary-3);position:absolute;bottom:0;left:0;right:0}.modal-body .inner.color-1{background:var(--color-layout-front-primary-3);color:var(--color-text-1)}.modal-body .inner strong{color:var(--color-text-1)}.modal-body .comment{line-height:18px}.modal-footer{min-height:var(--top-dialog-footer-height);padding:var(--top-gap-2);justify-content:flex-end;align-items:center;gap:var(--top-gap-2);flex-shrink:0;display:flex}.modal-footer .modal-footer-btn-left{margin-right:auto}.modal-footer>.btn.full_width,.modal-footer>.top-button.full_width{flex-grow:1;align-self:flex-end}.modal-footer-fullWith{flex-wrap:wrap}.modal-footer-fullWith>*{flex-grow:1}.modal-footer-fullWith>.top-info{flex-grow:5}.modal-footer-fullWith>:empty{flex-grow:0}.ui-dialog-content>.modal-layer>[data-view-page]>input[type=submit]{visibility:hidden;position:absolute}.help_popup .modal-header{display:none}.help_popup .modal-header a{z-index:10;top:2px}.help_popup .modal-header .top-title{display:none}.modal-layer{overflow:hidden}.modal-layer a[data-top-icon]:empty{color:var(--color-text-4);text-decoration:none}.modal-layer>[data-view-page]>div>div.buttons{white-space:nowrap;gap:var(--top-padding-1);display:flex}.modal-layer>[data-view-page]>div>div.buttons:empty{display:none}.modal-layer>[data-view-page]>div>div.buttons>div,.modal-layer>[data-view-page]>div>div.buttons>a{cursor:pointer;width:auto;min-width:auto;height:auto;min-height:auto;color:var(--color-text-4);padding:10px 9px}.modal-layer>[data-view-page]>div>div.buttons>div:hover{color:var(--color-text-2)}.modal-layer>[data-view-page]>div>div.buttons>div.hidden{display:none!important}.ui-dialog-content[data-view-page-active]{flex-direction:column;justify-items:stretch;display:flex!important}.ui-dialog-content>.modal-layer{align-items:stretch;position:relative;display:flex!important}.ui-dialog-content.i-change-page>.modal-layer{overflow:hidden}.ui-dialog-content>.modal-layer>[data-view-page]{flex-direction:column;justify-content:space-between;width:100%;animation:none;display:none;position:relative}.ui-dialog-content>.modal-layer>[data-view-page].active{display:flex}.ui-dialog-content>.modal-layer>[data-view-page].reverse{animation-direction:reverse}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center{display:flex;position:absolute;inset:0}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left>div,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center>div{overflow:hidden}.ui-dialog-content>.modal-layer-header{border-bottom:1px solid var(--dialog-border-color);min-height:var(--dialog-header-height)}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header{background:0 0;border:none}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header>*{animation:none}.ui-dialog-content>.modal-layer-header>[data-view-page].reverse>.modal-header>*{animation-direction:reverse}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>.top-title{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>.top-title{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>[class*=widget-]{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>[class*=widget-]{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>div{animation-name:dialog-center-to-left-header-icons}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>div{animation-name:dialog-right-to-center-header-icons}.ui-dialog-content>.modal-layer-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - var(--dialog-layer-pageSelector) - var(--toolbar-height));border-radius:0 0 8px 8px;flex-grow:2}.ui-dialog-content.i-change-page>.modal-layer-body>[data-view-page]{background:var(--color-layout-front-1)}.ui-dialog-content>.modal-layer-body>[data-view-page].center-to-left{animation-name:dialog-center-to-left}.ui-dialog-content>.modal-layer-body>[data-view-page].right-to-center{animation-name:dialog-right-to-center}.ui-dialog-content .modal-footer .second_level{box-sizing:border-box;background:var(--color-layout-front-1);justify-content:center;align-items:center;width:100%;min-height:25px;display:flex}.ui-dialog-content .modal-footer .second_level input{width:100%;height:var(--top-forms-base-height);padding:var(--top-padding-1) var(--top-padding-3);box-sizing:border-box;border-radius:8px}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data{pointer-events:none}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data:before{content:" ";z-index:100;width:0;height:4px;animation:top-loadbar var(--dialog-loading-duration) forwards;background:#378dc6;position:absolute;top:0;left:0}.ui-dialog-content.modal-expanded{width:100vw!important;height:calc(var(--100vh) + 10px)!important}.modal-header>[data-widget]{opacity:0;visibility:hidden;z-index:1;align-items:center;padding:0 8px;transition:opacity .3s;position:absolute;inset:0;overflow:hidden}.modal-header>[data-widget=search] div.cancel{opacity:0;transition:transform .3s,opacity .3s;transform:translate(100%)}[data-view-page].i-show-search .modal-header>:not([data-widget=search]){visibility:hidden}[data-view-page].i-show-search [data-widget=search]{visibility:visible;opacity:1}[data-view-page].i-show-search [data-widget=search] .cancel{opacity:1;transform:translate(0)}[data-view-page]>.modal-header>*{transition:opacity .3s}[data-view-page].i-show-search>.modal-header>div.buttons{opacity:0}.modal-layer .top-popup-wrapper{height:100%!important}@keyframes dialog-center-to-left-header-title{0%{opacity:1;transform:translate(0)}75%{opacity:0}to{opacity:0;transform:translate(-30%)}}@keyframes dialog-right-to-center-header-title{0%{opacity:0;transform:translate(100%)}25%{opacity:0}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left-header-icons{0%{opacity:1;transform:translate(0)}35%{opacity:0;transform:translate(-20%)}to{opacity:0;transform:translate(-20%)}}@keyframes dialog-right-to-center-header-icons{0%{opacity:0;transform:translate(20%)}65%{opacity:0;transform:translate(20%)}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left{0%{filter:brightness();transform:translate(0)}to{filter:brightness(.9);transform:translate(-30%)}}@keyframes dialog-right-to-center{0%{transform:translate(100%);box-shadow:0 0 10px #0000001a}to{transform:translate(0);box-shadow:0 0 10px #0003}}@media only screen and (max-width:1480px){.win_side_panel_opener{display:none}}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);top:calc(var(--dialog-header-height) + 1px + var(--dialog-layer-pageSelector));bottom:calc(var(--top-dialog-footer-height) + 1px);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}@media only screen and (max-height:900px){html.with_dialog{background:#f1f1f1;overflow:hidden}.ui-dialog.me-tightly{border-radius:0;position:fixed;height:auto!important;top:0!important;bottom:0!important}.ui-dialog.me-tightly .ui-dialog-content{min-height:100%!important}.ui-dialog.me-tightly>div>.modal-body{top:var(--dialog-header-height);left:0;right:0;bottom:var(--dialog-header-height);position:absolute}.ui-dialog.me-tightly>div>.modal-body:last-child{bottom:0}.ui-dialog.me-tightly>div>.modal-footer{position:absolute;bottom:0;left:0;right:0}.ui-dialog.me-tightly .modal-layer-body{border-radius:0;min-height:0!important}.ui-dialog.me-tightly .modal-layer-body .modal-footer{min-height:unset}}`),n.O.insertStyleToPage(`html.with_dialog body{height:var(--100vh);overflow:hidden}.ui-widget-overlay{height:calc(100% - var(--toolbar-height))}.ui-dialog{border-radius:0;position:fixed;width:auto!important;height:auto!important;inset:0!important}.ui-dialog-content{width:100%!important;min-width:0!important;max-width:100%!important;height:100%!important}.modal-header>.top-title{text-align:center;font-size:14px}.modal-header>div.close{order:-1;font-size:14px}.modal-header>div.close:before{content:""}.modal-body:last-child,.modal-footer{bottom:0}.modal-footer .second_level{padding:10px 8px}.modal-layer-body{min-height:0!important}.ui-dialog-content>.modal-layer-body{border-radius:0}.modal-body,.modal-footer{padding-left:12px;padding-right:12px}.modal-footer .btn:last-child{margin-right:12px}.modal-body .inner{margin:0 -12px;padding:12px;position:relative}`,`m`),n.O.insertStyleToPage(`.modal-menu-opener{order:1!important}.modal-menu-opener:before{--top-icon-size:20px;--top-icon-color:#fff;--top-icon-width:var(--top-icon-size);background:var(--color-bg-primary-1);border-radius:50%;padding:3px;transition:transform .1s}.modal-menu-opener:hover:before{background:var(--color-bg-primary-2)}.modal-menu-opener.top-active:before{background:var(--color-bg-primary-2);transform:scale(.8)}.modal-layer .top-popup-wrapper{background:0 0;transition:background .3s;width:auto!important;margin:0!important;padding:0!important;top:0!important;left:0!important;right:0!important}.modal-layer .top-popup-wrapper>.top-popup[class],.modal-layer .top-popup-wrapper.with_notch>.top-popup[class]{opacity:1;border:none;border-radius:8px;flex-direction:column;max-width:100%;max-height:calc(100% - 24px);transition:transform .3s;display:flex;overflow:auto;transform:translateY(calc(-100% - 24px));margin:12px!important;inset:0 0 auto!important}.modal-layer .top-popup>.top-popup_header{background:var(--color-theme-50)}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select{border:none}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .text{color:#fff}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .arrow{background:0 0}.modal-layer .top-popup-wrapper-shown:not(.top-popup-wrapper-closed){pointer-events:auto;background:#34495e40}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute;top:51px;bottom:51px}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}`,`pc`),n.O.insertStyleToPage(`html{--top-dialog-width:auto;--top-dialog-height:auto}.top-dialog{max-width:100vw}.top-dialog .modal-layer-body{height:var(--top-dialog-height)}`),n.O.insertStyleToPage(`.top-dialog{width:var(--top-dialog-width)!important}`,`pc`);var p,m=!1,h=e=>!!e&&typeof e==`object`&&`jquery`in e,g=()=>{$.extend($.ui.dialog.prototype.options,{focus:e=>{e.target.focus(),$(`[autofocus]`,e.target)[0]?.focus()},create:e=>b(e.target),open:e=>S(e.target),close:e=>C(e.target),modal:!0,resizable:!1,closeOnEscape:!1,width:`auto`,minHeight:0}),$.ui.dialog.prototype._focusTabbable=$.noop,$.ui.dialog.prototype._moveToTopOriginal=$.ui.dialog.prototype._moveToTop,$.ui.dialog.prototype._moveToTop=function(){this._moveToTopOriginal();let e=$(this.element);e.trigger(`dialogsMoveToTop`,[e])},f(),m=!0},_=e=>{let t={};return e.dataset?.modal===`false`&&(t.modal=!1),e.dataset?.position&&(t.position=JSON.parse(e.dataset.position)),t},v=e=>document.getElementById(e),y=async(e,t,n)=>{if(!e.startsWith(`dialog_`))return;let r=(0,o.a)(e);if(r&&(r.isOpened.value=!0,t!==void 0&&(r.pageActive.value=t),n!==void 0&&(r.pageActiveNext.value=n),await(0,l.nextTick)(),n)){let t=v(e);if(!t)return;t.querySelectorAll(`[data-view-page="${n}"]`).length||await(0,a.waitWhile)(()=>!t.querySelectorAll(`[data-view-page="${n}"]`).length)}},b=e=>{let t=(0,r.querySelectorAllArray)(e,`.modal-body`);t.forEach(e=>{(0,c.connectScrollShadow)(e)}),t.length&&(o.o.state.decoratorOnCreate?.(e),x(e))},x=e=>{$(e).on(`aftershow.top-menu-popup`,`[data-top-popup]`,(e,t)=>{let n=t[0];o.o.getPairPage(n)?.[1]?.prepend(n)})},S=async e=>{let t=e.dataset.viewPageActive,r=e.dataset.args?e.dataset.args?.split(`:`):[],i=window.innerWidth;n.O.state.documentClassModificators.set(`top-dialog`,`with_dialog`);let a=window.innerWidth-i;document.documentElement.scrollHeight>window.innerHeight&&(document.querySelector(`html`).style.marginRight=a+`px`),w(),(0,o.a)(e.getAttribute(`id`))?.emit?.(`open`,t,r)},C=async e=>{let t=e.getAttribute(`id`),i=e.dataset.viewPageActive;if(i){let e={vpn:o.o.state.viewPageN,[`view-`+t]:null};e[`view-`+t]=null,(o.o.state.viewPageN===0||o.o.state.viewPageN===1)&&(e.vpn=null),(0,s.setHashs)(e,!1)}(0,r.querySelectorAllArray)(document,`.ui-widget-overlay`).filter(e=>(0,r.isVisible)(e)).length||(n.O.state.documentClassModificators.delete(`top-dialog`),document.querySelector(`html`).style.marginRight=``),$(e).trigger(`viewAfterClose`,[$(e)]);let a=(0,o.a)(t);a&&(a.isOpened.value=!1,a.emit?.(`close`,i),a.onCloseOnce&&=(a.onCloseOnce(a.props,i),void 0)),window.dispatchEvent(new Event(`resize`))},w=()=>{(0,r.querySelectorAllArray)(document,`.ui-dialog`).filter(e=>(0,r.isVisible)(e)&&e.querySelector(`:scope > .ui-dialog-content`)).map(e=>e.querySelector(`:scope > .ui-dialog-content`)).forEach(e=>{if(!e.querySelector(`.modal-body`))return;let t=e.closest(`.ui-dialog`),n=_(e);n.position??={of:window},$(e).dialog(`option`,n),t.classList.remove(`me-tightly`),(t.clientHeight??0)>window.innerHeight&&t.classList.add(`me-tightly`)})},T=async(e,t)=>{let n=/(\w+)[=-]([\w-]+)(?::([\w.:-]+))?/g.exec(e);if(n){let e=n[1],r=n[2],i=n[3],a=[];i&&(a=i.split(`:`)),await E(e,r,a,t)}},E=async(e,t,n,r,i)=>{m||await new Promise((e,t)=>{let n=setInterval(()=>{m&&(clearInterval(n),e())},10)}),await(0,l.nextTick)();let a;if(typeof e==`object`?(h(e)&&(e=e?.[0]),a=e):a=v(e),!a&&typeof e==`string`&&o.o.state.load&&(await o.o.state.load(e),a=v(e),!a))throw Error(`Dialog no exists: `+e);if(!a)return;await D(a,t,n,r);let s=$(a);if(a?.classList.contains(`ui-dialog-content`))s.dialog(`open`);else{let e=_(a);s.dialog(e)}i&&i(s)},D=async(e,t,n,o)=>{h(e)&&(e=e?.[0]),t===void 0&&(t=e.dataset.viewPageActive),n===void 0&&(n=e.dataset.args?.split(`:`)??[]),t!==e.dataset.viewPageActive&&N(e)&&await(0,a.sleep)(100),await y(e.getAttribute(`id`),void 0,t);let s=(0,r.querySelectorAllArray)(e,`.modal-layer`),c=s.reduce((e,t)=>{let n=t.querySelector(`:scope > .active`);return n&&e.push(n),e},[]),l=s.reduce((e,n)=>{let r=n.querySelector(`:scope > [data-view-page="${t}"]`);return r&&e.push(r),e},[]),u=n.join(`:`);if(o===void 0&&(o=`next`,(l[0]?.dataset.order??0)<(c[0]?.dataset.order??0)&&(o=`prev`)),!l.length)return;if(e.dataset.viewPageActive=t,e.dataset.args=n?.join(`:`)??``,l[0].classList.contains(`active`)){l[0].dataset.viewPageArgs!==u&&l.forEach(e=>{e.dataset.viewPageArgs=u}),A(e,l,t,n),j(e,l,t,n);return}l.forEach(e=>{e.dataset.viewPageArgs=u}),c.forEach(e=>{e.querySelector(`.top-popup-wrapper`)&&i.t.close(e.querySelector(`.top-popup-wrapper`))});let d=l[0].closest(`.ui-dialog`);switch(d&&!(0,r.isVisible)(d)&&(o=`none`),c.length||(o=`none`),(0,r.isVisible)(l[0])&&(o=`none`),o){case`prev`:l.forEach(e=>{let t=e.parentNode?.querySelector(`:scope > .active`);t&&e.parentNode?.insertBefore(e,t)}),c.forEach(e=>{e.classList.add(`right-to-center`,`reverse`)}),l.forEach(e=>{e.classList.add(`center-to-left`,`reverse`)});break;case`next`:l.forEach(e=>{let t=e.parentNode?.querySelector(`:scope > .active`);t&&e.parentNode?.insertBefore(e,t.nextSibling)}),c.forEach(e=>{e?.classList.add(`center-to-left`)}),l.forEach(e=>{e.classList.add(`right-to-center`)})}if(e.setAttribute(`view-page-active`,t),c.forEach(e=>{e.classList.remove(`active`)}),l.forEach(e=>{e.classList.add(`active`)}),A(e,l,t,n),o){e.classList.add(`i-change-page`);let r=Number(window.getComputedStyle(l[0]).animationDuration.replace(`s`,``))*1e3;p=setTimeout(function(){y(e.getAttribute(`id`),t,``),N(e),j(e,l,t,n)},r)}else await y(e.getAttribute(`id`),t,``),j(e,l,t,n)},O=e=>{let t=(0,r.querySelectorAllArray)(e,`.modal-layer`).reduce((e,t)=>{let n=t.querySelector(`:scope > .active`);return n&&e.push(n),e},[]).reduce((e,t)=>{let n=t.previousElementSibling;for(;n&&!n.hasAttribute(`data-view-page`);)n=n.previousElementSibling;return n&&e.push(n),e},[])[0]?.dataset.viewPage;t?D(e,t,void 0,`prev`):$(e).dialog(`close`)},k=new Set,A=(e,t,n,r)=>{let i=e.getAttribute(`id`)+t[0].dataset.viewPage+n+r.join();k.has(i)||(k.add(i),setTimeout(function(){k.delete(i),$(e).trigger(`viewBeforeOpen`,[$(e),$(t),n,r])}))},j=(e,t,n,r)=>{setTimeout(function(){$(e).trigger(`viewAfterOpen`,[$(e),$(t),n,r])})},M=e=>(h(e)&&(e=e?.[0]),e.classList.contains(`i-change-page`)),N=e=>{if(!M(e))return!1;clearTimeout(p);let t=(0,r.querySelectorAllArray)(e,`.modal-layer`),n=e.dataset.viewPageActive;return e.classList.remove(`i-change-page`),t.forEach(e=>{e.querySelectorAll(`:scope > [data-view-page]`).forEach(e=>{e.classList.remove(`center-to-left`,`right-to-center`,`reverse`,`active`)})}),t.forEach(e=>{e.querySelector(`:scope > [data-view-page="${n}"]`)?.classList.add(`active`)}),!0},P={getElDialogById:v,updatePageVue:y,recalcPositions:w,toViewDirty:T,toView:E,toViewPage:D,toPrevPage:O,setLoading:(e,t,n)=>{h(e)&&(e=e.toArray());let i=e.reduce((e,t)=>(t.hasAttribute(`data-view-page`)&&(0,r.isVisible)(t)&&e.push(t),e),[]);t?(n!==void 0&&i.forEach(e=>{e.style.setProperty(`--dialog-loading-duration`,n+`s`)}),i.forEach(e=>{e.classList.add(`i-load-data`)})):(i.forEach(e=>{e.classList.remove(`i-load-data`)}),i.forEach(e=>{e.style.setProperty(`--dialog-loading-duration`,`10s`)}))},isLoading:e=>(h(e)&&(e=e?.[0]),e.classList.contains(`i-load-data`)),inAnimation:M,close:function(e){let t=v(e);if(!t)return;let n=$(t);n.dialog(`instance`)&&n.dialog(`close`)}};t.TopDialogUtils=P,g()});
//# sourceMappingURL=utils-B1tz7GZc.amd.js.map

Sorry, the diff of this file is too big to display

import { O as e } from "./forms-_4U0sLFk.esm.js";
import { isVisible as t, querySelectorAllArray as n, querySelectorVisible as r } from "../utils/dom.js";
import { t as i } from "./worker-D28QqQ45.esm.js";
import { sleep as a, waitWhile as o } from "../utils/system.js";
import { a as s, o as c } from "./utils-B1P0BzZ1.esm.js";
import { historySetState as l, setHashs as u } from "../utils/route.js";
import { connectScrollShadow as d } from "../utils/scroll.js";
import "../popup/worker.js";
import { nextTick as f } from "vue";
$;
//#endregion
//#region src/components/dialog/lib/utils.globalEvents.ts
var p = !1, m = () => {
p || (p = !0, document.addEventListener("keydown", (e) => {
if (e.key !== "Escape" || !e.target || !(e.target instanceof HTMLElement)) return;
let i = e.target;
if (!i.closest(".ui-dialog") || i.contentEditable === "true" || i.contentEditable === "plaintext-only" || r(document.documentElement, ".top-popup-wrapper") || i.classList.contains("autocomplete") || r(document.documentElement, ".fancybox-container")) return;
let a = n(document, ".ui-dialog-content").filter((e) => t(e));
$(a[a.length - 1]).dialog("close");
}), document.addEventListener("click", (e) => {
if (!(e.target instanceof HTMLElement)) return;
let r = e.target.closest("[data-action=\"top-dialog-close\"]");
if (!r) return;
e.preventDefault();
let i = r.closest(".ui-dialog-content");
if (!i) return;
let a = r.dataset.toView;
if (a == "toPrevPage()") {
I.toPrevPage(i);
return;
}
if (a) {
let e = a.split("-"), r = e.shift(), i = e.join("-");
if (!r) return;
let o = I.getElDialogById(r);
if (!o) return;
let s = n(o, `[data-view-page="${i}"]`);
if (!s) return;
if (!t(s[0])) {
l(!1, c.genViewPageHash(a, "prev"));
return;
}
}
$(i).dialog("close");
}), document.addEventListener("submit", (e) => {
let t = e.target;
(t.matches(".modal-body > form") || t.matches(".modal-layer-body > form")) && e.preventDefault();
}), document.addEventListener("keypress", (e) => {
if (!(e.target instanceof HTMLElement)) return;
let r = e.target;
if (r.closest(".ui-dialog .modal-body") && (r.matches("input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)") || r.hasAttribute("contenteditable")) && e.key === "Enter") {
if (r.classList.contains("autocomplete")) {
e.preventDefault();
return;
}
if (r.tagName === "TEXTAREA") {
if (!e.ctrlKey && !e.metaKey) return;
let i = r.closest("form");
i && n(i, "button[type=\"submit\"]").concat(n(i, "input[type=\"submit\"]")).find((e) => t(e))?.click();
}
}
}), document.addEventListener("click", function(e) {
if (!(e.target instanceof HTMLElement) || !e.target.classList.contains("ui-widget-overlay")) return;
let r, i = 0;
if (n(document, ".ui-dialog").filter((e) => t(e)).forEach((e) => {
let t = Number(window.getComputedStyle(e).zIndex);
t < i || (r = e, i = t);
}), r) {
let e = r.querySelector(".ui-dialog-content");
$(e).dialog("close");
}
}), window.addEventListener("resize", I.recalcPositions), I.recalcPositions());
};
e.insertStyleToPage(":root{--dialog-border-color:var(--color-line-1);--dialog-loading-duration:10s;--top-dialog-footer-height:var(--top-forms-base-height_s)}html.with_dialog{overflow:hidden!important}a[data-to-view]{cursor:pointer}.ui-widget-overlay{opacity:.5;filter:Alpha(Opacity=50);background:#040404}.ui-dialog{border:none;border-radius:8px;padding:0}.ui-dialog.ui-widget{border:none}.ui-dialog-titlebar{display:none}.ui-dialog .ui-dialog-content{padding:0;overflow:visible}.ui-dialog .project_name{word-break:break-all}.ui-dialog-content{--dialog-header-height:50px;--dialog-layer-pageSelector:0px}.ui-dialog-content-withPageSelector{--dialog-layer-pageSelector:42px}.modal-header,.modal-body,.modal-footer{font-size:14px;position:relative}.modal-body{padding:var(--padding-default)}.modal-body:has(>.topTable:first-child){padding-top:calc(var(--padding-default) / 4)}.modal-header{border-bottom:1px solid var(--dialog-border-color);height:var(--dialog-header-height);padding:0 var(--padding-default);justify-content:space-between;align-items:center;gap:var(--top-padding-2);display:flex}.modal-header>*{padding:10px 0;font-size:16px}.modal-header>.top-title{text-overflow:ellipsis;white-space:nowrap;flex-grow:1;order:50;align-items:center;margin:0;font-weight:400;display:flex;overflow:hidden}.modal-header>.top-title>div[class*=icon]{display:none}.modal-header>div:not(.top-title){order:60}.modal-header>div.close{--top-icon-color:var(--color-text-2);cursor:pointer;background:var(--color-layout-front-1);order:100;font-size:16px;animation-name:none!important}.modal-header>div.close:hover{--top-icon-color:var(--color-text-1)}.modal-header .links_icons{position:absolute;right:50px}.modal-header .links_icons [class*=icon-]{color:#d6dee0;width:auto;height:auto;padding:0 5px}.modal-header .links_icons [class*=icon-].active{color:var(--color-bg-warning-1)}.modal-layer-pageSelector{padding:0 10px!important}.modal-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - 1px - var(--dialog-layer-pageSelector) - var(--top-dialog-footer-height) - 1px);box-sizing:border-box;flex-grow:1;overflow:hidden auto}.modal-body hr{margin:16px -15px}.modal-body h4{margin:0 0 10px;padding:0;line-height:normal}.modal-body .inner{padding:var(--padding-default);margin:0 calc(0px - var(--padding-default));position:relative}.modal-body .inner .bt{border-top:1px dashed var(--color-layout-front-primary-3);position:absolute;top:0;left:0;right:0}.modal-body .inner .bb{border-bottom:1px dashed var(--color-layout-front-primary-3);position:absolute;bottom:0;left:0;right:0}.modal-body .inner.color-1{background:var(--color-layout-front-primary-3);color:var(--color-text-1)}.modal-body .inner strong{color:var(--color-text-1)}.modal-body .comment{line-height:18px}.modal-footer{min-height:var(--top-dialog-footer-height);padding:var(--top-gap-2);justify-content:flex-end;align-items:center;gap:var(--top-gap-2);flex-shrink:0;display:flex}.modal-footer .modal-footer-btn-left{margin-right:auto}.modal-footer>.btn.full_width,.modal-footer>.top-button.full_width{flex-grow:1;align-self:flex-end}.modal-footer-fullWith{flex-wrap:wrap}.modal-footer-fullWith>*{flex-grow:1}.modal-footer-fullWith>.top-info{flex-grow:5}.modal-footer-fullWith>:empty{flex-grow:0}.ui-dialog-content>.modal-layer>[data-view-page]>input[type=submit]{visibility:hidden;position:absolute}.help_popup .modal-header{display:none}.help_popup .modal-header a{z-index:10;top:2px}.help_popup .modal-header .top-title{display:none}.modal-layer{overflow:hidden}.modal-layer a[data-top-icon]:empty{color:var(--color-text-4);text-decoration:none}.modal-layer>[data-view-page]>div>div.buttons{white-space:nowrap;gap:var(--top-padding-1);display:flex}.modal-layer>[data-view-page]>div>div.buttons:empty{display:none}.modal-layer>[data-view-page]>div>div.buttons>div,.modal-layer>[data-view-page]>div>div.buttons>a{cursor:pointer;width:auto;min-width:auto;height:auto;min-height:auto;color:var(--color-text-4);padding:10px 9px}.modal-layer>[data-view-page]>div>div.buttons>div:hover{color:var(--color-text-2)}.modal-layer>[data-view-page]>div>div.buttons>div.hidden{display:none!important}.ui-dialog-content[data-view-page-active]{flex-direction:column;justify-items:stretch;display:flex!important}.ui-dialog-content>.modal-layer{align-items:stretch;position:relative;display:flex!important}.ui-dialog-content.i-change-page>.modal-layer{overflow:hidden}.ui-dialog-content>.modal-layer>[data-view-page]{flex-direction:column;justify-content:space-between;width:100%;animation:none;display:none;position:relative}.ui-dialog-content>.modal-layer>[data-view-page].active{display:flex}.ui-dialog-content>.modal-layer>[data-view-page].reverse{animation-direction:reverse}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center{display:flex;position:absolute;inset:0}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left>div,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center>div{overflow:hidden}.ui-dialog-content>.modal-layer-header{border-bottom:1px solid var(--dialog-border-color);min-height:var(--dialog-header-height)}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header{background:0 0;border:none}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header>*{animation:none}.ui-dialog-content>.modal-layer-header>[data-view-page].reverse>.modal-header>*{animation-direction:reverse}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>.top-title{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>.top-title{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>[class*=widget-]{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>[class*=widget-]{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>div{animation-name:dialog-center-to-left-header-icons}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>div{animation-name:dialog-right-to-center-header-icons}.ui-dialog-content>.modal-layer-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - var(--dialog-layer-pageSelector) - var(--toolbar-height));border-radius:0 0 8px 8px;flex-grow:2}.ui-dialog-content.i-change-page>.modal-layer-body>[data-view-page]{background:var(--color-layout-front-1)}.ui-dialog-content>.modal-layer-body>[data-view-page].center-to-left{animation-name:dialog-center-to-left}.ui-dialog-content>.modal-layer-body>[data-view-page].right-to-center{animation-name:dialog-right-to-center}.ui-dialog-content .modal-footer .second_level{box-sizing:border-box;background:var(--color-layout-front-1);justify-content:center;align-items:center;width:100%;min-height:25px;display:flex}.ui-dialog-content .modal-footer .second_level input{width:100%;height:var(--top-forms-base-height);padding:var(--top-padding-1) var(--top-padding-3);box-sizing:border-box;border-radius:8px}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data{pointer-events:none}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data:before{content:\" \";z-index:100;width:0;height:4px;animation:top-loadbar var(--dialog-loading-duration) forwards;background:#378dc6;position:absolute;top:0;left:0}.ui-dialog-content.modal-expanded{width:100vw!important;height:calc(var(--100vh) + 10px)!important}.modal-header>[data-widget]{opacity:0;visibility:hidden;z-index:1;align-items:center;padding:0 8px;transition:opacity .3s;position:absolute;inset:0;overflow:hidden}.modal-header>[data-widget=search] div.cancel{opacity:0;transition:transform .3s,opacity .3s;transform:translate(100%)}[data-view-page].i-show-search .modal-header>:not([data-widget=search]){visibility:hidden}[data-view-page].i-show-search [data-widget=search]{visibility:visible;opacity:1}[data-view-page].i-show-search [data-widget=search] .cancel{opacity:1;transform:translate(0)}[data-view-page]>.modal-header>*{transition:opacity .3s}[data-view-page].i-show-search>.modal-header>div.buttons{opacity:0}.modal-layer .top-popup-wrapper{height:100%!important}@keyframes dialog-center-to-left-header-title{0%{opacity:1;transform:translate(0)}75%{opacity:0}to{opacity:0;transform:translate(-30%)}}@keyframes dialog-right-to-center-header-title{0%{opacity:0;transform:translate(100%)}25%{opacity:0}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left-header-icons{0%{opacity:1;transform:translate(0)}35%{opacity:0;transform:translate(-20%)}to{opacity:0;transform:translate(-20%)}}@keyframes dialog-right-to-center-header-icons{0%{opacity:0;transform:translate(20%)}65%{opacity:0;transform:translate(20%)}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left{0%{filter:brightness();transform:translate(0)}to{filter:brightness(.9);transform:translate(-30%)}}@keyframes dialog-right-to-center{0%{transform:translate(100%);box-shadow:0 0 10px #0000001a}to{transform:translate(0);box-shadow:0 0 10px #0003}}@media only screen and (max-width:1480px){.win_side_panel_opener{display:none}}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);top:calc(var(--dialog-header-height) + 1px + var(--dialog-layer-pageSelector));bottom:calc(var(--top-dialog-footer-height) + 1px);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}@media only screen and (max-height:900px){html.with_dialog{background:#f1f1f1;overflow:hidden}.ui-dialog.me-tightly{border-radius:0;position:fixed;height:auto!important;top:0!important;bottom:0!important}.ui-dialog.me-tightly .ui-dialog-content{min-height:100%!important}.ui-dialog.me-tightly>div>.modal-body{top:var(--dialog-header-height);left:0;right:0;bottom:var(--dialog-header-height);position:absolute}.ui-dialog.me-tightly>div>.modal-body:last-child{bottom:0}.ui-dialog.me-tightly>div>.modal-footer{position:absolute;bottom:0;left:0;right:0}.ui-dialog.me-tightly .modal-layer-body{border-radius:0;min-height:0!important}.ui-dialog.me-tightly .modal-layer-body .modal-footer{min-height:unset}}"), e.insertStyleToPage("html.with_dialog body{height:var(--100vh);overflow:hidden}.ui-widget-overlay{height:calc(100% - var(--toolbar-height))}.ui-dialog{border-radius:0;position:fixed;width:auto!important;height:auto!important;inset:0!important}.ui-dialog-content{width:100%!important;min-width:0!important;max-width:100%!important;height:100%!important}.modal-header>.top-title{text-align:center;font-size:14px}.modal-header>div.close{order:-1;font-size:14px}.modal-header>div.close:before{content:\"\"}.modal-body:last-child,.modal-footer{bottom:0}.modal-footer .second_level{padding:10px 8px}.modal-layer-body{min-height:0!important}.ui-dialog-content>.modal-layer-body{border-radius:0}.modal-body,.modal-footer{padding-left:12px;padding-right:12px}.modal-footer .btn:last-child{margin-right:12px}.modal-body .inner{margin:0 -12px;padding:12px;position:relative}", "m"), e.insertStyleToPage(".modal-menu-opener{order:1!important}.modal-menu-opener:before{--top-icon-size:20px;--top-icon-color:#fff;--top-icon-width:var(--top-icon-size);background:var(--color-bg-primary-1);border-radius:50%;padding:3px;transition:transform .1s}.modal-menu-opener:hover:before{background:var(--color-bg-primary-2)}.modal-menu-opener.top-active:before{background:var(--color-bg-primary-2);transform:scale(.8)}.modal-layer .top-popup-wrapper{background:0 0;transition:background .3s;width:auto!important;margin:0!important;padding:0!important;top:0!important;left:0!important;right:0!important}.modal-layer .top-popup-wrapper>.top-popup[class],.modal-layer .top-popup-wrapper.with_notch>.top-popup[class]{opacity:1;border:none;border-radius:8px;flex-direction:column;max-width:100%;max-height:calc(100% - 24px);transition:transform .3s;display:flex;overflow:auto;transform:translateY(calc(-100% - 24px));margin:12px!important;inset:0 0 auto!important}.modal-layer .top-popup>.top-popup_header{background:var(--color-theme-50)}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select{border:none}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .text{color:#fff}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .arrow{background:0 0}.modal-layer .top-popup-wrapper-shown:not(.top-popup-wrapper-closed){pointer-events:auto;background:#34495e40}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute;top:51px;bottom:51px}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}", "pc"), e.insertStyleToPage("html{--top-dialog-width:auto;--top-dialog-height:auto}.top-dialog{max-width:100vw}.top-dialog .modal-layer-body{height:var(--top-dialog-height)}"), e.insertStyleToPage(".top-dialog{width:var(--top-dialog-width)!important}", "pc");
var h, g = !1, _ = (e) => !!e && typeof e == "object" && "jquery" in e, v = () => {
$.extend($.ui.dialog.prototype.options, {
focus: (e) => {
e.target.focus(), $("[autofocus]", e.target)[0]?.focus();
},
create: (e) => S(e.target),
open: (e) => w(e.target),
close: (e) => T(e.target),
modal: !0,
resizable: !1,
closeOnEscape: !1,
width: "auto",
minHeight: 0
}), $.ui.dialog.prototype._focusTabbable = $.noop, $.ui.dialog.prototype._moveToTopOriginal = $.ui.dialog.prototype._moveToTop, $.ui.dialog.prototype._moveToTop = function() {
this._moveToTopOriginal();
let e = $(this.element);
e.trigger("dialogsMoveToTop", [e]);
}, m(), g = !0;
}, y = (e) => {
let t = {};
return e.dataset?.modal === "false" && (t.modal = !1), e.dataset?.position && (t.position = JSON.parse(e.dataset.position)), t;
}, b = (e) => document.getElementById(e), x = async (e, t, n) => {
if (!e.startsWith("dialog_")) return;
let r = s(e);
if (r && (r.isOpened.value = !0, t !== void 0 && (r.pageActive.value = t), n !== void 0 && (r.pageActiveNext.value = n), await f(), n)) {
let t = b(e);
if (!t) return;
t.querySelectorAll(`[data-view-page="${n}"]`).length || await o(() => !t.querySelectorAll(`[data-view-page="${n}"]`).length);
}
}, S = (e) => {
let t = n(e, ".modal-body");
t.forEach((e) => {
d(e);
}), t.length && (c.state.decoratorOnCreate?.(e), C(e));
}, C = (e) => {
$(e).on("aftershow.top-menu-popup", "[data-top-popup]", (e, t) => {
let n = t[0];
c.getPairPage(n)?.[1]?.prepend(n);
});
}, w = async (t) => {
let n = t.dataset.viewPageActive, r = t.dataset.args ? t.dataset.args?.split(":") : [], i = window.innerWidth;
e.state.documentClassModificators.set("top-dialog", "with_dialog");
let a = window.innerWidth - i;
document.documentElement.scrollHeight > window.innerHeight && (document.querySelector("html").style.marginRight = a + "px"), E(), s(t.getAttribute("id"))?.emit?.("open", n, r);
}, T = async (r) => {
let i = r.getAttribute("id"), a = r.dataset.viewPageActive;
if (a) {
let e = {
vpn: c.state.viewPageN,
["view-" + i]: null
};
e["view-" + i] = null, (c.state.viewPageN === 0 || c.state.viewPageN === 1) && (e.vpn = null), u(e, !1);
}
n(document, ".ui-widget-overlay").filter((e) => t(e)).length || (e.state.documentClassModificators.delete("top-dialog"), document.querySelector("html").style.marginRight = ""), $(r).trigger("viewAfterClose", [$(r)]);
let o = s(i);
o && (o.isOpened.value = !1, o.emit?.("close", a), o.onCloseOnce &&= (o.onCloseOnce(o.props, a), void 0)), window.dispatchEvent(new Event("resize"));
}, E = () => {
n(document, ".ui-dialog").filter((e) => t(e) && e.querySelector(":scope > .ui-dialog-content")).map((e) => e.querySelector(":scope > .ui-dialog-content")).forEach((e) => {
if (!e.querySelector(".modal-body")) return;
let t = e.closest(".ui-dialog"), n = y(e);
n.position ??= { of: window }, $(e).dialog("option", n), t.classList.remove("me-tightly"), (t.clientHeight ?? 0) > window.innerHeight && t.classList.add("me-tightly");
});
}, D = async (e, t) => {
let n = /(\w+)[=-]([\w-]+)(?::([\w.:-]+))?/g.exec(e);
if (n) {
let e = n[1], r = n[2], i = n[3], a = [];
i && (a = i.split(":")), await O(e, r, a, t);
}
}, O = async (e, t, n, r, i) => {
g || await new Promise((e, t) => {
let n = setInterval(() => {
g && (clearInterval(n), e());
}, 10);
}), await f();
let a;
if (typeof e == "object" ? (_(e) && (e = e?.[0]), a = e) : a = b(e), !a && typeof e == "string" && c.state.load && (await c.state.load(e), a = b(e), !a)) throw Error("Dialog no exists: " + e);
if (!a) return;
await k(a, t, n, r);
let o = $(a);
if (a?.classList.contains("ui-dialog-content")) o.dialog("open");
else {
let e = y(a);
o.dialog(e);
}
i && i(o);
}, k = async (e, r, o, s) => {
_(e) && (e = e?.[0]), r === void 0 && (r = e.dataset.viewPageActive), o === void 0 && (o = e.dataset.args?.split(":") ?? []), r !== e.dataset.viewPageActive && F(e) && await a(100), await x(e.getAttribute("id"), void 0, r);
let c = n(e, ".modal-layer"), l = c.reduce((e, t) => {
let n = t.querySelector(":scope > .active");
return n && e.push(n), e;
}, []), u = c.reduce((e, t) => {
let n = t.querySelector(`:scope > [data-view-page="${r}"]`);
return n && e.push(n), e;
}, []), d = o.join(":");
if (s === void 0 && (s = "next", (u[0]?.dataset.order ?? 0) < (l[0]?.dataset.order ?? 0) && (s = "prev")), !u.length) return;
if (e.dataset.viewPageActive = r, e.dataset.args = o?.join(":") ?? "", u[0].classList.contains("active")) {
u[0].dataset.viewPageArgs !== d && u.forEach((e) => {
e.dataset.viewPageArgs = d;
}), M(e, u, r, o), N(e, u, r, o);
return;
}
u.forEach((e) => {
e.dataset.viewPageArgs = d;
}), l.forEach((e) => {
e.querySelector(".top-popup-wrapper") && i.close(e.querySelector(".top-popup-wrapper"));
});
let f = u[0].closest(".ui-dialog");
switch (f && !t(f) && (s = "none"), l.length || (s = "none"), t(u[0]) && (s = "none"), s) {
case "prev":
u.forEach((e) => {
let t = e.parentNode?.querySelector(":scope > .active");
t && e.parentNode?.insertBefore(e, t);
}), l.forEach((e) => {
e.classList.add("right-to-center", "reverse");
}), u.forEach((e) => {
e.classList.add("center-to-left", "reverse");
});
break;
case "next":
u.forEach((e) => {
let t = e.parentNode?.querySelector(":scope > .active");
t && e.parentNode?.insertBefore(e, t.nextSibling);
}), l.forEach((e) => {
e?.classList.add("center-to-left");
}), u.forEach((e) => {
e.classList.add("right-to-center");
});
break;
}
if (e.setAttribute("view-page-active", r), l.forEach((e) => {
e.classList.remove("active");
}), u.forEach((e) => {
e.classList.add("active");
}), M(e, u, r, o), s) {
e.classList.add("i-change-page");
let t = Number(window.getComputedStyle(u[0]).animationDuration.replace("s", "")) * 1e3;
h = setTimeout(function() {
x(e.getAttribute("id"), r, ""), F(e), N(e, u, r, o);
}, t);
} else await x(e.getAttribute("id"), r, ""), N(e, u, r, o);
}, A = (e) => {
let t = n(e, ".modal-layer").reduce((e, t) => {
let n = t.querySelector(":scope > .active");
return n && e.push(n), e;
}, []).reduce((e, t) => {
let n = t.previousElementSibling;
for (; n && !n.hasAttribute("data-view-page");) n = n.previousElementSibling;
return n && e.push(n), e;
}, [])[0]?.dataset.viewPage;
t ? k(e, t, void 0, "prev") : $(e).dialog("close");
}, j = /* @__PURE__ */ new Set(), M = (e, t, n, r) => {
let i = e.getAttribute("id") + t[0].dataset.viewPage + n + r.join();
j.has(i) || (j.add(i), setTimeout(function() {
j.delete(i), $(e).trigger("viewBeforeOpen", [
$(e),
$(t),
n,
r
]);
}));
}, N = (e, t, n, r) => {
setTimeout(function() {
$(e).trigger("viewAfterOpen", [
$(e),
$(t),
n,
r
]);
});
}, P = (e) => (_(e) && (e = e?.[0]), e.classList.contains("i-change-page")), F = (e) => {
if (!P(e)) return !1;
clearTimeout(h);
let t = n(e, ".modal-layer"), r = e.dataset.viewPageActive;
return e.classList.remove("i-change-page"), t.forEach((e) => {
e.querySelectorAll(":scope > [data-view-page]").forEach((e) => {
e.classList.remove("center-to-left", "right-to-center", "reverse", "active");
});
}), t.forEach((e) => {
e.querySelector(`:scope > [data-view-page="${r}"]`)?.classList.add("active");
}), !0;
}, I = {
getElDialogById: b,
updatePageVue: x,
recalcPositions: E,
toViewDirty: D,
toView: O,
toViewPage: k,
toPrevPage: A,
setLoading: (e, n, r) => {
_(e) && (e = e.toArray());
let i = e.reduce((e, n) => (n.hasAttribute("data-view-page") && t(n) && e.push(n), e), []);
n ? (r !== void 0 && i.forEach((e) => {
e.style.setProperty("--dialog-loading-duration", r + "s");
}), i.forEach((e) => {
e.classList.add("i-load-data");
})) : (i.forEach((e) => {
e.classList.remove("i-load-data");
}), i.forEach((e) => {
e.style.setProperty("--dialog-loading-duration", "10s");
}));
},
isLoading: (e) => (_(e) && (e = e?.[0]), e.classList.contains("i-load-data")),
inAnimation: P,
close: function(e) {
let t = b(e);
if (!t) return;
let n = $(t);
n.dialog("instance") && n.dialog("close");
}
};
v();
//#endregion
export { I as TopDialogUtils };
//# sourceMappingURL=utils-B1tz7GZc.esm.js.map
{"version":3,"file":"utils-B1tz7GZc.esm.js","names":[],"sources":["../../src/storybook/jquery.ts","../../src/components/dialog/lib/utils.globalEvents.ts","../../src/components/dialog/dialog/style/dialog.css?inline","../../src/components/dialog/dialog/style/dialog.m.css?inline","../../src/components/dialog/dialog/style/dialog.pc.css?inline","../../src/components/dialog/dialog/style/modern/dialog.css?inline","../../src/components/dialog/dialog/style/modern/dialog.pc.css?inline","../../src/components/dialog/lib/utils.ts"],"sourcesContent":["/**\n * см. /.storybook/preview-head.html\n */\nexport default $;\n","import { TopDialogUtils } from './utils';\nimport { TopDialogWorker } from './worker';\nimport { isVisible, querySelectorAllArray, querySelectorVisible } from '@/core/utils/dom';\nimport { historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogWrapper } from '@/components/dialog/lib/types';\n\nlet inited = false;\n\n/**\n * Инициализация глобальных событий для диалоговых окон\n *\n * Производится один раз при подключении диалогового окна\n *\n * События не размонтируются\n */\nexport const initDialogGlobalEvents = () => {\n\tif (inited) return;\n\tinited = true;\n\n\t/**\n\t * Закрытие диалога по Esc\n\t */\n\tdocument.addEventListener('keydown', (e) => {\n\t\tif (e.key !== 'Escape') return;\n\t\tif (!e.target || !(e.target instanceof HTMLElement)) return;\n\n\t\tconst el = e.target;\n\n\t\t// событие произошло вне диалогового окна\n\t\tif (!el.closest('.ui-dialog')) return;\n\n\t\tif (el.contentEditable === 'true' || el.contentEditable === 'plaintext-only') return;\n\n\t\t// не закрывать окно при открытом TopPopup\n\t\tif (querySelectorVisible(document.documentElement, '.top-popup-wrapper')) return;\n\n\t\t// не закрывать окно при работе с jquery autocomplete\n\t\tif (el.classList.contains('autocomplete')) return;\n\n\t\t// не закрывать окно при открытом fancybox\n\t\tif (querySelectorVisible(document.documentElement, '.fancybox-container')) return;\n\n\t\tconst elDialogs = querySelectorAllArray<ElTopDialog>(document, '.ui-dialog-content').filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t});\n\n\t\t$(elDialogs[elDialogs.length - 1]).dialog('close');\n\t});\n\n\t/**\n\t * Закрытие диалога по кнопке закрыть\n\t */\n\tdocument.addEventListener('click', (e) => {\n\t\t// // навигация без истории\n\t\t// var $dialog = $(this).closest('.ui-dialog-content');\n\t\t// var viewName = $dialog.attr('id');\n\t\t// var pageName = getHash('view-' + viewName);\n\t\t// if (!pageName) {\n\t\t// \ttoPrevPage($dialog);\n\t\t//\n\t\t// \treturn;\n\t\t// }\n\t\t//\n\t\t// // навигация по истории\n\t\t// if (Core.state.isMobile && history.length > 1 && $(this).closest('.modal-layer').length) {\n\t\t// \tvar href = location.href;\n\t\t//\n\t\t// \thistory.go(-1);\n\t\t//\n\t\t// \tsetTimeout(() => {\n\t\t// \t\t// это первая страница в истории вкладки браузера\n\t\t// \t\tif (href === location.href) $(e.target).closest('.ui-dialog-content').dialog('close');\n\t\t// \t});\n\t\t// } else {\n\t\t// \t$(this).closest('.ui-dialog-content').dialog('close');\n\t\t// }\n\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst el = e.target.closest('[data-action=\"top-dialog-close\"]') as HTMLElement | null;\n\t\tif (!el) return;\n\n\t\te.preventDefault();\n\n\t\tconst elDialog = el.closest<ElTopDialog>('.ui-dialog-content');\n\t\tif (!elDialog) return;\n\n\t\t// если к кнопке привязана ссылка, диалоговое окно не нужно закрывать\n\t\tconst toView = el.dataset.toView;\n\n\t\tif (toView == 'toPrevPage()') {\n\t\t\tTopDialogUtils.toPrevPage(elDialog);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (toView) {\n\t\t\tconst viewNameAndPageLink = toView.split('-');\n\t\t\tconst viewName = viewNameAndPageLink.shift();\n\t\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\t\tif (!viewName) return;\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\t\t\tif (!elDialog) return;\n\n\t\t\tconst elToPages = querySelectorAllArray(elDialog, `[data-view-page=\"${pageLink}\"]`);\n\t\t\tif (!elToPages) return;\n\n\t\t\tif (!isVisible(elToPages[0])) {\n\t\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, 'prev');\n\n\t\t\t\t// // не убирает кнопку \"Вперед\" в браузере\n\t\t\t\t// history.replaceState(null, '', hash);\n\t\t\t\t// toViewDirty(toView, 'prev');\n\n\t\t\t\t// // добавляет текущую страницу в историю браузера\n\t\t\t\thistorySetState(false, hash);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst $dialog = $(elDialog);\n\n\t\t$dialog.dialog('close');\n\t});\n\n\t/**\n\t * Все submit должны обрабатываться через js\n\t */\n\tdocument.addEventListener('submit', (e) => {\n\t\tconst elForm = e.target as HTMLElement;\n\n\t\tif (elForm.matches('.modal-body > form') || elForm.matches('.modal-layer-body > form')) {\n\t\t\te.preventDefault();\n\t\t}\n\t});\n\n\t/**\n\t * Выполнение действия по нажатию Enter\n\t *\n\t * @todo Убрать `.searcher`\n\t */\n\tdocument.addEventListener('keypress', (e) => {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst eventTarget = e.target;\n\n\t\tconst elModalBody = eventTarget.closest('.ui-dialog .modal-body');\n\t\tif (!elModalBody) return;\n\n\t\tconst isInput =\n\t\t\teventTarget.matches('input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)')\n\t\t\t|| eventTarget.hasAttribute('contenteditable');\n\t\tif (!isInput) return;\n\n\t\t// if (e.keyCode !== 10 && e.key !== 'ENTER') return;\n\t\tif (e.key !== 'Enter') return;\n\n\t\t// не выполнять submit действий при работе с jquery autocomplete\n\t\tif (eventTarget.classList.contains('autocomplete')) {\n\t\t\te.preventDefault();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (eventTarget.tagName === 'TEXTAREA') {\n\t\t\tif (!e.ctrlKey && !e.metaKey) return;\n\n\t\t\tconst elForm = eventTarget.closest('form');\n\n\t\t\tif (elForm) {\n\t\t\t\t// Find visible submit buttons\n\t\t\t\tconst elSubmitButton = querySelectorAllArray(elForm, 'button[type=\"submit\"]')\n\t\t\t\t\t.concat(querySelectorAllArray(elForm, 'input[type=\"submit\"]'))\n\t\t\t\t\t.find((elSubmitButton) => {\n\t\t\t\t\t\treturn isVisible(elSubmitButton);\n\t\t\t\t\t});\n\n\t\t\t\telSubmitButton?.click();\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Закрытие диалога по клику вне окна\n\t */\n\tdocument.addEventListener('click', function (event) {\n\t\tif (!(event.target instanceof HTMLElement)) return;\n\n\t\tconst eventTarget = event.target;\n\n\t\tif (!eventTarget.classList.contains('ui-widget-overlay')) return;\n\n\t\tlet elDialogWrapperWithTopZIndex: ElTopDialogWrapper | undefined;\n\t\tlet topZIndex = 0;\n\n\t\tconst elDialogWrapperVisibles = querySelectorAllArray<ElTopDialogWrapper>(document, '.ui-dialog').filter((elDialogWrapper) => {\n\t\t\treturn isVisible(elDialogWrapper);\n\t\t});\n\n\t\telDialogWrapperVisibles.forEach((elDialogWrapper) => {\n\t\t\tconst zIndex = Number(window.getComputedStyle(elDialogWrapper).zIndex);\n\t\t\tif (zIndex < topZIndex) return;\n\n\t\t\telDialogWrapperWithTopZIndex = elDialogWrapper;\n\t\t\ttopZIndex = zIndex;\n\t\t});\n\n\t\tif (elDialogWrapperWithTopZIndex) {\n\t\t\tconst elDialog = elDialogWrapperWithTopZIndex.querySelector('.ui-dialog-content');\n\n\t\t\t$(elDialog).dialog('close');\n\t\t}\n\t});\n\n\twindow.addEventListener('resize', TopDialogUtils.recalcPositions);\n\tTopDialogUtils.recalcPositions();\n};\n",":root {\n\t--dialog-border-color: var(--color-line-1);\n\t--dialog-loading-duration: 10s;\n\n\t--top-dialog-footer-height: var(--top-forms-base-height_s);\n}\n\nhtml.with_dialog { overflow: hidden !important; }\n\na[data-to-view] { cursor: pointer; }\n\n/* common */\n.ui-widget-overlay { background: #040404; opacity: 0.50; filter: Alpha(Opacity=50); }\n.ui-dialog { border-radius: 8px; border: none; padding: 0; }\n.ui-dialog.ui-widget { border: none; }\n.ui-dialog-titlebar { display: none; }\n.ui-dialog .ui-dialog-content { padding: 0; overflow: visible; }\n.ui-dialog .project_name { word-break: break-all; }\n\n.ui-dialog-content {\n\t--dialog-header-height: 50px;\n\t--dialog-layer-pageSelector: 0px;\n}\n.ui-dialog-content-withPageSelector {\n\t--dialog-layer-pageSelector: 42px;\n}\n\n.modal-header,\n.modal-body,\n.modal-footer { font-size: 14px; position: relative; }\n.modal-body { padding: var(--padding-default); }\n.modal-body:has(> .topTable:first-child) {\n\tpadding-top: calc(var(--padding-default) / 4);\n}\n\n/* modal-header */\n.modal-header {\n\tborder-bottom: 1px solid var(--dialog-border-color); height: var(--dialog-header-height); padding: 0 var(--padding-default);\n\tdisplay: flex; justify-content: space-between; align-items: center; gap: var(--top-padding-2);\n}\n.modal-header > * { padding: 10px 0; font-size: 16px; }\n.modal-header > .top-title {\n\tmargin: 0;\n\tfont-weight: normal;\n\toverflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n\tflex-grow: 1; order: 50; display: flex; align-items: center;\n}\n.modal-header > .top-title > div[class*=icon] { display: none; }\n.modal-header > div:not(.top-title) { order: 60; }\n.modal-header > div.close {\n\t--top-icon-color: var(--color-text-2);\n\n\tcursor: pointer;\n\tbackground: var(--color-layout-front-1); font-size: 16px;\n\torder: 100;\n\tanimation-name: none !important;\n}\n.modal-header > div.close:hover {\n\t--top-icon-color: var(--color-text-1);\n}\n\n.modal-header .links_icons { position: absolute; right: 50px; }\n.modal-header .links_icons [class*=\"icon-\"] { width: auto; height: auto; padding: 0 5px; color: #D6DEE0; }\n.modal-header .links_icons [class*=\"icon-\"].active { color: var(--color-bg-warning-1); }\n\n.modal-layer-pageSelector { padding: 0 10px !important; }\n\n/* modal-body */\n.modal-body {\n\tmax-height: calc(var(--100vh) - var(--dialog-header-height) - 1px - var(--dialog-layer-pageSelector) - var(--top-dialog-footer-height) - 1px);\n\toverflow-y: auto; overflow-x: hidden; box-sizing: border-box; flex-grow: 1;\n}\n.modal-body hr { margin: 16px -15px; }\n.modal-body h4 { padding: 0; margin: 0 0 10px 0; line-height: normal; }\n.modal-body .inner { padding: var(--padding-default); margin: 0 calc(0px - var(--padding-default)); position: relative; }\n.modal-body .inner .bt { border-top: 1px dashed var(--color-layout-front-primary-3); position: absolute; top: 0; right: 0; left: 0; }\n.modal-body .inner .bb { border-bottom: 1px dashed var(--color-layout-front-primary-3); position: absolute; right: 0; bottom: 0; left: 0; }\n.modal-body .inner.color-1 { background: var(--color-layout-front-primary-3); color: var(--color-text-1); }\n.modal-body .inner strong { color: var(--color-text-1); }\n.modal-body .comment { line-height: 18px; }\n\n/* modal-footer */\n.modal-footer {\n\tmin-height: var(--top-dialog-footer-height);\n\tpadding: var(--top-gap-2);\n\tdisplay: flex;\n\tflex-shrink: 0;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--top-gap-2);\n}\n\n.modal-footer .modal-footer-btn-left { margin-right: auto; }\n\n.modal-footer > .btn.full_width,\n.modal-footer > .top-button.full_width { flex-grow: 1; align-self: flex-end; }\n\n.modal-footer-fullWith {\n\tflex-wrap: wrap;\n}\n.modal-footer-fullWith > * {\n\tflex-grow: 1;\n}\n.modal-footer-fullWith > .top-info {\n\tflex-grow: 5;\n}\n.modal-footer-fullWith > *:empty {\n\tflex-grow: 0;\n}\n\n/* modal form */\n.ui-dialog-content > .modal-layer > [data-view-page] > input[type=\"submit\"] { position: absolute; visibility: hidden; }\n\n/* modal help_popup */\n.help_popup .modal-header { display: none; }\n.help_popup .modal-header a { top: 2px; z-index: 10; }\n.help_popup .modal-header .top-title { display: none; }\n\n/* view */\n.modal-layer { overflow: hidden; }\n.modal-layer a[data-top-icon]:empty { color: var(--color-text-4); text-decoration: none; }\n\n.modal-layer > [data-view-page] > div > div.buttons { display: flex; white-space: nowrap; gap: var(--top-padding-1); }\n.modal-layer > [data-view-page] > div > div.buttons:empty { display: none; }\n.modal-layer > [data-view-page] > div > div.buttons > div,\n.modal-layer > [data-view-page] > div > div.buttons > a {\n\tcursor: pointer;\n\twidth: auto; height: auto; min-width: auto; min-height: auto; padding: 10px 9px;\n\tcolor: var(--color-text-4);\n}\n.modal-layer > [data-view-page] > div > div.buttons > div:hover { color: var(--color-text-2); }\n.modal-layer > [data-view-page] > div > div.buttons > div.hidden { display: none !important; }\n\n.ui-dialog-content[data-view-page-active] { display: flex !important; flex-direction: column; justify-items: stretch; }\n.ui-dialog-content > .modal-layer { display: flex !important; align-items: stretch; position: relative; }\n.ui-dialog-content.i-change-page > .modal-layer { overflow: hidden; }\n.ui-dialog-content > .modal-layer > [data-view-page] {\n\twidth: 100%;\n\tposition: relative; display: none;\n\tflex-direction: column; justify-content: space-between;\n\tanimation: 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n}\n.ui-dialog-content > .modal-layer > [data-view-page].active { display: flex; }\n.ui-dialog-content > .modal-layer > [data-view-page].reverse { animation-direction: reverse; }\n.ui-dialog-content > .modal-layer > [data-view-page].center-to-left,\n.ui-dialog-content > .modal-layer > [data-view-page].right-to-center { display: flex; position: absolute; top: 0; right: 0; bottom: 0; left: 0; }\n.ui-dialog-content > .modal-layer > [data-view-page].center-to-left > div,\n.ui-dialog-content > .modal-layer > [data-view-page].right-to-center > div { overflow: hidden; }\n\n.ui-dialog-content > .modal-layer-header { border-bottom: 1px solid var(--dialog-border-color); min-height: var(--dialog-header-height); }\n.ui-dialog-content > .modal-layer-header > [data-view-page] > .modal-header { border: none; background: none; }\n.ui-dialog-content > .modal-layer-header > [data-view-page] > .modal-header > * { animation: 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].reverse > .modal-header > * { animation-direction: reverse; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].center-to-left > .modal-header > .top-title { animation-name: dialog-center-to-left-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].right-to-center > .modal-header > .top-title { animation-name: dialog-right-to-center-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].center-to-left > .modal-header > [class*=\"widget-\"] { animation-name: dialog-center-to-left-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].right-to-center > .modal-header > [class*=\"widget-\"] { animation-name: dialog-right-to-center-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].center-to-left > .modal-header > div { animation-name: dialog-center-to-left-header-icons; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].right-to-center > .modal-header > div { animation-name: dialog-right-to-center-header-icons; }\n\n.ui-dialog-content > .modal-layer-body { border-radius: 0 0 8px 8px; max-height: calc(var(--100vh) - var(--dialog-header-height) - var(--dialog-layer-pageSelector) - var(--toolbar-height)); flex-grow: 2; }\n.ui-dialog-content.i-change-page > .modal-layer-body > [data-view-page] { background: var(--color-layout-front-1); }\n.ui-dialog-content > .modal-layer-body > [data-view-page].center-to-left { animation-name: dialog-center-to-left; }\n.ui-dialog-content > .modal-layer-body > [data-view-page].right-to-center { animation-name: dialog-right-to-center; }\n\n.ui-dialog-content .modal-footer .second_level {\n\tbox-sizing: border-box;\n\tbackground: var(--color-layout-front-1); width: 100%; min-height: 25px;\n\tdisplay: flex; align-items: center; justify-content: center;\n}\n.ui-dialog-content .modal-footer .second_level input {\n\tborder-radius: 8px;\n\twidth: 100%; height: var(--top-forms-base-height);\n\tpadding: var(--top-padding-1) var(--top-padding-3);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog-content > .modal-layer-body > [data-view-page].i-load-data {\n\tpointer-events: none;\n}\n.ui-dialog-content > .modal-layer-body > [data-view-page].i-load-data:before {\n\tcontent: \" \";\n\tbackground: #378DC6; width: 0; height: 4px;\n\tposition: absolute; top: 0; left: 0; z-index: 100;\n\tanimation: top-loadbar var(--dialog-loading-duration) forwards;\n}\n\n.ui-dialog-content.modal-expanded { width: 100vw !important; height: calc(var(--100vh) + 10px) !important; }\n\n/* widgets */\n.modal-header > [data-widget] {\n\tpadding: 0 8px;\n\tposition: absolute; top: 0; right: 0; bottom: 0; left: 0; opacity: 0; overflow: hidden;\n\talign-items: center;\n\tvisibility: hidden;\n\ttransition: opacity 0.3s; z-index: 1;\n}\n\n.modal-header > [data-widget=\"search\"] div.cancel {\n\topacity: 0;\n\ttransform: translateX(100%);\n\ttransition: transform, opacity; transition-duration: 0.3s;\n}\n\n[data-view-page].i-show-search { }\n[data-view-page].i-show-search .modal-header > :not([data-widget=\"search\"]) { visibility: hidden; }\n[data-view-page].i-show-search [data-widget=\"search\"] { visibility: visible; opacity: 1; }\n[data-view-page].i-show-search [data-widget=\"search\"] .cancel { transform: translateX(0); opacity: 1; }\n\n[data-view-page] > .modal-header > * { transition: opacity 0.3s; }\n[data-view-page].i-show-search > .modal-header > div.buttons { opacity: 0; }\n\n/* top-popup */\n.modal-layer .top-popup-wrapper { height: 100% !important; }\n\n/* animation */\n@keyframes dialog-center-to-left-header-title {\n\tfrom { transform: translateX(0); opacity: 1; }\n\t75% { opacity: 0; }\n\tto { transform: translateX(-30%); opacity: 0; }\n}\n\n@keyframes dialog-right-to-center-header-title {\n\tfrom { transform: translateX(100%); opacity: 0; }\n\t25% { opacity: 0; }\n\tto { transform: translateX(0); opacity: 1; }\n}\n\n@keyframes dialog-center-to-left-header-icons {\n\tfrom { transform: translateX(0); opacity: 1; }\n\t35% { transform: translateX(-20%); opacity: 0; }\n\tto { transform: translateX(-20%); opacity: 0; }\n}\n\n@keyframes dialog-right-to-center-header-icons {\n\tfrom { transform: translateX(20%); opacity: 0; }\n\t65% { transform: translateX(20%); opacity: 0; }\n\tto { transform: translateX(0); opacity: 1; }\n}\n\n@keyframes dialog-center-to-left {\n\tfrom { transform: translateX(0); filter: brightness(1); }\n\tto { transform: translateX(-30%); filter: brightness(0.9); }\n}\n\n@keyframes dialog-right-to-center {\n\tfrom { transform: translateX(100%); box-shadow: rgba(0, 0, 0, 0.1) 0 0 10px; }\n\tto { transform: translateX(0); box-shadow: rgba(0, 0, 0, 0.2) 0 0 10px; }\n}\n\n/* вид с дополнительной секцией TopPopup сбоку от окна */\n@media only screen and (max-width: 1480px) {\n\t.win_side_panel_opener { display: none; }\n}\n\n@media only screen and (min-width: 1480px) {\n\t.ui-dialog-content.with_side_panel { box-shadow: rgb(0 0 0 / 20%) 0 0 6px; }\n\n\t.ui-dialog-content.with_side_panel .modal-layer-body { background: var(--color-layout-front-1); }\n\n\t[data-widget=\"side_panel\"] {\n\t\t--side_panel_width: calc((100vw - 900px) / 2 - 28px);\n\n\t\tbox-sizing: border-box;\n\t\tbackground: var(--color-layout-front-1); max-width: var(--side_panel_width); padding: 18px;\n\t\tposition: absolute; top: calc(var(--dialog-header-height) + 1px + var(--dialog-layer-pageSelector)); bottom: calc(var(--top-dialog-footer-height) + 1px);\n\t\tz-index: -1; display: block;\n\t\ttransition: 0.2s;\n\t}\n\n\t.win_side_panel_left { border-radius: 8px 0 0 8px; right: 100%; }\n\n\t.win_side_panel_right { border-radius: 0 8px 8px 0; left: 100%; }\n\n\t.win_side_panel_closed.win_side_panel_left { right: calc(100% - var(--side_panel_width)); }\n\n\t.win_side_panel_closed.win_side_panel_right { left: calc(100% - var(--side_panel_width)); }\n\n\t[data-widget=\"side_panel\"] .template { display: block; }\n\n\t[data-widget=\"side_panel\"] .template > .header,\n\t[data-widget=\"side_panel\"] .template > .footer { display: flex; }\n\n\t.win_side_panel_opener { cursor: pointer; background: var(--color-cyan); color: #FFF; padding: 4px; position: absolute; top: 20px; }\n\n\t.win_side_panel_closed .win_side_panel_opener:not(:hover) { opacity: 0.3; }\n\n\t.win_side_panel_left .win_side_panel_opener { border-radius: 4px 0 0 4px; right: 100%; }\n\n\t.win_side_panel_right .win_side_panel_opener { border-radius: 0 6px 6px 0; left: 100%; }\n}\n\n@media only screen and (max-height: 900px) {\n\thtml.with_dialog { background: #F1F1F1; overflow: hidden; }\n\n\t.ui-widget-overlay { }\n\n\t.ui-dialog.me-tightly {\n\t\tborder-radius: 0;\n\t\theight: auto !important;\n\t\tposition: fixed; top: 0 !important; bottom: 0 !important;\n\t}\n\n\t.ui-dialog.me-tightly .ui-dialog-content { min-height: 100% !important; }\n\n\t/* для не view */\n\t.ui-dialog.me-tightly > div > .modal-body { position: absolute; top: var(--dialog-header-height); right: 0; left: 0; bottom: var(--dialog-header-height); }\n\n\t.ui-dialog.me-tightly > div > .modal-body:last-child { bottom: 0; }\n\n\t.ui-dialog.me-tightly > div > .modal-footer { position: absolute; right: 0; bottom: 0; left: 0; }\n\n\t/* view */\n\t.modal-layer { }\n\n\t.ui-dialog.me-tightly .modal-layer-body { border-radius: 0; min-height: 0 !important; }\n\n\t.ui-dialog.me-tightly .modal-layer-body .modal-footer { min-height: unset; }\n}\n","html.with_dialog body { height: var(--100vh); overflow: hidden; }\n\n.ui-widget-overlay { height: calc(100% - var(--toolbar-height)); }\n\n.ui-dialog {\n\tborder-radius: 0;\n\twidth: auto !important; height: auto !important;\n\tposition: fixed; top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;\n}\n\n.ui-dialog-content {\n\twidth: 100% !important;\n\theight: 100% !important;\n\tmin-width: 0 !important;\n\tmax-width: 100% !important;\n}\n\n/* modal-header */\n.modal-header > .top-title { text-align: center; font-size: 14px; }\n.modal-header > div.close { font-size: 14px; order: -1; }\n.modal-header > div.close:before { content: \"\"; }\n\n/* modal-body */\n.modal-body { }\n.modal-body:last-child { bottom: 0; }\n.modal-footer { bottom: 0; }\n\n/* modal-footer */\n.modal-footer .second_level { padding: 10px 8px; }\n\n/* view */\n.modal-layer-body { min-height: 0 !important; }\n.ui-dialog-content > .modal-layer-body { border-radius: 0; }\n/*.ui-dialog-content > .modal-layer-body > [data-view-page] .modal-body{ margin: auto 0; }*/\n\n.modal-body,\n.modal-footer { padding-right: 12px; padding-left: 12px; }\n.modal-footer .btn:last-child { margin-right: 12px; }\n\n.modal-body .inner { padding: 12px; margin: 0 -12px; position: relative; }\n","/* menu */\n.modal-menu-opener { order: 1 !important; }\n.modal-menu-opener:before {\n\t--top-icon-size: 20px;\n\t--top-icon-color: #FFF;\n\t--top-icon-width: var(--top-icon-size);\n\n\tborder-radius: 50%; background: var(--color-bg-primary-1); padding: 3px;\n\ttransition: transform 0.1s;\n}\n.modal-menu-opener:hover:before { background: var(--color-bg-primary-2); }\n.modal-menu-opener.top-active:before { background: var(--color-bg-primary-2); transform: scale(0.8); }\n\n/* top-popup */\n.modal-layer .top-popup-wrapper {\n\tbackground: transparent;\n\twidth: auto !important; padding: 0 !important; margin: 0 !important;\n\ttop: 0 !important; right: 0 !important; left: 0 !important;\n\ttransition: background 0.3s;\n}\n\n.modal-layer .top-popup-wrapper > .top-popup[class],\n.modal-layer .top-popup-wrapper.with_notch > .top-popup[class] {\n\tborder-radius: 8px; border: none; margin: 12px !important; max-width: 100%; max-height: calc(100% - 24px);\n\ttop: 0 !important; right: 0 !important; bottom: auto !important; left: 0 !important; overflow: auto; display: flex; flex-direction: column;\n\topacity: 1;\n\ttransform: translateY(calc(-100% - 24px));\n\ttransition: transform 0.3s;\n}\n\n.modal-layer .top-popup > .top-popup_header { background: var(--color-theme-50); }\n\n.modal-layer .top-theme-lite .top-popup > .top-popup_header .select { border: none; }\n.modal-layer .top-theme-lite .top-popup > .top-popup_header .select .text { color: #FFF; }\n.modal-layer .top-theme-lite .top-popup > .top-popup_header .select .arrow { background: none; }\n\n.modal-layer .top-popup-wrapper-shown:not(.top-popup-wrapper-closed) {\n\tpointer-events: auto;\n\tbackground: rgba(52, 73, 94, 0.25);\n}\n\n@media only screen and (min-width: 1480px) {\n\t.ui-dialog-content.with_side_panel { box-shadow: rgb(0 0 0 / 20%) 0 0 6px; }\n\n\t.ui-dialog-content.with_side_panel .modal-layer-body { background: var(--color-layout-front-1); }\n\n\t[data-widget=\"side_panel\"] {\n\t\t--side_panel_width: calc((100vw - 900px) / 2 - 28px);\n\n\t\tbox-sizing: border-box;\n\t\tbackground: var(--color-layout-front-1); max-width: var(--side_panel_width); padding: 18px;\n\t\tdisplay: block; position: absolute; top: 51px; bottom: 51px; z-index: -1;\n\t\ttransition: 0.2s;\n\t}\n\n\t.win_side_panel_left { border-radius: 8px 0 0 8px; right: 100%; }\n\n\t.win_side_panel_right { border-radius: 0 8px 8px 0; left: 100%; }\n\n\t.win_side_panel_closed.win_side_panel_left { right: calc(100% - var(--side_panel_width)); }\n\n\t.win_side_panel_closed.win_side_panel_right { left: calc(100% - var(--side_panel_width)); }\n\n\t[data-widget=\"side_panel\"] .template { display: block; }\n\n\t[data-widget=\"side_panel\"] .template > .header,\n\t[data-widget=\"side_panel\"] .template > .footer { display: flex; }\n\n\t.win_side_panel_opener { cursor: pointer; background: var(--color-cyan); color: #FFF; padding: 4px; position: absolute; top: 20px; }\n\n\t.win_side_panel_closed .win_side_panel_opener:not(:hover) { opacity: 0.3; }\n\n\t.win_side_panel_left .win_side_panel_opener { border-radius: 4px 0 0 4px; right: 100%; }\n\n\t.win_side_panel_right .win_side_panel_opener { border-radius: 0 6px 6px 0; left: 100%; }\n}\n","html {\n\t--top-dialog-width: auto;\n\t--top-dialog-height: auto;\n}\n\n.top-dialog {\n\tmax-width: 100vw;\n}\n\n.top-dialog .modal-layer-body {\n\theight: var(--top-dialog-height);\n}\n",".top-dialog {\n\twidth: var(--top-dialog-width) !important;\n}","import 'jquery';\nimport { nextTick } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { TopPopupWorker } from '@/components/popup/worker';\nimport { sleep, waitWhile } from '@/core/utils/system';\nimport { setHashs } from '@/core/utils/route';\nimport { connectScrollShadow } from '@/core/utils/scroll';\n\nimport type { ElTopDialog, ElTopDialogBody, ElTopDialogModalLayer, ElTopDialogPage, ElTopDialogWrapper, MoveDirection } from './types';\nimport { TopDialogWorker } from './worker';\nimport { initDialogGlobalEvents } from './utils.globalEvents';\nimport { getDialogWorker } from '../dialog/dialogs/dialogs.vue';\n\nimport css from '../dialog/style/dialog.css?inline';\nimport cssM from '../dialog/style/dialog.m.css?inline';\nimport cssPC from '../dialog/style/dialog.pc.css?inline';\nimport cssModern from '../dialog/style/modern/dialog.css?inline';\nimport cssModernPC from '../dialog/style/modern/dialog.pc.css?inline';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\n\nCore.insertStyleToPage(css);\nCore.insertStyleToPage(cssM, 'm');\nCore.insertStyleToPage(cssPC, 'pc');\nCore.insertStyleToPage(cssModern);\nCore.insertStyleToPage(cssModernPC, 'pc');\n\nlet timerClearAnimation: NodeJS.Timeout;\nlet isInited = false;\n\n/**\n * Является ли элемент JQuery<HTMLElement>\n */\nconst isElJQuery = (el: JQuery<HTMLElement> | HTMLElement | HTMLElement[]) => {\n\treturn !!el && typeof el === 'object' && 'jquery' in el;\n};\n\nconst init = () => {\n\t$.extend($.ui.dialog.prototype.options, {\n\t\tfocus: (e: any) => {\n\t\t\te.target.focus();\n\n\t\t\t$('[autofocus]', e.target)[0]?.focus();\n\n\t\t\t// setTimeout(function () {\n\t\t\t// \tif ($('[autofocus]', e.target).length) return;\n\t\t\t// \t$('.modal-footer button:first, .modal-body :input:first', e.target).eq(0).focus();\n\t\t\t//\n\t\t\t// \t// fix пропадающего autocomplete при нажатии на scroll в autocomplete\n\t\t\t// \t$(e.target).add($(e.target).closest('.ui-dialog')).removeAttr('tabindex');\n\t\t\t// });\n\t\t},\n\t\tcreate: (e: any) => onCreate(e.target),\n\t\topen: (e: any) => onOpen(e.target),\n\t\tclose: (e: any) => onClose(e.target),\n\t\tmodal: true,\n\t\tresizable: false,\n\t\tcloseOnEscape: false,\n\t\twidth: 'auto',\n\t\tminHeight: 0,\n\t});\n\n\t$.ui.dialog.prototype._focusTabbable = $.noop;\n\n\t$.ui.dialog.prototype._moveToTopOriginal = $.ui.dialog.prototype._moveToTop;\n\t$.ui.dialog.prototype._moveToTop = function () {\n\t\tthis._moveToTopOriginal();\n\n\t\tconst $dialog = $(this.element);\n\t\t$dialog.trigger('dialogsMoveToTop', [$dialog]);\n\t};\n\n\tinitDialogGlobalEvents();\n\n\tisInited = true;\n};\n\n/**\n * Получить настройки диалогового окна из Vue компонента\n */\nconst genVueOptions = (elDialog: ElTopDialog) => {\n\tconst options: {\n\t\tmodal?: boolean,\n\t\tposition?: any,\n\t} = {};\n\n\tif (elDialog.dataset?.modal === 'false') options.modal = false;\n\tif (elDialog.dataset?.position) options.position = JSON.parse(elDialog.dataset.position);\n\n\treturn options;\n};\n\nconst getElDialogById = (id: string) => {\n\treturn <ElTopDialog | null>document.getElementById(id);\n};\n\n/**\n * Сменить состояние диалогового окна Vue\n */\nconst updatePageVue = async (dialogId: string, pageName?: string, pageNameNext?: string) => {\n\tif (!dialogId.startsWith('dialog_')) return;\n\n\tconst dialog = getDialogWorker(dialogId);\n\tif (!dialog) return;\n\n\tdialog.isOpened.value = true;\n\tif (pageName !== undefined) dialog.pageActive.value = pageName;\n\tif (pageNameNext !== undefined) dialog.pageActiveNext.value = pageNameNext;\n\n\tawait nextTick();\n\n\tif (pageNameNext) {\n\t\tconst elDialog = getElDialogById(dialogId);\n\t\tif (!elDialog) return;\n\n\t\tconst elNextpages = elDialog.querySelectorAll(`[data-view-page=\"${pageNameNext}\"]`);\n\n\t\tif (!elNextpages.length) {\n\t\t\tawait waitWhile(() => !elDialog.querySelectorAll(`[data-view-page=\"${pageNameNext}\"]`).length);\n\t\t}\n\t}\n};\n\n/**\n * Callback for jQuery dialog onCreate\n */\nconst onCreate = (elDialog: ElTopDialog) => {\n\tconst elsDialogBodies = querySelectorAllArray(elDialog, '.modal-body');\n\telsDialogBodies.forEach((elDialogBody) => {\n\t\tconnectScrollShadow(elDialogBody);\n\t});\n\n\tif (!elsDialogBodies.length) return;\n\n\tTopDialogWorker.state.decoratorOnCreate?.(elDialog);\n\n\tinitPopup(elDialog);\n};\n\n/**\n * Инициирование событий TopPopup в диалоговом окне\n */\nconst initPopup = (elDialog: HTMLElement) => {\n\t$(elDialog).on('aftershow.top-menu-popup', '[data-top-popup]', (_e, $popup) => {\n\t\t// перенести popup в корневой элемент страницы диалогового окна\n\t\tconst elPopup = $popup[0];\n\n\t\t// перенести popup в корневой элемент страницы диалогового окна\n\t\tconst elPageContents = TopDialogWorker.getPairPage(elPopup);\n\t\telPageContents?.[1]?.prepend(elPopup);\n\t});\n};\n\n/**\n * Callback for jQuery dialog onOpen\n */\nconst onOpen = async (elDialog: ElTopDialog) => {\n\tconst pageName = elDialog.dataset.viewPageActive;\n\tconst args = elDialog.dataset.args ? elDialog.dataset.args?.split(':') : [];\n\n\tconst w1 = window.innerWidth;\n\n\tCore.state.documentClassModificators.set('top-dialog', 'with_dialog');\n\n\tconst w2 = window.innerWidth;\n\n\tconst scrollBarWidth = w2 - w1;\n\tif (document.documentElement.scrollHeight > window.innerHeight) document.querySelector('html')!.style.marginRight = scrollBarWidth + 'px';\n\n\trecalcPositions();\n\n\tconst dialog = getDialogWorker(elDialog.getAttribute('id')!);\n\tdialog?.emit?.('open', pageName, args);\n};\n\n/**\n * Callback for jQuery dialog onClose\n */\nconst onClose = async (elDialog: ElTopDialog) => {\n\tconst viewName = elDialog.getAttribute('id');\n\tconst pageName = elDialog.dataset.viewPageActive;\n\n\tif (pageName) {\n\t\tconst hashData = {\n\t\t\tvpn: TopDialogWorker.state.viewPageN as number | null,\n\t\t\t['view-' + viewName]: null,\n\t\t};\n\t\thashData['view-' + viewName] = null;\n\n\t\tif (TopDialogWorker.state.viewPageN === 0 || TopDialogWorker.state.viewPageN === 1) {\n\t\t\thashData.vpn = null;\n\t\t}\n\n\t\tsetHashs(hashData, false);\n\t}\n\n\tconst elUiWidgetOverlayVisibles = querySelectorAllArray(document, '.ui-widget-overlay').filter((el) => {\n\t\treturn isVisible(el);\n\t});\n\n\tif (!elUiWidgetOverlayVisibles.length) {\n\t\tCore.state.documentClassModificators.delete('top-dialog');\n\n\t\tdocument.querySelector('html')!.style.marginRight = '';\n\t}\n\n\t$(elDialog).trigger('viewAfterClose', [$(elDialog)]);\n\n\tconst dialog = getDialogWorker(viewName);\n\n\tif (dialog) {\n\t\tdialog.isOpened.value = false;\n\t\tdialog.emit?.('close', pageName);\n\n\t\tif (dialog.onCloseOnce) {\n\t\t\tdialog.onCloseOnce(dialog.props, pageName);\n\t\t\tdialog.onCloseOnce = undefined;\n\t\t}\n\t}\n\n\t// после закрытия диалога может потребоваться пересчет позиций элементов\n\twindow.dispatchEvent(new Event('resize'));\n};\n\n/**\n * Пересчитать положения и размеры открытых диалоговых окон\n */\nconst recalcPositions = () => {\n\tconst elDialogVisibilityes = querySelectorAllArray(document, '.ui-dialog').filter((el) => {\n\t\treturn isVisible(el) && el.querySelector<ElTopDialog>(':scope > .ui-dialog-content');\n\t}).map((el) => {\n\t\treturn el.querySelector<ElTopDialog>(':scope > .ui-dialog-content')!;\n\t});\n\n\telDialogVisibilityes.forEach((elDialog) => {\n\t\tconst elDialogBody = elDialog.querySelector<ElTopDialogBody>('.modal-body');\n\t\tif (!elDialogBody) return;\n\n\t\tconst elDialogWrapper = elDialog.closest('.ui-dialog');\n\n\t\tconst options = genVueOptions(elDialog);\n\n\t\toptions.position ??= { of: window };\n\n\t\tconst $dialog = $(elDialog);\n\t\t$dialog.dialog('option', options);\n\n\t\telDialogWrapper.classList.remove('me-tightly');\n\t\tif ((elDialogWrapper.clientHeight ?? 0) > window.innerHeight) elDialogWrapper.classList.add('me-tightly');\n\t});\n};\n\n/**\n * Переход к view page по неразобранной ссылке в формате: {viewName}-{pageName}[:args]\n */\nconst toViewDirty = async (toViewPageName: string, moveDirection?: MoveDirection) => {\n\tconst regexp = /(\\w+)[=-]([\\w-]+)(?::([\\w.:-]+))?/g;\n\tconst toViewParts = regexp.exec(toViewPageName);\n\tif (toViewParts) {\n\t\tconst viewName = toViewParts[1];\n\t\tconst pageName = toViewParts[2];\n\t\tconst argsString = toViewParts[3];\n\n\t\tlet args: string[] = [];\n\t\tif (argsString) args = argsString.split(':');\n\n\t\tawait toView(viewName, pageName, args, moveDirection);\n\t}\n};\n\n/**\n * Открыть диалоговое окно, возможно указать нужную страницу\n * @param viewNameOrElDialog - id страницы окна или элемент окна\n * @param pageName - имя страницы\n * @param args - аргументы, набор проивзольных параметров, которые могут обрабатываться каждым окном по своему\n * @param moveDirection\n * @param callback - функция, которая будет запущена после октытия страницы\n */\nconst toView = async (\n\tviewNameOrElDialog: ElTopDialog | JQuery<ElTopDialog> | string,\n\tpageName?: string,\n\targs?: string[],\n\tmoveDirection?: MoveDirection,\n\tcallback?: (dialog: JQuery<ElTopDialog>) => void,\n) => {\n\tif (!isInited) {\n\t\tawait new Promise<void>((resolve, _reject) => {\n\t\t\tconst timer = setInterval(() => {\n\t\t\t\tif (!isInited) return;\n\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}, 10);\n\t\t});\n\t}\n\n\tawait nextTick();\n\n\tlet elDialog: ElTopDialog | null;\n\tif (typeof (viewNameOrElDialog) === 'object') {\n\t\tif (isElJQuery(viewNameOrElDialog)) viewNameOrElDialog = viewNameOrElDialog?.[0]; // todo: убрать после переписки jquery на сайте\n\n\t\telDialog = viewNameOrElDialog;\n\t} else {\n\t\telDialog = getElDialogById(viewNameOrElDialog);\n\t}\n\n\t// Диалоговое окно еще не загружено\n\tif (!elDialog && typeof viewNameOrElDialog === 'string' && TopDialogWorker.state.load) {\n\t\tawait TopDialogWorker.state.load(viewNameOrElDialog);\n\n\t\telDialog = getElDialogById(viewNameOrElDialog);\n\t\tif (!elDialog) {\n\t\t\tthrow new Error('Dialog no exists: ' + viewNameOrElDialog);\n\t\t}\n\t}\n\n\tif (!elDialog) return;\n\n\tawait toViewPage(elDialog, pageName, args, moveDirection);\n\n\tconst $dialog = $(elDialog);\n\n\tif (elDialog?.classList.contains('ui-dialog-content')) {\n\t\t// var zIndexMax = 0;\n\t\t// $.map($('.ui-dialog'), function (el) {\n\t\t// \tvar zIndex = $(el).css('z-index') * 1;\n\t\t// \tif (zIndex > zIndexMax) zIndexMax = zIndex;\n\t\t// });\n\t\t//\n\t\t// if ($dialog.is(':hidden')) $dialog.dialog('open');\n\t\t//\n\t\t// var $dialogWrapper = $dialog.parent();\n\t\t// var $dialogOverlay = $dialogWrapper.next();\n\t\t//\n\t\t// if ($dialogWrapper.css('z-index') * 1 < zIndexMax) {\n\t\t// \t$dialogWrapper.css('z-index', zIndexMax + 2);\n\t\t// \t$dialogOverlay.css('z-index', zIndexMax + 1);\n\t\t// }\n\n\t\t$dialog.dialog('open');\n\t} else {\n\t\tconst options = genVueOptions(elDialog);\n\n\t\t$dialog.dialog(options);\n\t}\n\n\tif (callback) callback($dialog);\n};\n\nconst toViewPage = async (elDialog: ElTopDialog | JQuery<ElTopDialog>, pageName?: string, args?: string[], moveDirection?: MoveDirection) => {\n\t// todo: убрать после переписки jquery на сайте\n\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0];\n\n\tif (pageName === undefined) pageName = elDialog.dataset.viewPageActive;\n\tif (args === undefined) args = elDialog.dataset.args?.split(':') ?? [];\n\n\tif (pageName !== elDialog.dataset.viewPageActive) {\n\t\tconst stopped = stopAnimations(elDialog);\n\t\tif (stopped) await sleep(100);\n\t}\n\n\tawait updatePageVue(elDialog.getAttribute('id') as string, undefined, pageName);\n\n\tconst elModalLayers = querySelectorAllArray<ElTopDialogModalLayer>(elDialog, '.modal-layer');\n\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elCurrentPage = elModalLayer.querySelector<ElTopDialogPage>(':scope > .active');\n\t\tif (elCurrentPage) {\n\t\t\tacc.push(elCurrentPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elNextPage = elModalLayer.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\t\tif (elNextPage) {\n\t\t\tacc.push(elNextPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst argsString = args.join(':');\n\n\tif (moveDirection === undefined) {\n\t\tmoveDirection = 'next';\n\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t}\n\n\tif (!elNextPages.length) return;\n\n\telDialog.dataset.viewPageActive = pageName;\n\telDialog.dataset.args = args?.join(':') ?? '';\n\n\t// запрашиваемая страница уже открыта\n\tif (elNextPages[0].classList.contains('active')) {\n\t\tif (elNextPages[0].dataset.viewPageArgs !== argsString) {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.dataset.viewPageArgs = argsString;\n\t\t\t});\n\n\t\t\t// dialogs.beforeOpenViewPage($dialog, $nextPage, pageName, args);\n\t\t\t// dialogs.afterOpenViewPage($dialog, $nextPage, pageName, args);\n\t\t}\n\n\t\tbeforeOpenViewPage(elDialog, elNextPages, pageName, args);\n\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\n\t\treturn;\n\t}\n\n\telNextPages.forEach((elNextPage) => {\n\t\telNextPage.dataset.viewPageArgs = argsString;\n\t});\n\n\telCurrentPages.forEach((elCurrentPage) => {\n\t\tif (elCurrentPage.querySelector('.top-popup-wrapper')) {\n\t\t\tTopPopupWorker.close(elCurrentPage.querySelector('.top-popup-wrapper')!);\n\t\t}\n\t});\n\n\tconst elDialogWrapper = elNextPages[0].closest<ElTopDialogWrapper>('.ui-dialog');\n\n\tif (elDialogWrapper && !isVisible(elDialogWrapper)) moveDirection = 'none';\n\tif (!elCurrentPages.length) moveDirection = 'none';\n\tif (isVisible(elNextPages[0])) moveDirection = 'none';\n\n\tswitch (moveDirection) {\n\t\tcase 'prev': {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\tconst elActive = elNextPage.parentNode?.querySelector(':scope > .active');\n\t\t\t\tif (elActive) elNextPage.parentNode?.insertBefore(elNextPage, elActive);\n\t\t\t});\n\n\t\t\telCurrentPages.forEach((elCurrentPage) => {\n\t\t\t\telCurrentPage.classList.add('right-to-center', 'reverse');\n\t\t\t});\n\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.classList.add('center-to-left', 'reverse');\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'next': {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\tconst elActive = elNextPage.parentNode?.querySelector(':scope > .active');\n\t\t\t\tif (elActive) elNextPage.parentNode?.insertBefore(elNextPage, elActive.nextSibling);\n\t\t\t});\n\n\t\t\telCurrentPages.forEach((elCurrentPage) => {\n\t\t\t\telCurrentPage?.classList.add('center-to-left');\n\t\t\t});\n\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.classList.add('right-to-center');\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\telDialog.setAttribute('view-page-active', pageName);\n\n\telCurrentPages.forEach((elCurrentPage) => {\n\t\telCurrentPage.classList.remove('active');\n\t});\n\n\telNextPages.forEach((elNextPage) => {\n\t\telNextPage.classList.add('active');\n\t});\n\n\tbeforeOpenViewPage(elDialog, elNextPages, pageName, args);\n\n\tif (moveDirection) {\n\t\telDialog.classList.add('i-change-page');\n\n\t\tconst delay = Number(window.getComputedStyle(elNextPages[0]).animationDuration.replace('s', '')) * 1000;\n\n\t\ttimerClearAnimation = setTimeout(function () {\n\t\t\tupdatePageVue(elDialog.getAttribute('id'), pageName, '');\n\t\t\tstopAnimations(elDialog);\n\t\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\t\t}, delay);\n\t} else {\n\t\tawait updatePageVue(elDialog.getAttribute('id'), pageName, '');\n\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\t}\n};\n\n/**\n * К предыдущему представлению\n */\nconst toPrevPage = (elDialog: ElTopDialog) => {\n\tconst elModalLayers = querySelectorAllArray<ElTopDialogModalLayer>(elDialog, '.modal-layer');\n\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elCurrentPage = elModalLayer.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\tif (elCurrentPage) {\n\t\t\tacc.push(elCurrentPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst elPrevPages = elCurrentPages.reduce<ElTopDialogPage[]>((acc, elCurrentPage) => {\n\t\tlet elPrevPage = elCurrentPage.previousElementSibling as ElTopDialogPage | null;\n\t\twhile (elPrevPage && !elPrevPage.hasAttribute('data-view-page')) {\n\t\t\telPrevPage = elPrevPage.previousElementSibling as ElTopDialogPage | null;\n\t\t}\n\n\t\tif (elPrevPage) acc.push(elPrevPage);\n\n\t\treturn acc;\n\t}, []);\n\n\tconst prevPageName = (elPrevPages[0])?.dataset.viewPage;\n\n\tif (prevPageName) {\n\t\tvoid toViewPage(elDialog, prevPageName, undefined, 'prev');\n\t} else {\n\t\tconst $dialog = $(elDialog);\n\t\t$dialog.dialog('close');\n\t}\n};\n\n/**\n * Для обработки событий вне vue\n */\nconst beforeOpenViewPageTimers = new Set();\nconst beforeOpenViewPage = (elDialog: ElTopDialog, elPages: ElTopDialogPage[], pageName: string, args: string[]) => {\n\t// группировка цепочки событий\n\t// запрос на открытие страницы может выполняться несколько раз, чаще такое может быть при открытии, загрузке и переходе сразу к нужной странице\n\tconst eventKey = elDialog.getAttribute('id') + elPages[0].dataset.viewPage + pageName + args.join();\n\n\tif (beforeOpenViewPageTimers.has(eventKey)) return;\n\tbeforeOpenViewPageTimers.add(eventKey);\n\n\tsetTimeout(function () {\n\t\tbeforeOpenViewPageTimers.delete(eventKey);\n\n\t\t$(elDialog).trigger('viewBeforeOpen', [$(elDialog), $(elPages), pageName, args]);\n\t});\n};\n\n/**\n * Для обработки событий вне vue\n */\nconst afterOpenViewPage = (elDialog: ElTopDialog, elPages: ElTopDialogPage[], pageName: string, args: string[]) => {\n\tsetTimeout(function () {\n\t\t$(elDialog).trigger('viewAfterOpen', [$(elDialog), $(elPages), pageName, args]);\n\t});\n};\n\n/**\n * Получить состояние: Диалоговое окно находится в состоянии смены страницы\n */\nconst inAnimation = (elDialog: ElTopDialog | JQuery<ElTopDialog>) => {\n\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0]; // todo: убрать после переписки jquery на сайте\n\n\treturn elDialog.classList.contains('i-change-page');\n};\n\n/**\n * Остановить анимацию смены страницы\n *\n * @returns Вернет true, если анимация производилась и была остановлена\n */\nconst stopAnimations = (elDialog: ElTopDialog) => {\n\tif (!inAnimation(elDialog)) return false;\n\n\tclearTimeout(timerClearAnimation);\n\n\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\n\tconst pageName = elDialog.dataset.viewPageActive;\n\telDialog.classList.remove('i-change-page');\n\n\telModalLayers.forEach((elModalLayer) => {\n\t\telModalLayer.querySelectorAll(':scope > [data-view-page]').forEach((el) => {\n\t\t\tel.classList.remove('center-to-left', 'right-to-center', 'reverse', 'active');\n\t\t});\n\t});\n\n\telModalLayers.forEach((elModalLayer) => {\n\t\telModalLayer.querySelector(`:scope > [data-view-page=\"${pageName}\"]`)?.classList.add('active');\n\t});\n\n\treturn true;\n};\n\n/**\n * Закрыть диалоговое окно\n */\nconst close = function (dialogId: string) {\n\tconst elDialog = getElDialogById(dialogId);\n\tif (!elDialog) return;\n\n\tconst $dialog = $(elDialog);\n\n\tif (!$dialog.dialog('instance')) return;\n\n\t$dialog.dialog('close');\n};\n\n/**\n * Управление props.isLoading\n */\nconst setLoading = (elPages: ElTopDialogPage[] | JQuery<ElTopDialogPage>, isLoading: boolean, duration?: number) => {\n\tif (isElJQuery(elPages)) elPages = elPages.toArray(); // todo: убрать после переписки jquery на сайте\n\n\tconst elPagesVisibleds = elPages.reduce<ElTopDialogPage[]>((acc, elPage) => {\n\t\tif (elPage.hasAttribute('data-view-page') && isVisible(elPage)) acc.push(elPage);\n\n\t\treturn acc;\n\t}, []);\n\n\tif (isLoading) {\n\t\tif (duration !== undefined) {\n\t\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\t\telPagesVisibled.style.setProperty('--dialog-loading-duration', duration + 's');\n\t\t\t});\n\t\t}\n\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.classList.add('i-load-data');\n\t\t});\n\t} else {\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.classList.remove('i-load-data');\n\t\t});\n\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.style.setProperty('--dialog-loading-duration', '10s');\n\t\t});\n\t}\n};\n\nconst isLoading = (elPage: ElTopDialogPage | JQuery<ElTopDialogPage>) => {\n\tif (isElJQuery(elPage)) elPage = elPage?.[0]; // todo: убрать после переписки jquery на сайте\n\n\treturn elPage.classList.contains('i-load-data');\n};\n\nexport const TopDialogUtils = {\n\tgetElDialogById,\n\tupdatePageVue,\n\trecalcPositions,\n\ttoViewDirty,\n\ttoView,\n\ttoViewPage,\n\ttoPrevPage,\n\tsetLoading,\n\tisLoading,\n\tinAnimation,\n\tclose,\n};\n\ninit();\n"],"mappings":";;;;;;;;;AAGe;;;ACGf,IAAI,IAAS,IASA,UAA+B;CACvC,MACJ,IAAS,IAKT,SAAS,iBAAiB,YAAY,MAAM;EAE3C,IADI,EAAE,QAAQ,YACV,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,cAAc;EAErD,IAAM,IAAK,EAAE;EAcb,IAXI,CAAC,EAAG,QAAQ,YAAY,KAExB,EAAG,oBAAoB,UAAU,EAAG,oBAAoB,oBAGxD,EAAqB,SAAS,iBAAiB,oBAAoB,KAGnE,EAAG,UAAU,SAAS,cAAc,KAGpC,EAAqB,SAAS,iBAAiB,qBAAqB,GAAG;EAE3E,IAAM,IAAY,EAAmC,UAAU,oBAAoB,CAAC,CAAC,QAAQ,MACrF,EAAU,CAAQ,CACzB;EAED,EAAE,EAAU,EAAU,SAAS,EAAE,CAAC,CAAC,OAAO,OAAO;CAClD,CAAC,GAKD,SAAS,iBAAiB,UAAU,MAAM;EAyBzC,IAAI,EAAE,EAAE,kBAAkB,cAAc;EAExC,IAAM,IAAK,EAAE,OAAO,QAAQ,oCAAkC;EAC9D,IAAI,CAAC,GAAI;EAET,EAAE,eAAe;EAEjB,IAAM,IAAW,EAAG,QAAqB,oBAAoB;EAC7D,IAAI,CAAC,GAAU;EAGf,IAAM,IAAS,EAAG,QAAQ;EAE1B,IAAI,KAAU,gBAAgB;GAC7B,EAAe,WAAW,CAAQ;GAElC;EACD;EAEA,IAAI,GAAQ;GACX,IAAM,IAAsB,EAAO,MAAM,GAAG,GACtC,IAAW,EAAoB,MAAM,GACrC,IAAW,EAAoB,KAAK,GAAG;GAE7C,IAAI,CAAC,GAAU;GAEf,IAAM,IAAW,EAAe,gBAAgB,CAAQ;GACxD,IAAI,CAAC,GAAU;GAEf,IAAM,IAAY,EAAsB,GAAU,oBAAoB,EAAS,GAAG;GAClF,IAAI,CAAC,GAAW;GAEhB,IAAI,CAAC,EAAU,EAAU,EAAE,GAAG;IAQ7B,EAAgB,IAPH,EAAgB,gBAAgB,GAAQ,MAO9B,CAAI;IAE3B;GACD;EACD;EAIA,EAFkB,CAElB,CAAA,CAAQ,OAAO,OAAO;CACvB,CAAC,GAKD,SAAS,iBAAiB,WAAW,MAAM;EAC1C,IAAM,IAAS,EAAE;EAEjB,CAAI,EAAO,QAAQ,oBAAoB,KAAK,EAAO,QAAQ,0BAA0B,MACpF,EAAE,eAAe;CAEnB,CAAC,GAOD,SAAS,iBAAiB,aAAa,MAAM;EAC5C,IAAI,EAAE,EAAE,kBAAkB,cAAc;EAExC,IAAM,IAAc,EAAE;EAEF,MAAY,QAAQ,wBACnC,MAGJ,EAAY,QAAQ,6FAA6F,KAC9G,EAAY,aAAa,iBAAiB,MAI1C,EAAE,QAAQ,SAGd;OAAI,EAAY,UAAU,SAAS,cAAc,GAAG;IACnD,EAAE,eAAe;IAEjB;GACD;GAEA,IAAI,EAAY,YAAY,YAAY;IACvC,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;IAE9B,IAAM,IAAS,EAAY,QAAQ,MAAM;IAEzC,AAAI,KAQH,EAN6C,GAAQ,yBAAuB,CAAC,CAC3E,OAAO,EAAsB,GAAQ,wBAAsB,CAAC,CAAC,CAC7D,MAAM,MACC,EAAU,CAAc,CAGjC,CAAA,EAAgB,MAAM;GAExB;EAjBA;CAkBD,CAAC,GAKD,SAAS,iBAAiB,SAAS,SAAU,GAAO;EAKnD,IAJI,EAAE,EAAM,kBAAkB,gBAI1B,CAFgB,EAAM,OAET,UAAU,SAAS,mBAAmB,GAAG;EAE1D,IAAI,GACA,IAAY;EAchB,IARA,EAJ0E,UAAU,YAAY,CAAC,CAAC,QAAQ,MAClG,EAAU,CAAe,CAGjC,CAAA,CAAwB,SAAS,MAAoB;GACpD,IAAM,IAAS,OAAO,OAAO,iBAAiB,CAAe,CAAC,CAAC,MAAM;GACjE,IAAS,MAEb,IAA+B,GAC/B,IAAY;EACb,CAAC,GAEG,GAA8B;GACjC,IAAM,IAAW,EAA6B,cAAc,oBAAoB;GAEhF,EAAE,CAAQ,CAAC,CAAC,OAAO,OAAO;EAC3B;CACD,CAAC,GAED,OAAO,iBAAiB,UAAU,EAAe,eAAe,GAChE,EAAe,gBAAgB;AAChC;AMtMA,EAAK,kBAAkB,ymWAAG,GAC1B,EAAK,kBAAkB,+0BAAM,GAAG,GAChC,EAAK,kBAAkB,ikFAAO,IAAI,GAClC,EAAK,kBAAkB,kJAAS,GAChC,EAAK,kBAAkB,wDAAa,IAAI;AAExC,IAAI,GACA,IAAW,IAKT,KAAc,MACZ,CAAC,CAAC,KAAM,OAAO,KAAO,YAAY,YAAY,GAGhD,UAAa;CAqClB,AApCA,EAAE,OAAO,EAAE,GAAG,OAAO,UAAU,SAAS;EACvC,QAAQ,MAAW;GAGlB,AAFA,EAAE,OAAO,MAAM,GAEf,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM;EAStC;EACA,SAAS,MAAW,EAAS,EAAE,MAAM;EACrC,OAAO,MAAW,EAAO,EAAE,MAAM;EACjC,QAAQ,MAAW,EAAQ,EAAE,MAAM;EACnC,OAAO;EACP,WAAW;EACX,eAAe;EACf,OAAO;EACP,WAAW;CACZ,CAAC,GAED,EAAE,GAAG,OAAO,UAAU,iBAAiB,EAAE,MAEzC,EAAE,GAAG,OAAO,UAAU,qBAAqB,EAAE,GAAG,OAAO,UAAU,YACjE,EAAE,GAAG,OAAO,UAAU,aAAa,WAAY;EAC9C,KAAK,mBAAmB;EAExB,IAAM,IAAU,EAAE,KAAK,OAAO;EAC9B,EAAQ,QAAQ,oBAAoB,CAAC,CAAO,CAAC;CAC9C,GAEA,EAAuB,GAEvB,IAAW;AACZ,GAKM,KAAiB,MAA0B;CAChD,IAAM,IAGF,CAAC;CAKL,OAHI,EAAS,SAAS,UAAU,YAAS,EAAQ,QAAQ,KACrD,EAAS,SAAS,aAAU,EAAQ,WAAW,KAAK,MAAM,EAAS,QAAQ,QAAQ,IAEhF;AACR,GAEM,KAAmB,MACG,SAAS,eAAe,CAAE,GAMhD,IAAgB,OAAO,GAAkB,GAAmB,MAA0B;CAC3F,IAAI,CAAC,EAAS,WAAW,SAAS,GAAG;CAErC,IAAM,IAAS,EAAgB,CAAQ;CAClC,UAEL,EAAO,SAAS,QAAQ,IACpB,MAAa,KAAA,MAAW,EAAO,WAAW,QAAQ,IAClD,MAAiB,KAAA,MAAW,EAAO,eAAe,QAAQ,IAE9D,MAAM,EAAS,GAEX,IAAc;EACjB,IAAM,IAAW,EAAgB,CAAQ;EACzC,IAAI,CAAC,GAAU;EAIf,AAFoB,EAAS,iBAAiB,oBAAoB,EAAa,GAE1E,CAAA,CAAY,UAChB,MAAM,QAAgB,CAAC,EAAS,iBAAiB,oBAAoB,EAAa,GAAG,CAAC,CAAC,MAAM;CAE/F;AACD,GAKM,KAAY,MAA0B;CAC3C,IAAM,IAAkB,EAAsB,GAAU,aAAa;CACrE,EAAgB,SAAS,MAAiB;EACzC,EAAoB,CAAY;CACjC,CAAC,GAEI,EAAgB,WAErB,EAAgB,MAAM,oBAAoB,CAAQ,GAElD,EAAU,CAAQ;AACnB,GAKM,KAAa,MAA0B;CAC5C,EAAE,CAAQ,CAAC,CAAC,GAAG,4BAA4B,qBAAqB,GAAI,MAAW;EAE9E,IAAM,IAAU,EAAO;EAIvB,EADuC,YAAY,CACnD,CAAA,GAAiB,EAAE,EAAE,QAAQ,CAAO;CACrC,CAAC;AACF,GAKM,IAAS,OAAO,MAA0B;CAC/C,IAAM,IAAW,EAAS,QAAQ,gBAC5B,IAAO,EAAS,QAAQ,OAAO,EAAS,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAEpE,IAAK,OAAO;CAElB,EAAK,MAAM,0BAA0B,IAAI,cAAc,aAAa;CAIpE,IAAM,IAFK,OAAO,aAEU;CAM5B,AALI,SAAS,gBAAgB,eAAe,OAAO,gBAAa,SAAS,cAAc,MAAM,CAAC,CAAE,MAAM,cAAc,IAAiB,OAErI,EAAgB,GAGhB,EAD+B,EAAS,aAAa,IAAI,CACzD,CAAA,EAAQ,OAAO,QAAQ,GAAU,CAAI;AACtC,GAKM,IAAU,OAAO,MAA0B;CAChD,IAAM,IAAW,EAAS,aAAa,IAAI,GACrC,IAAW,EAAS,QAAQ;CAElC,IAAI,GAAU;EACb,IAAM,IAAW;GAChB,KAAK,EAAgB,MAAM;IAC1B,UAAU,IAAW;EACvB;EAOA,AANA,EAAS,UAAU,KAAY,OAE3B,EAAgB,MAAM,cAAc,KAAK,EAAgB,MAAM,cAAc,OAChF,EAAS,MAAM,OAGhB,EAAS,GAAU,EAAK;CACzB;CAYA,AAVkC,EAAsB,UAAU,oBAAoB,CAAC,CAAC,QAAQ,MACxF,EAAU,CAAE,CAGf,CAAA,CAA0B,WAC9B,EAAK,MAAM,0BAA0B,OAAO,YAAY,GAExD,SAAS,cAAc,MAAM,CAAC,CAAE,MAAM,cAAc,KAGrD,EAAE,CAAQ,CAAC,CAAC,QAAQ,kBAAkB,CAAC,EAAE,CAAQ,CAAC,CAAC;CAEnD,IAAM,IAAS,EAAgB,CAAQ;CAavC,AAXI,MACH,EAAO,SAAS,QAAQ,IACxB,EAAO,OAAO,SAAS,CAAQ,GAE/B,AAEC,EAAO,iBADP,EAAO,YAAY,EAAO,OAAO,CAAQ,GACpB,KAAA,KAKvB,OAAO,cAAc,IAAI,MAAM,QAAQ,CAAC;AACzC,GAKM,UAAwB;CAO7B,EANmD,UAAU,YAAY,CAAC,CAAC,QAAQ,MAC3E,EAAU,CAAE,KAAK,EAAG,cAA2B,6BAA6B,CACnF,CAAC,CAAC,KAAK,MACA,EAAG,cAA2B,6BAA6B,CAGnE,CAAA,CAAqB,SAAS,MAAa;EAE1C,IAAI,CADiB,EAAS,cAA+B,aACxD,GAAc;EAEnB,IAAM,IAAkB,EAAS,QAAQ,YAAY,GAE/C,IAAU,EAAc,CAAQ;EAQtC,AANA,EAAQ,aAAa,EAAE,IAAI,OAAO,GAGlC,EADkB,CAClB,CAAA,CAAQ,OAAO,UAAU,CAAO,GAEhC,EAAgB,UAAU,OAAO,YAAY,IACxC,EAAgB,gBAAgB,KAAK,OAAO,eAAa,EAAgB,UAAU,IAAI,YAAY;CACzG,CAAC;AACF,GAKM,IAAc,OAAO,GAAwB,MAAkC;CAEpF,IAAM,IAAc,qCAAO,KAAK,CAAc;CAC9C,IAAI,GAAa;EAChB,IAAM,IAAW,EAAY,IACvB,IAAW,EAAY,IACvB,IAAa,EAAY,IAE3B,IAAiB,CAAC;EAGtB,AAFI,MAAY,IAAO,EAAW,MAAM,GAAG,IAE3C,MAAM,EAAO,GAAU,GAAU,GAAM,CAAa;CACrD;AACD,GAUM,IAAS,OACd,GACA,GACA,GACA,GACA,MACI;CAaJ,AAZK,KACJ,MAAM,IAAI,SAAe,GAAS,MAAY;EAC7C,IAAM,IAAQ,kBAAkB;GAC1B,MAEL,cAAc,CAAK,GAEnB,EAAQ;EACT,GAAG,EAAE;CACN,CAAC,GAGF,MAAM,EAAS;CAEf,IAAI;CAUJ,IATI,OAAQ,KAAwB,YAC/B,EAAW,CAAkB,MAAG,IAAqB,IAAqB,KAE9E,IAAW,KAEX,IAAW,EAAgB,CAAkB,GAI1C,CAAC,KAAY,OAAO,KAAuB,YAAY,EAAgB,MAAM,SAChF,MAAM,EAAgB,MAAM,KAAK,CAAkB,GAEnD,IAAW,EAAgB,CAAkB,GACzC,CAAC,IACJ,MAAU,MAAM,uBAAuB,CAAkB;CAI3D,IAAI,CAAC,GAAU;CAEf,MAAM,EAAW,GAAU,GAAU,GAAM,CAAa;CAExD,IAAM,IAAU,EAAE,CAAQ;CAE1B,IAAI,GAAU,UAAU,SAAS,mBAAmB,GAiBnD,EAAQ,OAAO,MAAM;MACf;EACN,IAAM,IAAU,EAAc,CAAQ;EAEtC,EAAQ,OAAO,CAAO;CACvB;CAEA,AAAI,KAAU,EAAS,CAAO;AAC/B,GAEM,IAAa,OAAO,GAA6C,GAAmB,GAAiB,MAAkC;CAY5I,AAVI,EAAW,CAAQ,MAAG,IAAW,IAAW,KAE5C,MAAa,KAAA,MAAW,IAAW,EAAS,QAAQ,iBACpD,MAAS,KAAA,MAAW,IAAO,EAAS,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,IAEjE,MAAa,EAAS,QAAQ,kBACjB,EAAe,CAC3B,KAAS,MAAM,EAAM,GAAG,GAG7B,MAAM,EAAc,EAAS,aAAa,IAAI,GAAa,KAAA,GAAW,CAAQ;CAE9E,IAAM,IAAgB,EAA6C,GAAU,cAAc,GACrF,IAAiB,EAAc,QAA2B,GAAK,MAAiB;EACrF,IAAM,IAAgB,EAAa,cAA+B,kBAAkB;EAKpF,OAJI,KACH,EAAI,KAAK,CAAa,GAGhB;CACR,GAAG,CAAC,CAAC,GAEC,IAAc,EAAc,QAA2B,GAAK,MAAiB;EAClF,IAAM,IAAa,EAAa,cAA+B,6BAA6B,EAAS,GAAG;EAKxG,OAJI,KACH,EAAI,KAAK,CAAU,GAGb;CACR,GAAG,CAAC,CAAC,GAEC,IAAa,EAAK,KAAK,GAAG;CAOhC,IALI,MAAkB,KAAA,MACrB,IAAgB,SACX,EAAY,EAAE,EAAE,QAAQ,SAAS,MAAM,EAAe,EAAE,EAAE,QAAQ,SAAS,OAAI,IAAgB,UAGjG,CAAC,EAAY,QAAQ;CAMzB,IAJA,EAAS,QAAQ,iBAAiB,GAClC,EAAS,QAAQ,OAAO,GAAM,KAAK,GAAG,KAAK,IAGvC,EAAY,EAAE,CAAC,UAAU,SAAS,QAAQ,GAAG;EAWhD,AAVI,EAAY,EAAE,CAAC,QAAQ,iBAAiB,KAC3C,EAAY,SAAS,MAAe;GACnC,EAAW,QAAQ,eAAe;EACnC,CAAC,GAMF,EAAmB,GAAU,GAAa,GAAU,CAAI,GACxD,EAAkB,GAAU,GAAa,GAAU,CAAI;EAEvD;CACD;CAMA,AAJA,EAAY,SAAS,MAAe;EACnC,EAAW,QAAQ,eAAe;CACnC,CAAC,GAED,EAAe,SAAS,MAAkB;EACzC,AAAI,EAAc,cAAc,oBAAoB,KACnD,EAAe,MAAM,EAAc,cAAc,oBAAoB,CAAE;CAEzE,CAAC;CAED,IAAM,IAAkB,EAAY,EAAE,CAAC,QAA4B,YAAY;CAM/E,QAJI,KAAmB,CAAC,EAAU,CAAe,MAAG,IAAgB,SAC/D,EAAe,WAAQ,IAAgB,SACxC,EAAU,EAAY,EAAE,MAAG,IAAgB,SAEvC,GAAR;EACC,KAAK;GAUJ,AATA,EAAY,SAAS,MAAe;IACnC,IAAM,IAAW,EAAW,YAAY,cAAc,kBAAkB;IACxE,AAAI,KAAU,EAAW,YAAY,aAAa,GAAY,CAAQ;GACvE,CAAC,GAED,EAAe,SAAS,MAAkB;IACzC,EAAc,UAAU,IAAI,mBAAmB,SAAS;GACzD,CAAC,GAED,EAAY,SAAS,MAAe;IACnC,EAAW,UAAU,IAAI,kBAAkB,SAAS;GACrD,CAAC;GAED;EAED,KAAK;GAUJ,AATA,EAAY,SAAS,MAAe;IACnC,IAAM,IAAW,EAAW,YAAY,cAAc,kBAAkB;IACxE,AAAI,KAAU,EAAW,YAAY,aAAa,GAAY,EAAS,WAAW;GACnF,CAAC,GAED,EAAe,SAAS,MAAkB;IACzC,GAAe,UAAU,IAAI,gBAAgB;GAC9C,CAAC,GAED,EAAY,SAAS,MAAe;IACnC,EAAW,UAAU,IAAI,iBAAiB;GAC3C,CAAC;GAED;CAEF;CAcA,IAZA,EAAS,aAAa,oBAAoB,CAAQ,GAElD,EAAe,SAAS,MAAkB;EACzC,EAAc,UAAU,OAAO,QAAQ;CACxC,CAAC,GAED,EAAY,SAAS,MAAe;EACnC,EAAW,UAAU,IAAI,QAAQ;CAClC,CAAC,GAED,EAAmB,GAAU,GAAa,GAAU,CAAI,GAEpD,GAAe;EAClB,EAAS,UAAU,IAAI,eAAe;EAEtC,IAAM,IAAQ,OAAO,OAAO,iBAAiB,EAAY,EAAE,CAAC,CAAC,kBAAkB,QAAQ,KAAK,EAAE,CAAC,IAAI;EAEnG,IAAsB,WAAW,WAAY;GAG5C,AAFA,EAAc,EAAS,aAAa,IAAI,GAAG,GAAU,EAAE,GACvD,EAAe,CAAQ,GACvB,EAAkB,GAAU,GAAa,GAAU,CAAI;EACxD,GAAG,CAAK;CACT,OAEC,AADA,MAAM,EAAc,EAAS,aAAa,IAAI,GAAG,GAAU,EAAE,GAC7D,EAAkB,GAAU,GAAa,GAAU,CAAI;AAEzD,GAKM,KAAc,MAA0B;CAuB7C,IAAM,IAtBgB,EAA6C,GAAU,cACtD,CAAA,CAAc,QAA2B,GAAK,MAAiB;EACrF,IAAM,IAAgB,EAAa,cAA+B,kBAAkB;EAMpF,OAJI,KACH,EAAI,KAAK,CAAa,GAGhB;CACR,GAAG,CAAC,CAEgB,CAAA,CAAe,QAA2B,GAAK,MAAkB;EACpF,IAAI,IAAa,EAAc;EAC/B,OAAO,KAAc,CAAC,EAAW,aAAa,gBAAgB,IAC7D,IAAa,EAAW;EAKzB,OAFI,KAAY,EAAI,KAAK,CAAU,GAE5B;CACR,GAAG,CAAC,CAEkB,CAAA,CAAY,EAAE,EAAG,QAAQ;CAE/C,AAAI,IACH,EAAgB,GAAU,GAAc,KAAA,GAAW,MAAM,IAGzD,EADkB,CAClB,CAAA,CAAQ,OAAO,OAAO;AAExB,GAKM,oBAA2B,IAAI,IAAI,GACnC,KAAsB,GAAuB,GAA4B,GAAkB,MAAmB;CAGnH,IAAM,IAAW,EAAS,aAAa,IAAI,IAAI,EAAQ,EAAE,CAAC,QAAQ,WAAW,IAAW,EAAK,KAAK;CAE9F,EAAyB,IAAI,CAAQ,MACzC,EAAyB,IAAI,CAAQ,GAErC,WAAW,WAAY;EAGtB,AAFA,EAAyB,OAAO,CAAQ,GAExC,EAAE,CAAQ,CAAC,CAAC,QAAQ,kBAAkB;GAAC,EAAE,CAAQ;GAAG,EAAE,CAAO;GAAG;GAAU;EAAI,CAAC;CAChF,CAAC;AACF,GAKM,KAAqB,GAAuB,GAA4B,GAAkB,MAAmB;CAClH,WAAW,WAAY;EACtB,EAAE,CAAQ,CAAC,CAAC,QAAQ,iBAAiB;GAAC,EAAE,CAAQ;GAAG,EAAE,CAAO;GAAG;GAAU;EAAI,CAAC;CAC/E,CAAC;AACF,GAKM,KAAe,OAChB,EAAW,CAAQ,MAAG,IAAW,IAAW,KAEzC,EAAS,UAAU,SAAS,eAAe,IAQ7C,KAAkB,MAA0B;CACjD,IAAI,CAAC,EAAY,CAAQ,GAAG,OAAO;CAEnC,aAAa,CAAmB;CAEhC,IAAM,IAAgB,EAAsB,GAAU,cAAc,GAE9D,IAAW,EAAS,QAAQ;CAalC,OAZA,EAAS,UAAU,OAAO,eAAe,GAEzC,EAAc,SAAS,MAAiB;EACvC,EAAa,iBAAiB,2BAA2B,CAAC,CAAC,SAAS,MAAO;GAC1E,EAAG,UAAU,OAAO,kBAAkB,mBAAmB,WAAW,QAAQ;EAC7E,CAAC;CACF,CAAC,GAED,EAAc,SAAS,MAAiB;EACvC,EAAa,cAAc,6BAA6B,EAAS,GAAG,CAAC,EAAE,UAAU,IAAI,QAAQ;CAC9F,CAAC,GAEM;AACR,GAuDa,IAAiB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA,aA5CmB,GAAsD,GAAoB,MAAsB;EACnH,AAAI,EAAW,CAAO,MAAG,IAAU,EAAQ,QAAQ;EAEnD,IAAM,IAAmB,EAAQ,QAA2B,GAAK,OAC5D,EAAO,aAAa,gBAAgB,KAAK,EAAU,CAAM,KAAG,EAAI,KAAK,CAAM,GAExE,IACL,CAAC,CAAC;EAEL,AAAI,KACC,MAAa,KAAA,KAChB,EAAiB,SAAS,MAAoB;GAC7C,EAAgB,MAAM,YAAY,6BAA6B,IAAW,GAAG;EAC9E,CAAC,GAGF,EAAiB,SAAS,MAAoB;GAC7C,EAAgB,UAAU,IAAI,aAAa;EAC5C,CAAC,MAED,EAAiB,SAAS,MAAoB;GAC7C,EAAgB,UAAU,OAAO,aAAa;EAC/C,CAAC,GAED,EAAiB,SAAS,MAAoB;GAC7C,EAAgB,MAAM,YAAY,6BAA6B,KAAK;EACrE,CAAC;CAEH;CAiBC,YAfkB,OACd,EAAW,CAAM,MAAG,IAAS,IAAS,KAEnC,EAAO,UAAU,SAAS,aAAa;CAa9C;CACA,gBA7DuB,GAAkB;EACzC,IAAM,IAAW,EAAgB,CAAQ;EACzC,IAAI,CAAC,GAAU;EAEf,IAAM,IAAU,EAAE,CAAQ;EAErB,EAAQ,OAAO,UAAU,KAE9B,EAAQ,OAAO,OAAO;CACvB;AAqDA;AAEA,EAAK"}
export interface Props {
/**
* Заголовок кнопки закрытия
*/
titleClose: string;
}
export interface Slots {
/**
* Текст сообщения
*/
default(props: Record<string, unknown>): any;
}
export interface Emits {
(e: 'close'): void;
}
+1
-1

@@ -1,1 +0,1 @@

.top-menu{--scroll-thumb-color:var(--color-line-1);--scroll-thumb-color-hover:var(--color-line-2);--scroll-thumb-color-active:var(--color-line-3);background:var(--content-background-color);align-items:flex-start;gap:var(--top-gap-2);scrollbar-width:none;overscroll-behavior-x:contain;max-width:100%;display:flex;overflow-x:auto}.top-menu::-webkit-scrollbar{display:none}.top-menu .top-menu_item{--top-button-color:var(--color-text-2);flex-shrink:0;min-width:0;max-width:200px;margin:0;outline-offset:-2px!important}.top-menu .top-menu_item[data-top-icon]{--top-icon-color:var(--color-text-2)}.top-menu_selectAll{background:var(--color-layout-front-1);border-left:1px solid var(--color-line-1);padding-left:var(--top-padding-1);box-shadow:var(--color-layout-front-1) var(--top-padding-2) 0px;position:sticky;right:0}.top-menu.top-style_default .top-menu_item{--top-forms-radius:0;--top-forms-border-color:transparent;--top-forms-border-width:2px;filter:none;box-shadow:none;border:none;border-bottom:var(--top-forms-border-width) solid var(--top-forms-border-color);background:0 0}.top-style_default>.top-menu_item>[data-top-badge]{margin-top:0}.top-menu.top-style_default .top-menu_item:hover{--top-icon-color:var(--color-text-1);--top-button-color:var(--color-text-1);--top-forms-border-color:var(--color-line-2)}.top-menu.top-style_default .top-menu_item:active,.top-menu.top-style_default .top-menu_item.top-active{--top-icon-color:var(--color-text-primary);--top-button-color:var(--color-text-1);--top-forms-border-color:var(--color-line-primary-1)}.top-menu.top-style_default .top-menu_selectAll{padding-left:var(--top-padding-2)}.top-menu.top-style_bar{border-radius:var(--top-radius-3);border:1px solid var(--color-line-2);padding:var(--top-padding-1);gap:3px}.top-menu.top-style_bar .top-menu_item{--top-button-background-color-hover:var(--color-layer-1);--top-button-background-color-active:var(--color-layer-2);--top-button-background-color-selected:var(--color-layer-primary-1);position:relative}.top-menu.top-style_bar .top-menu_item:hover{--top-icon-color:var(--color-text-1);--top-button-color:var(--color-text-1)}.top-menu.top-style_bar .top-menu_item.top-active{--top-icon-color:var(--color-text-primary);--top-button-color:var(--color-text-primary)}.top-menu.top-style_bar .top-menu_item:not(:first-child):not(.top-active):not(:hover):after{content:"";background:var(--color-line-1-opacity);width:1px;height:60%;display:block;position:absolute;left:-2px}.top-menu.top-style_bar .top-menu_item.top-active+.top-menu_item:after,.top-menu.top-style_bar .top-menu_item:hover+.top-menu_item:after{content:none!important}.top-selector2_itemMulti{box-sizing:border-box;padding-left:var(--top-padding-2);border-radius:var(--top-radius-1,4px);border:1px solid var(--color-line-primary-1);background:var(--color-layer-primary-2);max-width:100%;min-height:22px;color:var(--color-text-1);align-items:center;gap:var(--top-gap-1);flex-grow:0;display:inline-flex}.top-selector2_itemMultiDelete{--top-icon-size:14px;--top-icon-width:18px;--top-icon-color:var(--color-text-1);cursor:pointer;justify-content:center;align-items:center;height:100%;display:flex}.top-selector2_itemMultiDelete:hover{background:var(--color-layer-primary-2)}@media screen and (min-width:900px){.top-selector2.top-active .top-selector2_itemMultiDelete{z-index:calc(var(--top-popup-z-index) + 1)}}.top-selector2{width:180px}.top-selector2::placeholder,.top-selector2_placeholder{color:var(--color-text-2)}.top-selector2_placeholder{padding-left:var(--top-padding-1)}.top-selector2.top-as-input{padding:var(--top-padding-1) var(--top-forms-padding)}.top-selector2.top-selector2-multiselect{width:auto;padding:var(--top-padding-1);flex-grow:1}.top-selector2.top-active{--top-forms-border-color:var(--top-forms-border-color-hover)}.top-selector2_searchWidget{gap:var(--top-gap-2);display:flex}.top-selector2_activeItems{gap:var(--top-padding-1);flex-wrap:wrap;max-width:100%;display:flex}.top-selector2_activeName{font-size:var(--top-font-size);white-space:nowrap}.top-changer-selector{width:auto;padding:var(--top-padding-1);margin:calc(0px - var(--top-padding-1));transform:translate(0)}.top-selector2.top-button{justify-content:start}.top-selector2.top-input_input~.top-changer-selector{transform:translate(-52px)}.top-selector2.top-as-selector{padding-right:calc(var(--top-selector-arrow-width) + var(--top-padding-2))}.top-editArea{--top-editArea-bottom:env(keyboard-inset-height,0px);--top-editArea-offset-bottom:0px;flex-direction:column;gap:6px;display:flex}.top-editArea_caption{font-size:12px}.top-editArea_form{flex-direction:column}.top-textarea{width:100%}.top-editArea_element.top-textarea_textarea{--top-forms-border-width:0px;outline:none;animation:none}.top-editArea_footer{padding:var(--top-forms-padding);justify-content:flex-end;align-self:flex-end;gap:var(--top-forms-padding);min-height:32px;display:flex}.top-editArea-attachedToKeyboard{background:var(--top-forms-background-color);bottom:calc(var(--top-editArea-offset-bottom) + var(--top-editArea-bottom));z-index:2;transition:bottom var(--transition-fast);gap:0;position:fixed;left:0;right:0}.top-editArea-attachedToKeyboard .top-editArea_form{border:none;border-top:1px solid var(--top-forms-border-color);border-radius:0}.top-editArea-attachedToKeyboard .top-editArea_title{cursor:pointer;border-top:1px solid var(--color-line-2-opacity);padding:var(--top-forms-padding)}.top-editArea-attachedToKeyboard .top-editArea_footer>[data-top-icon]{border-radius:100%}@media screen and (max-width:900px){.top-editArea_form{flex-direction:row}}.top-editInput{align-items:flex-end;gap:var(--top-gap-1);flex-grow:1;width:220px;display:flex}.top-editInput .top-input{width:unset;flex-grow:1}.top-optionGroup{-webkit-user-select:none;user-select:none;box-sizing:border-box;background-color:var(--color-layout-middle);height:var(--top-forms-base-height);border-radius:8px;align-items:flex-start;gap:2px;padding:2px;display:flex}.top-optionGroup_item{cursor:pointer;box-sizing:border-box;height:calc(var(--top-forms-base-height) - 4px);padding:1px var(--top-padding-2);color:var(--color-text-2);white-space:nowrap;justify-content:center;align-items:center;gap:var(--top-gap-1);border-radius:6px;flex-grow:1;font-weight:400;display:flex}.top-optionGroup_item:hover{background-color:var(--color-layout-front-1);box-shadow:0 4px 32px #0409541a,0 0 4px #04095414}.top-optionGroup_item-selected{color:var(--color-text-1);background-color:var(--color-bg-lightning-1);box-shadow:0 4px 32px #0409541a,0 0 4px #04095414}.top-optionGroup_item>.top-forms-optionLabel{flex-grow:0}.top-optionGroup-showIndicator_0>.top-optionGroup_item{justify-content:center}.top-optionGroup-showIndicator_0>.top-optionGroup_item:has(:focus-visible){outline:2px solid var(--color-bg-primary-2);outline-offset:-1px}.top-optionGroup-showIndicator_1>.top-optionGroup_item{justify-content:flex-start;padding:1px 3px}.top-optionGroup-showIndicator_0>.top-optionGroup_item>.top-forms-option{opacity:0;width:0;height:0;position:absolute}.top-optionGroup_item>.top-forms-option{order:-1}.top-info{--top-icon-width:var(--top-icon-size);border-radius:var(--top-forms-radius);box-sizing:border-box;min-height:var(--top-forms-base-height);padding:var(--top-padding-1) var(--top-padding-2);justify-content:space-between;align-items:center;gap:var(--top-gap-2);flex-grow:5;display:flex}.top-info_text{flex-grow:1}.top-info_value{font-weight:700}.top-info.top-size_default{border-radius:var(--top-radius-3);padding:var(--top-padding-4)}.top-info-styling_default{--top-icon-color:var(--color-text-2);background:var(--color-layer-1)}.top-info-styling_info{--top-icon-color:var(--color-text-primary);background:var(--color-layer-primary-1)}.top-info-styling_warning{--top-icon-color:var(--color-text-warning);background:var(--color-layer-warning-1)}.top-info-styling_negative{--top-icon-color:var(--color-text-negative);background:var(--color-layer-negative-1)}.top-policy{box-sizing:border-box;box-shadow:var(--top-shadow-b);border-radius:var(--top-radius-4);background:var(--color-bg-lightning-1);width:600px;padding:var(--top-padding-4);right:var(--top-gap-10);bottom:var(--top-gap-10);gap:var(--top-gap-4);z-index:10000;flex-direction:column;display:flex;position:fixed}.top-policy_title{font-size:24px;font-weight:700}.top-policy_description{font-size:14px}@media screen and (max-width:900px){.top-policy{width:100%;right:0;bottom:calc(var(--top-gap-5) + var(--toolbar-height,0px))}}
.top-menu{--scroll-thumb-color:var(--color-line-1);--scroll-thumb-color-hover:var(--color-line-2);--scroll-thumb-color-active:var(--color-line-3);background:var(--content-background-color);align-items:flex-start;gap:var(--top-gap-2);scrollbar-width:none;overscroll-behavior-x:contain;max-width:100%;display:flex;overflow-x:auto}.top-menu::-webkit-scrollbar{display:none}.top-menu .top-menu_item{--top-button-color:var(--color-text-2);flex-shrink:0;min-width:0;max-width:200px;margin:0;outline-offset:-2px!important}.top-menu .top-menu_item[data-top-icon]{--top-icon-color:var(--color-text-2)}.top-menu_selectAll{background:var(--color-layout-front-1);border-left:1px solid var(--color-line-1);padding-left:var(--top-padding-1);box-shadow:var(--color-layout-front-1) var(--top-padding-2) 0px;position:sticky;right:0}.top-menu.top-style_default .top-menu_item{--top-forms-radius:0;--top-forms-border-color:transparent;--top-forms-border-width:2px;filter:none;box-shadow:none;border:none;border-bottom:var(--top-forms-border-width) solid var(--top-forms-border-color);background:0 0}.top-style_default>.top-menu_item>[data-top-badge]{margin-top:0}.top-menu.top-style_default .top-menu_item:hover{--top-icon-color:var(--color-text-1);--top-button-color:var(--color-text-1);--top-forms-border-color:var(--color-line-2)}.top-menu.top-style_default .top-menu_item:active,.top-menu.top-style_default .top-menu_item.top-active{--top-icon-color:var(--color-text-primary);--top-button-color:var(--color-text-1);--top-forms-border-color:var(--color-line-primary-1)}.top-menu.top-style_default .top-menu_selectAll{padding-left:var(--top-padding-2)}.top-menu.top-style_bar{border-radius:var(--top-radius-3);border:1px solid var(--color-line-2);padding:var(--top-padding-1);gap:3px}.top-menu.top-style_bar .top-menu_item{--top-button-background-color-hover:var(--color-layer-1);--top-button-background-color-active:var(--color-layer-2);--top-button-background-color-selected:var(--color-layer-primary-1);position:relative}.top-menu.top-style_bar .top-menu_item:hover{--top-icon-color:var(--color-text-1);--top-button-color:var(--color-text-1)}.top-menu.top-style_bar .top-menu_item.top-active{--top-icon-color:var(--color-text-primary);--top-button-color:var(--color-text-primary)}.top-menu.top-style_bar .top-menu_item:not(:first-child):not(.top-active):not(:hover):after{content:"";background:var(--color-line-1-opacity);width:1px;height:60%;display:block;position:absolute;left:-2px}.top-menu.top-style_bar .top-menu_item.top-active+.top-menu_item:after,.top-menu.top-style_bar .top-menu_item:hover+.top-menu_item:after{content:none!important}.top-selector2_itemMulti{box-sizing:border-box;padding-left:var(--top-padding-2);border-radius:var(--top-radius-1,4px);border:1px solid var(--color-line-primary-1);background:var(--color-layer-primary-2);max-width:100%;min-height:22px;color:var(--color-text-1);align-items:center;gap:var(--top-gap-1);flex-grow:0;display:inline-flex}.top-selector2_itemMultiDelete{--top-icon-size:14px;--top-icon-width:18px;--top-icon-color:var(--color-text-1);cursor:pointer;justify-content:center;align-items:center;height:100%;display:flex}.top-selector2_itemMultiDelete:hover{background:var(--color-layer-primary-2)}@media screen and (min-width:900px){.top-selector2.top-active .top-selector2_itemMultiDelete{z-index:calc(var(--top-popup-z-index) + 1)}}.top-selector2{width:180px}.top-selector2::placeholder,.top-selector2_placeholder{color:var(--color-text-2)}.top-selector2_placeholder{padding-left:var(--top-padding-1)}.top-selector2.top-as-input{padding:var(--top-padding-1) var(--top-forms-padding)}.top-selector2.top-selector2-multiselect{width:auto;padding:var(--top-padding-1);flex-grow:1}.top-selector2.top-active{--top-forms-border-color:var(--top-forms-border-color-hover)}.top-selector2_searchWidget{gap:var(--top-gap-2);display:flex}.top-selector2_activeItems{gap:var(--top-padding-1);flex-wrap:wrap;max-width:100%;display:flex}.top-selector2_activeName{font-size:var(--top-font-size);white-space:nowrap}.top-changer-selector{width:auto;padding:var(--top-padding-1);margin:calc(0px - var(--top-padding-1));transform:translate(0)}.top-selector2.top-button{justify-content:start}.top-selector2.top-input_input~.top-changer-selector{transform:translate(-52px)}.top-selector2.top-as-selector{padding-right:calc(var(--top-selector-arrow-width) + var(--top-padding-2))}.top-editArea{--top-editArea-bottom:env(keyboard-inset-height,0px);--top-editArea-offset-bottom:0px;flex-direction:column;gap:6px;display:flex}.top-editArea_caption{font-size:12px}.top-editArea_form{flex-direction:column}.top-textarea{width:100%}.top-editArea_element.top-textarea_textarea{--top-forms-border-width:0px;outline:none;animation:none}.top-editArea_footer{padding:var(--top-forms-padding);justify-content:flex-end;align-self:flex-end;gap:var(--top-forms-padding);min-height:32px;display:flex}.top-editArea-attachedToKeyboard{background:var(--top-forms-background-color);bottom:calc(var(--top-editArea-offset-bottom) + var(--top-editArea-bottom));z-index:2;transition:bottom var(--transition-fast);gap:0;position:fixed;left:0;right:0}.top-editArea-attachedToKeyboard .top-editArea_form{border:none;border-top:1px solid var(--top-forms-border-color);border-radius:0}.top-editArea-attachedToKeyboard .top-editArea_title{cursor:pointer;border-top:1px solid var(--color-line-2-opacity);padding:var(--top-forms-padding)}.top-editArea-attachedToKeyboard .top-editArea_footer>[data-top-icon]{border-radius:100%}@media screen and (max-width:900px){.top-editArea_form{flex-direction:row}}.top-editInput{align-items:flex-end;gap:var(--top-gap-1);flex-grow:1;width:220px;display:flex}.top-editInput .top-input{width:unset;flex-grow:1}.top-optionGroup{-webkit-user-select:none;user-select:none;box-sizing:border-box;background-color:var(--color-layout-middle);height:var(--top-forms-base-height);border-radius:8px;align-items:flex-start;gap:2px;padding:2px;display:flex}.top-optionGroup_item{cursor:pointer;box-sizing:border-box;height:calc(var(--top-forms-base-height) - 4px);padding:1px var(--top-padding-2);color:var(--color-text-2);white-space:nowrap;justify-content:center;align-items:center;gap:var(--top-gap-1);border-radius:6px;flex-grow:1;font-weight:400;display:flex}.top-optionGroup_item:hover{background-color:var(--color-layout-front-1);box-shadow:0 4px 32px #0409541a,0 0 4px #04095414}.top-optionGroup_item-selected{color:var(--color-text-1);background-color:var(--color-bg-lightning-1);box-shadow:0 4px 32px #0409541a,0 0 4px #04095414}.top-optionGroup_item>.top-forms-optionLabel{flex-grow:0}.top-optionGroup-showIndicator_0>.top-optionGroup_item{justify-content:center}.top-optionGroup-showIndicator_0>.top-optionGroup_item:has(:focus-visible){outline:2px solid var(--color-bg-primary-2);outline-offset:-1px}.top-optionGroup-showIndicator_1>.top-optionGroup_item{justify-content:flex-start;padding:1px 3px}.top-optionGroup-showIndicator_0>.top-optionGroup_item>.top-forms-option{opacity:0;width:0;height:0;position:absolute}.top-optionGroup_item>.top-forms-option{order:-1}.top-info{--top-icon-width:var(--top-icon-size);border-radius:var(--top-forms-radius);box-sizing:border-box;min-height:var(--top-forms-base-height);padding:var(--top-padding-1) var(--top-padding-2);justify-content:space-between;align-items:center;gap:var(--top-gap-2);flex-grow:5;display:flex}.top-info_text{flex-grow:1}.top-info_value{font-weight:700}.top-info.top-size_default{border-radius:var(--top-radius-3);padding:var(--top-padding-4)}.top-info-styling_default{--top-icon-color:var(--color-text-2);background:var(--color-layer-1)}.top-info-styling_info{--top-icon-color:var(--color-text-primary);background:var(--color-layer-primary-1)}.top-info-styling_warning{--top-icon-color:var(--color-text-warning);background:var(--color-layer-warning-1)}.top-info-styling_negative{--top-icon-color:var(--color-text-negative);background:var(--color-layer-negative-1)}.top-policy{box-sizing:border-box;box-shadow:var(--top-shadow-b);border-radius:var(--top-radius-4);background:var(--color-bg-lightning-1);width:600px;padding:var(--top-padding-4);right:var(--top-gap-10);bottom:var(--top-gap-10);gap:var(--top-gap-4);z-index:10000;flex-direction:column;display:flex;position:fixed}.top-policy_title{font-size:24px;font-weight:700}.top-policy_description{font-size:14px}@media screen and (max-width:900px){.top-policy{width:100%;right:0;bottom:calc(var(--top-gap-5) + var(--toolbar-height,0px))}}.top-banner{border-top:1px solid var(--color-line-info-1);border-bottom:1px solid var(--color-line-info-1);background:var(--color-layout-front-info-6);padding:10px var(--top-padding-4);justify-content:center;align-items:center;gap:var(--top-gap-4);z-index:1001;display:flex}.top-banner_text{max-width:700px}@media only screen and (max-width:900px){.top-banner_text{flex-grow:1;flex-basis:0}}@media only screen and (max-width:600px){.top-banner_text{font-size:12px}}

@@ -72,6 +72,6 @@ {

],
".chunks/dialog_regionSelectorRegions-BIjtdwxa.amd.js": [
".chunks/dialog_regionSelectorRegions-CN3F-67P.amd.js": [
"../assets/dialog_regionSelectorRegions.css"
],
".chunks/formsExt-BZZEpY-a.amd.js": [
".chunks/formsExt-oTFg1-Nv.amd.js": [
"../assets/formsExt.css"

@@ -78,0 +78,0 @@ ],

@@ -83,6 +83,6 @@ {

],
".chunks/dialog_regionSelectorRegions-BIjtdwxa.esm.js": [
".chunks/dialog_regionSelectorRegions-CN3F-67P.esm.js": [
"../assets/dialog_regionSelectorRegions.css"
],
".chunks/formsExt-BZZEpY-a.esm.js": [
".chunks/formsExt-oTFg1-Nv.esm.js": [
"../assets/formsExt.css"

@@ -89,0 +89,0 @@ ],

@@ -1,2 +0,2 @@

define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../.chunks/app-DGsWGbDX.amd`,`../.chunks/utils-BtqYaMHp.amd`],function(e,t,n,r,i){"use strict";if(a===void 0)var a=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useTopDialog=t.useI18nLang=t.useI18n=t.useAsyncTopDialog=t.piniaTPAPlugin=t.i18nPlugin=t.corePlugin=t.TopDialogWorker=t.Core=void 0,Object.defineProperty(t,"useI18nLang",{enumerable:!0,get:function(){return n.D}}),Object.defineProperty(t,"useI18n",{enumerable:!0,get:function(){return n.E}}),Object.defineProperty(t,"Core",{enumerable:!0,get:function(){return n.O}}),Object.defineProperty(t,"i18nPlugin",{enumerable:!0,get:function(){return n.T}}),Object.defineProperty(t,"corePlugin",{enumerable:!0,get:function(){return r.n}}),Object.defineProperty(t,"piniaTPAPlugin",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(t,"useTopDialog",{enumerable:!0,get:function(){return i.n}}),Object.defineProperty(t,"TopDialogWorker",{enumerable:!0,get:function(){return i.o}}),Object.defineProperty(t,"useAsyncTopDialog",{enumerable:!0,get:function(){return i.t}})});
define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../.chunks/app-BaHwxbWz.amd`,`../.chunks/utils-B1P0BzZ1.amd`],function(e,t,n,r,i){"use strict";if(a===void 0)var a=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useTopDialog=t.useI18nLang=t.useI18n=t.useAsyncTopDialog=t.piniaTPAPlugin=t.i18nPlugin=t.corePlugin=t.TopDialogWorker=t.Core=void 0,Object.defineProperty(t,"useI18nLang",{enumerable:!0,get:function(){return n.D}}),Object.defineProperty(t,"useI18n",{enumerable:!0,get:function(){return n.E}}),Object.defineProperty(t,"Core",{enumerable:!0,get:function(){return n.O}}),Object.defineProperty(t,"i18nPlugin",{enumerable:!0,get:function(){return n.T}}),Object.defineProperty(t,"corePlugin",{enumerable:!0,get:function(){return r.n}}),Object.defineProperty(t,"piniaTPAPlugin",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(t,"useTopDialog",{enumerable:!0,get:function(){return i.n}}),Object.defineProperty(t,"TopDialogWorker",{enumerable:!0,get:function(){return i.o}}),Object.defineProperty(t,"useAsyncTopDialog",{enumerable:!0,get:function(){return i.t}})});
//# sourceMappingURL=app.amd.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["core/app.js"],"names":["vue","exports","forms__4U0sLFk_esm_js_1","app_DGsWGbDX_esm_js_1","utils_BtqYaMHp_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,gCAAoC,8BAAkC,+BAAkC,EAAG,SAAU,EAAS,EAAS,EAAyB,EAAuB,EAAyB,CAC1O,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,EAAQ,aAAe,EAAQ,YAAc,EAAQ,QAAU,EAAQ,kBAAoB,EAAQ,eAAiB,EAAQ,WAAa,EAAQ,WAAa,EAAQ,gBAAkB,EAAQ,KAAO,IAAK,GAC5M,OAAO,eAAeA,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EAC1H,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACtH,OAAO,eAAeD,EAAS,OAAQ,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACnH,OAAO,eAAeD,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACzH,OAAO,eAAeD,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAsB,CAAG,CAAE,CAAC,EACvH,OAAO,eAAeF,EAAS,iBAAkB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAsB,CAAG,CAAE,CAAC,EAC3H,OAAO,eAAeF,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOG,EAAwB,CAAG,CAAE,CAAC,EAC3H,OAAO,eAAeH,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOG,EAAwB,CAAG,CAAE,CAAC,EAC9H,OAAO,eAAeH,EAAS,oBAAqB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOG,EAAwB,CAAG,CAAE,CAAC,CACpI,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-_4U0sLFk.esm.js\", \"../.chunks/app-DGsWGbDX.esm.js\", \"../.chunks/utils-BtqYaMHp.esm.js\"], function (require, exports, forms__4U0sLFk_esm_js_1, app_DGsWGbDX_esm_js_1, utils_BtqYaMHp_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.useTopDialog = exports.useI18nLang = exports.useI18n = exports.useAsyncTopDialog = exports.piniaTPAPlugin = exports.i18nPlugin = exports.corePlugin = exports.TopDialogWorker = exports.Core = void 0;\n Object.defineProperty(exports, \"useI18nLang\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.D; } });\n Object.defineProperty(exports, \"useI18n\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.E; } });\n Object.defineProperty(exports, \"Core\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.O; } });\n Object.defineProperty(exports, \"i18nPlugin\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.T; } });\n Object.defineProperty(exports, \"corePlugin\", { enumerable: true, get: function () { return app_DGsWGbDX_esm_js_1.n; } });\n Object.defineProperty(exports, \"piniaTPAPlugin\", { enumerable: true, get: function () { return app_DGsWGbDX_esm_js_1.t; } });\n Object.defineProperty(exports, \"useTopDialog\", { enumerable: true, get: function () { return utils_BtqYaMHp_esm_js_1.n; } });\n Object.defineProperty(exports, \"TopDialogWorker\", { enumerable: true, get: function () { return utils_BtqYaMHp_esm_js_1.o; } });\n Object.defineProperty(exports, \"useAsyncTopDialog\", { enumerable: true, get: function () { return utils_BtqYaMHp_esm_js_1.t; } });\n});\n"]}
{"version":3,"sources":["core/app.js"],"names":["vue","exports","forms__4U0sLFk_esm_js_1","app_BaHwxbWz_esm_js_1","utils_B1P0BzZ1_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,gCAAoC,8BAAkC,+BAAkC,EAAG,SAAU,EAAS,EAAS,EAAyB,EAAuB,EAAyB,CAC1O,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,EAAQ,aAAe,EAAQ,YAAc,EAAQ,QAAU,EAAQ,kBAAoB,EAAQ,eAAiB,EAAQ,WAAa,EAAQ,WAAa,EAAQ,gBAAkB,EAAQ,KAAO,IAAK,GAC5M,OAAO,eAAeA,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EAC1H,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACtH,OAAO,eAAeD,EAAS,OAAQ,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACnH,OAAO,eAAeD,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACzH,OAAO,eAAeD,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAsB,CAAG,CAAE,CAAC,EACvH,OAAO,eAAeF,EAAS,iBAAkB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAsB,CAAG,CAAE,CAAC,EAC3H,OAAO,eAAeF,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOG,EAAwB,CAAG,CAAE,CAAC,EAC3H,OAAO,eAAeH,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOG,EAAwB,CAAG,CAAE,CAAC,EAC9H,OAAO,eAAeH,EAAS,oBAAqB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOG,EAAwB,CAAG,CAAE,CAAC,CACpI,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-_4U0sLFk.esm.js\", \"../.chunks/app-BaHwxbWz.esm.js\", \"../.chunks/utils-B1P0BzZ1.esm.js\"], function (require, exports, forms__4U0sLFk_esm_js_1, app_BaHwxbWz_esm_js_1, utils_B1P0BzZ1_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.useTopDialog = exports.useI18nLang = exports.useI18n = exports.useAsyncTopDialog = exports.piniaTPAPlugin = exports.i18nPlugin = exports.corePlugin = exports.TopDialogWorker = exports.Core = void 0;\n Object.defineProperty(exports, \"useI18nLang\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.D; } });\n Object.defineProperty(exports, \"useI18n\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.E; } });\n Object.defineProperty(exports, \"Core\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.O; } });\n Object.defineProperty(exports, \"i18nPlugin\", { enumerable: true, get: function () { return forms__4U0sLFk_esm_js_1.T; } });\n Object.defineProperty(exports, \"corePlugin\", { enumerable: true, get: function () { return app_BaHwxbWz_esm_js_1.n; } });\n Object.defineProperty(exports, \"piniaTPAPlugin\", { enumerable: true, get: function () { return app_BaHwxbWz_esm_js_1.t; } });\n Object.defineProperty(exports, \"useTopDialog\", { enumerable: true, get: function () { return utils_B1P0BzZ1_esm_js_1.n; } });\n Object.defineProperty(exports, \"TopDialogWorker\", { enumerable: true, get: function () { return utils_B1P0BzZ1_esm_js_1.o; } });\n Object.defineProperty(exports, \"useAsyncTopDialog\", { enumerable: true, get: function () { return utils_B1P0BzZ1_esm_js_1.t; } });\n});\n"]}
import { D as e, E as t, O as n, T as r } from "../.chunks/forms-_4U0sLFk.esm.js";
import { n as i, t as a } from "../.chunks/app-DGsWGbDX.esm.js";
import { n as o, o as s, t as c } from "../.chunks/utils-BtqYaMHp.esm.js";
import { n as i, t as a } from "../.chunks/app-BaHwxbWz.esm.js";
import { n as o, o as s, t as c } from "../.chunks/utils-B1P0BzZ1.esm.js";
export { n as Core, s as TopDialogWorker, i as corePlugin, r as i18nPlugin, a as piniaTPAPlugin, c as useAsyncTopDialog, t as useI18n, e as useI18nLang, o as useTopDialog };

@@ -1,2 +0,2 @@

define([`require`,`exports`,`../.chunks/utils-BtqYaMHp.amd`,`../.chunks/dialog-DKGzAD_z.amd`],function(e,t,n,r){"use strict";if(i===void 0)var i=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useTopDialogSelf=t.propsPageCommon=t.TopDialogPageComponent=t.TopDialogPage=t.TopDialog=void 0,Object.defineProperty(t,"useTopDialogSelf",{enumerable:!0,get:function(){return n.r}}),Object.defineProperty(t,"TopDialog",{enumerable:!0,get:function(){return n.s}}),Object.defineProperty(t,"propsPageCommon",{enumerable:!0,get:function(){return r.n}}),Object.defineProperty(t,"TopDialogPage",{enumerable:!0,get:function(){return r.r}}),Object.defineProperty(t,"TopDialogPageComponent",{enumerable:!0,get:function(){return r.t}})});
define([`require`,`exports`,`../.chunks/utils-B1P0BzZ1.amd`,`../.chunks/dialog-BM4mfi7y.amd`],function(e,t,n,r){"use strict";if(i===void 0)var i=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useTopDialogSelf=t.propsPageCommon=t.TopDialogPageComponent=t.TopDialogPage=t.TopDialog=void 0,Object.defineProperty(t,"useTopDialogSelf",{enumerable:!0,get:function(){return n.r}}),Object.defineProperty(t,"TopDialog",{enumerable:!0,get:function(){return n.s}}),Object.defineProperty(t,"propsPageCommon",{enumerable:!0,get:function(){return r.n}}),Object.defineProperty(t,"TopDialogPage",{enumerable:!0,get:function(){return r.r}}),Object.defineProperty(t,"TopDialogPageComponent",{enumerable:!0,get:function(){return r.t}})});
//# sourceMappingURL=dialog.amd.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["dialog/dialog.js"],"names":["vue","exports","utils_BtqYaMHp_esm_js_1","dialog_DKGzAD_z_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,gCAAoC,gCAAmC,EAAG,SAAU,EAAS,EAAS,EAAyB,EAA0B,CACnL,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,EAAQ,iBAAmB,EAAQ,gBAAkB,EAAQ,uBAAyB,EAAQ,cAAgB,EAAQ,UAAY,IAAK,GACvI,OAAO,eAAeA,EAAS,mBAAoB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EAC/H,OAAO,eAAeD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACxH,OAAO,eAAeD,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAyB,CAAG,CAAE,CAAC,EAC/H,OAAO,eAAeF,EAAS,gBAAiB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAyB,CAAG,CAAE,CAAC,EAC7H,OAAO,eAAeF,EAAS,yBAA0B,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAyB,CAAG,CAAE,CAAC,CAC1I,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/utils-BtqYaMHp.esm.js\", \"../.chunks/dialog-DKGzAD_z.esm.js\"], function (require, exports, utils_BtqYaMHp_esm_js_1, dialog_DKGzAD_z_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.useTopDialogSelf = exports.propsPageCommon = exports.TopDialogPageComponent = exports.TopDialogPage = exports.TopDialog = void 0;\n Object.defineProperty(exports, \"useTopDialogSelf\", { enumerable: true, get: function () { return utils_BtqYaMHp_esm_js_1.r; } });\n Object.defineProperty(exports, \"TopDialog\", { enumerable: true, get: function () { return utils_BtqYaMHp_esm_js_1.s; } });\n Object.defineProperty(exports, \"propsPageCommon\", { enumerable: true, get: function () { return dialog_DKGzAD_z_esm_js_1.n; } });\n Object.defineProperty(exports, \"TopDialogPage\", { enumerable: true, get: function () { return dialog_DKGzAD_z_esm_js_1.r; } });\n Object.defineProperty(exports, \"TopDialogPageComponent\", { enumerable: true, get: function () { return dialog_DKGzAD_z_esm_js_1.t; } });\n});\n"]}
{"version":3,"sources":["dialog/dialog.js"],"names":["vue","exports","utils_B1P0BzZ1_esm_js_1","dialog_BM4mfi7y_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,gCAAoC,gCAAmC,EAAG,SAAU,EAAS,EAAS,EAAyB,EAA0B,CACnL,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,EAAQ,iBAAmB,EAAQ,gBAAkB,EAAQ,uBAAyB,EAAQ,cAAgB,EAAQ,UAAY,IAAK,GACvI,OAAO,eAAeA,EAAS,mBAAoB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EAC/H,OAAO,eAAeD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,CAAG,CAAE,CAAC,EACxH,OAAO,eAAeD,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAyB,CAAG,CAAE,CAAC,EAC/H,OAAO,eAAeF,EAAS,gBAAiB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAyB,CAAG,CAAE,CAAC,EAC7H,OAAO,eAAeF,EAAS,yBAA0B,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOE,EAAyB,CAAG,CAAE,CAAC,CAC1I,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/utils-B1P0BzZ1.esm.js\", \"../.chunks/dialog-BM4mfi7y.esm.js\"], function (require, exports, utils_B1P0BzZ1_esm_js_1, dialog_BM4mfi7y_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.useTopDialogSelf = exports.propsPageCommon = exports.TopDialogPageComponent = exports.TopDialogPage = exports.TopDialog = void 0;\n Object.defineProperty(exports, \"useTopDialogSelf\", { enumerable: true, get: function () { return utils_B1P0BzZ1_esm_js_1.r; } });\n Object.defineProperty(exports, \"TopDialog\", { enumerable: true, get: function () { return utils_B1P0BzZ1_esm_js_1.s; } });\n Object.defineProperty(exports, \"propsPageCommon\", { enumerable: true, get: function () { return dialog_BM4mfi7y_esm_js_1.n; } });\n Object.defineProperty(exports, \"TopDialogPage\", { enumerable: true, get: function () { return dialog_BM4mfi7y_esm_js_1.r; } });\n Object.defineProperty(exports, \"TopDialogPageComponent\", { enumerable: true, get: function () { return dialog_BM4mfi7y_esm_js_1.t; } });\n});\n"]}

@@ -1,3 +0,3 @@

import { r as e, s as t } from "../.chunks/utils-BtqYaMHp.esm.js";
import { n, r, t as i } from "../.chunks/dialog-DKGzAD_z.esm.js";
import { r as e, s as t } from "../.chunks/utils-B1P0BzZ1.esm.js";
import { n, r, t as i } from "../.chunks/dialog-BM4mfi7y.esm.js";
export { t as TopDialog, r as TopDialogPage, i as TopDialogPageComponent, n as propsPageCommon, e as useTopDialogSelf };

@@ -1,2 +0,2 @@

define([`require`,`exports`,`../.chunks/formsExt-BZZEpY-a.amd`],function(e,t,n){"use strict";if(r===void 0)var r=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.apiSetSearchParamsFilter=t.TopSelector2=t.TopRadioGroup=t.TopPolicy=t.TopMenu=t.TopInfo=t.TopEditInput=t.TopEditArea=t.TopCheckboxGroup=t.ITEM_ID_NEW=t.ITEM_ID_ALL=void 0,Object.defineProperty(t,"TopEditInput",{enumerable:!0,get:function(){return n.a}}),Object.defineProperty(t,"ITEM_ID_ALL",{enumerable:!0,get:function(){return n.c}}),Object.defineProperty(t,"TopMenu",{enumerable:!0,get:function(){return n.f}}),Object.defineProperty(t,"TopRadioGroup",{enumerable:!0,get:function(){return n.i}}),Object.defineProperty(t,"ITEM_ID_NEW",{enumerable:!0,get:function(){return n.l}}),Object.defineProperty(t,"TopInfo",{enumerable:!0,get:function(){return n.n}}),Object.defineProperty(t,"TopEditArea",{enumerable:!0,get:function(){return n.o}}),Object.defineProperty(t,"TopCheckboxGroup",{enumerable:!0,get:function(){return n.r}}),Object.defineProperty(t,"TopSelector2",{enumerable:!0,get:function(){return n.s}}),Object.defineProperty(t,"TopPolicy",{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(t,"apiSetSearchParamsFilter",{enumerable:!0,get:function(){return n.u}})});
define([`require`,`exports`,`../.chunks/formsExt-oTFg1-Nv.amd`],function(e,t,n){"use strict";if(r===void 0)var r=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.apiSetSearchParamsFilter=t.TopSelector2=t.TopRadioGroup=t.TopPolicy=t.TopMenu=t.TopInfo=t.TopEditInput=t.TopEditArea=t.TopCheckboxGroup=t.TopBanner=t.ITEM_ID_NEW=t.ITEM_ID_ALL=void 0,Object.defineProperty(t,"TopRadioGroup",{enumerable:!0,get:function(){return n.a}}),Object.defineProperty(t,"TopSelector2",{enumerable:!0,get:function(){return n.c}}),Object.defineProperty(t,"apiSetSearchParamsFilter",{enumerable:!0,get:function(){return n.d}}),Object.defineProperty(t,"TopCheckboxGroup",{enumerable:!0,get:function(){return n.i}}),Object.defineProperty(t,"ITEM_ID_ALL",{enumerable:!0,get:function(){return n.l}}),Object.defineProperty(t,"TopPolicy",{enumerable:!0,get:function(){return n.n}}),Object.defineProperty(t,"TopEditInput",{enumerable:!0,get:function(){return n.o}}),Object.defineProperty(t,"TopMenu",{enumerable:!0,get:function(){return n.p}}),Object.defineProperty(t,"TopInfo",{enumerable:!0,get:function(){return n.r}}),Object.defineProperty(t,"TopEditArea",{enumerable:!0,get:function(){return n.s}}),Object.defineProperty(t,"TopBanner",{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(t,"ITEM_ID_NEW",{enumerable:!0,get:function(){return n.u}})});
//# sourceMappingURL=formsExt.amd.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["formsExt/formsExt.js"],"names":["vue","exports","formsExt_BZZEpY_a_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,kCAAqC,EAAG,SAAU,EAAS,EAAS,EAA4B,CAC1H,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,EAAQ,yBAA2B,EAAQ,aAAe,EAAQ,cAAgB,EAAQ,UAAY,EAAQ,QAAU,EAAQ,QAAU,EAAQ,aAAe,EAAQ,YAAc,EAAQ,iBAAmB,EAAQ,YAAc,EAAQ,YAAc,IAAK,GACnQ,OAAO,eAAeA,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC9H,OAAO,eAAeD,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC7H,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EACzH,OAAO,eAAeD,EAAS,gBAAiB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC/H,OAAO,eAAeD,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC7H,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EACzH,OAAO,eAAeD,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC7H,OAAO,eAAeD,EAAS,mBAAoB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAClI,OAAO,eAAeD,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC9H,OAAO,eAAeD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC3H,OAAO,eAAeD,EAAS,2BAA4B,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,CAC9I,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/formsExt-BZZEpY-a.esm.js\"], function (require, exports, formsExt_BZZEpY_a_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.apiSetSearchParamsFilter = exports.TopSelector2 = exports.TopRadioGroup = exports.TopPolicy = exports.TopMenu = exports.TopInfo = exports.TopEditInput = exports.TopEditArea = exports.TopCheckboxGroup = exports.ITEM_ID_NEW = exports.ITEM_ID_ALL = void 0;\n Object.defineProperty(exports, \"TopEditInput\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.a; } });\n Object.defineProperty(exports, \"ITEM_ID_ALL\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.c; } });\n Object.defineProperty(exports, \"TopMenu\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.f; } });\n Object.defineProperty(exports, \"TopRadioGroup\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.i; } });\n Object.defineProperty(exports, \"ITEM_ID_NEW\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.l; } });\n Object.defineProperty(exports, \"TopInfo\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.n; } });\n Object.defineProperty(exports, \"TopEditArea\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.o; } });\n Object.defineProperty(exports, \"TopCheckboxGroup\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.r; } });\n Object.defineProperty(exports, \"TopSelector2\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.s; } });\n Object.defineProperty(exports, \"TopPolicy\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.t; } });\n Object.defineProperty(exports, \"apiSetSearchParamsFilter\", { enumerable: true, get: function () { return formsExt_BZZEpY_a_esm_js_1.u; } });\n});\n"]}
{"version":3,"sources":["formsExt/formsExt.js"],"names":["vue","exports","formsExt_oTFg1_Nv_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,kCAAqC,EAAG,SAAU,EAAS,EAAS,EAA4B,CAC1H,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,EAAQ,yBAA2B,EAAQ,aAAe,EAAQ,cAAgB,EAAQ,UAAY,EAAQ,QAAU,EAAQ,QAAU,EAAQ,aAAe,EAAQ,YAAc,EAAQ,iBAAmB,EAAQ,UAAY,EAAQ,YAAc,EAAQ,YAAc,IAAK,GACvR,OAAO,eAAeA,EAAS,gBAAiB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC/H,OAAO,eAAeD,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC9H,OAAO,eAAeD,EAAS,2BAA4B,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC1I,OAAO,eAAeD,EAAS,mBAAoB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAClI,OAAO,eAAeD,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC7H,OAAO,eAAeD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC3H,OAAO,eAAeD,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC9H,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EACzH,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EACzH,OAAO,eAAeD,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC7H,OAAO,eAAeD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,EAC3H,OAAO,eAAeD,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAA2B,CAAG,CAAE,CAAC,CACjI,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/formsExt-oTFg1-Nv.esm.js\"], function (require, exports, formsExt_oTFg1_Nv_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.apiSetSearchParamsFilter = exports.TopSelector2 = exports.TopRadioGroup = exports.TopPolicy = exports.TopMenu = exports.TopInfo = exports.TopEditInput = exports.TopEditArea = exports.TopCheckboxGroup = exports.TopBanner = exports.ITEM_ID_NEW = exports.ITEM_ID_ALL = void 0;\n Object.defineProperty(exports, \"TopRadioGroup\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.a; } });\n Object.defineProperty(exports, \"TopSelector2\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.c; } });\n Object.defineProperty(exports, \"apiSetSearchParamsFilter\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.d; } });\n Object.defineProperty(exports, \"TopCheckboxGroup\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.i; } });\n Object.defineProperty(exports, \"ITEM_ID_ALL\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.l; } });\n Object.defineProperty(exports, \"TopPolicy\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.n; } });\n Object.defineProperty(exports, \"TopEditInput\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.o; } });\n Object.defineProperty(exports, \"TopMenu\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.p; } });\n Object.defineProperty(exports, \"TopInfo\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.r; } });\n Object.defineProperty(exports, \"TopEditArea\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.s; } });\n Object.defineProperty(exports, \"TopBanner\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.t; } });\n Object.defineProperty(exports, \"ITEM_ID_NEW\", { enumerable: true, get: function () { return formsExt_oTFg1_Nv_esm_js_1.u; } });\n});\n"]}

@@ -1,2 +0,2 @@

import { a as e, c as t, f as n, i as r, l as i, n as a, o, r as s, s as c, t as l, u } from "../.chunks/formsExt-BZZEpY-a.esm.js";
export { t as ITEM_ID_ALL, i as ITEM_ID_NEW, s as TopCheckboxGroup, o as TopEditArea, e as TopEditInput, a as TopInfo, n as TopMenu, l as TopPolicy, r as TopRadioGroup, c as TopSelector2, u as apiSetSearchParamsFilter };
import { a as e, c as t, d as n, i as r, l as i, n as a, o, p as s, r as c, s as l, t as u, u as d } from "../.chunks/formsExt-oTFg1-Nv.esm.js";
export { i as ITEM_ID_ALL, d as ITEM_ID_NEW, u as TopBanner, r as TopCheckboxGroup, l as TopEditArea, o as TopEditInput, c as TopInfo, s as TopMenu, a as TopPolicy, e as TopRadioGroup, t as TopSelector2, n as apiSetSearchParamsFilter };
{
"name": "@topvisor/ui",
"private": false,
"version": "1.5.8-dialogShadow.0",
"version": "1.5.8-topBanner.0",
"type": "module",

@@ -6,0 +6,0 @@ "description": "Topvisor UI-kit Vue",

@@ -1,2 +0,2 @@

var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../.chunks/field-DEusYVqS.amd`,`../utils/dom.amd`,`../.chunks/worker-D28QqQ45.amd`,`../.chunks/utils-BtqYaMHp.amd`,`../utils/check.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`../utils/keyboard.amd`,`../.chunks/popup-DViuKwOc.amd`,`../.chunks/formsExt-BZZEpY-a.amd`,`vue`,`../.chunks/api-BD74aA98.amd`,`../.chunks/app-DGsWGbDX.amd`,`../require/css.amd!../assets/project.css`],function(e,t,r,i,a,o,s,c,l,u,d,f,p,m){"use strict";if(h===void 0)var h=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useItemsFromCompetitors=t.topProjectSelectorClearCache=t.renderElTopTagSelectorPopupOpener=t.genSearcherByKey=t.genElTopTagSelectorPopupOpener=t.findRegion=t.dialogRegionSelector=t.TopTagSelectorTagIcon=t.TopTagSelectorPopupOpener=t.TopTagSelector=t.TopRegionSelector=t.TopProjectSelector=t.TopGroupSelector=t.TopCompetitorSelector=void 0;var g={class:`top-competitorSelector`},_={class:`top-ellipsis1`},v=(0,m.defineComponent)({__name:`competitorSelector`,props:(0,m.mergeModels)({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0},selectAllItemIcon:{default:``}},{modelValue:{},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,m.useModel)(e,`modelValue`),i=(0,m.computed)(()=>{if(t.showSelectAllItem)return{icon:t.selectAllItemIcon,title:(0,r.E)().Common.Select_all,value:`all`,content:``}});return(t,a)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,g,[(0,m.unref)(r.O).state.isMobile?((0,m.openBlock)(),(0,m.createBlock)(f.s,{key:0},{opener:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{class:`top-competitorSelector_opener`,color:`theme`,icon:``,icon2:``},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.items.find(e=>e.value===n.value?.[0])?.content),1)]),_:1})]),contentList:(0,m.withCtx)(()=>[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(e.items,e=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-active":n.value?.includes(e.value)}),"data-top-icon":e.icon,title:e.title,onClick:()=>n.value=[e.value]},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,_,(0,m.toDisplayString)(e.content),1)]),_:2},1032,[`class`,`data-top-icon`,`title`,`onClick`]))),256))]),_:1})):((0,m.openBlock)(),(0,m.createBlock)(p.f,{key:1,modelValue:n.value,"onUpdate:modelValue":a[0]||=e=>n.value=e,items:e.items,isMultiple:!0,styling:`bar`,canBeEmptyMultiple:!1,selectAllItem:i.value},null,8,[`modelValue`,`items`,`selectAllItem`]))]))}}),y=(e,t)=>(0,m.computed)(()=>(0,m.toValue)(e).filter(e=>e.on>=0||e.id===t).map(e=>({value:e.id,title:e.url+` [${e.id}]`,icon:e.id===(0,m.toValue)(t)?``:``,content:e.name}))),b={0:`Yandex`,1:`Google`,4:`YouTube`,5:`Bing`,7:`Seznam`,8:`AppStore`,9:`GoogleStore`,20:`Yandex.com`,21:`Yandex.com.tr`,22:`YandexLive`},x={key:-2,name:`--`,index:-2},S={key:-2,name:`--`,regions:[x],regionByIndex:new Map([[-2,x]])},C={key:-2,name:`Autoselect`,index:-2},w={key:-2,name:`Autoselect`,regions:[C],regionByIndex:new Map([[-2,C]])},T={countryCode:`00`,depth:1,device:0,key:-1,index:-1,lang:`ru`,name:`Without region`},ee=()=>(C.name=(0,r.E)().Common.Autoselect,C),te=()=>(ee(),w.name=(0,r.E)().Common.Autoselect,console.log(w),w),ne=()=>(T.name=(0,r.E)().Keywords.Without_region,T),E=(e=``,t=!1,n=[])=>{let r;return r=e?re(n,e):D(n),t&&r.set(-2,te()),r.size||r.set(-2,S),r},D=(e,t=!0,n=[],r=``)=>{let i=new Map;return e.forEach(e=>{if(r!==`project_relevant_url`&&!e.enabled||r&&typeof e.key==`number`&&e.key>1)return;let a={...e};a.regionByIndex=new Map,e.regions&&e.regions.forEach(e=>{if(t&&!e.enabled)return;let n={...e};a.regionByIndex.set(n.index,n)}),!a.regionByIndex.size&&n.length,(!e.regions||a.regionByIndex.size||n.length)&&i.set(a.key,a)}),n.forEach(e=>{if(i.has(e))return;let t={key:e,name:b[e],regions:[],regionByIndex:new Map};i.set(t.key,t)}),i},re=(e,t)=>{let n=D(e,!1,r.O.state.forceSearchersKeysForKeywordsStats,t);if(n.has(2)){let e=n.get(2);e&&(e.regionByIndex=new Map)}return(t===`volume`||t===`cost_forecast`)&&r.O.state.showGlobalRegionForKeywordsStats&&n.forEach(e=>{if(!e.regionByIndex)return;let t={...ne()};e.regionByIndex.set(t.index,t)}),n},O=(e,t,n=[])=>{let r=E(e,!1,n),i;return r.forEach(n=>{if((t.searcher_key===void 0||t.searcher_key==n.key)&&n.regions&&(n.regions.forEach(r=>{if(!i&&(t.key===void 0||t.key==r.key)&&(t.index===void 0||t.index==r.index)&&!(!e&&(t.lang!==void 0&&t.lang!=r.lang||t.device!==void 0&&t.device!=r.device)))return r.searcher_key=n.key,i=r,!1}),i))return!1}),i},k=(0,s.t)(()=>new Promise((t,n)=>{e([`../.chunks/dialog_regionSelectorRegions-BIjtdwxa.amd`],t,n)}).then(__importStar)),ie=(e,t)=>{let n=(0,r.E)();return{searcherKey:(0,m.ref)(t.value.keys().next().value??-2),optionBySearcherKey:(0,m.computed)(()=>{let r=new Map;if(t.value.forEach(t=>{let n={value:t.key,title:t.name};e.addSearcherIcon&&(n.icon=(0,u.getSearcherGIcon)(t.key)),r.set(t.key,n)}),e.addCompare&&!r.has(-2)){let e={value:``,title:`--------------------`,disabled:!0};r.set(e.value,e);let t={value:-1,title:n.Common.Compare};r.set(t.value,t)}return r})}},ae=(e,t)=>{let n=(0,r.E)(),i=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),a=(0,m.ref)(-2);e.modelValue.length===1&&(a.value=e.modelValue[0]),a.value===-2&&(a.value=i.value?t.value?.regionByIndex.values().next().value?.key??-2:t.value?.regionByIndex.keys().next().value??-2);let o=(0,m.computed)(()=>{let e=new Map;return t.value.regionByIndex?.forEach(r=>{let a=r.name;if(i.value){let t={value:r.key,title:a};e.has(r.key)||e.set(r.key,t);return}r.device&&(a+=` (`+n.Common[`Device_`+r.device]+`)`);let o=(0,u.getLangLabel)(t.value.key||0,r.lang??``);o&&(a+=` / `+o);let s={value:r.index,title:a,icon:r.device?(0,u.getDeviceGIcon)(r.device):void 0};e.set(r.index,s)}),e});return(0,m.watch)(o,(t,r)=>{if(e.onlySearcher||a.value!==void 0&&t.get(a.value))return;let i=t.keys().next().value;if(a.value===-2||i===-2){a.value=i;return}let o=r?.get(a.value)?.title||``,s=-1;for(let[e,r]of t.entries()){let t=r.title;if(typeof t!=`string`||typeof e==`string`)break;if(t===o){i=e;break}let a=RegExp(` \\((${n.Common.Device_1}|${n.Common.Device_2})\\)`),c=o,l=3;t.indexOf(c)===-1&&(c=o.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),c=c.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)!==-1&&(l<=s||(s=l,i=e))}a.value=i}),{regionIndex:a,optionByRegionIndex:o}},oe=(e,t,n)=>{let r=(0,m.ref)([]),i=()=>{if(e.onlySearcher&&t.value){r.value=Array.from(t.value.keys());return}let i=[];if(e.modelValue.length>1)i=[...e.modelValue];else try{i=JSON.parse(localStorage.getItem(`ui:project:regionSelector`+e.projectId+`:regionsIndexes`))??[]}catch{}i.length&&(i=i.filter(e=>n.value.has(e))),i.length||(i=Array.from(n.value)),r.value=[...i]},a=()=>{r.value.length?localStorage.setItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`,JSON.stringify(r.value)):localStorage.removeItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`)};return(0,m.watch)(r,()=>{a()}),e.addCompare&&i(),{regionsIndexes:r}},se=e=>{let t=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),n=(0,m.computed)(()=>E(e.forMode,e.autoRegion,e.searchers)),r=(0,m.computed)(()=>n.value.get(a.searcherKey.value)||S),i=(0,m.computed)(()=>{let e=new Set;return n.value.forEach(t=>{t.regionByIndex.forEach(t=>{t.index!==-1&&t.index!==-2&&e.add(t.index)})}),e}),a=ie(e,n),o=ae(e,r),s=oe(e,n,i);(0,m.watch)(n,()=>{if(e.onlySearcher?s.regionsIndexes.value=Array.from(n.value.keys()):s.regionsIndexes.value=s.regionsIndexes.value.filter(e=>i.value.has(e)),a.searcherKey.value===-1)return;let t=n.value.keys().next().value;n.value.forEach(r=>{if(e.onlySearcher&&r.key===a.searcherKey.value){t=a.searcherKey.value;return}if(o.regionIndex.value&&r.regionByIndex?.has(o.regionIndex.value)&&(t=r.key),!e.onlySearcher){let e;t!==void 0&&(e=n.value.get(t)?.regionByIndex);let i=n.value.get(r.key)?.regionByIndex;e?.has(-2)&&!i?.has(-2)&&(t=r.key)}}),t!==void 0&&(a.searcherKey.value=t),o.regionIndex.value!==void 0&&!(r.value?.regionByIndex)?.has(o.regionIndex.value)&&(o.regionIndex.value=r.value?.regions?.keys().next().value)},{immediate:!0});let c=()=>{if(a.searcherKey.value!==-1&&a.searcherKey.value!==-2)return a.searcherKey.value},l=()=>{if(e.onlySearcher||o.regionIndex.value===-2)return;let n=o.regionIndex.value;if(t.value&&e.forMode){let t=o.regionIndex.value;n=O(e.forMode,{searcher_key:c(),key:t},e.searchers)?.index}return n},u=()=>{let e=c();if(e!==void 0)return n.value.get(e)};return{selectSearcher:a,selectRegion:o,compare:s,searcherByKey:n,allRegionsIndexes:i,getSearcher:u,getRegion:()=>{let e=l();if(e!==void 0)return u()?.regionByIndex?.get(e)}}},ce=(0,m.defineComponent)({__name:`regionSelector`,props:(0,m.mergeModels)({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forMode:{},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:[`update:modelValue`,`update:modelValueSingle`],setup(e,{expose:t}){let n=e,i=(0,m.computed)(()=>n.forMode===`volume`||n.forMode===`cost_forecast`),a=(0,m.useModel)(e,`modelValue`),o=(0,m.useModel)(e,`modelValueSingle`),{selectSearcher:s,selectRegion:c,compare:l,searcherByKey:u,allRegionsIndexes:d,getSearcher:f,getRegion:p}=se(n),h=()=>{let e=[];u.value.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.regions.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.index!==-1&&e.push(t)})}),k.open(`regions`,{regions:e,regionsIndexes:l.regionsIndexes.value,"@update:regionsIndexes":e=>l.regionsIndexes.value=e})};return(0,m.watch)([c.regionIndex,s.searcherKey,l.regionsIndexes],()=>{if(s.searcherKey.value===-1&&l.regionsIndexes.value.length){if(JSON.stringify(a.value)===JSON.stringify(l.regionsIndexes.value))return;a.value=[...l.regionsIndexes.value]}else n.onlySearcher?(a.value=[s.searcherKey.value],s.searcherKey.value===-2&&!n.autoRegion&&(a.value.length=0)):(a.value=[c.regionIndex.value],c.regionIndex.value===-2&&!n.autoRegion&&(a.value.length=0));!n.onlySearcher&&!d.value.size&&(s.searcherKey.value=-2)}),o.value&&(0,m.watch)(o,()=>{o.value&&(a.value=[o.value])},{immediate:!0}),(0,m.watch)(a,()=>{if(a.value[0]&&(o.value=a.value[0]),n.onlySearcher){if(!a.value.length||a.value.length===1&&!u.value.has(a.value[0])||a.value.length===1&&a.value[0]===-2&&!n.autoRegion){let e=u.value.keys().next().value;e===-2&&!n.autoRegion&&(e=void 0,o.value=-2),e===void 0?a.value.length=0:a.value=[e];return}if(a.value.length>1&&JSON.stringify(a.value)!==JSON.stringify(l.regionsIndexes.value)){a.value=[...l.regionsIndexes.value];return}}else{let e=[...new Set(a.value)],t=u.value.values().next().value?.regionByIndex?.keys().next().value;if(i.value&&(t=u.value.values().next().value?.regionByIndex?.values().next().value?.key),t===-2&&!n.autoRegion&&(t=void 0,o.value=-2),!e.length)t!==void 0&&e.push(t);else if(e.length===1){let n=d.value;i.value&&(n=new Set,u.value.forEach(e=>{e.regionByIndex.forEach(e=>{e.index!==-1&&e.index!==-2&&n.add(e.key)})})),n.has(e[0])||(e=[],t!==void 0&&e.push(t))}else e=e.filter(e=>d.value.has(e)),!e.length&&t!==void 0&&e.push(t);if(JSON.stringify(a.value)!==JSON.stringify(e)){a.value=e;return}}if(a.value.length!==1||a.value[0]!==(n.onlySearcher?s.searcherKey.value:c.regionIndex.value))if(n.onlySearcher){if(a.value.length===1){s.searcherKey.value=a.value[0];return}s.searcherKey.value=-1;return}else{if(!a.value.length)return;if(a.value.length===1&&s.searcherKey.value!==-1){c.regionIndex.value=a.value[0];let e;for(let t of u.value.values()){for(let n of t.regionByIndex.values())if((i.value?n.key:n.index)===c.regionIndex.value){e=t.key;break}if(e!==void 0)break}e!==void 0&&(s.searcherKey.value=e)}else s.searcherKey.value=-1,l.regionsIndexes.value=[...a.value]}},{immediate:!0}),t({getSearcher:f,getRegion:p}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-regionSelector":!0,"top-regionSelector-onlySearcher":e.onlySearcher})},[(0,m.createVNode)(r.n,{options:(0,m.unref)(s).optionBySearcherKey.value,modelValue:(0,m.unref)(s).searcherKey.value,"onUpdate:modelValue":n[0]||=e=>(0,m.unref)(s).searcherKey.value=e,name:`searcher_key`,addChanger:e.addChanger},null,8,[`options`,`modelValue`,`addChanger`]),!e.onlySearcher&&(0,m.unref)(s).searcherKey.value!==(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.n,{key:0,class:`top-select-region`,options:(0,m.unref)(c).optionByRegionIndex.value,modelValue:(0,m.unref)(c).regionIndex.value,"onUpdate:modelValue":n[1]||=e=>(0,m.unref)(c).regionIndex.value=e,name:i.value?`region_key`:`region_index`,addChanger:e.addChanger,"data-top-icon":e.addRegionIcon?``:void 0},null,8,[`options`,`modelValue`,`name`,`addChanger`,`data-top-icon`])):(0,m.createCommentVNode)(``,!0),e.addCompare&&!e.onlySearcher&&(0,m.unref)(s).searcherKey.value===(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.h,{key:1,name:`compare`,onClick:h,"data-count-compare-regions-indexes":(0,m.unref)(l).regionsIndexes.value.length},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Selected_regions),1)]),_:1},8,[`data-count-compare-regions-indexes`])):(0,m.createCommentVNode)(``,!0)],2))}}),A={id:0,name:`/`,path:`/`};t.TopCompetitorSelector=v,t.useItemsFromCompetitors=y,t.genSearcherByKey=E,t.findRegion=O,t.dialogRegionSelector=k,t.TopRegionSelector=ce;function j(e){return e?(0,r.E)()?.Common.All_folders:`/ (`+(0,r.E)()?.Keywords.Root_folder+`)`}var M=(e,t,n=new Map,r={id:`root`},i=0)=>(r.childsIds=[],r.id&&(r.countAllGroupsActive=r.count_groups_active),e[r.id]&&e[r.id].forEach(a=>{a={...a},r.childsIds.push(a.id),a.id===0&&(a.name=j(t));let o=i>1?`-`.repeat(i-1)+` `:``;o&&!a.name.startsWith(o)&&(a.name=o+a.name),n.set(a.id,a),M(e,t,n,a,i+1),r.childsIds=r.childsIds.concat(a.childsIds),r.id&&a.count_groups_active&&(r.countAllGroupsActive+=a.count_groups_active)}),n),le=(e,t)=>e.gen(`/get/${t}/folders/`,[`id`,`parent_id`,`name`,`path`]).changeParams({orders:[`ord_path`],limit:100});function N(e,t,n){let r=Object.keys(e);return(0,m.watch)(r.map(t=>e[t]),(e,n,i)=>{let a={};e.forEach((e,t)=>{if(!Object.is(e,n[t])){let i=r[t];a[i]={old:n[t],new:e}}}),Object.keys(a).length&&t(a,i)},n)}var ue=[`innerHTML`],de=(0,m.defineComponent)({__name:`folders`,props:(0,m.mergeModels)({folderId:{},folder:{},folders:{},projectId:{},canSelectAll:{type:Boolean},addChanger:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{}},{folderId:{required:!0},folderIdModifiers:{},folder:{default:A},folderModifiers:{}}),emits:[`update:folderId`,`update:folder`],setup(e){let t=e,n=(0,m.useModel)(e,`folderId`),r=(0,m.useModel)(e,`folder`),i=t.client&&!t.folders?le(t.client,t.service):void 0,a=(0,m.ref)(null);(0,m.watch)(()=>t.projectId,()=>{i?.changeParams({project_id:t.projectId}),i?.setOptions({checkFingerprint:`TopGroupSelectorFolders:`+t.projectId}),a.value?.resetCache()},{immediate:!0});let o=(0,m.computed)(()=>M(t.folders??{root:[A]},t.canSelectAll)),s=e=>(t.canSelectAll&&e[0]?.id===0&&(e[0]={...e[0],name:j(!0)}),e);return N({modelFolder:r,modelFolderId:n},async e=>{if(n.value===r.value.id)return;if(e.modelFolder&&!e.modelFolderId){n.value=r.value.id;return}let i=o.value.get(t.folderId);i||=A,r.value=i,n.value=i.id},{immediate:!0}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.s,{class:`top-groupSelector_folder`,modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,items:e.folders?[...o.value.values()]:void 0,"search-type":`inline`,icon:e.addIcon?``:void 0,api:e.folders?void 0:(0,m.unref)(i),apiSetSearchParams:(...e)=>(0,m.unref)(p.u)(...e,`name`),prepareItemsBeforeRender:s,addChanger:e.addChanger,useCache:``},{item:(0,m.withCtx)(({item:e})=>[(0,m.createElementVNode)(`div`,{innerHTML:e.name.replaceAll(/</g,`< `)},null,8,ue)]),_:1},8,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`addChanger`]))}}),P={id:-1,name:`--`,folder_id:A.id,folder_path:A.path},F={id:0,name:`All groups`,folder_id:A.id,folder_path:A.path},I=()=>(F.name=(0,r.E)()?.Common.All_groups,F),L=()=>(F.name=(0,r.E)()?.Keywords.Choose_group,F),fe=(e,t,n)=>(e=[...e],t!==void 0&&(e=e.filter(e=>e.on==Number(t))),n&&n.id&&n.childsIds&&(e=e.filter(e=>e.folder_id===n.id||n.childsIds.includes(e.folder_id))),e),R=(e,t)=>e.gen(`/get/${t}/groups/`,[`id`,`name`,`folder_id`,`folder_path`]).changeParams({folder_id_depth:!0,limit:100}),pe=(e,t)=>e.gen(`/add/${t}/groups/`),me=(e,t)=>e.gen(`/del/${t}/groups/`),he=(e,t)=>e.gen(`/edit/${t}/groups/rename/`),ge={class:`top-groupSelector_groupItem top-ellipsis1`},_e={key:0,class:`top-comment`},ve=[`innerHTML`],ye=[`innerHTML`],be=[`innerHTML`],xe=(0,m.defineComponent)({__name:`groups`,props:(0,m.mergeModels)({groupId:{},group:{},projectId:{},folder:{},groups:{},on:{type:Boolean,default:void 0},canAdd:{type:[String,Boolean]},canEditAndDel:{type:Boolean},canSelectAll:{type:[Boolean,String]},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showPath:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{groupId:{required:!0},groupIdModifiers:{},group:{required:!0},groupModifiers:{}}),emits:(0,m.mergeModels)([`addGroup`,`editGroup`,`delGroup`],[`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,a=n,o=(0,m.useModel)(e,`groupId`),s=(0,m.useModel)(e,`group`),c=r.client&&!r.groups?R(r.client,r.service):void 0,l=r.client?pe(r.client,r.service):void 0,u=r.client?me(r.client,r.service):void 0,d=r.client?he(r.client,r.service):void 0,h=(0,m.ref)(null),g=(0,m.computed)(()=>{if(r.groups!==void 0)return fe(r.groups,r.on,r.folder)}),_=(0,i.t)(`folder_id`,`EQUALS`,[r.folder?.id??0]);c?.changeParams({project_id:r.projectId,folder_id_depth:!0,filters:[_]}),r.on!==void 0&&c?.params.filters?.push((0,i.t)(`on`,`EQUALS`,[Number(r.on)]));let v=e=>{s.value=e,o.value=e.id},y=(e=!1)=>{h.value?.resetCache(e)};N({projectId:()=>r.projectId,folderId:()=>r.folder?.id,canSelectAll:()=>r.canSelectAll},e=>{if(e.projectId&&(c?.changeParams({project_id:r.projectId}),c?.setOptions({checkFingerprint:`TopGroupSelectorGroups:`+r.projectId})),e.folderId&&(_.values=[r.folder?.id??0]),y(),(e.folderId?.old!==void 0||e.canSelectAll?.old!==void 0)&&o.value!==null){let e;r.autoselect===`first`&&(e=g.value?.[0],r.canSelectAll&&(e=(0,m.reactive)(I()))),(r.autoselect===`placeholder`||!e)&&(e=L()),v(e)}},{immediate:!0}),N({modelGroup:s,modelGroupId:o},async e=>{if(o.value!==s.value.id){if(e.modelGroup&&!e.modelGroupId){o.value=s.value.id;return}if(!(r.canAdd&&o.value===null)){if(r.groups){let e=g.value?.find(e=>e.id===o.value);if(!e&&r.canSelectAll&&(e=I()),e)v(e);else{let e=g.value?.[0];e&&!o.value?v(e):v(P)}}if(r.client&&!r.groups&&(o.value||o.value===0&&!r.canSelectAll)){let e=R(r.client,r.service).changeParams({project_id:r.projectId,id:o.value,filters:[_]});e?.setOptions({checkFingerprint:`TopGroupSelectorFindGroup:`+r.projectId});let t=await e.call();if(!t.errors?.length&&!t.result)return;!t.errors&&t.result[0]?v(t.result[0]):v(P)}}}},{immediate:!0});let b=async e=>{if(r.canAdd!==`api`||!l)return;let t=s.value,n=await l.changeParams({project_id:r.projectId,names:[e.name],to_id:r.folder?.id??A.id,to_type:`in_folder_last`}).call();if(n.result){let e=n.result[0];v(e),a(`addGroup`,e)}else v(t);h.value?.resetCache(!0)},x=async(e,t)=>{d&&((await d.changeParams({project_id:r.projectId,id:e.id,name:t}).call()).errors||(s.value.id===e.id&&(s.value.name=t),a(`editGroup`,{id:e.id,name:t}),h.value?.updateCacheItemById(e.id,{name:t})))},S=async e=>{u&&((await u.changeParams({project_id:r.projectId,id:e.id}).call()).errors||(s.value.id===e.id&&v(r.canSelectAll?I():P),a(`delGroup`,e.id),h.value?.deleteCacheItemById(e.id)))};return t({resetCacheGroups:y}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.s,{ref_key:`refSelector`,ref:h,class:`top-groupSelector_group`,modelValue:s.value,"onUpdate:modelValue":n[0]||=e=>s.value=e,items:g.value??e.groups,searchType:`inline`,icon:e.addIcon?``:void 0,api:e.groups?void 0:(0,m.unref)(c),apiSetSearchParams:(...e)=>(0,m.unref)(p.u)(...e,`name`),appendSearchToResult:!!e.canAdd,useAllItem:e.canSelectAll?(0,m.unref)(I)().name:!1,addChanger:e.addChanger,useCache:``,onAppendItem:b},(0,m.createSlots)({item:(0,m.withCtx)(({item:n})=>[(0,m.createElementVNode)(`div`,ge,[n.id===(0,m.unref)(null)?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,_e,(0,m.toDisplayString)(t.$i18n.Common.Add)+`: `,1)):(0,m.createCommentVNode)(``,!0),(0,m.createElementVNode)(`span`,{class:`top-groupSelector_groupItemName top-ellipsis1`,innerHTML:n.name},null,8,ve),n.folder_path&&e.showPath?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,class:`top-groupSelector_groupItemFolderPath top-ellipsis1`,innerHTML:n.folder_path},null,8,ye)):(0,m.createCommentVNode)(``,!0)])]),_:2},[e.canEditAndDel&&e.client?{name:`actions`,fn:(0,m.withCtx)(({item:r})=>[r.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createVNode)(f.n,{submitText:t.$i18n.Common.Save,defaultValue:r.name,inputProps:{addCleaner:!1},onSubmit:e=>x(r,e)},{opener:(0,m.withCtx)(()=>[...n[1]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[...n[2]||=[]]),_:1},8,[`submitText`,`defaultValue`,`onSubmit`]),(0,m.createVNode)(f.r,{isWarning:``,submitText:t.$i18n.Common.Delete,onSubmit:e=>S(r)},{opener:(0,m.withCtx)(()=>[...n[3]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,{innerHTML:e.service===`keywords_2`?t.$i18n.Keywords.Delete_group_warning:t.$i18n[`Ai.Tracker`].Delete_group_warning},null,8,be)]),_:1},8,[`submitText`,`onSubmit`])],64)):(0,m.createCommentVNode)(``,!0)]),key:`0`}:void 0]),1032,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`appendSearchToResult`,`useAllItem`,`addChanger`]))}}),Se={class:`top-groupSelector`},Ce=(0,m.defineComponent)({__name:`groupSelector`,props:(0,m.mergeModels)({folderId:{},folder:{},groupId:{},group:{},projectId:{},folders:{},groups:{},on:{type:Boolean,default:void 0},canSelectAllGroups:{type:Boolean,default:!1},canAddGroup:{type:[String,Boolean]},canEditAndDelGroup:{type:Boolean},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showFolders:{type:Boolean,default:!0},showGroups:{type:Boolean,default:!0},showGroupsPaths:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{folderId:{required:!0},folderIdModifiers:{},folder:{},folderModifiers:{},groupId:{required:!0},groupIdModifiers:{},group:{default:P},groupModifiers:{}}),emits:(0,m.mergeModels)([`update:groups`],[`update:folderId`,`update:folder`,`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,i=(0,m.ref)(null),a=(0,m.useModel)(e,`folderId`),o=(0,m.useModel)(e,`folder`),s=(0,m.useModel)(e,`groupId`),c=(0,m.useModel)(e,`group`),l=n;o.value=M(r.folders??{root:[A]},r.canSelectAllGroups).get(a.value);let u=r.groups?.find(e=>e.id===s.value);s.value||(u=r.groups?.[0]),r.canSelectAllGroups&&!u&&(u=I()),(r.autoselect===`placeholder`||!u)&&(u=L()),u??=P,c.value=u;let d=e=>{let t;r.groups&&e&&(t=[...r.groups,e]),l(`update:groups`,t)},f=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.find(t=>t.id===e.id);if(!t)return;let n={...t,...e},i=r.groups.map(e=>e.id===n.id?n:e);l(`update:groups`,i)},p=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.filter(t=>t.id!==e);l(`update:groups`,t)};return t({resetCacheGroups:(e=!1)=>{i.value?.resetCacheGroups(e)}}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Se,[e.showFolders?((0,m.openBlock)(),(0,m.createBlock)(de,{key:0,folderId:a.value,"onUpdate:folderId":n[0]||=e=>a.value=e,folder:o.value,"onUpdate:folder":n[1]||=e=>o.value=e,projectId:e.projectId,folders:e.folders,canSelectAll:e.canSelectAllGroups,addChanger:e.addChanger,addIcon:e.addIcon,client:e.client,service:r.service},null,8,[`folderId`,`folder`,`projectId`,`folders`,`canSelectAll`,`addChanger`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0),e.showGroups?((0,m.openBlock)(),(0,m.createBlock)(xe,{key:1,ref_key:`componentGroupsRef`,ref:i,groupId:s.value,"onUpdate:groupId":n[2]||=e=>s.value=e,group:c.value,"onUpdate:group":n[3]||=e=>c.value=e,projectId:e.projectId,folder:o.value,groups:e.groups,on:e.on,canAdd:e.canAddGroup,canEditAndDel:e.canEditAndDelGroup,canSelectAll:e.canSelectAllGroups,autoselect:e.autoselect,addChanger:e.addChanger,showPath:e.showGroupsPaths||e.showFolders,addIcon:e.addIcon,client:e.client,service:r.service,onAddGroup:d,onEditGroup:f,onDelGroup:p},null,8,[`groupId`,`group`,`projectId`,`folder`,`groups`,`on`,`canAdd`,`canEditAndDel`,`canSelectAll`,`autoselect`,`addChanger`,`showPath`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0)]))}}),z=e=>({id:null,name:e,listItemProps:{type:`title`,class:`top-projectSelector_item`}}),B={scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1},we=(e,t)=>{let n=[],i={scheduledUpdate:z((0,r.E)().Projects.Scheduled_update),manualUpdate:z((0,r.E)().Projects.Manual_update),guestProjects:z((0,r.E)().Projects.Guest_projects)},a=t?{scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1}:B;for(let t of e)!a.scheduledUpdate&&t.right?.startsWith(`1`)&&t.on>0&&(n.push(i.scheduledUpdate),a.scheduledUpdate=!0),!a.manualUpdate&&t.right?.startsWith(`1`)&&t.on===0&&(n.push(i.manualUpdate),a.manualUpdate=!0),!a.guestProjects&&t.right?.startsWith(`0`)&&t.on>=0&&(n.push(i.guestProjects),a.guestProjects=!0),n.push(t);return n},V=e=>({...e,externalLink:Oe(e.url??``),listItemProps:{class:`top-projectSelector_item`,attrs:{title:e.name}}}),Te=(e,t,n)=>!e||e.length===0?[]:(t&&Object.keys(B).forEach(e=>B[e]=!1),we(e.map(V),n)),Ee=e=>{e=e.replace(/#.*/,``);let t=location.hash;return t=t.replace(/%22historyView%22:[^,]*,/,``),t=t.replace(/%22modelsKeys%22:\[[^\]]*],/,``),t=t.replace(/%22competitorsIds%22:\[[^\]]*],/,``),t=t.replace(/%22searchersKeys%22:\[[^\]]*],/,``),t=t.replace(/%22regionIndex%22:[^,]*,/,``),t=t.replace(/%22regionsIndexes%22:\[[^\]]*],/,``),t=t.replace(/%22folderId%22:[^,]*,/,``),t=t.replace(/%22groupId%22:[^,]*,/,``),t=t.replace(/%22tagsIds%22:\[[^\]]*],/,``),/%22dataSort%22:\{[^}]*0000-00-00[^}]*}/.test(t)||(t=t.replace(/,?%22dataSort%22:\{[^}]*}(,?)/,`$1`)),e+t},De=e=>{location.href=H(e)},H=e=>{let t=U(),n=location.pathname.split(`/`),r=`project/dynamics/`,i=``;n[1]==`project`&&(r=n[1]+`/`+n[2]+`/`),n[2]==`settings`&&(i=location.hash),[`watcher`,`indexing`,`sitemap`,`audit`,`direct`,`adwords`].includes(n[4])&&(i=n[4]+`/`);let a=`https://`+t+`/`+r+e+`/`+i;return a=Ee(a),a},U=()=>window.page?.subdomain?window.location.host.replace(window.page?.subdomain+`.`,``):window.location.host,Oe=e=>{let t=e.startsWith(`http`)?e:`https://`+e;return t=t.replace(/"/g,`%22`),t},ke=(e,t)=>{let n=e.params.filters??[];n=n.filter(e=>e.name!==`GEN_SEARCH_STRING()`);let r=(0,d.invertKeyboardLayout)(t),a=t.replace(/([[^$.|?*+()])/g,`\\$1`),o=r.replace(/([[^$.|?*+()])/g,`\\$1`);t&&n.push((0,i.t)(`GEN_SEARCH_STRING()`,`REGEXP`,[`(${a}|${o})`])),e.changeParams({filters:n})},Ae=e=>{let t=e.gen(`/get/projects_2/projects/`,[`id`,`user_id`,`name`,`url`,`on`,`right`]);return t.changeParams({filters:[(0,i.t)(`on`,`GREATER_THAN_EQUALS`,[0])],orders:[(0,i.n)(`user_id`,`DESC`,[r.O.state.userId]),(0,i.n)(`on`,`ASC`,[0]),(0,i.n)(`favorite`,`DESC`),(0,i.n)(`ord`,`ASC`),(0,i.n)(`id`,`DESC`)]}),t.options.loadingShowSpinner=!1,t.options.onApiLoaded=(e,t,n)=>{let r=t.data.filters.length>1,i=t.data.offset===0,a=t.data.offset===void 0||i&&!r,o=r;e.result=Te(e.result,a,o),n?.(e,t)},t},je=e=>e.gen(`/add/projects_2/projects/`),Me={class:`top-ellipsis1`},Ne=(0,m.defineComponent)({__name:`submenu`,props:{id:{}},setup(e){let t=e,n=(0,r.E)(),i=U(),a=e=>{let t=[{href:`https://${i}/project/keywords/${e.id}/`,title:n.Common.Menu_phrases,icon:``,right:`2`},{href:`https://${i}/project/dynamics/${e.id}/`,title:n.Common.Menu_dynamics,icon:``,right:`1`},{href:`https://${i}/project/snapshots/${e.id}/`,title:n.Common.Menu_snapshots,icon:``,right:`1`},{href:`https://${i}/project/competitors/${e.id}/`,title:n.Common.Menu_competitors,icon:``,right:`1`},{href:`https://${i}/project/ai-tracker/${e.id}/`,title:n.Common.Menu_aiTracker,icon:``,right:`1`},{href:`https://${i}/project/analytics/${e.id}/`,title:n.Common.Menu_analytics,icon:``,right:`5`},{href:`https://${i}/project/broker/${e.id}/`,title:n.Common.Menu_broker,icon:``,right:`6`},{href:`https://${i}/project/audit/${e.id}/sitemap/`,title:n.Audit.Sitemap_gen,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/audit/`,title:n.Common.Menu_audit,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/indexing/`,title:n.Audit.Indexing,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/watcher/`,title:n.Audit.Watcher,icon:``,right:`9`},{href:`https://${i}/project/settings/${e.id}/`,title:n.Common.Menu_settings,icon:``,right:`2`}].filter(e=>!Object.entries(r.O.state.closedByMod).some(([t,n])=>n&&e.href.includes(`/${t}/`)));return e.right.includes(`0`)?t.filter(t=>e.right[t.right]===`1`):t};return(e,n)=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.s),{id:t.id,class:`top-projectSelectorSubmenu`,notch:!1,pos:`2`},{contentList:(0,m.withCtx)(({data:t})=>[t?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(a(t.projectItem),t=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.o),{href:t.href,title:t.title,"data-top-icon":t.icon,"data-right":t.right},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.$core.state.isMobile?t.title:``),1)]),_:2},1032,[`href`,`title`,`data-top-icon`,`data-right`]))),256)),(0,m.createVNode)((0,m.unref)(f.o),{href:t.projectItem.externalLink,title:t.projectItem.externalLink,class:`top-ellipsis`,"data-top-icon":``,target:`_blank`},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,Me,(0,m.toDisplayString)(e.$core.state.isMobile?t.projectItem.externalLink:``),1)]),_:2},1032,[`href`,`title`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`id`]))}}),Pe=1440*60*1e3,W=(0,m.ref)(null),G=(0,m.shallowRef)(),K=e=>{localStorage.setItem(`ui_project_selector_total:`+r.O.state.userId,JSON.stringify({projectsTotal:e,expiresAt:Date.now()+Pe}))},Fe=()=>{let e=localStorage.getItem(`ui_project_selector_total:`+r.O.state.userId);if(!e)return;let{projectsTotal:t,expiresAt:n}=JSON.parse(e);if(Date.now()>n){localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId);return}return t},Ie=()=>{W.value=null,G.value=void 0,localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId),(0,p.d)(`/get/projects_2/projects/`)},Le={class:`top-projectSelector_itemText`},Re={class:`top-comment`},ze={key:0,class:`top-comment`},Be=[`href`],q=1e3,Ve=(0,m.defineComponent)({__name:`projectSelector`,props:(0,m.mergeModels)({modelValue:{},client:{},menuMode:{type:Boolean},excludeProjectId:{},openerShortcut:{},modificator:{},placeholder:{},buttonProps:{default:()=>({color:`theme`,styling:`outline`})}},{modelValue:{default:()=>({id:null,name:``})},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=(0,r.E)(),n=e,i=(0,m.useModel)(e,`modelValue`),a=Ae(n.client),o=je(n.client),s=(0,m.ref)(Fe()),u=(0,m.ref)(null),d=(0,m.useId)(),h=(0,m.computed)(()=>n.placeholder??t.Projects.Select_project),g=(0,m.computed)(()=>!G.value||!n.excludeProjectId?G.value:G.value.filter(e=>e.id!==n.excludeProjectId)),_=(0,m.computed)(()=>{if(!(!s.value&&s.value!==0))return s.value<q?`static`:`api`}),v=async()=>{W.value||=a.call();let e=await W.value;return W.value=null,e},y=async e=>{let t=await o.changeParams({url:e.name,name:e.name}).call();if(!t.errors){if(G.value&&_.value===`static`){let n=V({id:t.result,user_id:r.O.state.userId,name:e.name,url:e.name,on:0,right:`11111111111111111111`}),i=G.value.findIndex(e=>e.on===0);G.value=[...G.value.slice(0,i),n,...G.value.slice(i)],s.value&&(s.value+=1,K(s.value))}_.value===`api`&&u.value?.resetCache(!0)}},b=async()=>{if(G.value||_.value===`api`)return;let e=await v();e.errors||(G.value=e.result)},x=async()=>{if(s.value){let e=u.value?.popupOpenerRef?.$el;e&&e.addEventListener(`pointerenter`,()=>b(),{once:!0})}else{a.changeParams({limit:q});let e=await v();if(e.errors)return;delete a.params.limit,s.value=e.total??void 0,!G.value&&_.value!==`api`&&(G.value=e.result),s.value&&K(s.value)}};return(0,m.onMounted)(async()=>{await x()}),(t,n)=>{let r=(0,m.resolveComponent)(`TopButton`);return(0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[((0,m.openBlock)(),(0,m.createBlock)(p.s,{key:_.value??`dummy`,ref_key:`refSelector`,ref:u,class:`top-projectSelector`,modelValue:i.value,"onUpdate:modelValue":n[1]||=t=>e.menuMode?(0,m.unref)(De)(t.id):i.value=t,items:g.value,itemsChunkSize:100,itemsIsLoading:_.value===`static`&&(0,m.unref)(G)===void 0,title:t.$i18n.Projects.Search_projects,modificator:e.modificator,searchFields:[`id`,`name`,`url`],placeholder:h.value,hasCloserBtn:``,api:_.value===`api`?(0,m.unref)(a):void 0,apiSetSearchParams:_.value===`api`?(...e)=>(0,m.unref)(ke)(...e):void 0,useCache:``,appendSearchToResult:``,appendSearchAllowDuplicate:``,appendSearchToResultCond:(0,m.unref)(c.validUrl),appendWithoutSelect:``,buttonProps:{...e.buttonProps,isProgress:!_.value,disabled:!_.value},openerShortcut:e.openerShortcut,onAppendItem:y,onOpen:b},{item:(0,m.withCtx)(({item:i})=>[(0,m.createElementVNode)(`div`,Le,[i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createTextVNode)((0,m.toDisplayString)((0,m.unref)(l.ellipsis)(i.name,20))+` `,1),(0,m.createElementVNode)(`span`,Re,` id `+(0,m.toDisplayString)(i.id),1)],64)):((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:1},[i.listItemProps?.type?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createElementBlock)(`div`,ze,(0,m.toDisplayString)(t.$i18n.Projects.Add_project)+`: `,1)),(0,m.createTextVNode)(` `+(0,m.toDisplayString)(i.name),1)],64))]),i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[e.menuMode?((0,m.openBlock)(),(0,m.createElementBlock)(`a`,{key:0,class:`top-projectSelector_itemLink`,href:(0,m.unref)(H)(i.id)},null,8,Be)):(0,m.createCommentVNode)(``,!0),t.$core.state.isMobile?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createBlock)(r,{key:1,href:i.externalLink,"data-top-icon":``,color:`theme`,target:`_blank`,onClick:n[0]||=(0,m.withModifiers)(()=>{},[`stop`])},null,8,[`href`])),(0,m.createVNode)(f.c,{id:(0,m.unref)(d),pos:`2`,notch:!1,data:{projectItem:i}},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(r,{class:`top-popup_listMore`,"data-top-icon":``,color:`theme`})]),_:1},8,[`id`,`data`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`modelValue`,`items`,`itemsIsLoading`,`title`,`modificator`,`placeholder`,`api`,`apiSetSearchParams`,`appendSearchToResultCond`,`buttonProps`,`openerShortcut`])),(0,m.createVNode)(Ne,{id:(0,m.unref)(d)},null,8,[`id`])],64)}}}),J=e=>`-`+e,Y=e=>e[0]===`-`?e.substring(1):e,X=(e,t)=>{e=Y(e);let n=t.find(t=>t.id===e);if(n)return n},He=(e,t,n)=>{t||={id:e.id},t.id=e.id,t.pos??=`3`,t.notch??=!0,t.posBy??=`fixed`;let r=o.t.genElPopupOpener(`div`,t);return r.classList.add(`top-tagSelector`),e.useTopButton&&r.classList.add(`top-tagSelector-useTopButton`,`top-button`,`top-color_theme`,`top-as-selector`),e.useTopButton||r.classList.add(`top-tagSelector-custom`),e.mode===`filter`&&r.classList.add(`top-tagSelector-filter`),e.mode===`setter`&&!e.filters&&r.classList.add(`top-tagSelector-setter_single`),e.mode===`setter`&&e.filters&&r.classList.add(`top-tagSelector-setter_several`),r.onclick=t=>{t.preventDefault(),t.stopPropagation(),r.onclick=null;let i=(0,m.ref)(e.modelValue),o={model:i,mode:e.mode,targetId:e.targetId,filters:e.filters,payload:e.payload};(0,a.storage)(r,`topTagSelectorTarget`,o),delete r.dataset.topPopupDisabled,(0,m.isRef)(e.modelValue)||(0,m.watch)(i,()=>{e.modelValue=i.value,Z(r,e,n)}),r.click()},(0,m.isRef)(e.modelValue)?(0,m.watch)(e.modelValue,()=>Z(r,e,n)):(0,a.storage)(r,`topTagSelectorRender`,t=>{e.modelValue=t;let i=(0,a.storage)(r,`topTagSelectorTarget`);i&&(i.model.value=t),Z(r,e,n)}),Z(r,e,n),r},Ue=(e,t)=>{(0,a.storage)(e,`topTagSelectorRender`)?.(t)},Z=(e,t,n)=>{let i=(0,m.unref)(t.modelValue);if(e.classList.toggle(`top-tagSelector-selectedOne`,!i.length||i.length===1),e.classList.toggle(`top-tagSelector-toTwoLine`,i.length>5),t.mode===`setter`&&t.filters){e.innerHTML=`<div>${n}</div>`;return}if(e.innerHTML=``,!i.length&&t.mode===`filter`){let t=We({id:`all`,colorId:``,name:(0,r.E)().Common?.All_tags??``,state:``});e.append(t)}i.forEach(n=>{let r=We({id:Y(n),colorId:X(n,t.tags)?.color_id??``,name:X(n,t.tags)?.name??``,state:Y(n)===n?`selected`:`excluded`});e.append(r)})},We=e=>{let t=document.createElement(`div`);return t.classList.add(`top-tagSelector_tagIcon`),t.classList.toggle(`top-tagSelector-active`,!!e.state),t.classList.toggle(`top-tagSelector-excluded`,e.state===`excluded`),t.dataset.tag_id=e.id,t.dataset.tag_color_id=e.colorId,t.title=e.name,t},Ge=[{id:`1`,name:`Without Tag`,color_id:`1`},{id:`2`,name:`Red`,color_id:`2`},{id:`3`,name:`Orange`,color_id:`3`},{id:`4`,name:`Yellow`,color_id:`4`},{id:`5`,name:`Blue`,color_id:`5`},{id:`6`,name:`Purple`,color_id:`6`},{id:`7`,name:`Green`,color_id:`7`},{id:`8`,name:`Magenta`,color_id:`8`},{id:`9`,name:`Dark blue`,color_id:`9`},{id:`10`,name:`Turquoise`,color_id:`10`}],Ke=[`data-tag_id`,`data-tag_color_id`,`title`],Q=(0,m.defineComponent)({__name:`tagIcon`,props:{id:{},colorId:{},name:{},state:{}},setup(e){return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),"data-tag_id":e.id,"data-tag_color_id":e.colorId,title:e.name},null,10,Ke))}}),qe=[`contenteditable`,`onKeydown`],Je=(0,m.defineComponent)({__name:`tagPopupListItem`,props:(0,m.mergeModels)({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:(0,m.mergeModels)([`update:name`,`unselect`,`exclude`,`select`],[`update:name`]),setup(e,{emit:t}){let n=e,r=t,i=(0,m.useModel)(e,`name`),a=(0,m.ref)(null),o=(0,m.computed)(()=>navigator.userAgent.indexOf(`Firefox`)==-1?{}:{contenteditable:s.value,onpaste:e=>e.preventDefault()}),s=(0,m.ref)(!1),c=async()=>{s.value=!0,await(0,m.nextTick)(),a.value?.focus()},l=()=>{let e=a.value?.innerText;if(!e)return u();a.value&&(a.value.innerText=e),s.value=!1,r(`update:name`,e)},u=async()=>{a.value&&(a.value.innerText=n.name),s.value=!1},d=e=>{if(s.value||n.disabled)return;let t=`selected`;n.canExclude&&(e.ctrlKey||e.metaKey)&&(t=`excluded`),n.state==t&&(t=``),t===``&&r(`unselect`),t===`selected`&&r(`select`),t===`excluded`&&r(`exclude`)};return(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":e.disabled,"top-tagSelector_tagListItem-canExclude":e.canExclude,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),onClick:(0,m.withModifiers)(d,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(Q,{id:e.id,name:i.value,colorId:e.colorId,state:e.state},null,8,[`id`,`name`,`colorId`,`state`]),(0,m.createElementVNode)(`span`,(0,m.mergeProps)({ref_key:`elName`,ref:a,class:`top-tagSelector_tagListItemName`,contenteditable:s.value?`plaintext-only`:!1},o.value,{onKeydown:[(0,m.withKeys)((0,m.withModifiers)(l,[`stop`]),[`enter`]),(0,m.withKeys)((0,m.withModifiers)(u,[`stop`]),[`esc`])]}),(0,m.toDisplayString)(i.value),17,qe),e.editable?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[s.value?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:(0,m.withModifiers)(l,[`stop`])})):((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:0,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:c}))],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`class`]))}}),Ye={key:1},Xe=(0,m.defineComponent)({inheritAttrs:!1,__name:`popupOpener`,props:(0,m.mergeModels)({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{attrs:t}){let n=e,i=(0,m.useModel)(e,`modelValue`),a=n.useTopButton?r.h:`div`,o=n.useTopButton?`html`:`default`,s={model:i,mode:n.mode,targetId:n.targetId,filters:n.filters,payload:n.payload};return(r,c)=>{let l=(0,m.resolveDirective)(`top-data`);return(0,m.openBlock)(),(0,m.createBlock)(f.c,{id:e.id},{default:(0,m.withCtx)(()=>[(0,m.withDirectives)(((0,m.openBlock)(),(0,m.createBlock)((0,m.resolveDynamicComponent)((0,m.unref)(a)),(0,m.mergeProps)({class:{"top-tagSelector":!0,"top-tagSelector-useTopButton":n.useTopButton,"top-tagSelector-custom":!n.useTopButton,"top-as-selector":n.useTopButton,"top-tagSelector-filter":n.mode===`filter`,"top-tagSelector-setter_single":n.mode===`setter`&&!e.filters,"top-tagSelector-setter_several":n.mode===`setter`&&e.filters,"top-tagSelector-selectedOne":!i.value.length||i.value.length===1,"top-tagSelector-toTwoLine":i.value.length>5},color:`theme`,styling:e.styling},t),{[(0,m.unref)(o)]:(0,m.withCtx)(()=>[!i.value.length&&e.mode===`filter`?((0,m.openBlock)(),(0,m.createBlock)(Q,{key:0,id:`all`,colorId:``,name:r.$i18n.Common.All_tags??``,state:``},null,8,[`name`])):(0,m.createCommentVNode)(``,!0),e.mode===`setter`&&e.filters?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Ye,[(0,m.renderSlot)(r.$slots,`default`)])):((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,{key:2},(0,m.renderList)(i.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Q,{id:(0,m.unref)(Y)(t),colorId:(0,m.unref)(X)(t,e.tags)?.color_id??``,name:(0,m.unref)(X)(t,e.tags)?.name??``,state:(0,m.unref)(Y)(t)===t?`selected`:`excluded`},null,8,[`id`,`colorId`,`name`,`state`]))),256))]),_:2},1040,[`class`,`styling`])),[[l,s,`topTagSelectorTarget`]])]),_:3},8,[`id`])}}}),Ze=(0,m.defineComponent)({__name:`tagSelector`,props:(0,m.mergeModels)({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},useTopButton:{type:Boolean,default:!0},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:(0,m.reactive)(Ge)},tagsModifiers:{}}),emits:(0,m.mergeModels)([`selector`,`setter`,`tagsChanged`],[`update:modelValue`,`update:tags`]),setup(e,{emit:t}){let n=(0,r.E)(),i=e,o=(0,m.useModel)(e,`modelValue`),s=(0,m.useModel)(e,`tags`),c=t,l=(0,r.P)((e,t)=>{c(e,t)},i.emitDelay);i.singleMode&&!o.value.length&&(o.value=[s.value[0].id]);let u=i.id??`top-popup-id-`+Math.random(),d=(0,m.ref)(`add`),p=()=>{let e=` `+n.Common.Tags?.toLowerCase(),t=new Map;return t.set(`add`,{value:`add`,title:n.Common.Add+e}),t.set(`replace`,{value:`replace`,title:n.Common.Replace+e}),t.set(`delete`,{value:`delete`,title:n.Common.Delete+e}),t},h=(0,m.shallowRef)({model:o,mode:`filter`,targetId:void 0,filters:void 0,payload:void 0});(0,m.watch)(o,()=>{l(`selector`,o.value)});let g=(0,m.computed)(()=>{if(h.value.mode===`setter`&&i.maxTagsForSetter&&!h.value.filters)return h.value.model.value.length>=i.maxTagsForSetter}),_=e=>{if(e!==`all`){if(h.value.model.value.includes(e))return`selected`;if(h.value.model.value.includes(J(e)))return`excluded`}return e===`all`&&!h.value.model.value.length?`selected`:``},v=(e,t)=>{let n=J(e),r=h.value.model.value.filter(t=>t!==e&&t!==n);t===`select`&&r.push(e),t===`exclude`&&r.push(n),h.value.mode===`setter`&&h.value.targetId!==void 0&&i.requiredForSetter&&(r.length||r.push(`1`),r.length===2&&h.value.model.value.length===1&&h.value.model.value[0]===`1`&&(r=r.filter(e=>e!==`1`))),i.singleMode&&!h.value.filters&&(r.length||(r=h.value.model.value),r.length>1&&(r=[r[r.length-1]])),r.sort((e,t)=>i.tags?i.tags.findIndex(t=>t.id===e)-i.tags.findIndex(e=>e.id===t):0),h.value.model.value=r,h.value.mode===`setter`&&h.value.targetId!==void 0&&l(`setter`,{tagsIds:r,targetId:h.value.targetId,payload:h.value.payload})},y=(0,m.computed)(()=>{let e=`top-tagSelector_popup`;return h.value.mode===`filter`&&(e+=` top-tagSelector_popup-filter`),h.value.mode===`setter`&&(e+=` top-tagSelector_popup-setter`),e}),b=()=>{let e=prompt(``,`New tag`);if(!e||e===`New tag`)return;let t=s.value.length+1;s.value.push({id:String(t),name:e,color_id:String((t-1)%10+1)}),c(`tagsChanged`,s.value)},x=e=>{if(h.value=(0,a.storage)(e.elPopupOpener,`topTagSelectorTarget`),!h.value)throw Error(`Open popup TopTagSelector required v-data:topTagSelectorTarget`);if(h.value.filters&&(d.value=`add`,h.value.model.value=[]),!r.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}!r.O.state.isMobile&&!r.O.state.isMobileUA&&s.value&&$(e.elPopup).sortable({items:`li:has([data-tag_id]:not([data-tag_id="all"]))`,cancel:`[contenteditable="plaintext-only"], [contenteditable="true"]`,distance:10,stop:function(e,t){if(!s.value)return;let n=$(t.item).parent().find(`[data-tag_id]`),r=[];n.each((e,t)=>{if(!s.value)return;let n=$(t).attr(`data-tag_id`);r.push(n)}),s.value.sort((e,t)=>r.findIndex(t=>t===e.id)-r.findIndex(e=>e===t.id)),l(`tagsChanged`,s.value)}})},S=e=>{r.O.$?.ui.sortable&&$(e.elPopup).data(`ui-sortable`)&&$(e.elPopup).sortable(`destroy`)};return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[(0,m.createVNode)(Xe,{modelValue:o.value,"onUpdate:modelValue":n[0]||=e=>o.value=e,id:(0,m.unref)(u),tags:s.value,styling:e.styling,mode:`filter`,useTopButton:e.useTopButton},null,8,[`modelValue`,`id`,`tags`,`styling`,`useTopButton`]),(0,m.createVNode)(f.s,{id:(0,m.unref)(u),class:(0,m.normalizeClass)(y.value),onOpen:n[4]||=e=>x(e),onClose:n[5]||=e=>S(e),"transition-duration":50},(0,m.createSlots)({contentList:(0,m.withCtx)(()=>[h.value.mode===`filter`&&!e.singleMode?((0,m.openBlock)(),(0,m.createBlock)(Je,{key:0,id:`all`,colorId:``,name:t.$i18n.Common.All_tags??``,state:h.value.model.value.length?``:`selected`,onSelect:n[3]||=e=>h.value.model.value=[]},null,8,[`name`,`state`])):(0,m.createCommentVNode)(``,!0),((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(s.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Je,{key:t.id,id:t.id,colorId:t.color_id,name:t.name,state:_(t.id),canExclude:h.value.mode===`filter`&&!e.singleMode,editable:e.tagsEditable,disabled:g.value&&_(t.id)===``,onUnselect:e=>v(t.id,`unselect`),onSelect:e=>v(t.id,`select`),onExclude:e=>v(t.id,`exclude`),"onUpdate:name":e=>{t.name=e,(0,m.unref)(l)(`tagsChanged`,s.value)}},null,8,[`id`,`colorId`,`name`,`state`,`canExclude`,`editable`,`disabled`,`onUnselect`,`onSelect`,`onExclude`,`onUpdate:name`]))),128)),e.tagsEditable&&s.value.length<e.tagsMax&&s.value.length<20?((0,m.openBlock)(),(0,m.createBlock)(f.o,{key:1,"data-top-icon":``,onClick:(0,m.withModifiers)(b,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Add),1)]),_:1})):(0,m.createCommentVNode)(``,!0)]),_:2},[h.value.mode===`setter`&&h.value.filters?{name:`header`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.n,{modelValue:d.value,"onUpdate:modelValue":n[1]||=e=>d.value=e,options:p()},null,8,[`modelValue`,`options`])]),key:`0`}:void 0,h.value.mode===`setter`&&h.value.filters?{name:`footer`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{color:`theme`},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Cancel),1)]),_:1}),(0,m.createVNode)(r.h,{onClick:n[2]||=e=>(0,m.unref)(l)(`setter`,{tagsIds:h.value.model.value,filters:h.value.filters,filtersAction:d.value,payload:h.value.payload})},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(d.value===`add`?t.$i18n.Common.Add:``)+` `+(0,m.toDisplayString)(d.value===`replace`?t.$i18n.Common.Replace:``)+` `+(0,m.toDisplayString)(d.value===`delete`?t.$i18n.Common.Delete:``),1)]),_:1})]),key:`1`}:void 0]),1032,[`id`,`class`])],64))}});t.TopGroupSelector=Ce,t.topProjectSelectorClearCache=Ie,t.TopProjectSelector=Ve,t.genElTopTagSelectorPopupOpener=He,t.renderElTopTagSelectorPopupOpener=Ue,t.TopTagSelectorTagIcon=Q,t.TopTagSelectorPopupOpener=Xe,t.TopTagSelector=Ze});
var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../.chunks/field-DEusYVqS.amd`,`../utils/dom.amd`,`../.chunks/worker-D28QqQ45.amd`,`../.chunks/utils-B1P0BzZ1.amd`,`../utils/check.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`../utils/keyboard.amd`,`../.chunks/popup-DViuKwOc.amd`,`../.chunks/formsExt-oTFg1-Nv.amd`,`vue`,`../.chunks/api-BD74aA98.amd`,`../.chunks/app-BaHwxbWz.amd`,`../require/css.amd!../assets/project.css`],function(e,t,r,i,a,o,s,c,l,u,d,f,p,m){"use strict";if(h===void 0)var h=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useItemsFromCompetitors=t.topProjectSelectorClearCache=t.renderElTopTagSelectorPopupOpener=t.genSearcherByKey=t.genElTopTagSelectorPopupOpener=t.findRegion=t.dialogRegionSelector=t.TopTagSelectorTagIcon=t.TopTagSelectorPopupOpener=t.TopTagSelector=t.TopRegionSelector=t.TopProjectSelector=t.TopGroupSelector=t.TopCompetitorSelector=void 0;var g={class:`top-competitorSelector`},_={class:`top-ellipsis1`},v=(0,m.defineComponent)({__name:`competitorSelector`,props:(0,m.mergeModels)({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0},selectAllItemIcon:{default:``}},{modelValue:{},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,m.useModel)(e,`modelValue`),i=(0,m.computed)(()=>{if(t.showSelectAllItem)return{icon:t.selectAllItemIcon,title:(0,r.E)().Common.Select_all,value:`all`,content:``}});return(t,a)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,g,[(0,m.unref)(r.O).state.isMobile?((0,m.openBlock)(),(0,m.createBlock)(f.s,{key:0},{opener:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{class:`top-competitorSelector_opener`,color:`theme`,icon:``,icon2:``},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.items.find(e=>e.value===n.value?.[0])?.content),1)]),_:1})]),contentList:(0,m.withCtx)(()=>[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(e.items,e=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-active":n.value?.includes(e.value)}),"data-top-icon":e.icon,title:e.title,onClick:()=>n.value=[e.value]},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,_,(0,m.toDisplayString)(e.content),1)]),_:2},1032,[`class`,`data-top-icon`,`title`,`onClick`]))),256))]),_:1})):((0,m.openBlock)(),(0,m.createBlock)(p.p,{key:1,modelValue:n.value,"onUpdate:modelValue":a[0]||=e=>n.value=e,items:e.items,isMultiple:!0,styling:`bar`,canBeEmptyMultiple:!1,selectAllItem:i.value},null,8,[`modelValue`,`items`,`selectAllItem`]))]))}}),y=(e,t)=>(0,m.computed)(()=>(0,m.toValue)(e).filter(e=>e.on>=0||e.id===t).map(e=>({value:e.id,title:e.url+` [${e.id}]`,icon:e.id===(0,m.toValue)(t)?``:``,content:e.name}))),b={0:`Yandex`,1:`Google`,4:`YouTube`,5:`Bing`,7:`Seznam`,8:`AppStore`,9:`GoogleStore`,20:`Yandex.com`,21:`Yandex.com.tr`,22:`YandexLive`},x={key:-2,name:`--`,index:-2},S={key:-2,name:`--`,regions:[x],regionByIndex:new Map([[-2,x]])},C={key:-2,name:`Autoselect`,index:-2},w={key:-2,name:`Autoselect`,regions:[C],regionByIndex:new Map([[-2,C]])},T={countryCode:`00`,depth:1,device:0,key:-1,index:-1,lang:`ru`,name:`Without region`},ee=()=>(C.name=(0,r.E)().Common.Autoselect,C),te=()=>(ee(),w.name=(0,r.E)().Common.Autoselect,console.log(w),w),ne=()=>(T.name=(0,r.E)().Keywords.Without_region,T),E=(e=``,t=!1,n=[])=>{let r;return r=e?re(n,e):D(n),t&&r.set(-2,te()),r.size||r.set(-2,S),r},D=(e,t=!0,n=[],r=``)=>{let i=new Map;return e.forEach(e=>{if(r!==`project_relevant_url`&&!e.enabled||r&&typeof e.key==`number`&&e.key>1)return;let a={...e};a.regionByIndex=new Map,e.regions&&e.regions.forEach(e=>{if(t&&!e.enabled)return;let n={...e};a.regionByIndex.set(n.index,n)}),!a.regionByIndex.size&&n.length,(!e.regions||a.regionByIndex.size||n.length)&&i.set(a.key,a)}),n.forEach(e=>{if(i.has(e))return;let t={key:e,name:b[e],regions:[],regionByIndex:new Map};i.set(t.key,t)}),i},re=(e,t)=>{let n=D(e,!1,r.O.state.forceSearchersKeysForKeywordsStats,t);if(n.has(2)){let e=n.get(2);e&&(e.regionByIndex=new Map)}return(t===`volume`||t===`cost_forecast`)&&r.O.state.showGlobalRegionForKeywordsStats&&n.forEach(e=>{if(!e.regionByIndex)return;let t={...ne()};e.regionByIndex.set(t.index,t)}),n},O=(e,t,n=[])=>{let r=E(e,!1,n),i;return r.forEach(n=>{if((t.searcher_key===void 0||t.searcher_key==n.key)&&n.regions&&(n.regions.forEach(r=>{if(!i&&(t.key===void 0||t.key==r.key)&&(t.index===void 0||t.index==r.index)&&!(!e&&(t.lang!==void 0&&t.lang!=r.lang||t.device!==void 0&&t.device!=r.device)))return r.searcher_key=n.key,i=r,!1}),i))return!1}),i},k=(0,s.t)(()=>new Promise((t,n)=>{e([`../.chunks/dialog_regionSelectorRegions-CN3F-67P.amd`],t,n)}).then(__importStar)),ie=(e,t)=>{let n=(0,r.E)();return{searcherKey:(0,m.ref)(t.value.keys().next().value??-2),optionBySearcherKey:(0,m.computed)(()=>{let r=new Map;if(t.value.forEach(t=>{let n={value:t.key,title:t.name};e.addSearcherIcon&&(n.icon=(0,u.getSearcherGIcon)(t.key)),r.set(t.key,n)}),e.addCompare&&!r.has(-2)){let e={value:``,title:`--------------------`,disabled:!0};r.set(e.value,e);let t={value:-1,title:n.Common.Compare};r.set(t.value,t)}return r})}},ae=(e,t)=>{let n=(0,r.E)(),i=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),a=(0,m.ref)(-2);e.modelValue.length===1&&(a.value=e.modelValue[0]),a.value===-2&&(a.value=i.value?t.value?.regionByIndex.values().next().value?.key??-2:t.value?.regionByIndex.keys().next().value??-2);let o=(0,m.computed)(()=>{let e=new Map;return t.value.regionByIndex?.forEach(r=>{let a=r.name;if(i.value){let t={value:r.key,title:a};e.has(r.key)||e.set(r.key,t);return}r.device&&(a+=` (`+n.Common[`Device_`+r.device]+`)`);let o=(0,u.getLangLabel)(t.value.key||0,r.lang??``);o&&(a+=` / `+o);let s={value:r.index,title:a,icon:r.device?(0,u.getDeviceGIcon)(r.device):void 0};e.set(r.index,s)}),e});return(0,m.watch)(o,(t,r)=>{if(e.onlySearcher||a.value!==void 0&&t.get(a.value))return;let i=t.keys().next().value;if(a.value===-2||i===-2){a.value=i;return}let o=r?.get(a.value)?.title||``,s=-1;for(let[e,r]of t.entries()){let t=r.title;if(typeof t!=`string`||typeof e==`string`)break;if(t===o){i=e;break}let a=RegExp(` \\((${n.Common.Device_1}|${n.Common.Device_2})\\)`),c=o,l=3;t.indexOf(c)===-1&&(c=o.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),c=c.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)!==-1&&(l<=s||(s=l,i=e))}a.value=i}),{regionIndex:a,optionByRegionIndex:o}},oe=(e,t,n)=>{let r=(0,m.ref)([]),i=()=>{if(e.onlySearcher&&t.value){r.value=Array.from(t.value.keys());return}let i=[];if(e.modelValue.length>1)i=[...e.modelValue];else try{i=JSON.parse(localStorage.getItem(`ui:project:regionSelector`+e.projectId+`:regionsIndexes`))??[]}catch{}i.length&&(i=i.filter(e=>n.value.has(e))),i.length||(i=Array.from(n.value)),r.value=[...i]},a=()=>{r.value.length?localStorage.setItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`,JSON.stringify(r.value)):localStorage.removeItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`)};return(0,m.watch)(r,()=>{a()}),e.addCompare&&i(),{regionsIndexes:r}},se=e=>{let t=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),n=(0,m.computed)(()=>E(e.forMode,e.autoRegion,e.searchers)),r=(0,m.computed)(()=>n.value.get(a.searcherKey.value)||S),i=(0,m.computed)(()=>{let e=new Set;return n.value.forEach(t=>{t.regionByIndex.forEach(t=>{t.index!==-1&&t.index!==-2&&e.add(t.index)})}),e}),a=ie(e,n),o=ae(e,r),s=oe(e,n,i);(0,m.watch)(n,()=>{if(e.onlySearcher?s.regionsIndexes.value=Array.from(n.value.keys()):s.regionsIndexes.value=s.regionsIndexes.value.filter(e=>i.value.has(e)),a.searcherKey.value===-1)return;let t=n.value.keys().next().value;n.value.forEach(r=>{if(e.onlySearcher&&r.key===a.searcherKey.value){t=a.searcherKey.value;return}if(o.regionIndex.value&&r.regionByIndex?.has(o.regionIndex.value)&&(t=r.key),!e.onlySearcher){let e;t!==void 0&&(e=n.value.get(t)?.regionByIndex);let i=n.value.get(r.key)?.regionByIndex;e?.has(-2)&&!i?.has(-2)&&(t=r.key)}}),t!==void 0&&(a.searcherKey.value=t),o.regionIndex.value!==void 0&&!(r.value?.regionByIndex)?.has(o.regionIndex.value)&&(o.regionIndex.value=r.value?.regions?.keys().next().value)},{immediate:!0});let c=()=>{if(a.searcherKey.value!==-1&&a.searcherKey.value!==-2)return a.searcherKey.value},l=()=>{if(e.onlySearcher||o.regionIndex.value===-2)return;let n=o.regionIndex.value;if(t.value&&e.forMode){let t=o.regionIndex.value;n=O(e.forMode,{searcher_key:c(),key:t},e.searchers)?.index}return n},u=()=>{let e=c();if(e!==void 0)return n.value.get(e)};return{selectSearcher:a,selectRegion:o,compare:s,searcherByKey:n,allRegionsIndexes:i,getSearcher:u,getRegion:()=>{let e=l();if(e!==void 0)return u()?.regionByIndex?.get(e)}}},ce=(0,m.defineComponent)({__name:`regionSelector`,props:(0,m.mergeModels)({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forMode:{},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:[`update:modelValue`,`update:modelValueSingle`],setup(e,{expose:t}){let n=e,i=(0,m.computed)(()=>n.forMode===`volume`||n.forMode===`cost_forecast`),a=(0,m.useModel)(e,`modelValue`),o=(0,m.useModel)(e,`modelValueSingle`),{selectSearcher:s,selectRegion:c,compare:l,searcherByKey:u,allRegionsIndexes:d,getSearcher:f,getRegion:p}=se(n),h=()=>{let e=[];u.value.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.regions.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.index!==-1&&e.push(t)})}),k.open(`regions`,{regions:e,regionsIndexes:l.regionsIndexes.value,"@update:regionsIndexes":e=>l.regionsIndexes.value=e})};return(0,m.watch)([c.regionIndex,s.searcherKey,l.regionsIndexes],()=>{if(s.searcherKey.value===-1&&l.regionsIndexes.value.length){if(JSON.stringify(a.value)===JSON.stringify(l.regionsIndexes.value))return;a.value=[...l.regionsIndexes.value]}else n.onlySearcher?(a.value=[s.searcherKey.value],s.searcherKey.value===-2&&!n.autoRegion&&(a.value.length=0)):(a.value=[c.regionIndex.value],c.regionIndex.value===-2&&!n.autoRegion&&(a.value.length=0));!n.onlySearcher&&!d.value.size&&(s.searcherKey.value=-2)}),o.value&&(0,m.watch)(o,()=>{o.value&&(a.value=[o.value])},{immediate:!0}),(0,m.watch)(a,()=>{if(a.value[0]&&(o.value=a.value[0]),n.onlySearcher){if(!a.value.length||a.value.length===1&&!u.value.has(a.value[0])||a.value.length===1&&a.value[0]===-2&&!n.autoRegion){let e=u.value.keys().next().value;e===-2&&!n.autoRegion&&(e=void 0,o.value=-2),e===void 0?a.value.length=0:a.value=[e];return}if(a.value.length>1&&JSON.stringify(a.value)!==JSON.stringify(l.regionsIndexes.value)){a.value=[...l.regionsIndexes.value];return}}else{let e=[...new Set(a.value)],t=u.value.values().next().value?.regionByIndex?.keys().next().value;if(i.value&&(t=u.value.values().next().value?.regionByIndex?.values().next().value?.key),t===-2&&!n.autoRegion&&(t=void 0,o.value=-2),!e.length)t!==void 0&&e.push(t);else if(e.length===1){let n=d.value;i.value&&(n=new Set,u.value.forEach(e=>{e.regionByIndex.forEach(e=>{e.index!==-1&&e.index!==-2&&n.add(e.key)})})),n.has(e[0])||(e=[],t!==void 0&&e.push(t))}else e=e.filter(e=>d.value.has(e)),!e.length&&t!==void 0&&e.push(t);if(JSON.stringify(a.value)!==JSON.stringify(e)){a.value=e;return}}if(a.value.length!==1||a.value[0]!==(n.onlySearcher?s.searcherKey.value:c.regionIndex.value))if(n.onlySearcher){if(a.value.length===1){s.searcherKey.value=a.value[0];return}s.searcherKey.value=-1;return}else{if(!a.value.length)return;if(a.value.length===1&&s.searcherKey.value!==-1){c.regionIndex.value=a.value[0];let e;for(let t of u.value.values()){for(let n of t.regionByIndex.values())if((i.value?n.key:n.index)===c.regionIndex.value){e=t.key;break}if(e!==void 0)break}e!==void 0&&(s.searcherKey.value=e)}else s.searcherKey.value=-1,l.regionsIndexes.value=[...a.value]}},{immediate:!0}),t({getSearcher:f,getRegion:p}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-regionSelector":!0,"top-regionSelector-onlySearcher":e.onlySearcher})},[(0,m.createVNode)(r.n,{options:(0,m.unref)(s).optionBySearcherKey.value,modelValue:(0,m.unref)(s).searcherKey.value,"onUpdate:modelValue":n[0]||=e=>(0,m.unref)(s).searcherKey.value=e,name:`searcher_key`,addChanger:e.addChanger},null,8,[`options`,`modelValue`,`addChanger`]),!e.onlySearcher&&(0,m.unref)(s).searcherKey.value!==(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.n,{key:0,class:`top-select-region`,options:(0,m.unref)(c).optionByRegionIndex.value,modelValue:(0,m.unref)(c).regionIndex.value,"onUpdate:modelValue":n[1]||=e=>(0,m.unref)(c).regionIndex.value=e,name:i.value?`region_key`:`region_index`,addChanger:e.addChanger,"data-top-icon":e.addRegionIcon?``:void 0},null,8,[`options`,`modelValue`,`name`,`addChanger`,`data-top-icon`])):(0,m.createCommentVNode)(``,!0),e.addCompare&&!e.onlySearcher&&(0,m.unref)(s).searcherKey.value===(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.h,{key:1,name:`compare`,onClick:h,"data-count-compare-regions-indexes":(0,m.unref)(l).regionsIndexes.value.length},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Selected_regions),1)]),_:1},8,[`data-count-compare-regions-indexes`])):(0,m.createCommentVNode)(``,!0)],2))}}),A={id:0,name:`/`,path:`/`};t.TopCompetitorSelector=v,t.useItemsFromCompetitors=y,t.genSearcherByKey=E,t.findRegion=O,t.dialogRegionSelector=k,t.TopRegionSelector=ce;function j(e){return e?(0,r.E)()?.Common.All_folders:`/ (`+(0,r.E)()?.Keywords.Root_folder+`)`}var M=(e,t,n=new Map,r={id:`root`},i=0)=>(r.childsIds=[],r.id&&(r.countAllGroupsActive=r.count_groups_active),e[r.id]&&e[r.id].forEach(a=>{a={...a},r.childsIds.push(a.id),a.id===0&&(a.name=j(t));let o=i>1?`-`.repeat(i-1)+` `:``;o&&!a.name.startsWith(o)&&(a.name=o+a.name),n.set(a.id,a),M(e,t,n,a,i+1),r.childsIds=r.childsIds.concat(a.childsIds),r.id&&a.count_groups_active&&(r.countAllGroupsActive+=a.count_groups_active)}),n),le=(e,t)=>e.gen(`/get/${t}/folders/`,[`id`,`parent_id`,`name`,`path`]).changeParams({orders:[`ord_path`],limit:100});function N(e,t,n){let r=Object.keys(e);return(0,m.watch)(r.map(t=>e[t]),(e,n,i)=>{let a={};e.forEach((e,t)=>{if(!Object.is(e,n[t])){let i=r[t];a[i]={old:n[t],new:e}}}),Object.keys(a).length&&t(a,i)},n)}var ue=[`innerHTML`],de=(0,m.defineComponent)({__name:`folders`,props:(0,m.mergeModels)({folderId:{},folder:{},folders:{},projectId:{},canSelectAll:{type:Boolean},addChanger:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{}},{folderId:{required:!0},folderIdModifiers:{},folder:{default:A},folderModifiers:{}}),emits:[`update:folderId`,`update:folder`],setup(e){let t=e,n=(0,m.useModel)(e,`folderId`),r=(0,m.useModel)(e,`folder`),i=t.client&&!t.folders?le(t.client,t.service):void 0,a=(0,m.ref)(null);(0,m.watch)(()=>t.projectId,()=>{i?.changeParams({project_id:t.projectId}),i?.setOptions({checkFingerprint:`TopGroupSelectorFolders:`+t.projectId}),a.value?.resetCache()},{immediate:!0});let o=(0,m.computed)(()=>M(t.folders??{root:[A]},t.canSelectAll)),s=e=>(t.canSelectAll&&e[0]?.id===0&&(e[0]={...e[0],name:j(!0)}),e);return N({modelFolder:r,modelFolderId:n},async e=>{if(n.value===r.value.id)return;if(e.modelFolder&&!e.modelFolderId){n.value=r.value.id;return}let i=o.value.get(t.folderId);i||=A,r.value=i,n.value=i.id},{immediate:!0}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.c,{class:`top-groupSelector_folder`,modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,items:e.folders?[...o.value.values()]:void 0,"search-type":`inline`,icon:e.addIcon?``:void 0,api:e.folders?void 0:(0,m.unref)(i),apiSetSearchParams:(...e)=>(0,m.unref)(p.d)(...e,`name`),prepareItemsBeforeRender:s,addChanger:e.addChanger,useCache:``},{item:(0,m.withCtx)(({item:e})=>[(0,m.createElementVNode)(`div`,{innerHTML:e.name.replaceAll(/</g,`< `)},null,8,ue)]),_:1},8,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`addChanger`]))}}),P={id:-1,name:`--`,folder_id:A.id,folder_path:A.path},F={id:0,name:`All groups`,folder_id:A.id,folder_path:A.path},I=()=>(F.name=(0,r.E)()?.Common.All_groups,F),L=()=>(F.name=(0,r.E)()?.Keywords.Choose_group,F),fe=(e,t,n)=>(e=[...e],t!==void 0&&(e=e.filter(e=>e.on==Number(t))),n&&n.id&&n.childsIds&&(e=e.filter(e=>e.folder_id===n.id||n.childsIds.includes(e.folder_id))),e),R=(e,t)=>e.gen(`/get/${t}/groups/`,[`id`,`name`,`folder_id`,`folder_path`]).changeParams({folder_id_depth:!0,limit:100}),pe=(e,t)=>e.gen(`/add/${t}/groups/`),me=(e,t)=>e.gen(`/del/${t}/groups/`),he=(e,t)=>e.gen(`/edit/${t}/groups/rename/`),ge={class:`top-groupSelector_groupItem top-ellipsis1`},_e={key:0,class:`top-comment`},ve=[`innerHTML`],ye=[`innerHTML`],be=[`innerHTML`],xe=(0,m.defineComponent)({__name:`groups`,props:(0,m.mergeModels)({groupId:{},group:{},projectId:{},folder:{},groups:{},on:{type:Boolean,default:void 0},canAdd:{type:[String,Boolean]},canEditAndDel:{type:Boolean},canSelectAll:{type:[Boolean,String]},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showPath:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{groupId:{required:!0},groupIdModifiers:{},group:{required:!0},groupModifiers:{}}),emits:(0,m.mergeModels)([`addGroup`,`editGroup`,`delGroup`],[`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,a=n,o=(0,m.useModel)(e,`groupId`),s=(0,m.useModel)(e,`group`),c=r.client&&!r.groups?R(r.client,r.service):void 0,l=r.client?pe(r.client,r.service):void 0,u=r.client?me(r.client,r.service):void 0,d=r.client?he(r.client,r.service):void 0,h=(0,m.ref)(null),g=(0,m.computed)(()=>{if(r.groups!==void 0)return fe(r.groups,r.on,r.folder)}),_=(0,i.t)(`folder_id`,`EQUALS`,[r.folder?.id??0]);c?.changeParams({project_id:r.projectId,folder_id_depth:!0,filters:[_]}),r.on!==void 0&&c?.params.filters?.push((0,i.t)(`on`,`EQUALS`,[Number(r.on)]));let v=e=>{s.value=e,o.value=e.id},y=(e=!1)=>{h.value?.resetCache(e)};N({projectId:()=>r.projectId,folderId:()=>r.folder?.id,canSelectAll:()=>r.canSelectAll},e=>{if(e.projectId&&(c?.changeParams({project_id:r.projectId}),c?.setOptions({checkFingerprint:`TopGroupSelectorGroups:`+r.projectId})),e.folderId&&(_.values=[r.folder?.id??0]),y(),(e.folderId?.old!==void 0||e.canSelectAll?.old!==void 0)&&o.value!==null){let e;r.autoselect===`first`&&(e=g.value?.[0],r.canSelectAll&&(e=(0,m.reactive)(I()))),(r.autoselect===`placeholder`||!e)&&(e=L()),v(e)}},{immediate:!0}),N({modelGroup:s,modelGroupId:o},async e=>{if(o.value!==s.value.id){if(e.modelGroup&&!e.modelGroupId){o.value=s.value.id;return}if(!(r.canAdd&&o.value===null)){if(r.groups){let e=g.value?.find(e=>e.id===o.value);if(!e&&r.canSelectAll&&(e=I()),e)v(e);else{let e=g.value?.[0];e&&!o.value?v(e):v(P)}}if(r.client&&!r.groups&&(o.value||o.value===0&&!r.canSelectAll)){let e=R(r.client,r.service).changeParams({project_id:r.projectId,id:o.value,filters:[_]});e?.setOptions({checkFingerprint:`TopGroupSelectorFindGroup:`+r.projectId});let t=await e.call();if(!t.errors?.length&&!t.result)return;!t.errors&&t.result[0]?v(t.result[0]):v(P)}}}},{immediate:!0});let b=async e=>{if(r.canAdd!==`api`||!l)return;let t=s.value,n=await l.changeParams({project_id:r.projectId,names:[e.name],to_id:r.folder?.id??A.id,to_type:`in_folder_last`}).call();if(n.result){let e=n.result[0];v(e),a(`addGroup`,e)}else v(t);h.value?.resetCache(!0)},x=async(e,t)=>{d&&((await d.changeParams({project_id:r.projectId,id:e.id,name:t}).call()).errors||(s.value.id===e.id&&(s.value.name=t),a(`editGroup`,{id:e.id,name:t}),h.value?.updateCacheItemById(e.id,{name:t})))},S=async e=>{u&&((await u.changeParams({project_id:r.projectId,id:e.id}).call()).errors||(s.value.id===e.id&&v(r.canSelectAll?I():P),a(`delGroup`,e.id),h.value?.deleteCacheItemById(e.id)))};return t({resetCacheGroups:y}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.c,{ref_key:`refSelector`,ref:h,class:`top-groupSelector_group`,modelValue:s.value,"onUpdate:modelValue":n[0]||=e=>s.value=e,items:g.value??e.groups,searchType:`inline`,icon:e.addIcon?``:void 0,api:e.groups?void 0:(0,m.unref)(c),apiSetSearchParams:(...e)=>(0,m.unref)(p.d)(...e,`name`),appendSearchToResult:!!e.canAdd,useAllItem:e.canSelectAll?(0,m.unref)(I)().name:!1,addChanger:e.addChanger,useCache:``,onAppendItem:b},(0,m.createSlots)({item:(0,m.withCtx)(({item:n})=>[(0,m.createElementVNode)(`div`,ge,[n.id===(0,m.unref)(null)?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,_e,(0,m.toDisplayString)(t.$i18n.Common.Add)+`: `,1)):(0,m.createCommentVNode)(``,!0),(0,m.createElementVNode)(`span`,{class:`top-groupSelector_groupItemName top-ellipsis1`,innerHTML:n.name},null,8,ve),n.folder_path&&e.showPath?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,class:`top-groupSelector_groupItemFolderPath top-ellipsis1`,innerHTML:n.folder_path},null,8,ye)):(0,m.createCommentVNode)(``,!0)])]),_:2},[e.canEditAndDel&&e.client?{name:`actions`,fn:(0,m.withCtx)(({item:r})=>[r.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createVNode)(f.n,{submitText:t.$i18n.Common.Save,defaultValue:r.name,inputProps:{addCleaner:!1},onSubmit:e=>x(r,e)},{opener:(0,m.withCtx)(()=>[...n[1]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[...n[2]||=[]]),_:1},8,[`submitText`,`defaultValue`,`onSubmit`]),(0,m.createVNode)(f.r,{isWarning:``,submitText:t.$i18n.Common.Delete,onSubmit:e=>S(r)},{opener:(0,m.withCtx)(()=>[...n[3]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,{innerHTML:e.service===`keywords_2`?t.$i18n.Keywords.Delete_group_warning:t.$i18n[`Ai.Tracker`].Delete_group_warning},null,8,be)]),_:1},8,[`submitText`,`onSubmit`])],64)):(0,m.createCommentVNode)(``,!0)]),key:`0`}:void 0]),1032,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`appendSearchToResult`,`useAllItem`,`addChanger`]))}}),Se={class:`top-groupSelector`},Ce=(0,m.defineComponent)({__name:`groupSelector`,props:(0,m.mergeModels)({folderId:{},folder:{},groupId:{},group:{},projectId:{},folders:{},groups:{},on:{type:Boolean,default:void 0},canSelectAllGroups:{type:Boolean,default:!1},canAddGroup:{type:[String,Boolean]},canEditAndDelGroup:{type:Boolean},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showFolders:{type:Boolean,default:!0},showGroups:{type:Boolean,default:!0},showGroupsPaths:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{folderId:{required:!0},folderIdModifiers:{},folder:{},folderModifiers:{},groupId:{required:!0},groupIdModifiers:{},group:{default:P},groupModifiers:{}}),emits:(0,m.mergeModels)([`update:groups`],[`update:folderId`,`update:folder`,`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,i=(0,m.ref)(null),a=(0,m.useModel)(e,`folderId`),o=(0,m.useModel)(e,`folder`),s=(0,m.useModel)(e,`groupId`),c=(0,m.useModel)(e,`group`),l=n;o.value=M(r.folders??{root:[A]},r.canSelectAllGroups).get(a.value);let u=r.groups?.find(e=>e.id===s.value);s.value||(u=r.groups?.[0]),r.canSelectAllGroups&&!u&&(u=I()),(r.autoselect===`placeholder`||!u)&&(u=L()),u??=P,c.value=u;let d=e=>{let t;r.groups&&e&&(t=[...r.groups,e]),l(`update:groups`,t)},f=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.find(t=>t.id===e.id);if(!t)return;let n={...t,...e},i=r.groups.map(e=>e.id===n.id?n:e);l(`update:groups`,i)},p=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.filter(t=>t.id!==e);l(`update:groups`,t)};return t({resetCacheGroups:(e=!1)=>{i.value?.resetCacheGroups(e)}}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Se,[e.showFolders?((0,m.openBlock)(),(0,m.createBlock)(de,{key:0,folderId:a.value,"onUpdate:folderId":n[0]||=e=>a.value=e,folder:o.value,"onUpdate:folder":n[1]||=e=>o.value=e,projectId:e.projectId,folders:e.folders,canSelectAll:e.canSelectAllGroups,addChanger:e.addChanger,addIcon:e.addIcon,client:e.client,service:r.service},null,8,[`folderId`,`folder`,`projectId`,`folders`,`canSelectAll`,`addChanger`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0),e.showGroups?((0,m.openBlock)(),(0,m.createBlock)(xe,{key:1,ref_key:`componentGroupsRef`,ref:i,groupId:s.value,"onUpdate:groupId":n[2]||=e=>s.value=e,group:c.value,"onUpdate:group":n[3]||=e=>c.value=e,projectId:e.projectId,folder:o.value,groups:e.groups,on:e.on,canAdd:e.canAddGroup,canEditAndDel:e.canEditAndDelGroup,canSelectAll:e.canSelectAllGroups,autoselect:e.autoselect,addChanger:e.addChanger,showPath:e.showGroupsPaths||e.showFolders,addIcon:e.addIcon,client:e.client,service:r.service,onAddGroup:d,onEditGroup:f,onDelGroup:p},null,8,[`groupId`,`group`,`projectId`,`folder`,`groups`,`on`,`canAdd`,`canEditAndDel`,`canSelectAll`,`autoselect`,`addChanger`,`showPath`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0)]))}}),z=e=>({id:null,name:e,listItemProps:{type:`title`,class:`top-projectSelector_item`}}),B={scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1},we=(e,t)=>{let n=[],i={scheduledUpdate:z((0,r.E)().Projects.Scheduled_update),manualUpdate:z((0,r.E)().Projects.Manual_update),guestProjects:z((0,r.E)().Projects.Guest_projects)},a=t?{scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1}:B;for(let t of e)!a.scheduledUpdate&&t.right?.startsWith(`1`)&&t.on>0&&(n.push(i.scheduledUpdate),a.scheduledUpdate=!0),!a.manualUpdate&&t.right?.startsWith(`1`)&&t.on===0&&(n.push(i.manualUpdate),a.manualUpdate=!0),!a.guestProjects&&t.right?.startsWith(`0`)&&t.on>=0&&(n.push(i.guestProjects),a.guestProjects=!0),n.push(t);return n},V=e=>({...e,externalLink:Oe(e.url??``),listItemProps:{class:`top-projectSelector_item`,attrs:{title:e.name}}}),Te=(e,t,n)=>!e||e.length===0?[]:(t&&Object.keys(B).forEach(e=>B[e]=!1),we(e.map(V),n)),Ee=e=>{e=e.replace(/#.*/,``);let t=location.hash;return t=t.replace(/%22historyView%22:[^,]*,/,``),t=t.replace(/%22modelsKeys%22:\[[^\]]*],/,``),t=t.replace(/%22competitorsIds%22:\[[^\]]*],/,``),t=t.replace(/%22searchersKeys%22:\[[^\]]*],/,``),t=t.replace(/%22regionIndex%22:[^,]*,/,``),t=t.replace(/%22regionsIndexes%22:\[[^\]]*],/,``),t=t.replace(/%22folderId%22:[^,]*,/,``),t=t.replace(/%22groupId%22:[^,]*,/,``),t=t.replace(/%22tagsIds%22:\[[^\]]*],/,``),/%22dataSort%22:\{[^}]*0000-00-00[^}]*}/.test(t)||(t=t.replace(/,?%22dataSort%22:\{[^}]*}(,?)/,`$1`)),e+t},De=e=>{location.href=H(e)},H=e=>{let t=U(),n=location.pathname.split(`/`),r=`project/dynamics/`,i=``;n[1]==`project`&&(r=n[1]+`/`+n[2]+`/`),n[2]==`settings`&&(i=location.hash),[`watcher`,`indexing`,`sitemap`,`audit`,`direct`,`adwords`].includes(n[4])&&(i=n[4]+`/`);let a=`https://`+t+`/`+r+e+`/`+i;return a=Ee(a),a},U=()=>window.page?.subdomain?window.location.host.replace(window.page?.subdomain+`.`,``):window.location.host,Oe=e=>{let t=e.startsWith(`http`)?e:`https://`+e;return t=t.replace(/"/g,`%22`),t},ke=(e,t)=>{let n=e.params.filters??[];n=n.filter(e=>e.name!==`GEN_SEARCH_STRING()`);let r=(0,d.invertKeyboardLayout)(t),a=t.replace(/([[^$.|?*+()])/g,`\\$1`),o=r.replace(/([[^$.|?*+()])/g,`\\$1`);t&&n.push((0,i.t)(`GEN_SEARCH_STRING()`,`REGEXP`,[`(${a}|${o})`])),e.changeParams({filters:n})},Ae=e=>{let t=e.gen(`/get/projects_2/projects/`,[`id`,`user_id`,`name`,`url`,`on`,`right`]);return t.changeParams({filters:[(0,i.t)(`on`,`GREATER_THAN_EQUALS`,[0])],orders:[(0,i.n)(`user_id`,`DESC`,[r.O.state.userId]),(0,i.n)(`on`,`ASC`,[0]),(0,i.n)(`favorite`,`DESC`),(0,i.n)(`ord`,`ASC`),(0,i.n)(`id`,`DESC`)]}),t.options.loadingShowSpinner=!1,t.options.onApiLoaded=(e,t,n)=>{let r=t.data.filters.length>1,i=t.data.offset===0,a=t.data.offset===void 0||i&&!r,o=r;e.result=Te(e.result,a,o),n?.(e,t)},t},je=e=>e.gen(`/add/projects_2/projects/`),Me={class:`top-ellipsis1`},Ne=(0,m.defineComponent)({__name:`submenu`,props:{id:{}},setup(e){let t=e,n=(0,r.E)(),i=U(),a=e=>{let t=[{href:`https://${i}/project/keywords/${e.id}/`,title:n.Common.Menu_phrases,icon:``,right:`2`},{href:`https://${i}/project/dynamics/${e.id}/`,title:n.Common.Menu_dynamics,icon:``,right:`1`},{href:`https://${i}/project/snapshots/${e.id}/`,title:n.Common.Menu_snapshots,icon:``,right:`1`},{href:`https://${i}/project/competitors/${e.id}/`,title:n.Common.Menu_competitors,icon:``,right:`1`},{href:`https://${i}/project/ai-tracker/${e.id}/`,title:n.Common.Menu_aiTracker,icon:``,right:`1`},{href:`https://${i}/project/analytics/${e.id}/`,title:n.Common.Menu_analytics,icon:``,right:`5`},{href:`https://${i}/project/broker/${e.id}/`,title:n.Common.Menu_broker,icon:``,right:`6`},{href:`https://${i}/project/audit/${e.id}/sitemap/`,title:n.Audit.Sitemap_gen,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/audit/`,title:n.Common.Menu_audit,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/indexing/`,title:n.Audit.Indexing,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/watcher/`,title:n.Audit.Watcher,icon:``,right:`9`},{href:`https://${i}/project/settings/${e.id}/`,title:n.Common.Menu_settings,icon:``,right:`2`}].filter(e=>!Object.entries(r.O.state.closedByMod).some(([t,n])=>n&&e.href.includes(`/${t}/`)));return e.right.includes(`0`)?t.filter(t=>e.right[t.right]===`1`):t};return(e,n)=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.s),{id:t.id,class:`top-projectSelectorSubmenu`,notch:!1,pos:`2`},{contentList:(0,m.withCtx)(({data:t})=>[t?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(a(t.projectItem),t=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.o),{href:t.href,title:t.title,"data-top-icon":t.icon,"data-right":t.right},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.$core.state.isMobile?t.title:``),1)]),_:2},1032,[`href`,`title`,`data-top-icon`,`data-right`]))),256)),(0,m.createVNode)((0,m.unref)(f.o),{href:t.projectItem.externalLink,title:t.projectItem.externalLink,class:`top-ellipsis`,"data-top-icon":``,target:`_blank`},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,Me,(0,m.toDisplayString)(e.$core.state.isMobile?t.projectItem.externalLink:``),1)]),_:2},1032,[`href`,`title`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`id`]))}}),Pe=1440*60*1e3,W=(0,m.ref)(null),G=(0,m.shallowRef)(),K=e=>{localStorage.setItem(`ui_project_selector_total:`+r.O.state.userId,JSON.stringify({projectsTotal:e,expiresAt:Date.now()+Pe}))},Fe=()=>{let e=localStorage.getItem(`ui_project_selector_total:`+r.O.state.userId);if(!e)return;let{projectsTotal:t,expiresAt:n}=JSON.parse(e);if(Date.now()>n){localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId);return}return t},Ie=()=>{W.value=null,G.value=void 0,localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId),(0,p.f)(`/get/projects_2/projects/`)},Le={class:`top-projectSelector_itemText`},Re={class:`top-comment`},ze={key:0,class:`top-comment`},Be=[`href`],q=1e3,Ve=(0,m.defineComponent)({__name:`projectSelector`,props:(0,m.mergeModels)({modelValue:{},client:{},menuMode:{type:Boolean},excludeProjectId:{},openerShortcut:{},modificator:{},placeholder:{},buttonProps:{default:()=>({color:`theme`,styling:`outline`})}},{modelValue:{default:()=>({id:null,name:``})},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=(0,r.E)(),n=e,i=(0,m.useModel)(e,`modelValue`),a=Ae(n.client),o=je(n.client),s=(0,m.ref)(Fe()),u=(0,m.ref)(null),d=(0,m.useId)(),h=(0,m.computed)(()=>n.placeholder??t.Projects.Select_project),g=(0,m.computed)(()=>!G.value||!n.excludeProjectId?G.value:G.value.filter(e=>e.id!==n.excludeProjectId)),_=(0,m.computed)(()=>{if(!(!s.value&&s.value!==0))return s.value<q?`static`:`api`}),v=async()=>{W.value||=a.call();let e=await W.value;return W.value=null,e},y=async e=>{let t=await o.changeParams({url:e.name,name:e.name}).call();if(!t.errors){if(G.value&&_.value===`static`){let n=V({id:t.result,user_id:r.O.state.userId,name:e.name,url:e.name,on:0,right:`11111111111111111111`}),i=G.value.findIndex(e=>e.on===0);G.value=[...G.value.slice(0,i),n,...G.value.slice(i)],s.value&&(s.value+=1,K(s.value))}_.value===`api`&&u.value?.resetCache(!0)}},b=async()=>{if(G.value||_.value===`api`)return;let e=await v();e.errors||(G.value=e.result)},x=async()=>{if(s.value){let e=u.value?.popupOpenerRef?.$el;e&&e.addEventListener(`pointerenter`,()=>b(),{once:!0})}else{a.changeParams({limit:q});let e=await v();if(e.errors)return;delete a.params.limit,s.value=e.total??void 0,!G.value&&_.value!==`api`&&(G.value=e.result),s.value&&K(s.value)}};return(0,m.onMounted)(async()=>{await x()}),(t,n)=>{let r=(0,m.resolveComponent)(`TopButton`);return(0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[((0,m.openBlock)(),(0,m.createBlock)(p.c,{key:_.value??`dummy`,ref_key:`refSelector`,ref:u,class:`top-projectSelector`,modelValue:i.value,"onUpdate:modelValue":n[1]||=t=>e.menuMode?(0,m.unref)(De)(t.id):i.value=t,items:g.value,itemsChunkSize:100,itemsIsLoading:_.value===`static`&&(0,m.unref)(G)===void 0,title:t.$i18n.Projects.Search_projects,modificator:e.modificator,searchFields:[`id`,`name`,`url`],placeholder:h.value,hasCloserBtn:``,api:_.value===`api`?(0,m.unref)(a):void 0,apiSetSearchParams:_.value===`api`?(...e)=>(0,m.unref)(ke)(...e):void 0,useCache:``,appendSearchToResult:``,appendSearchAllowDuplicate:``,appendSearchToResultCond:(0,m.unref)(c.validUrl),appendWithoutSelect:``,buttonProps:{...e.buttonProps,isProgress:!_.value,disabled:!_.value},openerShortcut:e.openerShortcut,onAppendItem:y,onOpen:b},{item:(0,m.withCtx)(({item:i})=>[(0,m.createElementVNode)(`div`,Le,[i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createTextVNode)((0,m.toDisplayString)((0,m.unref)(l.ellipsis)(i.name,20))+` `,1),(0,m.createElementVNode)(`span`,Re,` id `+(0,m.toDisplayString)(i.id),1)],64)):((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:1},[i.listItemProps?.type?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createElementBlock)(`div`,ze,(0,m.toDisplayString)(t.$i18n.Projects.Add_project)+`: `,1)),(0,m.createTextVNode)(` `+(0,m.toDisplayString)(i.name),1)],64))]),i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[e.menuMode?((0,m.openBlock)(),(0,m.createElementBlock)(`a`,{key:0,class:`top-projectSelector_itemLink`,href:(0,m.unref)(H)(i.id)},null,8,Be)):(0,m.createCommentVNode)(``,!0),t.$core.state.isMobile?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createBlock)(r,{key:1,href:i.externalLink,"data-top-icon":``,color:`theme`,target:`_blank`,onClick:n[0]||=(0,m.withModifiers)(()=>{},[`stop`])},null,8,[`href`])),(0,m.createVNode)(f.c,{id:(0,m.unref)(d),pos:`2`,notch:!1,data:{projectItem:i}},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(r,{class:`top-popup_listMore`,"data-top-icon":``,color:`theme`})]),_:1},8,[`id`,`data`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`modelValue`,`items`,`itemsIsLoading`,`title`,`modificator`,`placeholder`,`api`,`apiSetSearchParams`,`appendSearchToResultCond`,`buttonProps`,`openerShortcut`])),(0,m.createVNode)(Ne,{id:(0,m.unref)(d)},null,8,[`id`])],64)}}}),J=e=>`-`+e,Y=e=>e[0]===`-`?e.substring(1):e,X=(e,t)=>{e=Y(e);let n=t.find(t=>t.id===e);if(n)return n},He=(e,t,n)=>{t||={id:e.id},t.id=e.id,t.pos??=`3`,t.notch??=!0,t.posBy??=`fixed`;let r=o.t.genElPopupOpener(`div`,t);return r.classList.add(`top-tagSelector`),e.useTopButton&&r.classList.add(`top-tagSelector-useTopButton`,`top-button`,`top-color_theme`,`top-as-selector`),e.useTopButton||r.classList.add(`top-tagSelector-custom`),e.mode===`filter`&&r.classList.add(`top-tagSelector-filter`),e.mode===`setter`&&!e.filters&&r.classList.add(`top-tagSelector-setter_single`),e.mode===`setter`&&e.filters&&r.classList.add(`top-tagSelector-setter_several`),r.onclick=t=>{t.preventDefault(),t.stopPropagation(),r.onclick=null;let i=(0,m.ref)(e.modelValue),o={model:i,mode:e.mode,targetId:e.targetId,filters:e.filters,payload:e.payload};(0,a.storage)(r,`topTagSelectorTarget`,o),delete r.dataset.topPopupDisabled,(0,m.isRef)(e.modelValue)||(0,m.watch)(i,()=>{e.modelValue=i.value,Z(r,e,n)}),r.click()},(0,m.isRef)(e.modelValue)?(0,m.watch)(e.modelValue,()=>Z(r,e,n)):(0,a.storage)(r,`topTagSelectorRender`,t=>{e.modelValue=t;let i=(0,a.storage)(r,`topTagSelectorTarget`);i&&(i.model.value=t),Z(r,e,n)}),Z(r,e,n),r},Ue=(e,t)=>{(0,a.storage)(e,`topTagSelectorRender`)?.(t)},Z=(e,t,n)=>{let i=(0,m.unref)(t.modelValue);if(e.classList.toggle(`top-tagSelector-selectedOne`,!i.length||i.length===1),e.classList.toggle(`top-tagSelector-toTwoLine`,i.length>5),t.mode===`setter`&&t.filters){e.innerHTML=`<div>${n}</div>`;return}if(e.innerHTML=``,!i.length&&t.mode===`filter`){let t=We({id:`all`,colorId:``,name:(0,r.E)().Common?.All_tags??``,state:``});e.append(t)}i.forEach(n=>{let r=We({id:Y(n),colorId:X(n,t.tags)?.color_id??``,name:X(n,t.tags)?.name??``,state:Y(n)===n?`selected`:`excluded`});e.append(r)})},We=e=>{let t=document.createElement(`div`);return t.classList.add(`top-tagSelector_tagIcon`),t.classList.toggle(`top-tagSelector-active`,!!e.state),t.classList.toggle(`top-tagSelector-excluded`,e.state===`excluded`),t.dataset.tag_id=e.id,t.dataset.tag_color_id=e.colorId,t.title=e.name,t},Ge=[{id:`1`,name:`Without Tag`,color_id:`1`},{id:`2`,name:`Red`,color_id:`2`},{id:`3`,name:`Orange`,color_id:`3`},{id:`4`,name:`Yellow`,color_id:`4`},{id:`5`,name:`Blue`,color_id:`5`},{id:`6`,name:`Purple`,color_id:`6`},{id:`7`,name:`Green`,color_id:`7`},{id:`8`,name:`Magenta`,color_id:`8`},{id:`9`,name:`Dark blue`,color_id:`9`},{id:`10`,name:`Turquoise`,color_id:`10`}],Ke=[`data-tag_id`,`data-tag_color_id`,`title`],Q=(0,m.defineComponent)({__name:`tagIcon`,props:{id:{},colorId:{},name:{},state:{}},setup(e){return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),"data-tag_id":e.id,"data-tag_color_id":e.colorId,title:e.name},null,10,Ke))}}),qe=[`contenteditable`,`onKeydown`],Je=(0,m.defineComponent)({__name:`tagPopupListItem`,props:(0,m.mergeModels)({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:(0,m.mergeModels)([`update:name`,`unselect`,`exclude`,`select`],[`update:name`]),setup(e,{emit:t}){let n=e,r=t,i=(0,m.useModel)(e,`name`),a=(0,m.ref)(null),o=(0,m.computed)(()=>navigator.userAgent.indexOf(`Firefox`)==-1?{}:{contenteditable:s.value,onpaste:e=>e.preventDefault()}),s=(0,m.ref)(!1),c=async()=>{s.value=!0,await(0,m.nextTick)(),a.value?.focus()},l=()=>{let e=a.value?.innerText;if(!e)return u();a.value&&(a.value.innerText=e),s.value=!1,r(`update:name`,e)},u=async()=>{a.value&&(a.value.innerText=n.name),s.value=!1},d=e=>{if(s.value||n.disabled)return;let t=`selected`;n.canExclude&&(e.ctrlKey||e.metaKey)&&(t=`excluded`),n.state==t&&(t=``),t===``&&r(`unselect`),t===`selected`&&r(`select`),t===`excluded`&&r(`exclude`)};return(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":e.disabled,"top-tagSelector_tagListItem-canExclude":e.canExclude,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),onClick:(0,m.withModifiers)(d,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(Q,{id:e.id,name:i.value,colorId:e.colorId,state:e.state},null,8,[`id`,`name`,`colorId`,`state`]),(0,m.createElementVNode)(`span`,(0,m.mergeProps)({ref_key:`elName`,ref:a,class:`top-tagSelector_tagListItemName`,contenteditable:s.value?`plaintext-only`:!1},o.value,{onKeydown:[(0,m.withKeys)((0,m.withModifiers)(l,[`stop`]),[`enter`]),(0,m.withKeys)((0,m.withModifiers)(u,[`stop`]),[`esc`])]}),(0,m.toDisplayString)(i.value),17,qe),e.editable?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[s.value?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:(0,m.withModifiers)(l,[`stop`])})):((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:0,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:c}))],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`class`]))}}),Ye={key:1},Xe=(0,m.defineComponent)({inheritAttrs:!1,__name:`popupOpener`,props:(0,m.mergeModels)({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{attrs:t}){let n=e,i=(0,m.useModel)(e,`modelValue`),a=n.useTopButton?r.h:`div`,o=n.useTopButton?`html`:`default`,s={model:i,mode:n.mode,targetId:n.targetId,filters:n.filters,payload:n.payload};return(r,c)=>{let l=(0,m.resolveDirective)(`top-data`);return(0,m.openBlock)(),(0,m.createBlock)(f.c,{id:e.id},{default:(0,m.withCtx)(()=>[(0,m.withDirectives)(((0,m.openBlock)(),(0,m.createBlock)((0,m.resolveDynamicComponent)((0,m.unref)(a)),(0,m.mergeProps)({class:{"top-tagSelector":!0,"top-tagSelector-useTopButton":n.useTopButton,"top-tagSelector-custom":!n.useTopButton,"top-as-selector":n.useTopButton,"top-tagSelector-filter":n.mode===`filter`,"top-tagSelector-setter_single":n.mode===`setter`&&!e.filters,"top-tagSelector-setter_several":n.mode===`setter`&&e.filters,"top-tagSelector-selectedOne":!i.value.length||i.value.length===1,"top-tagSelector-toTwoLine":i.value.length>5},color:`theme`,styling:e.styling},t),{[(0,m.unref)(o)]:(0,m.withCtx)(()=>[!i.value.length&&e.mode===`filter`?((0,m.openBlock)(),(0,m.createBlock)(Q,{key:0,id:`all`,colorId:``,name:r.$i18n.Common.All_tags??``,state:``},null,8,[`name`])):(0,m.createCommentVNode)(``,!0),e.mode===`setter`&&e.filters?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Ye,[(0,m.renderSlot)(r.$slots,`default`)])):((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,{key:2},(0,m.renderList)(i.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Q,{id:(0,m.unref)(Y)(t),colorId:(0,m.unref)(X)(t,e.tags)?.color_id??``,name:(0,m.unref)(X)(t,e.tags)?.name??``,state:(0,m.unref)(Y)(t)===t?`selected`:`excluded`},null,8,[`id`,`colorId`,`name`,`state`]))),256))]),_:2},1040,[`class`,`styling`])),[[l,s,`topTagSelectorTarget`]])]),_:3},8,[`id`])}}}),Ze=(0,m.defineComponent)({__name:`tagSelector`,props:(0,m.mergeModels)({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},useTopButton:{type:Boolean,default:!0},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:(0,m.reactive)(Ge)},tagsModifiers:{}}),emits:(0,m.mergeModels)([`selector`,`setter`,`tagsChanged`],[`update:modelValue`,`update:tags`]),setup(e,{emit:t}){let n=(0,r.E)(),i=e,o=(0,m.useModel)(e,`modelValue`),s=(0,m.useModel)(e,`tags`),c=t,l=(0,r.P)((e,t)=>{c(e,t)},i.emitDelay);i.singleMode&&!o.value.length&&(o.value=[s.value[0].id]);let u=i.id??`top-popup-id-`+Math.random(),d=(0,m.ref)(`add`),p=()=>{let e=` `+n.Common.Tags?.toLowerCase(),t=new Map;return t.set(`add`,{value:`add`,title:n.Common.Add+e}),t.set(`replace`,{value:`replace`,title:n.Common.Replace+e}),t.set(`delete`,{value:`delete`,title:n.Common.Delete+e}),t},h=(0,m.shallowRef)({model:o,mode:`filter`,targetId:void 0,filters:void 0,payload:void 0});(0,m.watch)(o,()=>{l(`selector`,o.value)});let g=(0,m.computed)(()=>{if(h.value.mode===`setter`&&i.maxTagsForSetter&&!h.value.filters)return h.value.model.value.length>=i.maxTagsForSetter}),_=e=>{if(e!==`all`){if(h.value.model.value.includes(e))return`selected`;if(h.value.model.value.includes(J(e)))return`excluded`}return e===`all`&&!h.value.model.value.length?`selected`:``},v=(e,t)=>{let n=J(e),r=h.value.model.value.filter(t=>t!==e&&t!==n);t===`select`&&r.push(e),t===`exclude`&&r.push(n),h.value.mode===`setter`&&h.value.targetId!==void 0&&i.requiredForSetter&&(r.length||r.push(`1`),r.length===2&&h.value.model.value.length===1&&h.value.model.value[0]===`1`&&(r=r.filter(e=>e!==`1`))),i.singleMode&&!h.value.filters&&(r.length||(r=h.value.model.value),r.length>1&&(r=[r[r.length-1]])),r.sort((e,t)=>i.tags?i.tags.findIndex(t=>t.id===e)-i.tags.findIndex(e=>e.id===t):0),h.value.model.value=r,h.value.mode===`setter`&&h.value.targetId!==void 0&&l(`setter`,{tagsIds:r,targetId:h.value.targetId,payload:h.value.payload})},y=(0,m.computed)(()=>{let e=`top-tagSelector_popup`;return h.value.mode===`filter`&&(e+=` top-tagSelector_popup-filter`),h.value.mode===`setter`&&(e+=` top-tagSelector_popup-setter`),e}),b=()=>{let e=prompt(``,`New tag`);if(!e||e===`New tag`)return;let t=s.value.length+1;s.value.push({id:String(t),name:e,color_id:String((t-1)%10+1)}),c(`tagsChanged`,s.value)},x=e=>{if(h.value=(0,a.storage)(e.elPopupOpener,`topTagSelectorTarget`),!h.value)throw Error(`Open popup TopTagSelector required v-data:topTagSelectorTarget`);if(h.value.filters&&(d.value=`add`,h.value.model.value=[]),!r.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}!r.O.state.isMobile&&!r.O.state.isMobileUA&&s.value&&$(e.elPopup).sortable({items:`li:has([data-tag_id]:not([data-tag_id="all"]))`,cancel:`[contenteditable="plaintext-only"], [contenteditable="true"]`,distance:10,stop:function(e,t){if(!s.value)return;let n=$(t.item).parent().find(`[data-tag_id]`),r=[];n.each((e,t)=>{if(!s.value)return;let n=$(t).attr(`data-tag_id`);r.push(n)}),s.value.sort((e,t)=>r.findIndex(t=>t===e.id)-r.findIndex(e=>e===t.id)),l(`tagsChanged`,s.value)}})},S=e=>{r.O.$?.ui.sortable&&$(e.elPopup).data(`ui-sortable`)&&$(e.elPopup).sortable(`destroy`)};return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[(0,m.createVNode)(Xe,{modelValue:o.value,"onUpdate:modelValue":n[0]||=e=>o.value=e,id:(0,m.unref)(u),tags:s.value,styling:e.styling,mode:`filter`,useTopButton:e.useTopButton},null,8,[`modelValue`,`id`,`tags`,`styling`,`useTopButton`]),(0,m.createVNode)(f.s,{id:(0,m.unref)(u),class:(0,m.normalizeClass)(y.value),onOpen:n[4]||=e=>x(e),onClose:n[5]||=e=>S(e),"transition-duration":50},(0,m.createSlots)({contentList:(0,m.withCtx)(()=>[h.value.mode===`filter`&&!e.singleMode?((0,m.openBlock)(),(0,m.createBlock)(Je,{key:0,id:`all`,colorId:``,name:t.$i18n.Common.All_tags??``,state:h.value.model.value.length?``:`selected`,onSelect:n[3]||=e=>h.value.model.value=[]},null,8,[`name`,`state`])):(0,m.createCommentVNode)(``,!0),((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(s.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Je,{key:t.id,id:t.id,colorId:t.color_id,name:t.name,state:_(t.id),canExclude:h.value.mode===`filter`&&!e.singleMode,editable:e.tagsEditable,disabled:g.value&&_(t.id)===``,onUnselect:e=>v(t.id,`unselect`),onSelect:e=>v(t.id,`select`),onExclude:e=>v(t.id,`exclude`),"onUpdate:name":e=>{t.name=e,(0,m.unref)(l)(`tagsChanged`,s.value)}},null,8,[`id`,`colorId`,`name`,`state`,`canExclude`,`editable`,`disabled`,`onUnselect`,`onSelect`,`onExclude`,`onUpdate:name`]))),128)),e.tagsEditable&&s.value.length<e.tagsMax&&s.value.length<20?((0,m.openBlock)(),(0,m.createBlock)(f.o,{key:1,"data-top-icon":``,onClick:(0,m.withModifiers)(b,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Add),1)]),_:1})):(0,m.createCommentVNode)(``,!0)]),_:2},[h.value.mode===`setter`&&h.value.filters?{name:`header`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.n,{modelValue:d.value,"onUpdate:modelValue":n[1]||=e=>d.value=e,options:p()},null,8,[`modelValue`,`options`])]),key:`0`}:void 0,h.value.mode===`setter`&&h.value.filters?{name:`footer`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{color:`theme`},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Cancel),1)]),_:1}),(0,m.createVNode)(r.h,{onClick:n[2]||=e=>(0,m.unref)(l)(`setter`,{tagsIds:h.value.model.value,filters:h.value.filters,filtersAction:d.value,payload:h.value.payload})},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(d.value===`add`?t.$i18n.Common.Add:``)+` `+(0,m.toDisplayString)(d.value===`replace`?t.$i18n.Common.Replace:``)+` `+(0,m.toDisplayString)(d.value===`delete`?t.$i18n.Common.Delete:``),1)]),_:1})]),key:`1`}:void 0]),1032,[`id`,`class`])],64))}});t.TopGroupSelector=Ce,t.topProjectSelectorClearCache=Ie,t.TopProjectSelector=Ve,t.genElTopTagSelectorPopupOpener=He,t.renderElTopTagSelectorPopupOpener=Ue,t.TopTagSelectorTagIcon=Q,t.TopTagSelectorPopupOpener=Xe,t.TopTagSelector=Ze});
//# sourceMappingURL=project.amd.js.map

@@ -13,4 +13,4 @@

import { t as c } from "../.chunks/worker-D28QqQ45.esm.js";
import "../.chunks/app-DGsWGbDX.esm.js";
import { t as l } from "../.chunks/utils-BtqYaMHp.esm.js";
import "../.chunks/app-BaHwxbWz.esm.js";
import { t as l } from "../.chunks/utils-B1P0BzZ1.esm.js";
import { validUrl as u } from "../utils/check.js";

@@ -21,8 +21,8 @@ import { ellipsis as d } from "../utils/string.js";

import { c as g, n as _, o as v, r as y, s as b } from "../.chunks/popup-DViuKwOc.esm.js";
import { d as x, f as S, s as C, u as ee } from "../.chunks/formsExt-BZZEpY-a.esm.js";
import { Fragment as w, computed as T, createBlock as E, createCommentVNode as D, createElementBlock as O, createElementVNode as k, createSlots as te, createTextVNode as A, createVNode as j, defineComponent as M, isRef as ne, mergeModels as N, mergeProps as re, nextTick as ie, normalizeClass as P, onMounted as ae, openBlock as F, reactive as oe, ref as I, renderList as L, renderSlot as se, resolveComponent as ce, resolveDirective as le, resolveDynamicComponent as ue, shallowRef as de, toDisplayString as R, toValue as fe, unref as z, useId as pe, useModel as B, watch as V, withCtx as H, withDirectives as me, withKeys as he, withModifiers as U } from "vue";
import { c as x, d as S, f as ee, p as te } from "../.chunks/formsExt-oTFg1-Nv.esm.js";
import { Fragment as C, computed as w, createBlock as T, createCommentVNode as E, createElementBlock as D, createElementVNode as O, createSlots as ne, createTextVNode as k, createVNode as A, defineComponent as j, isRef as re, mergeModels as M, mergeProps as ie, nextTick as ae, normalizeClass as N, onMounted as oe, openBlock as P, reactive as se, ref as F, renderList as I, renderSlot as ce, resolveComponent as le, resolveDirective as ue, resolveDynamicComponent as de, shallowRef as fe, toDisplayString as L, toValue as pe, unref as R, useId as me, useModel as z, watch as B, withCtx as V, withDirectives as he, withKeys as ge, withModifiers as H } from "vue";
//#region src/components/project/competitorSelector/competitorSelector.vue?vue&type=script&setup=true&lang.ts
var ge = { class: "top-competitorSelector" }, _e = { class: "top-ellipsis1" }, ve = /* @__PURE__ */ M({
var _e = { class: "top-competitorSelector" }, ve = { class: "top-ellipsis1" }, ye = /* @__PURE__ */ j({
__name: "competitorSelector",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
modelValue: {},

@@ -41,3 +41,3 @@ items: {},

setup(n) {
let i = n, a = B(n, "modelValue"), o = T(() => {
let i = n, a = z(n, "modelValue"), o = w(() => {
if (i.showSelectAllItem) return {

@@ -50,4 +50,4 @@ icon: i.selectAllItemIcon,

});
return (e, i) => (F(), O("div", ge, [z(t).state.isMobile ? (F(), E(b, { key: 0 }, {
opener: H(() => [j(r, {
return (e, i) => (P(), D("div", _e, [R(t).state.isMobile ? (P(), T(b, { key: 0 }, {
opener: V(() => [A(r, {
class: "top-competitorSelector_opener",

@@ -58,7 +58,7 @@ color: "theme",

}, {
default: H(() => [A(R(n.items.find((e) => e.value === a.value?.[0])?.content), 1)]),
default: V(() => [k(L(n.items.find((e) => e.value === a.value?.[0])?.content), 1)]),
_: 1
})]),
contentList: H(() => [(F(!0), O(w, null, L(n.items, (e) => (F(), E(v, {
class: P({ "top-active": a.value?.includes(e.value) }),
contentList: V(() => [(P(!0), D(C, null, I(n.items, (e) => (P(), T(v, {
class: N({ "top-active": a.value?.includes(e.value) }),
"data-top-icon": e.icon,

@@ -68,3 +68,3 @@ title: e.title,

}, {
default: H(() => [k("span", _e, R(e.content), 1)]),
default: V(() => [O("span", ve, L(e.content), 1)]),
_: 2

@@ -78,3 +78,3 @@ }, 1032, [

_: 1
})) : (F(), E(S, {
})) : (P(), T(te, {
key: 1,

@@ -94,8 +94,8 @@ modelValue: a.value,

}
}), ye = (e, t) => T(() => fe(e).filter((e) => e.on >= 0 || e.id === t).map((e) => ({
}), be = (e, t) => w(() => pe(e).filter((e) => e.on >= 0 || e.id === t).map((e) => ({
value: e.id,
title: e.url + ` [${e.id}]`,
icon: e.id === fe(t) ? "" : "",
icon: e.id === pe(t) ? "" : "",
content: e.name
}))), be = {
}))), xe = {
0: "Yandex",

@@ -111,21 +111,21 @@ 1: "Google",

22: "YandexLive"
}, xe = {
}, Se = {
key: -2,
name: "--",
index: -2
}, Se = {
}, Ce = {
key: -2,
name: "--",
regions: [xe],
regionByIndex: /* @__PURE__ */ new Map([[-2, xe]])
}, W = {
regions: [Se],
regionByIndex: /* @__PURE__ */ new Map([[-2, Se]])
}, U = {
key: -2,
name: "Autoselect",
index: -2
}, Ce = {
}, we = {
key: -2,
name: "Autoselect",
regions: [W],
regionByIndex: /* @__PURE__ */ new Map([[-2, W]])
}, we = {
regions: [U],
regionByIndex: /* @__PURE__ */ new Map([[-2, U]])
}, Te = {
countryCode: "00",

@@ -138,6 +138,6 @@ depth: 1,

name: "Without region"
}, Te = () => (W.name = e().Common.Autoselect, W), Ee = () => (Te(), Ce.name = e().Common.Autoselect, console.log(Ce), Ce), De = () => (we.name = e().Keywords.Without_region, we), Oe = (e = "", t = !1, n = []) => {
}, Ee = () => (U.name = e().Common.Autoselect, U), De = () => (Ee(), we.name = e().Common.Autoselect, console.log(we), we), Oe = () => (Te.name = e().Keywords.Without_region, Te), ke = (e = "", t = !1, n = []) => {
let r;
return r = e ? Ae(n, e) : ke(n), t && r.set(-2, Ee()), r.size || r.set(-2, Se), r;
}, ke = (e, t = !0, n = [], r = "") => {
return r = e ? je(n, e) : Ae(n), t && r.set(-2, De()), r.size || r.set(-2, Ce), r;
}, Ae = (e, t = !0, n = [], r = "") => {
let i = /* @__PURE__ */ new Map();

@@ -156,3 +156,3 @@ return e.forEach((e) => {

key: e,
name: be[e],
name: xe[e],
regions: [],

@@ -163,4 +163,4 @@ regionByIndex: /* @__PURE__ */ new Map()

}), i;
}, Ae = (e, n) => {
let r = ke(e, !1, t.state.forceSearchersKeysForKeywordsStats, n);
}, je = (e, n) => {
let r = Ae(e, !1, t.state.forceSearchersKeysForKeywordsStats, n);
if (r.has(2)) {

@@ -172,7 +172,7 @@ let e = r.get(2);

if (!e.regionByIndex) return;
let t = { ...De() };
let t = { ...Oe() };
e.regionByIndex.set(t.index, t);
}), r;
}, je = (e, t, n = []) => {
let r = Oe(e, !1, n), i;
}, Me = (e, t, n = []) => {
let r = ke(e, !1, n), i;
return r.forEach((n) => {

@@ -183,7 +183,7 @@ if (!(t.searcher_key !== void 0 && t.searcher_key != n.key) && n.regions && (n.regions.forEach((r) => {

}), i;
}, Me = l(() => import("../.chunks/dialog_regionSelectorRegions-BIjtdwxa.esm.js")), Ne = (t, n) => {
}, Ne = l(() => import("../.chunks/dialog_regionSelectorRegions-CN3F-67P.esm.js")), Pe = (t, n) => {
let r = e();
return {
searcherKey: I(n.value.keys().next().value ?? -2),
optionBySearcherKey: T(() => {
searcherKey: F(n.value.keys().next().value ?? -2),
optionBySearcherKey: w(() => {
let e = /* @__PURE__ */ new Map();

@@ -212,6 +212,6 @@ if (n.value.forEach((n) => {

};
}, Pe = (t, n) => {
let r = e(), i = T(() => t.forMode === "volume" || t.forMode === "cost_forecast"), a = I(-2);
}, Fe = (t, n) => {
let r = e(), i = w(() => t.forMode === "volume" || t.forMode === "cost_forecast"), a = F(-2);
t.modelValue.length === 1 && (a.value = t.modelValue[0]), a.value === -2 && (i.value ? a.value = n.value?.regionByIndex.values().next().value?.key ?? -2 : a.value = n.value?.regionByIndex.keys().next().value ?? -2);
let o = T(() => {
let o = w(() => {
let e = /* @__PURE__ */ new Map();

@@ -239,3 +239,3 @@ return n.value.regionByIndex?.forEach((t) => {

});
return V(o, (e, n) => {
return B(o, (e, n) => {
if (t.onlySearcher || a.value !== void 0 && e.get(a.value)) return;

@@ -263,4 +263,4 @@ let i = e.keys().next().value;

};
}, Fe = (e, t, n) => {
let r = I([]), i = () => {
}, Ie = (e, t, n) => {
let r = F([]), i = () => {
if (e.onlySearcher && t.value) {

@@ -279,7 +279,7 @@ r.value = Array.from(t.value.keys());

};
return V(r, () => {
return B(r, () => {
a();
}), e.addCompare && i(), { regionsIndexes: r };
}, Ie = (e) => {
let t = T(() => e.forMode === "volume" || e.forMode === "cost_forecast"), n = T(() => Oe(e.forMode, e.autoRegion, e.searchers)), r = T(() => n.value.get(a.searcherKey.value) || Se), i = T(() => {
}, Le = (e) => {
let t = w(() => e.forMode === "volume" || e.forMode === "cost_forecast"), n = w(() => ke(e.forMode, e.autoRegion, e.searchers)), r = w(() => n.value.get(a.searcherKey.value) || Ce), i = w(() => {
let e = /* @__PURE__ */ new Set();

@@ -291,4 +291,4 @@ return n.value.forEach((t) => {

}), e;
}), a = Ne(e, n), o = Pe(e, r), s = Fe(e, n, i);
V(n, () => {
}), a = Pe(e, n), o = Fe(e, r), s = Ie(e, n, i);
B(n, () => {
if (e.onlySearcher ? s.regionsIndexes.value = Array.from(n.value.keys()) : s.regionsIndexes.value = s.regionsIndexes.value.filter((e) => i.value.has(e)), a.searcherKey.value === -1) return;

@@ -316,3 +316,3 @@ let t = n.value.keys().next().value;

let t = o.regionIndex.value;
n = je(e.forMode, {
n = Me(e.forMode, {
searcher_key: c(),

@@ -339,5 +339,5 @@ key: t

};
}, Le = /* @__PURE__ */ M({
}, Re = /* @__PURE__ */ j({
__name: "regionSelector",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
projectId: {},

@@ -371,3 +371,3 @@ searchers: { default: () => [] },

setup(e, { expose: t }) {
let n = e, a = T(() => n.forMode === "volume" || n.forMode === "cost_forecast"), o = B(e, "modelValue"), s = B(e, "modelValueSingle"), { selectSearcher: c, selectRegion: l, compare: u, searcherByKey: d, allRegionsIndexes: f, getSearcher: p, getRegion: m } = Ie(n), h = () => {
let n = e, a = w(() => n.forMode === "volume" || n.forMode === "cost_forecast"), o = z(e, "modelValue"), s = z(e, "modelValueSingle"), { selectSearcher: c, selectRegion: l, compare: u, searcherByKey: d, allRegionsIndexes: f, getSearcher: p, getRegion: m } = Le(n), h = () => {
let e = [];

@@ -378,3 +378,3 @@ d.value.forEach((t) => {

});
}), Me.open("regions", {
}), Ne.open("regions", {
regions: e,

@@ -385,3 +385,3 @@ regionsIndexes: u.regionsIndexes.value,

};
return V([
return B([
l.regionIndex,

@@ -396,5 +396,5 @@ c.searcherKey,

!n.onlySearcher && !f.value.size && (c.searcherKey.value = -2);
}), s.value && V(s, () => {
}), s.value && B(s, () => {
s.value && (o.value = [s.value]);
}, { immediate: !0 }), V(o, () => {
}, { immediate: !0 }), B(o, () => {
if (o.value[0] && (s.value = o.value[0]), n.onlySearcher) {

@@ -451,10 +451,10 @@ if (!o.value.length || o.value.length === 1 && !d.value.has(o.value[0]) || o.value.length === 1 && o.value[0] === -2 && !n.autoRegion) {

getRegion: m
}), (t, n) => (F(), O("div", { class: P({
}), (t, n) => (P(), D("div", { class: N({
"top-regionSelector": !0,
"top-regionSelector-onlySearcher": e.onlySearcher
}) }, [
j(i, {
options: z(c).optionBySearcherKey.value,
modelValue: z(c).searcherKey.value,
"onUpdate:modelValue": n[0] ||= (e) => z(c).searcherKey.value = e,
A(i, {
options: R(c).optionBySearcherKey.value,
modelValue: R(c).searcherKey.value,
"onUpdate:modelValue": n[0] ||= (e) => R(c).searcherKey.value = e,
name: "searcher_key",

@@ -467,8 +467,8 @@ addChanger: e.addChanger

]),
!e.onlySearcher && z(c).searcherKey.value !== z(-1) ? (F(), E(i, {
!e.onlySearcher && R(c).searcherKey.value !== R(-1) ? (P(), T(i, {
key: 0,
class: "top-select-region",
options: z(l).optionByRegionIndex.value,
modelValue: z(l).regionIndex.value,
"onUpdate:modelValue": n[1] ||= (e) => z(l).regionIndex.value = e,
options: R(l).optionByRegionIndex.value,
modelValue: R(l).regionIndex.value,
"onUpdate:modelValue": n[1] ||= (e) => R(l).regionIndex.value = e,
name: a.value ? "region_key" : "region_index",

@@ -483,15 +483,15 @@ addChanger: e.addChanger,

"data-top-icon"
])) : D("", !0),
e.addCompare && !e.onlySearcher && z(c).searcherKey.value === z(-1) ? (F(), E(r, {
])) : E("", !0),
e.addCompare && !e.onlySearcher && R(c).searcherKey.value === R(-1) ? (P(), T(r, {
key: 1,
name: "compare",
onClick: h,
"data-count-compare-regions-indexes": z(u).regionsIndexes.value.length
"data-count-compare-regions-indexes": R(u).regionsIndexes.value.length
}, {
default: H(() => [A(R(t.$i18n.Common.Selected_regions), 1)]),
default: V(() => [k(L(t.$i18n.Common.Selected_regions), 1)]),
_: 1
}, 8, ["data-count-compare-regions-indexes"])) : D("", !0)
}, 8, ["data-count-compare-regions-indexes"])) : E("", !0)
], 2));
}
}), G = {
}), W = {
id: 0,

@@ -501,10 +501,10 @@ name: "/",

};
function Re(t) {
function ze(t) {
return t ? e()?.Common.All_folders : "/ (" + e()?.Keywords.Root_folder + ")";
}
var ze = (e, t, n = /* @__PURE__ */ new Map(), r = { id: "root" }, i = 0) => (r.childsIds = [], r.id && (r.countAllGroupsActive = r.count_groups_active), e[r.id] && e[r.id].forEach((a) => {
a = { ...a }, r.childsIds.push(a.id), a.id === 0 && (a.name = Re(t));
var Be = (e, t, n = /* @__PURE__ */ new Map(), r = { id: "root" }, i = 0) => (r.childsIds = [], r.id && (r.countAllGroupsActive = r.count_groups_active), e[r.id] && e[r.id].forEach((a) => {
a = { ...a }, r.childsIds.push(a.id), a.id === 0 && (a.name = ze(t));
let o = i > 1 ? "-".repeat(i - 1) + " " : "";
o && !a.name.startsWith(o) && (a.name = o + a.name), n.set(a.id, a), ze(e, t, n, a, i + 1), r.childsIds = r.childsIds.concat(a.childsIds), r.id && a.count_groups_active && (r.countAllGroupsActive += a.count_groups_active);
}), n), Be = (e, t) => e.gen(`/get/${t}/folders/`, [
o && !a.name.startsWith(o) && (a.name = o + a.name), n.set(a.id, a), Be(e, t, n, a, i + 1), r.childsIds = r.childsIds.concat(a.childsIds), r.id && a.count_groups_active && (r.countAllGroupsActive += a.count_groups_active);
}), n), Ve = (e, t) => e.gen(`/get/${t}/folders/`, [
"id",

@@ -520,5 +520,5 @@ "parent_id",

//#region src/core/utils/composables/useWatch.ts
function Ve(e, t, n) {
function He(e, t, n) {
let r = Object.keys(e);
return V(r.map((t) => e[t]), (e, n, i) => {
return B(r.map((t) => e[t]), (e, n, i) => {
let a = {};

@@ -538,5 +538,5 @@ e.forEach((e, t) => {

//#region src/components/project/groupSelector/folders/folders.vue?vue&type=script&setup=true&lang.ts
var He = ["innerHTML"], Ue = /* @__PURE__ */ M({
var Ue = ["innerHTML"], We = /* @__PURE__ */ j({
__name: "folders",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
folderId: {},

@@ -557,3 +557,3 @@ folder: {},

folderIdModifiers: {},
folder: { default: G },
folder: { default: W },
folderModifiers: {}

@@ -563,11 +563,11 @@ }),

setup(e) {
let t = e, n = B(e, "folderId"), r = B(e, "folder"), i = t.client && !t.folders ? Be(t.client, t.service) : void 0, a = I(null);
V(() => t.projectId, () => {
let t = e, n = z(e, "folderId"), r = z(e, "folder"), i = t.client && !t.folders ? Ve(t.client, t.service) : void 0, a = F(null);
B(() => t.projectId, () => {
i?.changeParams({ project_id: t.projectId }), i?.setOptions({ checkFingerprint: "TopGroupSelectorFolders:" + t.projectId }), a.value?.resetCache();
}, { immediate: !0 });
let o = T(() => ze(t.folders ?? { root: [G] }, t.canSelectAll)), s = (e) => (t.canSelectAll && e[0]?.id === 0 && (e[0] = {
let o = w(() => Be(t.folders ?? { root: [W] }, t.canSelectAll)), s = (e) => (t.canSelectAll && e[0]?.id === 0 && (e[0] = {
...e[0],
name: Re(!0)
name: ze(!0)
}), e);
return Ve({
return He({
modelFolder: r,

@@ -582,4 +582,4 @@ modelFolderId: n

let i = o.value.get(t.folderId);
i ||= G, r.value = i, n.value = i.id;
}, { immediate: !0 }), (t, n) => (F(), E(C, {
i ||= W, r.value = i, n.value = i.id;
}, { immediate: !0 }), (t, n) => (P(), T(x, {
class: "top-groupSelector_folder",

@@ -591,4 +591,4 @@ modelValue: r.value,

icon: e.addIcon ? "" : void 0,
api: e.folders ? void 0 : z(i),
apiSetSearchParams: (...e) => z(ee)(...e, "name"),
api: e.folders ? void 0 : R(i),
apiSetSearchParams: (...e) => R(S)(...e, "name"),
prepareItemsBeforeRender: s,

@@ -598,3 +598,3 @@ addChanger: e.addChanger,

}, {
item: H(({ item: e }) => [k("div", { innerHTML: e.name.replaceAll(/</g, "< ") }, null, 8, He)]),
item: V(({ item: e }) => [O("div", { innerHTML: e.name.replaceAll(/</g, "< ") }, null, 8, Ue)]),
_: 1

@@ -610,13 +610,13 @@ }, 8, [

}
}), K = {
}), G = {
id: -1,
name: "--",
folder_id: G.id,
folder_path: G.path
}, q = {
folder_id: W.id,
folder_path: W.path
}, K = {
id: 0,
name: "All groups",
folder_id: G.id,
folder_path: G.path
}, J = () => (q.name = e()?.Common.All_groups, q), We = () => (q.name = e()?.Keywords.Choose_group, q), Ge = (e, t, n) => (e = [...e], t !== void 0 && (e = e.filter((e) => e.on == Number(t))), n && n.id && n.childsIds && (e = e.filter((e) => e.folder_id === n.id || n.childsIds.includes(e.folder_id))), e), Ke = (e, t) => e.gen(`/get/${t}/groups/`, [
folder_id: W.id,
folder_path: W.path
}, q = () => (K.name = e()?.Common.All_groups, K), Ge = () => (K.name = e()?.Keywords.Choose_group, K), Ke = (e, t, n) => (e = [...e], t !== void 0 && (e = e.filter((e) => e.on == Number(t))), n && n.id && n.childsIds && (e = e.filter((e) => e.folder_id === n.id || n.childsIds.includes(e.folder_id))), e), qe = (e, t) => e.gen(`/get/${t}/groups/`, [
"id",

@@ -629,8 +629,8 @@ "name",

limit: 100
}), qe = (e, t) => e.gen(`/add/${t}/groups/`), Je = (e, t) => e.gen(`/del/${t}/groups/`), Ye = (e, t) => e.gen(`/edit/${t}/groups/rename/`), Xe = { class: "top-groupSelector_groupItem top-ellipsis1" }, Ze = {
}), Je = (e, t) => e.gen(`/add/${t}/groups/`), Ye = (e, t) => e.gen(`/del/${t}/groups/`), Xe = (e, t) => e.gen(`/edit/${t}/groups/rename/`), Ze = { class: "top-groupSelector_groupItem top-ellipsis1" }, Qe = {
key: 0,
class: "top-comment"
}, Qe = ["innerHTML"], $e = ["innerHTML"], et = ["innerHTML"], tt = /* @__PURE__ */ M({
}, $e = ["innerHTML"], et = ["innerHTML"], tt = ["innerHTML"], nt = /* @__PURE__ */ j({
__name: "groups",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
groupId: {},

@@ -666,3 +666,3 @@ group: {},

}),
emits: /*@__PURE__*/ N([
emits: /*@__PURE__*/ M([
"addGroup",

@@ -673,4 +673,4 @@ "editGroup",

setup(e, { expose: t, emit: n }) {
let r = e, i = n, a = B(e, "groupId"), s = B(e, "group"), c = r.client && !r.groups ? Ke(r.client, r.service) : void 0, l = r.client ? qe(r.client, r.service) : void 0, u = r.client ? Je(r.client, r.service) : void 0, d = r.client ? Ye(r.client, r.service) : void 0, f = I(null), p = T(() => {
if (r.groups !== void 0) return Ge(r.groups, r.on, r.folder);
let r = e, i = n, a = z(e, "groupId"), s = z(e, "group"), c = r.client && !r.groups ? qe(r.client, r.service) : void 0, l = r.client ? Je(r.client, r.service) : void 0, u = r.client ? Ye(r.client, r.service) : void 0, d = r.client ? Xe(r.client, r.service) : void 0, f = F(null), p = w(() => {
if (r.groups !== void 0) return Ke(r.groups, r.on, r.folder);
}), m = o("folder_id", "EQUALS", [r.folder?.id ?? 0]);

@@ -687,3 +687,3 @@ c?.changeParams({

};
Ve({
He({
projectId: () => r.projectId,

@@ -695,5 +695,5 @@ folderId: () => r.folder?.id,

let e;
r.autoselect === "first" && (e = p.value?.[0], r.canSelectAll && (e = oe(J()))), (r.autoselect === "placeholder" || !e) && (e = We()), h(e);
r.autoselect === "first" && (e = p.value?.[0], r.canSelectAll && (e = se(q()))), (r.autoselect === "placeholder" || !e) && (e = Ge()), h(e);
}
}, { immediate: !0 }), Ve({
}, { immediate: !0 }), He({
modelGroup: s,

@@ -710,10 +710,10 @@ modelGroupId: a

let e = p.value?.find((e) => e.id === a.value);
if (!e && r.canSelectAll && (e = J()), e) h(e);
if (!e && r.canSelectAll && (e = q()), e) h(e);
else {
let e = p.value?.[0];
e && !a.value ? h(e) : h(K);
e && !a.value ? h(e) : h(G);
}
}
if (r.client && !r.groups && (a.value || a.value === 0 && !r.canSelectAll)) {
let e = Ke(r.client, r.service).changeParams({
let e = qe(r.client, r.service).changeParams({
project_id: r.projectId,

@@ -726,3 +726,3 @@ id: a.value,

if (!t.errors?.length && !t.result) return;
!t.errors && t.result[0] ? h(t.result[0]) : h(K);
!t.errors && t.result[0] ? h(t.result[0]) : h(G);
}

@@ -737,3 +737,3 @@ }

names: [e.name],
to_id: r.folder?.id ?? G.id,
to_id: r.folder?.id ?? W.id,
to_type: "in_folder_last"

@@ -755,9 +755,9 @@ }).call();

}), f.value?.updateCacheItemById(e.id, { name: t })));
}, x = async (e) => {
}, ee = async (e) => {
u && ((await u.changeParams({
project_id: r.projectId,
id: e.id
}).call()).errors || (s.value.id === e.id && h(r.canSelectAll ? J() : K), i("delGroup", e.id), f.value?.deleteCacheItemById(e.id)));
}).call()).errors || (s.value.id === e.id && h(r.canSelectAll ? q() : G), i("delGroup", e.id), f.value?.deleteCacheItemById(e.id)));
};
return t({ resetCacheGroups: g }), (t, n) => (F(), E(C, {
return t({ resetCacheGroups: g }), (t, n) => (P(), T(x, {
ref_key: "refSelector",

@@ -771,21 +771,21 @@ ref: f,

icon: e.addIcon ? "" : void 0,
api: e.groups ? void 0 : z(c),
apiSetSearchParams: (...e) => z(ee)(...e, "name"),
api: e.groups ? void 0 : R(c),
apiSetSearchParams: (...e) => R(S)(...e, "name"),
appendSearchToResult: !!e.canAdd,
useAllItem: e.canSelectAll ? z(J)().name : !1,
useAllItem: e.canSelectAll ? R(q)().name : !1,
addChanger: e.addChanger,
useCache: "",
onAppendItem: v
}, te({
item: H(({ item: n }) => [k("div", Xe, [
n.id === z(null) ? (F(), O("div", Ze, R(t.$i18n.Common.Add) + ": ", 1)) : D("", !0),
k("span", {
}, ne({
item: V(({ item: n }) => [O("div", Ze, [
n.id === R(null) ? (P(), D("div", Qe, L(t.$i18n.Common.Add) + ": ", 1)) : E("", !0),
O("span", {
class: "top-groupSelector_groupItemName top-ellipsis1",
innerHTML: n.name
}, null, 8, Qe),
n.folder_path && e.showPath ? (F(), O("span", {
}, null, 8, $e),
n.folder_path && e.showPath ? (P(), D("span", {
key: 1,
class: "top-groupSelector_groupItemFolderPath top-ellipsis1",
innerHTML: n.folder_path
}, null, 8, $e)) : D("", !0)
}, null, 8, et)) : E("", !0)
])]),

@@ -795,3 +795,3 @@ _: 2

name: "actions",
fn: H(({ item: r }) => [r.id ? (F(), O(w, { key: 0 }, [j(_, {
fn: V(({ item: r }) => [r.id ? (P(), D(C, { key: 0 }, [A(_, {
submitText: t.$i18n.Common.Save,

@@ -802,4 +802,4 @@ defaultValue: r.name,

}, {
opener: H(() => [...n[1] ||= [k("div", { "data-top-icon": "" }, null, -1)]]),
default: H(() => [...n[2] ||= []]),
opener: V(() => [...n[1] ||= [O("div", { "data-top-icon": "" }, null, -1)]]),
default: V(() => [...n[2] ||= []]),
_: 1

@@ -810,11 +810,11 @@ }, 8, [

"onSubmit"
]), j(y, {
]), A(y, {
isWarning: "",
submitText: t.$i18n.Common.Delete,
onSubmit: (e) => x(r)
onSubmit: (e) => ee(r)
}, {
opener: H(() => [...n[3] ||= [k("div", { "data-top-icon": "" }, null, -1)]]),
default: H(() => [k("span", { innerHTML: e.service === "keywords_2" ? t.$i18n.Keywords.Delete_group_warning : t.$i18n["Ai.Tracker"].Delete_group_warning }, null, 8, et)]),
opener: V(() => [...n[3] ||= [O("div", { "data-top-icon": "" }, null, -1)]]),
default: V(() => [O("span", { innerHTML: e.service === "keywords_2" ? t.$i18n.Keywords.Delete_group_warning : t.$i18n["Ai.Tracker"].Delete_group_warning }, null, 8, tt)]),
_: 1
}, 8, ["submitText", "onSubmit"])], 64)) : D("", !0)]),
}, 8, ["submitText", "onSubmit"])], 64)) : E("", !0)]),
key: "0"

@@ -832,5 +832,5 @@ } : void 0]), 1032, [

}
}), nt = { class: "top-groupSelector" }, rt = /* @__PURE__ */ M({
}), rt = { class: "top-groupSelector" }, it = /* @__PURE__ */ j({
__name: "groupSelector",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
folderId: {},

@@ -880,6 +880,6 @@ folder: {},

groupIdModifiers: {},
group: { default: K },
group: { default: G },
groupModifiers: {}
}),
emits: /*@__PURE__*/ N(["update:groups"], [
emits: /*@__PURE__*/ M(["update:groups"], [
"update:folderId",

@@ -891,6 +891,6 @@ "update:folder",

setup(e, { expose: t, emit: n }) {
let r = e, i = I(null), a = B(e, "folderId"), o = B(e, "folder"), s = B(e, "groupId"), c = B(e, "group"), l = n;
o.value = ze(r.folders ?? { root: [G] }, r.canSelectAllGroups).get(a.value);
let r = e, i = F(null), a = z(e, "folderId"), o = z(e, "folder"), s = z(e, "groupId"), c = z(e, "group"), l = n;
o.value = Be(r.folders ?? { root: [W] }, r.canSelectAllGroups).get(a.value);
let u = r.groups?.find((e) => e.id === s.value);
s.value || (u = r.groups?.[0]), r.canSelectAllGroups && !u && (u = J()), (r.autoselect === "placeholder" || !u) && (u = We()), u ??= K, c.value = u;
s.value || (u = r.groups?.[0]), r.canSelectAllGroups && !u && (u = q()), (r.autoselect === "placeholder" || !u) && (u = Ge()), u ??= G, c.value = u;
let d = (e) => {

@@ -921,3 +921,3 @@ let t;

i.value?.resetCacheGroups(e);
} }), (t, n) => (F(), O("div", nt, [e.showFolders ? (F(), E(Ue, {
} }), (t, n) => (P(), D("div", rt, [e.showFolders ? (P(), T(We, {
key: 0,

@@ -945,3 +945,3 @@ folderId: a.value,

"service"
])) : D("", !0), e.showGroups ? (F(), E(tt, {
])) : E("", !0), e.showGroups ? (P(), T(nt, {
key: 1,

@@ -986,5 +986,5 @@ ref_key: "componentGroupsRef",

"service"
])) : D("", !0)]));
])) : E("", !0)]));
}
}), it = (e) => ({
}), at = (e) => ({
id: null,

@@ -996,11 +996,11 @@ name: e,

}
}), at = {
}), ot = {
scheduledUpdate: !1,
manualUpdate: !1,
guestProjects: !1
}, ot = (t, n) => {
}, st = (t, n) => {
let r = [], i = {
scheduledUpdate: it(e().Projects.Scheduled_update),
manualUpdate: it(e().Projects.Manual_update),
guestProjects: it(e().Projects.Guest_projects)
scheduledUpdate: at(e().Projects.Scheduled_update),
manualUpdate: at(e().Projects.Manual_update),
guestProjects: at(e().Projects.Guest_projects)
}, a = n ? {

@@ -1010,8 +1010,8 @@ scheduledUpdate: !1,

guestProjects: !1
} : at;
} : ot;
for (let e of t) !a.scheduledUpdate && e.right?.startsWith("1") && e.on > 0 && (r.push(i.scheduledUpdate), a.scheduledUpdate = !0), !a.manualUpdate && e.right?.startsWith("1") && e.on === 0 && (r.push(i.manualUpdate), a.manualUpdate = !0), !a.guestProjects && e.right?.startsWith("0") && e.on >= 0 && (r.push(i.guestProjects), a.guestProjects = !0), r.push(e);
return r;
}, st = (e) => ({
}, ct = (e) => ({
...e,
externalLink: pt(e.url ?? ""),
externalLink: mt(e.url ?? ""),
listItemProps: {

@@ -1021,10 +1021,10 @@ class: "top-projectSelector_item",

}
}), ct = (e, t, n) => !e || e.length === 0 ? [] : (t && Object.keys(at).forEach((e) => at[e] = !1), ot(e.map(st), n)), lt = (e) => {
}), lt = (e, t, n) => !e || e.length === 0 ? [] : (t && Object.keys(ot).forEach((e) => ot[e] = !1), st(e.map(ct), n)), ut = (e) => {
e = e.replace(/#.*/, "");
let t = location.hash;
return t = t.replace(/%22historyView%22:[^,]*,/, ""), t = t.replace(/%22modelsKeys%22:\[[^\]]*],/, ""), t = t.replace(/%22competitorsIds%22:\[[^\]]*],/, ""), t = t.replace(/%22searchersKeys%22:\[[^\]]*],/, ""), t = t.replace(/%22regionIndex%22:[^,]*,/, ""), t = t.replace(/%22regionsIndexes%22:\[[^\]]*],/, ""), t = t.replace(/%22folderId%22:[^,]*,/, ""), t = t.replace(/%22groupId%22:[^,]*,/, ""), t = t.replace(/%22tagsIds%22:\[[^\]]*],/, ""), /%22dataSort%22:\{[^}]*0000-00-00[^}]*}/.test(t) || (t = t.replace(/,?%22dataSort%22:\{[^}]*}(,?)/, "$1")), e + t;
}, ut = (e) => {
location.href = dt(e);
}, dt = (e) => {
let t = ft(), n = location.pathname.split("/"), r = "project/dynamics/", i = "";
location.href = ft(e);
}, ft = (e) => {
let t = pt(), n = location.pathname.split("/"), r = "project/dynamics/", i = "";
n[1] == "project" && (r = n[1] + "/" + n[2] + "/"), n[2] == "settings" && (i = location.hash), [

@@ -1039,7 +1039,7 @@ "watcher",

let a = "https://" + t + "/" + r + e + "/" + i;
return a = lt(a), a;
}, ft = () => window.page?.subdomain ? window.location.host.replace(window.page?.subdomain + ".", "") : window.location.host, pt = (e) => {
return a = ut(a), a;
}, pt = () => window.page?.subdomain ? window.location.host.replace(window.page?.subdomain + ".", "") : window.location.host, mt = (e) => {
let t = e.startsWith("http") ? e : "https://" + e;
return t = t.replace(/"/g, "%22"), t;
}, mt = (e, t) => {
}, ht = (e, t) => {
let n = e.params.filters ?? [];

@@ -1049,3 +1049,3 @@ n = n.filter((e) => e.name !== "GEN_SEARCH_STRING()");

t && n.push(o("GEN_SEARCH_STRING()", "REGEXP", [`(${i}|${a})`])), e.changeParams({ filters: n });
}, ht = (e) => {
}, gt = (e) => {
let n = e.gen("/get/projects_2/projects/", [

@@ -1070,9 +1070,9 @@ "id",

let r = t.data.filters.length > 1, i = t.data.offset === 0, a = t.data.offset === void 0 || i && !r, o = r;
e.result = ct(e.result, a, o), n?.(e, t);
e.result = lt(e.result, a, o), n?.(e, t);
}, n;
}, gt = (e) => e.gen("/add/projects_2/projects/"), _t = { class: "top-ellipsis1" }, vt = /* @__PURE__ */ M({
}, _t = (e) => e.gen("/add/projects_2/projects/"), vt = { class: "top-ellipsis1" }, yt = /* @__PURE__ */ j({
__name: "submenu",
props: { id: {} },
setup(n) {
let r = n, i = e(), a = ft(), o = (e) => {
let r = n, i = e(), a = pt(), o = (e) => {
let n = [

@@ -1154,3 +1154,3 @@ {

};
return (e, t) => (F(), E(z(b), {
return (e, t) => (P(), T(R(b), {
id: r.id,

@@ -1161,3 +1161,3 @@ class: "top-projectSelectorSubmenu",

}, {
contentList: H(({ data: t }) => [t ? (F(), O(w, { key: 0 }, [(F(!0), O(w, null, L(o(t.projectItem), (t) => (F(), E(z(v), {
contentList: V(({ data: t }) => [t ? (P(), D(C, { key: 0 }, [(P(!0), D(C, null, I(o(t.projectItem), (t) => (P(), T(R(v), {
href: t.href,

@@ -1168,3 +1168,3 @@ title: t.title,

}, {
default: H(() => [A(R(e.$core.state.isMobile ? t.title : ""), 1)]),
default: V(() => [k(L(e.$core.state.isMobile ? t.title : ""), 1)]),
_: 2

@@ -1176,3 +1176,3 @@ }, 1032, [

"data-right"
]))), 256)), j(z(v), {
]))), 256)), A(R(v), {
href: t.projectItem.externalLink,

@@ -1184,14 +1184,14 @@ title: t.projectItem.externalLink,

}, {
default: H(() => [k("span", _t, R(e.$core.state.isMobile ? t.projectItem.externalLink : ""), 1)]),
default: V(() => [O("span", vt, L(e.$core.state.isMobile ? t.projectItem.externalLink : ""), 1)]),
_: 2
}, 1032, ["href", "title"])], 64)) : D("", !0)]),
}, 1032, ["href", "title"])], 64)) : E("", !0)]),
_: 1
}, 8, ["id"]));
}
}), yt = 1440 * 60 * 1e3, Y = I(null), X = de(), bt = (e) => {
}), bt = 1440 * 60 * 1e3, J = F(null), Y = fe(), xt = (e) => {
localStorage.setItem("ui_project_selector_total:" + t.state.userId, JSON.stringify({
projectsTotal: e,
expiresAt: Date.now() + yt
expiresAt: Date.now() + bt
}));
}, xt = () => {
}, St = () => {
let e = localStorage.getItem("ui_project_selector_total:" + t.state.userId);

@@ -1205,10 +1205,10 @@ if (!e) return;

return n;
}, St = () => {
Y.value = null, X.value = void 0, localStorage.removeItem("ui_project_selector_total:" + t.state.userId), x("/get/projects_2/projects/");
}, Ct = { class: "top-projectSelector_itemText" }, wt = { class: "top-comment" }, Tt = {
}, Ct = () => {
J.value = null, Y.value = void 0, localStorage.removeItem("ui_project_selector_total:" + t.state.userId), ee("/get/projects_2/projects/");
}, wt = { class: "top-projectSelector_itemText" }, Tt = { class: "top-comment" }, Et = {
key: 0,
class: "top-comment"
}, Et = ["href"], Dt = 1e3, Ot = /* @__PURE__ */ M({
}, Dt = ["href"], Ot = 1e3, kt = /* @__PURE__ */ j({
__name: "projectSelector",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
modelValue: {},

@@ -1234,8 +1234,8 @@ client: {},

setup(n) {
let r = e(), i = n, a = B(n, "modelValue"), o = ht(i.client), s = gt(i.client), c = I(xt()), l = I(null), f = pe(), p = T(() => i.placeholder ?? r.Projects.Select_project), m = T(() => !X.value || !i.excludeProjectId ? X.value : X.value.filter((e) => e.id !== i.excludeProjectId)), h = T(() => {
if (!(!c.value && c.value !== 0)) return c.value < Dt ? "static" : "api";
let r = e(), i = n, a = z(n, "modelValue"), o = gt(i.client), s = _t(i.client), c = F(St()), l = F(null), f = me(), p = w(() => i.placeholder ?? r.Projects.Select_project), m = w(() => !Y.value || !i.excludeProjectId ? Y.value : Y.value.filter((e) => e.id !== i.excludeProjectId)), h = w(() => {
if (!(!c.value && c.value !== 0)) return c.value < Ot ? "static" : "api";
}), _ = async () => {
Y.value ||= o.call();
let e = await Y.value;
return Y.value = null, e;
J.value ||= o.call();
let e = await J.value;
return J.value = null, e;
}, v = async (e) => {

@@ -1247,4 +1247,4 @@ let n = await s.changeParams({

if (!n.errors) {
if (X.value && h.value === "static") {
let r = st({
if (Y.value && h.value === "static") {
let r = ct({
id: n.result,

@@ -1256,8 +1256,8 @@ user_id: t.state.userId,

right: "11111111111111111111"
}), i = X.value.findIndex((e) => e.on === 0);
X.value = [
...X.value.slice(0, i),
}), i = Y.value.findIndex((e) => e.on === 0);
Y.value = [
...Y.value.slice(0, i),
r,
...X.value.slice(i)
], c.value && (c.value += 1, bt(c.value));
...Y.value.slice(i)
], c.value && (c.value += 1, xt(c.value));
}

@@ -1267,5 +1267,5 @@ h.value === "api" && l.value?.resetCache(!0);

}, y = async () => {
if (X.value || h.value === "api") return;
if (Y.value || h.value === "api") return;
let e = await _();
e.errors || (X.value = e.result);
e.errors || (Y.value = e.result);
}, b = async () => {

@@ -1276,13 +1276,13 @@ if (c.value) {

} else {
o.changeParams({ limit: Dt });
o.changeParams({ limit: Ot });
let e = await _();
if (e.errors) return;
delete o.params.limit, c.value = e.total ?? void 0, !X.value && h.value !== "api" && (X.value = e.result), c.value && bt(c.value);
delete o.params.limit, c.value = e.total ?? void 0, !Y.value && h.value !== "api" && (Y.value = e.result), c.value && xt(c.value);
}
};
return ae(async () => {
return oe(async () => {
await b();
}), (e, t) => {
let r = ce("TopButton");
return F(), O(w, null, [(F(), E(C, {
let r = le("TopButton");
return P(), D(C, null, [(P(), T(x, {
key: h.value ?? "dummy",

@@ -1293,6 +1293,6 @@ ref_key: "refSelector",

modelValue: a.value,
"onUpdate:modelValue": t[1] ||= (e) => n.menuMode ? z(ut)(e.id) : a.value = e,
"onUpdate:modelValue": t[1] ||= (e) => n.menuMode ? R(dt)(e.id) : a.value = e,
items: m.value,
itemsChunkSize: 100,
itemsIsLoading: h.value === "static" && z(X) === void 0,
itemsIsLoading: h.value === "static" && R(Y) === void 0,
title: e.$i18n.Projects.Search_projects,

@@ -1307,8 +1307,8 @@ modificator: n.modificator,

hasCloserBtn: "",
api: h.value === "api" ? z(o) : void 0,
apiSetSearchParams: h.value === "api" ? (...e) => z(mt)(...e) : void 0,
api: h.value === "api" ? R(o) : void 0,
apiSetSearchParams: h.value === "api" ? (...e) => R(ht)(...e) : void 0,
useCache: "",
appendSearchToResult: "",
appendSearchAllowDuplicate: "",
appendSearchToResultCond: z(u),
appendSearchToResultCond: R(u),
appendWithoutSelect: "",

@@ -1324,9 +1324,9 @@ buttonProps: {

}, {
item: H(({ item: i }) => [k("div", Ct, [i.id ? (F(), O(w, { key: 0 }, [A(R(z(d)(i.name, 20)) + " ", 1), k("span", wt, " id " + R(i.id), 1)], 64)) : (F(), O(w, { key: 1 }, [i.listItemProps?.type ? D("", !0) : (F(), O("div", Tt, R(e.$i18n.Projects.Add_project) + ": ", 1)), A(" " + R(i.name), 1)], 64))]), i.id ? (F(), O(w, { key: 0 }, [
n.menuMode ? (F(), O("a", {
item: V(({ item: i }) => [O("div", wt, [i.id ? (P(), D(C, { key: 0 }, [k(L(R(d)(i.name, 20)) + " ", 1), O("span", Tt, " id " + L(i.id), 1)], 64)) : (P(), D(C, { key: 1 }, [i.listItemProps?.type ? E("", !0) : (P(), D("div", Et, L(e.$i18n.Projects.Add_project) + ": ", 1)), k(" " + L(i.name), 1)], 64))]), i.id ? (P(), D(C, { key: 0 }, [
n.menuMode ? (P(), D("a", {
key: 0,
class: "top-projectSelector_itemLink",
href: z(dt)(i.id)
}, null, 8, Et)) : D("", !0),
e.$core.state.isMobile ? D("", !0) : (F(), E(r, {
href: R(ft)(i.id)
}, null, 8, Dt)) : E("", !0),
e.$core.state.isMobile ? E("", !0) : (P(), T(r, {
key: 1,

@@ -1337,6 +1337,6 @@ href: i.externalLink,

target: "_blank",
onClick: t[0] ||= U(() => {}, ["stop"])
onClick: t[0] ||= H(() => {}, ["stop"])
}, null, 8, ["href"])),
j(g, {
id: z(f),
A(g, {
id: R(f),
pos: "2",

@@ -1346,3 +1346,3 @@ notch: !1,

}, {
default: H(() => [j(r, {
default: V(() => [A(r, {
class: "top-popup_listMore",

@@ -1354,3 +1354,3 @@ "data-top-icon": "",

}, 8, ["id", "data"])
], 64)) : D("", !0)]),
], 64)) : E("", !0)]),
_: 1

@@ -1369,10 +1369,10 @@ }, 8, [

"openerShortcut"
])), j(vt, { id: z(f) }, null, 8, ["id"])], 64);
])), A(yt, { id: R(f) }, null, 8, ["id"])], 64);
};
}
}), kt = (e) => "-" + e, Z = (e) => e[0] === "-" ? e.substring(1) : e, Q = (e, t) => {
e = Z(e);
}), At = (e) => "-" + e, X = (e) => e[0] === "-" ? e.substring(1) : e, Z = (e, t) => {
e = X(e);
let n = t.find((t) => t.id === e);
if (n) return n;
}, At = (e, t, n) => {
}, jt = (e, t, n) => {
t ||= { id: e.id }, t.id = e.id, t.pos ??= "3", t.notch ??= !0, t.posBy ??= "fixed";

@@ -1382,3 +1382,3 @@ let r = c.genElPopupOpener("div", t);

t.preventDefault(), t.stopPropagation(), r.onclick = null;
let i = I(e.modelValue), a = {
let i = F(e.modelValue), a = {
model: i,

@@ -1390,14 +1390,14 @@ mode: e.mode,

};
s(r, "topTagSelectorTarget", a), delete r.dataset.topPopupDisabled, ne(e.modelValue) || V(i, () => {
e.modelValue = i.value, Mt(r, e, n);
s(r, "topTagSelectorTarget", a), delete r.dataset.topPopupDisabled, re(e.modelValue) || B(i, () => {
e.modelValue = i.value, Q(r, e, n);
}), r.click();
}, ne(e.modelValue) ? V(e.modelValue, () => Mt(r, e, n)) : s(r, "topTagSelectorRender", (t) => {
}, re(e.modelValue) ? B(e.modelValue, () => Q(r, e, n)) : s(r, "topTagSelectorRender", (t) => {
e.modelValue = t;
let i = s(r, "topTagSelectorTarget");
i && (i.model.value = t), Mt(r, e, n);
}), Mt(r, e, n), r;
}, jt = (e, t) => {
i && (i.model.value = t), Q(r, e, n);
}), Q(r, e, n), r;
}, Mt = (e, t) => {
s(e, "topTagSelectorRender")?.(t);
}, Mt = (t, n, r) => {
let i = z(n.modelValue);
}, Q = (t, n, r) => {
let i = R(n.modelValue);
if (t.classList.toggle("top-tagSelector-selectedOne", !i.length || i.length === 1), t.classList.toggle("top-tagSelector-toTwoLine", i.length > 5), n.mode === "setter" && n.filters) {

@@ -1418,6 +1418,6 @@ t.innerHTML = `<div>${r}</div>`;

let r = Nt({
id: Z(e),
colorId: Q(e, n.tags)?.color_id ?? "",
name: Q(e, n.tags)?.name ?? "",
state: Z(e) === e ? "selected" : "excluded"
id: X(e),
colorId: Z(e, n.tags)?.color_id ?? "",
name: Z(e, n.tags)?.name ?? "",
state: X(e) === e ? "selected" : "excluded"
});

@@ -1484,3 +1484,3 @@ t.append(r);

"title"
], It = /* @__PURE__ */ M({
], It = /* @__PURE__ */ j({
__name: "tagIcon",

@@ -1494,4 +1494,4 @@ props: {

setup(e) {
return (t, n) => (F(), O("div", {
class: P({
return (t, n) => (P(), D("div", {
class: N({
"top-tagSelector_tagIcon": !0,

@@ -1506,5 +1506,5 @@ "top-tagSelector-active": !!e.state,

}
}), Lt = ["contenteditable", "onKeydown"], Rt = /* @__PURE__ */ M({
}), Lt = ["contenteditable", "onKeydown"], Rt = /* @__PURE__ */ j({
__name: "tagPopupListItem",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
editable: { type: Boolean },

@@ -1521,3 +1521,3 @@ disabled: { type: Boolean },

}),
emits: /*@__PURE__*/ N([
emits: /*@__PURE__*/ M([
"update:name",

@@ -1529,7 +1529,7 @@ "unselect",

setup(e, { emit: t }) {
let n = e, r = t, i = B(e, "name"), a = I(null), o = T(() => navigator.userAgent.indexOf("Firefox") == -1 ? {} : {
let n = e, r = t, i = z(e, "name"), a = F(null), o = w(() => navigator.userAgent.indexOf("Firefox") == -1 ? {} : {
contenteditable: s.value,
onpaste: (e) => e.preventDefault()
}), s = I(!1), c = async () => {
s.value = !0, await ie(), a.value?.focus();
}), s = F(!1), c = async () => {
s.value = !0, await ae(), a.value?.focus();
}, l = () => {

@@ -1546,4 +1546,4 @@ let e = a.value?.innerText;

};
return (t, n) => (F(), E(v, {
class: P({
return (t, n) => (P(), T(v, {
class: N({
"top-tagSelector_tagListItem": !0,

@@ -1556,6 +1556,6 @@ "top-tagSelector_tagListItem-inEdit": s.value,

}),
onClick: U(d, ["stop"])
onClick: H(d, ["stop"])
}, {
default: H(() => [
j(It, {
default: V(() => [
A(It, {
id: e.id,

@@ -1571,3 +1571,3 @@ name: i.value,

]),
k("span", re({
O("span", ie({
ref_key: "elName",

@@ -1577,9 +1577,9 @@ ref: a,

contenteditable: s.value ? "plaintext-only" : !1
}, o.value, { onKeydown: [he(U(l, ["stop"]), ["enter"]), he(U(u, ["stop"]), ["esc"])] }), R(i.value), 17, Lt),
e.editable ? (F(), O(w, { key: 0 }, [s.value ? (F(), O("span", {
}, o.value, { onKeydown: [ge(H(l, ["stop"]), ["enter"]), ge(H(u, ["stop"]), ["esc"])] }), L(i.value), 17, Lt),
e.editable ? (P(), D(C, { key: 0 }, [s.value ? (P(), D("span", {
key: 1,
"data-top-icon": "",
class: "top-tagSelector_edit",
onClick: U(l, ["stop"])
})) : (F(), O("span", {
onClick: H(l, ["stop"])
})) : (P(), D("span", {
key: 0,

@@ -1589,3 +1589,3 @@ "data-top-icon": "",

onClick: c
}))], 64)) : D("", !0)
}))], 64)) : E("", !0)
]),

@@ -1595,6 +1595,6 @@ _: 1

}
}), zt = { key: 1 }, Bt = /* @__PURE__ */ M({
}), zt = { key: 1 }, Bt = /* @__PURE__ */ j({
inheritAttrs: !1,
__name: "popupOpener",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
modelValue: {},

@@ -1615,3 +1615,3 @@ id: {},

setup(e, { attrs: t }) {
let n = e, i = B(e, "modelValue"), a = n.useTopButton ? r : "div", o = n.useTopButton ? "html" : "default", s = {
let n = e, i = z(e, "modelValue"), a = n.useTopButton ? r : "div", o = n.useTopButton ? "html" : "default", s = {
model: i,

@@ -1624,5 +1624,5 @@ mode: n.mode,

return (r, c) => {
let l = le("top-data");
return F(), E(g, { id: e.id }, {
default: H(() => [me((F(), E(ue(z(a)), re({
let l = ue("top-data");
return P(), T(g, { id: e.id }, {
default: V(() => [he((P(), T(de(R(a)), ie({
class: {

@@ -1642,3 +1642,3 @@ "top-tagSelector": !0,

}, t), {
[z(o)]: H(() => [!i.value.length && e.mode === "filter" ? (F(), E(It, {
[R(o)]: V(() => [!i.value.length && e.mode === "filter" ? (P(), T(It, {
key: 0,

@@ -1649,7 +1649,7 @@ id: "all",

state: ""
}, null, 8, ["name"])) : D("", !0), e.mode === "setter" && e.filters ? (F(), O("div", zt, [se(r.$slots, "default")])) : (F(!0), O(w, { key: 2 }, L(i.value, (t) => (F(), E(It, {
id: z(Z)(t),
colorId: z(Q)(t, e.tags)?.color_id ?? "",
name: z(Q)(t, e.tags)?.name ?? "",
state: z(Z)(t) === t ? "selected" : "excluded"
}, null, 8, ["name"])) : E("", !0), e.mode === "setter" && e.filters ? (P(), D("div", zt, [ce(r.$slots, "default")])) : (P(!0), D(C, { key: 2 }, I(i.value, (t) => (P(), T(It, {
id: R(X)(t),
colorId: R(Z)(t, e.tags)?.color_id ?? "",
name: R(Z)(t, e.tags)?.name ?? "",
state: R(X)(t) === t ? "selected" : "excluded"
}, null, 8, [

@@ -1671,5 +1671,5 @@ "id",

}
}), Vt = /* @__PURE__ */ M({
}), Vt = /* @__PURE__ */ j({
__name: "tagSelector",
props: /*@__PURE__*/ N({
props: /*@__PURE__*/ M({
modelValue: {},

@@ -1695,6 +1695,6 @@ tags: {},

modelModifiers: {},
tags: { default: oe(Pt) },
tags: { default: se(Pt) },
tagsModifiers: {}
}),
emits: /*@__PURE__*/ N([
emits: /*@__PURE__*/ M([
"selector",

@@ -1705,7 +1705,7 @@ "setter",

setup(a, { emit: o }) {
let c = e(), l = a, u = B(a, "modelValue"), d = B(a, "tags"), f = o, p = n((e, t) => {
let c = e(), l = a, u = z(a, "modelValue"), d = z(a, "tags"), f = o, p = n((e, t) => {
f(e, t);
}, l.emitDelay);
l.singleMode && !u.value.length && (u.value = [d.value[0].id]);
let m = l.id ?? "top-popup-id-" + Math.random(), h = I("add"), g = () => {
let m = l.id ?? "top-popup-id-" + Math.random(), h = F("add"), g = () => {
let e = " " + c.Common.Tags?.toLowerCase(), t = /* @__PURE__ */ new Map();

@@ -1722,3 +1722,3 @@ return t.set("add", {

}), t;
}, _ = de({
}, _ = fe({
model: u,

@@ -1730,6 +1730,6 @@ mode: "filter",

});
V(u, () => {
B(u, () => {
p("selector", u.value);
});
let y = T(() => {
let y = w(() => {
if (_.value.mode === "setter" && l.maxTagsForSetter && !_.value.filters) return _.value.model.value.length >= l.maxTagsForSetter;

@@ -1739,7 +1739,7 @@ }), x = (e) => {

if (_.value.model.value.includes(e)) return "selected";
if (_.value.model.value.includes(kt(e))) return "excluded";
if (_.value.model.value.includes(At(e))) return "excluded";
}
return e === "all" && !_.value.model.value.length ? "selected" : "";
}, S = (e, t) => {
let n = kt(e), r = _.value.model.value.filter((t) => t !== e && t !== n);
let n = At(e), r = _.value.model.value.filter((t) => t !== e && t !== n);
t === "select" && r.push(e), t === "exclude" && r.push(n), _.value.mode === "setter" && _.value.targetId !== void 0 && l.requiredForSetter && (r.length || r.push("1"), r.length === 2 && _.value.model.value.length === 1 && _.value.model.value[0] === "1" && (r = r.filter((e) => e !== "1"))), l.singleMode && !_.value.filters && (r.length || (r = _.value.model.value), r.length > 1 && (r = [r[r.length - 1]])), r.sort((e, t) => l.tags ? l.tags.findIndex((t) => t.id === e) - l.tags.findIndex((e) => e.id === t) : 0), _.value.model.value = r, _.value.mode === "setter" && _.value.targetId !== void 0 && p("setter", {

@@ -1750,6 +1750,6 @@ tagsIds: r,

});
}, C = T(() => {
}, ee = w(() => {
let e = "top-tagSelector_popup";
return _.value.mode === "filter" && (e += " top-tagSelector_popup-filter"), _.value.mode === "setter" && (e += " top-tagSelector_popup-setter"), e;
}), ee = () => {
}), te = () => {
let e = prompt("", "New tag");

@@ -1763,3 +1763,3 @@ if (!e || e === "New tag") return;

}), f("tagsChanged", d.value);
}, k = (e) => {
}, O = (e) => {
if (_.value = s(e.elPopupOpener, "topTagSelectorTarget"), !_.value) throw Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");

@@ -1784,9 +1784,9 @@ if (_.value.filters && (h.value = "add", _.value.model.value = []), !t.$?.ui.sortable) {

});
}, M = (e) => {
}, j = (e) => {
t.$?.ui.sortable && $(e.elPopup).data("ui-sortable") && $(e.elPopup).sortable("destroy");
};
return (e, t) => (F(), O(w, null, [j(Bt, {
return (e, t) => (P(), D(C, null, [A(Bt, {
modelValue: u.value,
"onUpdate:modelValue": t[0] ||= (e) => u.value = e,
id: z(m),
id: R(m),
tags: d.value,

@@ -1802,11 +1802,11 @@ styling: a.styling,

"useTopButton"
]), j(b, {
id: z(m),
class: P(C.value),
onOpen: t[4] ||= (e) => k(e),
onClose: t[5] ||= (e) => M(e),
]), A(b, {
id: R(m),
class: N(ee.value),
onOpen: t[4] ||= (e) => O(e),
onClose: t[5] ||= (e) => j(e),
"transition-duration": 50
}, te({
contentList: H(() => [
_.value.mode === "filter" && !a.singleMode ? (F(), E(Rt, {
}, ne({
contentList: V(() => [
_.value.mode === "filter" && !a.singleMode ? (P(), T(Rt, {
key: 0,

@@ -1818,4 +1818,4 @@ id: "all",

onSelect: t[3] ||= (e) => _.value.model.value = []
}, null, 8, ["name", "state"])) : D("", !0),
(F(!0), O(w, null, L(d.value, (e) => (F(), E(Rt, {
}, null, 8, ["name", "state"])) : E("", !0),
(P(!0), D(C, null, I(d.value, (e) => (P(), T(Rt, {
key: e.id,

@@ -1833,3 +1833,3 @@ id: e.id,

"onUpdate:name": (t) => {
e.name = t, z(p)("tagsChanged", d.value);
e.name = t, R(p)("tagsChanged", d.value);
}

@@ -1849,10 +1849,10 @@ }, null, 8, [

]))), 128)),
a.tagsEditable && d.value.length < a.tagsMax && d.value.length < 20 ? (F(), E(v, {
a.tagsEditable && d.value.length < a.tagsMax && d.value.length < 20 ? (P(), T(v, {
key: 1,
"data-top-icon": "",
onClick: U(ee, ["stop"])
onClick: H(te, ["stop"])
}, {
default: H(() => [A(R(e.$i18n.Common.Add), 1)]),
default: V(() => [k(L(e.$i18n.Common.Add), 1)]),
_: 1
})) : D("", !0)
})) : E("", !0)
]),

@@ -1862,3 +1862,3 @@ _: 2

name: "header",
fn: H(() => [j(i, {
fn: V(() => [A(i, {
modelValue: h.value,

@@ -1871,6 +1871,6 @@ "onUpdate:modelValue": t[1] ||= (e) => h.value = e,

name: "footer",
fn: H(() => [j(r, { color: "theme" }, {
default: H(() => [A(R(e.$i18n.Common.Cancel), 1)]),
fn: V(() => [A(r, { color: "theme" }, {
default: V(() => [k(L(e.$i18n.Common.Cancel), 1)]),
_: 1
}), j(r, { onClick: t[2] ||= (e) => z(p)("setter", {
}), A(r, { onClick: t[2] ||= (e) => R(p)("setter", {
tagsIds: _.value.model.value,

@@ -1881,3 +1881,3 @@ filters: _.value.filters,

}) }, {
default: H(() => [A(R(h.value === "add" ? e.$i18n.Common.Add : "") + " " + R(h.value === "replace" ? e.$i18n.Common.Replace : "") + " " + R(h.value === "delete" ? e.$i18n.Common.Delete : ""), 1)]),
default: V(() => [k(L(h.value === "add" ? e.$i18n.Common.Add : "") + " " + L(h.value === "replace" ? e.$i18n.Common.Replace : "") + " " + L(h.value === "delete" ? e.$i18n.Common.Delete : ""), 1)]),
_: 1

@@ -1890,4 +1890,4 @@ })]),

//#endregion
export { ve as TopCompetitorSelector, rt as TopGroupSelector, Ot as TopProjectSelector, Le as TopRegionSelector, Vt as TopTagSelector, Bt as TopTagSelectorPopupOpener, It as TopTagSelectorTagIcon, Me as dialogRegionSelector, je as findRegion, At as genElTopTagSelectorPopupOpener, Oe as genSearcherByKey, jt as renderElTopTagSelectorPopupOpener, St as topProjectSelectorClearCache, ye as useItemsFromCompetitors };
export { ye as TopCompetitorSelector, it as TopGroupSelector, kt as TopProjectSelector, Re as TopRegionSelector, Vt as TopTagSelector, Bt as TopTagSelectorPopupOpener, It as TopTagSelectorTagIcon, Ne as dialogRegionSelector, Me as findRegion, jt as genElTopTagSelectorPopupOpener, ke as genSearcherByKey, Mt as renderElTopTagSelectorPopupOpener, Ct as topProjectSelectorClearCache, be as useItemsFromCompetitors };
//# sourceMappingURL=project.js.map

@@ -1,2 +0,2 @@

define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-DGsWGbDX.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleTimeSelectors=t.TopScheduleTimeSelector=t.TopScheduleReportSend=t.TopScheduleEmailSelector=t.TopScheduleEmail=t.TopScheduleContainer=t.TopScheduleCalendar=t.TopSchedule=void 0;var s={class:`top-schedule_header`},c={class:`top-schedule_headerTitle`},l={key:0,class:`top-schedule_body`},u=(0,a.defineComponent)({name:`TopSchedule`,__name:`schedule`,props:{styling:{},triggerType:{default:`onDemand`},triggerTypes:{},triggerTypeOptions:{},title:{}},emits:[`update:triggerType`],setup(e,{emit:t,slots:r}){let i=e,o=(0,n.E)(),u={go:o.Projects.Checks,report:o.Projects.Reports,neutral:``},d=i.title??u[i.styling];return(i,o)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)({"top-schedule":!0,[`top-schedule-style_${e.styling}`]:!0})},[(0,a.createElementVNode)(`div`,s,[(0,a.createElementVNode)(`div`,c,(0,a.toDisplayString)((0,a.unref)(d)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerTriggerType`,modelValue:e.triggerType,"onUpdate:modelValue":o[0]||=e=>t(`update:triggerType`,e),options:e.triggerTypeOptions,size:`s`},null,8,[`modelValue`,`options`])]),e.triggerType!==`onDemand`&&r.body?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,l,[(0,a.renderSlot)(i.$slots,`body`)])):(0,a.createCommentVNode)(``,!0)],2))}}),d={},f={class:`top-schedule_bodyContainer`};t.TopSchedule=u;function p(e,t){return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,f,[(0,a.renderSlot)(e.$slots,`default`)])}var m=(0,n.u)(d,[[`render`,p]]),h=e=>{let t=(0,n.E)();switch(e){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}]}},g={class:`top-scheduleCalendar`},_={class:`top-scheduleCalendar_header`},v={class:`top-scheduleCalendar_calendar`},y=[`value`],b=[`data-top-icon`],x=(0,a.defineComponent)({__name:`calendar`,props:{modelValue:{},mode:{},timesCount:{default:1}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=(0,n.E)(),o=e,s=t,c=(0,a.computed)({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),l=(0,a.computed)(()=>h(o.mode)),u={dayOfWeek:{totalDaysCount:7,period:r.Common.a_week},dayOfMonth:{totalDaysCount:28,period:r.Common.a_month}},d=(0,a.computed)(()=>{let e=c.value.length,{totalDaysCount:t,period:n}=u[o.mode],a=e===t;if(a&&o.timesCount===1)return r.Common.Every_day;let s=o.timesCount===1?e:o.timesCount;return`${a?r.Common.Every_day:`${e}`}${o.timesCount>1?` × ${o.timesCount}`:``} ${(0,i.numberEnding)(s,r.Common.time_a_0,r.Common.time_a_0,r.Common.time_a_2)} ${n}`}),f=(0,a.computed)(()=>c.value.length>1),p=()=>{c.value=f.value?[]:l.value.map(e=>e.value)};return(e,t)=>{let n=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,g,[(0,a.createElementVNode)(`div`,_,[(0,a.renderSlot)(e.$slots,`header`),(0,a.createVNode)(n,{class:`top-scheduleCalendar_headerButton`,onClick:p,color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(f.value?e.$i18n.Common.Clear:e.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,v,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(l.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayRadio`,type:`checkbox`,value:e.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,tabindex:`0`},null,8,y),[[a.vModelCheckbox,c.value]]),(0,a.createElementVNode)(`span`,{class:`top-scheduleCalendar_calendarDayTitle`,"data-top-icon":e.isIcon?e.title:void 0},[e.isIcon?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(e.title),1)],64))],8,b)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!c.value.length})},(0,a.toDisplayString)(d.value),3)])}}}),S=(0,a.defineComponent)({__name:`selector`,props:{modelValue:{},emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]}},emits:[`update:modelValue`,`submit`],setup(e,{emit:t}){let i=t,o=e,s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=e=>e.filter(e=>!o.emails.includes(e)),h=(e=o.modelValue)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},g=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await o.getEmailSuggestions(n)),t(m(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{!t.item||!f||(e.preventDefault(),h(t.item.value),s(`update:modelValue`,``),l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{g()}),(0,a.onBeforeUnmount)(()=>{!l?.ui?.autocomplete||!f||(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:e.modelValue,"onUpdate:modelValue":r[1]||=e=>i(`update:modelValue`,e),onKeydown:r[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>h(),[`prevent`]),[`enter`]),title:t.$i18n.Common.Enter_email,type:`email`,size:`l`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)(n.h,{class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:r[0]||=(0,a.withModifiers)(e=>h(),[`prevent`])})]),_:1},8,[`modelValue`,`title`])],512))}}),C={class:`top-scheduleEmail`},w={class:`top-scheduleEmail_title`},T={key:1,class:`top-scheduleEmail_emails`},E={class:`top-ellipsis1`},D=(0,a.defineComponent)({__name:`email`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{default:-1}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=t,r=e,i=t,o=(0,a.ref)(``),s=e=>{let t=e.trim();if(!t||r.emails.includes(t)){o.value=``;return}i(`add:email`,t),o.value=``};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,C,[(0,a.createElementVNode)(`div`,w,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),e.maxEmailsCount&&e.emails.length===e.maxEmailsCount?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createBlock)(S,{key:0,modelValue:o.value,"onUpdate:modelValue":r[0]||=e=>o.value=e,getEmailSuggestions:e.getEmailSuggestions,emails:e.emails,onSubmit:s},null,8,[`modelValue`,`getEmailSuggestions`,`emails`])),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,E,(0,a.toDisplayString)(e),1),(0,a.createVNode)(i,{onClick:t=>n(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),O={class:`top-scheduleReportSend`},k={class:`top-scheduleReportSend_title`},A={class:`top-scheduleReportSend_channels`},j=[`data-top-icon`],M={class:`top-scheduleReportSend_channelLabel top-ellipsis1`},N={key:0,class:`top-scheduleReportSend_channel`},P=[`data-top-icon`],F=[`href`],I=(0,a.defineComponent)({__name:`reportSend`,props:{channels:{},connectors:{default:()=>[]}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,O,[(0,a.createElementVNode)(`div`,k,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send),1),(0,a.createElementVNode)(`div`,A,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleReportSend_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,j),(0,a.createElementVNode)(`span`,M,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleReportSend_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleReportSend_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,N,[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,P),(0,a.createElementVNode)(`a`,{class:`top-scheduleReportSend_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,F)]))],64))),128))])])}}}),L={class:`top-scheduleTimeSelector`},R=(0,a.defineComponent)({__name:`timeSelector`,props:{hour:{},minute:{}},emits:[`update:hour`,`update:minute`],setup(e,{emit:t}){let n=e,r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=[{value:`0`,title:`00`},{value:`15`,title:`15`},{value:`30`,title:`30`},{value:`45`,title:`45`}],o=(0,a.computed)(()=>i.some(e=>e.value===n.minute)?i:[...i,{value:n.minute,title:n.minute.padStart(2,`0`),disabled:!0}]);return(n,i)=>{let s=(0,a.resolveComponent)(`TopSelect`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,L,[(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),"onUpdate:modelValue":i[0]||=e=>t(`update:hour`,e)},null,8,[`modelValue`,`options`]),(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:o.value,"onUpdate:modelValue":i[1]||=e=>t(`update:minute`,e)},null,8,[`modelValue`,`options`])])}}}),z={class:`top-scheduleTimeSelectors`},B=(0,a.defineComponent)({__name:`timeSelectors`,props:{times:{}},emits:[`update:times`],setup(e,{emit:t}){let n=t,r=e,i=t,o=new WeakMap,s=0,c=e=>{let t=(0,a.toRaw)(e),n=o.get(t);if(n!==void 0)return n;let r=s++;return o.set(t,r),r},l=(e,t)=>{let n=r.times.map((n,r)=>{if(r!==e)return n;let i={...n,...t};return o.set(i,c(n)),i});i(`update:times`,n)},u=()=>{let e=[{hour:`0`,minute:`0`},...r.times];i(`update:times`,e)};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,z,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.times,(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleTimeSelectors_item`,key:c(t)},[(0,a.createVNode)(R,{hour:t.hour,minute:t.minute,"onUpdate:hour":e=>l(r,{hour:e}),"onUpdate:minute":e=>l(r,{minute:e})},null,8,[`hour`,`minute`,`onUpdate:hour`,`onUpdate:minute`]),r?((0,a.openBlock)(),(0,a.createBlock)(i,{key:0,onClick:t=>n(`update:times`,e.times.filter((e,t)=>t!==r)),color:`theme`,icon:``},null,8,[`onClick`])):((0,a.openBlock)(),(0,a.createBlock)(i,{key:1,class:`top-scheduleTimeSelectors_itemAdd`,onClick:u,color:`theme`,icon:``}))]))),128))])}}});t.TopScheduleContainer=m,t.TopScheduleCalendar=x,t.TopScheduleEmailSelector=S,t.TopScheduleEmail=D,t.TopScheduleReportSend=I,t.TopScheduleTimeSelector=R,t.TopScheduleTimeSelectors=B});
define([`require`,`exports`,`../.chunks/forms-_4U0sLFk.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-BaHwxbWz.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleTimeSelectors=t.TopScheduleTimeSelector=t.TopScheduleReportSend=t.TopScheduleEmailSelector=t.TopScheduleEmail=t.TopScheduleContainer=t.TopScheduleCalendar=t.TopSchedule=void 0;var s={class:`top-schedule_header`},c={class:`top-schedule_headerTitle`},l={key:0,class:`top-schedule_body`},u=(0,a.defineComponent)({name:`TopSchedule`,__name:`schedule`,props:{styling:{},triggerType:{default:`onDemand`},triggerTypes:{},triggerTypeOptions:{},title:{}},emits:[`update:triggerType`],setup(e,{emit:t,slots:r}){let i=e,o=(0,n.E)(),u={go:o.Projects.Checks,report:o.Projects.Reports,neutral:``},d=i.title??u[i.styling];return(i,o)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)({"top-schedule":!0,[`top-schedule-style_${e.styling}`]:!0})},[(0,a.createElementVNode)(`div`,s,[(0,a.createElementVNode)(`div`,c,(0,a.toDisplayString)((0,a.unref)(d)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerTriggerType`,modelValue:e.triggerType,"onUpdate:modelValue":o[0]||=e=>t(`update:triggerType`,e),options:e.triggerTypeOptions,size:`s`},null,8,[`modelValue`,`options`])]),e.triggerType!==`onDemand`&&r.body?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,l,[(0,a.renderSlot)(i.$slots,`body`)])):(0,a.createCommentVNode)(``,!0)],2))}}),d={},f={class:`top-schedule_bodyContainer`};t.TopSchedule=u;function p(e,t){return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,f,[(0,a.renderSlot)(e.$slots,`default`)])}var m=(0,n.u)(d,[[`render`,p]]),h=e=>{let t=(0,n.E)();switch(e){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}]}},g={class:`top-scheduleCalendar`},_={class:`top-scheduleCalendar_header`},v={class:`top-scheduleCalendar_calendar`},y=[`value`],b=[`data-top-icon`],x=(0,a.defineComponent)({__name:`calendar`,props:{modelValue:{},mode:{},timesCount:{default:1}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=(0,n.E)(),o=e,s=t,c=(0,a.computed)({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),l=(0,a.computed)(()=>h(o.mode)),u={dayOfWeek:{totalDaysCount:7,period:r.Common.a_week},dayOfMonth:{totalDaysCount:28,period:r.Common.a_month}},d=(0,a.computed)(()=>{let e=c.value.length,{totalDaysCount:t,period:n}=u[o.mode],a=e===t;if(a&&o.timesCount===1)return r.Common.Every_day;let s=o.timesCount===1?e:o.timesCount;return`${a?r.Common.Every_day:`${e}`}${o.timesCount>1?` × ${o.timesCount}`:``} ${(0,i.numberEnding)(s,r.Common.time_a_0,r.Common.time_a_0,r.Common.time_a_2)} ${n}`}),f=(0,a.computed)(()=>c.value.length>1),p=()=>{c.value=f.value?[]:l.value.map(e=>e.value)};return(e,t)=>{let n=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,g,[(0,a.createElementVNode)(`div`,_,[(0,a.renderSlot)(e.$slots,`header`),(0,a.createVNode)(n,{class:`top-scheduleCalendar_headerButton`,onClick:p,color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(f.value?e.$i18n.Common.Clear:e.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,v,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(l.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayRadio`,type:`checkbox`,value:e.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,tabindex:`0`},null,8,y),[[a.vModelCheckbox,c.value]]),(0,a.createElementVNode)(`span`,{class:`top-scheduleCalendar_calendarDayTitle`,"data-top-icon":e.isIcon?e.title:void 0},[e.isIcon?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(e.title),1)],64))],8,b)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!c.value.length})},(0,a.toDisplayString)(d.value),3)])}}}),S=(0,a.defineComponent)({__name:`selector`,props:{modelValue:{},emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]}},emits:[`update:modelValue`,`submit`],setup(e,{emit:t}){let i=t,o=e,s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=e=>e.filter(e=>!o.emails.includes(e)),h=(e=o.modelValue)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},g=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await o.getEmailSuggestions(n)),t(m(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{!t.item||!f||(e.preventDefault(),h(t.item.value),s(`update:modelValue`,``),l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{g()}),(0,a.onBeforeUnmount)(()=>{!l?.ui?.autocomplete||!f||(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:e.modelValue,"onUpdate:modelValue":r[1]||=e=>i(`update:modelValue`,e),onKeydown:r[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>h(),[`prevent`]),[`enter`]),title:t.$i18n.Common.Enter_email,type:`email`,size:`l`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)(n.h,{class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:r[0]||=(0,a.withModifiers)(e=>h(),[`prevent`])})]),_:1},8,[`modelValue`,`title`])],512))}}),C={class:`top-scheduleEmail`},w={class:`top-scheduleEmail_title`},T={key:1,class:`top-scheduleEmail_emails`},E={class:`top-ellipsis1`},D=(0,a.defineComponent)({__name:`email`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{default:-1}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=t,r=e,i=t,o=(0,a.ref)(``),s=e=>{let t=e.trim();if(!t||r.emails.includes(t)){o.value=``;return}i(`add:email`,t),o.value=``};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,C,[(0,a.createElementVNode)(`div`,w,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),e.maxEmailsCount&&e.emails.length===e.maxEmailsCount?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createBlock)(S,{key:0,modelValue:o.value,"onUpdate:modelValue":r[0]||=e=>o.value=e,getEmailSuggestions:e.getEmailSuggestions,emails:e.emails,onSubmit:s},null,8,[`modelValue`,`getEmailSuggestions`,`emails`])),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,E,(0,a.toDisplayString)(e),1),(0,a.createVNode)(i,{onClick:t=>n(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),O={class:`top-scheduleReportSend`},k={class:`top-scheduleReportSend_title`},A={class:`top-scheduleReportSend_channels`},j=[`data-top-icon`],M={class:`top-scheduleReportSend_channelLabel top-ellipsis1`},N={key:0,class:`top-scheduleReportSend_channel`},P=[`data-top-icon`],F=[`href`],I=(0,a.defineComponent)({__name:`reportSend`,props:{channels:{},connectors:{default:()=>[]}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,O,[(0,a.createElementVNode)(`div`,k,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send),1),(0,a.createElementVNode)(`div`,A,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleReportSend_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,j),(0,a.createElementVNode)(`span`,M,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleReportSend_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleReportSend_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,N,[(0,a.createElementVNode)(`span`,{class:`top-scheduleReportSend_channelIcon`,"data-top-icon":i[e.source]},null,8,P),(0,a.createElementVNode)(`a`,{class:`top-scheduleReportSend_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,F)]))],64))),128))])])}}}),L={class:`top-scheduleTimeSelector`},R=(0,a.defineComponent)({__name:`timeSelector`,props:{hour:{},minute:{}},emits:[`update:hour`,`update:minute`],setup(e,{emit:t}){let n=e,r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=[{value:`0`,title:`00`},{value:`15`,title:`15`},{value:`30`,title:`30`},{value:`45`,title:`45`}],o=(0,a.computed)(()=>i.some(e=>e.value===n.minute)?i:[...i,{value:n.minute,title:n.minute.padStart(2,`0`),disabled:!0}]);return(n,i)=>{let s=(0,a.resolveComponent)(`TopSelect`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,L,[(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),"onUpdate:modelValue":i[0]||=e=>t(`update:hour`,e)},null,8,[`modelValue`,`options`]),(0,a.createVNode)(s,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:o.value,"onUpdate:modelValue":i[1]||=e=>t(`update:minute`,e)},null,8,[`modelValue`,`options`])])}}}),z={class:`top-scheduleTimeSelectors`},B=(0,a.defineComponent)({__name:`timeSelectors`,props:{times:{}},emits:[`update:times`],setup(e,{emit:t}){let n=t,r=e,i=t,o=new WeakMap,s=0,c=e=>{let t=(0,a.toRaw)(e),n=o.get(t);if(n!==void 0)return n;let r=s++;return o.set(t,r),r},l=(e,t)=>{let n=r.times.map((n,r)=>{if(r!==e)return n;let i={...n,...t};return o.set(i,c(n)),i});i(`update:times`,n)},u=()=>{let e=[{hour:`0`,minute:`0`},...r.times];i(`update:times`,e)};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,z,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.times,(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleTimeSelectors_item`,key:c(t)},[(0,a.createVNode)(R,{hour:t.hour,minute:t.minute,"onUpdate:hour":e=>l(r,{hour:e}),"onUpdate:minute":e=>l(r,{minute:e})},null,8,[`hour`,`minute`,`onUpdate:hour`,`onUpdate:minute`]),r?((0,a.openBlock)(),(0,a.createBlock)(i,{key:0,onClick:t=>n(`update:times`,e.times.filter((e,t)=>t!==r)),color:`theme`,icon:``},null,8,[`onClick`])):((0,a.openBlock)(),(0,a.createBlock)(i,{key:1,class:`top-scheduleTimeSelectors_itemAdd`,onClick:u,color:`theme`,icon:``}))]))),128))])}}});t.TopScheduleContainer=m,t.TopScheduleCalendar=x,t.TopScheduleEmailSelector=S,t.TopScheduleEmail=D,t.TopScheduleReportSend=I,t.TopScheduleTimeSelector=R,t.TopScheduleTimeSelectors=B});
//# sourceMappingURL=schedule.amd.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"names":["vue","exports","j","M","N","P","vue_1","n","a","t","forms__4U0sLFk_esm_js_1","s","c","e","F","I","L","R","z","B","V","H","U","W","G","i","o","u","g","_","string_js_1","y","b","K","l","d","p","m","v","C","w","check_js_1","T","q","J","Y","X","Z","re","ie","ae","oe","se","Q","ce","le","ue","de","$","fe","pe"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-_4U0sLFk.esm.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-DGsWGbDX.esm.js\"], function (require, exports, forms__4U0sLFk_esm_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleTimeSelectors = exports.TopScheduleTimeSelector = exports.TopScheduleReportSend = exports.TopScheduleEmailSelector = exports.TopScheduleEmail = exports.TopScheduleContainer = exports.TopScheduleCalendar = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/schedule.vue?vue&type=script&setup=true&lang.ts\n var j = { class: \"top-schedule_header\" }, M = { class: \"top-schedule_headerTitle\" }, N = {\n key: 0,\n class: \"top-schedule_body\"\n }, P = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"TopSchedule\",\n __name: \"schedule\",\n props: {\n styling: {},\n triggerType: { default: \"onDemand\" },\n triggerTypes: {},\n triggerTypeOptions: {},\n title: {}\n },\n emits: [\"update:triggerType\"],\n setup(t, { emit: n, slots: r }) {\n let a = t, o = (0, forms__4U0sLFk_esm_js_1.E)(), s = {\n go: o.Projects.Checks,\n report: o.Projects.Reports,\n neutral: \"\"\n }, c = a.title ?? s[a.styling];\n return (e, a) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-schedule\": !0,\n [`top-schedule-style_${t.styling}`]: !0\n }) }, [(0, vue_1.createElementVNode)(\"div\", j, [(0, vue_1.createElementVNode)(\"div\", M, (0, vue_1.toDisplayString)((0, vue_1.unref)(c)), 1), (0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.n, {\n class: \"top-schedule_headerTriggerType\",\n modelValue: t.triggerType,\n \"onUpdate:modelValue\": a[0] ||= (e) => n(\"update:triggerType\", e),\n options: t.triggerTypeOptions,\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), t.triggerType !== \"onDemand\" && r.body ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", N, [(0, vue_1.renderSlot)(e.$slots, \"body\")])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), F = {}, I = { class: \"top-schedule_bodyContainer\" };\n exports.TopSchedule = P;\n function L(e, t) {\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [(0, vue_1.renderSlot)(e.$slots, \"default\")]);\n }\n var R = /*#__PURE__*/ (0, forms__4U0sLFk_esm_js_1.u)(F, [[\"render\", L]]), z = (t) => {\n let n = (0, forms__4U0sLFk_esm_js_1.E)();\n switch (t) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n }\n }, B = { class: \"top-scheduleCalendar\" }, V = { class: \"top-scheduleCalendar_header\" }, H = { class: \"top-scheduleCalendar_calendar\" }, U = [\"value\"], W = [\"data-top-icon\"], G = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: {\n modelValue: {},\n mode: {},\n timesCount: { default: 1 }\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: n }) {\n let r = (0, forms__4U0sLFk_esm_js_1.E)(), i = t, a = n, o = (0, vue_1.computed)({\n get: () => i.modelValue,\n set: (e) => a(\"update:modelValue\", e)\n }), u = (0, vue_1.computed)(() => z(i.mode)), g = {\n dayOfWeek: {\n totalDaysCount: 7,\n period: r.Common.a_week\n },\n dayOfMonth: {\n totalDaysCount: 28,\n period: r.Common.a_month\n }\n }, _ = (0, vue_1.computed)(() => {\n let e = o.value.length, { totalDaysCount: t, period: n } = g[i.mode], a = e === t;\n if (a && i.timesCount === 1)\n return r.Common.Every_day;\n let c = i.timesCount === 1 ? e : i.timesCount;\n return `${a ? r.Common.Every_day : `${e}`}${i.timesCount > 1 ? ` × ${i.timesCount}` : \"\"} ${(0, string_js_1.numberEnding)(c, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${n}`;\n }), y = (0, vue_1.computed)(() => o.value.length > 1), b = () => {\n o.value = y.value ? [] : u.value.map((e) => e.value);\n };\n return (e, t) => {\n let n = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", B, [\n (0, vue_1.createElementVNode)(\"div\", V, [(0, vue_1.renderSlot)(e.$slots, \"header\"), (0, vue_1.createVNode)(n, {\n class: \"top-scheduleCalendar_headerButton\",\n onClick: b,\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(y.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", H, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(u.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.withDirectives)((0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayRadio\",\n type: \"checkbox\",\n value: e.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => o.value = e,\n tabindex: \"0\"\n }, null, 8, U), [[vue_1.vModelCheckbox, o.value]]), (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleCalendar_calendarDayTitle\",\n \"data-top-icon\": e.isIcon ? e.title : void 0\n }, [e.isIcon ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.title), 1)], 64))], 8, W)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !o.value.length\n }) }, (0, vue_1.toDisplayString)(_.value), 3)\n ]);\n };\n }\n }), K = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: {\n modelValue: {},\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"submit\"],\n setup(i, { emit: a }) {\n let s = a, c = i, l = a, u = (0, forms__4U0sLFk_esm_js_1.E)(), d = forms__4U0sLFk_esm_js_1.O.$, p = (0, vue_1.ref)(), m = (0, vue_1.ref)(), g = null, v = {}, C = (e) => e.filter((e) => !c.emails.includes(e)), w = (e = c.modelValue) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms__4U0sLFk_esm_js_1.O.notice(u.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n l(\"submit\", n);\n }\n }, T = async () => {\n if (await (0, vue_1.nextTick)(), g = m.value?.$el.querySelector(\"input\") ?? null, g) {\n if (!d?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n d(g).autocomplete({\n appendTo: p.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in v || (v[n] = await c.getEmailSuggestions(n)), t(C(v[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n !t.item || !g || (e.preventDefault(), w(t.item.value), l(\"update:modelValue\", \"\"), d(g).trigger(\"focus\"));\n }\n }), d(g).attr(\"autocomplete\", \"disabled\"), d(g).on(\"focus.scheduleEmailSelector\", () => {\n g && d(g).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n T();\n }), (0, vue_1.onBeforeUnmount)(() => {\n !d?.ui?.autocomplete || !g || (d(g).off(\"focus.scheduleEmailSelector\"), d(g).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: p\n }, [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.c, {\n ref_key: \"elInputRef\",\n ref: m,\n modelValue: i.modelValue,\n \"onUpdate:modelValue\": t[1] ||= (e) => s(\"update:modelValue\", e),\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => w(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"l\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.h, {\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => w(), [\"prevent\"])\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 512));\n }\n }), q = { class: \"top-scheduleEmail\" }, J = { class: \"top-scheduleEmail_title\" }, Y = {\n key: 1,\n class: \"top-scheduleEmail_emails\"\n }, X = { class: \"top-ellipsis1\" }, Z = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"email\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: { default: -1 }\n },\n emits: [\"add:email\", \"remove:email\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = (0, vue_1.ref)(\"\"), o = (e) => {\n let t = e.trim();\n if (!t || r.emails.includes(t)) {\n a.value = \"\";\n return;\n }\n i(\"add:email\", t), a.value = \"\";\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", q, [\n (0, vue_1.createElementVNode)(\"div\", J, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(K, {\n key: 0,\n modelValue: a.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => a.value = e,\n getEmailSuggestions: e.getEmailSuggestions,\n emails: e.emails,\n onSubmit: o\n }, null, 8, [\n \"modelValue\",\n \"getEmailSuggestions\",\n \"emails\"\n ])),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Y, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", X, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(i, {\n onClick: (t) => n(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), re = { class: \"top-scheduleReportSend\" }, ie = { class: \"top-scheduleReportSend_title\" }, ae = { class: \"top-scheduleReportSend_channels\" }, oe = [\"data-top-icon\"], se = { class: \"top-scheduleReportSend_channelLabel top-ellipsis1\" }, Q = {\n key: 0,\n class: \"top-scheduleReportSend_channel\"\n }, ce = [\"data-top-icon\"], le = [\"href\"], ue = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"reportSend\",\n props: {\n channels: {},\n connectors: { default: () => [] }\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), s = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", re, [(0, vue_1.createElementVNode)(\"div\", ie, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send), 1), (0, vue_1.createElementVNode)(\"div\", ae, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleReportSend_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, oe),\n (0, vue_1.createElementVNode)(\"span\", se, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleReportSend_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(s, {\n class: \"top-scheduleReportSend_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Q, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, ce), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleReportSend_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, le)]))], 64))), 128))])]);\n };\n }\n }), de = { class: \"top-scheduleTimeSelector\" }, $ = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: {\n hour: {},\n minute: {}\n },\n emits: [\"update:hour\", \"update:minute\"],\n setup(e, { emit: t }) {\n let n = e, r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = [\n {\n value: \"0\",\n title: \"00\"\n },\n {\n value: \"15\",\n title: \"15\"\n },\n {\n value: \"30\",\n title: \"30\"\n },\n {\n value: \"45\",\n title: \"45\"\n }\n ], a = (0, vue_1.computed)(() => i.some((e) => e.value === n.minute) ? i : [...i, {\n value: n.minute,\n title: n.minute.padStart(2, \"0\"),\n disabled: !0\n }]);\n return (n, i) => {\n let o = (0, vue_1.resolveComponent)(\"TopSelect\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", de, [(0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n \"onUpdate:modelValue\": i[0] ||= (e) => t(\"update:hour\", e)\n }, null, 8, [\"modelValue\", \"options\"]), (0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: a.value,\n \"onUpdate:modelValue\": i[1] ||= (e) => t(\"update:minute\", e)\n }, null, 8, [\"modelValue\", \"options\"])]);\n };\n }\n }), fe = { class: \"top-scheduleTimeSelectors\" }, pe = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelectors\",\n props: { times: {} },\n emits: [\"update:times\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = /* @__PURE__ */ new WeakMap(), o = 0, s = (e) => {\n let t = (0, vue_1.toRaw)(e), n = a.get(t);\n if (n !== void 0)\n return n;\n let r = o++;\n return a.set(t, r), r;\n }, l = (e, t) => {\n let n = r.times.map((n, r) => {\n if (r !== e)\n return n;\n let i = {\n ...n,\n ...t\n };\n return a.set(i, s(n)), i;\n });\n i(\"update:times\", n);\n }, d = () => {\n let e = [{\n hour: \"0\",\n minute: \"0\"\n }, ...r.times];\n i(\"update:times\", e);\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", fe, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.times, (t, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleTimeSelectors_item\",\n key: s(t)\n }, [(0, vue_1.createVNode)($, {\n hour: t.hour,\n minute: t.minute,\n \"onUpdate:hour\": (e) => l(r, { hour: e }),\n \"onUpdate:minute\": (e) => l(r, { minute: e })\n }, null, 8, [\n \"hour\",\n \"minute\",\n \"onUpdate:hour\",\n \"onUpdate:minute\"\n ]), r ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 0,\n onClick: (t) => n(\"update:times\", e.times.filter((e, t) => t !== r)),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 1,\n class: \"top-scheduleTimeSelectors_itemAdd\",\n onClick: d,\n color: \"theme\",\n icon: \"\"\n }))]))), 128))]);\n };\n }\n });\n exports.TopScheduleContainer = R;\n exports.TopScheduleCalendar = G;\n exports.TopScheduleEmailSelector = K;\n exports.TopScheduleEmail = Z;\n exports.TopScheduleReportSend = ue;\n exports.TopScheduleTimeSelector = $;\n exports.TopScheduleTimeSelectors = pe;\n});\n//# sourceMappingURL=schedule.js.map\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from './types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTHS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTHS }, (_, index) => ({\n\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\ttitle: String(index + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = withDefaults(defineProps<Props>(), {\n\ttimesCount: 1,\n});\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\n/**\n * Параметры отображения выбранных дней для каждого режима календаря\n */\nconst modeConfig = {\n\tdayOfWeek: {\n\t\ttotalDaysCount: COUNT_DAYS_IN_WEEK,\n\t\tperiod: i18n.Common.a_week,\n\t},\n\tdayOfMonth: {\n\t\t// плюс \"последний день месяца\"\n\t\ttotalDaysCount: COUNT_DAYS_IN_MONTHS + 1,\n\t\tperiod: i18n.Common.a_month,\n\t},\n};\n\n/**\n * Текстовая сводка выбранных дней и временных слотов\n */\nconst selectionSummary = computed(() => {\n\t// Количество выбранных пользователем дней\n\tconst daysCount = selectedDays.value.length;\n\t// Общее количество доступных дней и название периода для текущего режима\n\tconst { totalDaysCount, period } = modeConfig[props.mode];\n\t// Выбраны ли все доступные дни\n\tconst isEveryDay = daysCount === totalDaysCount;\n\n\tif (isEveryDay && props.timesCount === 1) return i18n.Common.Every_day;\n\n\t// Число, для которого нужно подобрать склонение слова «раз»\n\tconst count = props.timesCount === 1 ? daysCount : props.timesCount;\n\t// Подпись количества выбранных дней\n\tconst daysLabel = isEveryDay ? i18n.Common.Every_day : `${daysCount}`;\n\t// Множитель времени отображается только при нескольких временных слотах\n\tconst multiplier = props.timesCount > 1 ? ` × ${props.timesCount}` : '';\n\t// Склонённая подпись количества запусков\n\tconst countLabel = numberEnding(\n\t\tcount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t);\n\n\treturn `${daysLabel}${multiplier} ${countLabel} ${period}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectionSummary }}\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tv-model=\"value\"\n\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t:emails=\"emails\"\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleReportSend_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\n/**\n * Варианты выбора часа\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Варианты выбора минут по умолчанию\n */\nconst defaultMinuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n\n/**\n * Варианты выбора минут\n *\n * Дополняются выбранным нестандартным значением, чтобы вывести его в интерфейсе\n */\nconst minuteOptions = computed(() => {\n\tif (defaultMinuteOptions.some((option) => option.value === props.minute)) return defaultMinuteOptions;\n\n\treturn [\n\t\t...defaultMinuteOptions, {\n\t\t\tvalue: props.minute,\n\t\t\ttitle: props.minute.padStart(2, '0'),\n\t\t\tdisabled: true,\n\t\t},\n\t];\n});\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
{"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"names":["vue","exports","j","M","N","P","vue_1","n","a","t","forms__4U0sLFk_esm_js_1","s","c","e","F","I","L","R","z","B","V","H","U","W","G","i","o","u","g","_","string_js_1","y","b","K","l","d","p","m","v","C","w","check_js_1","T","q","J","Y","X","Z","re","ie","ae","oe","se","Q","ce","le","ue","de","$","fe","pe"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-_4U0sLFk.esm.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-BaHwxbWz.esm.js\"], function (require, exports, forms__4U0sLFk_esm_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleTimeSelectors = exports.TopScheduleTimeSelector = exports.TopScheduleReportSend = exports.TopScheduleEmailSelector = exports.TopScheduleEmail = exports.TopScheduleContainer = exports.TopScheduleCalendar = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/schedule.vue?vue&type=script&setup=true&lang.ts\n var j = { class: \"top-schedule_header\" }, M = { class: \"top-schedule_headerTitle\" }, N = {\n key: 0,\n class: \"top-schedule_body\"\n }, P = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"TopSchedule\",\n __name: \"schedule\",\n props: {\n styling: {},\n triggerType: { default: \"onDemand\" },\n triggerTypes: {},\n triggerTypeOptions: {},\n title: {}\n },\n emits: [\"update:triggerType\"],\n setup(t, { emit: n, slots: r }) {\n let a = t, o = (0, forms__4U0sLFk_esm_js_1.E)(), s = {\n go: o.Projects.Checks,\n report: o.Projects.Reports,\n neutral: \"\"\n }, c = a.title ?? s[a.styling];\n return (e, a) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-schedule\": !0,\n [`top-schedule-style_${t.styling}`]: !0\n }) }, [(0, vue_1.createElementVNode)(\"div\", j, [(0, vue_1.createElementVNode)(\"div\", M, (0, vue_1.toDisplayString)((0, vue_1.unref)(c)), 1), (0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.n, {\n class: \"top-schedule_headerTriggerType\",\n modelValue: t.triggerType,\n \"onUpdate:modelValue\": a[0] ||= (e) => n(\"update:triggerType\", e),\n options: t.triggerTypeOptions,\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), t.triggerType !== \"onDemand\" && r.body ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", N, [(0, vue_1.renderSlot)(e.$slots, \"body\")])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), F = {}, I = { class: \"top-schedule_bodyContainer\" };\n exports.TopSchedule = P;\n function L(e, t) {\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [(0, vue_1.renderSlot)(e.$slots, \"default\")]);\n }\n var R = /*#__PURE__*/ (0, forms__4U0sLFk_esm_js_1.u)(F, [[\"render\", L]]), z = (t) => {\n let n = (0, forms__4U0sLFk_esm_js_1.E)();\n switch (t) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n }\n }, B = { class: \"top-scheduleCalendar\" }, V = { class: \"top-scheduleCalendar_header\" }, H = { class: \"top-scheduleCalendar_calendar\" }, U = [\"value\"], W = [\"data-top-icon\"], G = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: {\n modelValue: {},\n mode: {},\n timesCount: { default: 1 }\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: n }) {\n let r = (0, forms__4U0sLFk_esm_js_1.E)(), i = t, a = n, o = (0, vue_1.computed)({\n get: () => i.modelValue,\n set: (e) => a(\"update:modelValue\", e)\n }), u = (0, vue_1.computed)(() => z(i.mode)), g = {\n dayOfWeek: {\n totalDaysCount: 7,\n period: r.Common.a_week\n },\n dayOfMonth: {\n totalDaysCount: 28,\n period: r.Common.a_month\n }\n }, _ = (0, vue_1.computed)(() => {\n let e = o.value.length, { totalDaysCount: t, period: n } = g[i.mode], a = e === t;\n if (a && i.timesCount === 1)\n return r.Common.Every_day;\n let c = i.timesCount === 1 ? e : i.timesCount;\n return `${a ? r.Common.Every_day : `${e}`}${i.timesCount > 1 ? ` × ${i.timesCount}` : \"\"} ${(0, string_js_1.numberEnding)(c, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${n}`;\n }), y = (0, vue_1.computed)(() => o.value.length > 1), b = () => {\n o.value = y.value ? [] : u.value.map((e) => e.value);\n };\n return (e, t) => {\n let n = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", B, [\n (0, vue_1.createElementVNode)(\"div\", V, [(0, vue_1.renderSlot)(e.$slots, \"header\"), (0, vue_1.createVNode)(n, {\n class: \"top-scheduleCalendar_headerButton\",\n onClick: b,\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(y.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", H, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(u.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.withDirectives)((0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayRadio\",\n type: \"checkbox\",\n value: e.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => o.value = e,\n tabindex: \"0\"\n }, null, 8, U), [[vue_1.vModelCheckbox, o.value]]), (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleCalendar_calendarDayTitle\",\n \"data-top-icon\": e.isIcon ? e.title : void 0\n }, [e.isIcon ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.title), 1)], 64))], 8, W)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !o.value.length\n }) }, (0, vue_1.toDisplayString)(_.value), 3)\n ]);\n };\n }\n }), K = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: {\n modelValue: {},\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"submit\"],\n setup(i, { emit: a }) {\n let s = a, c = i, l = a, u = (0, forms__4U0sLFk_esm_js_1.E)(), d = forms__4U0sLFk_esm_js_1.O.$, p = (0, vue_1.ref)(), m = (0, vue_1.ref)(), g = null, v = {}, C = (e) => e.filter((e) => !c.emails.includes(e)), w = (e = c.modelValue) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms__4U0sLFk_esm_js_1.O.notice(u.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n l(\"submit\", n);\n }\n }, T = async () => {\n if (await (0, vue_1.nextTick)(), g = m.value?.$el.querySelector(\"input\") ?? null, g) {\n if (!d?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n d(g).autocomplete({\n appendTo: p.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in v || (v[n] = await c.getEmailSuggestions(n)), t(C(v[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n !t.item || !g || (e.preventDefault(), w(t.item.value), l(\"update:modelValue\", \"\"), d(g).trigger(\"focus\"));\n }\n }), d(g).attr(\"autocomplete\", \"disabled\"), d(g).on(\"focus.scheduleEmailSelector\", () => {\n g && d(g).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n T();\n }), (0, vue_1.onBeforeUnmount)(() => {\n !d?.ui?.autocomplete || !g || (d(g).off(\"focus.scheduleEmailSelector\"), d(g).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: p\n }, [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.c, {\n ref_key: \"elInputRef\",\n ref: m,\n modelValue: i.modelValue,\n \"onUpdate:modelValue\": t[1] ||= (e) => s(\"update:modelValue\", e),\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => w(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"l\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(forms__4U0sLFk_esm_js_1.h, {\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => w(), [\"prevent\"])\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 512));\n }\n }), q = { class: \"top-scheduleEmail\" }, J = { class: \"top-scheduleEmail_title\" }, Y = {\n key: 1,\n class: \"top-scheduleEmail_emails\"\n }, X = { class: \"top-ellipsis1\" }, Z = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"email\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: { default: -1 }\n },\n emits: [\"add:email\", \"remove:email\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = (0, vue_1.ref)(\"\"), o = (e) => {\n let t = e.trim();\n if (!t || r.emails.includes(t)) {\n a.value = \"\";\n return;\n }\n i(\"add:email\", t), a.value = \"\";\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", q, [\n (0, vue_1.createElementVNode)(\"div\", J, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(K, {\n key: 0,\n modelValue: a.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => a.value = e,\n getEmailSuggestions: e.getEmailSuggestions,\n emails: e.emails,\n onSubmit: o\n }, null, 8, [\n \"modelValue\",\n \"getEmailSuggestions\",\n \"emails\"\n ])),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Y, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", X, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(i, {\n onClick: (t) => n(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), re = { class: \"top-scheduleReportSend\" }, ie = { class: \"top-scheduleReportSend_title\" }, ae = { class: \"top-scheduleReportSend_channels\" }, oe = [\"data-top-icon\"], se = { class: \"top-scheduleReportSend_channelLabel top-ellipsis1\" }, Q = {\n key: 0,\n class: \"top-scheduleReportSend_channel\"\n }, ce = [\"data-top-icon\"], le = [\"href\"], ue = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"reportSend\",\n props: {\n channels: {},\n connectors: { default: () => [] }\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), s = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", re, [(0, vue_1.createElementVNode)(\"div\", ie, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send), 1), (0, vue_1.createElementVNode)(\"div\", ae, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleReportSend_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, oe),\n (0, vue_1.createElementVNode)(\"span\", se, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleReportSend_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(s, {\n class: \"top-scheduleReportSend_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Q, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleReportSend_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, ce), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleReportSend_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, le)]))], 64))), 128))])]);\n };\n }\n }), de = { class: \"top-scheduleTimeSelector\" }, $ = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: {\n hour: {},\n minute: {}\n },\n emits: [\"update:hour\", \"update:minute\"],\n setup(e, { emit: t }) {\n let n = e, r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = [\n {\n value: \"0\",\n title: \"00\"\n },\n {\n value: \"15\",\n title: \"15\"\n },\n {\n value: \"30\",\n title: \"30\"\n },\n {\n value: \"45\",\n title: \"45\"\n }\n ], a = (0, vue_1.computed)(() => i.some((e) => e.value === n.minute) ? i : [...i, {\n value: n.minute,\n title: n.minute.padStart(2, \"0\"),\n disabled: !0\n }]);\n return (n, i) => {\n let o = (0, vue_1.resolveComponent)(\"TopSelect\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", de, [(0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n \"onUpdate:modelValue\": i[0] ||= (e) => t(\"update:hour\", e)\n }, null, 8, [\"modelValue\", \"options\"]), (0, vue_1.createVNode)(o, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: a.value,\n \"onUpdate:modelValue\": i[1] ||= (e) => t(\"update:minute\", e)\n }, null, 8, [\"modelValue\", \"options\"])]);\n };\n }\n }), fe = { class: \"top-scheduleTimeSelectors\" }, pe = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelectors\",\n props: { times: {} },\n emits: [\"update:times\"],\n setup(e, { emit: t }) {\n let n = t, r = e, i = t, a = /* @__PURE__ */ new WeakMap(), o = 0, s = (e) => {\n let t = (0, vue_1.toRaw)(e), n = a.get(t);\n if (n !== void 0)\n return n;\n let r = o++;\n return a.set(t, r), r;\n }, l = (e, t) => {\n let n = r.times.map((n, r) => {\n if (r !== e)\n return n;\n let i = {\n ...n,\n ...t\n };\n return a.set(i, s(n)), i;\n });\n i(\"update:times\", n);\n }, d = () => {\n let e = [{\n hour: \"0\",\n minute: \"0\"\n }, ...r.times];\n i(\"update:times\", e);\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", fe, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.times, (t, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleTimeSelectors_item\",\n key: s(t)\n }, [(0, vue_1.createVNode)($, {\n hour: t.hour,\n minute: t.minute,\n \"onUpdate:hour\": (e) => l(r, { hour: e }),\n \"onUpdate:minute\": (e) => l(r, { minute: e })\n }, null, 8, [\n \"hour\",\n \"minute\",\n \"onUpdate:hour\",\n \"onUpdate:minute\"\n ]), r ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 0,\n onClick: (t) => n(\"update:times\", e.times.filter((e, t) => t !== r)),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(i, {\n key: 1,\n class: \"top-scheduleTimeSelectors_itemAdd\",\n onClick: d,\n color: \"theme\",\n icon: \"\"\n }))]))), 128))]);\n };\n }\n });\n exports.TopScheduleContainer = R;\n exports.TopScheduleCalendar = G;\n exports.TopScheduleEmailSelector = K;\n exports.TopScheduleEmail = Z;\n exports.TopScheduleReportSend = ue;\n exports.TopScheduleTimeSelector = $;\n exports.TopScheduleTimeSelectors = pe;\n});\n//# sourceMappingURL=schedule.js.map\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from './types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTHS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTHS }, (_, index) => ({\n\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\ttitle: String(index + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = withDefaults(defineProps<Props>(), {\n\ttimesCount: 1,\n});\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\n/**\n * Параметры отображения выбранных дней для каждого режима календаря\n */\nconst modeConfig = {\n\tdayOfWeek: {\n\t\ttotalDaysCount: COUNT_DAYS_IN_WEEK,\n\t\tperiod: i18n.Common.a_week,\n\t},\n\tdayOfMonth: {\n\t\t// плюс \"последний день месяца\"\n\t\ttotalDaysCount: COUNT_DAYS_IN_MONTHS + 1,\n\t\tperiod: i18n.Common.a_month,\n\t},\n};\n\n/**\n * Текстовая сводка выбранных дней и временных слотов\n */\nconst selectionSummary = computed(() => {\n\t// Количество выбранных пользователем дней\n\tconst daysCount = selectedDays.value.length;\n\t// Общее количество доступных дней и название периода для текущего режима\n\tconst { totalDaysCount, period } = modeConfig[props.mode];\n\t// Выбраны ли все доступные дни\n\tconst isEveryDay = daysCount === totalDaysCount;\n\n\tif (isEveryDay && props.timesCount === 1) return i18n.Common.Every_day;\n\n\t// Число, для которого нужно подобрать склонение слова «раз»\n\tconst count = props.timesCount === 1 ? daysCount : props.timesCount;\n\t// Подпись количества выбранных дней\n\tconst daysLabel = isEveryDay ? i18n.Common.Every_day : `${daysCount}`;\n\t// Множитель времени отображается только при нескольких временных слотах\n\tconst multiplier = props.timesCount > 1 ? ` × ${props.timesCount}` : '';\n\t// Склонённая подпись количества запусков\n\tconst countLabel = numberEnding(\n\t\tcount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t);\n\n\treturn `${daysLabel}${multiplier} ${countLabel} ${period}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectionSummary }}\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tv-model=\"value\"\n\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t:emails=\"emails\"\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleReportSend_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\n/**\n * Варианты выбора часа\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Варианты выбора минут по умолчанию\n */\nconst defaultMinuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n\n/**\n * Варианты выбора минут\n *\n * Дополняются выбранным нестандартным значением, чтобы вывести его в интерфейсе\n */\nconst minuteOptions = computed(() => {\n\tif (defaultMinuteOptions.some((option) => option.value === props.minute)) return defaultMinuteOptions;\n\n\treturn [\n\t\t...defaultMinuteOptions, {\n\t\t\tvalue: props.minute,\n\t\t\ttitle: props.minute.padStart(2, '0'),\n\t\t\tdisabled: true,\n\t\t},\n\t];\n});\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}

@@ -9,3 +9,3 @@

import { E as e, O as t, c as n, h as r, n as i, u as a } from "../.chunks/forms-_4U0sLFk.esm.js";
import "../.chunks/app-DGsWGbDX.esm.js";
import "../.chunks/app-BaHwxbWz.esm.js";
import { isEmail as o } from "../utils/check.js";

@@ -12,0 +12,0 @@ import { numberEnding as s } from "../utils/string.js";

@@ -9,2 +9,3 @@ export { default as TopEditArea } from './editArea/editArea.vue';

export { default as TopPolicy } from './policy/policy.vue';
export { default as TopBanner } from './banner/banner.vue';
export { apiSetSearchParamsFilter, ITEM_ID_NEW, ITEM_ID_ALL } from './selector2/utils';
var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`../utils/dom.amd`,`./worker-D28QqQ45.amd`,`./utils-BtqYaMHp.amd`,`../utils/route.amd`,`../utils/clipboard.amd`,`../utils/string.amd`,`vue`],function(e,t,r,i,a,o,s,c,ee,l){"use strict";if(te===void 0)var te=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.n=void 0;var u=class{static init(){this.isInited||(this.isInited=!0,document.addEventListener(`mouseover`,e=>{!(e.target instanceof HTMLElement)||!e.target.dataset?.topPopupOpenByHover||e.target.click()}),document.addEventListener(`scroll`,()=>{r.O.state.isMobile||r.O.state.isMobileUA||a.t.getAll().forEach(e=>a.t.close(e))}),r.k.addOnReize(e=>{r.O.state.isMobile&&e.topEvent.widthDiff&&a.t.getAll().forEach(e=>a.t.close(e))}),document.addEventListener(`click`,this.onclick,{capture:!0}))}static async onclick(e){if(!(e.target instanceof HTMLElement)||e.target.dataset.topPopupDisabled)return;let t;switch(!0){case!!e.target.dataset?.topPopup:t=e.target;break;case!!e.target.parentElement?.dataset.topPopup:t=e.target.parentElement;break;case!!e.target.parentElement?.parentElement?.dataset.topPopup:t=e.target.parentElement?.parentElement}if(t&&!t.dataset.topPopupDisabled){if(t.dataset.topPopupOpened){let e=a.t.getPopupFromOpener(t);e?.openerIsInput||e?.close();return}e.preventDefault(),await a.t.openByOpener(t)}}};(0,r.K)(u,`isInited`,!1);var d,ne={mounted:async(t,r)=>{d||=(await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar)).storage;let i=r.arg,a=r.value;d(t,i,a)}},f,p=[],m,re=async()=>{let{isVisible:t}=await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar);p=p.filter(t),p.length&&(p[0].focus(),p=[])},h=async t=>{f||=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar),m||=f.debounce(re,30),p.push(t),m()},ie={mounted:function(e,t){e.__TOP_V_FOCUS_VALUE=t.value??!0,(t.value??!0)&&h(e)},updated:function(e,t){t.modifiers.onupdate&&e.__TOP_V_FOCUS_VALUE!==(t.value??!0)&&(e.__TOP_V_FOCUS_VALUE=t.value??!0,(t.value??!0)&&h(e))}},g,_,v=e=>typeof e==`boolean`?e:(e=e?{...e}:{},e.behavior??=`smooth`,e.block??=`nearest`,e.inline??=`nearest`,e),y,b,ae=async()=>{if(!y)return;let e=await S(y);e.isVisible&&y.scrollIntoView(e.scrollIntoViewOptions)},x=async t=>{_||=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar),b||=_.debounce(ae,30),y=t,b()},S=async(t,r)=>{g||=await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar);let a=g.storage(t,`v-top-scrollIntoView`);return a||(a={isVisible:(0,i.isVisible)(t),scrollIntoViewOptions:v(r)},g.storage(t,`v-top-scrollIntoView`,a)),a},oe={async mounted(e,t){await S(e,t.value),t.modifiers.immediate&&x(e)},async updated(e,t){let n=await S(e,t.value);n.scrollIntoViewOptions=v(t.value);let r=(0,i.isVisible)(e);r&&n.isVisible!==r&&x(e),n.isVisible=r}},C,se={async mounted(t){C||=await new Promise((t,n)=>{e([`../utils/scroll.amd`],t,n)}).then(__importStar),C.connectScrollShadow(t)},async unmounted(t){C||=await new Promise((t,n)=>{e([`../utils/scroll.amd`],t,n)}).then(__importStar),C.unconnectScrollShadow(t)}},w=new Map,T,E=new Map,D=!1,ce={ctrl:(0,r.H)()?`⌘`:`Ctrl`,alt:(0,r.H)()?`⌥`:`Alt`,shift:(0,r.H)()?`⇧`:`Shift`},le=e=>{let t=e;return e.includes(`Key`)&&(t=e.replace(`Key`,``)),e.includes(`Digit`)&&(t=e.replace(`Digit`,``)),e===`Escape`&&(t=`Esc`),t},O=(e,t)=>{let n=le(e);if(!t)return n;let{ctrl:i,alt:a,shift:o}=ce,s=[];return t.ctrl&&s.push(i),t.alt&&s.push(a),t.shift&&s.push(o),s.push(n),s.join((0,r.H)()?``:`+`)},k=(e,t,n)=>{let r=O(t,n);if(e.__TOP_V_SHORTCUT_VALUE){console.warn(`Element already has shortcut "${e.__TOP_V_SHORTCUT_VALUE}"`);return}if(E.has(r)){console.warn(`Shortcut "${r}" is taken`);return}E.set(r,e),e.title=e.title?`${e.title} (${r})`:r,e.__TOP_V_SHORTCUT_VALUE=r},A=e=>{let t=e.__TOP_V_SHORTCUT_VALUE;t&&(E.delete(t),delete e.__TOP_V_SHORTCUT_VALUE,e.title===t&&e.removeAttribute(`title`),e.title.includes(` (${t})`)&&(e.title=e.title.replace(` (${t})`,``)))},ue=()=>{for(let[e]of w)!(0,i.isVisible)(e)&&e.__TOP_V_SHORTCUT_VALUE&&A(e);for(let[e,t]of w)(0,i.isVisible)(e)&&!e.__TOP_V_SHORTCUT_VALUE&&k(e,t.value,t.modifiers);w.clear()},de=async(t,r,i)=>{if(!T){let{debounce:t}=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar);T=t(ue,30)}w.set(t,{value:r,modifiers:i}),T()},j=()=>{D||(D=!0,document.addEventListener(`keydown`,e=>{if(!(e.target instanceof HTMLElement)||[`INPUT`,`TEXTAREA`].includes(e.target.tagName)||e.target.isContentEditable)return;let t={ctrl:(0,r.H)()?e.metaKey:e.ctrlKey,alt:e.altKey,shift:e.shiftKey},n=O(e.code,t),a=E.get(n);a&&(a.disabled||!(0,i.isVisible)(a)||(e.preventDefault(),a.click()))}))},fe={mounted:function(e,t){let{value:n,modifiers:r}=t;!n||!(0,i.isVisible)(e)||(j(),k(e,n,r))},updated:function(e,t){if(!!e.__TOP_V_SHORTCUT_VALUE===(0,i.isVisible)(e))return;let{value:n,modifiers:r}=t;n&&(j(),de(e,n,r))},unmounted:function(e){A(e)}},M,pe={mounted(e,t,n){let r=t.value||`top-sticky`;M=new IntersectionObserver(n=>{let i=n[0].intersectionRatio<1;i&&t.modifiers.bottom&&n[0].intersectionRect.y===0&&(i=!1),e.classList.toggle(r,i)},{threshold:[1]}),M.observe(e)},unmounted(e,t,n){M?.disconnect()}},me=!1,N,P=new Set,F=null,I=(e,t)=>{let{distance:n,percent:r}=e.directiveSwimUpOptions,i=e.getBoundingClientRect().top,a=t,o=t*(100-r)/100,s=(a-i)/(a-o),c=n*(1-Math.min(Math.max(s,0),1));e.style.transform=`translateY(${c}px)`},he=()=>{let e=window.innerHeight;window.addEventListener(`scroll`,()=>{F===null&&(F=requestAnimationFrame(()=>{P.forEach(t=>I(t,e)),F=null}))},{passive:!0}),N=new IntersectionObserver(t=>{e=window.innerHeight,t.forEach(e=>{let t=e.target;if(e.intersectionRatio<.01?P.delete(t):P.add(t),e.intersectionRatio===0){let{distance:e}=t.directiveSwimUpOptions,n=t.getBoundingClientRect().top;t.style.transform=`translateY(${n>0?e:0}px)`}})},{threshold:.01})},ge={mounted(e,t,n){let i=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;if(r.O.state.isMobileUA||i)return;let a={distance:t.value?.distance??100,percent:t.value?.percent??30};a.percent<=0||(e.directiveSwimUpOptions=a,me||=(he(),!0),I(e,window.innerHeight),N.observe(e))},unmounted(e,t,n){P.delete(e),N?.unobserve(e)}},L=e=>{if(!r.O.$?.ui?.tooltip){console.info(`Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip`);return}return r.O.$(e)},_e=(e,t)=>{let n={...e.value??{}};return n.content??=t.getAttribute(`ui-tooltip-title`)??t.getAttribute(`title`)??``,n.content=String(n.content).replace(/([^<>])\r?\n([^<>])/g,`$1<br>$2`),n.position??={my:`bottom-18px`,at:`top center`,collision:`flipfit`},n},ve={mounted(e,t){L(e)?.tooltip(_e(t,e))},updated(e,t){let n=_e(t,e),r=L(e)?.tooltip(`instance`);if(!r){L(e)?.tooltip(n);return}r.options={...r.options,...n}},unmounted(e){L(e)?.tooltip(`destroy`)}},ye=(0,l.defineAsyncComponent)(()=>new Promise((t,n)=>{e([`./notice-FzLgMsrr.amd`],t,n)}).then(__importStar));window.vd=console.log,t.n={install:(e,t)=>{e.config.globalProperties.$core=r.O,e.config.globalProperties.$vd=console.log;for(let e in t)r.O.state[e]=t[e];t.widthForMobile&&(r.O.widthForMobile=t.widthForMobile),t.themeName&&(r.O.themeName=t.themeName),r.O._setState(),t.topPopupOptions&&(a.t.options=t.topPopupOptions),u.init(),o.o.init(t.topDialogOptions),e.directive(`top-data`,ne),e.directive(`top-focus`,ie),e.directive(`top-scroll-into-view`,oe),e.directive(`top-scroll-shadow`,se),e.directive(`top-shortcut`,fe),e.directive(`top-sticky`,pe),e.directive(`top-swim-up`,ge),e.directive(`top-tooltip`,ve),e.component(`TopAvatar`,r.g),e.component(`TopButton`,r.h),e.component(`TopCheckbox`,r.f),e.component(`TopControlLabel`,r.p),e.component(`TopHint`,r.d),e.component(`TopInput`,r.c),e.component(`TopInputDate`,r.s),e.component(`TopInputRange`,r.o),e.component(`TopLoadbar`,r.l),e.component(`TopRadio`,r.a),e.component(`TopSelect`,r.n),e.component(`TopSwitcher`,r.i),e.component(`TopTextarea`,r.r),e.component(`TopNotice`,ye),e.component(`TopDialogs`,o.i)}};function be(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function xe(e,t){be(e,t),t.add(e)}function R(e,t,n){be(e,t),t.set(e,n)}function z(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function B(e,t,n){return e.set(z(e,t),n),n}function V(e,t){return e.get(z(e,t))}var H=new WeakMap,U=new WeakMap,W=new WeakMap,G=new WeakMap,K=new WeakMap,q=new WeakMap,J=new WeakMap,Y=new WeakMap,X=new WeakMap,Z=new WeakSet,Se=class{constructor(e){xe(this,Z),R(this,H,void 0),R(this,U,void 0),R(this,W,void 0),R(this,G,void 0),R(this,K,void 0),R(this,q,[]),R(this,J,[]),R(this,Y,[]),R(this,X,[]),B(U,this,e.store),B(H,this,V(U,this).$id),B(W,this,e.options.Page),B(G,this,e.options.user),B(K,this,e.options.Api),B(q,this,e.options.tpaNamesUrlHash||[]),B(J,this,e.options.tpaNamesStorage||[]),B(Y,this,e.options.tpaNamesStorageLocal||[]),B(X,this,e.options.tpaNamesGuestLink||[]),e.store.genGuestLink=(e,t)=>this.genGuestLink(e,t),V(G,this).guest_data?.data||(z(Z,this,Oe).call(this),z(Z,this,Oe).call(this,!0),z(Z,this,Ee).call(this)),z(Z,this,Ae).call(this),z(Z,this,je).call(this);let t=(0,r.P)(()=>{z(Z,this,De).call(this),z(Z,this,ke).call(this),z(Z,this,ke).call(this,!0)});e.store.$subscribe(t)}async genGuestLink(e,t){let n=z(Z,this,Ce).call(this);t=Object.assign(t,Object.fromEntries(n));let r=await V(K,this).gen(e).setParams(t).call();if(r?.errors)return;let i=r.result;await(0,c.guestLinkToClipboard)(i)}};function Ce(){let e=new Map;return V(X,this).forEach(t=>{let n=(0,ee.camelToSnakeCase)(t);e.set(n,V(U,this)[t])}),e}function Q(e){e.forEach((e,t)=>{let n=V(U,this)[t];e!=null&&n!==void 0&&e?.constructor&&e.constructor===n.constructor&&(t.indexOf(`date`)===0&&!Array.isArray(e)&&typeof e==`string`&&!/\d\d\d\d-\d\d-\d\d/.test(e)||(V(U,this)[t]=e))})}function we(e){let t=new Map;return e.forEach((e,n)=>{e!==null&&(e=JSON.stringify(e),t.set(n,e))}),t}function Te(e){let t=new Map;return e.forEach((e,n)=>{if(e!=null&&e!==`false`){try{if(typeof e==`string`&&!/^\d\d\d\d-\d\d-\d\d$/.test(e)&&(e=JSON.parse(e)),e==null||e===`false`)return}catch{}t.set(n,e)}}),t}function Ee(){let e;try{e=JSON.parse((0,s.getHash)(V(H,this)))}catch{}if(!e)return;let t=new Map;V(q,this).forEach(n=>{let r=e[n];r&&t.set(n,r)}),z(Z,this,Q).call(this,t)}function De(){let e=new Map;V(q,this).forEach(t=>{let n=V(U,this)[t];e.set(t,n)});let t=Object.fromEntries(e),n=JSON.stringify(t);(0,s.setHash)(V(H,this),n)}function Oe(e=!1){let t=new Map,n=V(J,this),r=`state:`+V(H,this);e&&(n=V(Y,this),r=`state:`+V(H,this)+`:`+location.pathname),n.forEach(e=>{let n=localStorage.getItem(r+`:`+e);t.set(e,n)});let i=z(Z,this,Te).call(this,t);z(Z,this,Q).call(this,i)}function ke(e=!1){let t=new Map,n=V(J,this),r=`state:`+V(H,this);e&&(n=V(Y,this),r=`state:`+V(H,this)+`:`+location.pathname),n.forEach(e=>{let n=V(U,this)[e];t.set(e,n)});let i=z(Z,this,we).call(this,t);n.forEach(e=>{let t=i.get(e);localStorage.setItem(r+`:`+e,t)})}function Ae(){let e=V(G,this)?.guest_data?.data;if(!e)return;V(G,this).id===-1&&(V(G,this).positionsReverseDates=e.positionsReverseDates);let t=new Map;V(X,this).forEach(n=>{let r=e[n];t.set(n,r)});let n=z(Z,this,Te).call(this,t);z(Z,this,Q).call(this,n);let r=$(`.mod_guest_title`);if(V(U,this).competitorsIds?.length===1&&V(W,this).page.data.competitors){let t=V(W,this).page.data.competitors.filter(t=>t.id===e.competitorsIds[0]);t.length&&($(`a`,r).attr(`href`,`http://`+t[0].url),$(`a`,r).text(t[0].name))}}function je(){V(U,this).regionsIndexes&&(0,l.watch)(V(U,this).regionsIndexes,e=>{if(!e.length)return;e.forEach((t,n)=>e[n]=t);let t=TplProjectSelectorRegion.genSearchersMap(),n=[];t.forEach(e=>{e.regions.forEach(e=>{e.index!==-1&&n.push(e.index)})}),V(U,this).regionsIndexes=e.filter(e=>n.includes(e))},{immediate:!0}),V(U,this).competitorsIds&&(0,l.watch)(V(U,this).competitorsIds,e=>{if(!e.length)return;e.forEach((t,n)=>e[n]=t);let t=[V(W,this).page.data.project.id];V(W,this).page.data.project.competitors.forEach(e=>{e.on>=0&&t.push(e.id)}),V(U,this).competitorsIds=e.filter(e=>t.includes(e))},{immediate:!0})}t.t=e=>{let t=e;!t.options.tpaNamesUrlHash?.length&&!t.options.tpaNamesStorage?.length&&!t.options.tpaNamesStorageLocal?.length&&!t.options.tpaNamesGuestLink?.length||new Se(t)}});
//# sourceMappingURL=app-DGsWGbDX.amd.js.map

Sorry, the diff of this file is too big to display

import { H as e, K as t, O as n, P as r, a as i, c as a, d as o, f as s, g as ee, h as te, i as ne, k as re, l as ie, n as ae, o as oe, p as se, r as ce, s as le } from "./forms-_4U0sLFk.esm.js";
import { isVisible as c } from "../utils/dom.js";
import { t as l } from "./worker-D28QqQ45.esm.js";
import { i as ue, o as de } from "./utils-BtqYaMHp.esm.js";
import { getHash as fe, setHash as pe } from "../utils/route.js";
import { guestLinkToClipboard as me } from "../utils/clipboard.js";
import { camelToSnakeCase as he } from "../utils/string.js";
import { defineAsyncComponent as ge, watch as u } from "vue";
//#region src/components/popup/lib/worker.globalEvents.ts
var _e = class {
static init() {
this.isInited || (this.isInited = !0, document.addEventListener("mouseover", (e) => {
!(e.target instanceof HTMLElement) || !e.target.dataset?.topPopupOpenByHover || e.target.click();
}), document.addEventListener("scroll", () => {
n.state.isMobile || n.state.isMobileUA || l.getAll().forEach((e) => l.close(e));
}), re.addOnReize((e) => {
n.state.isMobile && e.topEvent.widthDiff && l.getAll().forEach((e) => l.close(e));
}), document.addEventListener("click", this.onclick, { capture: !0 }));
}
static async onclick(e) {
if (!(e.target instanceof HTMLElement) || e.target.dataset.topPopupDisabled) return;
let t;
switch (!0) {
case !!e.target.dataset?.topPopup:
t = e.target;
break;
case !!e.target.parentElement?.dataset.topPopup:
t = e.target.parentElement;
break;
case !!e.target.parentElement?.parentElement?.dataset.topPopup:
t = e.target.parentElement?.parentElement;
break;
}
if (t && !t.dataset.topPopupDisabled) {
if (t.dataset.topPopupOpened) {
let e = l.getPopupFromOpener(t);
e?.openerIsInput || e?.close();
return;
}
e.preventDefault(), await l.openByOpener(t);
}
}
};
t(_e, "isInited", !1);
//#endregion
//#region src/core/directives/data.ts
var d, ve = { mounted: async (e, t) => {
d ||= (await import("../utils/dom.js")).storage;
let n = t.arg, r = t.value;
d(e, n, r);
} }, f, p = [], m, ye = async () => {
let { isVisible: e } = await import("../utils/dom.js");
p = p.filter(e), p.length && (p[0].focus(), p = []);
}, h = async (e) => {
f ||= await import("../utils/lodash.js"), m ||= f.debounce(ye, 30), p.push(e), m();
}, be = {
mounted: function(e, t) {
e.__TOP_V_FOCUS_VALUE = t.value ?? !0, (t.value ?? !0) && h(e);
},
updated: function(e, t) {
t.modifiers.onupdate && e.__TOP_V_FOCUS_VALUE !== (t.value ?? !0) && (e.__TOP_V_FOCUS_VALUE = t.value ?? !0, (t.value ?? !0) && h(e));
}
}, g, xe, _ = (e) => typeof e == "boolean" ? e : (e = e ? { ...e } : {}, e.behavior ??= "smooth", e.block ??= "nearest", e.inline ??= "nearest", e), v, y, Se = async () => {
if (!v) return;
let e = await x(v);
e.isVisible && v.scrollIntoView(e.scrollIntoViewOptions);
}, b = async (e) => {
xe ||= await import("../utils/lodash.js"), y ||= xe.debounce(Se, 30), v = e, y();
}, x = async (e, t) => {
g ||= await import("../utils/dom.js");
let n = g.storage(e, "v-top-scrollIntoView");
return n || (n = {
isVisible: c(e),
scrollIntoViewOptions: _(t)
}, g.storage(e, "v-top-scrollIntoView", n)), n;
}, Ce = {
async mounted(e, t) {
await x(e, t.value), t.modifiers.immediate && b(e);
},
async updated(e, t) {
let n = await x(e, t.value);
n.scrollIntoViewOptions = _(t.value);
let r = c(e);
r && n.isVisible !== r && b(e), n.isVisible = r;
}
}, S, we = {
async mounted(e) {
S ||= await import("../utils/scroll.js"), S.connectScrollShadow(e);
},
async unmounted(e) {
S ||= await import("../utils/scroll.js"), S.unconnectScrollShadow(e);
}
}, C = /* @__PURE__ */ new Map(), w, T = /* @__PURE__ */ new Map(), Te = !1, Ee = {
ctrl: e() ? "⌘" : "Ctrl",
alt: e() ? "⌥" : "Alt",
shift: e() ? "⇧" : "Shift"
}, De = (e) => {
let t = e;
return e.includes("Key") && (t = e.replace("Key", "")), e.includes("Digit") && (t = e.replace("Digit", "")), e === "Escape" && (t = "Esc"), t;
}, Oe = (t, n) => {
let r = De(t);
if (!n) return r;
let { ctrl: i, alt: a, shift: o } = Ee, s = [];
return n.ctrl && s.push(i), n.alt && s.push(a), n.shift && s.push(o), s.push(r), s.join(e() ? "" : "+");
}, E = (e, t, n) => {
let r = Oe(t, n);
if (e.__TOP_V_SHORTCUT_VALUE) {
console.warn(`Element already has shortcut "${e.__TOP_V_SHORTCUT_VALUE}"`);
return;
}
if (T.has(r)) {
console.warn(`Shortcut "${r}" is taken`);
return;
}
T.set(r, e), e.title = e.title ? `${e.title} (${r})` : r, e.__TOP_V_SHORTCUT_VALUE = r;
}, D = (e) => {
let t = e.__TOP_V_SHORTCUT_VALUE;
t && (T.delete(t), delete e.__TOP_V_SHORTCUT_VALUE, e.title === t && e.removeAttribute("title"), e.title.includes(` (${t})`) && (e.title = e.title.replace(` (${t})`, "")));
}, ke = () => {
for (let [e] of C) !c(e) && e.__TOP_V_SHORTCUT_VALUE && D(e);
for (let [e, t] of C) c(e) && !e.__TOP_V_SHORTCUT_VALUE && E(e, t.value, t.modifiers);
C.clear();
}, Ae = async (e, t, n) => {
if (!w) {
let { debounce: e } = await import("../utils/lodash.js");
w = e(ke, 30);
}
C.set(e, {
value: t,
modifiers: n
}), w();
}, O = () => {
Te || (Te = !0, document.addEventListener("keydown", (t) => {
if (!(t.target instanceof HTMLElement) || ["INPUT", "TEXTAREA"].includes(t.target.tagName) || t.target.isContentEditable) return;
let n = {
ctrl: e() ? t.metaKey : t.ctrlKey,
alt: t.altKey,
shift: t.shiftKey
}, r = Oe(t.code, n), i = T.get(r);
i && (i.disabled || !c(i) || (t.preventDefault(), i.click()));
}));
}, je = {
mounted: function(e, t) {
let { value: n, modifiers: r } = t;
!n || !c(e) || (O(), E(e, n, r));
},
updated: function(e, t) {
if (!!e.__TOP_V_SHORTCUT_VALUE === c(e)) return;
let { value: n, modifiers: r } = t;
n && (O(), Ae(e, n, r));
},
unmounted: function(e) {
D(e);
}
}, k, Me = {
mounted(e, t, n) {
let r = t.value || "top-sticky";
k = new IntersectionObserver((n) => {
let i = n[0].intersectionRatio < 1;
i && t.modifiers.bottom && n[0].intersectionRect.y === 0 && (i = !1), e.classList.toggle(r, i);
}, { threshold: [1] }), k.observe(e);
},
unmounted(e, t, n) {
k?.disconnect();
}
}, Ne = !1, A, j = /* @__PURE__ */ new Set(), M = null, N = (e, t) => {
let { distance: n, percent: r } = e.directiveSwimUpOptions, i = e.getBoundingClientRect().top, a = t, o = t * (100 - r) / 100, s = (a - i) / (a - o), ee = n * (1 - Math.min(Math.max(s, 0), 1));
e.style.transform = `translateY(${ee}px)`;
}, Pe = () => {
let e = window.innerHeight;
window.addEventListener("scroll", () => {
M === null && (M = requestAnimationFrame(() => {
j.forEach((t) => N(t, e)), M = null;
}));
}, { passive: !0 }), A = new IntersectionObserver((t) => {
e = window.innerHeight, t.forEach((e) => {
let t = e.target;
if (e.intersectionRatio < .01 ? j.delete(t) : j.add(t), e.intersectionRatio === 0) {
let { distance: e } = t.directiveSwimUpOptions, n = t.getBoundingClientRect().top;
t.style.transform = `translateY(${n > 0 ? e : 0}px)`;
}
});
}, { threshold: .01 });
}, Fe = {
mounted(e, t, r) {
let i = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
if (n.state.isMobileUA || i) return;
let a = {
distance: t.value?.distance ?? 100,
percent: t.value?.percent ?? 30
};
a.percent <= 0 || (e.directiveSwimUpOptions = a, Ne ||= (Pe(), !0), N(e, window.innerHeight), A.observe(e));
},
unmounted(e, t, n) {
j.delete(e), A?.unobserve(e);
}
}, P = (e) => {
if (!n.$?.ui?.tooltip) {
console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");
return;
}
return n.$(e);
}, F = (e, t) => {
let n = { ...e.value ?? {} };
return n.content ??= t.getAttribute("ui-tooltip-title") ?? t.getAttribute("title") ?? "", n.content = String(n.content).replace(/([^<>])\r?\n([^<>])/g, "$1<br>$2"), n.position ??= {
my: "bottom-18px",
at: "top center",
collision: "flipfit"
}, n;
}, Ie = {
mounted(e, t) {
P(e)?.tooltip(F(t, e));
},
updated(e, t) {
let n = F(t, e), r = P(e)?.tooltip("instance");
if (!r) {
P(e)?.tooltip(n);
return;
}
r.options = {
...r.options,
...n
};
},
unmounted(e) {
P(e)?.tooltip("destroy");
}
}, Le = ge(() => import("./notice-FzLgMsrr.esm.js"));
window.vd = console.log;
var Re = { install: (e, t) => {
e.config.globalProperties.$core = n, e.config.globalProperties.$vd = console.log;
for (let e in t) n.state[e] = t[e];
t.widthForMobile && (n.widthForMobile = t.widthForMobile), t.themeName && (n.themeName = t.themeName), n._setState(), t.topPopupOptions && (l.options = t.topPopupOptions), _e.init(), de.init(t.topDialogOptions), e.directive("top-data", ve), e.directive("top-focus", be), e.directive("top-scroll-into-view", Ce), e.directive("top-scroll-shadow", we), e.directive("top-shortcut", je), e.directive("top-sticky", Me), e.directive("top-swim-up", Fe), e.directive("top-tooltip", Ie), e.component("TopAvatar", ee), e.component("TopButton", te), e.component("TopCheckbox", s), e.component("TopControlLabel", se), e.component("TopHint", o), e.component("TopInput", a), e.component("TopInputDate", le), e.component("TopInputRange", oe), e.component("TopLoadbar", ie), e.component("TopRadio", i), e.component("TopSelect", ae), e.component("TopSwitcher", ne), e.component("TopTextarea", ce), e.component("TopNotice", Le), e.component("TopDialogs", ue);
} };
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/checkPrivateRedeclaration.js
function I(e, t) {
if (t.has(e)) throw TypeError("Cannot initialize the same private elements twice on an object");
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateMethodInitSpec.js
function ze(e, t) {
I(e, t), t.add(e);
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateFieldInitSpec.js
function L(e, t, n) {
I(e, t), t.set(e, n);
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/assertClassBrand.js
function R(e, t, n) {
if (typeof e == "function" ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
throw TypeError("Private element is not present on this object");
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateFieldSet2.js
function z(e, t, n) {
return e.set(R(e, t), n), n;
}
//#endregion
//#region \0@oxc-project+runtime@0.139.0/helpers/esm/classPrivateFieldGet2.js
function B(e, t) {
return e.get(R(e, t));
}
//#endregion
//#region src/core/plugins/piniaTPA.ts
var V = /* @__PURE__ */ new WeakMap(), H = /* @__PURE__ */ new WeakMap(), U = /* @__PURE__ */ new WeakMap(), W = /* @__PURE__ */ new WeakMap(), G = /* @__PURE__ */ new WeakMap(), K = /* @__PURE__ */ new WeakMap(), q = /* @__PURE__ */ new WeakMap(), J = /* @__PURE__ */ new WeakMap(), Y = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakSet(), Be = class {
constructor(e) {
ze(this, X), L(this, V, void 0), L(this, H, void 0), L(this, U, void 0), L(this, W, void 0), L(this, G, void 0), L(this, K, []), L(this, q, []), L(this, J, []), L(this, Y, []), z(H, this, e.store), z(V, this, B(H, this).$id), z(U, this, e.options.Page), z(W, this, e.options.user), z(G, this, e.options.Api), z(K, this, e.options.tpaNamesUrlHash || []), z(q, this, e.options.tpaNamesStorage || []), z(J, this, e.options.tpaNamesStorageLocal || []), z(Y, this, e.options.tpaNamesGuestLink || []), e.store.genGuestLink = (e, t) => this.genGuestLink(e, t), B(W, this).guest_data?.data || (R(X, this, Ke).call(this), R(X, this, Ke).call(this, !0), R(X, this, We).call(this)), R(X, this, qe).call(this), R(X, this, Je).call(this);
let t = r(() => {
R(X, this, Ge).call(this), R(X, this, Q).call(this), R(X, this, Q).call(this, !0);
});
e.store.$subscribe(t);
}
async genGuestLink(e, t) {
let n = R(X, this, Ve).call(this);
t = Object.assign(t, Object.fromEntries(n));
let r = await B(G, this).gen(e).setParams(t).call();
if (r?.errors) return;
let i = r.result;
await me(i);
}
};
function Ve() {
let e = /* @__PURE__ */ new Map();
return B(Y, this).forEach((t) => {
let n = he(t);
e.set(n, B(H, this)[t]);
}), e;
}
function Z(e) {
e.forEach((e, t) => {
let n = B(H, this)[t];
e != null && n !== void 0 && e?.constructor && e.constructor === n.constructor && (t.indexOf("date") === 0 && !Array.isArray(e) && typeof e == "string" && !/\d\d\d\d-\d\d-\d\d/.test(e) || (B(H, this)[t] = e));
});
}
function He(e) {
let t = /* @__PURE__ */ new Map();
return e.forEach((e, n) => {
e !== null && (e = JSON.stringify(e), t.set(n, e));
}), t;
}
function Ue(e) {
let t = /* @__PURE__ */ new Map();
return e.forEach((e, n) => {
if (!(e == null || e === "false")) {
try {
if (typeof e == "string" && !/^\d\d\d\d-\d\d-\d\d$/.test(e) && (e = JSON.parse(e)), e == null || e === "false") return;
} catch {}
t.set(n, e);
}
}), t;
}
function We() {
let e;
try {
e = JSON.parse(fe(B(V, this)));
} catch {}
if (!e) return;
let t = /* @__PURE__ */ new Map();
B(K, this).forEach((n) => {
let r = e[n];
r && t.set(n, r);
}), R(X, this, Z).call(this, t);
}
function Ge() {
let e = /* @__PURE__ */ new Map();
B(K, this).forEach((t) => {
let n = B(H, this)[t];
e.set(t, n);
});
let t = Object.fromEntries(e), n = JSON.stringify(t);
pe(B(V, this), n);
}
function Ke(e = !1) {
let t = /* @__PURE__ */ new Map(), n = B(q, this), r = "state:" + B(V, this);
e && (n = B(J, this), r = "state:" + B(V, this) + ":" + location.pathname), n.forEach((e) => {
let n = localStorage.getItem(r + ":" + e);
t.set(e, n);
});
let i = R(X, this, Ue).call(this, t);
R(X, this, Z).call(this, i);
}
function Q(e = !1) {
let t = /* @__PURE__ */ new Map(), n = B(q, this), r = "state:" + B(V, this);
e && (n = B(J, this), r = "state:" + B(V, this) + ":" + location.pathname), n.forEach((e) => {
let n = B(H, this)[e];
t.set(e, n);
});
let i = R(X, this, He).call(this, t);
n.forEach((e) => {
let t = i.get(e);
localStorage.setItem(r + ":" + e, t);
});
}
function qe() {
let e = B(W, this)?.guest_data?.data;
if (!e) return;
B(W, this).id === -1 && (B(W, this).positionsReverseDates = e.positionsReverseDates);
let t = /* @__PURE__ */ new Map();
B(Y, this).forEach((n) => {
let r = e[n];
t.set(n, r);
});
let n = R(X, this, Ue).call(this, t);
R(X, this, Z).call(this, n);
let r = $(".mod_guest_title");
if (B(H, this).competitorsIds?.length === 1 && B(U, this).page.data.competitors) {
let t = B(U, this).page.data.competitors.filter((t) => t.id === e.competitorsIds[0]);
t.length && ($("a", r).attr("href", "http://" + t[0].url), $("a", r).text(t[0].name));
}
}
function Je() {
B(H, this).regionsIndexes && u(B(H, this).regionsIndexes, (e) => {
if (!e.length) return;
e.forEach((t, n) => e[n] = t);
let t = TplProjectSelectorRegion.genSearchersMap(), n = [];
t.forEach((e) => {
e.regions.forEach((e) => {
e.index !== -1 && n.push(e.index);
});
}), B(H, this).regionsIndexes = e.filter((e) => n.includes(e));
}, { immediate: !0 }), B(H, this).competitorsIds && u(B(H, this).competitorsIds, (e) => {
if (!e.length) return;
e.forEach((t, n) => e[n] = t);
let t = [B(U, this).page.data.project.id];
B(U, this).page.data.project.competitors.forEach((e) => {
e.on >= 0 && t.push(e.id);
}), B(H, this).competitorsIds = e.filter((e) => t.includes(e));
}, { immediate: !0 });
}
var Ye = (e) => {
let t = e;
!t.options.tpaNamesUrlHash?.length && !t.options.tpaNamesStorage?.length && !t.options.tpaNamesStorageLocal?.length && !t.options.tpaNamesGuestLink?.length || new Be(t);
};
//#endregion
export { Re as n, Ye as t };
//# sourceMappingURL=app-DGsWGbDX.esm.js.map
{"version":3,"file":"app-DGsWGbDX.esm.js","names":["#storeId","#store","#Page","#user","#Api","#namesUrlHash","#namesStorage","#namesStorageLocal","#namesGuestLink","#loadFromStorage","#loadFromHash","#loadFromGuestLink","#prepareParams","#saveInHash","#saveInStorage","#genOptionsForGuestLink","#setOptions","#genDataUnFormat","#genDataFormat"],"sources":["../../src/components/popup/lib/worker.globalEvents.ts","../../src/core/directives/data.ts","../../src/core/directives/focus.ts","../../src/core/directives/scrollIntoView.ts","../../src/core/directives/scrollShadow.ts","../../src/core/directives/shortcut.ts","../../src/core/directives/sticky.ts","../../src/core/directives/swimUp.ts","../../src/core/directives/tooltip.ts","../../src/core/plugins/core.ts","../../src/core/plugins/piniaTPA.ts"],"sourcesContent":["import Core from '@/core/core/core';\nimport Events from '@/core/core/events';\nimport Worker from '@/components/popup/lib/worker';\n\n/**\n * Глобальные события, для реализации Popup\n */\nclass WorkerEvents {\n\n\tprivate static isInited = false;\n\n\t/**\n\t * Добавить глобальные обработчики\n\t *\n\t * Добавляются на страницу один раз и навсегда\n\t */\n\tstatic init(): void {\n\t\tif (this.isInited) return;\n\n\t\tthis.isInited = true;\n\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\n\t\tdocument.addEventListener('mouseover', (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement) || !e.target.dataset?.topPopupOpenByHover) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.target.click();\n\t\t});\n\n\t\t// при скролле страницы закрыть Popup\n\t\tdocument.addEventListener('scroll', () => {\n\t\t\tif (Core.state.isMobile || Core.state.isMobileUA) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t});\n\n\t\tEvents.addOnReize(e => {\n\t\t\t// закрыть popup при повороте экрана телефона\n\t\t\t// если была отображена ПК версия, она будет закрыта\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t\t}\n\t\t});\n\n\t\tdocument.addEventListener('click', this.onclick, { capture: true });\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t *\n\t * Обрабатывает клики на открытие Popup\n\t */\n\tprivate static async onclick(e: Event): Promise<void> {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tif (e.target.dataset.topPopupDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet elOpener: HTMLElement | undefined;\n\n\t\tswitch (true) {\n\t\t\tcase !!e.target.dataset?.topPopup:\n\t\t\t\telOpener = e.target;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement?.parentElement;\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (!elOpener) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// меню уже открыто\n\t\tif (elOpener.dataset.topPopupOpened) {\n\t\t\tconst popup = Worker.getPopupFromOpener(elOpener);\n\t\t\tif (!popup?.openerIsInput) {\n\t\t\t\tpopup?.close();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tawait Worker.openByOpener(elOpener);\n\t}\n}\n\nexport default WorkerEvents;\n","import type { DirectiveBinding } from 'vue';\n\nlet storage: any;\n\n/**\n * Сохранить данные в элементе\n *\n * Для доступа к данным можно воспользоваться ui/utils/dom storage()\n */\nconst data = {\n\tmounted: async (el: HTMLElement, binding: DirectiveBinding) => {\n\t\tif (!storage) {\n\t\t\tconst UtilsDom = await import('@/core/utils/dom');\n\n\t\t\tstorage = UtilsDom.storage;\n\t\t}\n\n\t\tconst name = binding.arg;\n\t\tconst value = binding.value;\n\n\t\tstorage(el, name, value);\n\t},\n};\n\nexport default data;\n","import type { DirectiveBinding } from 'vue';\n\ntype Binding = DirectiveBinding<boolean, 'onupdate'>;\n\nlet UtilsLodash: typeof import('@/core/utils/lodash');\n\n/**\n * Список элементов, на которых бала запрошена фокусировка, для дедупликации фокусировок\n */\nlet elsActive: HTMLElement[] = [];\n\n/**\n * Функция скролла с дедупликацией\n */\nlet focusOnElActiveDebounce: ReturnType<typeof UtilsLodash.debounce> | undefined;\n\n/**\n * Выполнить фокусировку на активном элементе\n *\n * Если фокусирока запрошена на несколько элементов, будет выбран первый элемент\n */\nconst focusOnElActive = async () => {\n\tconst { isVisible } = await import('@/core/utils/dom');\n\telsActive = elsActive.filter(isVisible)\n\n\tif (!elsActive.length) return;\n\n\tconst el = elsActive[0];\n\n\tel.focus();\n\n\t// // UX: Если выбрано несколько чекбоксов или радио после выбора фокусировка будет снята, чтобы не делать выбор за пользователя\n\t// if (elsActive.length && el.nodeName === 'INPUT') {\n\t// \tconst type = (el as HTMLInputElement).type;\n\t// \tif (type === 'checkbox' || type === 'radio') el.blur();\n\t// }\n\n\telsActive = [];\n};\n\n/**\n * Выполнить дедуплицированную фокусировку на элементе\n */\nconst focusOnElDebounce = async (el: HTMLElement) => {\n\tif (!UtilsLodash) UtilsLodash = await import('@/core/utils/lodash');\n\tif (!focusOnElActiveDebounce) focusOnElActiveDebounce = UtilsLodash.debounce(focusOnElActive, 30);\n\n\telsActive.push(el);\n\n\tfocusOnElActiveDebounce();\n};\n\n/**\n * Фокусировка на элементе сразу после его отображения\n */\nconst focus = {\n\tmounted: function (el: HTMLElement, binding: Binding) {\n\t\tel['__TOP_V_FOCUS_VALUE'] = binding.value ?? true;\n\n\t\tif (binding.value ?? true) focusOnElDebounce(el);\n\t},\n\n\tupdated: function (el: HTMLElement, binding: Binding) {\n\t\tif (!binding.modifiers.onupdate) return;\n\n\t\tif (el['__TOP_V_FOCUS_VALUE'] === (binding.value ?? true)) return;\n\t\tel['__TOP_V_FOCUS_VALUE'] = binding.value ?? true;\n\n\t\tif (binding.value ?? true) focusOnElDebounce(el);\n\t},\n};\n\nexport default focus;\n","import type { DirectiveBinding, ObjectDirective } from 'vue';\nimport { isVisible } from '@/core/utils/dom';\n\ntype Binding = DirectiveBinding<ScrollIntoViewOptions | boolean | undefined, 'immediate'>;\n\ntype Storage = {\n\t/**\n\t * Сохраненное состояние видимости\n\t */\n\tisVisible: boolean,\n\n\t/**\n\t * Текущие настройки скролла\n\t */\n\tscrollIntoViewOptions: ScrollIntoViewOptions | boolean\n};\n\nlet UtilsDom: typeof import('@/core/utils/dom');\nlet UtilsLodash: typeof import('@/core/utils/lodash');\n\n/**\n * Сгенерировать настройки для скролла\n *\n * @see https://developer.mozilla.org/ru/docs/Web/API/Element/scrollIntoView\n */\nconst genScrollIntoViewOptions = (scrollIntoViewOptions?: ScrollIntoViewOptions | boolean) => {\n\tif (typeof scrollIntoViewOptions === 'boolean') return scrollIntoViewOptions;\n\n\tif (!scrollIntoViewOptions) {\n\t\tscrollIntoViewOptions = {};\n\t} else {\n\t\tscrollIntoViewOptions = { ...scrollIntoViewOptions };\n\t}\n\n\tscrollIntoViewOptions.behavior ??= 'smooth';\n\tscrollIntoViewOptions.block ??= 'nearest';\n\tscrollIntoViewOptions.inline ??= 'nearest';\n\n\treturn scrollIntoViewOptions;\n};\n\n/**\n * Активный элемент, для дедупликации скроллов\n *\n * Только один элемент на странице может считаться активным\n */\nlet elActive: HTMLElement | undefined;\n\n/**\n * Функция скролла с дедупликацией\n */\nlet scrollToElActiveDebounce: ReturnType<typeof UtilsLodash.debounce> | undefined;\n\n/**\n * Выполнить скролл к текущему активному элементу\n */\nconst scrollToElActive = async () => {\n\tif (!elActive) return;\n\n\tconst storage = await useStorage(elActive);\n\tif (!storage.isVisible) return;\n\n\telActive.scrollIntoView(storage.scrollIntoViewOptions);\n};\n\n/**\n * Выполнить дедуплицированный скролл к элементу\n *\n * Будет выполнен скролл к самому последнему элементу, вызвавшему срабатывание директивы\n */\nconst scrollToElDebounce = async (el: HTMLElement) => {\n\tif (!UtilsLodash) UtilsLodash = await import('@/core/utils/lodash');\n\tif (!scrollToElActiveDebounce) scrollToElActiveDebounce = UtilsLodash.debounce(scrollToElActive, 30);\n\n\telActive = el;\n\n\tscrollToElActiveDebounce();\n};\n\n/**\n * Данные, связанные с элементом и директивой\n */\nconst useStorage = async (el: HTMLElement, scrollIntoViewOptions?: ScrollIntoViewOptions | boolean) => {\n\tif (!UtilsDom) UtilsDom = await import('@/core/utils/dom');\n\n\tlet storage: Storage | undefined = UtilsDom.storage(el, 'v-top-scrollIntoView');\n\n\t// инициализация\n\tif (!storage) {\n\t\tstorage = {\n\t\t\tisVisible: isVisible(el),\n\t\t\tscrollIntoViewOptions: genScrollIntoViewOptions(scrollIntoViewOptions),\n\t\t};\n\n\t\tUtilsDom.storage(el, 'v-top-scrollIntoView', storage);\n\t}\n\n\treturn storage;\n};\n\nconst scrollIntoView: ObjectDirective = {\n\tasync mounted(el: HTMLElement, binding: Binding) {\n\t\tawait useStorage(el, binding.value);\n\n\t\tif (binding.modifiers.immediate) {\n\t\t\tscrollToElDebounce(el);\n\t\t}\n\t},\n\n\tasync updated(el: HTMLElement, binding: Binding) {\n\t\tconst storage = await useStorage(el, binding.value);\n\t\tstorage.scrollIntoViewOptions = genScrollIntoViewOptions(binding.value);\n\n\t\tconst isVisibleNew = isVisible(el);\n\t\tif (isVisibleNew && storage.isVisible !== isVisibleNew) {\n\t\t\tscrollToElDebounce(el);\n\t\t}\n\n\t\tstorage.isVisible = isVisibleNew;\n\t},\n};\n\nexport default scrollIntoView;\n","let UtilsScroll: typeof import('@/core/utils/scroll');\n\n/**\n * Добавить отображение тени при появлении скролла у элемента\n *\n * Будут добавлены события для усатновки модификаторов тени в зависимости от скролла элемента\n *\n * Модификаторы:\n * - top-scrollShadow\n * - top-scrollShadow-started\n * - top-scrollShadow-finished\n */\nconst connectScrollShadow = {\n\tasync mounted(el) {\n\t\tif (!UtilsScroll) UtilsScroll = await import('@/core/utils/scroll');\n\n\t\tUtilsScroll.connectScrollShadow(el);\n\t},\n\n\tasync unmounted(el) {\n\t\tif (!UtilsScroll) UtilsScroll = await import('@/core/utils/scroll');\n\n\t\tUtilsScroll.unconnectScrollShadow(el);\n\t},\n};\n\nexport default connectScrollShadow;\n","import { isVisible } from '@/core/utils/dom';\nimport { isMacOS } from '@/core/utils/device';\nimport type { DirectiveBinding } from 'vue';\nimport type debounce from 'lodash-es/debounce.js';\n\nexport type ShortcutValue = string;\n\n/**\n * Допустимые модификаторы\n */\ntype AllowedModifiers = 'ctrl' | 'shift' | 'alt';\ntype Binding = DirectiveBinding<ShortcutValue, AllowedModifiers>;\n\n/**\n * Очередь элементов, ожидающих синхронизации горячих клавиш.\n * Накапливает изменения для их пакетной обработки\n */\nconst elsShortcutQueue = new Map<HTMLElement, {\n\tvalue: ShortcutValue;\n\tmodifiers: Binding['modifiers'];\n}>;\n\n/**\n * Отложенная версия функции syncShortcuts.\n * Обеспечивает пакетную обработку изменений горячих клавиш\n */\nlet syncShortcutsDebounce: ReturnType<typeof debounce> | undefined;\n\n/**\n * Список горячих клавиш и html элементов, на которые они назначены\n */\nconst elementByShortcut = new Map<string, HTMLElement>();\n\n/**\n * Добавлен ли обработчик события\n */\nlet isListenerAttached = false;\n\n/**\n * Отображение названий клавиш-модификаторов в зависимости от ОС\n *\n * В наших горячих клавишах Ctrl всегда соответствует Cmd в MacOS\n */\nconst modifierKeys = {\n\tctrl: isMacOS() ? '⌘' : 'Ctrl',\n\talt: isMacOS() ? '⌥' : 'Alt',\n\tshift: isMacOS() ? '⇧' : 'Shift',\n};\n\n/**\n * Получить название клавиши из event.code\n */\nconst getKeyLabel = (code: string) => {\n\tlet keyLabel = code;\n\n\tif (code.includes('Key')) keyLabel = code.replace('Key', '');\n\tif (code.includes('Digit')) keyLabel = code.replace('Digit', '');\n\tif (code === 'Escape') keyLabel = 'Esc';\n\n\treturn keyLabel;\n};\n\n/**\n * Сгенерировать строковое представление сочетания клавиш с модификаторами\n *\n * Приводим к виду \"Ctrl+Shift+A\" или \"⌘⇧A\" для MacOS\n */\nconst genShortcutString = (code: string, modifiers: Binding['modifiers']) => {\n\tconst keyLabel = getKeyLabel(code);\n\tif (!modifiers) return keyLabel;\n\n\tconst { ctrl, alt, shift } = modifierKeys;\n\tconst parts: string[] = [];\n\n\tif (modifiers.ctrl) parts.push(ctrl);\n\tif (modifiers.alt) parts.push(alt);\n\tif (modifiers.shift) parts.push(shift);\n\n\t// Основная клавиша\n\tparts.push(keyLabel);\n\n\treturn parts.join(isMacOS() ? '' : '+');\n};\n\nconst registerShortcut = (el: HTMLElement, value: ShortcutValue, modifiers: Binding['modifiers']) => {\n\tconst shortcut = genShortcutString(value, modifiers);\n\n\tif (el['__TOP_V_SHORTCUT_VALUE']) {\n\t\tconsole.warn(`Element already has shortcut \"${el['__TOP_V_SHORTCUT_VALUE']}\"`);\n\n\t\treturn;\n\t}\n\n\tif (elementByShortcut.has(shortcut)) {\n\t\tconsole.warn(`Shortcut \"${shortcut}\" is taken`);\n\n\t\treturn;\n\t}\n\n\telementByShortcut.set(shortcut, el);\n\tel.title = el.title ? `${el.title} (${shortcut})` : shortcut;\n\tel['__TOP_V_SHORTCUT_VALUE'] = shortcut;\n};\n\nconst unregisterShortcut = (el: HTMLElement) => {\n\tconst shortcut: string | undefined = el['__TOP_V_SHORTCUT_VALUE'];\n\tif (!shortcut) return;\n\n\telementByShortcut.delete(shortcut);\n\tdelete el['__TOP_V_SHORTCUT_VALUE'];\n\n\tif (el.title === shortcut) el.removeAttribute('title');\n\tif (el.title.includes(` (${shortcut})`)) {\n\t\tel.title = el.title.replace(` (${shortcut})`, '');\n\t}\n};\n\n/**\n * Обновить регистрацию горячих клавиш для элементов в очереди\n *\n * Отменяет регистрацию для невидимых элементов и регистрирует для видимых.\n * Очищает очередь после обработки\n */\nconst syncShortcuts = () => {\n\tfor (const [el] of elsShortcutQueue) {\n\t\tif (!isVisible(el) && el['__TOP_V_SHORTCUT_VALUE']) {\n\t\t\tunregisterShortcut(el);\n\t\t}\n\t}\n\n\tfor (const [el, data] of elsShortcutQueue) {\n\t\tif (isVisible(el) && !el['__TOP_V_SHORTCUT_VALUE']) {\n\t\t\tregisterShortcut(el, data.value, data.modifiers);\n\t\t}\n\t}\n\n\telsShortcutQueue.clear();\n};\n\n/**\n * Выполняет отложенную регистрацию горячих клавиш на элементе с дедупликацией\n */\nconst registerShortcutDebounce = async (el: HTMLElement, value: ShortcutValue, modifiers: Binding['modifiers']) => {\n\tif (!syncShortcutsDebounce) {\n\t\tconst { debounce } = await import('@/core/utils/lodash');\n\t\tsyncShortcutsDebounce = debounce(syncShortcuts, 30);\n\t}\n\n\telsShortcutQueue.set(el, { value, modifiers });\n\n\tsyncShortcutsDebounce();\n};\n\nconst attachGlobalListener = () => {\n\tif (isListenerAttached) return;\n\tisListenerAttached = true;\n\n\tdocument.addEventListener('keydown', e => {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\t\tif (['INPUT', 'TEXTAREA'].includes(e.target.tagName) || e.target.isContentEditable) return;\n\n\t\tconst modifiers = {\n\t\t\tctrl: isMacOS() ? e.metaKey : e.ctrlKey,\n\t\t\talt: e.altKey,\n\t\t\tshift: e.shiftKey,\n\t\t};\n\n\t\tconst shortcut = genShortcutString(e.code, modifiers);\n\t\tconst element = elementByShortcut.get(shortcut);\n\n\t\tif (!element) return;\n\t\tif ((element as any).disabled || !isVisible(element)) return;\n\n\t\te.preventDefault();\n\t\telement.click();\n\t});\n};\n\nconst shortcut = {\n\tmounted: function (el: HTMLElement, binding: Binding) {\n\t\tconst { value, modifiers } = binding;\n\t\tif (!value || !isVisible(el)) return;\n\n\t\tattachGlobalListener();\n\t\tregisterShortcut(el, value, modifiers);\n\t},\n\n\tupdated: function (el: HTMLElement, binding: Binding) {\n\t\tif (!!el['__TOP_V_SHORTCUT_VALUE'] === isVisible(el)) return;\n\n\t\tconst { value, modifiers } = binding;\n\t\tif (!value) return;\n\n\t\tattachGlobalListener();\n\t\tvoid registerShortcutDebounce(el, value, modifiers);\n\t},\n\n\tunmounted: function (el: HTMLElement) {\n\t\tunregisterShortcut(el);\n\t},\n};\n\nexport default shortcut;\n","import type { DirectiveBinding, VNode } from 'vue';\n\nlet appStickyObserver: IntersectionObserver;\n\n/**\n * Добавление sticky\n * К элементу добляется класс переданный как значение диррективы либо **'top-sticky'** по умолчанию\n */\nconst sticky = {\n\tmounted(el: HTMLElement, binding: DirectiveBinding, _vnode: VNode) {\n\t\tconst className = binding.value || 'top-sticky';\n\n\t\tappStickyObserver = new IntersectionObserver(entries => {\n\t\t\tlet condition = entries[0].intersectionRatio < 1;\n\t\t\tif (condition) {\n\t\t\t\tif (binding.modifiers.bottom && entries[0].intersectionRect.y === 0) condition = false;\n\t\t\t}\n\n\t\t\tel.classList.toggle(className, condition);\n\t\t}, {\n\t\t\tthreshold: [1],\n\t\t});\n\n\t\tappStickyObserver.observe(el);\n\t},\n\n\tunmounted(_el: HTMLElement, _binding: DirectiveBinding, _vnode: VNode) {\n\t\tappStickyObserver?.disconnect();\n\t},\n};\n\nexport default sticky;\n","import type { DirectiveBinding, VNode } from 'vue';\nimport Core from '@/core/core/core';\n\ninterface HTMLElementWithSwimUpOptions extends HTMLElement {\n\tdirectiveSwimUpOptions: {\n\t\tdistance: number,\n\t\tpercent: number,\n\t};\n}\n\nlet appSwimUpInited = false;\nlet appSwimUpObserver: IntersectionObserver;\nconst appSwimUpEls = new Set<HTMLElementWithSwimUpOptions>();\nlet animationFrame: number | null = null;\n\n/**\n * Отодвинуть блок в зависимости от скролла старинцы\n * @param el\n * @param windowHeight\n */\nconst swimUpElTransform = (el: HTMLElementWithSwimUpOptions, windowHeight: number): void => {\n\tconst { distance, percent } = el.directiveSwimUpOptions;\n\tconst elTop = el.getBoundingClientRect().top;\n\n\tconst animationStart = windowHeight;\n\tconst animationEnd = windowHeight * (100 - percent) / 100;\n\tconst progress = (animationStart - elTop) / (animationStart - animationEnd);\n\tconst translateY = distance * (1 - Math.min(Math.max(progress, 0), 1));\n\n\tel.style.transform = `translateY(${translateY}px)`;\n};\n\nconst swimUpInit = (): void => {\n\tlet windowHeight = window.innerHeight;\n\n\twindow.addEventListener('scroll', () => {\n\t\tif (animationFrame !== null) return;\n\n\t\tanimationFrame = requestAnimationFrame(() => {\n\t\t\tappSwimUpEls.forEach((el) => swimUpElTransform(el, windowHeight));\n\t\t\tanimationFrame = null;\n\t\t});\n\t}, { passive: true });\n\n\t// проверка того, что элемент в зоне видимости\n\tappSwimUpObserver = new IntersectionObserver(entries => {\n\t\twindowHeight = window.innerHeight;\n\n\t\tentries.forEach((entry) => {\n\t\t\tconst el = entry.target as HTMLElementWithSwimUpOptions;\n\n\t\t\tif (entry.intersectionRatio < 0.01) {\n\t\t\t\t// элемент за областью видимости\n\t\t\t\tappSwimUpEls.delete(el);\n\t\t\t} else {\n\t\t\t\t// элемент на экране\n\t\t\t\tappSwimUpEls.add(el);\n\t\t\t}\n\n\t\t\tif (entry.intersectionRatio === 0) {\n\t\t\t\tconst { distance } = el.directiveSwimUpOptions;\n\t\t\t\tconst elTop = el.getBoundingClientRect().top;\n\n\t\t\t\tel.style.transform = `translateY(${elTop > 0 ? distance : 0}px)`;\n\t\t\t}\n\t\t});\n\t}, {\n\t\tthreshold: 0.01,\n\t});\n};\n\n/**\n * Добавление анимации подплытия вверх для блока\n */\nconst swimUp = {\n\tmounted(el: HTMLElementWithSwimUpOptions, binding: DirectiveBinding, _vnode: VNode): void {\n\t\tconst prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n\t\tif (Core.state.isMobileUA || prefersReducedMotion) return;\n\n\t\tconst options = {\n\t\t\tdistance: binding.value?.distance ?? 100, // количество px на которые блок изначально смещен вниз,\n\t\t\tpercent: binding.value?.percent ?? 30, // процент высоты экрана поднявшись на который блок закончит подплытие\n\t\t};\n\n\t\tif (options.percent <= 0) return;\n\n\t\tel.directiveSwimUpOptions = options;\n\n\t\tif (!appSwimUpInited) {\n\t\t\tswimUpInit();\n\n\t\t\tappSwimUpInited = true;\n\t\t}\n\n\t\tswimUpElTransform(el, window.innerHeight);\n\t\tappSwimUpObserver.observe(el);\n\t},\n\n\tunmounted(el: HTMLElementWithSwimUpOptions, _binding: DirectiveBinding, _vnode: VNode) {\n\t\tappSwimUpEls.delete(el);\n\t\tappSwimUpObserver?.unobserve(el);\n\t},\n};\n\nexport default swimUp;\n","import type { DirectiveBinding, ObjectDirective } from 'vue';\nimport Core from '@/core/core/core';\n\nconst $ = (el: HTMLElement) => {\n\tif (!Core.$?.ui?.tooltip) {\n\t\tconsole.info('Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip');\n\n\t\treturn;\n\t}\n\n\treturn Core.$(el);\n};\n\nconst tvTooltipGenOptions = (binding: DirectiveBinding, el: HTMLElement): JQueryUI.TooltipOptions => {\n\tconst options = {\n\t\t...(binding.value ?? {}),\n\t} as JQueryUI.TooltipOptions;\n\n\toptions.content ??= el.getAttribute('ui-tooltip-title') ?? el.getAttribute('title') ?? '';\n\toptions.content = String(options.content).replace(/([^<>])\\r?\\n([^<>])/g, '$1<br>$2');\n\n\toptions.position ??= {\n\t\tmy: 'bottom-18px',\n\t\tat: 'top center',\n\t\tcollision: 'flipfit',\n\t};\n\n\treturn options;\n};\n\n/**\n * Добавление всплывающей подсказки к элементу.\n */\nconst tooltip: ObjectDirective<HTMLElement> = {\n\tmounted(el, binding) {\n\t\t$(el)?.tooltip(tvTooltipGenOptions(binding, el));\n\t},\n\n\tupdated(el, binding) {\n\t\t/**\n\t\t * В результате обновления может быть открыто несколько тултипов поэтому изменить опции, без перерисовки тултипа\n\t\t */\n\t\tconst options = tvTooltipGenOptions(binding, el);\n\t\tconst instance = $(el)?.tooltip('instance') as { options: JQueryUI.TooltipOptions } | undefined;\n\n\t\tif (!instance) {\n\t\t\t$(el)?.tooltip(options);\n\t\t\treturn;\n\t\t}\n\n\t\tinstance.options = {\n\t\t\t...instance.options,\n\t\t\t...options,\n\t\t};\n\t},\n\n\tunmounted(el) {\n\t\t$(el)?.tooltip('destroy');\n\t},\n};\n\nexport default tooltip;\n","import { defineAsyncComponent, type Plugin } from 'vue';\nimport type { PartialBy } from '@/components/types';\n\nimport Core from '@/core/core/core';\nimport coreDefaultOptions from '@/core/core/options';\n\nimport * as Forms from '../../components/forms/forms';\nimport type { Options as TopPopupOptions } from '@/components/popup/lib/worker';\nimport TopPopupWorker from '@/components/popup/lib/worker';\nimport TopPopupWorkerGlobalEvents from '@/components/popup/lib/worker.globalEvents';\n\nimport TopDialogs from '@/components/dialog/dialog/dialogs/dialogs.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { TopDialogOptions } from '@/components/dialog/lib/types';\n\nimport directiveData from '@/core/directives/data';\nimport directiveFocus from '@/core/directives/focus';\nimport directiveScrollIntoView from '@/core/directives/scrollIntoView';\nimport directiveScrollShadow from '@/core/directives/scrollShadow';\nimport directiveShortcut from '@/core/directives/shortcut';\nimport directiveSticky from '@/core/directives/sticky';\nimport directiveSwimUp from '@/core/directives/swimUp';\nimport directiveTooltip from '@/core/directives/tooltip';\n\nconst TopNotice = defineAsyncComponent(() => import('@/components/core/notice/notice.vue'));\n\ndeclare global {\n\tconst vd: typeof console.log;\n}\n\nwindow['vd'] = console.log;\n\ndeclare module '@vue/runtime-core' {\n\tinterface ComponentCustomProperties {\n\t\t/**\n\t\t * Статический класс с текущим состоянием UI\n\t\t */\n\t\t$core: typeof Core;\n\n\t\t$vd: typeof console.log;\n\t}\n\n\t/**\n\t * Обязательные компоненты UI\n\t *\n\t * Они подключаются через плагин и доступны без явного указания импорта\n\t */\n\texport interface GlobalComponents {\n\t\tTopAvatar: typeof Forms.TopAvatar;\n\t\tTopButton: typeof Forms.TopButton;\n\t\tTopCheckbox: typeof Forms.TopCheckbox;\n\t\tTopControlLabel: typeof Forms.TopControlLabel;\n\t\tTopHint: typeof Forms.TopHint;\n\t\tTopInput: typeof Forms.TopInput;\n\t\tTopInputDate: typeof Forms.TopInputDate;\n\t\tTopInputRange: typeof Forms.TopInputRange;\n\t\tTopRadio: typeof Forms.TopRadio;\n\t\tTopSwitcher: typeof Forms.TopSwitcher;\n\t\tTopTextarea: typeof Forms.TopTextarea;\n\t\tTopSelect: typeof Forms.TopSelect;\n\t\tTopLoadbar: typeof Forms.TopLoadbar;\n\n\t\tTopNotice: typeof TopNotice;\n\t\tTopDialogs: typeof TopDialogs;\n\t}\n}\n\ntype CoreOptions = PartialBy<typeof coreDefaultOptions, 'documentClassModificators' | 'userId' | 'timezoneOffset' | 'closedByMod' | 'showGlobalRegionForKeywordsStats' | 'forceSearchersKeysForKeywordsStats'>;\n\ntype Options = CoreOptions & {\n\ttopPopupOptions?: TopPopupOptions\n\ttopDialogOptions?: TopDialogOptions\n};\n\n/**\n * Плагин для интеграции UI во Vue приложение\n *\n * - В глобальную область видимости шаблонов будет добавлен объект $core\n * - Будут зарегистрирвоаны директивы UI: https://ui.topvisor.com/?path=/docs/core-directives-focus--docs\n * - Будут подключены базовые компоненты UI/Forms: https://ui.topvisor.com/?path=/docs/components-forms-readme--docs\n */\nexport default {\n\n\tinstall: (app, options: Options) => {\n\t\tapp.config.globalProperties.$core = Core;\n\t\tapp.config.globalProperties.$vd = console.log;\n\n\t\t// начальные настройки UI\n\t\tfor (const name in options) {\n\t\t\tCore.state[name] = options[name];\n\t\t}\n\n\t\tif (options.widthForMobile) Core.widthForMobile = options.widthForMobile;\n\t\tif (options.themeName) Core.themeName = options.themeName;\n\n\t\tCore._setState();\n\n\t\tif (options.topPopupOptions) TopPopupWorker.options = options.topPopupOptions;\n\t\tTopPopupWorkerGlobalEvents.init();\n\n\t\tTopDialogWorker.init(options.topDialogOptions);\n\n\t\t// определение директив\n\t\tapp.directive('top-data', directiveData);\n\t\tapp.directive('top-focus', directiveFocus);\n\t\tapp.directive('top-scroll-into-view', directiveScrollIntoView);\n\t\tapp.directive('top-scroll-shadow', directiveScrollShadow);\n\t\tapp.directive('top-shortcut', directiveShortcut);\n\t\tapp.directive('top-sticky', directiveSticky);\n\t\tapp.directive('top-swim-up', directiveSwimUp);\n\t\tapp.directive('top-tooltip', directiveTooltip);\n\n\t\t// определение базовых компонентов\n\t\tapp.component('TopAvatar', Forms.TopAvatar);\n\t\tapp.component('TopButton', Forms.TopButton);\n\t\tapp.component('TopCheckbox', Forms.TopCheckbox);\n\t\tapp.component('TopControlLabel', Forms.TopControlLabel);\n\t\tapp.component('TopHint', Forms.TopHint);\n\t\tapp.component('TopInput', Forms.TopInput);\n\t\tapp.component('TopInputDate', Forms.TopInputDate);\n\t\tapp.component('TopInputRange', Forms.TopInputRange);\n\t\tapp.component('TopLoadbar', Forms.TopLoadbar);\n\t\tapp.component('TopRadio', Forms.TopRadio);\n\t\tapp.component('TopSelect', Forms.TopSelect);\n\t\tapp.component('TopSwitcher', Forms.TopSwitcher);\n\t\tapp.component('TopTextarea', Forms.TopTextarea);\n\n\t\tapp.component('TopNotice', TopNotice);\n\t\tapp.component('TopDialogs', TopDialogs);\n\t},\n\n} satisfies Plugin<Options>;\n","import type { PiniaPluginContext, Store } from 'pinia';\nimport { watch } from 'vue';\nimport { debounce } from '@/core/utils/lodash';\nimport { guestLinkToClipboard } from '@/core/utils/clipboard';\nimport { camelToSnakeCase } from '@/core/utils/string.js';\nimport { getHash, setHash } from '@/core/utils/route';\n\nclass PiniaTPA {\n\n\treadonly #storeId: string;\n\treadonly #store: Store<string, any>;\n\n\t/**\n\t * @deprecated\n\t */\n\treadonly #Page: any;\n\n\treadonly #user: any;\n\treadonly #Api: Api.Client<Api.TV.Paths, true>;\n\n\treadonly #namesUrlHash: string[] = [];\n\treadonly #namesStorage: string[] = [];\n\treadonly #namesStorageLocal: string[] = [];\n\treadonly #namesGuestLink: string[] = [];\n\n\tconstructor(context: Context) {\n\t\tthis.#store = context.store;\n\t\tthis.#storeId = this.#store.$id;\n\n\t\tthis.#Page = context.options.Page;\n\n\t\tthis.#user = context.options.user;\n\t\tthis.#Api = context.options.Api;\n\n\t\tthis.#namesUrlHash = context.options.tpaNamesUrlHash || [];\n\t\tthis.#namesStorage = context.options.tpaNamesStorage || [];\n\t\tthis.#namesStorageLocal = context.options.tpaNamesStorageLocal || [];\n\t\tthis.#namesGuestLink = context.options.tpaNamesGuestLink || [];\n\n\t\tcontext.store.genGuestLink = <Path extends Api.TV.Path>(path: Path, params: Api.TV.Params<Path>) => this.genGuestLink(path, params);\n\n\t\tif (!this.#user.guest_data?.data) {\n\t\t\tthis.#loadFromStorage();\n\t\t\tthis.#loadFromStorage(true);\n\n\t\t\t// настройки URL hash имеют приоритет\n\t\t\tthis.#loadFromHash();\n\t\t}\n\n\t\t// настройки гостевой ссылки имеют приоритет\n\t\tthis.#loadFromGuestLink();\n\n\t\tthis.#prepareParams();\n\n\t\tconst save = debounce(() => {\n\t\t\tthis.#saveInHash();\n\t\t\tthis.#saveInStorage();\n\t\t\tthis.#saveInStorage(true);\n\t\t});\n\n\t\tcontext.store.$subscribe(save);\n\t}\n\n\t/**\n\t * Сгенерировать гостевую ссылку\n\t *\n\t * Метод, путь к которому указан в path, должен возвращать сгенерированную ссылку\n\t */\n\tasync genGuestLink<Path extends Api.TV.Path>(path: Path, params: Api.TV.Params<Path>) {\n\t\tconst dataGuestLink = this.#genOptionsForGuestLink();\n\t\tparams = Object.assign(params, Object.fromEntries(dataGuestLink));\n\n\t\tconst res = await this.#Api.gen(path).setParams(params).call();\n\t\tif (res?.errors) return;\n\n\t\tconst link = res.result as string;\n\n\t\tawait guestLinkToClipboard(link);\n\t}\n\n\t/**\n\t * Сгенерировать опции для гостевой ссылки\n\t */\n\t#genOptionsForGuestLink() {\n\t\tconst data = new Map();\n\n\t\tthis.#namesGuestLink.forEach(name => {\n\t\t\t// формат параметров API: snake_case\n\t\t\tconst nameSnakeCase = camelToSnakeCase(name);\n\t\t\tdata.set(nameSnakeCase, this.#store[name]);\n\t\t});\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * Установить опции из объекта без фиксации состояния\n\t */\n\t#setOptions(data: Map<string, any>) {\n\t\tdata.forEach((value, name) => {\n\t\t\tconst currentValue = this.#store[name];\n\n\t\t\tif (value === null || value === undefined) return;\n\t\t\tif (currentValue === undefined) return;\n\t\t\tif (!value?.constructor) return;\n\t\t\tif (value.constructor !== currentValue.constructor) return;\n\n\t\t\t// дополнительная проверка на формат даты\n\t\t\tif (name.indexOf('date') === 0) {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t// value.forEach((valueI) => {\n\t\t\t\t\t// \tif (!/\\d\\d\\d\\d-\\d\\d-\\d\\d/.test(valueI)) return;\n\t\t\t\t\t// });\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof (value) === 'string') {\n\t\t\t\t\t\tif (!/\\d\\d\\d\\d-\\d\\d-\\d\\d/.test(value)) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.#store[name] = value;\n\t\t});\n\t}\n\n\t/**\n\t * Сгенерировать Map объект с опциями со значениями в виде json строк\n\t */\n\t#genDataFormat(data: Map<string, any>) {\n\t\tconst dataFormatted = new Map();\n\n\t\tdata.forEach((value, name) => {\n\t\t\tif (value === null) return;\n\n\t\t\tvalue = JSON.stringify(value);\n\n\t\t\tdataFormatted.set(name, value);\n\t\t});\n\n\t\treturn dataFormatted;\n\t}\n\n\t/**\n\t * Сгенерировать Map объект с опциями со значениями в оригинальном виде\n\t */\n\t#genDataUnFormat(dataFormatted: Map<string, string>) {\n\t\tconst data: Map<string, any> = new Map();\n\n\t\tdataFormatted.forEach((value, name) => {\n\t\t\tif (value === null || value === undefined || value === 'false') return;\n\n\t\t\ttry {\n\t\t\t\tif (typeof (value) === 'string' && !/^\\d\\d\\d\\d-\\d\\d-\\d\\d$/.test(value)) value = JSON.parse(value);\n\n\t\t\t\tif (value === null || value === undefined || value === 'false') return;\n\t\t\t} catch (_e) {\n\t\t\t\t// не json строка\n\t\t\t}\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * Установить опции из хеша адреса страницы\n\t */\n\t#loadFromHash() {\n\t\tlet dataHash: any;\n\t\ttry {\n\t\t\tdataHash = JSON.parse(getHash(this.#storeId));\n\t\t} catch (_e) {\n\n\t\t}\n\t\tif (!dataHash) return;\n\n\t\tconst data: Map<string, any> = new Map();\n\n\t\tthis.#namesUrlHash.forEach((name) => {\n\t\t\tconst value = dataHash[name];\n\t\t\tif (!value) return;\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\tthis.#setOptions(data);\n\t}\n\n\t/**\n\t * Сохранить опции в хеш адреса страницы\n\t */\n\t#saveInHash() {\n\t\tconst data = new Map();\n\n\t\tthis.#namesUrlHash.forEach((name) => {\n\t\t\tconst value = this.#store[name];\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\tconst dataObject = Object.fromEntries(data);\n\t\tconst dataJSON = JSON.stringify(dataObject);\n\n\t\tsetHash(this.#storeId, dataJSON);\n\t};\n\n\t/**\n\t * Установить опции из localStorage\n\t * @param isLocal - сохранить с учетом адреса страницы\n\t */\n\t#loadFromStorage(isLocal = false) {\n\t\tconst dataFormatted = new Map();\n\n\t\tlet names = this.#namesStorage;\n\t\tlet storageNamespace = 'state:' + this.#storeId;\n\n\t\tif (isLocal) {\n\t\t\tnames = this.#namesStorageLocal;\n\t\t\tstorageNamespace = 'state:' + this.#storeId + ':' + location.pathname;\n\t\t}\n\n\t\tnames.forEach((name) => {\n\t\t\tconst value = localStorage.getItem(storageNamespace + ':' + name);\n\t\t\tdataFormatted.set(name, value);\n\t\t});\n\n\t\tconst data = this.#genDataUnFormat(dataFormatted);\n\n\t\tthis.#setOptions(data);\n\t}\n\n\t/**\n\t * Сохранить опции в localStorage\n\t * @param isLocal - сохранить с учетом адреса страницы\n\t */\n\t#saveInStorage(isLocal = false) {\n\t\tconst data = new Map();\n\n\t\tlet names = this.#namesStorage;\n\t\tlet storageNamespace = 'state:' + this.#storeId;\n\n\t\tif (isLocal) {\n\t\t\tnames = this.#namesStorageLocal;\n\t\t\tstorageNamespace = 'state:' + this.#storeId + ':' + location.pathname;\n\t\t}\n\n\t\tnames.forEach((name) => {\n\t\t\tconst value = this.#store[name];\n\n\t\t\tdata.set(name, value);\n\t\t});\n\n\t\tconst dataFormatted = this.#genDataFormat(data);\n\n\t\tnames.forEach((name) => {\n\t\t\tconst value = dataFormatted.get(name);\n\n\t\t\tlocalStorage.setItem(storageNamespace + ':' + name, value);\n\t\t});\n\t}\n\n\t/**\n\t * Установить опции из гостевой ссылки\n\t */\n\t#loadFromGuestLink() {\n\t\tconst guestData = this.#user?.guest_data?.data;\n\t\tif (!guestData) return;\n\n\t\t// общие правила для гостевых сессий\n\t\tif (this.#user.id === -1) this.#user.positionsReverseDates = guestData.positionsReverseDates;\n\n\t\tconst dataFormatted = new Map();\n\n\t\tthis.#namesGuestLink.forEach((name) => {\n\t\t\tconst value = guestData[name];\n\t\t\tdataFormatted.set(name, value);\n\t\t});\n\n\t\tconst data = this.#genDataUnFormat(dataFormatted);\n\n\t\tthis.#setOptions(data);\n\n\t\tconst $guestTitle = $('.mod_guest_title');\n\n\t\t// TODO: вынести в опции плагина\n\t\tif (this.#store.competitorsIds?.length === 1 && this.#Page.page.data.competitors) {\n\t\t\tconst competitors = this.#Page.page.data.competitors.filter((competitor: any) => competitor.id === guestData.competitorsIds[0]);\n\t\t\tif (competitors.length) {\n\t\t\t\t$('a', $guestTitle).attr('href', 'http://' + competitors[0].url);\n\t\t\t\t$('a', $guestTitle).text(competitors[0].name);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Подготовить входные параметры перед инициализацией основного функционала\n\t *\n\t * Входные параметры устанавливаются при открытии страницы\n\t *\n\t * Входные параметры могут меняться пользоваталем и устаревать\n\t */\n\t#prepareParams() {\n\t\t// контролль за вводом регионов\n\t\t// TODO: вынести в опции плагина\n\t\tif (this.#store.regionsIndexes) {\n\t\t\twatch(this.#store.regionsIndexes, (regionsIndexes) => {\n\t\t\t\tif (!regionsIndexes.length) return;\n\n\t\t\t\t// приведение типа\n\t\t\t\tregionsIndexes.forEach((regionIndex: number, index: number) => regionsIndexes[index] = regionIndex);\n\n\t\t\t\t// оставить только включенные регионы\n\t\t\t\t// @ts-ignore\n\t\t\t\tconst mapSearchers = TplProjectSelectorRegion.genSearchersMap();\n\n\t\t\t\tconst availableRegionsIndexes: number[] = [];\n\t\t\t\tmapSearchers.forEach((searcher: any) => {\n\t\t\t\t\tsearcher.regions.forEach((region: any) => {\n\t\t\t\t\t\tif (region.index === -1) return;\n\n\t\t\t\t\t\tavailableRegionsIndexes.push(region.index);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tthis.#store.regionsIndexes = regionsIndexes.filter((regionIndex: number) => availableRegionsIndexes.includes(regionIndex));\n\t\t\t}, { immediate: true });\n\t\t}\n\n\t\t// контролль за вводом конкурентов\n\t\t// TODO: вынести в опции плагина\n\t\tif (this.#store.competitorsIds) {\n\t\t\twatch(this.#store.competitorsIds, (competitorsIds) => {\n\t\t\t\tif (!competitorsIds.length) return;\n\n\t\t\t\t// приведение типа\n\t\t\t\tcompetitorsIds.forEach((competitorId: number, index: number) => competitorsIds[index] = competitorId);\n\n\t\t\t\t// оставить только включенных конкурентов\n\t\t\t\tconst availableCompetitorsIds = [this.#Page.page.data.project.id];\n\t\t\t\tthis.#Page.page.data.project.competitors.forEach((competitor: any) => {\n\t\t\t\t\tif (competitor.on >= 0) availableCompetitorsIds.push(competitor.id);\n\t\t\t\t});\n\n\t\t\t\tthis.#store.competitorsIds = competitorsIds.filter((competitorId: number) => availableCompetitorsIds.includes(competitorId));\n\t\t\t}, { immediate: true });\n\t\t}\n\t}\n\n}\n\ntype Options = {\n\t/**\n\t * TODO: Убрать из плагина\n\t */\n\tPage: any,\n\n\t/**\n\t * Объект с настройками пользователя\n\t */\n\tuser: any,\n\n\t/**\n\t * Объект для работы с API\n\t *\n\t * См. на сайте: @/component/api/core/api.ts\n\t */\n\tApi: Api.Client<Api.TV.Paths, true>;\n\n\t/**\n\t * Имена свойств для сохранения в URL\n\t */\n\ttpaNamesUrlHash?: string[],\n\n\t/**\n\t * Имена свойств для сохранения в localStorage\n\t */\n\ttpaNamesStorage?: string[],\n\n\t/**\n\t * Имена свойств для сохранения в localStorage с учетом пути URL\n\t *\n\t * Каждый URL будет работать со своим состоянием\n\t */\n\ttpaNamesStorageLocal?: string[],\n\n\t/**\n\t * Имена свойств для работы с гостевой ссылкой\n\t *\n\t * Для генерации гостевой ссылки используйте store.genGuestLink(data, url)\n\t */\n\ttpaNamesGuestLink?: string[],\n};\n\ntype Context = PiniaPluginContext & {\n\toptions: Options\n};\n\n/**\n * Плагин tpa (Third-party access) для pinia\n *\n * Добавляет возможность сохранять и загружать данные в/из:\n * \t- URL hash в адресе страницы\n * \t- localStorage\n * \t- гостевая ссылка\n *\n * Для подключения плагина нужно указань одну или несколько опций при определении defineStore():\n * - tpaNamesUrlHash\n * - tpaNamesStorage\n * - tpaNamesStorageLocal\n * - tpaNamesGuestLink\n */\nexport default (contextPinia: PiniaPluginContext) => {\n\tconst context = contextPinia as Context;\n\n\t// плагин подключать не нужно\n\tif (\n\t\t!context.options.tpaNamesUrlHash?.length &&\n\t\t!context.options.tpaNamesStorage?.length &&\n\t\t!context.options.tpaNamesStorageLocal?.length &&\n\t\t!context.options.tpaNamesGuestLink?.length\n\t) {\n\t\treturn;\n\t}\n\n\tnew PiniaTPA(context);\n}\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`./utils-BtqYaMHp.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`./dialog-DKGzAD_z.amd`,`vue`,`../require/css.amd!../assets/dialog_regionSelectorRegions.css`],function(e,t,n,r,i,a,o,s){"use strict";if(c===void 0)var c=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var l={class:`dialog_regionSelectorRegions_header`},u=[`data-top-icon`],d=[`src`,`alt`],f={class:`top-ellipsis`},p={class:`dialog_regionSelectorRegions_regionAreaName`},m={key:1},h=[`data-top-icon`];t.default=(0,s.defineComponent)({id:`regionSelectorRegions`,__name:`dialog_regionSelectorRegions`,props:{regions:{},regionsIndexes:{},"@update:regionsIndexes":{type:Function}},setup(e){let t=e,c=(0,r.r)(),g=(0,s.ref)([]),_=(0,s.ref)(null),v=(0,s.reactive)({searcher_key:-1,key:-1,name:-1}),y=(0,s.computed)({get(){return g.value.every(e=>e.selected)},set(e){g.value=g.value.map(t=>({...t,selected:e}))}}),b=e=>{v[e]=-v[e],g.value.sort((t,n)=>!t[e]||!n[e]?-1:t[e]>=n[e]?v[e]:-v[e])},x=()=>{if(!g.value.some(e=>e.selected))return;let e=g.value.filter(e=>e.selected).map(e=>e.index);t[`@update:regionsIndexes`]?.(e),c.close()};(0,s.watch)([()=>t.regions,()=>t.regionsIndexes],()=>{if(g.value=[],!t.regions||!t.regionsIndexes)return;let e=[...t.regions],n=new Map(t.regionsIndexes.map((e,t)=>[e,t]));e.sort((e,t)=>(n.get(e.index)??Number.MAX_VALUE)-(n.get(t.index)??Number.MAX_VALUE)),e.forEach(e=>{let n=e.name;e.areaName&&(n+=` (${e.areaName})`);let r=t.regionsIndexes?.includes(e.index)??!1,o=(0,a.getSearcherGIcon)(e.searcher_key),s=e.lang===void 0?void 0:(0,a.getLangLabel)(e.searcher_key??999,e.lang),c=e.device===void 0?void 0:(0,a.getDeviceGIcon)(e.device),l=e.countryCode===void 0?void 0:(0,i.genFlagLinkByCountryCode)(e.countryCode),u={...e,selected:r,title:n,searcherIcon:o,langLabel:s,deviceIcon:c,flagLink:l};g.value.push(u)})});let S=()=>{if(!n.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}_.value&&$(_.value).sortable({distance:10,stop:()=>{let e=[..._.value.children].map(e=>Number(e.getAttribute(`data-region-index`)));g.value.sort((t,n)=>e.indexOf(t.index)-e.indexOf(n.index))}})},C=()=>{n.O.$?.ui.sortable&&_.value&&$(_.value).sortable(`destroy`)};return(e,t)=>{let n=(0,s.resolveComponent)(`TopCheckbox`),i=(0,s.resolveComponent)(`TopButton`);return(0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(r.s),{id:(0,s.unref)(c).id,pageActive:`regions`,class:`dialog_regionSelectorRegions`,height:`600px`,width:`600px`,onOpen:S,onClose:C},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(o.r),{name:`regions`,order:0},{header:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,l,[(0,s.createVNode)(n,{modelValue:y.value,"onUpdate:modelValue":t[0]||=e=>y.value=e},null,8,[`modelValue`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[1]||=e=>b(`searcher_key`),title:e.$i18n.Projects?.Sort_by_search_engine},null,8,[`title`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[2]||=e=>b(`key`),title:e.$i18n.Projects?.Sort_by_yandex_region_code},null,8,[`title`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[3]||=e=>b(`name`),title:e.$i18n.Projects?.Sort_by_alphabetically},null,8,[`title`])])]),body:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,{ref_key:`elRegions`,ref:_},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(g.value,e=>((0,s.openBlock)(),(0,s.createBlock)(n,{key:e.index,modelValue:e.selected,"onUpdate:modelValue":t=>e.selected=t,class:`dialog_regionSelectorRegions_region`,"data-region-index":e.index},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,{class:`dialog_regionSelectorRegions_regionSearcherIcon`,"data-top-icon":e.searcherIcon},null,8,u),e.flagLink?((0,s.openBlock)(),(0,s.createElementBlock)(`img`,{key:0,class:`top-flag`,src:`//topvisor.dev`+e.flagLink,alt:e.countryCode},null,8,d)):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,f,[(0,s.createTextVNode)((0,s.toDisplayString)(e.name)+` `,1),(0,s.createElementVNode)(`span`,p,(0,s.toDisplayString)(e.areaName),1)]),e.langLabel?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,m,` [`+(0,s.toDisplayString)(e.langLabel)+`] `,1)):(0,s.createCommentVNode)(``,!0),e.deviceIcon?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:2,"data-top-icon":e.deviceIcon},null,8,h)):(0,s.createCommentVNode)(``,!0)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`data-region-index`]))),128))],512)]),footer:(0,s.withCtx)(()=>[(0,s.createVNode)(i,{onClick:x},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(e.$i18n.Common?.Apply),1)]),_:1})]),_:1})]),_:1},8,[`id`])}}})});
//# sourceMappingURL=dialog_regionSelectorRegions-BIjtdwxa.amd.js.map
{"version":3,"sources":[".chunks/dialog_regionSelectorRegions-BIjtdwxa.esm.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","vue_1","N","g","P","utils_BtqYaMHp_esm_js_1","F","I","L","R","z","B","t","n","s","searchers_js_1","c","l","u","string_js_1","d","V","forms__4U0sLFk_esm_js_1","H","r","dialog_DKGzAD_z_esm_js_1"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-_4U0sLFk.esm.js\", \"./utils-BtqYaMHp.esm.js\", \"../utils/string.js\", \"../utils/searchers.js\", \"./dialog-DKGzAD_z.esm.js\", \"vue\"], function (require, exports, forms__4U0sLFk_esm_js_1, utils_BtqYaMHp_esm_js_1, string_js_1, searchers_js_1, dialog_DKGzAD_z_esm_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = void 0;\n //#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts\n var E = { class: \"dialog_regionSelectorRegions_header\" }, D = [\"data-top-icon\"], O = [\"src\", \"alt\"], k = { class: \"top-ellipsis\" }, A = { class: \"dialog_regionSelectorRegions_regionAreaName\" }, j = { key: 1 }, M = [\"data-top-icon\"], N = /* @__PURE__ */ (0, vue_1.defineComponent)({\n id: \"regionSelectorRegions\",\n __name: \"dialog_regionSelectorRegions\",\n props: {\n regions: {},\n regionsIndexes: {},\n \"@update:regionsIndexes\": { type: Function }\n },\n setup(g) {\n let N = g, P = (0, utils_BtqYaMHp_esm_js_1.r)(), F = (0, vue_1.ref)([]), I = (0, vue_1.ref)(null), L = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), R = (0, vue_1.computed)({\n get() {\n return F.value.every((e) => e.selected);\n },\n set(e) {\n F.value = F.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), z = (e) => {\n L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);\n }, B = () => {\n if (!F.value.some((e) => e.selected))\n return;\n let e = F.value.filter((e) => e.selected).map((e) => e.index);\n N[\"@update:regionsIndexes\"]?.(e), P.close();\n };\n (0, vue_1.watch)([() => N.regions, () => N.regionsIndexes], () => {\n if (F.value = [], !N.regions || !N.regionsIndexes)\n return;\n let e = [...N.regions], t = new Map(N.regionsIndexes.map((e, t) => [e, t]));\n e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {\n let t = e.name;\n e.areaName && (t += ` (${e.areaName})`);\n let n = N.regionsIndexes?.includes(e.index) ?? !1, s = (0, searchers_js_1.getSearcherGIcon)(e.searcher_key), c = e.lang === void 0 ? void 0 : (0, searchers_js_1.getLangLabel)(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : (0, searchers_js_1.getDeviceGIcon)(e.device), u = e.countryCode === void 0 ? void 0 : (0, string_js_1.genFlagLinkByCountryCode)(e.countryCode), d = {\n ...e,\n selected: n,\n title: t,\n searcherIcon: s,\n langLabel: c,\n deviceIcon: l,\n flagLink: u\n };\n F.value.push(d);\n });\n });\n let V = () => {\n if (!forms__4U0sLFk_esm_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n I.value && $(I.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...I.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, H = () => {\n forms__4U0sLFk_esm_js_1.O.$?.ui.sortable && I.value && $(I.value).sortable(\"destroy\");\n };\n return (e, t) => {\n let r = (0, vue_1.resolveComponent)(\"TopCheckbox\"), i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.unref)(utils_BtqYaMHp_esm_js_1.s), {\n id: (0, vue_1.unref)(P).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: V,\n onClose: H\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_DKGzAD_z_esm_js_1.r), {\n name: \"regions\",\n order: 0\n }, {\n header: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", E, [\n (0, vue_1.createVNode)(r, {\n modelValue: R.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => R.value = e\n }, null, 8, [\"modelValue\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[1] ||= (e) => z(\"searcher_key\"),\n title: e.$i18n.Projects?.Sort_by_search_engine\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[2] ||= (e) => z(\"key\"),\n title: e.$i18n.Projects?.Sort_by_yandex_region_code\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[3] ||= (e) => z(\"name\"),\n title: e.$i18n.Projects?.Sort_by_alphabetically\n }, null, 8, [\"title\"])\n ])]),\n body: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", {\n ref_key: \"elRegions\",\n ref: I\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(F.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: e.index,\n modelValue: e.selected,\n \"onUpdate:modelValue\": (t) => e.selected = t,\n class: \"dialog_regionSelectorRegions_region\",\n \"data-region-index\": e.index\n }, {\n default: (0, vue_1.withCtx)(() => [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"dialog_regionSelectorRegions_regionSearcherIcon\",\n \"data-top-icon\": e.searcherIcon\n }, null, 8, D),\n e.flagLink ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"img\", {\n key: 0,\n class: \"top-flag\",\n src: \"//topvisor.dev\" + e.flagLink,\n alt: e.countryCode\n }, null, 8, O)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createElementVNode)(\"div\", k, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.name) + \" \", 1), (0, vue_1.createElementVNode)(\"span\", A, (0, vue_1.toDisplayString)(e.areaName), 1)]),\n e.langLabel ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", j, \" [\" + (0, vue_1.toDisplayString)(e.langLabel) + \"] \", 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 2,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, M)) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]),\n _: 2\n }, 1032, [\n \"modelValue\",\n \"onUpdate:modelValue\",\n \"data-region-index\"\n ]))), 128))], 512)]),\n footer: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(i, { onClick: B }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.$i18n.Common?.Apply), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"id\"]);\n };\n }\n });\n exports.default = N;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-BIjtdwxa.esm.js.map\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
/* start import css */
import { Core as _autoloadCSSCore } from '../core/app.js';
const fileNames = ['../assets/dialog_regionSelectorRegions.css'].map(fileName => import.meta.resolve(fileName));
_autoloadCSSCore.insertCSSLinkToPage(fileNames, true);
/* end import css */
import { O as e } from "./forms-_4U0sLFk.esm.js";
import { r as t, s as n } from "./utils-BtqYaMHp.esm.js";
import { genFlagLinkByCountryCode as r } from "../utils/string.js";
import { getDeviceGIcon as i, getLangLabel as a, getSearcherGIcon as o } from "../utils/searchers.js";
import { r as s } from "./dialog-DKGzAD_z.esm.js";
import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, openBlock as _, reactive as v, ref as y, renderList as b, resolveComponent as x, toDisplayString as S, unref as C, watch as w, withCtx as T } from "vue";
//#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts
var E = { class: "dialog_regionSelectorRegions_header" }, D = ["data-top-icon"], O = ["src", "alt"], k = { class: "top-ellipsis" }, A = { class: "dialog_regionSelectorRegions_regionAreaName" }, j = { key: 1 }, M = ["data-top-icon"], N = /* @__PURE__ */ g({
id: "regionSelectorRegions",
__name: "dialog_regionSelectorRegions",
props: {
regions: {},
regionsIndexes: {},
"@update:regionsIndexes": { type: Function }
},
setup(g) {
let N = g, P = t(), F = y([]), I = y(null), L = v({
searcher_key: -1,
key: -1,
name: -1
}), R = l({
get() {
return F.value.every((e) => e.selected);
},
set(e) {
F.value = F.value.map((t) => ({
...t,
selected: e
}));
}
}), z = (e) => {
L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);
}, B = () => {
if (!F.value.some((e) => e.selected)) return;
let e = F.value.filter((e) => e.selected).map((e) => e.index);
N["@update:regionsIndexes"]?.(e), P.close();
};
w([() => N.regions, () => N.regionsIndexes], () => {
if (F.value = [], !N.regions || !N.regionsIndexes) return;
let e = [...N.regions], t = new Map(N.regionsIndexes.map((e, t) => [e, t]));
e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {
let t = e.name;
e.areaName && (t += ` (${e.areaName})`);
let n = N.regionsIndexes?.includes(e.index) ?? !1, s = o(e.searcher_key), c = e.lang === void 0 ? void 0 : a(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : i(e.device), u = e.countryCode === void 0 ? void 0 : r(e.countryCode), d = {
...e,
selected: n,
title: t,
searcherIcon: s,
langLabel: c,
deviceIcon: l,
flagLink: u
};
F.value.push(d);
});
});
let V = () => {
if (!e.$?.ui.sortable) {
console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");
return;
}
I.value && $(I.value).sortable({
distance: 10,
stop: () => {
let e = [...I.value.children].map((e) => Number(e.getAttribute("data-region-index")));
F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));
}
});
}, H = () => {
e.$?.ui.sortable && I.value && $(I.value).sortable("destroy");
};
return (e, t) => {
let r = x("TopCheckbox"), i = x("TopButton");
return _(), u(C(n), {
id: C(P).id,
pageActive: "regions",
class: "dialog_regionSelectorRegions",
height: "600px",
width: "600px",
onOpen: V,
onClose: H
}, {
default: T(() => [h(C(s), {
name: "regions",
order: 0
}, {
header: T(() => [p("div", E, [
h(r, {
modelValue: R.value,
"onUpdate:modelValue": t[0] ||= (e) => R.value = e
}, null, 8, ["modelValue"]),
h(i, {
class: "dialog_regionSelectorRegions_sortButton",
color: "theme",
"data-top-icon": "",
onClick: t[1] ||= (e) => z("searcher_key"),
title: e.$i18n.Projects?.Sort_by_search_engine
}, null, 8, ["title"]),
h(i, {
class: "dialog_regionSelectorRegions_sortButton",
color: "theme",
"data-top-icon": "",
onClick: t[2] ||= (e) => z("key"),
title: e.$i18n.Projects?.Sort_by_yandex_region_code
}, null, 8, ["title"]),
h(i, {
class: "dialog_regionSelectorRegions_sortButton",
color: "theme",
"data-top-icon": "",
onClick: t[3] ||= (e) => z("name"),
title: e.$i18n.Projects?.Sort_by_alphabetically
}, null, 8, ["title"])
])]),
body: T(() => [p("div", {
ref_key: "elRegions",
ref: I
}, [(_(!0), f(c, null, b(F.value, (e) => (_(), u(r, {
key: e.index,
modelValue: e.selected,
"onUpdate:modelValue": (t) => e.selected = t,
class: "dialog_regionSelectorRegions_region",
"data-region-index": e.index
}, {
default: T(() => [
p("div", {
class: "dialog_regionSelectorRegions_regionSearcherIcon",
"data-top-icon": e.searcherIcon
}, null, 8, D),
e.flagLink ? (_(), f("img", {
key: 0,
class: "top-flag",
src: "//topvisor.dev" + e.flagLink,
alt: e.countryCode
}, null, 8, O)) : d("", !0),
p("div", k, [m(S(e.name) + " ", 1), p("span", A, S(e.areaName), 1)]),
e.langLabel ? (_(), f("div", j, " [" + S(e.langLabel) + "] ", 1)) : d("", !0),
e.deviceIcon ? (_(), f("div", {
key: 2,
"data-top-icon": e.deviceIcon
}, null, 8, M)) : d("", !0)
]),
_: 2
}, 1032, [
"modelValue",
"onUpdate:modelValue",
"data-region-index"
]))), 128))], 512)]),
footer: T(() => [h(i, { onClick: B }, {
default: T(() => [m(S(e.$i18n.Common?.Apply), 1)]),
_: 1
})]),
_: 1
})]),
_: 1
}, 8, ["id"]);
};
}
});
//#endregion
export { N as default };
//# sourceMappingURL=dialog_regionSelectorRegions-BIjtdwxa.esm.js.map
{"version":3,"file":"dialog_regionSelectorRegions-BIjtdwxa.esm.js","names":[],"sources":["../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`./utils-BtqYaMHp.amd`,`vue`],function(e,t,n,r,i){"use strict";if(a===void 0)var a=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.r=t.n=void 0;var o={key:0,style:{display:`none`}},s=[`data-order`,`data-view-page`],c={class:`modal-header`},l={class:`top-title`},u={class:`buttons`},d=[`title`],f=[`title`],p=[`data-order`,`data-view-page`],m={class:`modal-body`},h=(0,i.defineComponent)({__name:`page`,props:{isLoading:{type:Boolean},name:{},order:{default:0},prevName:{},footerFullWith:{type:Boolean}},setup(e,{slots:t}){let a=e,h=(0,r.r)(),g=(0,i.computed)(()=>({active:h.pageActive?.value===a.name,"i-load-data":a.isLoading||h.isLoadingPage.value}));return(r,a)=>{let _=(0,i.resolveDirective)(`top-scroll-shadow`);return(0,i.unref)(h).isReady.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,o,[((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`#`+(0,i.unref)(h).idAttr+` .modal-layer-header`,disabled:!(0,i.unref)(h).needShowPage(e.name)},[(0,i.createElementVNode)(`div`,{"data-order":e.order,"data-view-page":e.name,class:(0,i.normalizeClass)(g.value)},[(0,i.createElementVNode)(`div`,c,[(0,i.createElementVNode)(`div`,l,[(0,i.renderSlot)(r.$slots,`header`)]),(0,i.createElementVNode)(`div`,u,[(0,i.renderSlot)(r.$slots,`headerButtons`)]),(0,i.unref)(n.O).state.isMobile&&e.prevName?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:0,class:`close`,title:r.$i18n.Common.Back,"data-top-icon":``,onClick:a[0]||=t=>(0,i.unref)(h).open(e.prevName)},null,8,d)):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:1,class:`close`,title:r.$i18n.Common.Close,"data-top-icon":``,"data-action":`top-dialog-close`},null,8,f))])],10,s)],8,[`to`,`disabled`])),((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`#`+(0,i.unref)(h).idAttr+` .modal-layer-body`,disabled:!(0,i.unref)(h).needShowPage(e.name)},[(0,i.createElementVNode)(`div`,{"data-order":e.order,"data-view-page":e.name,class:(0,i.normalizeClass)([`has_scroll_container`,g.value]),style:(0,i.normalizeStyle)({"--top-dialog-footer-height":t.footer?void 0:`0px`})},[(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`div`,m,[(0,i.renderSlot)(r.$slots,`body`)])),[[_]]),t.footer?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:0,class:(0,i.normalizeClass)([`modal-footer`,{"modal-footer-fullWith":e.footerFullWith}])},[(0,i.renderSlot)(r.$slots,`footer`)],2)):(0,i.createCommentVNode)(``,!0)],14,p)],8,[`to`,`disabled`]))])):(0,i.createCommentVNode)(``,!0)}}}),g={name:{type:String,required:!0},order:{type:Number,required:!0},prevName:String,footerFullWith:Boolean},_=(0,i.defineComponent)({__name:`pageComponent`,props:{component:{},keepAlive:{type:Boolean,default:!0},props:{},name:{},order:{},prevName:{},footerFullWith:{type:Boolean}},setup(e){let t=e,n=(0,r.r)(),a=(e,r)=>{if(!r.value){if(e.name!==`AsyncComponentWrapper`){r.value=!0;return}n.needShowPage(t.name)&&(n.isLoadingPage.value=!0,e.__asyncResolved&&(r.value=!0,n.isLoadingPage.value=!1))}};if(t.component.name===`AsyncComponentWrapper`){let e=(0,i.ref)(!1);(0,i.onUpdated)(()=>{a(t.component,e)})}return(r,a)=>((0,i.openBlock)(),(0,i.createBlock)(i.KeepAlive,{include:e.keepAlive?``:`none`},[(0,i.unref)(n).needShowPage(e.name)?((0,i.openBlock)(),(0,i.createBlock)((0,i.resolveDynamicComponent)(e.component),(0,i.mergeProps)({key:0},t,{name:e.name,order:e.order,prevName:e.prevName}),null,16,[`name`,`order`,`prevName`])):(0,i.createCommentVNode)(``,!0)],1032,[`include`]))}});t.r=h,t.n=g,t.t=_});
//# sourceMappingURL=dialog-DKGzAD_z.amd.js.map
{"version":3,"sources":[".chunks/dialog-DKGzAD_z.esm.js","../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/types.ts","../../src/components/dialog/dialog/pageComponent/pageComponent.vue"],"names":["vue","exports","x","S","C","w","T","E","D","O","k","A","vue_1","l","u","n","p","utils_BtqYaMHp_esm_js_1","h","t","forms__4U0sLFk_esm_js_1","j","M","r","i","s"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-_4U0sLFk.esm.js\", \"./utils-BtqYaMHp.esm.js\", \"vue\"], function (require, exports, forms__4U0sLFk_esm_js_1, utils_BtqYaMHp_esm_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = exports.r = exports.n = void 0;\n //#region src/components/dialog/dialog/page/page.vue?vue&type=script&setup=true&lang.ts\n var x = {\n key: 0,\n style: { display: \"none\" }\n }, S = [\"data-order\", \"data-view-page\"], C = { class: \"modal-header\" }, w = { class: \"top-title\" }, T = { class: \"buttons\" }, E = [\"title\"], D = [\"title\"], O = [\"data-order\", \"data-view-page\"], k = { class: \"modal-body\" }, A = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"page\",\n props: {\n isLoading: { type: Boolean },\n name: {},\n order: { default: 0 },\n prevName: {},\n footerFullWith: { type: Boolean }\n },\n setup(n, { slots: l }) {\n let u = n, p = (0, utils_BtqYaMHp_esm_js_1.r)(), h = (0, vue_1.computed)(() => ({\n active: p.pageActive?.value === u.name,\n \"i-load-data\": u.isLoading || p.isLoadingPage.value\n }));\n return (t, i) => {\n let u = (0, vue_1.resolveDirective)(\"top-scroll-shadow\");\n return (0, vue_1.unref)(p).isReady.value ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", x, [((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.Teleport, {\n to: \"#\" + (0, vue_1.unref)(p).idAttr + \" .modal-layer-header\",\n disabled: !(0, vue_1.unref)(p).needShowPage(n.name)\n }, [(0, vue_1.createElementVNode)(\"div\", {\n \"data-order\": n.order,\n \"data-view-page\": n.name,\n class: (0, vue_1.normalizeClass)(h.value)\n }, [(0, vue_1.createElementVNode)(\"div\", C, [\n (0, vue_1.createElementVNode)(\"div\", w, [(0, vue_1.renderSlot)(t.$slots, \"header\")]),\n (0, vue_1.createElementVNode)(\"div\", T, [(0, vue_1.renderSlot)(t.$slots, \"headerButtons\")]),\n (0, vue_1.unref)(forms__4U0sLFk_esm_js_1.O).state.isMobile && n.prevName ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 0,\n class: \"close\",\n title: t.$i18n.Common.Back,\n \"data-top-icon\": \"\",\n onClick: i[0] ||= (e) => (0, vue_1.unref)(p).open(n.prevName)\n }, null, 8, E)) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 1,\n class: \"close\",\n title: t.$i18n.Common.Close,\n \"data-top-icon\": \"\",\n \"data-action\": \"top-dialog-close\"\n }, null, 8, D))\n ])], 10, S)], 8, [\"to\", \"disabled\"])), ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.Teleport, {\n to: \"#\" + (0, vue_1.unref)(p).idAttr + \" .modal-layer-body\",\n disabled: !(0, vue_1.unref)(p).needShowPage(n.name)\n }, [(0, vue_1.createElementVNode)(\"div\", {\n \"data-order\": n.order,\n \"data-view-page\": n.name,\n class: (0, vue_1.normalizeClass)([\"has_scroll_container\", h.value]),\n style: (0, vue_1.normalizeStyle)({ \"--top-dialog-footer-height\": l.footer ? void 0 : \"0px\" })\n }, [(0, vue_1.withDirectives)(((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", k, [(0, vue_1.renderSlot)(t.$slots, \"body\")])), [[u]]), l.footer ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 0,\n class: (0, vue_1.normalizeClass)([\"modal-footer\", { \"modal-footer-fullWith\": n.footerFullWith }])\n }, [(0, vue_1.renderSlot)(t.$slots, \"footer\")], 2)) : (0, vue_1.createCommentVNode)(\"\", !0)], 14, O)], 8, [\"to\", \"disabled\"]))])) : (0, vue_1.createCommentVNode)(\"\", !0);\n };\n }\n }), j = {\n name: {\n type: String,\n required: !0\n },\n order: {\n type: Number,\n required: !0\n },\n prevName: String,\n footerFullWith: Boolean\n }, M = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"pageComponent\",\n props: {\n component: {},\n keepAlive: {\n type: Boolean,\n default: !0\n },\n props: {},\n name: {},\n order: {},\n prevName: {},\n footerFullWith: { type: Boolean }\n },\n setup(e) {\n let r = e, i = (0, utils_BtqYaMHp_esm_js_1.r)(), s = (e, t) => {\n if (!t.value) {\n if (e.name !== \"AsyncComponentWrapper\") {\n t.value = !0;\n return;\n }\n i.needShowPage(r.name) && (i.isLoadingPage.value = !0, e.__asyncResolved && (t.value = !0, i.isLoadingPage.value = !1));\n }\n };\n if (r.component.name === \"AsyncComponentWrapper\") {\n let e = (0, vue_1.ref)(!1);\n (0, vue_1.onUpdated)(() => {\n s(r.component, e);\n });\n }\n return (t, s) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.KeepAlive, { include: e.keepAlive ? \"\" : \"none\" }, [(0, vue_1.unref)(i).needShowPage(e.name) ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.resolveDynamicComponent)(e.component), (0, vue_1.mergeProps)({ key: 0 }, r, {\n name: e.name,\n order: e.order,\n prevName: e.prevName\n }), null, 16, [\n \"name\",\n \"order\",\n \"prevName\"\n ])) : (0, vue_1.createCommentVNode)(\"\", !0)], 1032, [\"include\"]));\n }\n });\n exports.r = A;\n exports.n = j;\n exports.t = M;\n});\n//# sourceMappingURL=dialog-DKGzAD_z.esm.js.map\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","export interface Props extends PropsCommon {\n\t/**\n\t * Статус загрузки страницы диалогового окна\n\t *\n\t * При включении взаимодействие со страницей блокируется, отображается анимация загрузки\n\t */\n\tisLoading?: boolean;\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n */\nexport interface PropsCommon {\n\t/**\n\t * Имя страницы для диалогового окна\n\t *\n\t * Имя страницы нужно для навигации между страницами в одном диалоговом окне\n\t */\n\tname: string,\n\n\t/**\n\t * Порядкой номер страницы в диалоговом окне\n\t *\n\t * Одна и та же страница может быть подключена в разные диалоговые окна и иметь разный порядковый номер\n\t */\n\torder: number,\n\n\t/**\n\t * Имя предыдущей страницы\n\t *\n\t * Для кнопки Назад / Закрыть в мобильной версии\n\t */\n\tprevName?: string,\n\n\t/**\n\t * Стиль отображения футера, при котороым элементы растягиваются на всю ширину\n\t *\n\t * Разрешены переносы\n\t */\n\tfooterFullWith?: boolean,\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n *\n * Для не SFC компонентов\n */\nexport const propsPageCommon = {\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\n\torder: {\n\t\ttype: Number,\n\t\trequired: true,\n\t},\n\n\tprevName: String,\n\n\tfooterFullWith: Boolean,\n};\n\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: Record<string, unknown>): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: Record<string, unknown>): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: Record<string, unknown>): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: Record<string, unknown>): any;\n}\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n"]}
import { O as e } from "./forms-_4U0sLFk.esm.js";
import { r as t } from "./utils-BtqYaMHp.esm.js";
import { KeepAlive as n, Teleport as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, defineComponent as l, mergeProps as u, normalizeClass as d, normalizeStyle as f, onUpdated as p, openBlock as m, ref as h, renderSlot as g, resolveDirective as _, resolveDynamicComponent as v, unref as y, withDirectives as b } from "vue";
//#region src/components/dialog/dialog/page/page.vue?vue&type=script&setup=true&lang.ts
var x = {
key: 0,
style: { display: "none" }
}, S = ["data-order", "data-view-page"], C = { class: "modal-header" }, w = { class: "top-title" }, T = { class: "buttons" }, E = ["title"], D = ["title"], O = ["data-order", "data-view-page"], k = { class: "modal-body" }, A = /* @__PURE__ */ l({
__name: "page",
props: {
isLoading: { type: Boolean },
name: {},
order: { default: 0 },
prevName: {},
footerFullWith: { type: Boolean }
},
setup(n, { slots: l }) {
let u = n, p = t(), h = i(() => ({
active: p.pageActive?.value === u.name,
"i-load-data": u.isLoading || p.isLoadingPage.value
}));
return (t, i) => {
let u = _("top-scroll-shadow");
return y(p).isReady.value ? (m(), s("div", x, [(m(), a(r, {
to: "#" + y(p).idAttr + " .modal-layer-header",
disabled: !y(p).needShowPage(n.name)
}, [c("div", {
"data-order": n.order,
"data-view-page": n.name,
class: d(h.value)
}, [c("div", C, [
c("div", w, [g(t.$slots, "header")]),
c("div", T, [g(t.$slots, "headerButtons")]),
y(e).state.isMobile && n.prevName ? (m(), s("div", {
key: 0,
class: "close",
title: t.$i18n.Common.Back,
"data-top-icon": "",
onClick: i[0] ||= (e) => y(p).open(n.prevName)
}, null, 8, E)) : (m(), s("div", {
key: 1,
class: "close",
title: t.$i18n.Common.Close,
"data-top-icon": "",
"data-action": "top-dialog-close"
}, null, 8, D))
])], 10, S)], 8, ["to", "disabled"])), (m(), a(r, {
to: "#" + y(p).idAttr + " .modal-layer-body",
disabled: !y(p).needShowPage(n.name)
}, [c("div", {
"data-order": n.order,
"data-view-page": n.name,
class: d(["has_scroll_container", h.value]),
style: f({ "--top-dialog-footer-height": l.footer ? void 0 : "0px" })
}, [b((m(), s("div", k, [g(t.$slots, "body")])), [[u]]), l.footer ? (m(), s("div", {
key: 0,
class: d(["modal-footer", { "modal-footer-fullWith": n.footerFullWith }])
}, [g(t.$slots, "footer")], 2)) : o("", !0)], 14, O)], 8, ["to", "disabled"]))])) : o("", !0);
};
}
}), j = {
name: {
type: String,
required: !0
},
order: {
type: Number,
required: !0
},
prevName: String,
footerFullWith: Boolean
}, M = /* @__PURE__ */ l({
__name: "pageComponent",
props: {
component: {},
keepAlive: {
type: Boolean,
default: !0
},
props: {},
name: {},
order: {},
prevName: {},
footerFullWith: { type: Boolean }
},
setup(e) {
let r = e, i = t(), s = (e, t) => {
if (!t.value) {
if (e.name !== "AsyncComponentWrapper") {
t.value = !0;
return;
}
i.needShowPage(r.name) && (i.isLoadingPage.value = !0, e.__asyncResolved && (t.value = !0, i.isLoadingPage.value = !1));
}
};
if (r.component.name === "AsyncComponentWrapper") {
let e = h(!1);
p(() => {
s(r.component, e);
});
}
return (t, s) => (m(), a(n, { include: e.keepAlive ? "" : "none" }, [y(i).needShowPage(e.name) ? (m(), a(v(e.component), u({ key: 0 }, r, {
name: e.name,
order: e.order,
prevName: e.prevName
}), null, 16, [
"name",
"order",
"prevName"
])) : o("", !0)], 1032, ["include"]));
}
});
//#endregion
export { j as n, A as r, M as t };
//# sourceMappingURL=dialog-DKGzAD_z.esm.js.map
{"version":3,"file":"dialog-DKGzAD_z.esm.js","names":[],"sources":["../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/types.ts","../../src/components/dialog/dialog/pageComponent/pageComponent.vue","../../src/components/dialog/dialog/pageComponent/pageComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","export interface Props extends PropsCommon {\n\t/**\n\t * Статус загрузки страницы диалогового окна\n\t *\n\t * При включении взаимодействие со страницей блокируется, отображается анимация загрузки\n\t */\n\tisLoading?: boolean;\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n */\nexport interface PropsCommon {\n\t/**\n\t * Имя страницы для диалогового окна\n\t *\n\t * Имя страницы нужно для навигации между страницами в одном диалоговом окне\n\t */\n\tname: string,\n\n\t/**\n\t * Порядкой номер страницы в диалоговом окне\n\t *\n\t * Одна и та же страница может быть подключена в разные диалоговые окна и иметь разный порядковый номер\n\t */\n\torder: number,\n\n\t/**\n\t * Имя предыдущей страницы\n\t *\n\t * Для кнопки Назад / Закрыть в мобильной версии\n\t */\n\tprevName?: string,\n\n\t/**\n\t * Стиль отображения футера, при котороым элементы растягиваются на всю ширину\n\t *\n\t * Разрешены переносы\n\t */\n\tfooterFullWith?: boolean,\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n *\n * Для не SFC компонентов\n */\nexport const propsPageCommon = {\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\n\torder: {\n\t\ttype: Number,\n\t\trequired: true,\n\t},\n\n\tprevName: String,\n\n\tfooterFullWith: Boolean,\n};\n\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: Record<string, unknown>): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: Record<string, unknown>): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: Record<string, unknown>): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: Record<string, unknown>): any;\n}\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`./field-DEusYVqS.amd`,`../utils/keyboard.amd`,`./popup-DViuKwOc.amd`,`vue`,`./api-BD74aA98.amd`,`../require/css.amd!../assets/formsExt.css`],function(e,t,n,r,i,a,o){"use strict";if(s===void 0)var s=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.u=t.t=t.s=t.r=t.o=t.n=t.l=t.i=t.f=t.d=t.c=t.a=void 0;var c={key:0,class:`top-menu_selectAll`},l=(0,o.defineComponent)({__name:`menu`,props:(0,o.mergeModels)({modelValue:{},items:{},isMultiple:{type:Boolean},canBeEmptyMultiple:{type:Boolean},styling:{default:`default`},selectAllItem:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,r=(0,o.useModel)(e,`modelValue`),i=(0,o.ref)();!t.isMultiple&&typeof r.value!=`string`&&typeof r.value!=`number`&&console.warn(`Type check failed for prop "modelValue". Expected String: `+typeof r.value),t.isMultiple&&!Array.isArray(r.value)&&console.warn(`Type check failed for prop "modelValue". Expected Array: `+typeof r.value),t.isMultiple&&!t.canBeEmptyMultiple&&Array.isArray(r.value)&&!r.value.length&&t.items[0]&&(r.value=[t.items[0]?.href??t.items[0]?.value]);let a=e=>Array.isArray(r.value)?r.value.includes(e.value):e.value===r.value,s=(e,n=!1)=>{if(Array.isArray(r.value)){let i=r.value.slice();if(n){i.length||(i=t.items.map(e=>e.value));let n=i.indexOf(e.value);n===-1?i.push(e.value):i.splice(n,1)}else i=i.length===1&&i[0]===e.value?[]:[e.value];!t.canBeEmptyMultiple&&!i.length&&(i=[e.value]),r.value=i;return}r.value=e.value},l=e=>{if(i.value.scrollWidth<=i.value.offsetWidth||e.shiftKey||Math.abs(e.deltaY)<50)return;e.preventDefault();let t=e.deltaY>0?30:-30;i.value.scrollLeft=i.value.scrollLeft+t},u=(e=!0)=>{let t=i.value.querySelector(`.top-active`);if(!t)return;let r=t.offsetLeft-i.value.offsetLeft-24,a=t.offsetLeft-i.value.offsetLeft+t.clientWidth+24,o=i.value.scrollLeft,s=i.value.clientWidth+i.value.scrollLeft,c;r<o&&(c=r),a>s&&(c=a-i.value.clientWidth),c!==void 0&&((0,n.G)()?n.O.$?.(i.value).animate({scrollLeft:c},e?200:0):i.value.scrollTo({left:c,behavior:e?`smooth`:`auto`}))},d=()=>{if(Array.isArray(r.value)){if(r.value.length===t.items.length){r.value=[t.items[0].href??t.items[0].value];return}r.value=t.items.map(e=>e.href??e.value)}};return(0,o.onMounted)(()=>u(!1)),(0,o.onUpdated)(()=>u(!0)),(t,u)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{ref_key:`el`,ref:i,class:(0,o.normalizeClass)({"top-menu":!0,[`top-style_`+e.styling]:!0}),onWheel:l},[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.items,e=>((0,o.openBlock)(),(0,o.createBlock)(n.h,(0,o.mergeProps)({ref_for:!0},e,{class:`top-menu_item`,color:`theme`,onClick:t=>s(e,t.ctrlKey||t.metaKey),isActive:a(e)}),(0,o.createSlots)({_:2},[e.content?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.content),1)]),key:`0`}:void 0]),1040,[`onClick`,`isActive`]))),256)),Array.isArray(r.value)&&e.selectAllItem?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,c,[(0,o.createVNode)(n.h,(0,o.mergeProps)(e.selectAllItem,{class:`top-menu_item`,color:`theme`,styling:``,onClick:u[0]||=e=>d(),isActive:r.value.length===e.items.length}),(0,o.createSlots)({_:2},[e.selectAllItem.content?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.selectAllItem.content),1)]),key:`0`}:void 0]),1040,[`isActive`])])):(0,o.createCommentVNode)(``,!0)],34))}}),u={class:`top-selector2_itemMulti top-ellipsis`},d=(0,o.defineComponent)({__name:`itemMulti`,props:{id:{},name:{}},emits:[`delete`],setup(e,{emit:t}){return(n,r)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,u,[(0,o.createTextVNode)((0,o.toDisplayString)(e.name)+` `,1),(0,o.createElementVNode)(`span`,{class:`top-selector2_itemMultiDelete`,"data-top-icon":``,onClick:r[0]||=n=>t(`delete`,{id:e.id,name:e.name}),onMousedown:r[1]||=(0,o.withModifiers)(()=>{},[`stop`])},null,32)]))}}),f=new Map,p=new Map,m=new Map,h=e=>(m.has(e)||m.set(e,(0,o.ref)(0)),m.get(e)),g=e=>{h(e).value++},_=e=>{f.get(e)?.clear(),g(e)},v=(e,t)=>{f.get(e)?.forEach(e=>t(e))},y=(e,t)=>{p.get(e)?.forEach(e=>t(e))},b=(e,t,n)=>{y(e,e=>{let r=!1;if(Array.isArray(e.value))e.value.filter(e=>e.id===t).forEach(e=>{Object.assign(e,n),r=!0});else{if(e.value.id!==t)return;Object.assign(e.value,n),r=!0}r&&(0,o.triggerRef)(e)})},x=e=>{let t=window.mo?.user?.id;return JSON.stringify(e.params)+`:`+e.url+`:`+t},S=(e,t)=>{let n=f.get(t)?.get(e);if(n)return n.result=n.result.map(e=>({...e})),n},C=(e,t,n)=>{f.has(t)||f.set(t,new Map),f.get(t)?.set(e,n)},w=(e,t)=>{p.has(e)||p.set(e,new Set),p.get(e)?.add(t),(0,o.onUnmounted)(()=>p.get(e)?.delete(t))},T=(e,t,n)=>{v(e,e=>{let r=e.result.find(e=>e.id===t);r&&Object.assign(r,n)}),b(e,t,n),g(e)},E=(e,t)=>{v(e,e=>{let n=e.result.findIndex(e=>e.id===t);n!==-1&&(e.result.splice(n,1),e.nextOffset&&e.nextOffset--)}),b(e,t,{name:`--`}),g(e)},D=(e,t,r,i,a)=>{let s=(0,o.ref)([]),c=(0,o.ref)(!1),l=(0,o.ref)(0),u=``,d;e&&!e.params.limit&&(e.params.limit=100),e&&w(e.path,a);let f=()=>{if(!e)return;e.params.offset=0;let t=S(x(e),e.path);if(!t){s.value=[],d=void 0;return}s.value=t.result,d=t.nextOffset};e&&i&&(0,o.watch)(h(e.path),()=>{f()});let p=async()=>{if(!e)return;let t=i?x(e):void 0;if(t){let n=S(t,e.path);if(n)return e.abortByFingerprint(),n}let n=await e.call();if(n.errors)return;if(!Array.isArray(n.result)){console.warn("Array expected in `res.result`");return}let r=n.result.findIndex(e=>e.id===void 0||e.name===void 0);if(r!==-1){console.warn(`В result[${r}] нет id или name`);return}return t&&C(t,e.path,n),n},m=async n=>{if(!e)return;if(n){if(!d||c.value)return;e.params.offset=d}else e.params.offset=0;t?.(e,u),c.value=!0;let r=await p();c.value=!1,l.value++,r&&(d=r.nextOffset,n?s.value=s.value.concat(r.result):s.value=r.result)},g=(0,n.P)(()=>m(!1),200);return{apiRequest:e,items:s,isLoading:c,countLoading:l,load:m,setSearchTextAndLoad:(t,n=!0)=>{if(e){if(t.length<r){e.abortByFingerprint(),s.value=[];return}t===u&&s.value.length||(u=t,n?g():m(!1))}}}},O=0,k=null,A=(e,t,n=!0)=>n&&t.id===null?Array.isArray(e)?e.some(e=>e.id===t.id&&e.name===t.name):t.name===e.name:Array.isArray(e)?e.some(e=>e.id===t.id):t.id===e.id,j=(e,t,n)=>{let i=e.params.filters??[];i=i.filter(e=>e.name!==n),t&&i.push((0,r.t)(n,`CONTAINS`,[t])),e.changeParams({filters:i})},M=(e,t,r,a)=>{let s=(0,o.ref)(``),c={id:0,name:(0,n.E)().Common.All},l=()=>{s.value=``},u=()=>!(!a.apiRequest||s.value.length>=t.minLength),d=(0,o.computed)(()=>{let e=[];return!t.multiselect&&t.useAllItem&&(typeof t.useAllItem==`string`&&(c.name=t.useAllItem),e.push(c)),t.items?.forEach(t=>e.push(t)),e}),f=(0,o.ref)([]),p=(0,o.ref)(t.itemsChunkSize),m=()=>{f.value=_()},h=()=>{!t.itemsChunkSize||p.value===void 0||(p.value+=t.itemsChunkSize)},g=()=>{t.itemsChunkSize&&(p.value=t.itemsChunkSize)},_=()=>{let n=s.value.toLowerCase(),r=(0,i.invertKeyboardLayout)(n),o=[],c,l=[],u=()=>{l.at(-1)?.listItemProps?.type===`delimiter`&&l.pop(),l.length&&=(c&&o.push(c),o.push(...l),0)},f=e=>{let i=t.searchFields?.includes(`id`),a=e.name.toLowerCase(),o=t.searchFields?.filter(e=>e!==`id`).map(t=>typeof e[t]==`string`||typeof e[t]==`number`?e[t]:``).join(`☼`).toLowerCase();(i&&e.id===Number(n)||o?.includes(n)||o?.includes(r))&&(a===n||a===r?l.unshift(e):l.push(e))};for(let e of d.value)switch(e.listItemProps?.type){case`title`:u(),c=e;break;case`delimiter`:if(l.length){let t=l.length;l.at(-1)?.listItemProps?.type===`delimiter`&&t--,l[t]=e}break;default:f(e)}if(u(),o.push(...a.items.value),t.itemsChunkSize&&!a.apiRequest&&(o=o.slice(0,p.value)),t.appendSearchToResult&&s.value&&(!t.appendSearchToResultCond||t.appendSearchToResultCond(n))&&(t.appendSearchAllowDuplicate||!o.find(e=>e.name.toLowerCase()===n))){let e={id:null,name:s.value};t.appendWithoutSelect&&(e.listItemProps={closeByClick:!1}),o.push(e)}return t.multiselect&&(o=o.filter(t=>!A(e.value,t))),t.prepareItemsBeforeRender&&(o=t.prepareItemsBeforeRender(o)),o},v=n=>{n.listItemProps?.type===`title`||n.listItemProps?.type===`delimiter`||n.id===null&&(r(`appendItem`,n),t.appendWithoutSelect)||(t.multiselect&&Array.isArray(e.value)?A(e.value,n)||(e.value=[...e.value,n]):e.value=n,setTimeout(()=>{l()}))};if(a.apiRequest){let n=[()=>t.items,a.items];t.multiselect&&n.push(e),(0,o.watch)(n,()=>{m()},{deep:2})}else(0,o.watch)(s,()=>{g()}),(0,o.watch)([e,()=>t.items,s,p],()=>{m()},{immediate:!0,deep:2}),(0,o.watch)([()=>t.items?.length??0,()=>t.items],(n,r)=>{(n[0]<r[0]||n[1]!==r[1])&&(Array.isArray(e.value)?e.value:[e.value]).forEach(e=>{e.id!==c.id&&(t.items?.find(t=>t.id===e.id)||(e.name=`--`))})});return{searchText:s,resetSearch:l,genIsShort:u,itemsForShow:f,revelItemsForShow:h,resetItemsForShow:g,selectItem:v,selectNextItem:()=>{if(Array.isArray(e.value))return;let t=f.value.filter(e=>![`title`,`delimiter`].includes(e.listItemProps?.type??``));e.value={...t[(t.findIndex(t=>t.id===e.value.id)+1)%t.length]}},deleteItemByItem:async t=>{Array.isArray(e.value)&&(e.value=e.value.filter(e=>e.id!==t.id||e.name!==t.name))}}},N={key:0,class:`top-selector2_activeItems`},P={key:1,class:`top-selector2_activeName top-ellipsis`},F={key:2,class:`top-selector2_placeholder top-ellipsis`},I={class:`top-selector2_searchWidget`},L=(0,o.defineComponent)({__name:`selector2`,props:(0,o.mergeModels)({modelValue:{},items:{default:()=>[]},itemsChunkSize:{},itemsIsLoading:{type:Boolean},title:{},disabled:{type:Boolean},icon:{},modificator:{},size:{default:`s`},isError:{type:Boolean},openByFocusInput:{type:Boolean,default:void 0},searchType:{default:`popup`},searchFields:{default:()=>[`id`,`name`]},placeholder:{},hasCloserBtn:{type:Boolean},prepareItemsBeforeRender:{},api:{},apiSetSearchParams:{},minLength:{default:0},useCache:{type:Boolean},appendSearchToResult:{type:Boolean},appendSearchAllowDuplicate:{type:Boolean},appendSearchToResultCond:{},appendWithoutSelect:{type:Boolean},multiselect:{type:Boolean},useAllItem:{type:[Boolean,String]},addChanger:{type:Boolean},buttonProps:{},selectedAsPlaceholder:{type:Boolean},openerShortcut:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:(0,o.mergeModels)([`appendItem`,`open`],[`update:modelValue`]),setup(e,{expose:t,emit:r,slots:i}){let s=e,c=(0,o.useModel)(e,`modelValue`),l=r,u=(0,o.computed)(()=>s.searchType===`inline`&&s.multiselect||s.searchType===`inline`&&n.O.state.isMobile?`popup`:s.searchType),f=D(s.api,s.apiSetSearchParams,s.minLength,s.useCache,c),p=M(c,s,l,f),m=(0,o.computed)(()=>s.buttonProps?`TopButton`:u.value===`inline`?`TopInput`:`div`),h=(0,o.ref)(null),g=(0,o.ref)(null),v=()=>h.value?.popup;f.apiRequest&&(0,o.watch)(p.searchText,()=>{f.setSearchTextAndLoad(p.searchText.value)});let y=(0,o.computed)(()=>Array.isArray(c.value)||s.multiselect||!s.selectedAsPlaceholder&&u.value!==`inline`?s.placeholder:c.value?.name||s.placeholder),b=e=>{let t=!1;switch(e.key){case`Delete`:case`Backspace`:Array.isArray(c.value)&&(e.preventDefault(),e.stopPropagation(),c.value.pop());break;case`ArrowUp`:case`ArrowRight`:case`ArrowDown`:case`ArrowLeft`:case`Enter`:case` `:t=!0;break;case`Escape`:u.value===`inline`&&p.resetSearch()}let n=e.key.length===1&&!e.ctrlKey&&!e.metaKey;(u.value===`popup`||u.value===`inline`)&&n&&(t=!0),v()?.elPopup&&(t=!1),t&&(u.value===`popup`&&(e.preventDefault(),e.stopPropagation(),n&&(p.searchText.value||(p.searchText.value=e.key))),e.currentTarget?.click())},x=e=>{e.preventDefault(),p.selectNextItem()},S=()=>{f.apiRequest&&f.setSearchTextAndLoad(p.searchText.value,!1),l(`open`)},C=()=>{p.resetItemsForShow(),u.value===`popup`&&p.searchText.value&&p.resetSearch()},w=e=>{let t=e.target;t.scrollTop/(t.scrollHeight-t.offsetHeight)>.8&&(s.api?f.load(!0):p.revelItemsForShow())};return t({getPopup:v,popupOpenerRef:g,resetCache:(e=!1)=>{f.apiRequest&&(e&&_(f.apiRequest.path),f.items.value=[],f.countLoading.value=0,f.apiRequest.params.offset=0,requestAnimationFrame(()=>{p.itemsForShow.value=[]}),v()?.elPopup&&f.setSearchTextAndLoad(p.searchText.value))},updateCacheItemById:(e,t)=>{f.apiRequest&&T(f.apiRequest.path,e,t)},deleteCacheItemById:e=>{f.apiRequest&&E(f.apiRequest.path,e)}}),(t,r)=>{let s=(0,o.resolveComponent)(`TopLoadbar`),l=(0,o.resolveDirective)(`top-focus`),_=(0,o.resolveDirective)(`top-shortcut`);return(0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(a.s),{ref_key:`popupRef`,ref:h,onOpen:r[3]||=e=>S(),onClose:r[4]||=e=>C(),onScrollContentList:r[5]||=e=>w(e),notch:!1,transitionDuration:0,openByFocusInput:u.value===`inline`&&(e.openByFocusInput??!0),disabled:u.value===`inline`&&(0,o.unref)(p).genIsShort()},(0,o.createSlots)({opener:(0,o.withCtx)(()=>[(0,o.withDirectives)(((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(m.value),(0,o.mergeProps)({ref_key:`popupOpenerRef`,ref:g},e.buttonProps,{class:{"top-selector2":!0,"top-selector2-multiselect":e.multiselect,[`top-selector2-`+e.modificator]:!!e.modificator,"top-as-input":!e.buttonProps&&u.value!==`inline`,"top-as-selector":!0,[`top-size_`+e.size]:!0,"top-disabled":e.disabled,"top-forms-focusable":!e.disabled,"top-error":e.isError},icon:e.icon,tabindex:`0`,onKeydown:b,onBlur:r[0]||=e=>u.value===`inline`&&(0,o.unref)(p).resetSearch(),placeholder:y.value,title:e.title,captionType:u.value===`inline`&&e.title!==void 0?`top`:void 0,modelValue:(0,o.unref)(p).searchText.value,"onUpdate:modelValue":r[1]||=e=>(0,o.unref)(p).searchText.value=e}),{default:(0,o.withCtx)(()=>[e.multiselect?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,N,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(c.value,e=>((0,o.openBlock)(),(0,o.createBlock)(d,{key:e.id??void 0,id:e.id,name:e.name,onDelete:(0,o.unref)(p).deleteItemByItem},null,8,[`id`,`name`,`onDelete`]))),128))])):(0,o.createCommentVNode)(``,!0),u.value!==`inline`&&!e.multiselect?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,P,(0,o.toDisplayString)(Array.isArray(c.value)?``:c.value.name),1)):(0,o.createCommentVNode)(``,!0),e.multiselect&&!c.value.length?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,F,(0,o.toDisplayString)(y.value),1)):(0,o.createCommentVNode)(``,!0),e.addChanger&&!e.buttonProps&&!e.multiselect&&(0,o.unref)(p).itemsForShow.value.length>1&&!e.disabled?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,{key:3,class:`top-changer top-changer-selector`,"data-top-popup-disabled":`true`,onClick:x})):(0,o.createCommentVNode)(``,!0)]),_:1},16,[`class`,`icon`,`placeholder`,`title`,`captionType`,`modelValue`])),[[l,e.isError,void 0,{onupdate:!0}],[_,e.openerShortcut]])]),contentList:(0,o.withCtx)(()=>[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)((0,o.unref)(p).itemsForShow.value,r=>((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(a.o),(0,o.mergeProps)({key:r.id??void 0,class:{"top-active":!Array.isArray(c.value)&&!e.multiselect&&c.value.id===r.id&&c.value.name===r.name,"top-selector2_item-all":r.id===(0,o.unref)(0),"top-selector2_item-new":r.id===(0,o.unref)(null)},closeByClick:!e.multiselect||(0,o.unref)(n.O).state.isMobile},{ref_for:!0},r.listItemProps,{onClick:e=>(0,o.unref)(p).selectItem(r)}),(0,o.createSlots)({default:(0,o.withCtx)(()=>[i.item?(0,o.renderSlot)(t.$slots,`item`,{item:r},void 0,void 0,0):((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:1},[(0,o.createTextVNode)((0,o.toDisplayString)(r.name),1)],64))]),_:2},[i.actions?{name:`actions`,fn:(0,o.withCtx)(()=>[(0,o.renderSlot)(t.$slots,`actions`,{item:r})]),key:`0`}:void 0]),1040,[`class`,`closeByClick`,`onClick`]))),128)),!(0,o.unref)(p).itemsForShow.value.length&&!(0,o.unref)(p).genIsShort()?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(a.o),{key:0,type:`regular`},{default:(0,o.withCtx)(()=>[(0,o.unref)(f).isLoading.value&&!(0,o.unref)(f).countLoading.value||e.itemsIsLoading?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(n.t),{key:0,type:`circles`})):((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:1},[(0,o.createTextVNode)((0,o.toDisplayString)(t.$i18n.Common.No_results),1)],64))]),_:1})):(0,o.createCommentVNode)(``,!0),(0,o.unref)(f).countLoading.value&&(0,o.unref)(f).isLoading.value&&u.value===`inline`?((0,o.openBlock)(),(0,o.createBlock)(s,{key:1})):(0,o.createCommentVNode)(``,!0)]),_:2},[u.value===`popup`?{name:`widget`,fn:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,I,[(0,o.withDirectives)((0,o.createVNode)((0,o.unref)(a.a),{title:`Поиск`,icon:``,modelValue:(0,o.unref)(p).searchText.value,"onUpdate:modelValue":r[2]||=e=>(0,o.unref)(p).searchText.value=e,isLoading:!!(0,o.unref)(f).countLoading.value&&(0,o.unref)(f).isLoading.value,placeholder:y.value},null,8,[`modelValue`,`isLoading`,`placeholder`]),[[l,c.value,void 0,{onupdate:!0}]]),e.hasCloserBtn&&!t.$core.state.isMobile?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(n.h),{key:0,class:`closer`,color:`theme`},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(t.$i18n.Common.Cancel),1)]),_:1})):(0,o.createCommentVNode)(``,!0)])]),key:`0`}:void 0]),1032,[`openByFocusInput`,`disabled`])}}}),R={class:`top-editArea_footer`},z=(0,o.defineComponent)({__name:`editArea`,props:{defaultValue:{default:``},title:{},cancelText:{default:`Cancel`},submitText:{default:`Send`},closeText:{default:`Close`},isFocused:{type:Boolean},forceShowCloseBtn:{type:Boolean},attachToKeyboard:{type:Boolean},modelValue:{},name:{},placeholder:{},styling:{},rows:{},minHeight:{},expandable:{type:Boolean,default:!0},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{},maxLength:{}},emits:[`submit`,`close`,`clickOnTitle`],setup(e,{emit:t,slots:r}){let i=e,a=t,s=(0,o.ref)(i.defaultValue),c=(0,o.ref)(i.isFocused),l=(0,o.computed)(()=>s.value!==i.defaultValue),u=e=>{a(`submit`,e),s.value=i.defaultValue},d=()=>{if(i.forceShowCloseBtn&&!l.value){a(`close`);return}s.value=i.defaultValue},f=()=>{i.attachToKeyboard&&a(`clickOnTitle`)};return(t,i)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:(0,o.normalizeClass)({"top-editArea":!0,"top-editArea-attachedToKeyboard":e.attachToKeyboard})},[e.title||r.caption?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{key:0,class:`top-editArea_caption`,onClick:i[0]||=e=>f()},[(0,o.renderSlot)(t.$slots,`caption`,{},()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.title),1)])])):(0,o.createCommentVNode)(``,!0),(0,o.createElementVNode)(`div`,{class:(0,o.normalizeClass)({"top-editArea_form":!0,"top-forms-focusable":!0,"top-as-input":!0,"top-error":e.isError,"top-focus":c.value})},[(0,o.createVNode)(n.r,{modelValue:s.value,"onUpdate:modelValue":i[1]||=e=>s.value=e,name:e.name,placeholder:e.placeholder,rows:e.rows,minHeight:e.minHeight,expandable:e.expandable,disabled:e.disabled,readonly:e.readonly,isError:e.isError,hint:e.hint,class:`top-editArea_element`,onFocus:i[2]||=()=>c.value=!0,onBlur:i[3]||=()=>c.value=!1,onKeyup:[(0,o.withKeys)(d,[`esc`]),i[4]||=(0,o.withKeys)((0,o.withModifiers)(e=>u(s.value),[`ctrl`]),[`enter`])]},null,8,[`modelValue`,`name`,`placeholder`,`rows`,`minHeight`,`expandable`,`disabled`,`readonly`,`isError`,`hint`]),(0,o.createElementVNode)(`div`,R,[l.value||e.forceShowCloseBtn?((0,o.openBlock)(),(0,o.createBlock)(n.h,{key:0,icon:t.$core.state.isMobile?``:``,class:`top-editArea_button`,color:`theme`,styling:`soft`,onClick:d},(0,o.createSlots)({_:2},[t.$core.state.isMobile?void 0:{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.cancelText),1)]),key:`0`}]),1032,[`icon`])):(0,o.createCommentVNode)(``,!0),l.value?((0,o.openBlock)(),(0,o.createBlock)(n.h,{key:1,class:`top-editArea_button`,icon:t.$core.state.isMobile?``:``,onClick:i[5]||=e=>u(s.value)},(0,o.createSlots)({_:2},[t.$core.state.isMobile?void 0:{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.submitText),1)]),key:`0`}]),1032,[`icon`])):(0,o.createCommentVNode)(``,!0)])],2)],2))}}),B={class:`top-editInput`},V=(0,o.defineComponent)({__name:`editInput`,props:{modelValue:{},alwaysShowSubmitBtn:{type:Boolean},input:{},button:{}},emits:[`update:modelValue`],setup(e,{emit:t,slots:r}){let i=e,a=(0,o.ref)(i.modelValue);(0,o.watch)(()=>i.modelValue,()=>{a.value=i.modelValue});let s=t,c=()=>{s(`update:modelValue`,a.value)};return(t,i)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,B,[(0,o.createVNode)(n.c,(0,o.mergeProps)(e.input,{onKeydownCapture:i[0]||=(0,o.withKeys)((0,o.withModifiers)(t=>a.value=e.modelValue,[`stop`]),[`esc`]),onKeydown:(0,o.withKeys)((0,o.withModifiers)(c,[`stop`]),[`enter`]),modelValue:a.value,"onUpdate:modelValue":i[1]||=e=>a.value=e}),(0,o.createSlots)({_:2},[r.caption?{name:`caption`,fn:(0,o.withCtx)(()=>[(0,o.renderSlot)(t.$slots,`caption`)]),key:`0`}:void 0]),1040,[`onKeydown`,`modelValue`]),a.value!==e.modelValue||e.alwaysShowSubmitBtn?((0,o.openBlock)(),(0,o.createBlock)(n.h,(0,o.mergeProps)({key:0,icon:``,styling:`soft`},e.button,{onClick:c}),null,16)):(0,o.createCommentVNode)(``,!0)]))}}),H=(0,o.defineComponent)({__name:`optionGroup`,props:(0,o.mergeModels)({modelValue:{},items:{},size:{default:`s`},showIndicator:{type:Boolean},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=(0,o.useModel)(e,`modelValue`),r=e,i=(0,o.ref)(null);(0,o.watch)(t,()=>{let e=r.items.map(e=>e.value);Array.isArray(t.value)?t.value.find(t=>!e.includes(t))&&(t.value=t.value.filter(t=>e.includes(t))):e.includes(t.value)||(t.value=e[0]??``),i.value?.querySelector(`.radioGroup_item-selected`)?.scrollIntoView()},{immediate:!0});let a=`optionGroup-`+Math.random();return(r,s)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{ref_key:`elRef`,ref:i,class:(0,o.normalizeClass)({"top-optionGroup":!0,[`top-optionGroup-showIndicator_`+Number(e.showIndicator)]:!0,"top-scrollBarXHidding":!0,[`top-size_`+e.size]:!!e.size,"top-error":e.isError})},[Array.isArray(t.value)?((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,{key:0},(0,o.renderList)(e.items,r=>((0,o.openBlock)(),(0,o.createBlock)(n.f,{class:(0,o.normalizeClass)({"top-optionGroup_item-selected":t.value.includes(r.value),"top-optionGroup_item":!0}),modelValue:t.value,"onUpdate:modelValue":s[0]||=e=>t.value=e,value:r.value,title:r.title,disabled:r.disabled,isError:e.isError,"data-top-icon":r.icon},(0,o.createSlots)({_:2},[r.label?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(r.label),1)]),key:`0`}:void 0]),1032,[`class`,`modelValue`,`value`,`title`,`disabled`,`isError`,`data-top-icon`]))),256)):((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,{key:1},(0,o.renderList)(e.items,r=>((0,o.openBlock)(),(0,o.createBlock)(n.a,{class:(0,o.normalizeClass)({"top-optionGroup_item-selected":r.value===t.value,"top-optionGroup_item":!0}),modelValue:t.value,"onUpdate:modelValue":s[1]||=e=>t.value=e,name:a,value:r.value,title:r.title,disabled:r.disabled,isError:e.isError,"data-top-icon":r.icon},(0,o.createSlots)({_:2},[r.label?{name:`default`,fn:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(r.label),1)]),key:`0`}:void 0]),1032,[`class`,`modelValue`,`value`,`title`,`disabled`,`isError`,`data-top-icon`]))),256))],2))}}),U=(0,o.defineComponent)({__name:`radioGroup`,props:(0,o.mergeModels)({modelValue:{},items:{},size:{},showIndicator:{type:Boolean},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,o.useModel)(e,`modelValue`);return(e,r)=>((0,o.openBlock)(),(0,o.createBlock)(H,{class:`top-radioGroup`,modelValue:n.value,"onUpdate:modelValue":r[0]||=e=>n.value=e,items:t.items,size:t.size,showIndicator:t.showIndicator,isError:t.isError},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(e.$slots,`default`)]),_:3},8,[`modelValue`,`items`,`size`,`showIndicator`,`isError`]))}}),W=(0,o.defineComponent)({__name:`checkboxGroup`,props:(0,o.mergeModels)({modelValue:{},items:{},size:{},showIndicator:{type:Boolean},isError:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,o.useModel)(e,`modelValue`);return(e,r)=>((0,o.openBlock)(),(0,o.createBlock)(H,{class:`top-checkboxGroup`,modelValue:n.value,"onUpdate:modelValue":r[0]||=e=>n.value=e,items:t.items,size:t.size,showIndicator:t.showIndicator,isError:t.isError},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(e.$slots,`default`)]),_:3},8,[`modelValue`,`items`,`size`,`showIndicator`,`isError`]))}}),G=[`data-top-icon`],K={class:`top-info_text`},q={key:0,class:`top-info_value`},J=(0,o.defineComponent)({__name:`info`,props:{icon:{},styling:{default:`default`},size:{default:`default`}},setup(e,{slots:t}){return(n,r)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:(0,o.normalizeClass)({"top-info":!0,[`top-size_`+e.size]:!0,[`top-info-styling_`+e.styling]:!0}),"data-top-icon":e.icon},[(0,o.createElementVNode)(`div`,K,[(0,o.renderSlot)(n.$slots,`default`)]),t.additional?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,q,[(0,o.renderSlot)(n.$slots,`additional`)])):(0,o.createCommentVNode)(``,!0)],10,G))}}),Y={key:0,class:`top-policy`},X={class:`top-policy_title`},Z=[`innerHTML`],Q=(0,o.defineComponent)({__name:`policy`,props:{title:{},description:{},acceptText:{}},emits:[`accept`],setup(e,{emit:t}){let r=t,i=(0,o.ref)(!0),a=()=>{i.value=!1,r(`accept`)};return(t,r)=>i.value?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,Y,[(0,o.createElementVNode)(`div`,X,(0,o.toDisplayString)(e.title),1),(0,o.createElementVNode)(`div`,{class:`top-policy_description`,innerHTML:e.description},null,8,Z),(0,o.createVNode)((0,o.unref)(n.h),{size:`m`,onClick:a},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.acceptText),1)]),_:1})])):(0,o.createCommentVNode)(``,!0)}});t.f=l,t.d=_,t.c=O,t.l=k,t.u=j,t.s=L,t.o=z,t.a=V,t.i=U,t.r=W,t.n=J,t.t=Q});
//# sourceMappingURL=formsExt-BZZEpY-a.amd.js.map

Sorry, the diff of this file is too big to display

/* start import css */
import { Core as _autoloadCSSCore } from '../core/app.js';
const fileNames = ['../assets/formsExt.css'].map(fileName => import.meta.resolve(fileName));
_autoloadCSSCore.insertCSSLinkToPage(fileNames, true);
/* end import css */
import "./api-BD74aA98.esm.js";
import { E as e, G as t, O as n, P as r, a as i, c as a, f as o, h as s, r as c, t as l } from "./forms-_4U0sLFk.esm.js";
import { t as u } from "./field-DEusYVqS.esm.js";
import { invertKeyboardLayout as d } from "../utils/keyboard.js";
import { a as f, o as p, s as m } from "./popup-DViuKwOc.esm.js";
import { Fragment as h, computed as g, createBlock as _, createCommentVNode as v, createElementBlock as y, createElementVNode as b, createSlots as x, createTextVNode as S, createVNode as C, defineComponent as w, mergeModels as T, mergeProps as E, normalizeClass as D, onMounted as O, onUnmounted as k, onUpdated as A, openBlock as j, ref as M, renderList as N, renderSlot as P, resolveComponent as ee, resolveDirective as F, resolveDynamicComponent as te, toDisplayString as I, triggerRef as L, unref as R, useModel as z, watch as B, withCtx as V, withDirectives as H, withKeys as U, withModifiers as W } from "vue";
//#region src/components/formsExt/menu/menu.vue?vue&type=script&setup=true&lang.ts
var G = {
key: 0,
class: "top-menu_selectAll"
}, K = /* @__PURE__ */ w({
__name: "menu",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
isMultiple: { type: Boolean },
canBeEmptyMultiple: { type: Boolean },
styling: { default: "default" },
selectAllItem: {}
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let r = e, i = z(e, "modelValue"), a = M();
!r.isMultiple && typeof i.value != "string" && typeof i.value != "number" && console.warn("Type check failed for prop \"modelValue\". Expected String: " + typeof i.value), r.isMultiple && !Array.isArray(i.value) && console.warn("Type check failed for prop \"modelValue\". Expected Array: " + typeof i.value), r.isMultiple && !r.canBeEmptyMultiple && Array.isArray(i.value) && !i.value.length && r.items[0] && (i.value = [r.items[0]?.href ?? r.items[0]?.value]);
let o = (e) => Array.isArray(i.value) ? i.value.includes(e.value) : e.value === i.value, c = (e, t = !1) => {
if (Array.isArray(i.value)) {
let n = i.value.slice();
if (t) {
n.length || (n = r.items.map((e) => e.value));
let t = n.indexOf(e.value);
t === -1 ? n.push(e.value) : n.splice(t, 1);
} else n = n.length === 1 && n[0] === e.value ? [] : [e.value];
!r.canBeEmptyMultiple && !n.length && (n = [e.value]), i.value = n;
return;
}
i.value = e.value;
}, l = (e) => {
if (a.value.scrollWidth <= a.value.offsetWidth || e.shiftKey || Math.abs(e.deltaY) < 50) return;
e.preventDefault();
let t = e.deltaY > 0 ? 30 : -30;
a.value.scrollLeft = a.value.scrollLeft + t;
}, u = (e = !0) => {
let r = a.value.querySelector(".top-active");
if (!r) return;
let i = r.offsetLeft - a.value.offsetLeft - 24, o = r.offsetLeft - a.value.offsetLeft + r.clientWidth + 24, s = a.value.scrollLeft, c = a.value.clientWidth + a.value.scrollLeft, l;
i < s && (l = i), o > c && (l = o - a.value.clientWidth), l !== void 0 && (t() ? n.$?.(a.value).animate({ scrollLeft: l }, e ? 200 : 0) : a.value.scrollTo({
left: l,
behavior: e ? "smooth" : "auto"
}));
}, d = () => {
if (Array.isArray(i.value)) {
if (i.value.length === r.items.length) {
i.value = [r.items[0].href ?? r.items[0].value];
return;
}
i.value = r.items.map((e) => e.href ?? e.value);
}
};
return O(() => u(!1)), A(() => u(!0)), (t, n) => (j(), y("div", {
ref_key: "el",
ref: a,
class: D({
"top-menu": !0,
["top-style_" + e.styling]: !0
}),
onWheel: l
}, [(j(!0), y(h, null, N(e.items, (e) => (j(), _(s, E({ ref_for: !0 }, e, {
class: "top-menu_item",
color: "theme",
onClick: (t) => c(e, t.ctrlKey || t.metaKey),
isActive: o(e)
}), x({ _: 2 }, [e.content ? {
name: "default",
fn: V(() => [S(I(e.content), 1)]),
key: "0"
} : void 0]), 1040, ["onClick", "isActive"]))), 256)), Array.isArray(i.value) && e.selectAllItem ? (j(), y("div", G, [C(s, E(e.selectAllItem, {
class: "top-menu_item",
color: "theme",
styling: "",
onClick: n[0] ||= (e) => d(),
isActive: i.value.length === e.items.length
}), x({ _: 2 }, [e.selectAllItem.content ? {
name: "default",
fn: V(() => [S(I(e.selectAllItem.content), 1)]),
key: "0"
} : void 0]), 1040, ["isActive"])])) : v("", !0)], 34));
}
}), ne = { class: "top-selector2_itemMulti top-ellipsis" }, re = /* @__PURE__ */ w({
__name: "itemMulti",
props: {
id: {},
name: {}
},
emits: ["delete"],
setup(e, { emit: t }) {
return (n, r) => (j(), y("div", ne, [S(I(e.name) + " ", 1), b("span", {
class: "top-selector2_itemMultiDelete",
"data-top-icon": "",
onClick: r[0] ||= (n) => t("delete", {
id: e.id,
name: e.name
}),
onMousedown: r[1] ||= W(() => {}, ["stop"])
}, null, 32)]));
}
}), q = /* @__PURE__ */ new Map(), J = /* @__PURE__ */ new Map(), Y = /* @__PURE__ */ new Map(), X = (e) => (Y.has(e) || Y.set(e, M(0)), Y.get(e)), Z = (e) => {
X(e).value++;
}, Q = (e) => {
q.get(e)?.clear(), Z(e);
}, $ = (e, t) => {
q.get(e)?.forEach((e) => t(e));
}, ie = (e, t) => {
J.get(e)?.forEach((e) => t(e));
}, ae = (e, t, n) => {
ie(e, (e) => {
let r = !1;
if (Array.isArray(e.value)) e.value.filter((e) => e.id === t).forEach((e) => {
Object.assign(e, n), r = !0;
});
else {
if (e.value.id !== t) return;
Object.assign(e.value, n), r = !0;
}
r && L(e);
});
}, oe = (e) => {
let t = window.mo?.user?.id;
return JSON.stringify(e.params) + ":" + e.url + ":" + t;
}, se = (e, t) => {
let n = q.get(t)?.get(e);
if (n) return n.result = n.result.map((e) => ({ ...e })), n;
}, ce = (e, t, n) => {
q.has(t) || q.set(t, /* @__PURE__ */ new Map()), q.get(t)?.set(e, n);
}, le = (e, t) => {
J.has(e) || J.set(e, /* @__PURE__ */ new Set()), J.get(e)?.add(t), k(() => J.get(e)?.delete(t));
}, ue = (e, t, n) => {
$(e, (e) => {
let r = e.result.find((e) => e.id === t);
r && Object.assign(r, n);
}), ae(e, t, n), Z(e);
}, de = (e, t) => {
$(e, (e) => {
let n = e.result.findIndex((e) => e.id === t);
n !== -1 && (e.result.splice(n, 1), e.nextOffset && e.nextOffset--);
}), ae(e, t, { name: "--" }), Z(e);
}, fe = (e, t, n, i, a) => {
let o = M([]), s = M(!1), c = M(0), l = "", u;
e && !e.params.limit && (e.params.limit = 100), e && le(e.path, a);
let d = () => {
if (!e) return;
e.params.offset = 0;
let t = se(oe(e), e.path);
if (!t) {
o.value = [], u = void 0;
return;
}
o.value = t.result, u = t.nextOffset;
};
e && i && B(X(e.path), () => {
d();
});
let f = async () => {
if (!e) return;
let t = i ? oe(e) : void 0;
if (t) {
let n = se(t, e.path);
if (n) return e.abortByFingerprint(), n;
}
let n = await e.call();
if (n.errors) return;
if (!Array.isArray(n.result)) {
console.warn("Array expected in `res.result`");
return;
}
let r = n.result.findIndex((e) => e.id === void 0 || e.name === void 0);
if (r !== -1) {
console.warn(`В result[${r}] нет id или name`);
return;
}
return t && ce(t, e.path, n), n;
}, p = async (n) => {
if (!e) return;
if (n) {
if (!u || s.value) return;
e.params.offset = u;
} else e.params.offset = 0;
t?.(e, l), s.value = !0;
let r = await f();
s.value = !1, c.value++, r && (u = r.nextOffset, n ? o.value = o.value.concat(r.result) : o.value = r.result);
}, m = r(() => p(!1), 200);
return {
apiRequest: e,
items: o,
isLoading: s,
countLoading: c,
load: p,
setSearchTextAndLoad: (t, r = !0) => {
if (e) {
if (t.length < n) {
e.abortByFingerprint(), o.value = [];
return;
}
t === l && o.value.length || (l = t, r ? m() : p(!1));
}
}
};
}, pe = 0, me = null, he = (e, t, n = !0) => n && t.id === null ? Array.isArray(e) ? e.some((e) => e.id === t.id && e.name === t.name) : t.name === e.name : Array.isArray(e) ? e.some((e) => e.id === t.id) : t.id === e.id, ge = (e, t, n) => {
let r = e.params.filters ?? [];
r = r.filter((e) => e.name !== n), t && r.push(u(n, "CONTAINS", [t])), e.changeParams({ filters: r });
}, _e = (t, n, r, i) => {
let a = M(""), o = {
id: 0,
name: e().Common.All
}, s = () => {
a.value = "";
}, c = () => !(!i.apiRequest || a.value.length >= n.minLength), l = g(() => {
let e = [];
return !n.multiselect && n.useAllItem && (typeof n.useAllItem == "string" && (o.name = n.useAllItem), e.push(o)), n.items?.forEach((t) => e.push(t)), e;
}), u = M([]), f = M(n.itemsChunkSize), p = () => {
u.value = _();
}, m = () => {
!n.itemsChunkSize || f.value === void 0 || (f.value += n.itemsChunkSize);
}, h = () => {
n.itemsChunkSize && (f.value = n.itemsChunkSize);
}, _ = () => {
let e = a.value.toLowerCase(), r = d(e), o = [], s, c = [], u = () => {
c.at(-1)?.listItemProps?.type === "delimiter" && c.pop(), c.length &&= (s && o.push(s), o.push(...c), 0);
}, p = (t) => {
let i = n.searchFields?.includes("id"), a = t.name.toLowerCase(), o = n.searchFields?.filter((e) => e !== "id").map((e) => typeof t[e] == "string" || typeof t[e] == "number" ? t[e] : "").join("☼").toLowerCase();
(i && t.id === Number(e) || o?.includes(e) || o?.includes(r)) && (a === e || a === r ? c.unshift(t) : c.push(t));
};
for (let e of l.value) switch (e.listItemProps?.type) {
case "title":
u(), s = e;
break;
case "delimiter":
if (c.length) {
let t = c.length;
c.at(-1)?.listItemProps?.type === "delimiter" && t--, c[t] = e;
}
break;
default: p(e);
}
if (u(), o.push(...i.items.value), n.itemsChunkSize && !i.apiRequest && (o = o.slice(0, f.value)), n.appendSearchToResult && a.value && (!n.appendSearchToResultCond || n.appendSearchToResultCond(e)) && (n.appendSearchAllowDuplicate || !o.find((t) => t.name.toLowerCase() === e))) {
let e = {
id: null,
name: a.value
};
n.appendWithoutSelect && (e.listItemProps = { closeByClick: !1 }), o.push(e);
}
return n.multiselect && (o = o.filter((e) => !he(t.value, e))), n.prepareItemsBeforeRender && (o = n.prepareItemsBeforeRender(o)), o;
}, v = (e) => {
e.listItemProps?.type === "title" || e.listItemProps?.type === "delimiter" || e.id === null && (r("appendItem", e), n.appendWithoutSelect) || (n.multiselect && Array.isArray(t.value) ? he(t.value, e) || (t.value = [...t.value, e]) : t.value = e, setTimeout(() => {
s();
}));
};
if (i.apiRequest) {
let e = [() => n.items, i.items];
n.multiselect && e.push(t), B(e, () => {
p();
}, { deep: 2 });
} else B(a, () => {
h();
}), B([
t,
() => n.items,
a,
f
], () => {
p();
}, {
immediate: !0,
deep: 2
}), B([() => n.items?.length ?? 0, () => n.items], (e, r) => {
(e[0] < r[0] || e[1] !== r[1]) && (Array.isArray(t.value) ? t.value : [t.value]).forEach((e) => {
e.id !== o.id && (n.items?.find((t) => t.id === e.id) || (e.name = "--"));
});
});
return {
searchText: a,
resetSearch: s,
genIsShort: c,
itemsForShow: u,
revelItemsForShow: m,
resetItemsForShow: h,
selectItem: v,
selectNextItem: () => {
if (Array.isArray(t.value)) return;
let e = u.value.filter((e) => !["title", "delimiter"].includes(e.listItemProps?.type ?? ""));
t.value = { ...e[(e.findIndex((e) => e.id === t.value.id) + 1) % e.length] };
},
deleteItemByItem: async (e) => {
Array.isArray(t.value) && (t.value = t.value.filter((t) => t.id !== e.id || t.name !== e.name));
}
};
}, ve = {
key: 0,
class: "top-selector2_activeItems"
}, ye = {
key: 1,
class: "top-selector2_activeName top-ellipsis"
}, be = {
key: 2,
class: "top-selector2_placeholder top-ellipsis"
}, xe = { class: "top-selector2_searchWidget" }, Se = /* @__PURE__ */ w({
__name: "selector2",
props: /*@__PURE__*/ T({
modelValue: {},
items: { default: () => [] },
itemsChunkSize: {},
itemsIsLoading: { type: Boolean },
title: {},
disabled: { type: Boolean },
icon: {},
modificator: {},
size: { default: "s" },
isError: { type: Boolean },
openByFocusInput: {
type: Boolean,
default: void 0
},
searchType: { default: "popup" },
searchFields: { default: () => ["id", "name"] },
placeholder: {},
hasCloserBtn: { type: Boolean },
prepareItemsBeforeRender: {},
api: {},
apiSetSearchParams: {},
minLength: { default: 0 },
useCache: { type: Boolean },
appendSearchToResult: { type: Boolean },
appendSearchAllowDuplicate: { type: Boolean },
appendSearchToResultCond: {},
appendWithoutSelect: { type: Boolean },
multiselect: { type: Boolean },
useAllItem: { type: [Boolean, String] },
addChanger: { type: Boolean },
buttonProps: {},
selectedAsPlaceholder: { type: Boolean },
openerShortcut: {}
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: /*@__PURE__*/ T(["appendItem", "open"], ["update:modelValue"]),
setup(e, { expose: t, emit: r, slots: i }) {
let a = e, o = z(e, "modelValue"), c = r, u = g(() => a.searchType === "inline" && a.multiselect || a.searchType === "inline" && n.state.isMobile ? "popup" : a.searchType), d = fe(a.api, a.apiSetSearchParams, a.minLength, a.useCache, o), w = _e(o, a, c, d), T = g(() => a.buttonProps ? "TopButton" : u.value === "inline" ? "TopInput" : "div"), D = M(null), O = M(null), k = () => D.value?.popup;
d.apiRequest && B(w.searchText, () => {
d.setSearchTextAndLoad(w.searchText.value);
});
let A = g(() => Array.isArray(o.value) || a.multiselect || !a.selectedAsPlaceholder && u.value !== "inline" ? a.placeholder : o.value?.name || a.placeholder), L = (e) => {
let t = !1;
switch (e.key) {
case "Delete":
case "Backspace":
Array.isArray(o.value) && (e.preventDefault(), e.stopPropagation(), o.value.pop());
break;
case "ArrowUp":
case "ArrowRight":
case "ArrowDown":
case "ArrowLeft":
case "Enter":
case " ":
t = !0;
break;
case "Escape":
u.value === "inline" && w.resetSearch();
break;
}
let n = e.key.length === 1 && !e.ctrlKey && !e.metaKey;
(u.value === "popup" || u.value === "inline") && n && (t = !0), k()?.elPopup && (t = !1), t && (u.value === "popup" && (e.preventDefault(), e.stopPropagation(), n && (w.searchText.value || (w.searchText.value = e.key))), e.currentTarget?.click());
}, U = (e) => {
e.preventDefault(), w.selectNextItem();
}, W = () => {
d.apiRequest && d.setSearchTextAndLoad(w.searchText.value, !1), c("open");
}, G = () => {
w.resetItemsForShow(), u.value === "popup" && w.searchText.value && w.resetSearch();
}, K = (e) => {
let t = e.target;
t.scrollTop / (t.scrollHeight - t.offsetHeight) > .8 && (a.api ? d.load(!0) : w.revelItemsForShow());
};
return t({
getPopup: k,
popupOpenerRef: O,
resetCache: (e = !1) => {
d.apiRequest && (e && Q(d.apiRequest.path), d.items.value = [], d.countLoading.value = 0, d.apiRequest.params.offset = 0, requestAnimationFrame(() => {
w.itemsForShow.value = [];
}), k()?.elPopup && d.setSearchTextAndLoad(w.searchText.value));
},
updateCacheItemById: (e, t) => {
d.apiRequest && ue(d.apiRequest.path, e, t);
},
deleteCacheItemById: (e) => {
d.apiRequest && de(d.apiRequest.path, e);
}
}), (t, r) => {
let a = ee("TopLoadbar"), c = F("top-focus"), g = F("top-shortcut");
return j(), _(R(m), {
ref_key: "popupRef",
ref: D,
onOpen: r[3] ||= (e) => W(),
onClose: r[4] ||= (e) => G(),
onScrollContentList: r[5] ||= (e) => K(e),
notch: !1,
transitionDuration: 0,
openByFocusInput: u.value === "inline" && (e.openByFocusInput ?? !0),
disabled: u.value === "inline" && R(w).genIsShort()
}, x({
opener: V(() => [H((j(), _(te(T.value), E({
ref_key: "popupOpenerRef",
ref: O
}, e.buttonProps, {
class: {
"top-selector2": !0,
"top-selector2-multiselect": e.multiselect,
["top-selector2-" + e.modificator]: !!e.modificator,
"top-as-input": !e.buttonProps && u.value !== "inline",
"top-as-selector": !0,
["top-size_" + e.size]: !0,
"top-disabled": e.disabled,
"top-forms-focusable": !e.disabled,
"top-error": e.isError
},
icon: e.icon,
tabindex: "0",
onKeydown: L,
onBlur: r[0] ||= (e) => u.value === "inline" && R(w).resetSearch(),
placeholder: A.value,
title: e.title,
captionType: u.value === "inline" && e.title !== void 0 ? "top" : void 0,
modelValue: R(w).searchText.value,
"onUpdate:modelValue": r[1] ||= (e) => R(w).searchText.value = e
}), {
default: V(() => [
e.multiselect ? (j(), y("div", ve, [(j(!0), y(h, null, N(o.value, (e) => (j(), _(re, {
key: e.id ?? void 0,
id: e.id,
name: e.name,
onDelete: R(w).deleteItemByItem
}, null, 8, [
"id",
"name",
"onDelete"
]))), 128))])) : v("", !0),
u.value !== "inline" && !e.multiselect ? (j(), y("span", ye, I(Array.isArray(o.value) ? "" : o.value.name), 1)) : v("", !0),
e.multiselect && !o.value.length ? (j(), y("span", be, I(A.value), 1)) : v("", !0),
e.addChanger && !e.buttonProps && !e.multiselect && R(w).itemsForShow.value.length > 1 && !e.disabled ? (j(), y("span", {
key: 3,
class: "top-changer top-changer-selector",
"data-top-popup-disabled": "true",
onClick: U
})) : v("", !0)
]),
_: 1
}, 16, [
"class",
"icon",
"placeholder",
"title",
"captionType",
"modelValue"
])), [[
c,
e.isError,
void 0,
{ onupdate: !0 }
], [g, e.openerShortcut]])]),
contentList: V(() => [
(j(!0), y(h, null, N(R(w).itemsForShow.value, (r) => (j(), _(R(p), E({
key: r.id ?? void 0,
class: {
"top-active": !Array.isArray(o.value) && !e.multiselect && o.value.id === r.id && o.value.name === r.name,
"top-selector2_item-all": r.id === R(0),
"top-selector2_item-new": r.id === R(null)
},
closeByClick: !e.multiselect || R(n).state.isMobile
}, { ref_for: !0 }, r.listItemProps, { onClick: (e) => R(w).selectItem(r) }), x({
default: V(() => [i.item ? P(t.$slots, "item", { item: r }, void 0, void 0, 0) : (j(), y(h, { key: 1 }, [S(I(r.name), 1)], 64))]),
_: 2
}, [i.actions ? {
name: "actions",
fn: V(() => [P(t.$slots, "actions", { item: r })]),
key: "0"
} : void 0]), 1040, [
"class",
"closeByClick",
"onClick"
]))), 128)),
!R(w).itemsForShow.value.length && !R(w).genIsShort() ? (j(), _(R(p), {
key: 0,
type: "regular"
}, {
default: V(() => [R(d).isLoading.value && !R(d).countLoading.value || e.itemsIsLoading ? (j(), _(R(l), {
key: 0,
type: "circles"
})) : (j(), y(h, { key: 1 }, [S(I(t.$i18n.Common.No_results), 1)], 64))]),
_: 1
})) : v("", !0),
R(d).countLoading.value && R(d).isLoading.value && u.value === "inline" ? (j(), _(a, { key: 1 })) : v("", !0)
]),
_: 2
}, [u.value === "popup" ? {
name: "widget",
fn: V(() => [b("div", xe, [H(C(R(f), {
title: "Поиск",
icon: "",
modelValue: R(w).searchText.value,
"onUpdate:modelValue": r[2] ||= (e) => R(w).searchText.value = e,
isLoading: !!R(d).countLoading.value && R(d).isLoading.value,
placeholder: A.value
}, null, 8, [
"modelValue",
"isLoading",
"placeholder"
]), [[
c,
o.value,
void 0,
{ onupdate: !0 }
]]), e.hasCloserBtn && !t.$core.state.isMobile ? (j(), _(R(s), {
key: 0,
class: "closer",
color: "theme"
}, {
default: V(() => [S(I(t.$i18n.Common.Cancel), 1)]),
_: 1
})) : v("", !0)])]),
key: "0"
} : void 0]), 1032, ["openByFocusInput", "disabled"]);
};
}
}), Ce = { class: "top-editArea_footer" }, we = /* @__PURE__ */ w({
__name: "editArea",
props: {
defaultValue: { default: "" },
title: {},
cancelText: { default: "Cancel" },
submitText: { default: "Send" },
closeText: { default: "Close" },
isFocused: { type: Boolean },
forceShowCloseBtn: { type: Boolean },
attachToKeyboard: { type: Boolean },
modelValue: {},
name: {},
placeholder: {},
styling: {},
rows: {},
minHeight: {},
expandable: {
type: Boolean,
default: !0
},
disabled: { type: Boolean },
readonly: { type: Boolean },
isError: { type: Boolean },
hint: {},
maxLength: {}
},
emits: [
"submit",
"close",
"clickOnTitle"
],
setup(e, { emit: t, slots: n }) {
let r = e, i = t, a = M(r.defaultValue), o = M(r.isFocused), l = g(() => a.value !== r.defaultValue), u = (e) => {
i("submit", e), a.value = r.defaultValue;
}, d = () => {
if (r.forceShowCloseBtn && !l.value) {
i("close");
return;
}
a.value = r.defaultValue;
}, f = () => {
r.attachToKeyboard && i("clickOnTitle");
};
return (t, r) => (j(), y("div", { class: D({
"top-editArea": !0,
"top-editArea-attachedToKeyboard": e.attachToKeyboard
}) }, [e.title || n.caption ? (j(), y("div", {
key: 0,
class: "top-editArea_caption",
onClick: r[0] ||= (e) => f()
}, [P(t.$slots, "caption", {}, () => [S(I(e.title), 1)])])) : v("", !0), b("div", { class: D({
"top-editArea_form": !0,
"top-forms-focusable": !0,
"top-as-input": !0,
"top-error": e.isError,
"top-focus": o.value
}) }, [C(c, {
modelValue: a.value,
"onUpdate:modelValue": r[1] ||= (e) => a.value = e,
name: e.name,
placeholder: e.placeholder,
rows: e.rows,
minHeight: e.minHeight,
expandable: e.expandable,
disabled: e.disabled,
readonly: e.readonly,
isError: e.isError,
hint: e.hint,
class: "top-editArea_element",
onFocus: r[2] ||= () => o.value = !0,
onBlur: r[3] ||= () => o.value = !1,
onKeyup: [U(d, ["esc"]), r[4] ||= U(W((e) => u(a.value), ["ctrl"]), ["enter"])]
}, null, 8, [
"modelValue",
"name",
"placeholder",
"rows",
"minHeight",
"expandable",
"disabled",
"readonly",
"isError",
"hint"
]), b("div", Ce, [l.value || e.forceShowCloseBtn ? (j(), _(s, {
key: 0,
icon: t.$core.state.isMobile ? "" : "",
class: "top-editArea_button",
color: "theme",
styling: "soft",
onClick: d
}, x({ _: 2 }, [t.$core.state.isMobile ? void 0 : {
name: "default",
fn: V(() => [S(I(e.cancelText), 1)]),
key: "0"
}]), 1032, ["icon"])) : v("", !0), l.value ? (j(), _(s, {
key: 1,
class: "top-editArea_button",
icon: t.$core.state.isMobile ? "" : "",
onClick: r[5] ||= (e) => u(a.value)
}, x({ _: 2 }, [t.$core.state.isMobile ? void 0 : {
name: "default",
fn: V(() => [S(I(e.submitText), 1)]),
key: "0"
}]), 1032, ["icon"])) : v("", !0)])], 2)], 2));
}
}), Te = { class: "top-editInput" }, Ee = /* @__PURE__ */ w({
__name: "editInput",
props: {
modelValue: {},
alwaysShowSubmitBtn: { type: Boolean },
input: {},
button: {}
},
emits: ["update:modelValue"],
setup(e, { emit: t, slots: n }) {
let r = e, i = M(r.modelValue);
B(() => r.modelValue, () => {
i.value = r.modelValue;
});
let o = t, c = () => {
o("update:modelValue", i.value);
};
return (t, r) => (j(), y("div", Te, [C(a, E(e.input, {
onKeydownCapture: r[0] ||= U(W((t) => i.value = e.modelValue, ["stop"]), ["esc"]),
onKeydown: U(W(c, ["stop"]), ["enter"]),
modelValue: i.value,
"onUpdate:modelValue": r[1] ||= (e) => i.value = e
}), x({ _: 2 }, [n.caption ? {
name: "caption",
fn: V(() => [P(t.$slots, "caption")]),
key: "0"
} : void 0]), 1040, ["onKeydown", "modelValue"]), i.value !== e.modelValue || e.alwaysShowSubmitBtn ? (j(), _(s, E({
key: 0,
icon: "",
styling: "soft"
}, e.button, { onClick: c }), null, 16)) : v("", !0)]));
}
}), De = /* @__PURE__ */ w({
__name: "optionGroup",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
size: { default: "s" },
showIndicator: { type: Boolean },
isError: { type: Boolean }
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let t = z(e, "modelValue"), n = e, r = M(null);
B(t, () => {
let e = n.items.map((e) => e.value);
Array.isArray(t.value) ? t.value.find((t) => !e.includes(t)) && (t.value = t.value.filter((t) => e.includes(t))) : e.includes(t.value) || (t.value = e[0] ?? ""), r.value?.querySelector(".radioGroup_item-selected")?.scrollIntoView();
}, { immediate: !0 });
let a = "optionGroup-" + Math.random();
return (n, s) => (j(), y("div", {
ref_key: "elRef",
ref: r,
class: D({
"top-optionGroup": !0,
["top-optionGroup-showIndicator_" + Number(e.showIndicator)]: !0,
"top-scrollBarXHidding": !0,
["top-size_" + e.size]: !!e.size,
"top-error": e.isError
})
}, [Array.isArray(t.value) ? (j(!0), y(h, { key: 0 }, N(e.items, (n) => (j(), _(o, {
class: D({
"top-optionGroup_item-selected": t.value.includes(n.value),
"top-optionGroup_item": !0
}),
modelValue: t.value,
"onUpdate:modelValue": s[0] ||= (e) => t.value = e,
value: n.value,
title: n.title,
disabled: n.disabled,
isError: e.isError,
"data-top-icon": n.icon
}, x({ _: 2 }, [n.label ? {
name: "default",
fn: V(() => [S(I(n.label), 1)]),
key: "0"
} : void 0]), 1032, [
"class",
"modelValue",
"value",
"title",
"disabled",
"isError",
"data-top-icon"
]))), 256)) : (j(!0), y(h, { key: 1 }, N(e.items, (n) => (j(), _(i, {
class: D({
"top-optionGroup_item-selected": n.value === t.value,
"top-optionGroup_item": !0
}),
modelValue: t.value,
"onUpdate:modelValue": s[1] ||= (e) => t.value = e,
name: a,
value: n.value,
title: n.title,
disabled: n.disabled,
isError: e.isError,
"data-top-icon": n.icon
}, x({ _: 2 }, [n.label ? {
name: "default",
fn: V(() => [S(I(n.label), 1)]),
key: "0"
} : void 0]), 1032, [
"class",
"modelValue",
"value",
"title",
"disabled",
"isError",
"data-top-icon"
]))), 256))], 2));
}
}), Oe = /* @__PURE__ */ w({
__name: "radioGroup",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
size: {},
showIndicator: { type: Boolean },
isError: { type: Boolean }
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let t = e, n = z(e, "modelValue");
return (e, r) => (j(), _(De, {
class: "top-radioGroup",
modelValue: n.value,
"onUpdate:modelValue": r[0] ||= (e) => n.value = e,
items: t.items,
size: t.size,
showIndicator: t.showIndicator,
isError: t.isError
}, {
default: V(() => [P(e.$slots, "default")]),
_: 3
}, 8, [
"modelValue",
"items",
"size",
"showIndicator",
"isError"
]));
}
}), ke = /* @__PURE__ */ w({
__name: "checkboxGroup",
props: /*@__PURE__*/ T({
modelValue: {},
items: {},
size: {},
showIndicator: { type: Boolean },
isError: { type: Boolean }
}, {
modelValue: { required: !0 },
modelModifiers: {}
}),
emits: ["update:modelValue"],
setup(e) {
let t = e, n = z(e, "modelValue");
return (e, r) => (j(), _(De, {
class: "top-checkboxGroup",
modelValue: n.value,
"onUpdate:modelValue": r[0] ||= (e) => n.value = e,
items: t.items,
size: t.size,
showIndicator: t.showIndicator,
isError: t.isError
}, {
default: V(() => [P(e.$slots, "default")]),
_: 3
}, 8, [
"modelValue",
"items",
"size",
"showIndicator",
"isError"
]));
}
}), Ae = ["data-top-icon"], je = { class: "top-info_text" }, Me = {
key: 0,
class: "top-info_value"
}, Ne = /* @__PURE__ */ w({
__name: "info",
props: {
icon: {},
styling: { default: "default" },
size: { default: "default" }
},
setup(e, { slots: t }) {
return (n, r) => (j(), y("div", {
class: D({
"top-info": !0,
["top-size_" + e.size]: !0,
["top-info-styling_" + e.styling]: !0
}),
"data-top-icon": e.icon
}, [b("div", je, [P(n.$slots, "default")]), t.additional ? (j(), y("span", Me, [P(n.$slots, "additional")])) : v("", !0)], 10, Ae));
}
}), Pe = {
key: 0,
class: "top-policy"
}, Fe = { class: "top-policy_title" }, Ie = ["innerHTML"], Le = /* @__PURE__ */ w({
__name: "policy",
props: {
title: {},
description: {},
acceptText: {}
},
emits: ["accept"],
setup(e, { emit: t }) {
let n = t, r = M(!0), i = () => {
r.value = !1, n("accept");
};
return (t, n) => r.value ? (j(), y("div", Pe, [
b("div", Fe, I(e.title), 1),
b("div", {
class: "top-policy_description",
innerHTML: e.description
}, null, 8, Ie),
C(R(s), {
size: "m",
onClick: i
}, {
default: V(() => [S(I(e.acceptText), 1)]),
_: 1
})
])) : v("", !0);
}
});
//#endregion
export { Ee as a, pe as c, Q as d, K as f, Oe as i, me as l, Ne as n, we as o, ke as r, Se as s, Le as t, ge as u };
//# sourceMappingURL=formsExt-BZZEpY-a.esm.js.map

Sorry, the diff of this file is too big to display

var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`../utils/dom.amd`,`../utils/system.amd`,`../utils/route.amd`,`vue`],function(e,t,r,i,a,o,s){"use strict";if(c===void 0)var c=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.s=t.r=t.o=t.n=t.i=t.a=void 0;var l=[`id`,`data-view-page-active`,`data-modal`,`data-position`],u=(0,s.defineComponent)({__name:`dialog`,props:{id:{},pageActive:{},width:{default:`600px`},height:{default:`auto`},modal:{type:Boolean,default:!0},position:{},historyType:{default:`push`},classes:{}},emits:[`open`,`close`],setup(e){let t=g(e.id);if(!t)throw Error(`TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()`);return(0,s.provide)(`dialogWorker`,t),(0,s.onMounted)(()=>{let e=(0,s.getCurrentInstance)(),n=e.parent;if(n?.parent?.type.name!==`DialogWrapper`)throw Error(`TopDialog cannot be used in a template, use useTopDialog()`);if(Array.isArray(n.subTree.children)&&n.subTree.children.length!==1)throw Error(`TopDialog can has only one root element`);t.onMounted(n,e)}),(0,s.watch)(t.isOpened,()=>{t.isReady.value=!0},{flush:`post`,once:!0}),(n,r)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{id:(0,s.unref)(t).idAttr,class:(0,s.normalizeClass)([`top-dialog`,e.classes]),style:(0,s.normalizeStyle)({"--top-dialog-width":e.width,"--top-dialog-height":e.height}),tabindex:`-1`,"data-view-page-active":(0,s.unref)(t).pageActive.value,"data-modal":e.modal,"data-position":e.position},[r[0]||=(0,s.createElementVNode)(`div`,{class:`modal-layer modal-layer-header`},null,-1),(0,s.createElementVNode)(`div`,{class:`modal-layer modal-layer-body`,style:(0,s.normalizeStyle)({"min-height":e.height+`px`})},null,4),(0,s.renderSlot)(n.$slots,`default`)],14,l))}}),d,f=class t{static init(e){if(this.inited)return;this.inited=!0,this.state.load=e?.load,this.state.decoratorOnCreate=e?.decoratorOnCreate;let n=e?.autoInitDelay??5e3;window.addEventListener(`hashchange`,e=>{this.opendDialogsFromChangeUrl(e.oldURL,e.newURL)}),this.opendDialogsFromChangeUrl(``,location.href),document.addEventListener(`mousedown`,async e=>{if(!(e.target instanceof HTMLElement))return;let n=e.target.closest(`a[data-to-view]`);if(!n)return;let r=`next`;n.dataset.action===`top-dialog-close`&&(r=`prev`),n.href=t.genViewPageHash(n.dataset.toView,r)}),document.addEventListener(`click`,async e=>{if(!(e.target instanceof HTMLElement))return;let n=e.target.closest(`[data-to-view]`);if(!n)return;if(n instanceof HTMLAnchorElement&&n.href===`.`){e.preventDefault();let t=new MouseEvent(`mousedown`,{bubbles:!0,cancelable:!0,view:window});n.dispatchEvent(t),setTimeout(()=>n.click());return}let r=await this.getDialogsUtils(),a=n.dataset.toView,s=a.split(`-`)[0],c=r.getElDialogById(s),l=`next`;if(c){let e=(0,i.querySelectorAllArray)(c,`.modal-layer`),t=e.reduce((e,t)=>{let n=t.querySelector(`:scope > .active`);return n&&e.push(n),e},[]);if(t.length){let n=a.split(`-`)[1].split(`:`)[0];(e.reduce((e,t)=>{let r=t?.querySelector(`:scope > [data-view-page="${n}"]`);return r&&e.push(r),e},[])[0]?.dataset.order??0)<(t[0]?.dataset.order??0)&&(l=`prev`)}}n.dataset.action===`top-dialog-close`&&(l=`prev`);let u=t.genViewPageHash(a,l);if(n instanceof HTMLAnchorElement){if(!c||!(0,i.isVisible)(c))return;if(location.hash.indexOf(a.replace(`-`,`=`))!==-1){await r.toViewDirty(a);return}}c?.dataset.toViewReplace?(e.preventDefault(),(0,o.historySetState)(!0,u),await r.toViewDirty(a),l==`next`?t.state.viewPageN++:t.state.viewPageN--):n.tagName!==`A`&&(this.compareStates(u,location.hash)?(0,o.historySetState)(!1,u):await r.toViewDirty(a))}),setTimeout(()=>this.getDialogsUtils(),n)}static opendDialogsFromChangeUrl(e,t){let n=e.replace(/.*?#/,`#`),r=t.replace(/.*?#/,`#`);this.compareStates(n,r)&&this.opendDialogsFromUrl()}static async getDialogsUtils(){let{TopDialogUtils:t}=await new Promise((t,n)=>{e([`./utils-Cou0pGI4.amd`],t,n)}).then(__importStar);return t}static getDialog(e){return e.closest(`.ui-dialog-content`)}static get$dialog(e){return e.closest(`.ui-dialog-content`)}static getPage(e){return e.closest(`[data-view-page]`)}static get$page(e){return e.closest(`[data-view-page]`)}static get$pairPage(e){let n=t.get$dialog(e),r=t.get$page(e).data(`view-page`);return $(`[data-view-page="`+r+`"]`,n)}static getPairPage(e){let n=t.getDialog(e);if(!n)return;let r=t.getPage(e)?.dataset.viewPage;return(0,i.querySelectorAllArray)(n,`[data-view-page="${r}"]`)}static close(e){let t=$(`#`+e);if(t.dialog(`instance`)){t.dialog(`close`);return}let n=document.getElementById(e);n instanceof HTMLDialogElement&&n.close()}static destroy(e){let t=$(`#`+e);if(t.dialog(`instance`)){t.dialog(`close`),t.dialog(`destroy`);return}let n=document.getElementById(e);n instanceof HTMLDialogElement&&n.close()}static genViewPageHash(e,t=`next`){let n=this.state.viewPageN;t==`prev`?n--:n++;let r=e.split(`-`),i=r.shift(),a=r.join(`-`),s=(0,o.genHash)(`vpn`,n);return s=(0,o.genHash)(`view-`+i,a,s),s}static compareStates(e,t){let n=e.match(/[#&]view-[^&]+/g)||[],r=t.match(/[#&]view-[^&]+/g)||[];return!!(n.length!==r.length||n.filter((e,t)=>e!==(r[t]||``)).length)}};t.s=u,t.o=f,d=f,(0,r.K)(f,`state`,{load:void 0,decoratorOnCreate:void 0,viewPageN:0}),(0,r.K)(f,`inited`,!1),(0,r.K)(f,`opendDialogsFromUrl`,async()=>{let e=Number((0,o.getHash)(`vpn`))||0,t=RegExp(`view-((\\w+)=([\\w-]+)(?::([\\w.:-]+))?)`,`g`).exec(location.hash);if(t){let n=`next`;return e<d.state.viewPageN&&(n=`prev`),(await d.getDialogsUtils()).toViewDirty(t[1],n)}return(0,i.querySelectorAllArray)(document,`.ui-dialog-content[data-view-page-active]`).filter(e=>(0,i.isVisible)(e)).forEach(e=>{let t=e.getAttribute(`id`);if(!t)throw`Диалоговое окно не содержит id`;(0,o.getHash)(`view-`+t)||$(e).dialog(`close`)}),d.state.viewPageN=e,!0});var p=class{constructor(e){(0,r.K)(this,`id`,void 0),(0,r.K)(this,`idAttr`,void 0),(0,r.K)(this,`Component`,void 0),(0,r.K)(this,`isMounted`,(0,s.ref)(!1)),(0,r.K)(this,`isReady`,(0,s.ref)(!1)),(0,r.K)(this,`isOpened`,(0,s.ref)(!1)),(0,r.K)(this,`pageActive`,(0,s.ref)(``)),(0,r.K)(this,`isLoadingPage`,(0,s.ref)(!1)),(0,r.K)(this,`pageActiveNext`,(0,s.ref)(``)),(0,r.K)(this,`props`,void 0),(0,r.K)(this,`emit`,void 0),(0,r.K)(this,`onCloseOnce`,void 0),this.id=e.id,this.idAttr=`dialog_`+e.id,this.Component=(0,s.markRaw)(e)}onMounted(e,t){this.isMounted.value=!0,this.props=e.props,this.emit=t.emit}async open(e=`main`,t,n=[],r,i){t&&await this.setProps(t),r&&(this.onCloseOnce=r),await(await f.getDialogsUtils()).toView(this.idAttr,e,n,i)}async openAsLink(e=`main`,t,n=[],r,i){t&&await this.setProps(t),r&&(this.onCloseOnce=r);let a=this.idAttr+`-`+e;(0,o.historySetState)(!1,f.genViewPageHash(a,i))}async close(){f.close(this.idAttr)}async destroy(){f.destroy(this.idAttr)}async setProps(e={}){this.isMounted||await(0,a.waitWhile)(()=>!this.props);for(let t in this.props)this.props[t]=e[t]}needShowPage(e){return this.isOpened.value?this.pageActive.value===e||this.pageActiveNext.value===e:!1}},m={class:`top-dialogs`,style:{display:`none`}},h=(0,s.shallowReactive)(new Map),g=e=>(e=e.replace(/^dialog_/,``),h.get(e)),_=e=>{if(!e?.id)throw console.log({TopDialogComponent:e}),Error(`Expected TopDialogComponent`);return h.has(e.id)||h.set(e.id,new p(e)),h.get(e.id)},v=(0,s.defineComponent)({name:`DialogWrapper`,__name:`dialogs`,setup(e){return(0,s.onUnmounted)(()=>{h.forEach(e=>e.destroy()),h.clear()}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,m,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(h),([e,t])=>((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(t.Component),{key:e}))),128))]))}}),y=class{constructor(e){(0,r.K)(this,`resolve`,void 0),(0,r.K)(this,`worker`,(0,s.ref)(null)),this.resolve=e}async get(){if(this.worker.value)return this.worker.value;let e=(await this.resolve()).default;this.worker.value=x(e);let t=this.worker.value;return await(0,a.waitWhile)(()=>!t.isMounted),t}async open(...e){await(await this.get()).open(...e)}async openAsLink(...e){(await this.get()).openAsLink(...e)}async close(...e){(await this.get()).close(...e)}async destroy(...e){(await this.get()).destroy(...e)}async setProps(...e){await(await this.get()).setProps(...e)}},b=()=>{let e=(0,s.getCurrentInstance)();if(e?.type?.id){let t=g(e.type.id);if(t)return t}return(0,s.inject)(`dialogWorker`)},x=e=>_(e);t.a=g,t.i=v,t.r=b,t.n=x,t.t=e=>new y(e)});
//# sourceMappingURL=utils-BtqYaMHp.amd.js.map
{"version":3,"sources":[".chunks/utils-BtqYaMHp.esm.js","../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/lib/worker.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue","../../src/components/dialog/dialog/composables/asyncDialogHandle.ts","../../src/components/dialog/dialog/composables/utils.ts"],"names":["k2","k","desc","m","o","v","\"default\"","ownKeys","ar","mod","result","i","vue","exports","O","vue_1","F","A","j","e","r","t","a","s","c","l","u","dom_js_1","d","route_js_1","require","resolve_1","reject_1","forms__4U0sLFk_esm_js_1","M","system_js_1","N","P","I","L","R","B","z"],"mappings":"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","sourcesContent":["var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\ndefine([\"require\", \"exports\", \"./forms-_4U0sLFk.esm.js\", \"../utils/dom.js\", \"../utils/system.js\", \"../utils/route.js\", \"vue\"], function (require, exports, forms__4U0sLFk_esm_js_1, dom_js_1, system_js_1, route_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = exports.s = exports.r = exports.o = exports.n = exports.i = exports.a = void 0;\n //#region src/components/dialog/dialog/dialog.vue?vue&type=script&setup=true&lang.ts\n var O = [\n \"id\",\n \"data-view-page-active\",\n \"data-modal\",\n \"data-position\"\n ], k = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"dialog\",\n props: {\n id: {},\n pageActive: {},\n width: { default: \"600px\" },\n height: { default: \"auto\" },\n modal: {\n type: Boolean,\n default: !0\n },\n position: {},\n historyType: { default: \"push\" },\n classes: {}\n },\n emits: [\"open\", \"close\"],\n setup(e) {\n let t = F(e.id);\n if (!t)\n throw Error(\"TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()\");\n return (0, vue_1.provide)(\"dialogWorker\", t), (0, vue_1.onMounted)(() => {\n let e = (0, vue_1.getCurrentInstance)(), n = e.parent;\n if (n?.parent?.type.name !== \"DialogWrapper\")\n throw Error(\"TopDialog cannot be used in a template, use useTopDialog()\");\n if (Array.isArray(n.subTree.children) && n.subTree.children.length !== 1)\n throw Error(\"TopDialog can has only one root element\");\n t.onMounted(n, e);\n }), (0, vue_1.watch)(t.isOpened, () => {\n t.isReady.value = !0;\n }, {\n flush: \"post\",\n once: !0\n }), (n, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n id: (0, vue_1.unref)(t).idAttr,\n class: (0, vue_1.normalizeClass)([\"top-dialog\", e.classes]),\n style: (0, vue_1.normalizeStyle)({\n \"--top-dialog-width\": e.width,\n \"--top-dialog-height\": e.height\n }),\n tabindex: \"-1\",\n \"data-view-page-active\": (0, vue_1.unref)(t).pageActive.value,\n \"data-modal\": e.modal,\n \"data-position\": e.position\n }, [\n r[0] ||= (0, vue_1.createElementVNode)(\"div\", { class: \"modal-layer modal-layer-header\" }, null, -1),\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"modal-layer modal-layer-body\",\n style: (0, vue_1.normalizeStyle)({ \"min-height\": e.height + \"px\" })\n }, null, 4),\n (0, vue_1.renderSlot)(n.$slots, \"default\")\n ], 14, O));\n }\n }), A, j = class e {\n static init(r) {\n if (this.inited)\n return;\n this.inited = !0, this.state.load = r?.load, this.state.decoratorOnCreate = r?.decoratorOnCreate;\n let i = r?.autoInitDelay ?? 5e3;\n window.addEventListener(\"hashchange\", (e) => {\n this.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n }), this.opendDialogsFromChangeUrl(\"\", location.href), document.addEventListener(\"mousedown\", async (t) => {\n if (!(t.target instanceof HTMLElement))\n return;\n let n = t.target.closest(\"a[data-to-view]\");\n if (!n)\n return;\n let r = \"next\";\n n.dataset.action === \"top-dialog-close\" && (r = \"prev\"), n.href = e.genViewPageHash(n.dataset.toView, r);\n }), document.addEventListener(\"click\", async (r) => {\n if (!(r.target instanceof HTMLElement))\n return;\n let i = r.target.closest(\"[data-to-view]\");\n if (!i)\n return;\n if (i instanceof HTMLAnchorElement && i.href === \".\") {\n r.preventDefault();\n let e = new MouseEvent(\"mousedown\", {\n bubbles: !0,\n cancelable: !0,\n view: window\n });\n i.dispatchEvent(e), setTimeout(() => i.click());\n return;\n }\n let a = await this.getDialogsUtils(), s = i.dataset.toView, c = s.split(\"-\")[0], l = a.getElDialogById(c), u = \"next\";\n if (l) {\n let e = (0, dom_js_1.querySelectorAllArray)(l, \".modal-layer\"), t = e.reduce((e, t) => {\n let n = t.querySelector(\":scope > .active\");\n return n && e.push(n), e;\n }, []);\n if (t.length) {\n let n = s.split(\"-\")[1].split(\":\")[0];\n (e.reduce((e, t) => {\n let r = t?.querySelector(`:scope > [data-view-page=\"${n}\"]`);\n return r && e.push(r), e;\n }, [])[0]?.dataset.order ?? 0) < (t[0]?.dataset.order ?? 0) && (u = \"prev\");\n }\n }\n i.dataset.action === \"top-dialog-close\" && (u = \"prev\");\n let d = e.genViewPageHash(s, u);\n if (i instanceof HTMLAnchorElement) {\n if (!l || !(0, dom_js_1.isVisible)(l))\n return;\n if (location.hash.indexOf(s.replace(\"-\", \"=\")) !== -1) {\n await a.toViewDirty(s);\n return;\n }\n }\n l?.dataset.toViewReplace ? (r.preventDefault(), (0, route_js_1.historySetState)(!0, d), await a.toViewDirty(s), u == \"next\" ? e.state.viewPageN++ : e.state.viewPageN--) : i.tagName !== \"A\" && (this.compareStates(d, location.hash) ? (0, route_js_1.historySetState)(!1, d) : await a.toViewDirty(s));\n }), setTimeout(() => this.getDialogsUtils(), i);\n }\n static opendDialogsFromChangeUrl(e, t) {\n let n = e.replace(/.*?#/, \"#\"), r = t.replace(/.*?#/, \"#\");\n this.compareStates(n, r) && this.opendDialogsFromUrl();\n }\n static async getDialogsUtils() {\n let { TopDialogUtils: e } = await new Promise((resolve_1, reject_1) => { require([\"./utils-Cou0pGI4.esm.js\"], resolve_1, reject_1); }).then(__importStar);\n return e;\n }\n static getDialog(e) {\n return e.closest(\".ui-dialog-content\");\n }\n static get$dialog(e) {\n return e.closest(\".ui-dialog-content\");\n }\n static getPage(e) {\n return e.closest(\"[data-view-page]\");\n }\n static get$page(e) {\n return e.closest(\"[data-view-page]\");\n }\n static get$pairPage(t) {\n let n = e.get$dialog(t), r = e.get$page(t).data(\"view-page\");\n return $(\"[data-view-page=\\\"\" + r + \"\\\"]\", n);\n }\n static getPairPage(t) {\n let r = e.getDialog(t);\n if (!r)\n return;\n let i = e.getPage(t)?.dataset.viewPage;\n return (0, dom_js_1.querySelectorAllArray)(r, `[data-view-page=\"${i}\"]`);\n }\n static close(e) {\n let t = $(\"#\" + e);\n if (t.dialog(\"instance\")) {\n t.dialog(\"close\");\n return;\n }\n let n = document.getElementById(e);\n n instanceof HTMLDialogElement && n.close();\n }\n static destroy(e) {\n let t = $(\"#\" + e);\n if (t.dialog(\"instance\")) {\n t.dialog(\"close\"), t.dialog(\"destroy\");\n return;\n }\n let n = document.getElementById(e);\n n instanceof HTMLDialogElement && n.close();\n }\n static genViewPageHash(e, t = \"next\") {\n let n = this.state.viewPageN;\n t == \"prev\" ? n-- : n++;\n let r = e.split(\"-\"), a = r.shift(), o = r.join(\"-\"), s = (0, route_js_1.genHash)(\"vpn\", n);\n return s = (0, route_js_1.genHash)(\"view-\" + a, o, s), s;\n }\n static compareStates(e, t) {\n let n = e.match(/[#&]view-[^&]+/g) || [], r = t.match(/[#&]view-[^&]+/g) || [];\n return !!(n.length !== r.length || n.filter((e, t) => e !== (r[t] || \"\")).length);\n }\n };\n exports.s = k;\n exports.o = j;\n A = j, (0, forms__4U0sLFk_esm_js_1.K)(j, \"state\", {\n load: void 0,\n decoratorOnCreate: void 0,\n viewPageN: 0\n }), (0, forms__4U0sLFk_esm_js_1.K)(j, \"inited\", !1), (0, forms__4U0sLFk_esm_js_1.K)(j, \"opendDialogsFromUrl\", async () => {\n let e = Number((0, route_js_1.getHash)(\"vpn\")) || 0, r = ( /* @__PURE__ */RegExp(\"view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)\", \"g\")).exec(location.hash);\n if (r) {\n let t = \"next\";\n return e < A.state.viewPageN && (t = \"prev\"), (await A.getDialogsUtils()).toViewDirty(r[1], t);\n }\n return (0, dom_js_1.querySelectorAllArray)(document, \".ui-dialog-content[data-view-page-active]\").filter((e) => (0, dom_js_1.isVisible)(e)).forEach((e) => {\n let t = e.getAttribute(\"id\");\n if (!t)\n throw \"Диалоговое окно не содержит id\";\n (0, route_js_1.getHash)(\"view-\" + t) || $(e).dialog(\"close\");\n }), A.state.viewPageN = e, !0;\n });\n //#endregion\n //#region src/components/dialog/dialog/composables/dialogHandle.ts\n var M = class {\n constructor(t) {\n (0, forms__4U0sLFk_esm_js_1.K)(this, \"id\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"idAttr\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"Component\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isMounted\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isReady\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isOpened\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"pageActive\", (0, vue_1.ref)(\"\")), (0, forms__4U0sLFk_esm_js_1.K)(this, \"isLoadingPage\", (0, vue_1.ref)(!1)), (0, forms__4U0sLFk_esm_js_1.K)(this, \"pageActiveNext\", (0, vue_1.ref)(\"\")), (0, forms__4U0sLFk_esm_js_1.K)(this, \"props\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"emit\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"onCloseOnce\", void 0), this.id = t.id, this.idAttr = \"dialog_\" + t.id, this.Component = (0, vue_1.markRaw)(t);\n }\n onMounted(e, t) {\n this.isMounted.value = !0, this.props = e.props, this.emit = t.emit;\n }\n async open(e = \"main\", t, n = [], r, i) {\n t && await this.setProps(t), r && (this.onCloseOnce = r), await (await j.getDialogsUtils()).toView(this.idAttr, e, n, i);\n }\n async openAsLink(e = \"main\", t, n = [], r, i) {\n t && await this.setProps(t), r && (this.onCloseOnce = r);\n let a = this.idAttr + \"-\" + e;\n (0, route_js_1.historySetState)(!1, j.genViewPageHash(a, i));\n }\n async close() {\n j.close(this.idAttr);\n }\n async destroy() {\n j.destroy(this.idAttr);\n }\n async setProps(e = {}) {\n this.isMounted || await (0, system_js_1.waitWhile)(() => !this.props);\n for (let t in this.props)\n this.props[t] = e[t];\n }\n needShowPage(e) {\n return this.isOpened.value ? this.pageActive.value === e || this.pageActiveNext.value === e : !1;\n }\n }, N = {\n class: \"top-dialogs\",\n style: { display: \"none\" }\n }, P = (0, vue_1.shallowReactive)(/* @__PURE__ */ new Map()), F = (e) => (e = e.replace(/^dialog_/, \"\"), P.get(e)), I = (e) => {\n if (!e?.id)\n throw console.log({ TopDialogComponent: e }), Error(\"Expected TopDialogComponent\");\n return P.has(e.id) || P.set(e.id, new M(e)), P.get(e.id);\n }, L = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"DialogWrapper\",\n __name: \"dialogs\",\n setup(e) {\n return (0, vue_1.onUnmounted)(() => {\n P.forEach((e) => e.destroy()), P.clear();\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", N, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)((0, vue_1.unref)(P), ([e, t]) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.resolveDynamicComponent)(t.Component), { key: e }))), 128))]));\n }\n }), R = class {\n constructor(t) {\n (0, forms__4U0sLFk_esm_js_1.K)(this, \"resolve\", void 0), (0, forms__4U0sLFk_esm_js_1.K)(this, \"worker\", (0, vue_1.ref)(null)), this.resolve = t;\n }\n async get() {\n if (this.worker.value)\n return this.worker.value;\n let e = (await this.resolve()).default;\n this.worker.value = B(e);\n let t = this.worker.value;\n return await (0, system_js_1.waitWhile)(() => !t.isMounted), t;\n }\n async open(...e) {\n await (await this.get()).open(...e);\n }\n async openAsLink(...e) {\n (await this.get()).openAsLink(...e);\n }\n async close(...e) {\n (await this.get()).close(...e);\n }\n async destroy(...e) {\n (await this.get()).destroy(...e);\n }\n async setProps(...e) {\n await (await this.get()).setProps(...e);\n }\n }, z = () => {\n let e = (0, vue_1.getCurrentInstance)();\n if (e?.type?.id) {\n let t = F(e.type.id);\n if (t)\n return t;\n }\n return (0, vue_1.inject)(\"dialogWorker\");\n }, B = (e) => I(e), V = (e) => new R(e);\n exports.a = F;\n exports.i = L;\n exports.r = z;\n exports.n = B;\n exports.t = V;\n});\n//# sourceMappingURL=utils-BtqYaMHp.esm.js.map\n","<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t'--top-dialog-width': width,\n\t\t\t'--top-dialog-height': height,\n\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","import { genHash, getHash, historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogOpener, ElTopDialogPage, MoveDirection, TopDialogOptions } from './types';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\nimport type { $el } from '@/components/types';\n\nexport abstract class TopDialogWorker {\n\tstatic state = {\n\t\tload: undefined as TopDialogOptions['load'] | undefined,\n\t\tdecoratorOnCreate: undefined as TopDialogOptions['decoratorOnCreate'] | undefined,\n\n\t\t/**\n\t\t * Порядковый номер перехода в диалоговых окнах\n\t\t *\n\t\t * Для расчета анимации Вперед / Назад\n\t\t */\n\t\tviewPageN: 0,\n\t};\n\n\tprivate static inited = false;\n\n\t/**\n\t * Инициировать события слежения за парамтерами url\n\t *\n\t * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу\n\t */\n\tstatic init(options?: TopDialogOptions) {\n\t\tif (this.inited) return;\n\t\tthis.inited = true;\n\n\t\tthis.state.load = options?.load;\n\t\tthis.state.decoratorOnCreate = options?.decoratorOnCreate;\n\n\t\tconst autoInitDelay = options?.autoInitDelay ?? 5000;\n\n\t\twindow.addEventListener('hashchange', (e) => {\n\t\t\tthis.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n\t\t});\n\n\t\tthis.opendDialogsFromChangeUrl('', location.href);\n\n\t\t/**\n\t\t * Сгенерировать ссылку для перехода к странице диалогового окна\n\t\t */\n\t\tdocument.addEventListener('mousedown', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener<HTMLAnchorElement>>('a[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// const toView = el.dataset.toView;\n\t\t\t// const viewName = toView.split('-')[0];\n\t\t\t// const $toDialog = $('#' + viewName);\n\t\t\t// const $modalLayers = $('> .modal-layer', $toDialog);\n\t\t\t// const $currentPage = $('> .active', $modalLayers);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\t// /**\n\t\t\t// * Данный алгоритм определения направления работает не корректно, так как для чтения свойства order менят состояние через getDialogsUtils()\n\t\t\t// */\n\t\t\t// if ($currentPage.length) {\n\t\t\t// \tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t//\n\t\t\t// \tconst TopDialogUtils = await this.getDialogsUtils();\n\t\t\t//\n\t\t\t// \tawait TopDialogUtils.updatePageVue(viewName, undefined, pageName);\n\t\t\t//\n\t\t\t// \tconst $nextPage = $('> [data-view-page=\"' + pageName + '\"]', $modalLayers);\n\t\t\t// \tif ($nextPage.data('order') < $currentPage.data('order')) moveDirection = 'prev';\n\t\t\t// }\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tel.href = TopDialogWorker.genViewPageHash(el.dataset.toView, moveDirection);\n\t\t});\n\n\t\t/**\n\t\t * Осуществить переход по ссылке с учетом historyType\n\t\t */\n\t\tdocument.addEventListener('click', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener>('[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// Подождать генерацию ссылки\n\t\t\tif (el instanceof HTMLAnchorElement && el.href === '.') {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tconst mouseEvent = new MouseEvent('mousedown', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t\tview: window,\n\t\t\t\t});\n\n\t\t\t\tel.dispatchEvent(mouseEvent);\n\n\t\t\t\tsetTimeout(() => el.click());\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\tconst toView = el.dataset.toView;\n\t\t\tconst viewName = toView.split('-')[0];\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\tif (elDialog) {\n\t\t\t\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\t\t\t\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\tconst elCurrentPage = el.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\t\t\t\tif (elCurrentPage) acc.push(elCurrentPage);\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, []);\n\n\t\t\t\tif (elCurrentPages.length) {\n\t\t\t\t\tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t\t\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\t\tconst elNextPage = el?.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\n\t\t\t\t\t\tif (elNextPage) acc.push(elNextPage);\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, []);\n\n\t\t\t\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, moveDirection);\n\n\t\t\tif (el instanceof HTMLAnchorElement) {\n\t\t\t\t// диалоговое окно еще не открыто, произвести переход по ссылке\n\t\t\t\tif (!elDialog || !isVisible(elDialog)) return;\n\n\t\t\t\t// в адресе уже указана эта страница, необходимо явно запросить ее открытие\n\t\t\t\tif (location.hash.indexOf(toView.replace('-', '=')) !== -1) {\n\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst replaceHistory = !!elDialog?.dataset.toViewReplace;\n\n\t\t\tif (replaceHistory) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thistorySetState(true, hash);\n\n\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\tif (moveDirection == 'next') {\n\t\t\t\t\tTopDialogWorker.state.viewPageN++;\n\t\t\t\t} else {\n\t\t\t\t\tTopDialogWorker.state.viewPageN--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.tagName !== 'A') {\n\t\t\t\t\tif (this.compareStates(hash, location.hash)) {\n\t\t\t\t\t\thistorySetState(false, hash);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => this.getDialogsUtils(), autoInitDelay);\n\t}\n\n\tprivate static opendDialogsFromChangeUrl(oldUrl: string, newUrl: string) {\n\t\tconst oldHash = oldUrl.replace(/.*?#/, '#');\n\t\tconst newHash = newUrl.replace(/.*?#/, '#');\n\n\t\tconst dialogsStateChanged = this.compareStates(oldHash, newHash);\n\t\tif (dialogsStateChanged) void this.opendDialogsFromUrl();\n\t}\n\n\tstatic async getDialogsUtils() {\n\t\tconst { TopDialogUtils } = await import('./utils');\n\n\t\treturn TopDialogUtils;\n\t}\n\n\tstatic getDialog(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialog>('.ui-dialog-content');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getDialog()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$dialog($el: $el) {\n\t\treturn $el.closest('.ui-dialog-content');\n\t};\n\n\tstatic getPage(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialogPage>('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$page($el: $el) {\n\t\treturn $el.closest('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPairPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$pairPage($el: $el) {\n\t\tconst $dialog = TopDialogWorker.get$dialog($el);\n\n\t\tconst $page = TopDialogWorker.get$page($el);\n\t\tconst pageName = $page.data('view-page');\n\n\t\treturn $('[data-view-page=\"' + pageName + '\"]', $dialog);\n\t};\n\n\tstatic getPairPage(el: HTMLElement) {\n\t\tconst elDialog = TopDialogWorker.getDialog(el);\n\t\tif (!elDialog) return;\n\n\t\tconst elPage = TopDialogWorker.getPage(el);\n\t\tconst pageName = elPage?.dataset.viewPage;\n\n\t\treturn querySelectorAllArray(elDialog, `[data-view-page=\"${pageName}\"]`);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t */\n\tstatic close(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tstatic destroy(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\t\t\t$dialog.dialog('destroy');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Сгенерировать ссылку на страницу в диалоговом окне\n\t * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}\n\t * @param moveDirection\n\t */\n\tstatic genViewPageHash(toView: string, moveDirection: MoveDirection = 'next') {\n\t\tlet toViewPageN = this.state.viewPageN;\n\t\tif (moveDirection == 'prev') {\n\t\t\ttoViewPageN--;\n\t\t} else {\n\t\t\ttoViewPageN++;\n\t\t}\n\n\t\tconst viewNameAndPageLink = toView.split('-');\n\t\tconst viewName = viewNameAndPageLink.shift();\n\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\tlet hash = genHash('vpn', toViewPageN);\n\t\thash = genHash('view-' + viewName, pageLink, hash);\n\n\t\treturn hash;\n\t};\n\n\t/**\n\t * Сравнить версию открытых диалоговых окон\n\t * @returns вернет true, если состояния открытых окон изменилось\n\t */\n\tstatic compareStates(hash: string, hash2: string) {\n\t\tconst mathes = hash.match(/[#&]view-[^&]+/g) || [];\n\t\tconst mathes2 = hash2.match(/[#&]view-[^&]+/g) || [];\n\n\t\tif (mathes.length !== mathes2.length) return true;\n\n\t\tconst mathesChanged = mathes.filter((math, n) => {\n\t\t\tconst math2 = mathes2[n] || '';\n\n\t\t\treturn math !== math2;\n\t\t});\n\n\t\tif (mathesChanged.length) return true;\n\n\t\treturn false;\n\t};\n\n\tstatic opendDialogsFromUrl = async () => {\n\t\tconst toViewPageN = Number(getHash('vpn')) || 0;\n\n\t\t// Открыть диалоговое окно\n\t\t// const regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)' + '(' + Math.random() + ')?', 'g'); // fix babel minify regexp\n\t\tconst regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)', 'g');\n\t\tconst view = regexp.exec(location.hash);\n\n\t\tif (view) {\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\t\t\tif (toViewPageN < this.state.viewPageN) moveDirection = 'prev';\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\treturn TopDialogUtils.toViewDirty(view[1], moveDirection);\n\t\t}\n\n\t\t// Закрыть ненужные view\n\t\tconst elDialogs = querySelectorAllArray(document, '.ui-dialog-content[data-view-page-active]') as HTMLDialogElement[];\n\t\telDialogs.filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t}).forEach((elDialog) => {\n\t\t\tconst viewName = elDialog.getAttribute('id');\n\t\t\tif (!viewName) throw 'Диалоговое окно не содержит id';\n\t\t\tconst pageName = getHash('view-' + viewName);\n\t\t\tif (!pageName) {\n\t\t\t\tconst $dialog = $(elDialog);\n\n\t\t\t\t$dialog.dialog('close');\n\t\t\t}\n\t\t});\n\n\t\tthis.state.viewPageN = toViewPageN;\n\n\t\treturn true;\n\t};\n}\n","import { type ComponentInstance, type ComponentInternalInstance, markRaw, ref } from 'vue';\nimport { waitWhile } from '@/core/utils/system';\nimport TopDialog from '../dialog.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { MoveDirection } from '@/components/dialog/lib/types';\nimport type { TopDialogComponent } from './types';\nimport { historySetState } from '@/core/utils/route';\n\n/**\n * Объект для работы с диалоговым окном\n *\n * Каждое окно уникально и может быть открыто одновременно только один раз\n *\n * Можно определить много окон, после чего с ними можно вести работу в любой части приложения\n */\nexport class TopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Индентификатор, определяется на уровне компонента TopDialogComponent\n\t *\n\t * Может использоваться в навигации для открытия нужных окон с нужными настройками\n\t */\n\tid: string;\n\n\t/**\n\t * ID, используемый в верстке диалогового окна\n\t */\n\tidAttr: string;\n\n\t/**\n\t * Пользовательский компонент диалогового окна\n\t */\n\tComponent: T;\n\n\t/**\n\t * Компонент инициирован\n\t *\n\t * Устанавливается после первого вызова useTopDialog()\n\t */\n\tisMounted = ref(false);\n\n\t/**\n\t * Компонент готов к использованию\n\t *\n\t * Используется для внутренних преобразований после отрисовки\n\t */\n\tisReady = ref(false);\n\n\t/**\n\t * Диалоговое окно открыто\n\t */\n\tisOpened = ref(false);\n\n\t/**\n\t * Имя активной страницы дилогового окна\n\t */\n\tpageActive = ref('');\n\n\t/**\n\t * Диалоговое окно находится в состоянии загрузки своей страницы\n\t */\n\tisLoadingPage = ref(false);\n\n\t/**\n\t * Следующая активная страница\n\t *\n\t * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию\n\t */\n\tpageActiveNext = ref('');\n\n\t/**\n\t * props компонента, доступны после инициализации\n\t */\n\tprops?: ComponentInstance<T>['$props'];\n\n\t/**\n\t * emit базового компонента `TopDialog`\n\t */\n\temit?: ComponentInstance<typeof TopDialog>['$emit'];\n\n\t/**\n\t * Одноразовое событие на закрытие диалогового окна\n\t *\n\t * Используется для привязки окна к сценариям использования\n\t */\n\tonCloseOnce?: (props: typeof this.props, pageName: string) => void;\n\n\tconstructor(TopDialogComponent: T) {\n\t\tthis.id = TopDialogComponent.id!;\n\t\tthis.idAttr = 'dialog_' + TopDialogComponent.id;\n\t\tthis.Component = markRaw(TopDialogComponent);\n\t}\n\n\t/**\n\t * Событие - компонент инициирован\n\t */\n\tonMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance) {\n\t\tthis.isMounted.value = true;\n\t\tthis.props = topDialogComponent.props;\n\t\tthis.emit = topDialogBaseComponent.emit;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t *\n\t * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента\n\t */\n\tasync open(pageName: string = 'main', props?: Record<string, unknown>, args: [] = [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst TopDialogUtils = await TopDialogWorker.getDialogsUtils();\n\n\t\tawait TopDialogUtils.toView(this.idAttr, pageName, args, moveDirection);\n\t};\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader\n\t */\n\tasync openAsLink(\n\t\tpageName: string = 'main',\n\t\tprops?: Record<string, unknown>,\n\t\t_args: string[] = [],\n\t\tonCloseOnce?: typeof this.onCloseOnce,\n\t\tmoveDirection?: MoveDirection,\n\t) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst viewName = this.idAttr + '-' + pageName;\n\n\t\tconst hash = TopDialogWorker.genViewPageHash(viewName, moveDirection);\n\t\thistorySetState(false, hash);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close() {\n\t\tTopDialogWorker.close(this.idAttr);\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tasync destroy() {\n\t\tTopDialogWorker.destroy(this.idAttr);\n\t}\n\n\t/**\n\t * Устанвоить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(props: ComponentInstance<T>['$props'] = {}) {\n\t\t// ожидание инициализации компонента\n\t\tif (!this.isMounted) {\n\t\t\tawait waitWhile(() => !this.props);\n\t\t}\n\n\t\tfor (const name in this.props) {\n\t\t\tthis.props[name] = props[name];\n\t\t}\n\t}\n\n\t/**\n\t * Проверить, есть ли необходимость отрисовки страницы диалогового окна\n\t */\n\tneedShowPage(pageName: string): boolean {\n\t\tif (!this.isOpened.value) return false;\n\n\t\treturn this.pageActive.value === pageName || this.pageActiveNext.value === pageName;\n\t}\n\n}\n","<script lang=\"ts\">\nimport { shallowReactive } from 'vue';\nimport { TopDialogHandle } from '@/components/dialog/dialog/composables/dialogHandle';\nimport type { TopDialogComponent } from '@/components/dialog/dialog/composables/types';\n\n/**\n * Словарь всех используемых диалоговых окон\n *\n * В других компонентах не использовать\n */\nconst dialogsWorkers = shallowReactive(new Map<string, TopDialogHandle<TopDialogComponent>>());\n\n/**\n * Получить компонент диалогового окна по id\n */\nexport const getDialogWorker = (id: string) => {\n\tid = id.replace(/^dialog_/, '');\n\n\treturn dialogsWorkers.get(id);\n};\n\n/**\n * Добавить компонент диалогового окна для использования\n */\nexport const addDialogWorker = <T extends TopDialogComponent>(TopDialogComponent: T): TopDialogHandle<T> => {\n\tif (!TopDialogComponent?.id) {\n\t\tconsole.log({ TopDialogComponent: TopDialogComponent });\n\n\t\tthrow new Error('Expected TopDialogComponent');\n\t}\n\n\tif (!dialogsWorkers.has(TopDialogComponent.id)) {\n\t\tdialogsWorkers.set(TopDialogComponent.id, new TopDialogHandle(TopDialogComponent));\n\t}\n\n\treturn dialogsWorkers.get(TopDialogComponent.id) as TopDialogHandle<T>;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { onUnmounted } from 'vue';\n\ndefineOptions({\n\tname: 'DialogWrapper',\n});\n\nonUnmounted(() => {\n\tdialogsWorkers.forEach(dialog => dialog.destroy());\n\tdialogsWorkers.clear();\n});\n</script>\n\n<template>\n\t<div class=\"top-dialogs\" style=\"display: none;\">\n\t\t<component\n\t\t\tv-for=\"[dialogId, dialog] in dialogsWorkers\"\n\t\t\t:is=\"dialog.Component\"\n\t\t\t:key=\"dialogId\"\n\t\t/>\n\t</div>\n</template>\n","import type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { useTopDialog } from './utils';\nimport { waitWhile } from '@/core/utils/system';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { TopDialogHandle } from './dialogHandle';\n\n/**\n * Объект для работы с асинхронным диалоговым окном\n *\n * Является прослойкой для доступа к TopDialogHandle\n */\nexport class AsyncTopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Функция, определяющая компонент TopDialogComponent\n\t */\n\treadonly resolve: AsyncTopDialogComponentLoader<T>;\n\n\t/**\n\t * Реактивная Сссылка на объект worker,\n\t *\n\t * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено\n\t */\n\treadonly worker: Ref<TopDialogHandle<T> | null> = ref(null);\n\n\tconstructor(resolve: AsyncTopDialogComponentLoader<T>) {\n\t\tthis.resolve = resolve;\n\t}\n\n\t/**\n\t * Получить доступ к TopDialogHandle\n\t */\n\tasync get() {\n\t\tif (this.worker.value) return this.worker.value;\n\n\t\tconst result = await this.resolve();\n\t\tconst TopDialogComponent = result.default;\n\n\t\tthis.worker.value = useTopDialog(TopDialogComponent);\n\n\t\tconst worker = this.worker.value;\n\n\t\tawait waitWhile(() => !worker.isMounted);\n\n\t\treturn worker;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t */\n\tasync open(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.open(...args);\n\t}\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Только общедоступные диалоговые окна, расположенные в @/dialogs\n\t */\n\tasync openAsLink(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tvoid worker.openAsLink(...args);\n\t}\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.close(...args);\n\t}\n\n\t/**\n\t * Размонтировать виджет диалогового окна\n\t */\n\tasync destroy(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.destroy(...args);\n\t}\n\n\t/**\n\t * Установить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(...args: Parameters<TopDialogHandle<T>['setProps']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.setProps(...args);\n\t}\n}\n","import { getCurrentInstance, inject } from 'vue';\nimport { TopDialogHandle } from './dialogHandle';\nimport { AsyncTopDialogHandle } from './asyncDialogHandle';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { addDialogWorker, getDialogWorker } from '../dialogs/dialogs.vue';\n\n/**\n * Получить объект управленя текущим диалоговым окном\n */\nexport const useTopDialogSelf = () => {\n\t// вызов из пользовтаельского компонента диалога\n\tconst topDialogComponent = getCurrentInstance() as any;\n\tif (topDialogComponent?.type?.id) {\n\t\tconst dialogWorker = getDialogWorker(topDialogComponent.type.id);\n\t\tif (dialogWorker) return dialogWorker;\n\t}\n\n\treturn inject('dialogWorker') as TopDialogHandle<TopDialogComponent>;\n};\n\n/**\n * Получить объект управленя диалоговым окном\n *\n * При первом вызове компонент диалогового окна будет внедрен в компонент DialogWrapper\n */\nexport const useTopDialog = <T extends TopDialogComponent>(DialogComponent: T): TopDialogHandle<T> => {\n\treturn addDialogWorker(DialogComponent);\n};\n\n/**\n * Получить объект управленя асинхронным диалоговым окном\n *\n * Компонент диалогового окна будет загружен и инициирован при первом взаимодействии с объектом\n *\n * Использует useTopDialog()\n */\nexport const useAsyncTopDialog = <T extends TopDialogComponent>(resolve: AsyncTopDialogComponentLoader<T>): AsyncTopDialogHandle<T> => {\n\treturn new AsyncTopDialogHandle(resolve);\n};\n"]}
import { K as e } from "./forms-_4U0sLFk.esm.js";
import { isVisible as t, querySelectorAllArray as n } from "../utils/dom.js";
import { waitWhile as r } from "../utils/system.js";
import { genHash as i, getHash as a, historySetState as o } from "../utils/route.js";
import { Fragment as s, createBlock as c, createElementBlock as l, createElementVNode as u, defineComponent as d, getCurrentInstance as f, inject as p, markRaw as m, normalizeClass as h, normalizeStyle as g, onMounted as _, onUnmounted as v, openBlock as y, provide as b, ref as x, renderList as S, renderSlot as C, resolveDynamicComponent as w, shallowReactive as T, unref as E, watch as D } from "vue";
//#region src/components/dialog/dialog/dialog.vue?vue&type=script&setup=true&lang.ts
var O = [
"id",
"data-view-page-active",
"data-modal",
"data-position"
], k = /* @__PURE__ */ d({
__name: "dialog",
props: {
id: {},
pageActive: {},
width: { default: "600px" },
height: { default: "auto" },
modal: {
type: Boolean,
default: !0
},
position: {},
historyType: { default: "push" },
classes: {}
},
emits: ["open", "close"],
setup(e) {
let t = F(e.id);
if (!t) throw Error("TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()");
return b("dialogWorker", t), _(() => {
let e = f(), n = e.parent;
if (n?.parent?.type.name !== "DialogWrapper") throw Error("TopDialog cannot be used in a template, use useTopDialog()");
if (Array.isArray(n.subTree.children) && n.subTree.children.length !== 1) throw Error("TopDialog can has only one root element");
t.onMounted(n, e);
}), D(t.isOpened, () => {
t.isReady.value = !0;
}, {
flush: "post",
once: !0
}), (n, r) => (y(), l("div", {
id: E(t).idAttr,
class: h(["top-dialog", e.classes]),
style: g({
"--top-dialog-width": e.width,
"--top-dialog-height": e.height
}),
tabindex: "-1",
"data-view-page-active": E(t).pageActive.value,
"data-modal": e.modal,
"data-position": e.position
}, [
r[0] ||= u("div", { class: "modal-layer modal-layer-header" }, null, -1),
u("div", {
class: "modal-layer modal-layer-body",
style: g({ "min-height": e.height + "px" })
}, null, 4),
C(n.$slots, "default")
], 14, O));
}
}), A, j = class e {
static init(r) {
if (this.inited) return;
this.inited = !0, this.state.load = r?.load, this.state.decoratorOnCreate = r?.decoratorOnCreate;
let i = r?.autoInitDelay ?? 5e3;
window.addEventListener("hashchange", (e) => {
this.opendDialogsFromChangeUrl(e.oldURL, e.newURL);
}), this.opendDialogsFromChangeUrl("", location.href), document.addEventListener("mousedown", async (t) => {
if (!(t.target instanceof HTMLElement)) return;
let n = t.target.closest("a[data-to-view]");
if (!n) return;
let r = "next";
n.dataset.action === "top-dialog-close" && (r = "prev"), n.href = e.genViewPageHash(n.dataset.toView, r);
}), document.addEventListener("click", async (r) => {
if (!(r.target instanceof HTMLElement)) return;
let i = r.target.closest("[data-to-view]");
if (!i) return;
if (i instanceof HTMLAnchorElement && i.href === ".") {
r.preventDefault();
let e = new MouseEvent("mousedown", {
bubbles: !0,
cancelable: !0,
view: window
});
i.dispatchEvent(e), setTimeout(() => i.click());
return;
}
let a = await this.getDialogsUtils(), s = i.dataset.toView, c = s.split("-")[0], l = a.getElDialogById(c), u = "next";
if (l) {
let e = n(l, ".modal-layer"), t = e.reduce((e, t) => {
let n = t.querySelector(":scope > .active");
return n && e.push(n), e;
}, []);
if (t.length) {
let n = s.split("-")[1].split(":")[0];
(e.reduce((e, t) => {
let r = t?.querySelector(`:scope > [data-view-page="${n}"]`);
return r && e.push(r), e;
}, [])[0]?.dataset.order ?? 0) < (t[0]?.dataset.order ?? 0) && (u = "prev");
}
}
i.dataset.action === "top-dialog-close" && (u = "prev");
let d = e.genViewPageHash(s, u);
if (i instanceof HTMLAnchorElement) {
if (!l || !t(l)) return;
if (location.hash.indexOf(s.replace("-", "=")) !== -1) {
await a.toViewDirty(s);
return;
}
}
l?.dataset.toViewReplace ? (r.preventDefault(), o(!0, d), await a.toViewDirty(s), u == "next" ? e.state.viewPageN++ : e.state.viewPageN--) : i.tagName !== "A" && (this.compareStates(d, location.hash) ? o(!1, d) : await a.toViewDirty(s));
}), setTimeout(() => this.getDialogsUtils(), i);
}
static opendDialogsFromChangeUrl(e, t) {
let n = e.replace(/.*?#/, "#"), r = t.replace(/.*?#/, "#");
this.compareStates(n, r) && this.opendDialogsFromUrl();
}
static async getDialogsUtils() {
let { TopDialogUtils: e } = await import("./utils-Cou0pGI4.esm.js");
return e;
}
static getDialog(e) {
return e.closest(".ui-dialog-content");
}
static get$dialog(e) {
return e.closest(".ui-dialog-content");
}
static getPage(e) {
return e.closest("[data-view-page]");
}
static get$page(e) {
return e.closest("[data-view-page]");
}
static get$pairPage(t) {
let n = e.get$dialog(t), r = e.get$page(t).data("view-page");
return $("[data-view-page=\"" + r + "\"]", n);
}
static getPairPage(t) {
let r = e.getDialog(t);
if (!r) return;
let i = e.getPage(t)?.dataset.viewPage;
return n(r, `[data-view-page="${i}"]`);
}
static close(e) {
let t = $("#" + e);
if (t.dialog("instance")) {
t.dialog("close");
return;
}
let n = document.getElementById(e);
n instanceof HTMLDialogElement && n.close();
}
static destroy(e) {
let t = $("#" + e);
if (t.dialog("instance")) {
t.dialog("close"), t.dialog("destroy");
return;
}
let n = document.getElementById(e);
n instanceof HTMLDialogElement && n.close();
}
static genViewPageHash(e, t = "next") {
let n = this.state.viewPageN;
t == "prev" ? n-- : n++;
let r = e.split("-"), a = r.shift(), o = r.join("-"), s = i("vpn", n);
return s = i("view-" + a, o, s), s;
}
static compareStates(e, t) {
let n = e.match(/[#&]view-[^&]+/g) || [], r = t.match(/[#&]view-[^&]+/g) || [];
return !!(n.length !== r.length || n.filter((e, t) => e !== (r[t] || "")).length);
}
};
A = j, e(j, "state", {
load: void 0,
decoratorOnCreate: void 0,
viewPageN: 0
}), e(j, "inited", !1), e(j, "opendDialogsFromUrl", async () => {
let e = Number(a("vpn")) || 0, r = (/* @__PURE__ */ RegExp("view-((\\w+)=([\\w-]+)(?::([\\w.:-]+))?)", "g")).exec(location.hash);
if (r) {
let t = "next";
return e < A.state.viewPageN && (t = "prev"), (await A.getDialogsUtils()).toViewDirty(r[1], t);
}
return n(document, ".ui-dialog-content[data-view-page-active]").filter((e) => t(e)).forEach((e) => {
let t = e.getAttribute("id");
if (!t) throw "Диалоговое окно не содержит id";
a("view-" + t) || $(e).dialog("close");
}), A.state.viewPageN = e, !0;
});
//#endregion
//#region src/components/dialog/dialog/composables/dialogHandle.ts
var M = class {
constructor(t) {
e(this, "id", void 0), e(this, "idAttr", void 0), e(this, "Component", void 0), e(this, "isMounted", x(!1)), e(this, "isReady", x(!1)), e(this, "isOpened", x(!1)), e(this, "pageActive", x("")), e(this, "isLoadingPage", x(!1)), e(this, "pageActiveNext", x("")), e(this, "props", void 0), e(this, "emit", void 0), e(this, "onCloseOnce", void 0), this.id = t.id, this.idAttr = "dialog_" + t.id, this.Component = m(t);
}
onMounted(e, t) {
this.isMounted.value = !0, this.props = e.props, this.emit = t.emit;
}
async open(e = "main", t, n = [], r, i) {
t && await this.setProps(t), r && (this.onCloseOnce = r), await (await j.getDialogsUtils()).toView(this.idAttr, e, n, i);
}
async openAsLink(e = "main", t, n = [], r, i) {
t && await this.setProps(t), r && (this.onCloseOnce = r);
let a = this.idAttr + "-" + e;
o(!1, j.genViewPageHash(a, i));
}
async close() {
j.close(this.idAttr);
}
async destroy() {
j.destroy(this.idAttr);
}
async setProps(e = {}) {
this.isMounted || await r(() => !this.props);
for (let t in this.props) this.props[t] = e[t];
}
needShowPage(e) {
return this.isOpened.value ? this.pageActive.value === e || this.pageActiveNext.value === e : !1;
}
}, N = {
class: "top-dialogs",
style: { display: "none" }
}, P = T(/* @__PURE__ */ new Map()), F = (e) => (e = e.replace(/^dialog_/, ""), P.get(e)), I = (e) => {
if (!e?.id) throw console.log({ TopDialogComponent: e }), Error("Expected TopDialogComponent");
return P.has(e.id) || P.set(e.id, new M(e)), P.get(e.id);
}, L = /* @__PURE__ */ d({
name: "DialogWrapper",
__name: "dialogs",
setup(e) {
return v(() => {
P.forEach((e) => e.destroy()), P.clear();
}), (e, t) => (y(), l("div", N, [(y(!0), l(s, null, S(E(P), ([e, t]) => (y(), c(w(t.Component), { key: e }))), 128))]));
}
}), R = class {
constructor(t) {
e(this, "resolve", void 0), e(this, "worker", x(null)), this.resolve = t;
}
async get() {
if (this.worker.value) return this.worker.value;
let e = (await this.resolve()).default;
this.worker.value = B(e);
let t = this.worker.value;
return await r(() => !t.isMounted), t;
}
async open(...e) {
await (await this.get()).open(...e);
}
async openAsLink(...e) {
(await this.get()).openAsLink(...e);
}
async close(...e) {
(await this.get()).close(...e);
}
async destroy(...e) {
(await this.get()).destroy(...e);
}
async setProps(...e) {
await (await this.get()).setProps(...e);
}
}, z = () => {
let e = f();
if (e?.type?.id) {
let t = F(e.type.id);
if (t) return t;
}
return p("dialogWorker");
}, B = (e) => I(e), V = (e) => new R(e);
//#endregion
export { F as a, L as i, B as n, j as o, z as r, k as s, V as t };
//# sourceMappingURL=utils-BtqYaMHp.esm.js.map
{"version":3,"file":"utils-BtqYaMHp.esm.js","names":[],"sources":["../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/lib/worker.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue","../../src/components/dialog/dialog/dialogs/dialogs.vue","../../src/components/dialog/dialog/composables/asyncDialogHandle.ts","../../src/components/dialog/dialog/composables/utils.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t'--top-dialog-width': width,\n\t\t\t'--top-dialog-height': height,\n\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t'--top-dialog-width': width,\n\t\t\t'--top-dialog-height': height,\n\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","import { genHash, getHash, historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogOpener, ElTopDialogPage, MoveDirection, TopDialogOptions } from './types';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\nimport type { $el } from '@/components/types';\n\nexport abstract class TopDialogWorker {\n\tstatic state = {\n\t\tload: undefined as TopDialogOptions['load'] | undefined,\n\t\tdecoratorOnCreate: undefined as TopDialogOptions['decoratorOnCreate'] | undefined,\n\n\t\t/**\n\t\t * Порядковый номер перехода в диалоговых окнах\n\t\t *\n\t\t * Для расчета анимации Вперед / Назад\n\t\t */\n\t\tviewPageN: 0,\n\t};\n\n\tprivate static inited = false;\n\n\t/**\n\t * Инициировать события слежения за парамтерами url\n\t *\n\t * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу\n\t */\n\tstatic init(options?: TopDialogOptions) {\n\t\tif (this.inited) return;\n\t\tthis.inited = true;\n\n\t\tthis.state.load = options?.load;\n\t\tthis.state.decoratorOnCreate = options?.decoratorOnCreate;\n\n\t\tconst autoInitDelay = options?.autoInitDelay ?? 5000;\n\n\t\twindow.addEventListener('hashchange', (e) => {\n\t\t\tthis.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n\t\t});\n\n\t\tthis.opendDialogsFromChangeUrl('', location.href);\n\n\t\t/**\n\t\t * Сгенерировать ссылку для перехода к странице диалогового окна\n\t\t */\n\t\tdocument.addEventListener('mousedown', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener<HTMLAnchorElement>>('a[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// const toView = el.dataset.toView;\n\t\t\t// const viewName = toView.split('-')[0];\n\t\t\t// const $toDialog = $('#' + viewName);\n\t\t\t// const $modalLayers = $('> .modal-layer', $toDialog);\n\t\t\t// const $currentPage = $('> .active', $modalLayers);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\t// /**\n\t\t\t// * Данный алгоритм определения направления работает не корректно, так как для чтения свойства order менят состояние через getDialogsUtils()\n\t\t\t// */\n\t\t\t// if ($currentPage.length) {\n\t\t\t// \tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t//\n\t\t\t// \tconst TopDialogUtils = await this.getDialogsUtils();\n\t\t\t//\n\t\t\t// \tawait TopDialogUtils.updatePageVue(viewName, undefined, pageName);\n\t\t\t//\n\t\t\t// \tconst $nextPage = $('> [data-view-page=\"' + pageName + '\"]', $modalLayers);\n\t\t\t// \tif ($nextPage.data('order') < $currentPage.data('order')) moveDirection = 'prev';\n\t\t\t// }\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tel.href = TopDialogWorker.genViewPageHash(el.dataset.toView, moveDirection);\n\t\t});\n\n\t\t/**\n\t\t * Осуществить переход по ссылке с учетом historyType\n\t\t */\n\t\tdocument.addEventListener('click', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener>('[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// Подождать генерацию ссылки\n\t\t\tif (el instanceof HTMLAnchorElement && el.href === '.') {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tconst mouseEvent = new MouseEvent('mousedown', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t\tview: window,\n\t\t\t\t});\n\n\t\t\t\tel.dispatchEvent(mouseEvent);\n\n\t\t\t\tsetTimeout(() => el.click());\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\tconst toView = el.dataset.toView;\n\t\t\tconst viewName = toView.split('-')[0];\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\tif (elDialog) {\n\t\t\t\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\t\t\t\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\tconst elCurrentPage = el.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\t\t\t\tif (elCurrentPage) acc.push(elCurrentPage);\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, []);\n\n\t\t\t\tif (elCurrentPages.length) {\n\t\t\t\t\tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t\t\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\t\tconst elNextPage = el?.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\n\t\t\t\t\t\tif (elNextPage) acc.push(elNextPage);\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, []);\n\n\t\t\t\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, moveDirection);\n\n\t\t\tif (el instanceof HTMLAnchorElement) {\n\t\t\t\t// диалоговое окно еще не открыто, произвести переход по ссылке\n\t\t\t\tif (!elDialog || !isVisible(elDialog)) return;\n\n\t\t\t\t// в адресе уже указана эта страница, необходимо явно запросить ее открытие\n\t\t\t\tif (location.hash.indexOf(toView.replace('-', '=')) !== -1) {\n\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst replaceHistory = !!elDialog?.dataset.toViewReplace;\n\n\t\t\tif (replaceHistory) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thistorySetState(true, hash);\n\n\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\tif (moveDirection == 'next') {\n\t\t\t\t\tTopDialogWorker.state.viewPageN++;\n\t\t\t\t} else {\n\t\t\t\t\tTopDialogWorker.state.viewPageN--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.tagName !== 'A') {\n\t\t\t\t\tif (this.compareStates(hash, location.hash)) {\n\t\t\t\t\t\thistorySetState(false, hash);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => this.getDialogsUtils(), autoInitDelay);\n\t}\n\n\tprivate static opendDialogsFromChangeUrl(oldUrl: string, newUrl: string) {\n\t\tconst oldHash = oldUrl.replace(/.*?#/, '#');\n\t\tconst newHash = newUrl.replace(/.*?#/, '#');\n\n\t\tconst dialogsStateChanged = this.compareStates(oldHash, newHash);\n\t\tif (dialogsStateChanged) void this.opendDialogsFromUrl();\n\t}\n\n\tstatic async getDialogsUtils() {\n\t\tconst { TopDialogUtils } = await import('./utils');\n\n\t\treturn TopDialogUtils;\n\t}\n\n\tstatic getDialog(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialog>('.ui-dialog-content');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getDialog()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$dialog($el: $el) {\n\t\treturn $el.closest('.ui-dialog-content');\n\t};\n\n\tstatic getPage(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialogPage>('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$page($el: $el) {\n\t\treturn $el.closest('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPairPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$pairPage($el: $el) {\n\t\tconst $dialog = TopDialogWorker.get$dialog($el);\n\n\t\tconst $page = TopDialogWorker.get$page($el);\n\t\tconst pageName = $page.data('view-page');\n\n\t\treturn $('[data-view-page=\"' + pageName + '\"]', $dialog);\n\t};\n\n\tstatic getPairPage(el: HTMLElement) {\n\t\tconst elDialog = TopDialogWorker.getDialog(el);\n\t\tif (!elDialog) return;\n\n\t\tconst elPage = TopDialogWorker.getPage(el);\n\t\tconst pageName = elPage?.dataset.viewPage;\n\n\t\treturn querySelectorAllArray(elDialog, `[data-view-page=\"${pageName}\"]`);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t */\n\tstatic close(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tstatic destroy(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\t\t\t$dialog.dialog('destroy');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Сгенерировать ссылку на страницу в диалоговом окне\n\t * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}\n\t * @param moveDirection\n\t */\n\tstatic genViewPageHash(toView: string, moveDirection: MoveDirection = 'next') {\n\t\tlet toViewPageN = this.state.viewPageN;\n\t\tif (moveDirection == 'prev') {\n\t\t\ttoViewPageN--;\n\t\t} else {\n\t\t\ttoViewPageN++;\n\t\t}\n\n\t\tconst viewNameAndPageLink = toView.split('-');\n\t\tconst viewName = viewNameAndPageLink.shift();\n\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\tlet hash = genHash('vpn', toViewPageN);\n\t\thash = genHash('view-' + viewName, pageLink, hash);\n\n\t\treturn hash;\n\t};\n\n\t/**\n\t * Сравнить версию открытых диалоговых окон\n\t * @returns вернет true, если состояния открытых окон изменилось\n\t */\n\tstatic compareStates(hash: string, hash2: string) {\n\t\tconst mathes = hash.match(/[#&]view-[^&]+/g) || [];\n\t\tconst mathes2 = hash2.match(/[#&]view-[^&]+/g) || [];\n\n\t\tif (mathes.length !== mathes2.length) return true;\n\n\t\tconst mathesChanged = mathes.filter((math, n) => {\n\t\t\tconst math2 = mathes2[n] || '';\n\n\t\t\treturn math !== math2;\n\t\t});\n\n\t\tif (mathesChanged.length) return true;\n\n\t\treturn false;\n\t};\n\n\tstatic opendDialogsFromUrl = async () => {\n\t\tconst toViewPageN = Number(getHash('vpn')) || 0;\n\n\t\t// Открыть диалоговое окно\n\t\t// const regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)' + '(' + Math.random() + ')?', 'g'); // fix babel minify regexp\n\t\tconst regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)', 'g');\n\t\tconst view = regexp.exec(location.hash);\n\n\t\tif (view) {\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\t\t\tif (toViewPageN < this.state.viewPageN) moveDirection = 'prev';\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\treturn TopDialogUtils.toViewDirty(view[1], moveDirection);\n\t\t}\n\n\t\t// Закрыть ненужные view\n\t\tconst elDialogs = querySelectorAllArray(document, '.ui-dialog-content[data-view-page-active]') as HTMLDialogElement[];\n\t\telDialogs.filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t}).forEach((elDialog) => {\n\t\t\tconst viewName = elDialog.getAttribute('id');\n\t\t\tif (!viewName) throw 'Диалоговое окно не содержит id';\n\t\t\tconst pageName = getHash('view-' + viewName);\n\t\t\tif (!pageName) {\n\t\t\t\tconst $dialog = $(elDialog);\n\n\t\t\t\t$dialog.dialog('close');\n\t\t\t}\n\t\t});\n\n\t\tthis.state.viewPageN = toViewPageN;\n\n\t\treturn true;\n\t};\n}\n","import { type ComponentInstance, type ComponentInternalInstance, markRaw, ref } from 'vue';\nimport { waitWhile } from '@/core/utils/system';\nimport TopDialog from '../dialog.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { MoveDirection } from '@/components/dialog/lib/types';\nimport type { TopDialogComponent } from './types';\nimport { historySetState } from '@/core/utils/route';\n\n/**\n * Объект для работы с диалоговым окном\n *\n * Каждое окно уникально и может быть открыто одновременно только один раз\n *\n * Можно определить много окон, после чего с ними можно вести работу в любой части приложения\n */\nexport class TopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Индентификатор, определяется на уровне компонента TopDialogComponent\n\t *\n\t * Может использоваться в навигации для открытия нужных окон с нужными настройками\n\t */\n\tid: string;\n\n\t/**\n\t * ID, используемый в верстке диалогового окна\n\t */\n\tidAttr: string;\n\n\t/**\n\t * Пользовательский компонент диалогового окна\n\t */\n\tComponent: T;\n\n\t/**\n\t * Компонент инициирован\n\t *\n\t * Устанавливается после первого вызова useTopDialog()\n\t */\n\tisMounted = ref(false);\n\n\t/**\n\t * Компонент готов к использованию\n\t *\n\t * Используется для внутренних преобразований после отрисовки\n\t */\n\tisReady = ref(false);\n\n\t/**\n\t * Диалоговое окно открыто\n\t */\n\tisOpened = ref(false);\n\n\t/**\n\t * Имя активной страницы дилогового окна\n\t */\n\tpageActive = ref('');\n\n\t/**\n\t * Диалоговое окно находится в состоянии загрузки своей страницы\n\t */\n\tisLoadingPage = ref(false);\n\n\t/**\n\t * Следующая активная страница\n\t *\n\t * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию\n\t */\n\tpageActiveNext = ref('');\n\n\t/**\n\t * props компонента, доступны после инициализации\n\t */\n\tprops?: ComponentInstance<T>['$props'];\n\n\t/**\n\t * emit базового компонента `TopDialog`\n\t */\n\temit?: ComponentInstance<typeof TopDialog>['$emit'];\n\n\t/**\n\t * Одноразовое событие на закрытие диалогового окна\n\t *\n\t * Используется для привязки окна к сценариям использования\n\t */\n\tonCloseOnce?: (props: typeof this.props, pageName: string) => void;\n\n\tconstructor(TopDialogComponent: T) {\n\t\tthis.id = TopDialogComponent.id!;\n\t\tthis.idAttr = 'dialog_' + TopDialogComponent.id;\n\t\tthis.Component = markRaw(TopDialogComponent);\n\t}\n\n\t/**\n\t * Событие - компонент инициирован\n\t */\n\tonMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance) {\n\t\tthis.isMounted.value = true;\n\t\tthis.props = topDialogComponent.props;\n\t\tthis.emit = topDialogBaseComponent.emit;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t *\n\t * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента\n\t */\n\tasync open(pageName: string = 'main', props?: Record<string, unknown>, args: [] = [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst TopDialogUtils = await TopDialogWorker.getDialogsUtils();\n\n\t\tawait TopDialogUtils.toView(this.idAttr, pageName, args, moveDirection);\n\t};\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader\n\t */\n\tasync openAsLink(\n\t\tpageName: string = 'main',\n\t\tprops?: Record<string, unknown>,\n\t\t_args: string[] = [],\n\t\tonCloseOnce?: typeof this.onCloseOnce,\n\t\tmoveDirection?: MoveDirection,\n\t) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst viewName = this.idAttr + '-' + pageName;\n\n\t\tconst hash = TopDialogWorker.genViewPageHash(viewName, moveDirection);\n\t\thistorySetState(false, hash);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close() {\n\t\tTopDialogWorker.close(this.idAttr);\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tasync destroy() {\n\t\tTopDialogWorker.destroy(this.idAttr);\n\t}\n\n\t/**\n\t * Устанвоить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(props: ComponentInstance<T>['$props'] = {}) {\n\t\t// ожидание инициализации компонента\n\t\tif (!this.isMounted) {\n\t\t\tawait waitWhile(() => !this.props);\n\t\t}\n\n\t\tfor (const name in this.props) {\n\t\t\tthis.props[name] = props[name];\n\t\t}\n\t}\n\n\t/**\n\t * Проверить, есть ли необходимость отрисовки страницы диалогового окна\n\t */\n\tneedShowPage(pageName: string): boolean {\n\t\tif (!this.isOpened.value) return false;\n\n\t\treturn this.pageActive.value === pageName || this.pageActiveNext.value === pageName;\n\t}\n\n}\n","<script lang=\"ts\">\nimport { shallowReactive } from 'vue';\nimport { TopDialogHandle } from '@/components/dialog/dialog/composables/dialogHandle';\nimport type { TopDialogComponent } from '@/components/dialog/dialog/composables/types';\n\n/**\n * Словарь всех используемых диалоговых окон\n *\n * В других компонентах не использовать\n */\nconst dialogsWorkers = shallowReactive(new Map<string, TopDialogHandle<TopDialogComponent>>());\n\n/**\n * Получить компонент диалогового окна по id\n */\nexport const getDialogWorker = (id: string) => {\n\tid = id.replace(/^dialog_/, '');\n\n\treturn dialogsWorkers.get(id);\n};\n\n/**\n * Добавить компонент диалогового окна для использования\n */\nexport const addDialogWorker = <T extends TopDialogComponent>(TopDialogComponent: T): TopDialogHandle<T> => {\n\tif (!TopDialogComponent?.id) {\n\t\tconsole.log({ TopDialogComponent: TopDialogComponent });\n\n\t\tthrow new Error('Expected TopDialogComponent');\n\t}\n\n\tif (!dialogsWorkers.has(TopDialogComponent.id)) {\n\t\tdialogsWorkers.set(TopDialogComponent.id, new TopDialogHandle(TopDialogComponent));\n\t}\n\n\treturn dialogsWorkers.get(TopDialogComponent.id) as TopDialogHandle<T>;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { onUnmounted } from 'vue';\n\ndefineOptions({\n\tname: 'DialogWrapper',\n});\n\nonUnmounted(() => {\n\tdialogsWorkers.forEach(dialog => dialog.destroy());\n\tdialogsWorkers.clear();\n});\n</script>\n\n<template>\n\t<div class=\"top-dialogs\" style=\"display: none;\">\n\t\t<component\n\t\t\tv-for=\"[dialogId, dialog] in dialogsWorkers\"\n\t\t\t:is=\"dialog.Component\"\n\t\t\t:key=\"dialogId\"\n\t\t/>\n\t</div>\n</template>\n","<script lang=\"ts\">\nimport { shallowReactive } from 'vue';\nimport { TopDialogHandle } from '@/components/dialog/dialog/composables/dialogHandle';\nimport type { TopDialogComponent } from '@/components/dialog/dialog/composables/types';\n\n/**\n * Словарь всех используемых диалоговых окон\n *\n * В других компонентах не использовать\n */\nconst dialogsWorkers = shallowReactive(new Map<string, TopDialogHandle<TopDialogComponent>>());\n\n/**\n * Получить компонент диалогового окна по id\n */\nexport const getDialogWorker = (id: string) => {\n\tid = id.replace(/^dialog_/, '');\n\n\treturn dialogsWorkers.get(id);\n};\n\n/**\n * Добавить компонент диалогового окна для использования\n */\nexport const addDialogWorker = <T extends TopDialogComponent>(TopDialogComponent: T): TopDialogHandle<T> => {\n\tif (!TopDialogComponent?.id) {\n\t\tconsole.log({ TopDialogComponent: TopDialogComponent });\n\n\t\tthrow new Error('Expected TopDialogComponent');\n\t}\n\n\tif (!dialogsWorkers.has(TopDialogComponent.id)) {\n\t\tdialogsWorkers.set(TopDialogComponent.id, new TopDialogHandle(TopDialogComponent));\n\t}\n\n\treturn dialogsWorkers.get(TopDialogComponent.id) as TopDialogHandle<T>;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { onUnmounted } from 'vue';\n\ndefineOptions({\n\tname: 'DialogWrapper',\n});\n\nonUnmounted(() => {\n\tdialogsWorkers.forEach(dialog => dialog.destroy());\n\tdialogsWorkers.clear();\n});\n</script>\n\n<template>\n\t<div class=\"top-dialogs\" style=\"display: none;\">\n\t\t<component\n\t\t\tv-for=\"[dialogId, dialog] in dialogsWorkers\"\n\t\t\t:is=\"dialog.Component\"\n\t\t\t:key=\"dialogId\"\n\t\t/>\n\t</div>\n</template>\n","import type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { useTopDialog } from './utils';\nimport { waitWhile } from '@/core/utils/system';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { TopDialogHandle } from './dialogHandle';\n\n/**\n * Объект для работы с асинхронным диалоговым окном\n *\n * Является прослойкой для доступа к TopDialogHandle\n */\nexport class AsyncTopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Функция, определяющая компонент TopDialogComponent\n\t */\n\treadonly resolve: AsyncTopDialogComponentLoader<T>;\n\n\t/**\n\t * Реактивная Сссылка на объект worker,\n\t *\n\t * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено\n\t */\n\treadonly worker: Ref<TopDialogHandle<T> | null> = ref(null);\n\n\tconstructor(resolve: AsyncTopDialogComponentLoader<T>) {\n\t\tthis.resolve = resolve;\n\t}\n\n\t/**\n\t * Получить доступ к TopDialogHandle\n\t */\n\tasync get() {\n\t\tif (this.worker.value) return this.worker.value;\n\n\t\tconst result = await this.resolve();\n\t\tconst TopDialogComponent = result.default;\n\n\t\tthis.worker.value = useTopDialog(TopDialogComponent);\n\n\t\tconst worker = this.worker.value;\n\n\t\tawait waitWhile(() => !worker.isMounted);\n\n\t\treturn worker;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t */\n\tasync open(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.open(...args);\n\t}\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Только общедоступные диалоговые окна, расположенные в @/dialogs\n\t */\n\tasync openAsLink(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tvoid worker.openAsLink(...args);\n\t}\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.close(...args);\n\t}\n\n\t/**\n\t * Размонтировать виджет диалогового окна\n\t */\n\tasync destroy(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.destroy(...args);\n\t}\n\n\t/**\n\t * Установить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(...args: Parameters<TopDialogHandle<T>['setProps']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.setProps(...args);\n\t}\n}\n","import { getCurrentInstance, inject } from 'vue';\nimport { TopDialogHandle } from './dialogHandle';\nimport { AsyncTopDialogHandle } from './asyncDialogHandle';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { addDialogWorker, getDialogWorker } from '../dialogs/dialogs.vue';\n\n/**\n * Получить объект управленя текущим диалоговым окном\n */\nexport const useTopDialogSelf = () => {\n\t// вызов из пользовтаельского компонента диалога\n\tconst topDialogComponent = getCurrentInstance() as any;\n\tif (topDialogComponent?.type?.id) {\n\t\tconst dialogWorker = getDialogWorker(topDialogComponent.type.id);\n\t\tif (dialogWorker) return dialogWorker;\n\t}\n\n\treturn inject('dialogWorker') as TopDialogHandle<TopDialogComponent>;\n};\n\n/**\n * Получить объект управленя диалоговым окном\n *\n * При первом вызове компонент диалогового окна будет внедрен в компонент DialogWrapper\n */\nexport const useTopDialog = <T extends TopDialogComponent>(DialogComponent: T): TopDialogHandle<T> => {\n\treturn addDialogWorker(DialogComponent);\n};\n\n/**\n * Получить объект управленя асинхронным диалоговым окном\n *\n * Компонент диалогового окна будет загружен и инициирован при первом взаимодействии с объектом\n *\n * Использует useTopDialog()\n */\nexport const useAsyncTopDialog = <T extends TopDialogComponent>(resolve: AsyncTopDialogComponentLoader<T>): AsyncTopDialogHandle<T> => {\n\treturn new AsyncTopDialogHandle(resolve);\n};\n"],"mappings":"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"}
define([`require`,`exports`,`./forms-_4U0sLFk.amd`,`../utils/dom.amd`,`./worker-D28QqQ45.amd`,`../utils/system.amd`,`./utils-BtqYaMHp.amd`,`../utils/route.amd`,`../utils/scroll.amd`,`vue`,`../popup/worker.amd`],function(e,t,n,r,i,a,o,s,c,l){"use strict";if(u===void 0)var u=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopDialogUtils=void 0,$;var d=!1,f=()=>{d||(d=!0,document.addEventListener(`keydown`,e=>{if(e.key!==`Escape`||!e.target||!(e.target instanceof HTMLElement))return;let t=e.target;if(!t.closest(`.ui-dialog`)||t.contentEditable===`true`||t.contentEditable===`plaintext-only`||(0,r.querySelectorVisible)(document.documentElement,`.top-popup-wrapper`)||t.classList.contains(`autocomplete`)||(0,r.querySelectorVisible)(document.documentElement,`.fancybox-container`))return;let n=(0,r.querySelectorAllArray)(document,`.ui-dialog-content`).filter(e=>(0,r.isVisible)(e));$(n[n.length-1]).dialog(`close`)}),document.addEventListener(`click`,e=>{if(!(e.target instanceof HTMLElement))return;let t=e.target.closest(`[data-action="top-dialog-close"]`);if(!t)return;e.preventDefault();let n=t.closest(`.ui-dialog-content`);if(!n)return;let i=t.dataset.toView;if(i==`toPrevPage()`){P.toPrevPage(n);return}if(i){let e=i.split(`-`),t=e.shift(),n=e.join(`-`);if(!t)return;let a=P.getElDialogById(t);if(!a)return;let c=(0,r.querySelectorAllArray)(a,`[data-view-page="${n}"]`);if(!c)return;if(!(0,r.isVisible)(c[0])){(0,s.historySetState)(!1,o.o.genViewPageHash(i,`prev`));return}}$(n).dialog(`close`)}),document.addEventListener(`submit`,e=>{let t=e.target;(t.matches(`.modal-body > form`)||t.matches(`.modal-layer-body > form`))&&e.preventDefault()}),document.addEventListener(`keypress`,e=>{if(!(e.target instanceof HTMLElement))return;let t=e.target;if(t.closest(`.ui-dialog .modal-body`)&&(t.matches(`input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)`)||t.hasAttribute(`contenteditable`))&&e.key===`Enter`){if(t.classList.contains(`autocomplete`)){e.preventDefault();return}if(t.tagName===`TEXTAREA`){if(!e.ctrlKey&&!e.metaKey)return;let n=t.closest(`form`);n&&(0,r.querySelectorAllArray)(n,`button[type="submit"]`).concat((0,r.querySelectorAllArray)(n,`input[type="submit"]`)).find(e=>(0,r.isVisible)(e))?.click()}}}),document.addEventListener(`click`,function(e){if(!(e.target instanceof HTMLElement)||!e.target.classList.contains(`ui-widget-overlay`))return;let t,n=0;if((0,r.querySelectorAllArray)(document,`.ui-dialog`).filter(e=>(0,r.isVisible)(e)).forEach(e=>{let r=Number(window.getComputedStyle(e).zIndex);r<n||(t=e,n=r)}),t){let e=t.querySelector(`.ui-dialog-content`);$(e).dialog(`close`)}}),window.addEventListener(`resize`,P.recalcPositions),P.recalcPositions())};n.O.insertStyleToPage(`:root{--dialog-border-color:var(--color-line-1);--dialog-loading-duration:10s;--top-dialog-footer-height:var(--top-forms-base-height_s)}html.with_dialog{overflow:hidden!important}a[data-to-view]{cursor:pointer}.ui-widget-overlay{opacity:.5;filter:Alpha(Opacity=50);background:#040404}.ui-dialog{border:none;border-radius:8px;padding:0}.ui-dialog.ui-widget{border:none}.ui-dialog-titlebar{display:none}.ui-dialog .ui-dialog-content{padding:0;overflow:visible}.ui-dialog .project_name{word-break:break-all}.ui-dialog-content{--dialog-header-height:50px;--dialog-layer-pageSelector:0px}.ui-dialog-content-withPageSelector{--dialog-layer-pageSelector:42px}.modal-header,.modal-body,.modal-footer{font-size:14px;position:relative}.modal-body{padding:var(--padding-default)}.modal-body:has(>.topTable:first-child){padding-top:calc(var(--padding-default) / 4)}.modal-header{border-bottom:1px solid var(--dialog-border-color);height:var(--dialog-header-height);padding:0 var(--padding-default);justify-content:space-between;align-items:center;gap:var(--top-padding-2);display:flex}.modal-header>*{padding:10px 0;font-size:16px}.modal-header>.top-title{text-overflow:ellipsis;white-space:nowrap;flex-grow:1;order:50;align-items:center;margin:0;font-weight:400;display:flex;overflow:hidden}.modal-header>.top-title>div[class*=icon]{display:none}.modal-header>div:not(.top-title){order:60}.modal-header>div.close{--top-icon-color:var(--color-text-2);cursor:pointer;background:var(--color-layout-front-1);order:100;font-size:16px;animation-name:none!important}.modal-header>div.close:hover{--top-icon-color:var(--color-text-1)}.modal-header .links_icons{position:absolute;right:50px}.modal-header .links_icons [class*=icon-]{color:#d6dee0;width:auto;height:auto;padding:0 5px}.modal-header .links_icons [class*=icon-].active{color:var(--color-bg-warning-1)}.modal-layer-pageSelector{padding:0 10px!important}.modal-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - 1px - var(--dialog-layer-pageSelector) - var(--top-dialog-footer-height) - 1px);box-sizing:border-box;flex-grow:1;overflow:hidden auto}.modal-body hr{margin:16px -15px}.modal-body h4{margin:0 0 10px;padding:0;line-height:normal}.modal-body .inner{padding:var(--padding-default);margin:0 calc(0px - var(--padding-default));position:relative}.modal-body .inner .bt{border-top:1px dashed var(--color-layout-front-primary-3);position:absolute;top:0;left:0;right:0}.modal-body .inner .bb{border-bottom:1px dashed var(--color-layout-front-primary-3);position:absolute;bottom:0;left:0;right:0}.modal-body .inner.color-1{background:var(--color-layout-front-primary-3);color:var(--color-text-1)}.modal-body .inner strong{color:var(--color-text-1)}.modal-body .comment{line-height:18px}.modal-footer{min-height:var(--top-dialog-footer-height);padding:var(--top-gap-2);justify-content:flex-end;align-items:center;gap:var(--top-gap-2);flex-shrink:0;display:flex}.modal-footer .modal-footer-btn-left{margin-right:auto}.modal-footer>.btn.full_width,.modal-footer>.top-button.full_width{flex-grow:1;align-self:flex-end}.modal-footer-fullWith{flex-wrap:wrap}.modal-footer-fullWith>*{flex-grow:1}.modal-footer-fullWith>.top-info{flex-grow:5}.modal-footer-fullWith>:empty{flex-grow:0}.ui-dialog-content>.modal-layer>[data-view-page]>input[type=submit]{visibility:hidden;position:absolute}.help_popup .modal-header{display:none}.help_popup .modal-header a{z-index:10;top:2px}.help_popup .modal-header .top-title{display:none}.modal-layer{overflow:hidden}.modal-layer a[data-top-icon]:empty{color:var(--color-text-4);text-decoration:none}.modal-layer>[data-view-page]>div>div.buttons{white-space:nowrap;gap:var(--top-padding-1);display:flex}.modal-layer>[data-view-page]>div>div.buttons:empty{display:none}.modal-layer>[data-view-page]>div>div.buttons>div,.modal-layer>[data-view-page]>div>div.buttons>a{cursor:pointer;width:auto;min-width:auto;height:auto;min-height:auto;color:var(--color-text-4);padding:10px 9px}.modal-layer>[data-view-page]>div>div.buttons>div:hover{color:var(--color-text-2)}.modal-layer>[data-view-page]>div>div.buttons>div.hidden{display:none!important}.ui-dialog-content[data-view-page-active]{flex-direction:column;justify-items:stretch;display:flex!important}.ui-dialog-content>.modal-layer{align-items:stretch;position:relative;display:flex!important}.ui-dialog-content.i-change-page>.modal-layer{overflow:hidden}.ui-dialog-content>.modal-layer>[data-view-page]{flex-direction:column;justify-content:space-between;width:100%;animation:none;display:none;position:relative}.ui-dialog-content>.modal-layer>[data-view-page].active{display:flex}.ui-dialog-content>.modal-layer>[data-view-page].reverse{animation-direction:reverse}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center{display:flex;position:absolute;inset:0}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left>div,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center>div{overflow:hidden}.ui-dialog-content>.modal-layer-header{border-bottom:1px solid var(--dialog-border-color);min-height:var(--dialog-header-height)}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header{background:0 0;border:none}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header>*{animation:none}.ui-dialog-content>.modal-layer-header>[data-view-page].reverse>.modal-header>*{animation-direction:reverse}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>.top-title{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>.top-title{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>[class*=widget-]{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>[class*=widget-]{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>div{animation-name:dialog-center-to-left-header-icons}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>div{animation-name:dialog-right-to-center-header-icons}.ui-dialog-content>.modal-layer-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - var(--dialog-layer-pageSelector) - var(--toolbar-height));border-radius:0 0 8px 8px;flex-grow:2}.ui-dialog-content.i-change-page>.modal-layer-body>[data-view-page]{background:var(--color-layout-front-1)}.ui-dialog-content>.modal-layer-body>[data-view-page].center-to-left{animation-name:dialog-center-to-left}.ui-dialog-content>.modal-layer-body>[data-view-page].right-to-center{animation-name:dialog-right-to-center}.ui-dialog-content .modal-footer .second_level{box-sizing:border-box;background:var(--color-layout-front-1);justify-content:center;align-items:center;width:100%;min-height:25px;display:flex}.ui-dialog-content .modal-footer .second_level input{width:100%;height:var(--top-forms-base-height);padding:var(--top-padding-1) var(--top-padding-3);box-sizing:border-box;border-radius:8px}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data{pointer-events:none}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data:before{content:" ";z-index:100;width:0;height:4px;animation:top-loadbar var(--dialog-loading-duration) forwards;background:#378dc6;position:absolute;top:0;left:0}.ui-dialog-content.modal-expanded{width:100vw!important;height:calc(var(--100vh) + 10px)!important}.modal-header>[data-widget]{opacity:0;visibility:hidden;z-index:1;align-items:center;padding:0 8px;transition:opacity .3s;position:absolute;inset:0;overflow:hidden}.modal-header>[data-widget=search] div.cancel{opacity:0;transition:transform .3s,opacity .3s;transform:translate(100%)}[data-view-page].i-show-search .modal-header>:not([data-widget=search]){visibility:hidden}[data-view-page].i-show-search [data-widget=search]{visibility:visible;opacity:1}[data-view-page].i-show-search [data-widget=search] .cancel{opacity:1;transform:translate(0)}[data-view-page]>.modal-header>*{transition:opacity .3s}[data-view-page].i-show-search>.modal-header>div.buttons{opacity:0}.modal-layer .top-popup-wrapper{height:100%!important}@keyframes dialog-center-to-left-header-title{0%{opacity:1;transform:translate(0)}75%{opacity:0}to{opacity:0;transform:translate(-30%)}}@keyframes dialog-right-to-center-header-title{0%{opacity:0;transform:translate(100%)}25%{opacity:0}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left-header-icons{0%{opacity:1;transform:translate(0)}35%{opacity:0;transform:translate(-20%)}to{opacity:0;transform:translate(-20%)}}@keyframes dialog-right-to-center-header-icons{0%{opacity:0;transform:translate(20%)}65%{opacity:0;transform:translate(20%)}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left{0%{filter:brightness();transform:translate(0)}to{filter:brightness(.9);transform:translate(-30%)}}@keyframes dialog-right-to-center{0%{transform:translate(100%);box-shadow:0 0 10px #0000001a}to{transform:translate(0);box-shadow:0 0 10px #0003}}@media only screen and (max-width:1480px){.win_side_panel_opener{display:none}}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);top:calc(var(--dialog-header-height) + 1px + var(--dialog-layer-pageSelector));bottom:calc(var(--top-dialog-footer-height) + 1px);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}@media only screen and (max-height:900px){html.with_dialog{background:#f1f1f1;overflow:hidden}.ui-dialog.me-tightly{border-radius:0;position:fixed;height:auto!important;top:0!important;bottom:0!important}.ui-dialog.me-tightly .ui-dialog-content{min-height:100%!important}.ui-dialog.me-tightly>div>.modal-body{top:var(--dialog-header-height);left:0;right:0;bottom:var(--dialog-header-height);position:absolute}.ui-dialog.me-tightly>div>.modal-body:last-child{bottom:0}.ui-dialog.me-tightly>div>.modal-footer{position:absolute;bottom:0;left:0;right:0}.ui-dialog.me-tightly .modal-layer-body{border-radius:0;min-height:0!important}.ui-dialog.me-tightly .modal-layer-body .modal-footer{min-height:unset}}`),n.O.insertStyleToPage(`html.with_dialog body{height:var(--100vh);overflow:hidden}.ui-widget-overlay{height:calc(100% - var(--toolbar-height))}.ui-dialog{border-radius:0;position:fixed;width:auto!important;height:auto!important;inset:0!important}.ui-dialog-content{width:100%!important;min-width:0!important;max-width:100%!important;height:100%!important}.modal-header>.top-title{text-align:center;font-size:14px}.modal-header>div.close{order:1;font-size:14px}.modal-header>div.close:before{content:""}.modal-body:last-child,.modal-footer{bottom:0}.modal-footer .second_level{padding:10px 8px}.modal-layer-body{min-height:0!important}.ui-dialog-content>.modal-layer-body{border-radius:0}.modal-body,.modal-footer{padding-left:12px;padding-right:12px}.modal-footer .btn:last-child{margin-right:12px}.modal-body .inner{margin:0 -12px;padding:12px;position:relative}`,`m`),n.O.insertStyleToPage(`.modal-menu-opener{order:1!important}.modal-menu-opener:before{--top-icon-size:20px;--top-icon-color:#fff;--top-icon-width:var(--top-icon-size);background:var(--color-bg-primary-1);border-radius:50%;padding:3px;transition:transform .1s}.modal-menu-opener:hover:before{background:var(--color-bg-primary-2)}.modal-menu-opener.top-active:before{background:var(--color-bg-primary-2);transform:scale(.8)}.modal-layer .top-popup-wrapper{background:0 0;transition:background .3s;width:auto!important;margin:0!important;padding:0!important;top:0!important;left:0!important;right:0!important}.modal-layer .top-popup-wrapper>.top-popup[class],.modal-layer .top-popup-wrapper.with_notch>.top-popup[class]{opacity:1;border:none;border-radius:8px;flex-direction:column;max-width:100%;max-height:calc(100% - 24px);transition:transform .3s;display:flex;overflow:auto;transform:translateY(calc(-100% - 24px));margin:12px!important;inset:0 0 auto!important}.modal-layer .top-popup>.top-popup_header{background:var(--color-theme-50)}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select{border:none}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .text{color:#fff}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .arrow{background:0 0}.modal-layer .top-popup-wrapper-shown:not(.top-popup-wrapper-closed){pointer-events:auto;background:#34495e40}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute;top:51px;bottom:51px}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}`,`pc`),n.O.insertStyleToPage(`html{--top-dialog-width:auto;--top-dialog-height:auto}.top-dialog{max-width:100vw}.top-dialog .modal-layer-body{height:var(--top-dialog-height)}`),n.O.insertStyleToPage(`.top-dialog{width:var(--top-dialog-width)!important}`,`pc`);var p,m=!1,h=e=>!!e&&typeof e==`object`&&`jquery`in e,g=()=>{$.extend($.ui.dialog.prototype.options,{focus:e=>{e.target.focus(),$(`[autofocus]`,e.target)[0]?.focus()},create:e=>b(e.target),open:e=>S(e.target),close:e=>C(e.target),modal:!0,resizable:!1,closeOnEscape:!1,width:`auto`,minHeight:0}),$.ui.dialog.prototype._focusTabbable=$.noop,$.ui.dialog.prototype._moveToTopOriginal=$.ui.dialog.prototype._moveToTop,$.ui.dialog.prototype._moveToTop=function(){this._moveToTopOriginal();let e=$(this.element);e.trigger(`dialogsMoveToTop`,[e])},f(),m=!0},_=e=>{let t={};return e.dataset?.modal===`false`&&(t.modal=!1),e.dataset?.position&&(t.position=JSON.parse(e.dataset.position)),t},v=e=>document.getElementById(e),y=async(e,t,n)=>{if(!e.startsWith(`dialog_`))return;let r=(0,o.a)(e);if(r&&(r.isOpened.value=!0,t!==void 0&&(r.pageActive.value=t),n!==void 0&&(r.pageActiveNext.value=n),await(0,l.nextTick)(),n)){let t=v(e);if(!t)return;t.querySelectorAll(`[data-view-page="${n}"]`).length||await(0,a.waitWhile)(()=>!t.querySelectorAll(`[data-view-page="${n}"]`).length)}},b=e=>{let t=(0,r.querySelectorAllArray)(e,`.modal-body`);t.forEach(e=>{(0,c.connectScrollShadow)(e)}),t.length&&(o.o.state.decoratorOnCreate?.(e),x(e))},x=e=>{$(e).on(`aftershow.top-menu-popup`,`[data-top-popup]`,(e,t)=>{let n=t[0];o.o.getPairPage(n)?.[1]?.prepend(n)})},S=async e=>{let t=e.dataset.viewPageActive,r=e.dataset.args?e.dataset.args?.split(`:`):[],i=window.innerWidth;n.O.state.documentClassModificators.set(`top-dialog`,`with_dialog`);let a=window.innerWidth-i;document.documentElement.scrollHeight>window.innerHeight&&(document.querySelector(`html`).style.marginRight=a+`px`),w(),(0,o.a)(e.getAttribute(`id`))?.emit?.(`open`,t,r)},C=async e=>{let t=e.getAttribute(`id`),i=e.dataset.viewPageActive;if(i){let e={vpn:o.o.state.viewPageN,[`view-`+t]:null};e[`view-`+t]=null,(o.o.state.viewPageN===0||o.o.state.viewPageN===1)&&(e.vpn=null),(0,s.setHashs)(e,!1)}(0,r.querySelectorAllArray)(document,`.ui-widget-overlay`).filter(e=>(0,r.isVisible)(e)).length||(n.O.state.documentClassModificators.delete(`top-dialog`),document.querySelector(`html`).style.marginRight=``),$(e).trigger(`viewAfterClose`,[$(e)]);let a=(0,o.a)(t);a&&(a.isOpened.value=!1,a.emit?.(`close`,i),a.onCloseOnce&&=(a.onCloseOnce(a.props,i),void 0)),window.dispatchEvent(new Event(`resize`))},w=()=>{(0,r.querySelectorAllArray)(document,`.ui-dialog`).filter(e=>(0,r.isVisible)(e)&&e.querySelector(`:scope > .ui-dialog-content`)).map(e=>e.querySelector(`:scope > .ui-dialog-content`)).forEach(e=>{if(!e.querySelector(`.modal-body`))return;let t=e.closest(`.ui-dialog`),n=_(e);n.position??={of:window},$(e).dialog(`option`,n),t.classList.remove(`me-tightly`),(t.clientHeight??0)>window.innerHeight&&t.classList.add(`me-tightly`)})},T=async(e,t)=>{let n=/(\w+)[=-]([\w-]+)(?::([\w.:-]+))?/g.exec(e);if(n){let e=n[1],r=n[2],i=n[3],a=[];i&&(a=i.split(`:`)),await E(e,r,a,t)}},E=async(e,t,n,r,i)=>{m||await new Promise((e,t)=>{let n=setInterval(()=>{m&&(clearInterval(n),e())},10)}),await(0,l.nextTick)();let a;if(typeof e==`object`?(h(e)&&(e=e?.[0]),a=e):a=v(e),!a&&typeof e==`string`&&o.o.state.load&&(await o.o.state.load(e),a=v(e),!a))throw Error(`Dialog no exists: `+e);if(!a)return;await D(a,t,n,r);let s=$(a);if(a?.classList.contains(`ui-dialog-content`))s.dialog(`open`);else{let e=_(a);s.dialog(e)}i&&i(s)},D=async(e,t,n,o)=>{h(e)&&(e=e?.[0]),t===void 0&&(t=e.dataset.viewPageActive),n===void 0&&(n=e.dataset.args?.split(`:`)??[]),t!==e.dataset.viewPageActive&&N(e)&&await(0,a.sleep)(100),await y(e.getAttribute(`id`),void 0,t);let s=(0,r.querySelectorAllArray)(e,`.modal-layer`),c=s.reduce((e,t)=>{let n=t.querySelector(`:scope > .active`);return n&&e.push(n),e},[]),l=s.reduce((e,n)=>{let r=n.querySelector(`:scope > [data-view-page="${t}"]`);return r&&e.push(r),e},[]),u=n.join(`:`);if(o===void 0&&(o=`next`,(l[0]?.dataset.order??0)<(c[0]?.dataset.order??0)&&(o=`prev`)),!l.length)return;if(e.dataset.viewPageActive=t,e.dataset.args=n?.join(`:`)??``,l[0].classList.contains(`active`)){l[0].dataset.viewPageArgs!==u&&l.forEach(e=>{e.dataset.viewPageArgs=u}),A(e,l,t,n),j(e,l,t,n);return}l.forEach(e=>{e.dataset.viewPageArgs=u}),c.forEach(e=>{e.querySelector(`.top-popup-wrapper`)&&i.t.close(e.querySelector(`.top-popup-wrapper`))});let d=l[0].closest(`.ui-dialog`);switch(d&&!(0,r.isVisible)(d)&&(o=`none`),c.length||(o=`none`),(0,r.isVisible)(l[0])&&(o=`none`),o){case`prev`:l.forEach(e=>{let t=e.parentNode?.querySelector(`:scope > .active`);t&&e.parentNode?.insertBefore(e,t)}),c.forEach(e=>{e.classList.add(`right-to-center`,`reverse`)}),l.forEach(e=>{e.classList.add(`center-to-left`,`reverse`)});break;case`next`:l.forEach(e=>{let t=e.parentNode?.querySelector(`:scope > .active`);t&&e.parentNode?.insertBefore(e,t.nextSibling)}),c.forEach(e=>{e?.classList.add(`center-to-left`)}),l.forEach(e=>{e.classList.add(`right-to-center`)})}if(e.setAttribute(`view-page-active`,t),c.forEach(e=>{e.classList.remove(`active`)}),l.forEach(e=>{e.classList.add(`active`)}),A(e,l,t,n),o){e.classList.add(`i-change-page`);let r=Number(window.getComputedStyle(l[0]).animationDuration.replace(`s`,``))*1e3;p=setTimeout(function(){y(e.getAttribute(`id`),t,``),N(e),j(e,l,t,n)},r)}else await y(e.getAttribute(`id`),t,``),j(e,l,t,n)},O=e=>{let t=(0,r.querySelectorAllArray)(e,`.modal-layer`).reduce((e,t)=>{let n=t.querySelector(`:scope > .active`);return n&&e.push(n),e},[]).reduce((e,t)=>{let n=t.previousElementSibling;for(;n&&!n.hasAttribute(`data-view-page`);)n=n.previousElementSibling;return n&&e.push(n),e},[])[0]?.dataset.viewPage;t?D(e,t,void 0,`prev`):$(e).dialog(`close`)},k=new Set,A=(e,t,n,r)=>{let i=e.getAttribute(`id`)+t[0].dataset.viewPage+n+r.join();k.has(i)||(k.add(i),setTimeout(function(){k.delete(i),$(e).trigger(`viewBeforeOpen`,[$(e),$(t),n,r])}))},j=(e,t,n,r)=>{setTimeout(function(){$(e).trigger(`viewAfterOpen`,[$(e),$(t),n,r])})},M=e=>(h(e)&&(e=e?.[0]),e.classList.contains(`i-change-page`)),N=e=>{if(!M(e))return!1;clearTimeout(p);let t=(0,r.querySelectorAllArray)(e,`.modal-layer`),n=e.dataset.viewPageActive;return e.classList.remove(`i-change-page`),t.forEach(e=>{e.querySelectorAll(`:scope > [data-view-page]`).forEach(e=>{e.classList.remove(`center-to-left`,`right-to-center`,`reverse`,`active`)})}),t.forEach(e=>{e.querySelector(`:scope > [data-view-page="${n}"]`)?.classList.add(`active`)}),!0},P={getElDialogById:v,updatePageVue:y,recalcPositions:w,toViewDirty:T,toView:E,toViewPage:D,toPrevPage:O,setLoading:(e,t,n)=>{h(e)&&(e=e.toArray());let i=e.reduce((e,t)=>(t.hasAttribute(`data-view-page`)&&(0,r.isVisible)(t)&&e.push(t),e),[]);t?(n!==void 0&&i.forEach(e=>{e.style.setProperty(`--dialog-loading-duration`,n+`s`)}),i.forEach(e=>{e.classList.add(`i-load-data`)})):(i.forEach(e=>{e.classList.remove(`i-load-data`)}),i.forEach(e=>{e.style.setProperty(`--dialog-loading-duration`,`10s`)}))},isLoading:e=>(h(e)&&(e=e?.[0]),e.classList.contains(`i-load-data`)),inAnimation:M,close:function(e){let t=v(e);if(!t)return;let n=$(t);n.dialog(`instance`)&&n.dialog(`close`)}};t.TopDialogUtils=P,g()});
//# sourceMappingURL=utils-Cou0pGI4.amd.js.map

Sorry, the diff of this file is too big to display

import { O as e } from "./forms-_4U0sLFk.esm.js";
import { isVisible as t, querySelectorAllArray as n, querySelectorVisible as r } from "../utils/dom.js";
import { t as i } from "./worker-D28QqQ45.esm.js";
import { sleep as a, waitWhile as o } from "../utils/system.js";
import { a as s, o as c } from "./utils-BtqYaMHp.esm.js";
import { historySetState as l, setHashs as u } from "../utils/route.js";
import { connectScrollShadow as d } from "../utils/scroll.js";
import "../popup/worker.js";
import { nextTick as f } from "vue";
$;
//#endregion
//#region src/components/dialog/lib/utils.globalEvents.ts
var p = !1, m = () => {
p || (p = !0, document.addEventListener("keydown", (e) => {
if (e.key !== "Escape" || !e.target || !(e.target instanceof HTMLElement)) return;
let i = e.target;
if (!i.closest(".ui-dialog") || i.contentEditable === "true" || i.contentEditable === "plaintext-only" || r(document.documentElement, ".top-popup-wrapper") || i.classList.contains("autocomplete") || r(document.documentElement, ".fancybox-container")) return;
let a = n(document, ".ui-dialog-content").filter((e) => t(e));
$(a[a.length - 1]).dialog("close");
}), document.addEventListener("click", (e) => {
if (!(e.target instanceof HTMLElement)) return;
let r = e.target.closest("[data-action=\"top-dialog-close\"]");
if (!r) return;
e.preventDefault();
let i = r.closest(".ui-dialog-content");
if (!i) return;
let a = r.dataset.toView;
if (a == "toPrevPage()") {
I.toPrevPage(i);
return;
}
if (a) {
let e = a.split("-"), r = e.shift(), i = e.join("-");
if (!r) return;
let o = I.getElDialogById(r);
if (!o) return;
let s = n(o, `[data-view-page="${i}"]`);
if (!s) return;
if (!t(s[0])) {
l(!1, c.genViewPageHash(a, "prev"));
return;
}
}
$(i).dialog("close");
}), document.addEventListener("submit", (e) => {
let t = e.target;
(t.matches(".modal-body > form") || t.matches(".modal-layer-body > form")) && e.preventDefault();
}), document.addEventListener("keypress", (e) => {
if (!(e.target instanceof HTMLElement)) return;
let r = e.target;
if (r.closest(".ui-dialog .modal-body") && (r.matches("input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)") || r.hasAttribute("contenteditable")) && e.key === "Enter") {
if (r.classList.contains("autocomplete")) {
e.preventDefault();
return;
}
if (r.tagName === "TEXTAREA") {
if (!e.ctrlKey && !e.metaKey) return;
let i = r.closest("form");
i && n(i, "button[type=\"submit\"]").concat(n(i, "input[type=\"submit\"]")).find((e) => t(e))?.click();
}
}
}), document.addEventListener("click", function(e) {
if (!(e.target instanceof HTMLElement) || !e.target.classList.contains("ui-widget-overlay")) return;
let r, i = 0;
if (n(document, ".ui-dialog").filter((e) => t(e)).forEach((e) => {
let t = Number(window.getComputedStyle(e).zIndex);
t < i || (r = e, i = t);
}), r) {
let e = r.querySelector(".ui-dialog-content");
$(e).dialog("close");
}
}), window.addEventListener("resize", I.recalcPositions), I.recalcPositions());
};
e.insertStyleToPage(":root{--dialog-border-color:var(--color-line-1);--dialog-loading-duration:10s;--top-dialog-footer-height:var(--top-forms-base-height_s)}html.with_dialog{overflow:hidden!important}a[data-to-view]{cursor:pointer}.ui-widget-overlay{opacity:.5;filter:Alpha(Opacity=50);background:#040404}.ui-dialog{border:none;border-radius:8px;padding:0}.ui-dialog.ui-widget{border:none}.ui-dialog-titlebar{display:none}.ui-dialog .ui-dialog-content{padding:0;overflow:visible}.ui-dialog .project_name{word-break:break-all}.ui-dialog-content{--dialog-header-height:50px;--dialog-layer-pageSelector:0px}.ui-dialog-content-withPageSelector{--dialog-layer-pageSelector:42px}.modal-header,.modal-body,.modal-footer{font-size:14px;position:relative}.modal-body{padding:var(--padding-default)}.modal-body:has(>.topTable:first-child){padding-top:calc(var(--padding-default) / 4)}.modal-header{border-bottom:1px solid var(--dialog-border-color);height:var(--dialog-header-height);padding:0 var(--padding-default);justify-content:space-between;align-items:center;gap:var(--top-padding-2);display:flex}.modal-header>*{padding:10px 0;font-size:16px}.modal-header>.top-title{text-overflow:ellipsis;white-space:nowrap;flex-grow:1;order:50;align-items:center;margin:0;font-weight:400;display:flex;overflow:hidden}.modal-header>.top-title>div[class*=icon]{display:none}.modal-header>div:not(.top-title){order:60}.modal-header>div.close{--top-icon-color:var(--color-text-2);cursor:pointer;background:var(--color-layout-front-1);order:100;font-size:16px;animation-name:none!important}.modal-header>div.close:hover{--top-icon-color:var(--color-text-1)}.modal-header .links_icons{position:absolute;right:50px}.modal-header .links_icons [class*=icon-]{color:#d6dee0;width:auto;height:auto;padding:0 5px}.modal-header .links_icons [class*=icon-].active{color:var(--color-bg-warning-1)}.modal-layer-pageSelector{padding:0 10px!important}.modal-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - 1px - var(--dialog-layer-pageSelector) - var(--top-dialog-footer-height) - 1px);box-sizing:border-box;flex-grow:1;overflow:hidden auto}.modal-body hr{margin:16px -15px}.modal-body h4{margin:0 0 10px;padding:0;line-height:normal}.modal-body .inner{padding:var(--padding-default);margin:0 calc(0px - var(--padding-default));position:relative}.modal-body .inner .bt{border-top:1px dashed var(--color-layout-front-primary-3);position:absolute;top:0;left:0;right:0}.modal-body .inner .bb{border-bottom:1px dashed var(--color-layout-front-primary-3);position:absolute;bottom:0;left:0;right:0}.modal-body .inner.color-1{background:var(--color-layout-front-primary-3);color:var(--color-text-1)}.modal-body .inner strong{color:var(--color-text-1)}.modal-body .comment{line-height:18px}.modal-footer{min-height:var(--top-dialog-footer-height);padding:var(--top-gap-2);justify-content:flex-end;align-items:center;gap:var(--top-gap-2);flex-shrink:0;display:flex}.modal-footer .modal-footer-btn-left{margin-right:auto}.modal-footer>.btn.full_width,.modal-footer>.top-button.full_width{flex-grow:1;align-self:flex-end}.modal-footer-fullWith{flex-wrap:wrap}.modal-footer-fullWith>*{flex-grow:1}.modal-footer-fullWith>.top-info{flex-grow:5}.modal-footer-fullWith>:empty{flex-grow:0}.ui-dialog-content>.modal-layer>[data-view-page]>input[type=submit]{visibility:hidden;position:absolute}.help_popup .modal-header{display:none}.help_popup .modal-header a{z-index:10;top:2px}.help_popup .modal-header .top-title{display:none}.modal-layer{overflow:hidden}.modal-layer a[data-top-icon]:empty{color:var(--color-text-4);text-decoration:none}.modal-layer>[data-view-page]>div>div.buttons{white-space:nowrap;gap:var(--top-padding-1);display:flex}.modal-layer>[data-view-page]>div>div.buttons:empty{display:none}.modal-layer>[data-view-page]>div>div.buttons>div,.modal-layer>[data-view-page]>div>div.buttons>a{cursor:pointer;width:auto;min-width:auto;height:auto;min-height:auto;color:var(--color-text-4);padding:10px 9px}.modal-layer>[data-view-page]>div>div.buttons>div:hover{color:var(--color-text-2)}.modal-layer>[data-view-page]>div>div.buttons>div.hidden{display:none!important}.ui-dialog-content[data-view-page-active]{flex-direction:column;justify-items:stretch;display:flex!important}.ui-dialog-content>.modal-layer{align-items:stretch;position:relative;display:flex!important}.ui-dialog-content.i-change-page>.modal-layer{overflow:hidden}.ui-dialog-content>.modal-layer>[data-view-page]{flex-direction:column;justify-content:space-between;width:100%;animation:none;display:none;position:relative}.ui-dialog-content>.modal-layer>[data-view-page].active{display:flex}.ui-dialog-content>.modal-layer>[data-view-page].reverse{animation-direction:reverse}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center{display:flex;position:absolute;inset:0}.ui-dialog-content>.modal-layer>[data-view-page].center-to-left>div,.ui-dialog-content>.modal-layer>[data-view-page].right-to-center>div{overflow:hidden}.ui-dialog-content>.modal-layer-header{border-bottom:1px solid var(--dialog-border-color);min-height:var(--dialog-header-height)}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header{background:0 0;border:none}.ui-dialog-content>.modal-layer-header>[data-view-page]>.modal-header>*{animation:none}.ui-dialog-content>.modal-layer-header>[data-view-page].reverse>.modal-header>*{animation-direction:reverse}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>.top-title{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>.top-title{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>[class*=widget-]{animation-name:dialog-center-to-left-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>[class*=widget-]{animation-name:dialog-right-to-center-header-title}.ui-dialog-content>.modal-layer-header>[data-view-page].center-to-left>.modal-header>div{animation-name:dialog-center-to-left-header-icons}.ui-dialog-content>.modal-layer-header>[data-view-page].right-to-center>.modal-header>div{animation-name:dialog-right-to-center-header-icons}.ui-dialog-content>.modal-layer-body{max-height:calc(var(--100vh) - var(--dialog-header-height) - var(--dialog-layer-pageSelector) - var(--toolbar-height));border-radius:0 0 8px 8px;flex-grow:2}.ui-dialog-content.i-change-page>.modal-layer-body>[data-view-page]{background:var(--color-layout-front-1)}.ui-dialog-content>.modal-layer-body>[data-view-page].center-to-left{animation-name:dialog-center-to-left}.ui-dialog-content>.modal-layer-body>[data-view-page].right-to-center{animation-name:dialog-right-to-center}.ui-dialog-content .modal-footer .second_level{box-sizing:border-box;background:var(--color-layout-front-1);justify-content:center;align-items:center;width:100%;min-height:25px;display:flex}.ui-dialog-content .modal-footer .second_level input{width:100%;height:var(--top-forms-base-height);padding:var(--top-padding-1) var(--top-padding-3);box-sizing:border-box;border-radius:8px}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data{pointer-events:none}.ui-dialog-content>.modal-layer-body>[data-view-page].i-load-data:before{content:\" \";z-index:100;width:0;height:4px;animation:top-loadbar var(--dialog-loading-duration) forwards;background:#378dc6;position:absolute;top:0;left:0}.ui-dialog-content.modal-expanded{width:100vw!important;height:calc(var(--100vh) + 10px)!important}.modal-header>[data-widget]{opacity:0;visibility:hidden;z-index:1;align-items:center;padding:0 8px;transition:opacity .3s;position:absolute;inset:0;overflow:hidden}.modal-header>[data-widget=search] div.cancel{opacity:0;transition:transform .3s,opacity .3s;transform:translate(100%)}[data-view-page].i-show-search .modal-header>:not([data-widget=search]){visibility:hidden}[data-view-page].i-show-search [data-widget=search]{visibility:visible;opacity:1}[data-view-page].i-show-search [data-widget=search] .cancel{opacity:1;transform:translate(0)}[data-view-page]>.modal-header>*{transition:opacity .3s}[data-view-page].i-show-search>.modal-header>div.buttons{opacity:0}.modal-layer .top-popup-wrapper{height:100%!important}@keyframes dialog-center-to-left-header-title{0%{opacity:1;transform:translate(0)}75%{opacity:0}to{opacity:0;transform:translate(-30%)}}@keyframes dialog-right-to-center-header-title{0%{opacity:0;transform:translate(100%)}25%{opacity:0}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left-header-icons{0%{opacity:1;transform:translate(0)}35%{opacity:0;transform:translate(-20%)}to{opacity:0;transform:translate(-20%)}}@keyframes dialog-right-to-center-header-icons{0%{opacity:0;transform:translate(20%)}65%{opacity:0;transform:translate(20%)}to{opacity:1;transform:translate(0)}}@keyframes dialog-center-to-left{0%{filter:brightness();transform:translate(0)}to{filter:brightness(.9);transform:translate(-30%)}}@keyframes dialog-right-to-center{0%{transform:translate(100%);box-shadow:0 0 10px #0000001a}to{transform:translate(0);box-shadow:0 0 10px #0003}}@media only screen and (max-width:1480px){.win_side_panel_opener{display:none}}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);top:calc(var(--dialog-header-height) + 1px + var(--dialog-layer-pageSelector));bottom:calc(var(--top-dialog-footer-height) + 1px);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}@media only screen and (max-height:900px){html.with_dialog{background:#f1f1f1;overflow:hidden}.ui-dialog.me-tightly{border-radius:0;position:fixed;height:auto!important;top:0!important;bottom:0!important}.ui-dialog.me-tightly .ui-dialog-content{min-height:100%!important}.ui-dialog.me-tightly>div>.modal-body{top:var(--dialog-header-height);left:0;right:0;bottom:var(--dialog-header-height);position:absolute}.ui-dialog.me-tightly>div>.modal-body:last-child{bottom:0}.ui-dialog.me-tightly>div>.modal-footer{position:absolute;bottom:0;left:0;right:0}.ui-dialog.me-tightly .modal-layer-body{border-radius:0;min-height:0!important}.ui-dialog.me-tightly .modal-layer-body .modal-footer{min-height:unset}}"), e.insertStyleToPage("html.with_dialog body{height:var(--100vh);overflow:hidden}.ui-widget-overlay{height:calc(100% - var(--toolbar-height))}.ui-dialog{border-radius:0;position:fixed;width:auto!important;height:auto!important;inset:0!important}.ui-dialog-content{width:100%!important;min-width:0!important;max-width:100%!important;height:100%!important}.modal-header>.top-title{text-align:center;font-size:14px}.modal-header>div.close{order:1;font-size:14px}.modal-header>div.close:before{content:\"\"}.modal-body:last-child,.modal-footer{bottom:0}.modal-footer .second_level{padding:10px 8px}.modal-layer-body{min-height:0!important}.ui-dialog-content>.modal-layer-body{border-radius:0}.modal-body,.modal-footer{padding-left:12px;padding-right:12px}.modal-footer .btn:last-child{margin-right:12px}.modal-body .inner{margin:0 -12px;padding:12px;position:relative}", "m"), e.insertStyleToPage(".modal-menu-opener{order:1!important}.modal-menu-opener:before{--top-icon-size:20px;--top-icon-color:#fff;--top-icon-width:var(--top-icon-size);background:var(--color-bg-primary-1);border-radius:50%;padding:3px;transition:transform .1s}.modal-menu-opener:hover:before{background:var(--color-bg-primary-2)}.modal-menu-opener.top-active:before{background:var(--color-bg-primary-2);transform:scale(.8)}.modal-layer .top-popup-wrapper{background:0 0;transition:background .3s;width:auto!important;margin:0!important;padding:0!important;top:0!important;left:0!important;right:0!important}.modal-layer .top-popup-wrapper>.top-popup[class],.modal-layer .top-popup-wrapper.with_notch>.top-popup[class]{opacity:1;border:none;border-radius:8px;flex-direction:column;max-width:100%;max-height:calc(100% - 24px);transition:transform .3s;display:flex;overflow:auto;transform:translateY(calc(-100% - 24px));margin:12px!important;inset:0 0 auto!important}.modal-layer .top-popup>.top-popup_header{background:var(--color-theme-50)}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select{border:none}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .text{color:#fff}.modal-layer .top-theme-lite .top-popup>.top-popup_header .select .arrow{background:0 0}.modal-layer .top-popup-wrapper-shown:not(.top-popup-wrapper-closed){pointer-events:auto;background:#34495e40}@media only screen and (min-width:1480px){.ui-dialog-content.with_side_panel{box-shadow:0 0 6px #0003}.ui-dialog-content.with_side_panel .modal-layer-body{background:var(--color-layout-front-1)}[data-widget=side_panel]{--side_panel_width:calc((100vw - 900px) / 2 - 28px);box-sizing:border-box;background:var(--color-layout-front-1);max-width:var(--side_panel_width);z-index:-1;padding:18px;transition:all .2s;display:block;position:absolute;top:51px;bottom:51px}.win_side_panel_left{border-radius:8px 0 0 8px;right:100%}.win_side_panel_right{border-radius:0 8px 8px 0;left:100%}.win_side_panel_closed.win_side_panel_left{right:calc(100% - var(--side_panel_width))}.win_side_panel_closed.win_side_panel_right{left:calc(100% - var(--side_panel_width))}[data-widget=side_panel] .template{display:block}[data-widget=side_panel] .template>.header,[data-widget=side_panel] .template>.footer{display:flex}.win_side_panel_opener{cursor:pointer;background:var(--color-cyan);color:#fff;padding:4px;position:absolute;top:20px}.win_side_panel_closed .win_side_panel_opener:not(:hover){opacity:.3}.win_side_panel_left .win_side_panel_opener{border-radius:4px 0 0 4px;right:100%}.win_side_panel_right .win_side_panel_opener{border-radius:0 6px 6px 0;left:100%}}", "pc"), e.insertStyleToPage("html{--top-dialog-width:auto;--top-dialog-height:auto}.top-dialog{max-width:100vw}.top-dialog .modal-layer-body{height:var(--top-dialog-height)}"), e.insertStyleToPage(".top-dialog{width:var(--top-dialog-width)!important}", "pc");
var h, g = !1, _ = (e) => !!e && typeof e == "object" && "jquery" in e, v = () => {
$.extend($.ui.dialog.prototype.options, {
focus: (e) => {
e.target.focus(), $("[autofocus]", e.target)[0]?.focus();
},
create: (e) => S(e.target),
open: (e) => w(e.target),
close: (e) => T(e.target),
modal: !0,
resizable: !1,
closeOnEscape: !1,
width: "auto",
minHeight: 0
}), $.ui.dialog.prototype._focusTabbable = $.noop, $.ui.dialog.prototype._moveToTopOriginal = $.ui.dialog.prototype._moveToTop, $.ui.dialog.prototype._moveToTop = function() {
this._moveToTopOriginal();
let e = $(this.element);
e.trigger("dialogsMoveToTop", [e]);
}, m(), g = !0;
}, y = (e) => {
let t = {};
return e.dataset?.modal === "false" && (t.modal = !1), e.dataset?.position && (t.position = JSON.parse(e.dataset.position)), t;
}, b = (e) => document.getElementById(e), x = async (e, t, n) => {
if (!e.startsWith("dialog_")) return;
let r = s(e);
if (r && (r.isOpened.value = !0, t !== void 0 && (r.pageActive.value = t), n !== void 0 && (r.pageActiveNext.value = n), await f(), n)) {
let t = b(e);
if (!t) return;
t.querySelectorAll(`[data-view-page="${n}"]`).length || await o(() => !t.querySelectorAll(`[data-view-page="${n}"]`).length);
}
}, S = (e) => {
let t = n(e, ".modal-body");
t.forEach((e) => {
d(e);
}), t.length && (c.state.decoratorOnCreate?.(e), C(e));
}, C = (e) => {
$(e).on("aftershow.top-menu-popup", "[data-top-popup]", (e, t) => {
let n = t[0];
c.getPairPage(n)?.[1]?.prepend(n);
});
}, w = async (t) => {
let n = t.dataset.viewPageActive, r = t.dataset.args ? t.dataset.args?.split(":") : [], i = window.innerWidth;
e.state.documentClassModificators.set("top-dialog", "with_dialog");
let a = window.innerWidth - i;
document.documentElement.scrollHeight > window.innerHeight && (document.querySelector("html").style.marginRight = a + "px"), E(), s(t.getAttribute("id"))?.emit?.("open", n, r);
}, T = async (r) => {
let i = r.getAttribute("id"), a = r.dataset.viewPageActive;
if (a) {
let e = {
vpn: c.state.viewPageN,
["view-" + i]: null
};
e["view-" + i] = null, (c.state.viewPageN === 0 || c.state.viewPageN === 1) && (e.vpn = null), u(e, !1);
}
n(document, ".ui-widget-overlay").filter((e) => t(e)).length || (e.state.documentClassModificators.delete("top-dialog"), document.querySelector("html").style.marginRight = ""), $(r).trigger("viewAfterClose", [$(r)]);
let o = s(i);
o && (o.isOpened.value = !1, o.emit?.("close", a), o.onCloseOnce &&= (o.onCloseOnce(o.props, a), void 0)), window.dispatchEvent(new Event("resize"));
}, E = () => {
n(document, ".ui-dialog").filter((e) => t(e) && e.querySelector(":scope > .ui-dialog-content")).map((e) => e.querySelector(":scope > .ui-dialog-content")).forEach((e) => {
if (!e.querySelector(".modal-body")) return;
let t = e.closest(".ui-dialog"), n = y(e);
n.position ??= { of: window }, $(e).dialog("option", n), t.classList.remove("me-tightly"), (t.clientHeight ?? 0) > window.innerHeight && t.classList.add("me-tightly");
});
}, D = async (e, t) => {
let n = /(\w+)[=-]([\w-]+)(?::([\w.:-]+))?/g.exec(e);
if (n) {
let e = n[1], r = n[2], i = n[3], a = [];
i && (a = i.split(":")), await O(e, r, a, t);
}
}, O = async (e, t, n, r, i) => {
g || await new Promise((e, t) => {
let n = setInterval(() => {
g && (clearInterval(n), e());
}, 10);
}), await f();
let a;
if (typeof e == "object" ? (_(e) && (e = e?.[0]), a = e) : a = b(e), !a && typeof e == "string" && c.state.load && (await c.state.load(e), a = b(e), !a)) throw Error("Dialog no exists: " + e);
if (!a) return;
await k(a, t, n, r);
let o = $(a);
if (a?.classList.contains("ui-dialog-content")) o.dialog("open");
else {
let e = y(a);
o.dialog(e);
}
i && i(o);
}, k = async (e, r, o, s) => {
_(e) && (e = e?.[0]), r === void 0 && (r = e.dataset.viewPageActive), o === void 0 && (o = e.dataset.args?.split(":") ?? []), r !== e.dataset.viewPageActive && F(e) && await a(100), await x(e.getAttribute("id"), void 0, r);
let c = n(e, ".modal-layer"), l = c.reduce((e, t) => {
let n = t.querySelector(":scope > .active");
return n && e.push(n), e;
}, []), u = c.reduce((e, t) => {
let n = t.querySelector(`:scope > [data-view-page="${r}"]`);
return n && e.push(n), e;
}, []), d = o.join(":");
if (s === void 0 && (s = "next", (u[0]?.dataset.order ?? 0) < (l[0]?.dataset.order ?? 0) && (s = "prev")), !u.length) return;
if (e.dataset.viewPageActive = r, e.dataset.args = o?.join(":") ?? "", u[0].classList.contains("active")) {
u[0].dataset.viewPageArgs !== d && u.forEach((e) => {
e.dataset.viewPageArgs = d;
}), M(e, u, r, o), N(e, u, r, o);
return;
}
u.forEach((e) => {
e.dataset.viewPageArgs = d;
}), l.forEach((e) => {
e.querySelector(".top-popup-wrapper") && i.close(e.querySelector(".top-popup-wrapper"));
});
let f = u[0].closest(".ui-dialog");
switch (f && !t(f) && (s = "none"), l.length || (s = "none"), t(u[0]) && (s = "none"), s) {
case "prev":
u.forEach((e) => {
let t = e.parentNode?.querySelector(":scope > .active");
t && e.parentNode?.insertBefore(e, t);
}), l.forEach((e) => {
e.classList.add("right-to-center", "reverse");
}), u.forEach((e) => {
e.classList.add("center-to-left", "reverse");
});
break;
case "next":
u.forEach((e) => {
let t = e.parentNode?.querySelector(":scope > .active");
t && e.parentNode?.insertBefore(e, t.nextSibling);
}), l.forEach((e) => {
e?.classList.add("center-to-left");
}), u.forEach((e) => {
e.classList.add("right-to-center");
});
break;
}
if (e.setAttribute("view-page-active", r), l.forEach((e) => {
e.classList.remove("active");
}), u.forEach((e) => {
e.classList.add("active");
}), M(e, u, r, o), s) {
e.classList.add("i-change-page");
let t = Number(window.getComputedStyle(u[0]).animationDuration.replace("s", "")) * 1e3;
h = setTimeout(function() {
x(e.getAttribute("id"), r, ""), F(e), N(e, u, r, o);
}, t);
} else await x(e.getAttribute("id"), r, ""), N(e, u, r, o);
}, A = (e) => {
let t = n(e, ".modal-layer").reduce((e, t) => {
let n = t.querySelector(":scope > .active");
return n && e.push(n), e;
}, []).reduce((e, t) => {
let n = t.previousElementSibling;
for (; n && !n.hasAttribute("data-view-page");) n = n.previousElementSibling;
return n && e.push(n), e;
}, [])[0]?.dataset.viewPage;
t ? k(e, t, void 0, "prev") : $(e).dialog("close");
}, j = /* @__PURE__ */ new Set(), M = (e, t, n, r) => {
let i = e.getAttribute("id") + t[0].dataset.viewPage + n + r.join();
j.has(i) || (j.add(i), setTimeout(function() {
j.delete(i), $(e).trigger("viewBeforeOpen", [
$(e),
$(t),
n,
r
]);
}));
}, N = (e, t, n, r) => {
setTimeout(function() {
$(e).trigger("viewAfterOpen", [
$(e),
$(t),
n,
r
]);
});
}, P = (e) => (_(e) && (e = e?.[0]), e.classList.contains("i-change-page")), F = (e) => {
if (!P(e)) return !1;
clearTimeout(h);
let t = n(e, ".modal-layer"), r = e.dataset.viewPageActive;
return e.classList.remove("i-change-page"), t.forEach((e) => {
e.querySelectorAll(":scope > [data-view-page]").forEach((e) => {
e.classList.remove("center-to-left", "right-to-center", "reverse", "active");
});
}), t.forEach((e) => {
e.querySelector(`:scope > [data-view-page="${r}"]`)?.classList.add("active");
}), !0;
}, I = {
getElDialogById: b,
updatePageVue: x,
recalcPositions: E,
toViewDirty: D,
toView: O,
toViewPage: k,
toPrevPage: A,
setLoading: (e, n, r) => {
_(e) && (e = e.toArray());
let i = e.reduce((e, n) => (n.hasAttribute("data-view-page") && t(n) && e.push(n), e), []);
n ? (r !== void 0 && i.forEach((e) => {
e.style.setProperty("--dialog-loading-duration", r + "s");
}), i.forEach((e) => {
e.classList.add("i-load-data");
})) : (i.forEach((e) => {
e.classList.remove("i-load-data");
}), i.forEach((e) => {
e.style.setProperty("--dialog-loading-duration", "10s");
}));
},
isLoading: (e) => (_(e) && (e = e?.[0]), e.classList.contains("i-load-data")),
inAnimation: P,
close: function(e) {
let t = b(e);
if (!t) return;
let n = $(t);
n.dialog("instance") && n.dialog("close");
}
};
v();
//#endregion
export { I as TopDialogUtils };
//# sourceMappingURL=utils-Cou0pGI4.esm.js.map
{"version":3,"file":"utils-Cou0pGI4.esm.js","names":[],"sources":["../../src/storybook/jquery.ts","../../src/components/dialog/lib/utils.globalEvents.ts","../../src/components/dialog/dialog/style/dialog.css?inline","../../src/components/dialog/dialog/style/dialog.m.css?inline","../../src/components/dialog/dialog/style/dialog.pc.css?inline","../../src/components/dialog/dialog/style/modern/dialog.css?inline","../../src/components/dialog/dialog/style/modern/dialog.pc.css?inline","../../src/components/dialog/lib/utils.ts"],"sourcesContent":["/**\n * см. /.storybook/preview-head.html\n */\nexport default $;\n","import { TopDialogUtils } from './utils';\nimport { TopDialogWorker } from './worker';\nimport { isVisible, querySelectorAllArray, querySelectorVisible } from '@/core/utils/dom';\nimport { historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogWrapper } from '@/components/dialog/lib/types';\n\nlet inited = false;\n\n/**\n * Инициализация глобальных событий для диалоговых окон\n *\n * Производится один раз при подключении диалогового окна\n *\n * События не размонтируются\n */\nexport const initDialogGlobalEvents = () => {\n\tif (inited) return;\n\tinited = true;\n\n\t/**\n\t * Закрытие диалога по Esc\n\t */\n\tdocument.addEventListener('keydown', (e) => {\n\t\tif (e.key !== 'Escape') return;\n\t\tif (!e.target || !(e.target instanceof HTMLElement)) return;\n\n\t\tconst el = e.target;\n\n\t\t// событие произошло вне диалогового окна\n\t\tif (!el.closest('.ui-dialog')) return;\n\n\t\tif (el.contentEditable === 'true' || el.contentEditable === 'plaintext-only') return;\n\n\t\t// не закрывать окно при открытом TopPopup\n\t\tif (querySelectorVisible(document.documentElement, '.top-popup-wrapper')) return;\n\n\t\t// не закрывать окно при работе с jquery autocomplete\n\t\tif (el.classList.contains('autocomplete')) return;\n\n\t\t// не закрывать окно при открытом fancybox\n\t\tif (querySelectorVisible(document.documentElement, '.fancybox-container')) return;\n\n\t\tconst elDialogs = querySelectorAllArray<ElTopDialog>(document, '.ui-dialog-content').filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t});\n\n\t\t$(elDialogs[elDialogs.length - 1]).dialog('close');\n\t});\n\n\t/**\n\t * Закрытие диалога по кнопке закрыть\n\t */\n\tdocument.addEventListener('click', (e) => {\n\t\t// // навигация без истории\n\t\t// var $dialog = $(this).closest('.ui-dialog-content');\n\t\t// var viewName = $dialog.attr('id');\n\t\t// var pageName = getHash('view-' + viewName);\n\t\t// if (!pageName) {\n\t\t// \ttoPrevPage($dialog);\n\t\t//\n\t\t// \treturn;\n\t\t// }\n\t\t//\n\t\t// // навигация по истории\n\t\t// if (Core.state.isMobile && history.length > 1 && $(this).closest('.modal-layer').length) {\n\t\t// \tvar href = location.href;\n\t\t//\n\t\t// \thistory.go(-1);\n\t\t//\n\t\t// \tsetTimeout(() => {\n\t\t// \t\t// это первая страница в истории вкладки браузера\n\t\t// \t\tif (href === location.href) $(e.target).closest('.ui-dialog-content').dialog('close');\n\t\t// \t});\n\t\t// } else {\n\t\t// \t$(this).closest('.ui-dialog-content').dialog('close');\n\t\t// }\n\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst el = e.target.closest('[data-action=\"top-dialog-close\"]') as HTMLElement | null;\n\t\tif (!el) return;\n\n\t\te.preventDefault();\n\n\t\tconst elDialog = el.closest<ElTopDialog>('.ui-dialog-content');\n\t\tif (!elDialog) return;\n\n\t\t// если к кнопке привязана ссылка, диалоговое окно не нужно закрывать\n\t\tconst toView = el.dataset.toView;\n\n\t\tif (toView == 'toPrevPage()') {\n\t\t\tTopDialogUtils.toPrevPage(elDialog);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (toView) {\n\t\t\tconst viewNameAndPageLink = toView.split('-');\n\t\t\tconst viewName = viewNameAndPageLink.shift();\n\t\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\t\tif (!viewName) return;\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\t\t\tif (!elDialog) return;\n\n\t\t\tconst elToPages = querySelectorAllArray(elDialog, `[data-view-page=\"${pageLink}\"]`);\n\t\t\tif (!elToPages) return;\n\n\t\t\tif (!isVisible(elToPages[0])) {\n\t\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, 'prev');\n\n\t\t\t\t// // не убирает кнопку \"Вперед\" в браузере\n\t\t\t\t// history.replaceState(null, '', hash);\n\t\t\t\t// toViewDirty(toView, 'prev');\n\n\t\t\t\t// // добавляет текущую страницу в историю браузера\n\t\t\t\thistorySetState(false, hash);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst $dialog = $(elDialog);\n\n\t\t$dialog.dialog('close');\n\t});\n\n\t/**\n\t * Все submit должны обрабатываться через js\n\t */\n\tdocument.addEventListener('submit', (e) => {\n\t\tconst elForm = e.target as HTMLElement;\n\n\t\tif (elForm.matches('.modal-body > form') || elForm.matches('.modal-layer-body > form')) {\n\t\t\te.preventDefault();\n\t\t}\n\t});\n\n\t/**\n\t * Выполнение действия по нажатию Enter\n\t *\n\t * @todo Убрать `.searcher`\n\t */\n\tdocument.addEventListener('keypress', (e) => {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst eventTarget = e.target;\n\n\t\tconst elModalBody = eventTarget.closest('.ui-dialog .modal-body');\n\t\tif (!elModalBody) return;\n\n\t\tconst isInput =\n\t\t\teventTarget.matches('input:not(.searcher), textarea:not(.searcher), select:not(.searcher), button:not(.searcher)')\n\t\t\t|| eventTarget.hasAttribute('contenteditable');\n\t\tif (!isInput) return;\n\n\t\t// if (e.keyCode !== 10 && e.key !== 'ENTER') return;\n\t\tif (e.key !== 'Enter') return;\n\n\t\t// не выполнять submit действий при работе с jquery autocomplete\n\t\tif (eventTarget.classList.contains('autocomplete')) {\n\t\t\te.preventDefault();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (eventTarget.tagName === 'TEXTAREA') {\n\t\t\tif (!e.ctrlKey && !e.metaKey) return;\n\n\t\t\tconst elForm = eventTarget.closest('form');\n\n\t\t\tif (elForm) {\n\t\t\t\t// Find visible submit buttons\n\t\t\t\tconst elSubmitButton = querySelectorAllArray(elForm, 'button[type=\"submit\"]')\n\t\t\t\t\t.concat(querySelectorAllArray(elForm, 'input[type=\"submit\"]'))\n\t\t\t\t\t.find((elSubmitButton) => {\n\t\t\t\t\t\treturn isVisible(elSubmitButton);\n\t\t\t\t\t});\n\n\t\t\t\telSubmitButton?.click();\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Закрытие диалога по клику вне окна\n\t */\n\tdocument.addEventListener('click', function (event) {\n\t\tif (!(event.target instanceof HTMLElement)) return;\n\n\t\tconst eventTarget = event.target;\n\n\t\tif (!eventTarget.classList.contains('ui-widget-overlay')) return;\n\n\t\tlet elDialogWrapperWithTopZIndex: ElTopDialogWrapper | undefined;\n\t\tlet topZIndex = 0;\n\n\t\tconst elDialogWrapperVisibles = querySelectorAllArray<ElTopDialogWrapper>(document, '.ui-dialog').filter((elDialogWrapper) => {\n\t\t\treturn isVisible(elDialogWrapper);\n\t\t});\n\n\t\telDialogWrapperVisibles.forEach((elDialogWrapper) => {\n\t\t\tconst zIndex = Number(window.getComputedStyle(elDialogWrapper).zIndex);\n\t\t\tif (zIndex < topZIndex) return;\n\n\t\t\telDialogWrapperWithTopZIndex = elDialogWrapper;\n\t\t\ttopZIndex = zIndex;\n\t\t});\n\n\t\tif (elDialogWrapperWithTopZIndex) {\n\t\t\tconst elDialog = elDialogWrapperWithTopZIndex.querySelector('.ui-dialog-content');\n\n\t\t\t$(elDialog).dialog('close');\n\t\t}\n\t});\n\n\twindow.addEventListener('resize', TopDialogUtils.recalcPositions);\n\tTopDialogUtils.recalcPositions();\n};\n",":root {\n\t--dialog-border-color: var(--color-line-1);\n\t--dialog-loading-duration: 10s;\n\n\t--top-dialog-footer-height: var(--top-forms-base-height_s);\n}\n\nhtml.with_dialog { overflow: hidden !important; }\n\na[data-to-view] { cursor: pointer; }\n\n/* common */\n.ui-widget-overlay { background: #040404; opacity: 0.50; filter: Alpha(Opacity=50); }\n.ui-dialog { border-radius: 8px; border: none; padding: 0; }\n.ui-dialog.ui-widget { border: none; }\n.ui-dialog-titlebar { display: none; }\n.ui-dialog .ui-dialog-content { padding: 0; overflow: visible; }\n.ui-dialog .project_name { word-break: break-all; }\n\n.ui-dialog-content {\n\t--dialog-header-height: 50px;\n\t--dialog-layer-pageSelector: 0px;\n}\n.ui-dialog-content-withPageSelector {\n\t--dialog-layer-pageSelector: 42px;\n}\n\n.modal-header,\n.modal-body,\n.modal-footer { font-size: 14px; position: relative; }\n.modal-body { padding: var(--padding-default); }\n.modal-body:has(> .topTable:first-child) {\n\tpadding-top: calc(var(--padding-default) / 4);\n}\n\n/* modal-header */\n.modal-header {\n\tborder-bottom: 1px solid var(--dialog-border-color); height: var(--dialog-header-height); padding: 0 var(--padding-default);\n\tdisplay: flex; justify-content: space-between; align-items: center; gap: var(--top-padding-2);\n}\n.modal-header > * { padding: 10px 0; font-size: 16px; }\n.modal-header > .top-title {\n\tmargin: 0;\n\tfont-weight: normal;\n\toverflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n\tflex-grow: 1; order: 50; display: flex; align-items: center;\n}\n.modal-header > .top-title > div[class*=icon] { display: none; }\n.modal-header > div:not(.top-title) { order: 60; }\n.modal-header > div.close {\n\t--top-icon-color: var(--color-text-2);\n\n\tcursor: pointer;\n\tbackground: var(--color-layout-front-1); font-size: 16px;\n\torder: 100;\n\tanimation-name: none !important;\n}\n.modal-header > div.close:hover {\n\t--top-icon-color: var(--color-text-1);\n}\n\n.modal-header .links_icons { position: absolute; right: 50px; }\n.modal-header .links_icons [class*=\"icon-\"] { width: auto; height: auto; padding: 0 5px; color: #D6DEE0; }\n.modal-header .links_icons [class*=\"icon-\"].active { color: var(--color-bg-warning-1); }\n\n.modal-layer-pageSelector { padding: 0 10px !important; }\n\n/* modal-body */\n.modal-body {\n\tmax-height: calc(var(--100vh) - var(--dialog-header-height) - 1px - var(--dialog-layer-pageSelector) - var(--top-dialog-footer-height) - 1px);\n\toverflow-y: auto; overflow-x: hidden; box-sizing: border-box; flex-grow: 1;\n}\n.modal-body hr { margin: 16px -15px; }\n.modal-body h4 { padding: 0; margin: 0 0 10px 0; line-height: normal; }\n.modal-body .inner { padding: var(--padding-default); margin: 0 calc(0px - var(--padding-default)); position: relative; }\n.modal-body .inner .bt { border-top: 1px dashed var(--color-layout-front-primary-3); position: absolute; top: 0; right: 0; left: 0; }\n.modal-body .inner .bb { border-bottom: 1px dashed var(--color-layout-front-primary-3); position: absolute; right: 0; bottom: 0; left: 0; }\n.modal-body .inner.color-1 { background: var(--color-layout-front-primary-3); color: var(--color-text-1); }\n.modal-body .inner strong { color: var(--color-text-1); }\n.modal-body .comment { line-height: 18px; }\n\n/* modal-footer */\n.modal-footer {\n\tmin-height: var(--top-dialog-footer-height);\n\tpadding: var(--top-gap-2);\n\tdisplay: flex;\n\tflex-shrink: 0;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--top-gap-2);\n}\n\n.modal-footer .modal-footer-btn-left { margin-right: auto; }\n\n.modal-footer > .btn.full_width,\n.modal-footer > .top-button.full_width { flex-grow: 1; align-self: flex-end; }\n\n.modal-footer-fullWith {\n\tflex-wrap: wrap;\n}\n.modal-footer-fullWith > * {\n\tflex-grow: 1;\n}\n.modal-footer-fullWith > .top-info {\n\tflex-grow: 5;\n}\n.modal-footer-fullWith > *:empty {\n\tflex-grow: 0;\n}\n\n/* modal form */\n.ui-dialog-content > .modal-layer > [data-view-page] > input[type=\"submit\"] { position: absolute; visibility: hidden; }\n\n/* modal help_popup */\n.help_popup .modal-header { display: none; }\n.help_popup .modal-header a { top: 2px; z-index: 10; }\n.help_popup .modal-header .top-title { display: none; }\n\n/* view */\n.modal-layer { overflow: hidden; }\n.modal-layer a[data-top-icon]:empty { color: var(--color-text-4); text-decoration: none; }\n\n.modal-layer > [data-view-page] > div > div.buttons { display: flex; white-space: nowrap; gap: var(--top-padding-1); }\n.modal-layer > [data-view-page] > div > div.buttons:empty { display: none; }\n.modal-layer > [data-view-page] > div > div.buttons > div,\n.modal-layer > [data-view-page] > div > div.buttons > a {\n\tcursor: pointer;\n\twidth: auto; height: auto; min-width: auto; min-height: auto; padding: 10px 9px;\n\tcolor: var(--color-text-4);\n}\n.modal-layer > [data-view-page] > div > div.buttons > div:hover { color: var(--color-text-2); }\n.modal-layer > [data-view-page] > div > div.buttons > div.hidden { display: none !important; }\n\n.ui-dialog-content[data-view-page-active] { display: flex !important; flex-direction: column; justify-items: stretch; }\n.ui-dialog-content > .modal-layer { display: flex !important; align-items: stretch; position: relative; }\n.ui-dialog-content.i-change-page > .modal-layer { overflow: hidden; }\n.ui-dialog-content > .modal-layer > [data-view-page] {\n\twidth: 100%;\n\tposition: relative; display: none;\n\tflex-direction: column; justify-content: space-between;\n\tanimation: 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n}\n.ui-dialog-content > .modal-layer > [data-view-page].active { display: flex; }\n.ui-dialog-content > .modal-layer > [data-view-page].reverse { animation-direction: reverse; }\n.ui-dialog-content > .modal-layer > [data-view-page].center-to-left,\n.ui-dialog-content > .modal-layer > [data-view-page].right-to-center { display: flex; position: absolute; top: 0; right: 0; bottom: 0; left: 0; }\n.ui-dialog-content > .modal-layer > [data-view-page].center-to-left > div,\n.ui-dialog-content > .modal-layer > [data-view-page].right-to-center > div { overflow: hidden; }\n\n.ui-dialog-content > .modal-layer-header { border-bottom: 1px solid var(--dialog-border-color); min-height: var(--dialog-header-height); }\n.ui-dialog-content > .modal-layer-header > [data-view-page] > .modal-header { border: none; background: none; }\n.ui-dialog-content > .modal-layer-header > [data-view-page] > .modal-header > * { animation: 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].reverse > .modal-header > * { animation-direction: reverse; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].center-to-left > .modal-header > .top-title { animation-name: dialog-center-to-left-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].right-to-center > .modal-header > .top-title { animation-name: dialog-right-to-center-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].center-to-left > .modal-header > [class*=\"widget-\"] { animation-name: dialog-center-to-left-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].right-to-center > .modal-header > [class*=\"widget-\"] { animation-name: dialog-right-to-center-header-title; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].center-to-left > .modal-header > div { animation-name: dialog-center-to-left-header-icons; }\n.ui-dialog-content > .modal-layer-header > [data-view-page].right-to-center > .modal-header > div { animation-name: dialog-right-to-center-header-icons; }\n\n.ui-dialog-content > .modal-layer-body { border-radius: 0 0 8px 8px; max-height: calc(var(--100vh) - var(--dialog-header-height) - var(--dialog-layer-pageSelector) - var(--toolbar-height)); flex-grow: 2; }\n.ui-dialog-content.i-change-page > .modal-layer-body > [data-view-page] { background: var(--color-layout-front-1); }\n.ui-dialog-content > .modal-layer-body > [data-view-page].center-to-left { animation-name: dialog-center-to-left; }\n.ui-dialog-content > .modal-layer-body > [data-view-page].right-to-center { animation-name: dialog-right-to-center; }\n\n.ui-dialog-content .modal-footer .second_level {\n\tbox-sizing: border-box;\n\tbackground: var(--color-layout-front-1); width: 100%; min-height: 25px;\n\tdisplay: flex; align-items: center; justify-content: center;\n}\n.ui-dialog-content .modal-footer .second_level input {\n\tborder-radius: 8px;\n\twidth: 100%; height: var(--top-forms-base-height);\n\tpadding: var(--top-padding-1) var(--top-padding-3);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog-content > .modal-layer-body > [data-view-page].i-load-data {\n\tpointer-events: none;\n}\n.ui-dialog-content > .modal-layer-body > [data-view-page].i-load-data:before {\n\tcontent: \" \";\n\tbackground: #378DC6; width: 0; height: 4px;\n\tposition: absolute; top: 0; left: 0; z-index: 100;\n\tanimation: top-loadbar var(--dialog-loading-duration) forwards;\n}\n\n.ui-dialog-content.modal-expanded { width: 100vw !important; height: calc(var(--100vh) + 10px) !important; }\n\n/* widgets */\n.modal-header > [data-widget] {\n\tpadding: 0 8px;\n\tposition: absolute; top: 0; right: 0; bottom: 0; left: 0; opacity: 0; overflow: hidden;\n\talign-items: center;\n\tvisibility: hidden;\n\ttransition: opacity 0.3s; z-index: 1;\n}\n\n.modal-header > [data-widget=\"search\"] div.cancel {\n\topacity: 0;\n\ttransform: translateX(100%);\n\ttransition: transform, opacity; transition-duration: 0.3s;\n}\n\n[data-view-page].i-show-search { }\n[data-view-page].i-show-search .modal-header > :not([data-widget=\"search\"]) { visibility: hidden; }\n[data-view-page].i-show-search [data-widget=\"search\"] { visibility: visible; opacity: 1; }\n[data-view-page].i-show-search [data-widget=\"search\"] .cancel { transform: translateX(0); opacity: 1; }\n\n[data-view-page] > .modal-header > * { transition: opacity 0.3s; }\n[data-view-page].i-show-search > .modal-header > div.buttons { opacity: 0; }\n\n/* top-popup */\n.modal-layer .top-popup-wrapper { height: 100% !important; }\n\n/* animation */\n@keyframes dialog-center-to-left-header-title {\n\tfrom { transform: translateX(0); opacity: 1; }\n\t75% { opacity: 0; }\n\tto { transform: translateX(-30%); opacity: 0; }\n}\n\n@keyframes dialog-right-to-center-header-title {\n\tfrom { transform: translateX(100%); opacity: 0; }\n\t25% { opacity: 0; }\n\tto { transform: translateX(0); opacity: 1; }\n}\n\n@keyframes dialog-center-to-left-header-icons {\n\tfrom { transform: translateX(0); opacity: 1; }\n\t35% { transform: translateX(-20%); opacity: 0; }\n\tto { transform: translateX(-20%); opacity: 0; }\n}\n\n@keyframes dialog-right-to-center-header-icons {\n\tfrom { transform: translateX(20%); opacity: 0; }\n\t65% { transform: translateX(20%); opacity: 0; }\n\tto { transform: translateX(0); opacity: 1; }\n}\n\n@keyframes dialog-center-to-left {\n\tfrom { transform: translateX(0); filter: brightness(1); }\n\tto { transform: translateX(-30%); filter: brightness(0.9); }\n}\n\n@keyframes dialog-right-to-center {\n\tfrom { transform: translateX(100%); box-shadow: rgba(0, 0, 0, 0.1) 0 0 10px; }\n\tto { transform: translateX(0); box-shadow: rgba(0, 0, 0, 0.2) 0 0 10px; }\n}\n\n/* вид с дополнительной секцией TopPopup сбоку от окна */\n@media only screen and (max-width: 1480px) {\n\t.win_side_panel_opener { display: none; }\n}\n\n@media only screen and (min-width: 1480px) {\n\t.ui-dialog-content.with_side_panel { box-shadow: rgb(0 0 0 / 20%) 0 0 6px; }\n\n\t.ui-dialog-content.with_side_panel .modal-layer-body { background: var(--color-layout-front-1); }\n\n\t[data-widget=\"side_panel\"] {\n\t\t--side_panel_width: calc((100vw - 900px) / 2 - 28px);\n\n\t\tbox-sizing: border-box;\n\t\tbackground: var(--color-layout-front-1); max-width: var(--side_panel_width); padding: 18px;\n\t\tposition: absolute; top: calc(var(--dialog-header-height) + 1px + var(--dialog-layer-pageSelector)); bottom: calc(var(--top-dialog-footer-height) + 1px);\n\t\tz-index: -1; display: block;\n\t\ttransition: 0.2s;\n\t}\n\n\t.win_side_panel_left { border-radius: 8px 0 0 8px; right: 100%; }\n\n\t.win_side_panel_right { border-radius: 0 8px 8px 0; left: 100%; }\n\n\t.win_side_panel_closed.win_side_panel_left { right: calc(100% - var(--side_panel_width)); }\n\n\t.win_side_panel_closed.win_side_panel_right { left: calc(100% - var(--side_panel_width)); }\n\n\t[data-widget=\"side_panel\"] .template { display: block; }\n\n\t[data-widget=\"side_panel\"] .template > .header,\n\t[data-widget=\"side_panel\"] .template > .footer { display: flex; }\n\n\t.win_side_panel_opener { cursor: pointer; background: var(--color-cyan); color: #FFF; padding: 4px; position: absolute; top: 20px; }\n\n\t.win_side_panel_closed .win_side_panel_opener:not(:hover) { opacity: 0.3; }\n\n\t.win_side_panel_left .win_side_panel_opener { border-radius: 4px 0 0 4px; right: 100%; }\n\n\t.win_side_panel_right .win_side_panel_opener { border-radius: 0 6px 6px 0; left: 100%; }\n}\n\n@media only screen and (max-height: 900px) {\n\thtml.with_dialog { background: #F1F1F1; overflow: hidden; }\n\n\t.ui-widget-overlay { }\n\n\t.ui-dialog.me-tightly {\n\t\tborder-radius: 0;\n\t\theight: auto !important;\n\t\tposition: fixed; top: 0 !important; bottom: 0 !important;\n\t}\n\n\t.ui-dialog.me-tightly .ui-dialog-content { min-height: 100% !important; }\n\n\t/* для не view */\n\t.ui-dialog.me-tightly > div > .modal-body { position: absolute; top: var(--dialog-header-height); right: 0; left: 0; bottom: var(--dialog-header-height); }\n\n\t.ui-dialog.me-tightly > div > .modal-body:last-child { bottom: 0; }\n\n\t.ui-dialog.me-tightly > div > .modal-footer { position: absolute; right: 0; bottom: 0; left: 0; }\n\n\t/* view */\n\t.modal-layer { }\n\n\t.ui-dialog.me-tightly .modal-layer-body { border-radius: 0; min-height: 0 !important; }\n\n\t.ui-dialog.me-tightly .modal-layer-body .modal-footer { min-height: unset; }\n}\n","html.with_dialog body { height: var(--100vh); overflow: hidden; }\n\n.ui-widget-overlay { height: calc(100% - var(--toolbar-height)); }\n\n.ui-dialog {\n\tborder-radius: 0;\n\twidth: auto !important; height: auto !important;\n\tposition: fixed; top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;\n}\n\n.ui-dialog-content {\n\twidth: 100% !important;\n\theight: 100% !important;\n\tmin-width: 0 !important;\n\tmax-width: 100% !important;\n}\n\n/* modal-header */\n.modal-header > .top-title { text-align: center; font-size: 14px; }\n.modal-header > div.close { font-size: 14px; order: 1; }\n.modal-header > div.close:before { content: \"\"; }\n\n/* modal-body */\n.modal-body { }\n.modal-body:last-child { bottom: 0; }\n.modal-footer { bottom: 0; }\n\n/* modal-footer */\n.modal-footer .second_level { padding: 10px 8px; }\n\n/* view */\n.modal-layer-body { min-height: 0 !important; }\n.ui-dialog-content > .modal-layer-body { border-radius: 0; }\n/*.ui-dialog-content > .modal-layer-body > [data-view-page] .modal-body{ margin: auto 0; }*/\n\n.modal-body,\n.modal-footer { padding-right: 12px; padding-left: 12px; }\n.modal-footer .btn:last-child { margin-right: 12px; }\n\n.modal-body .inner { padding: 12px; margin: 0 -12px; position: relative; }\n","/* menu */\n.modal-menu-opener { order: 1 !important; }\n.modal-menu-opener:before {\n\t--top-icon-size: 20px;\n\t--top-icon-color: #FFF;\n\t--top-icon-width: var(--top-icon-size);\n\n\tborder-radius: 50%; background: var(--color-bg-primary-1); padding: 3px;\n\ttransition: transform 0.1s;\n}\n.modal-menu-opener:hover:before { background: var(--color-bg-primary-2); }\n.modal-menu-opener.top-active:before { background: var(--color-bg-primary-2); transform: scale(0.8); }\n\n/* top-popup */\n.modal-layer .top-popup-wrapper {\n\tbackground: transparent;\n\twidth: auto !important; padding: 0 !important; margin: 0 !important;\n\ttop: 0 !important; right: 0 !important; left: 0 !important;\n\ttransition: background 0.3s;\n}\n\n.modal-layer .top-popup-wrapper > .top-popup[class],\n.modal-layer .top-popup-wrapper.with_notch > .top-popup[class] {\n\tborder-radius: 8px; border: none; margin: 12px !important; max-width: 100%; max-height: calc(100% - 24px);\n\ttop: 0 !important; right: 0 !important; bottom: auto !important; left: 0 !important; overflow: auto; display: flex; flex-direction: column;\n\topacity: 1;\n\ttransform: translateY(calc(-100% - 24px));\n\ttransition: transform 0.3s;\n}\n\n.modal-layer .top-popup > .top-popup_header { background: var(--color-theme-50); }\n\n.modal-layer .top-theme-lite .top-popup > .top-popup_header .select { border: none; }\n.modal-layer .top-theme-lite .top-popup > .top-popup_header .select .text { color: #FFF; }\n.modal-layer .top-theme-lite .top-popup > .top-popup_header .select .arrow { background: none; }\n\n.modal-layer .top-popup-wrapper-shown:not(.top-popup-wrapper-closed) {\n\tpointer-events: auto;\n\tbackground: rgba(52, 73, 94, 0.25);\n}\n\n@media only screen and (min-width: 1480px) {\n\t.ui-dialog-content.with_side_panel { box-shadow: rgb(0 0 0 / 20%) 0 0 6px; }\n\n\t.ui-dialog-content.with_side_panel .modal-layer-body { background: var(--color-layout-front-1); }\n\n\t[data-widget=\"side_panel\"] {\n\t\t--side_panel_width: calc((100vw - 900px) / 2 - 28px);\n\n\t\tbox-sizing: border-box;\n\t\tbackground: var(--color-layout-front-1); max-width: var(--side_panel_width); padding: 18px;\n\t\tdisplay: block; position: absolute; top: 51px; bottom: 51px; z-index: -1;\n\t\ttransition: 0.2s;\n\t}\n\n\t.win_side_panel_left { border-radius: 8px 0 0 8px; right: 100%; }\n\n\t.win_side_panel_right { border-radius: 0 8px 8px 0; left: 100%; }\n\n\t.win_side_panel_closed.win_side_panel_left { right: calc(100% - var(--side_panel_width)); }\n\n\t.win_side_panel_closed.win_side_panel_right { left: calc(100% - var(--side_panel_width)); }\n\n\t[data-widget=\"side_panel\"] .template { display: block; }\n\n\t[data-widget=\"side_panel\"] .template > .header,\n\t[data-widget=\"side_panel\"] .template > .footer { display: flex; }\n\n\t.win_side_panel_opener { cursor: pointer; background: var(--color-cyan); color: #FFF; padding: 4px; position: absolute; top: 20px; }\n\n\t.win_side_panel_closed .win_side_panel_opener:not(:hover) { opacity: 0.3; }\n\n\t.win_side_panel_left .win_side_panel_opener { border-radius: 4px 0 0 4px; right: 100%; }\n\n\t.win_side_panel_right .win_side_panel_opener { border-radius: 0 6px 6px 0; left: 100%; }\n}\n","html {\n\t--top-dialog-width: auto;\n\t--top-dialog-height: auto;\n}\n\n.top-dialog {\n\tmax-width: 100vw;\n}\n\n.top-dialog .modal-layer-body {\n\theight: var(--top-dialog-height);\n}\n",".top-dialog {\n\twidth: var(--top-dialog-width) !important;\n}","import 'jquery';\nimport { nextTick } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { TopPopupWorker } from '@/components/popup/worker';\nimport { sleep, waitWhile } from '@/core/utils/system';\nimport { setHashs } from '@/core/utils/route';\nimport { connectScrollShadow } from '@/core/utils/scroll';\n\nimport type { ElTopDialog, ElTopDialogBody, ElTopDialogModalLayer, ElTopDialogPage, ElTopDialogWrapper, MoveDirection } from './types';\nimport { TopDialogWorker } from './worker';\nimport { initDialogGlobalEvents } from './utils.globalEvents';\nimport { getDialogWorker } from '../dialog/dialogs/dialogs.vue';\n\nimport css from '../dialog/style/dialog.css?inline';\nimport cssM from '../dialog/style/dialog.m.css?inline';\nimport cssPC from '../dialog/style/dialog.pc.css?inline';\nimport cssModern from '../dialog/style/modern/dialog.css?inline';\nimport cssModernPC from '../dialog/style/modern/dialog.pc.css?inline';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\n\nCore.insertStyleToPage(css);\nCore.insertStyleToPage(cssM, 'm');\nCore.insertStyleToPage(cssPC, 'pc');\nCore.insertStyleToPage(cssModern);\nCore.insertStyleToPage(cssModernPC, 'pc');\n\nlet timerClearAnimation: NodeJS.Timeout;\nlet isInited = false;\n\n/**\n * Является ли элемент JQuery<HTMLElement>\n */\nconst isElJQuery = (el: JQuery<HTMLElement> | HTMLElement | HTMLElement[]) => {\n\treturn !!el && typeof el === 'object' && 'jquery' in el;\n};\n\nconst init = () => {\n\t$.extend($.ui.dialog.prototype.options, {\n\t\tfocus: (e: any) => {\n\t\t\te.target.focus();\n\n\t\t\t$('[autofocus]', e.target)[0]?.focus();\n\n\t\t\t// setTimeout(function () {\n\t\t\t// \tif ($('[autofocus]', e.target).length) return;\n\t\t\t// \t$('.modal-footer button:first, .modal-body :input:first', e.target).eq(0).focus();\n\t\t\t//\n\t\t\t// \t// fix пропадающего autocomplete при нажатии на scroll в autocomplete\n\t\t\t// \t$(e.target).add($(e.target).closest('.ui-dialog')).removeAttr('tabindex');\n\t\t\t// });\n\t\t},\n\t\tcreate: (e: any) => onCreate(e.target),\n\t\topen: (e: any) => onOpen(e.target),\n\t\tclose: (e: any) => onClose(e.target),\n\t\tmodal: true,\n\t\tresizable: false,\n\t\tcloseOnEscape: false,\n\t\twidth: 'auto',\n\t\tminHeight: 0,\n\t});\n\n\t$.ui.dialog.prototype._focusTabbable = $.noop;\n\n\t$.ui.dialog.prototype._moveToTopOriginal = $.ui.dialog.prototype._moveToTop;\n\t$.ui.dialog.prototype._moveToTop = function () {\n\t\tthis._moveToTopOriginal();\n\n\t\tconst $dialog = $(this.element);\n\t\t$dialog.trigger('dialogsMoveToTop', [$dialog]);\n\t};\n\n\tinitDialogGlobalEvents();\n\n\tisInited = true;\n};\n\n/**\n * Получить настройки диалогового окна из Vue компонента\n */\nconst genVueOptions = (elDialog: ElTopDialog) => {\n\tconst options: {\n\t\tmodal?: boolean,\n\t\tposition?: any,\n\t} = {};\n\n\tif (elDialog.dataset?.modal === 'false') options.modal = false;\n\tif (elDialog.dataset?.position) options.position = JSON.parse(elDialog.dataset.position);\n\n\treturn options;\n};\n\nconst getElDialogById = (id: string) => {\n\treturn <ElTopDialog | null>document.getElementById(id);\n};\n\n/**\n * Сменить состояние диалогового окна Vue\n */\nconst updatePageVue = async (dialogId: string, pageName?: string, pageNameNext?: string) => {\n\tif (!dialogId.startsWith('dialog_')) return;\n\n\tconst dialog = getDialogWorker(dialogId);\n\tif (!dialog) return;\n\n\tdialog.isOpened.value = true;\n\tif (pageName !== undefined) dialog.pageActive.value = pageName;\n\tif (pageNameNext !== undefined) dialog.pageActiveNext.value = pageNameNext;\n\n\tawait nextTick();\n\n\tif (pageNameNext) {\n\t\tconst elDialog = getElDialogById(dialogId);\n\t\tif (!elDialog) return;\n\n\t\tconst elNextpages = elDialog.querySelectorAll(`[data-view-page=\"${pageNameNext}\"]`);\n\n\t\tif (!elNextpages.length) {\n\t\t\tawait waitWhile(() => !elDialog.querySelectorAll(`[data-view-page=\"${pageNameNext}\"]`).length);\n\t\t}\n\t}\n};\n\n/**\n * Callback for jQuery dialog onCreate\n */\nconst onCreate = (elDialog: ElTopDialog) => {\n\tconst elsDialogBodies = querySelectorAllArray(elDialog, '.modal-body');\n\telsDialogBodies.forEach((elDialogBody) => {\n\t\tconnectScrollShadow(elDialogBody);\n\t});\n\n\tif (!elsDialogBodies.length) return;\n\n\tTopDialogWorker.state.decoratorOnCreate?.(elDialog);\n\n\tinitPopup(elDialog);\n};\n\n/**\n * Инициирование событий TopPopup в диалоговом окне\n */\nconst initPopup = (elDialog: HTMLElement) => {\n\t$(elDialog).on('aftershow.top-menu-popup', '[data-top-popup]', (_e, $popup) => {\n\t\t// перенести popup в корневой элемент страницы диалогового окна\n\t\tconst elPopup = $popup[0];\n\n\t\t// перенести popup в корневой элемент страницы диалогового окна\n\t\tconst elPageContents = TopDialogWorker.getPairPage(elPopup);\n\t\telPageContents?.[1]?.prepend(elPopup);\n\t});\n};\n\n/**\n * Callback for jQuery dialog onOpen\n */\nconst onOpen = async (elDialog: ElTopDialog) => {\n\tconst pageName = elDialog.dataset.viewPageActive;\n\tconst args = elDialog.dataset.args ? elDialog.dataset.args?.split(':') : [];\n\n\tconst w1 = window.innerWidth;\n\n\tCore.state.documentClassModificators.set('top-dialog', 'with_dialog');\n\n\tconst w2 = window.innerWidth;\n\n\tconst scrollBarWidth = w2 - w1;\n\tif (document.documentElement.scrollHeight > window.innerHeight) document.querySelector('html')!.style.marginRight = scrollBarWidth + 'px';\n\n\trecalcPositions();\n\n\tconst dialog = getDialogWorker(elDialog.getAttribute('id')!);\n\tdialog?.emit?.('open', pageName, args);\n};\n\n/**\n * Callback for jQuery dialog onClose\n */\nconst onClose = async (elDialog: ElTopDialog) => {\n\tconst viewName = elDialog.getAttribute('id');\n\tconst pageName = elDialog.dataset.viewPageActive;\n\n\tif (pageName) {\n\t\tconst hashData = {\n\t\t\tvpn: TopDialogWorker.state.viewPageN as number | null,\n\t\t\t['view-' + viewName]: null,\n\t\t};\n\t\thashData['view-' + viewName] = null;\n\n\t\tif (TopDialogWorker.state.viewPageN === 0 || TopDialogWorker.state.viewPageN === 1) {\n\t\t\thashData.vpn = null;\n\t\t}\n\n\t\tsetHashs(hashData, false);\n\t}\n\n\tconst elUiWidgetOverlayVisibles = querySelectorAllArray(document, '.ui-widget-overlay').filter((el) => {\n\t\treturn isVisible(el);\n\t});\n\n\tif (!elUiWidgetOverlayVisibles.length) {\n\t\tCore.state.documentClassModificators.delete('top-dialog');\n\n\t\tdocument.querySelector('html')!.style.marginRight = '';\n\t}\n\n\t$(elDialog).trigger('viewAfterClose', [$(elDialog)]);\n\n\tconst dialog = getDialogWorker(viewName);\n\n\tif (dialog) {\n\t\tdialog.isOpened.value = false;\n\t\tdialog.emit?.('close', pageName);\n\n\t\tif (dialog.onCloseOnce) {\n\t\t\tdialog.onCloseOnce(dialog.props, pageName);\n\t\t\tdialog.onCloseOnce = undefined;\n\t\t}\n\t}\n\n\t// после закрытия диалога может потребоваться пересчет позиций элементов\n\twindow.dispatchEvent(new Event('resize'));\n};\n\n/**\n * Пересчитать положения и размеры открытых диалоговых окон\n */\nconst recalcPositions = () => {\n\tconst elDialogVisibilityes = querySelectorAllArray(document, '.ui-dialog').filter((el) => {\n\t\treturn isVisible(el) && el.querySelector<ElTopDialog>(':scope > .ui-dialog-content');\n\t}).map((el) => {\n\t\treturn el.querySelector<ElTopDialog>(':scope > .ui-dialog-content')!;\n\t});\n\n\telDialogVisibilityes.forEach((elDialog) => {\n\t\tconst elDialogBody = elDialog.querySelector<ElTopDialogBody>('.modal-body');\n\t\tif (!elDialogBody) return;\n\n\t\tconst elDialogWrapper = elDialog.closest('.ui-dialog');\n\n\t\tconst options = genVueOptions(elDialog);\n\n\t\toptions.position ??= { of: window };\n\n\t\tconst $dialog = $(elDialog);\n\t\t$dialog.dialog('option', options);\n\n\t\telDialogWrapper.classList.remove('me-tightly');\n\t\tif ((elDialogWrapper.clientHeight ?? 0) > window.innerHeight) elDialogWrapper.classList.add('me-tightly');\n\t});\n};\n\n/**\n * Переход к view page по неразобранной ссылке в формате: {viewName}-{pageName}[:args]\n */\nconst toViewDirty = async (toViewPageName: string, moveDirection?: MoveDirection) => {\n\tconst regexp = /(\\w+)[=-]([\\w-]+)(?::([\\w.:-]+))?/g;\n\tconst toViewParts = regexp.exec(toViewPageName);\n\tif (toViewParts) {\n\t\tconst viewName = toViewParts[1];\n\t\tconst pageName = toViewParts[2];\n\t\tconst argsString = toViewParts[3];\n\n\t\tlet args: string[] = [];\n\t\tif (argsString) args = argsString.split(':');\n\n\t\tawait toView(viewName, pageName, args, moveDirection);\n\t}\n};\n\n/**\n * Открыть диалоговое окно, возможно указать нужную страницу\n * @param viewNameOrElDialog - id страницы окна или элемент окна\n * @param pageName - имя страницы\n * @param args - аргументы, набор проивзольных параметров, которые могут обрабатываться каждым окном по своему\n * @param moveDirection\n * @param callback - функция, которая будет запущена после октытия страницы\n */\nconst toView = async (\n\tviewNameOrElDialog: ElTopDialog | JQuery<ElTopDialog> | string,\n\tpageName?: string,\n\targs?: string[],\n\tmoveDirection?: MoveDirection,\n\tcallback?: (dialog: JQuery<ElTopDialog>) => void,\n) => {\n\tif (!isInited) {\n\t\tawait new Promise<void>((resolve, _reject) => {\n\t\t\tconst timer = setInterval(() => {\n\t\t\t\tif (!isInited) return;\n\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}, 10);\n\t\t});\n\t}\n\n\tawait nextTick();\n\n\tlet elDialog: ElTopDialog | null;\n\tif (typeof (viewNameOrElDialog) === 'object') {\n\t\tif (isElJQuery(viewNameOrElDialog)) viewNameOrElDialog = viewNameOrElDialog?.[0]; // todo: убрать после переписки jquery на сайте\n\n\t\telDialog = viewNameOrElDialog;\n\t} else {\n\t\telDialog = getElDialogById(viewNameOrElDialog);\n\t}\n\n\t// Диалоговое окно еще не загружено\n\tif (!elDialog && typeof viewNameOrElDialog === 'string' && TopDialogWorker.state.load) {\n\t\tawait TopDialogWorker.state.load(viewNameOrElDialog);\n\n\t\telDialog = getElDialogById(viewNameOrElDialog);\n\t\tif (!elDialog) {\n\t\t\tthrow new Error('Dialog no exists: ' + viewNameOrElDialog);\n\t\t}\n\t}\n\n\tif (!elDialog) return;\n\n\tawait toViewPage(elDialog, pageName, args, moveDirection);\n\n\tconst $dialog = $(elDialog);\n\n\tif (elDialog?.classList.contains('ui-dialog-content')) {\n\t\t// var zIndexMax = 0;\n\t\t// $.map($('.ui-dialog'), function (el) {\n\t\t// \tvar zIndex = $(el).css('z-index') * 1;\n\t\t// \tif (zIndex > zIndexMax) zIndexMax = zIndex;\n\t\t// });\n\t\t//\n\t\t// if ($dialog.is(':hidden')) $dialog.dialog('open');\n\t\t//\n\t\t// var $dialogWrapper = $dialog.parent();\n\t\t// var $dialogOverlay = $dialogWrapper.next();\n\t\t//\n\t\t// if ($dialogWrapper.css('z-index') * 1 < zIndexMax) {\n\t\t// \t$dialogWrapper.css('z-index', zIndexMax + 2);\n\t\t// \t$dialogOverlay.css('z-index', zIndexMax + 1);\n\t\t// }\n\n\t\t$dialog.dialog('open');\n\t} else {\n\t\tconst options = genVueOptions(elDialog);\n\n\t\t$dialog.dialog(options);\n\t}\n\n\tif (callback) callback($dialog);\n};\n\nconst toViewPage = async (elDialog: ElTopDialog | JQuery<ElTopDialog>, pageName?: string, args?: string[], moveDirection?: MoveDirection) => {\n\t// todo: убрать после переписки jquery на сайте\n\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0];\n\n\tif (pageName === undefined) pageName = elDialog.dataset.viewPageActive;\n\tif (args === undefined) args = elDialog.dataset.args?.split(':') ?? [];\n\n\tif (pageName !== elDialog.dataset.viewPageActive) {\n\t\tconst stopped = stopAnimations(elDialog);\n\t\tif (stopped) await sleep(100);\n\t}\n\n\tawait updatePageVue(elDialog.getAttribute('id') as string, undefined, pageName);\n\n\tconst elModalLayers = querySelectorAllArray<ElTopDialogModalLayer>(elDialog, '.modal-layer');\n\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elCurrentPage = elModalLayer.querySelector<ElTopDialogPage>(':scope > .active');\n\t\tif (elCurrentPage) {\n\t\t\tacc.push(elCurrentPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elNextPage = elModalLayer.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\t\tif (elNextPage) {\n\t\t\tacc.push(elNextPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst argsString = args.join(':');\n\n\tif (moveDirection === undefined) {\n\t\tmoveDirection = 'next';\n\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t}\n\n\tif (!elNextPages.length) return;\n\n\telDialog.dataset.viewPageActive = pageName;\n\telDialog.dataset.args = args?.join(':') ?? '';\n\n\t// запрашиваемая страница уже открыта\n\tif (elNextPages[0].classList.contains('active')) {\n\t\tif (elNextPages[0].dataset.viewPageArgs !== argsString) {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.dataset.viewPageArgs = argsString;\n\t\t\t});\n\n\t\t\t// dialogs.beforeOpenViewPage($dialog, $nextPage, pageName, args);\n\t\t\t// dialogs.afterOpenViewPage($dialog, $nextPage, pageName, args);\n\t\t}\n\n\t\tbeforeOpenViewPage(elDialog, elNextPages, pageName, args);\n\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\n\t\treturn;\n\t}\n\n\telNextPages.forEach((elNextPage) => {\n\t\telNextPage.dataset.viewPageArgs = argsString;\n\t});\n\n\telCurrentPages.forEach((elCurrentPage) => {\n\t\tif (elCurrentPage.querySelector('.top-popup-wrapper')) {\n\t\t\tTopPopupWorker.close(elCurrentPage.querySelector('.top-popup-wrapper')!);\n\t\t}\n\t});\n\n\tconst elDialogWrapper = elNextPages[0].closest<ElTopDialogWrapper>('.ui-dialog');\n\n\tif (elDialogWrapper && !isVisible(elDialogWrapper)) moveDirection = 'none';\n\tif (!elCurrentPages.length) moveDirection = 'none';\n\tif (isVisible(elNextPages[0])) moveDirection = 'none';\n\n\tswitch (moveDirection) {\n\t\tcase 'prev': {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\tconst elActive = elNextPage.parentNode?.querySelector(':scope > .active');\n\t\t\t\tif (elActive) elNextPage.parentNode?.insertBefore(elNextPage, elActive);\n\t\t\t});\n\n\t\t\telCurrentPages.forEach((elCurrentPage) => {\n\t\t\t\telCurrentPage.classList.add('right-to-center', 'reverse');\n\t\t\t});\n\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.classList.add('center-to-left', 'reverse');\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'next': {\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\tconst elActive = elNextPage.parentNode?.querySelector(':scope > .active');\n\t\t\t\tif (elActive) elNextPage.parentNode?.insertBefore(elNextPage, elActive.nextSibling);\n\t\t\t});\n\n\t\t\telCurrentPages.forEach((elCurrentPage) => {\n\t\t\t\telCurrentPage?.classList.add('center-to-left');\n\t\t\t});\n\n\t\t\telNextPages.forEach((elNextPage) => {\n\t\t\t\telNextPage.classList.add('right-to-center');\n\t\t\t});\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\telDialog.setAttribute('view-page-active', pageName);\n\n\telCurrentPages.forEach((elCurrentPage) => {\n\t\telCurrentPage.classList.remove('active');\n\t});\n\n\telNextPages.forEach((elNextPage) => {\n\t\telNextPage.classList.add('active');\n\t});\n\n\tbeforeOpenViewPage(elDialog, elNextPages, pageName, args);\n\n\tif (moveDirection) {\n\t\telDialog.classList.add('i-change-page');\n\n\t\tconst delay = Number(window.getComputedStyle(elNextPages[0]).animationDuration.replace('s', '')) * 1000;\n\n\t\ttimerClearAnimation = setTimeout(function () {\n\t\t\tupdatePageVue(elDialog.getAttribute('id'), pageName, '');\n\t\t\tstopAnimations(elDialog);\n\t\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\t\t}, delay);\n\t} else {\n\t\tawait updatePageVue(elDialog.getAttribute('id'), pageName, '');\n\t\tafterOpenViewPage(elDialog, elNextPages, pageName, args);\n\t}\n};\n\n/**\n * К предыдущему представлению\n */\nconst toPrevPage = (elDialog: ElTopDialog) => {\n\tconst elModalLayers = querySelectorAllArray<ElTopDialogModalLayer>(elDialog, '.modal-layer');\n\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, elModalLayer) => {\n\t\tconst elCurrentPage = elModalLayer.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\tif (elCurrentPage) {\n\t\t\tacc.push(elCurrentPage);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tconst elPrevPages = elCurrentPages.reduce<ElTopDialogPage[]>((acc, elCurrentPage) => {\n\t\tlet elPrevPage = elCurrentPage.previousElementSibling as ElTopDialogPage | null;\n\t\twhile (elPrevPage && !elPrevPage.hasAttribute('data-view-page')) {\n\t\t\telPrevPage = elPrevPage.previousElementSibling as ElTopDialogPage | null;\n\t\t}\n\n\t\tif (elPrevPage) acc.push(elPrevPage);\n\n\t\treturn acc;\n\t}, []);\n\n\tconst prevPageName = (elPrevPages[0])?.dataset.viewPage;\n\n\tif (prevPageName) {\n\t\tvoid toViewPage(elDialog, prevPageName, undefined, 'prev');\n\t} else {\n\t\tconst $dialog = $(elDialog);\n\t\t$dialog.dialog('close');\n\t}\n};\n\n/**\n * Для обработки событий вне vue\n */\nconst beforeOpenViewPageTimers = new Set();\nconst beforeOpenViewPage = (elDialog: ElTopDialog, elPages: ElTopDialogPage[], pageName: string, args: string[]) => {\n\t// группировка цепочки событий\n\t// запрос на открытие страницы может выполняться несколько раз, чаще такое может быть при открытии, загрузке и переходе сразу к нужной странице\n\tconst eventKey = elDialog.getAttribute('id') + elPages[0].dataset.viewPage + pageName + args.join();\n\n\tif (beforeOpenViewPageTimers.has(eventKey)) return;\n\tbeforeOpenViewPageTimers.add(eventKey);\n\n\tsetTimeout(function () {\n\t\tbeforeOpenViewPageTimers.delete(eventKey);\n\n\t\t$(elDialog).trigger('viewBeforeOpen', [$(elDialog), $(elPages), pageName, args]);\n\t});\n};\n\n/**\n * Для обработки событий вне vue\n */\nconst afterOpenViewPage = (elDialog: ElTopDialog, elPages: ElTopDialogPage[], pageName: string, args: string[]) => {\n\tsetTimeout(function () {\n\t\t$(elDialog).trigger('viewAfterOpen', [$(elDialog), $(elPages), pageName, args]);\n\t});\n};\n\n/**\n * Получить состояние: Диалоговое окно находится в состоянии смены страницы\n */\nconst inAnimation = (elDialog: ElTopDialog | JQuery<ElTopDialog>) => {\n\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0]; // todo: убрать после переписки jquery на сайте\n\n\treturn elDialog.classList.contains('i-change-page');\n};\n\n/**\n * Остановить анимацию смены страницы\n *\n * @returns Вернет true, если анимация производилась и была остановлена\n */\nconst stopAnimations = (elDialog: ElTopDialog) => {\n\tif (!inAnimation(elDialog)) return false;\n\n\tclearTimeout(timerClearAnimation);\n\n\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\n\tconst pageName = elDialog.dataset.viewPageActive;\n\telDialog.classList.remove('i-change-page');\n\n\telModalLayers.forEach((elModalLayer) => {\n\t\telModalLayer.querySelectorAll(':scope > [data-view-page]').forEach((el) => {\n\t\t\tel.classList.remove('center-to-left', 'right-to-center', 'reverse', 'active');\n\t\t});\n\t});\n\n\telModalLayers.forEach((elModalLayer) => {\n\t\telModalLayer.querySelector(`:scope > [data-view-page=\"${pageName}\"]`)?.classList.add('active');\n\t});\n\n\treturn true;\n};\n\n/**\n * Закрыть диалоговое окно\n */\nconst close = function (dialogId: string) {\n\tconst elDialog = getElDialogById(dialogId);\n\tif (!elDialog) return;\n\n\tconst $dialog = $(elDialog);\n\n\tif (!$dialog.dialog('instance')) return;\n\n\t$dialog.dialog('close');\n};\n\n/**\n * Управление props.isLoading\n */\nconst setLoading = (elPages: ElTopDialogPage[] | JQuery<ElTopDialogPage>, isLoading: boolean, duration?: number) => {\n\tif (isElJQuery(elPages)) elPages = elPages.toArray(); // todo: убрать после переписки jquery на сайте\n\n\tconst elPagesVisibleds = elPages.reduce<ElTopDialogPage[]>((acc, elPage) => {\n\t\tif (elPage.hasAttribute('data-view-page') && isVisible(elPage)) acc.push(elPage);\n\n\t\treturn acc;\n\t}, []);\n\n\tif (isLoading) {\n\t\tif (duration !== undefined) {\n\t\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\t\telPagesVisibled.style.setProperty('--dialog-loading-duration', duration + 's');\n\t\t\t});\n\t\t}\n\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.classList.add('i-load-data');\n\t\t});\n\t} else {\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.classList.remove('i-load-data');\n\t\t});\n\n\t\telPagesVisibleds.forEach((elPagesVisibled) => {\n\t\t\telPagesVisibled.style.setProperty('--dialog-loading-duration', '10s');\n\t\t});\n\t}\n};\n\nconst isLoading = (elPage: ElTopDialogPage | JQuery<ElTopDialogPage>) => {\n\tif (isElJQuery(elPage)) elPage = elPage?.[0]; // todo: убрать после переписки jquery на сайте\n\n\treturn elPage.classList.contains('i-load-data');\n};\n\nexport const TopDialogUtils = {\n\tgetElDialogById,\n\tupdatePageVue,\n\trecalcPositions,\n\ttoViewDirty,\n\ttoView,\n\ttoViewPage,\n\ttoPrevPage,\n\tsetLoading,\n\tisLoading,\n\tinAnimation,\n\tclose,\n};\n\ninit();\n"],"mappings":"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"}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display