@topvisor/ui 1.1.0-addNativeDialog.19 → 1.1.0-addNativeDialog.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/.chunks/{core-DVlMYAfi.es.js → core-BAfIDulV.es.js} +2 -2
  2. package/.chunks/{core-DVlMYAfi.es.js.map → core-BAfIDulV.es.js.map} +1 -1
  3. package/.chunks/{core-Ct3VWRde.amd.js → core-Bl-lqyaf.amd.js} +2 -2
  4. package/.chunks/{core-Ct3VWRde.amd.js.map → core-Bl-lqyaf.amd.js.map} +1 -1
  5. package/.chunks/{dialog_selectorRegions-BpE6vw7x.es.js → dialog_selectorRegions-B-qVSxWs.es.js} +3 -3
  6. package/.chunks/{dialog_selectorRegions-BpE6vw7x.es.js.map → dialog_selectorRegions-B-qVSxWs.es.js.map} +1 -1
  7. package/.chunks/{dialog_selectorRegions-hfsUw4lH.amd.js → dialog_selectorRegions-CIUq3D8W.amd.js} +2 -2
  8. package/.chunks/{dialog_selectorRegions-hfsUw4lH.amd.js.map → dialog_selectorRegions-CIUq3D8W.amd.js.map} +1 -1
  9. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-6huAKJt_.es.js → dialogs.vue_vue_type_script_setup_true_lang-B9Uc437d.es.js} +2 -2
  10. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-B9Uc437d.es.js.map +1 -0
  11. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CM666D6Q.amd.js → dialogs.vue_vue_type_script_setup_true_lang-C5E3bwpc.amd.js} +2 -2
  12. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CM666D6Q.amd.js.map → dialogs.vue_vue_type_script_setup_true_lang-C5E3bwpc.amd.js.map} +1 -1
  13. package/.chunks/{page.vue_vue_type_script_setup_true_lang-DDBKHTXA.es.js → page.vue_vue_type_script_setup_true_lang-CtfjqRCw.es.js} +3 -3
  14. package/.chunks/{page.vue_vue_type_script_setup_true_lang-DDBKHTXA.es.js.map → page.vue_vue_type_script_setup_true_lang-CtfjqRCw.es.js.map} +1 -1
  15. package/.chunks/{page.vue_vue_type_script_setup_true_lang-mhd3MqMq.amd.js → page.vue_vue_type_script_setup_true_lang-QUdypckq.amd.js} +2 -2
  16. package/.chunks/{page.vue_vue_type_script_setup_true_lang-mhd3MqMq.amd.js.map → page.vue_vue_type_script_setup_true_lang-QUdypckq.amd.js.map} +1 -1
  17. package/.chunks/{utils-B1fRcl8f.es.js → utils-CzR2aepH.es.js} +2 -2
  18. package/.chunks/{utils-B1fRcl8f.es.js.map → utils-CzR2aepH.es.js.map} +1 -1
  19. package/.chunks/{utils-CGvb4aCs.amd.js → utils-D73lx_ab.amd.js} +2 -2
  20. package/.chunks/{utils-CGvb4aCs.amd.js.map → utils-D73lx_ab.amd.js.map} +1 -1
  21. package/core/app.amd.js +1 -1
  22. package/core/app.js +3 -3
  23. package/dialog/dialog.amd.js +1 -1
  24. package/dialog/dialog.js +2 -2
  25. package/package.json +1 -1
  26. package/project/project.amd.js +1 -1
  27. package/project/project.js +2 -2
  28. package/utils/searchers.amd.js +1 -1
  29. package/utils/searchers.js +2 -2
  30. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-6huAKJt_.es.js.map +0 -1
package/core/app.amd.js CHANGED
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-BfDSGwrU.amd","../.chunks/core-Ct3VWRde.amd","vue","../utils/clipboard.amd","../utils/string.amd","../utils/route.amd","../.chunks/utils-CGvb4aCs.amd","../.chunks/dialogs.vue_vue_type_script_setup_true_lang-CM666D6Q.amd"],(function(y,n,c,f,d,m,S,g,p,k){"use strict";if(typeof d>"u")var d=window.Vue;class E{#s;#t;#e;#i;#c;#a=[];#o=[];#n=[];#r=[];constructor(s){var t;this.#t=s.store,this.#s=this.#t.$id,this.#e=s.options.Page,this.#i=s.options.user,this.#c=s.options.Api,this.#a=s.options.tpaNamesUrlHash||[],this.#o=s.options.tpaNamesStorage||[],this.#n=s.options.tpaNamesStorageLocal||[],this.#r=s.options.tpaNamesGuestLink||[],s.store.genGuestLink=(i,a)=>this.genGuestLink(i,a),(t=this.#i.guest_data)!=null&&t.data||(this.#u(),this.#u(!0),this.#f()),this.#S(),this.#k();const e=c.debounce(()=>{this.#m(),this.#g(),this.#g(!0)});s.store.$subscribe(e)}async genGuestLink(s,e){const t=this.#p();e=Object.assign(e,Object.fromEntries(t));const i=await this.#c.gen(s).setParams(e).call();if(i!=null&&i.errors)return;const a=i.result;await m.guestLinkToClipboard(a)}#p(){const s=new Map;return this.#r.forEach(e=>{const t=S.camelToSnakeCase(e);s.set(t,this.#t[e])}),s}#h(s){s.forEach((e,t)=>{const i=this.#t[t];if(e!=null&&i!==void 0&&e!=null&&e.constructor&&e.constructor===i.constructor){if(t.indexOf("date")===0&&!Array.isArray(e)){if(typeof e=="string"&&!/\d\d\d\d-\d\d-\d\d/.test(e))return}this.#t[t]=e}})}#l(s){const e=new Map;return s.forEach((t,i)=>{t!==null&&(t=JSON.stringify(t),e.set(i,t))}),e}#d(s){const e=new Map;return s.forEach((t,i)=>{if(!(t==null||t==="false")){try{if(typeof t=="string"&&!/^\d\d\d\d-\d\d-\d\d$/.test(t)&&(t=JSON.parse(t)),t==null||t==="false")return}catch{}e.set(i,t)}}),e}#f(){let s;try{s=JSON.parse(g.getHash(this.#s))}catch{}if(!s)return;const e=new Map;this.#a.forEach(t=>{const i=s[t];i&&e.set(t,i)}),this.#h(e)}#m(){const s=new Map;this.#a.forEach(i=>{const a=this.#t[i];s.set(i,a)});const e=Object.fromEntries(s),t=JSON.stringify(e);g.setHash(this.#s,t)}#u(s=!1){const e=new Map;let t=this.#o,i="state:"+this.#s;s&&(t=this.#n,i="state:"+this.#s+":"+location.pathname),t.forEach(o=>{const r=localStorage.getItem(i+":"+o);e.set(o,r)});const a=this.#d(e);this.#h(a)}#g(s=!1){const e=new Map;let t=this.#o,i="state:"+this.#s;s&&(t=this.#n,i="state:"+this.#s+":"+location.pathname),t.forEach(o=>{const r=this.#t[o];e.set(o,r)});const a=this.#l(e);t.forEach(o=>{const r=a.get(o);localStorage.setItem(i+":"+o,r)})}#S(){var a,o,r;const s=(o=(a=this.#i)==null?void 0:a.guest_data)==null?void 0:o.data;if(!s)return;this.#i.id===-1&&(this.#i.positionsReverseDates=s.positionsReverseDates);const e=new Map;this.#r.forEach(h=>{const u=s[h];e.set(h,u)});const t=this.#d(e);this.#h(t);const i=$(".mod_guest_title");if(((r=this.#t.competitorsIds)==null?void 0:r.length)===1&&this.#e.page.data.competitors){let h=this.#e.page.data.competitors.filter(u=>u.id===s.competitorsIds[0]);h.length&&($("a",i).attr("href","http://"+h[0].url),$("a",i).text(h[0].name))}}#k(){this.#t.regionsIndexes&&d.watch(this.#t.regionsIndexes,s=>{if(!s.length)return;s.forEach((i,a)=>s[a]=i);const e=TplProjectSelectorRegion.genSearchersMap(),t=[];e.forEach(i=>{i.regions.forEach(a=>{a.index!==-1&&t.push(a.index)})}),this.#t.regionsIndexes=s.filter(i=>t.includes(i))},{immediate:!0}),this.#t.competitorsIds&&d.watch(this.#t.competitorsIds,s=>{if(!s.length)return;s.forEach((t,i)=>s[i]=t);const e=[this.#e.page.data.project.id];this.#e.page.data.project.competitors.forEach(t=>{t.on>=0&&e.push(t.id)}),this.#t.competitorsIds=s.filter(t=>e.includes(t))},{immediate:!0})}}const w=l=>{var e,t,i,a;const s=l;!((e=s.options.tpaNamesUrlHash)!=null&&e.length)&&!((t=s.options.tpaNamesStorage)!=null&&t.length)&&!((i=s.options.tpaNamesStorageLocal)!=null&&i.length)&&!((a=s.options.tpaNamesGuestLink)!=null&&a.length)||new E(s)};n.Core=c.Core,n.i18nPlugin=c.i18n,n.useI18n=c.useI18n,n.useI18nLang=c.useI18nLang,n.corePlugin=f.core,n.useAsyncTopDialog=p.useAsyncTopDialog,n.useTopDialog=p.useTopDialog,n.TopDialogWorker=k.TopDialogWorker,n.piniaTPAPlugin=w,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","../.chunks/forms-BfDSGwrU.amd","../.chunks/core-Bl-lqyaf.amd","vue","../utils/clipboard.amd","../utils/string.amd","../utils/route.amd","../.chunks/utils-D73lx_ab.amd","../.chunks/dialogs.vue_vue_type_script_setup_true_lang-C5E3bwpc.amd"],(function(y,n,c,f,d,m,S,g,p,k){"use strict";if(typeof d>"u")var d=window.Vue;class E{#s;#t;#e;#i;#c;#a=[];#o=[];#n=[];#r=[];constructor(s){var t;this.#t=s.store,this.#s=this.#t.$id,this.#e=s.options.Page,this.#i=s.options.user,this.#c=s.options.Api,this.#a=s.options.tpaNamesUrlHash||[],this.#o=s.options.tpaNamesStorage||[],this.#n=s.options.tpaNamesStorageLocal||[],this.#r=s.options.tpaNamesGuestLink||[],s.store.genGuestLink=(i,a)=>this.genGuestLink(i,a),(t=this.#i.guest_data)!=null&&t.data||(this.#u(),this.#u(!0),this.#f()),this.#S(),this.#k();const e=c.debounce(()=>{this.#m(),this.#g(),this.#g(!0)});s.store.$subscribe(e)}async genGuestLink(s,e){const t=this.#p();e=Object.assign(e,Object.fromEntries(t));const i=await this.#c.gen(s).setParams(e).call();if(i!=null&&i.errors)return;const a=i.result;await m.guestLinkToClipboard(a)}#p(){const s=new Map;return this.#r.forEach(e=>{const t=S.camelToSnakeCase(e);s.set(t,this.#t[e])}),s}#h(s){s.forEach((e,t)=>{const i=this.#t[t];if(e!=null&&i!==void 0&&e!=null&&e.constructor&&e.constructor===i.constructor){if(t.indexOf("date")===0&&!Array.isArray(e)){if(typeof e=="string"&&!/\d\d\d\d-\d\d-\d\d/.test(e))return}this.#t[t]=e}})}#l(s){const e=new Map;return s.forEach((t,i)=>{t!==null&&(t=JSON.stringify(t),e.set(i,t))}),e}#d(s){const e=new Map;return s.forEach((t,i)=>{if(!(t==null||t==="false")){try{if(typeof t=="string"&&!/^\d\d\d\d-\d\d-\d\d$/.test(t)&&(t=JSON.parse(t)),t==null||t==="false")return}catch{}e.set(i,t)}}),e}#f(){let s;try{s=JSON.parse(g.getHash(this.#s))}catch{}if(!s)return;const e=new Map;this.#a.forEach(t=>{const i=s[t];i&&e.set(t,i)}),this.#h(e)}#m(){const s=new Map;this.#a.forEach(i=>{const a=this.#t[i];s.set(i,a)});const e=Object.fromEntries(s),t=JSON.stringify(e);g.setHash(this.#s,t)}#u(s=!1){const e=new Map;let t=this.#o,i="state:"+this.#s;s&&(t=this.#n,i="state:"+this.#s+":"+location.pathname),t.forEach(o=>{const r=localStorage.getItem(i+":"+o);e.set(o,r)});const a=this.#d(e);this.#h(a)}#g(s=!1){const e=new Map;let t=this.#o,i="state:"+this.#s;s&&(t=this.#n,i="state:"+this.#s+":"+location.pathname),t.forEach(o=>{const r=this.#t[o];e.set(o,r)});const a=this.#l(e);t.forEach(o=>{const r=a.get(o);localStorage.setItem(i+":"+o,r)})}#S(){var a,o,r;const s=(o=(a=this.#i)==null?void 0:a.guest_data)==null?void 0:o.data;if(!s)return;this.#i.id===-1&&(this.#i.positionsReverseDates=s.positionsReverseDates);const e=new Map;this.#r.forEach(h=>{const u=s[h];e.set(h,u)});const t=this.#d(e);this.#h(t);const i=$(".mod_guest_title");if(((r=this.#t.competitorsIds)==null?void 0:r.length)===1&&this.#e.page.data.competitors){let h=this.#e.page.data.competitors.filter(u=>u.id===s.competitorsIds[0]);h.length&&($("a",i).attr("href","http://"+h[0].url),$("a",i).text(h[0].name))}}#k(){this.#t.regionsIndexes&&d.watch(this.#t.regionsIndexes,s=>{if(!s.length)return;s.forEach((i,a)=>s[a]=i);const e=TplProjectSelectorRegion.genSearchersMap(),t=[];e.forEach(i=>{i.regions.forEach(a=>{a.index!==-1&&t.push(a.index)})}),this.#t.regionsIndexes=s.filter(i=>t.includes(i))},{immediate:!0}),this.#t.competitorsIds&&d.watch(this.#t.competitorsIds,s=>{if(!s.length)return;s.forEach((t,i)=>s[i]=t);const e=[this.#e.page.data.project.id];this.#e.page.data.project.competitors.forEach(t=>{t.on>=0&&e.push(t.id)}),this.#t.competitorsIds=s.filter(t=>e.includes(t))},{immediate:!0})}}const w=l=>{var e,t,i,a;const s=l;!((e=s.options.tpaNamesUrlHash)!=null&&e.length)&&!((t=s.options.tpaNamesStorage)!=null&&t.length)&&!((i=s.options.tpaNamesStorageLocal)!=null&&i.length)&&!((a=s.options.tpaNamesGuestLink)!=null&&a.length)||new E(s)};n.Core=c.Core,n.i18nPlugin=c.i18n,n.useI18n=c.useI18n,n.useI18nLang=c.useI18nLang,n.corePlugin=f.core,n.useAsyncTopDialog=p.useAsyncTopDialog,n.useTopDialog=p.useTopDialog,n.TopDialogWorker=k.TopDialogWorker,n.piniaTPAPlugin=w,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=app.amd.js.map
package/core/app.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { d } from "../.chunks/forms-BWoAyEVH.es.js";
2
2
  import { C as I, i as T, u as b, a as y } from "../.chunks/forms-BWoAyEVH.es.js";
3
- import { c as G } from "../.chunks/core-DVlMYAfi.es.js";
3
+ import { c as G } from "../.chunks/core-BAfIDulV.es.js";
4
4
  import { watch as p } from "vue";
5
5
  import { guestLinkToClipboard as f } from "../utils/clipboard.js";
6
6
  import { camelToSnakeCase as g } from "../utils/string.js";
7
7
  import { getHash as l, setHash as m } from "../utils/route.js";
8
- import { u as A, a as D } from "../.chunks/utils-B1fRcl8f.es.js";
9
- import { T as j } from "../.chunks/dialogs.vue_vue_type_script_setup_true_lang-6huAKJt_.es.js";
8
+ import { u as A, a as D } from "../.chunks/utils-CzR2aepH.es.js";
9
+ import { T as j } from "../.chunks/dialogs.vue_vue_type_script_setup_true_lang-B9Uc437d.es.js";
10
10
  class u {
11
11
  #s;
12
12
  #t;
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/page.vue_vue_type_script_setup_true_lang-mhd3MqMq.amd","vue","../.chunks/utils-CGvb4aCs.amd"],(function(c,n,u,e,t){"use strict";if(typeof e>"u")var e=window.Vue;const i={name:{type:String,required:!0},order:{type:Number,required:!0},prevName:String,footerFullWith:Boolean},l=e.defineComponent({__name:"pageComponent",props:{component:{},keepAlive:{type:Boolean,default:!0},props:{},name:{},order:{},prevName:{},footerFullWith:{type:Boolean}},setup(m){const a=m,r=t.useTopDialogSelf(),s=(o,p)=>{if(!p.value){if(o.name!=="AsyncComponentWrapper"){p.value=!0;return}r.needShowPage(a.name)&&(r.isLoadingPage.value=!0,o.__asyncResolved&&(p.value=!0,r.isLoadingPage.value=!1))}};if(a.component.name==="AsyncComponentWrapper"){const o=e.ref(!1);e.onUpdated(()=>{s(a.component,o)})}return(o,p)=>(e.openBlock(),e.createBlock(e.KeepAlive,{include:o.keepAlive?"":"none"},[e.unref(r).needShowPage(o.name)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.component),e.mergeProps({key:0},a,{name:o.name,order:o.order,prevName:o.prevName}),null,16,["name","order","prevName"])):e.createCommentVNode("",!0)],1032,["include"]))}});n.TopDialog=u._sfc_main,n.TopDialogPage=u._sfc_main$1,n.useTopDialogSelf=t.useTopDialogSelf,n.TopDialogPageComponent=l,n.propsPageCommon=i,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","../.chunks/page.vue_vue_type_script_setup_true_lang-QUdypckq.amd","vue","../.chunks/utils-D73lx_ab.amd"],(function(c,n,u,e,t){"use strict";if(typeof e>"u")var e=window.Vue;const i={name:{type:String,required:!0},order:{type:Number,required:!0},prevName:String,footerFullWith:Boolean},l=e.defineComponent({__name:"pageComponent",props:{component:{},keepAlive:{type:Boolean,default:!0},props:{},name:{},order:{},prevName:{},footerFullWith:{type:Boolean}},setup(m){const a=m,r=t.useTopDialogSelf(),s=(o,p)=>{if(!p.value){if(o.name!=="AsyncComponentWrapper"){p.value=!0;return}r.needShowPage(a.name)&&(r.isLoadingPage.value=!0,o.__asyncResolved&&(p.value=!0,r.isLoadingPage.value=!1))}};if(a.component.name==="AsyncComponentWrapper"){const o=e.ref(!1);e.onUpdated(()=>{s(a.component,o)})}return(o,p)=>(e.openBlock(),e.createBlock(e.KeepAlive,{include:o.keepAlive?"":"none"},[e.unref(r).needShowPage(o.name)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.component),e.mergeProps({key:0},a,{name:o.name,order:o.order,prevName:o.prevName}),null,16,["name","order","prevName"])):e.createCommentVNode("",!0)],1032,["include"]))}});n.TopDialog=u._sfc_main,n.TopDialogPage=u._sfc_main$1,n.useTopDialogSelf=t.useTopDialogSelf,n.TopDialogPageComponent=l,n.propsPageCommon=i,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=dialog.amd.js.map
package/dialog/dialog.js CHANGED
@@ -1,6 +1,6 @@
1
- import { _ as k, a as B } from "../.chunks/page.vue_vue_type_script_setup_true_lang-DDBKHTXA.es.js";
1
+ import { _ as k, a as B } from "../.chunks/page.vue_vue_type_script_setup_true_lang-CtfjqRCw.es.js";
2
2
  import { defineComponent as l, ref as i, onUpdated as u, createBlock as a, openBlock as p, KeepAlive as s, createCommentVNode as d, unref as g, resolveDynamicComponent as c, mergeProps as f } from "vue";
3
- import { b as v } from "../.chunks/utils-B1fRcl8f.es.js";
3
+ import { b as v } from "../.chunks/utils-CzR2aepH.es.js";
4
4
  const C = {
5
5
  name: {
6
6
  type: String,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.1.0-addNativeDialog.19",
4
+ "version": "1.1.0-addNativeDialog.20",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-BfDSGwrU.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-R7J0Cawj.amd","../.chunks/menu.vue_vue_type_style_index_0_lang-JZ-QwyLO.amd","../.chunks/utils-CGvb4aCs.amd","../utils/searchers.amd","../utils/dom.amd","../popup/worker.amd","../require/css.amd!../assets/project.css"],(function(ne,V,e,x,E,oe,le,P,_,ae){"use strict";if(typeof e>"u")var e=window.Vue;const re={class:"top-selectorCompetitors"},ie={class:"top-ellipsis1"},de=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=e.computed(()=>{if(l.showSelectAllItem)return{icon:"",title:x.useI18n().Common.Select_all,value:"all",content:""}});return(d,o)=>(e.openBlock(),e.createElementBlock("div",re,[e.unref(x.Core).state.isMobile?(e.openBlock(),e.createBlock(E._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var a;return[e.createTextVNode(e.toDisplayString((a=d.items.find(s=>{var v;return s.value===((v=r.value)==null?void 0:v[0])}))==null?void 0:a.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.items,a=>{var s;return e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-active":(s=r.value)==null?void 0:s.includes(a.value)}),"data-top-icon":a.icon,title:a.title,onClick:()=>r.value=[a.value]},{default:e.withCtx(()=>[e.createElementVNode("span",ie,e.toDisplayString(a.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(oe._sfc_main,{key:1,modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=a=>r.value=a),items:d.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),ue=(n,l)=>e.computed(()=>e.toValue(n).filter(d=>d.on>=0||d.id===l).map(d=>({value:d.id,title:d.url+` [${d.id}]`,icon:d.id===e.toValue(l)?"":"",content:d.name}))),w=-1,p=-2,R=-1,se={0:"Yandex",1:"Google",4:"YouTube",5:"Bing",7:"Seznam",8:"AppStore",9:"GoogleStore",20:"Yandex.com",21:"Yandex.com.tr"},J={key:p,name:"--",index:p},G={key:p,name:"--",regions:[J],regionByIndex:new Map([[p,J]])},A={key:p,name:"Autoselect",index:p},U={key:p,name:"Autoselect",regions:[A],regionByIndex:new Map([[p,A]])},Y={countryCode:"00",depth:1,device:0,key:R,index:R,lang:"ru",name:"Without region"},ce=()=>(A.name=x.useI18n().Common.Autoselect,A),ge=()=>(ce(),U.name=x.useI18n().Common.Autoselect,console.log(U),U),me=()=>(Y.name=x.useI18n().Keywords.Without_region,Y),z=(n=!1,l=!1,r=[])=>{let t;return n?t=fe(r):t=W(r),l&&t.set(p,ge()),t.size||t.set(p,G),t},W=(n,l=!0,r=[],t=!1)=>{const d=new Map;return n.forEach(o=>{if(!o.enabled||t&&typeof o.key=="number"&&o.key>1)return;const a={...o};a.regionByIndex=new Map,o.regions&&o.regions.forEach(s=>{if(l&&!s.enabled)return;const v={...s};a.regionByIndex.set(v.index,v)}),!a.regionByIndex.size&&r.length,(!o.regions||a.regionByIndex.size||r.length)&&typeof a.key=="number"&&d.set(a.key,a)}),r.forEach(o=>{if(d.has(o))return;const a={key:o,name:se[o],regions:[],regionByIndex:new Map};d.set(a.key,a)}),d},fe=n=>{const l=W(n,!1,[0,1],!0);if(l.has(2)){const r=l.get(2);r&&(r.regionByIndex=new Map)}return l.forEach(r=>{if(!r.regionByIndex)return;const t={...me()};r.regionByIndex.set(t.index,t)}),l},H=(n,l,r=[])=>{const t=z(n,!1,r);let d;return t.forEach(o=>{if(!(l.searcher_key!==void 0&&l.searcher_key!=o.key)&&o.regions&&(o.regions.forEach(a=>{if(!d&&!(l.key!==void 0&&l.key!=a.key)&&!(l.index!==void 0&&l.index!=a.index)&&!(!n&&(l.lang!==void 0&&l.lang!=a.lang||l.device!==void 0&&l.device!=a.device)))return a.searcher_key=o.key,d=a,!1}),d))return!1}),d},Q=le.useAsyncTopDialog(()=>new Promise((n,l)=>ne(["../.chunks/dialog_selectorRegions-hfsUw4lH.amd"],n,l))),ve=(n,l)=>{const r=x.useI18n(),t=e.ref(l.value.keys().next().value??p),d=e.computed(()=>{const o=new Map;if(l.value.forEach(a=>{let s={value:a.key,title:a.name};n.addSearcherIcon&&(s.icon=P.getSearcherGIcon(a.key)),o.set(a.key,s)}),n.addCompare&&!o.has(p)){const a={value:"",title:"--------------------",disabled:!0};o.set(a.value,a);const s={value:w,title:r.Common.Compare};o.set(s.value,s)}return o});return{searcherKey:t,optionBySearcherKey:d}},ye=(n,l)=>{var o,a,s;const r=x.useI18n(),t=e.ref(p);n.modelValue.length===1&&(t.value=n.modelValue[0]),t.value===p&&(n.forFrequency?t.value=((a=(o=l.value)==null?void 0:o.regionByIndex.values().next().value)==null?void 0:a.key)??p:t.value=((s=l.value)==null?void 0:s.regionByIndex.keys().next().value)??p);const d=e.computed(()=>{var h;const v=new Map;return(h=l.value.regionByIndex)==null||h.forEach(k=>{let i=k.name;if(n.forFrequency){const I={value:k.key,title:i};v.has(k.key)||v.set(k.key,I);return}k.device&&(i+=" ("+r.Common["Device_"+k.device]+")");const m=P.getLangLabel(l.value.key||0,k.lang??"");m&&(i+=" / "+m);const c={value:k.index,title:i,icon:k.device?P.getDeviceGIcon(k.device):void 0};v.set(k.index,c)}),v});return e.watch(d,(v,h)=>{var c;if(n.onlySearcher||t.value!==void 0&&v.get(t.value))return;let k=v.keys().next().value;if(t.value===p||k===p){t.value=k;return}let i=((c=h==null?void 0:h.get(t.value))==null?void 0:c.title)||"",m=-1;for(const[I,B]of v.entries()){const C=B.title;if(typeof C!="string"||typeof I=="string")break;if(C===i){k=I;break}const T=new RegExp(` \\((${r.Common.Device_1}|${r.Common.Device_2})\\)`);let f=i,u=3;C.indexOf(f)===-1&&(f=i.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(f)===-1&&(f=i.replace(/ \/.*/,""),u--),C.indexOf(f)===-1&&(f=i.replace(/ \/.*/,""),f=f.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(f)!==-1&&(u<=m||(m=u,k=I))}t.value=k}),{regionIndex:t,optionByRegionIndex:d}},pe=(n,l,r)=>{const t=e.ref([]),d=()=>{if(n.onlySearcher&&l.value){t.value=Array.from(l.value.keys());return}let a=[];if(n.modelValue.length>1)a=[...n.modelValue];else try{a=JSON.parse(localStorage.getItem("ui:project:regionSelector"+n.projectId+":regionsIndexes"))??[]}catch{}a.length&&(a=a.filter(s=>r.value.has(s))),a.length||(a=Array.from(r.value)),t.value=[...a]},o=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes")};return e.watch(t,()=>{o()}),n.addCompare&&d(),{regionsIndexes:t}},he=n=>{const l=e.computed(()=>z(n.forFrequency,n.autoRegion,n.searchers)),r=e.computed(()=>l.value.get(d.searcherKey.value)||G),t=e.computed(()=>{const i=new Set;return l.value.forEach(m=>{m.regionByIndex.forEach(c=>{c.index!==R&&c.index!==p&&i.add(c.index)})}),i}),d=ve(n,l),o=ye(n,r),a=pe(n,l,t);e.watch(l,()=>{var m,c,I,B;if(n.onlySearcher?a.regionsIndexes.value=Array.from(l.value.keys()):a.regionsIndexes.value=a.regionsIndexes.value.filter(C=>t.value.has(C)),d.searcherKey.value===w)return;let i=l.value.keys().next().value;l.value.forEach(C=>{var T,f,u;if(n.onlySearcher&&C.key===d.searcherKey.value){i=d.searcherKey.value;return}if(o.regionIndex.value&&((T=C.regionByIndex)!=null&&T.has(o.regionIndex.value))&&(i=C.key),!n.onlySearcher){let g;i!==void 0&&(g=(f=l.value.get(i))==null?void 0:f.regionByIndex);const y=(u=l.value.get(C.key))==null?void 0:u.regionByIndex;g!=null&&g.has(p)&&!(y!=null&&y.has(p))&&(i=C.key)}}),i!==void 0&&(d.searcherKey.value=i),o.regionIndex.value!==void 0&&!((c=(m=r.value)==null?void 0:m.regionByIndex)!=null&&c.has(o.regionIndex.value))&&(o.regionIndex.value=(B=(I=r.value)==null?void 0:I.regions)==null?void 0:B.keys().next().value)},{immediate:!0});const s=()=>{if(!(d.searcherKey.value===w||d.searcherKey.value===p))return d.searcherKey.value},v=()=>{if(n.onlySearcher||o.regionIndex.value===p)return;let i=o.regionIndex.value;if(n.forFrequency){const m=o.regionIndex.value,c=H(n.forFrequency,{searcher_key:s(),key:m},n.searchers);i=c==null?void 0:c.index}return i},h=()=>{const i=s();if(i!==void 0)return l.value.get(i)};return{selectSearcher:d,selectRegion:o,compare:a,searcherByKey:l,allRegionsIndexes:t,getSearcher:h,getRegion:()=>{var m,c;const i=v();if(i!==void 0)return(c=(m=h())==null?void 0:m.regionByIndex)==null?void 0:c.get(i)}}},ke=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},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(n,{expose:l}){const r=n,t=e.useModel(n,"modelValue"),d=e.useModel(n,"modelValueSingle"),{selectSearcher:o,selectRegion:a,compare:s,searcherByKey:v,allRegionsIndexes:h,getSearcher:k,getRegion:i}=he(r),m=()=>{const c=[];v.value.forEach(I=>{I.enabled&&I.regions.forEach(B=>{B.enabled&&c.push(B)})}),Q.open("selectorRegions",{regions:c,regionsIndexes:s.regionsIndexes.value,"@update:regionsIndexes":I=>s.regionsIndexes.value=I})};return e.watch([a.regionIndex,o.searcherKey,s.regionsIndexes],()=>{if(o.searcherKey.value===w&&s.regionsIndexes.value.length){if(JSON.stringify(t.value)===JSON.stringify(s.regionsIndexes.value))return;t.value=[...s.regionsIndexes.value]}else r.onlySearcher?(t.value=[o.searcherKey.value],o.searcherKey.value===p&&!r.autoRegion&&(t.value.length=0)):(t.value=[a.regionIndex.value],a.regionIndex.value===p&&!r.autoRegion&&(t.value.length=0));!r.onlySearcher&&!h.value.size&&(o.searcherKey.value=p)}),d.value&&e.watch(d,()=>{d.value&&(t.value=[d.value])},{immediate:!0}),e.watch(t,()=>{var c,I,B,C,T;if(t.value[0]&&(d.value=t.value[0]),r.onlySearcher){if(!t.value.length||t.value.length===1&&!v.value.has(t.value[0])||t.value.length===1&&t.value[0]===p&&!r.autoRegion){let f=v.value.keys().next().value;f===p&&!r.autoRegion&&(f=void 0,d.value=p),f!==void 0?t.value=[f]:t.value.length=0;return}if(t.value.length>1&&JSON.stringify(t.value)!==JSON.stringify(s.regionsIndexes.value)){t.value=[...s.regionsIndexes.value];return}}else{let f=[...new Set(t.value)],u=(I=(c=v.value.values().next().value)==null?void 0:c.regionByIndex)==null?void 0:I.keys().next().value;if(r.forFrequency&&(u=(T=(C=(B=v.value.values().next().value)==null?void 0:B.regionByIndex)==null?void 0:C.values().next().value)==null?void 0:T.key),u===p&&!r.autoRegion&&(u=void 0,d.value=p),!f.length)u!==void 0&&f.push(u);else if(f.length===1){let g=h.value;r.forFrequency&&(g=new Set,v.value.forEach(y=>{y.regionByIndex.forEach(S=>{S.index!==R&&S.index!==p&&g.add(S.key)})})),g.has(f[0])||(f=[],u!==void 0&&f.push(u))}else f=f.filter(g=>h.value.has(g)),!f.length&&u!==void 0&&f.push(u);if(JSON.stringify(t.value)!==JSON.stringify(f)){t.value=f;return}}if(!(t.value.length===1&&t.value[0]===(r.onlySearcher?o.searcherKey.value:a.regionIndex.value)))if(r.onlySearcher){if(t.value.length===1){o.searcherKey.value=t.value[0];return}o.searcherKey.value=w;return}else{if(!t.value.length)return;if(t.value.length===1&&o.searcherKey.value!==w){a.regionIndex.value=t.value[0];let f;for(const u of v.value.values()){for(const g of u.regionByIndex.values())if((r.forFrequency?g.key:g.index)===a.regionIndex.value){f=u.key;break}if(f!==void 0)break}f!==void 0&&(o.searcherKey.value=f)}else o.searcherKey.value=w,s.regionsIndexes.value=[...t.value]}},{immediate:!0}),l({getSearcher:k,getRegion:i}),(c,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":c.onlySearcher})},[e.createVNode(x._sfc_main$9,{options:e.unref(o).optionBySearcherKey.value,modelValue:e.unref(o).searcherKey.value,"onUpdate:modelValue":I[0]||(I[0]=B=>e.unref(o).searcherKey.value=B),name:"searcher_key",addChanger:c.addChanger},null,8,["options","modelValue","addChanger"]),!c.onlySearcher&&e.unref(o).searcherKey.value!==e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$9,{key:0,class:"top-select-region",options:e.unref(a).optionByRegionIndex.value,modelValue:e.unref(a).regionIndex.value,"onUpdate:modelValue":I[1]||(I[1]=B=>e.unref(a).regionIndex.value=B),name:c.forFrequency?"region_key":"region_index",addChanger:c.addChanger,"data-top-icon":c.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),c.addCompare&&!c.onlySearcher&&e.unref(o).searcherKey.value===e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$1,{key:1,name:"compare",onClick:m,"data-count-compare-regions-indexes":e.unref(s).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),X=n=>"-"+n,K=n=>n[0]==="-"?n.substring(1):n,O=(n,l)=>{n=K(n);const r=l.find(t=>t.id===n);if(r)return r},Se=(n,l,r)=>{l||(l={id:n.id}),l.id=n.id;const t=ae.TopPopupWorker.genElPopupOpener("div",l);return t.classList.add("top-tagSelector"),n.useTopButton&&t.classList.add("top-button","top-color_theme"),n.mode==="filter"&&t.classList.add("top-tagSelector-filter"),n.mode==="setter"&&!n.filters&&t.classList.add("top-tagSelector-setter_single"),n.mode==="setter"&&n.filters&&t.classList.add("top-tagSelector-setter_several"),t.onclick=d=>{d.preventDefault(),d.stopPropagation(),t.onclick=null;const o=e.ref(n.modelValue),a={model:o,mode:n.mode,targetId:n.targetId,filters:n.filters,payload:n.payload};_.storage(t,"topTagSelectorTarget",a),delete t.dataset.topPopupDisabled,e.isRef(n.modelValue)||e.watch(o,()=>{n.modelValue=o.value,D(t,n,r)}),t.click()},e.isRef(n.modelValue)?e.watch(n.modelValue,()=>D(t,n,r)):_.storage(t,"topTagSelectorRender",d=>{n.modelValue=d;const o=_.storage(t,"topTagSelectorTarget");o&&(o.model.value=d),D(t,n,r)}),D(t,n,r),t},Ie=(n,l)=>{var r;(r=_.storage(n,"topTagSelectorRender"))==null||r(l)},D=(n,l,r)=>{var d;const t=e.unref(l.modelValue);if(n.classList.toggle("top-tagSelector-selectedOne",!t.length||t.length===1),n.classList.toggle("top-tagSelector-toTwoLine",t.length>5),l.mode==="setter"&&l.filters){n.innerHTML=`<div>${r}</div>`;return}if(n.innerHTML="",!t.length&&l.mode==="filter"){const o=Z({id:"all",colorId:"",name:((d=x.useI18n().Common)==null?void 0:d.All_tags)??"",state:""});n.append(o)}t.forEach(o=>{var s,v;const a=Z({id:K(o),colorId:((s=O(o,l.tags))==null?void 0:s.color_id)??"",name:((v=O(o,l.tags))==null?void 0:v.name)??"",state:K(o)===o?"selected":"excluded"});n.append(a)})},Z=n=>{const l=document.createElement("div");return l.classList.add("top-tagSelector_tagIcon"),l.classList.toggle("top-tagSelector-active",!!n.state),l.classList.toggle("top-tagSelector-excluded",n.state==="excluded"),l.dataset.tag_id=n.id,l.dataset.tag_color_id=n.colorId,l.title=n.name,l},xe=[{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"}],Ce=["data-tag_id","data-tag_color_id","title"],F=e.defineComponent({__name:"tagIcon",props:{id:{},colorId:{},name:{},state:{}},setup(n){return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!l.state,"top-tagSelector-excluded":l.state==="excluded"}),"data-tag_id":l.id,"data-tag_color_id":l.colorId,title:l.name},null,10,Ce))}}),Be=["contenteditable","onKeydown"],ee=e.defineComponent({__name:"tagPopupListItem",props:e.mergeModels({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:e.mergeModels(["update:name","unselect","exclude","select"],["update:name"]),setup(n,{emit:l}){const r=n,t=l,d=e.useModel(n,"name"),o=e.ref(null),a=e.computed(()=>navigator.userAgent.indexOf("Firefox")!=-1?{contenteditable:s.value,onpaste:m=>m.preventDefault()}:{}),s=e.ref(!1),v=async()=>{var m;s.value=!0,await e.nextTick(),(m=o.value)==null||m.focus()},h=()=>{var c;const m=(c=o.value)==null?void 0:c.innerText;if(!m)return k();o.value&&(o.value.innerText=m),s.value=!1,t("update:name",m)},k=async()=>{o.value&&(o.value.innerText=r.name),s.value=!1},i=m=>{if(s.value||r.disabled)return;let c="selected";r.canExclude&&(m.ctrlKey||m.metaKey)&&(c="excluded"),r.state==c&&(c=""),c===""&&t("unselect"),c==="selected"&&t("select"),c==="excluded"&&t("exclude")};return(m,c)=>(e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":m.disabled,"top-tagSelector_tagListItem-canExclude":m.canExclude,"top-tagSelector-active":!!m.state,"top-tagSelector-excluded":m.state==="excluded"}),onClick:e.withModifiers(i,["stop"])},{default:e.withCtx(()=>[e.createVNode(F,{id:m.id,name:d.value,colorId:m.colorId,state:m.state},null,8,["id","name","colorId","state"]),e.createElementVNode("span",e.mergeProps({ref_key:"elName",ref:o,class:"top-tagSelector_tagListItemName",contenteditable:s.value?"plaintext-only":!1},a.value,{onKeydown:[e.withKeys(e.withModifiers(h,["stop"]),["enter"]),e.withKeys(e.withModifiers(k,["stop"]),["esc"])]}),e.toDisplayString(d.value),17,Be),m.editable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value?(e.openBlock(),e.createElementBlock("span",{key:1,"data-top-icon":"",class:"top-tagSelector_edit",onClick:e.withModifiers(h,["stop"])})):(e.openBlock(),e.createElementBlock("span",{key:0,"data-top-icon":"",class:"top-tagSelector_edit",onClick:v}))],64)):e.createCommentVNode("",!0)]),_:1},8,["class"]))}}),Ve={key:1},te=e.defineComponent({inheritAttrs:!1,__name:"popupOpener",props:e.mergeModels({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=l.useTopButton?x._sfc_main$1:"div",d=l.useTopButton?"html":"default",o={model:r,mode:l.mode,targetId:l.targetId,filters:l.filters,payload:l.payload};return(a,s)=>{const v=e.resolveDirective("top-data");return e.openBlock(),e.createBlock(E._sfc_main$1,{id:a.id},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(t)),e.mergeProps({class:{"top-tagSelector":!0,"top-tagSelector-filter":l.mode==="filter","top-tagSelector-setter_single":l.mode==="setter"&&!a.filters,"top-tagSelector-setter_several":l.mode==="setter"&&a.filters,"top-tagSelector-selectedOne":!r.value.length||r.value.length===1,"top-tagSelector-toTwoLine":r.value.length>5},color:"theme",styling:a.styling},a.$attrs),{[e.unref(d)]:e.withCtx(()=>[!r.value.length&&a.mode==="filter"?(e.openBlock(),e.createBlock(F,{key:0,id:"all",colorId:"",name:a.$i18n.Common.All_tags??"",state:""},null,8,["name"])):e.createCommentVNode("",!0),a.mode==="setter"&&a.filters?(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(a.$slots,"default")])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,h=>{var k,i;return e.openBlock(),e.createBlock(F,{id:e.unref(K)(h),colorId:((k=e.unref(O)(h,a.tags))==null?void 0:k.color_id)??"",name:((i=e.unref(O)(h,a.tags))==null?void 0:i.name)??"",state:e.unref(K)(h)===h?"selected":"excluded"},null,8,["id","colorId","name","state"])}),256))]),_:2},1040,["class","styling"])),[[v,o,"topTagSelectorTarget"]])]),_:3},8,["id"])}}}),Te=e.defineComponent({__name:"tagSelector",props:e.mergeModels({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:e.reactive(xe)},tagsModifiers:{}}),emits:e.mergeModels(["selector","setter","tagsChanged"],["update:modelValue","update:tags"]),setup(n,{emit:l}){const r=x.useI18n(),t=n,d=e.useModel(n,"modelValue"),o=e.useModel(n,"tags"),a=l,s=x.debounce((u,g)=>{a(u,g)},t.emitDelay);t.singleMode&&!d.value.length&&(d.value=[o.value[0].id]);const v=t.id??"top-popup-id-"+Math.random(),h=e.ref("add"),k=()=>{var y;const u=" "+((y=r.Common.Tags)==null?void 0:y.toLowerCase()),g=new Map;return g.set("add",{value:"add",title:r.Common.Add+u}),g.set("replace",{value:"replace",title:r.Common.Replace+u}),g.set("delete",{value:"delete",title:r.Common.Delete+u}),g};let i=e.shallowRef({model:d,mode:"filter",targetId:void 0,filters:void 0,payload:void 0});e.watch(d,()=>{s("selector",d.value)});const m=e.computed(()=>{if(i.value.mode==="setter"&&t.maxTagsForSetter&&!i.value.filters)return i.value.model.value.length>=t.maxTagsForSetter}),c=u=>{if(u!=="all"){if(i.value.model.value.includes(u))return"selected";if(i.value.model.value.includes(X(u)))return"excluded"}return u==="all"&&!i.value.model.value.length?"selected":""},I=(u,g)=>{const y=X(u);let S=i.value.model.value.filter(M=>M!==u&&M!==y);g==="select"&&S.push(u),g==="exclude"&&S.push(y),i.value.mode==="setter"&&i.value.targetId!==void 0&&t.requiredForSetter&&(S.length||S.push("1"),S.length===2&&i.value.model.value.length===1&&i.value.model.value[0]==="1"&&(S=S.filter(M=>M!=="1"))),t.singleMode&&!i.value.filters&&(S.length||(S=i.value.model.value),S.length>1&&(S=[S[S.length-1]])),S.sort((M,N)=>{if(!t.tags)return 0;const q=t.tags.findIndex(b=>b.id===M),L=t.tags.findIndex(b=>b.id===N);return q-L}),i.value.model.value=S,i.value.mode==="setter"&&i.value.targetId!==void 0&&s("setter",{tagsIds:S,targetId:i.value.targetId,payload:i.value.payload})},B=e.computed(()=>{let u="top-tagSelector_popup";return i.value.mode==="filter"&&(u+=" top-tagSelector_popup-filter"),i.value.mode==="setter"&&(u+=" top-tagSelector_popup-setter"),u}),C=()=>{const u=prompt("","New tag");if(!u||u==="New tag")return;const g=o.value.length+1;o.value.push({id:String(g),name:u,color_id:String((g-1)%10+1)}),a("tagsChanged",o.value)},T=u=>{var g;if(i.value=_.storage(u.elPopupOpener,"topTagSelectorTarget"),!i.value)throw new Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");if(i.value.filters&&(h.value="add",i.value.model.value=[]),!((g=x.Core.$)!=null&&g.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}!x.Core.state.isMobile&&!x.Core.state.isMobileUA&&o.value&&$(u.elPopup).sortable({items:'li:has([data-tag_id]:not([data-tag_id="all"]))',cancel:'[contenteditable="plaintext-only"], [contenteditable="true"]',distance:10,stop:function(y,S){if(!o.value)return;const M=$(S.item).parent().find("[data-tag_id]"),N=[];M.each((q,L)=>{if(!o.value)return;const b=$(L).attr("data-tag_id");N.push(b)}),o.value.sort((q,L)=>{const b=N.findIndex(j=>j===q.id),we=N.findIndex(j=>j===L.id);return b-we}),s("tagsChanged",o.value)}})},f=u=>{var g;(g=x.Core.$)!=null&&g.ui.sortable&&$(u.elPopup).data("ui-sortable")&&$(u.elPopup).sortable("destroy")};return(u,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(te,{class:"top-as-selector",modelValue:d.value,"onUpdate:modelValue":g[0]||(g[0]=y=>d.value=y),id:e.unref(v),tags:o.value,styling:u.styling,mode:"filter",useTopButton:""},null,8,["modelValue","id","tags","styling"]),e.createVNode(E._sfc_main,{id:e.unref(v),class:e.normalizeClass(B.value),onOpen:g[4]||(g[4]=y=>T(y)),onClose:g[5]||(g[5]=y=>f(y)),"transition-duration":50},e.createSlots({contentList:e.withCtx(()=>[e.unref(i).mode==="filter"&&!u.singleMode?(e.openBlock(),e.createBlock(ee,{key:0,id:"all",colorId:"",name:u.$i18n.Common.All_tags??"",state:e.unref(i).model.value.length?"":"selected",onSelect:g[3]||(g[3]=y=>e.unref(i).model.value=[])},null,8,["name","state"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>(e.openBlock(),e.createBlock(ee,{key:y.id,id:y.id,colorId:y.color_id,name:y.name,state:c(y.id),canExclude:e.unref(i).mode==="filter"&&!u.singleMode,editable:u.tagsEditable,disabled:m.value&&c(y.id)==="",onUnselect:S=>I(y.id,"unselect"),onSelect:S=>I(y.id,"select"),onExclude:S=>I(y.id,"exclude"),"onUpdate:name":S=>{y.name=S,e.unref(s)("tagsChanged",o.value)}},null,8,["id","colorId","name","state","canExclude","editable","disabled","onUnselect","onSelect","onExclude","onUpdate:name"]))),128)),u.tagsEditable&&o.value.length<u.tagsMax&&o.value.length<20?(e.openBlock(),e.createBlock(E._sfc_main$2,{key:1,"data-top-icon":"",onClick:e.withModifiers(C,["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Add),1)]),_:1})):e.createCommentVNode("",!0)]),_:2},[e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"header",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$9,{modelValue:h.value,"onUpdate:modelValue":g[1]||(g[1]=y=>h.value=y),options:k()},null,8,["modelValue","options"])]),key:"0"}:void 0,e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"footer",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(x._sfc_main$1,{onClick:g[2]||(g[2]=y=>e.unref(s)("setter",{tagsIds:e.unref(i).model.value,filters:e.unref(i).filters,filtersAction:h.value,payload:e.unref(i).payload}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.value==="add"?u.$i18n.Common.Add:"")+" "+e.toDisplayString(h.value==="replace"?u.$i18n.Common.Replace:"")+" "+e.toDisplayString(h.value==="delete"?u.$i18n.Common.Remove:""),1)]),_:1})]),key:"1"}:void 0]),1032,["id","class"])],64))}});V.TopSelectorCompetitors=de,V.TopSelectorRegion=ke,V.TopTagSelector=Te,V.TopTagSelectorPopupOpener=te,V.TopTagSelectorTagIcon=F,V.dialogSelectorRegions=Q,V.findRegion=H,V.genElTopTagSelectorPopupOpener=Se,V.genSearcherByKey=z,V.renderElTopTagSelectorPopupOpener=Ie,V.useItemsFromCompetitors=ue,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","vue","../.chunks/forms-BfDSGwrU.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-R7J0Cawj.amd","../.chunks/menu.vue_vue_type_style_index_0_lang-JZ-QwyLO.amd","../.chunks/utils-D73lx_ab.amd","../utils/searchers.amd","../utils/dom.amd","../popup/worker.amd","../require/css.amd!../assets/project.css"],(function(ne,V,e,x,E,oe,le,P,_,ae){"use strict";if(typeof e>"u")var e=window.Vue;const re={class:"top-selectorCompetitors"},ie={class:"top-ellipsis1"},de=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=e.computed(()=>{if(l.showSelectAllItem)return{icon:"",title:x.useI18n().Common.Select_all,value:"all",content:""}});return(d,o)=>(e.openBlock(),e.createElementBlock("div",re,[e.unref(x.Core).state.isMobile?(e.openBlock(),e.createBlock(E._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var a;return[e.createTextVNode(e.toDisplayString((a=d.items.find(s=>{var v;return s.value===((v=r.value)==null?void 0:v[0])}))==null?void 0:a.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.items,a=>{var s;return e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-active":(s=r.value)==null?void 0:s.includes(a.value)}),"data-top-icon":a.icon,title:a.title,onClick:()=>r.value=[a.value]},{default:e.withCtx(()=>[e.createElementVNode("span",ie,e.toDisplayString(a.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(oe._sfc_main,{key:1,modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=a=>r.value=a),items:d.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),ue=(n,l)=>e.computed(()=>e.toValue(n).filter(d=>d.on>=0||d.id===l).map(d=>({value:d.id,title:d.url+` [${d.id}]`,icon:d.id===e.toValue(l)?"":"",content:d.name}))),w=-1,p=-2,R=-1,se={0:"Yandex",1:"Google",4:"YouTube",5:"Bing",7:"Seznam",8:"AppStore",9:"GoogleStore",20:"Yandex.com",21:"Yandex.com.tr"},J={key:p,name:"--",index:p},G={key:p,name:"--",regions:[J],regionByIndex:new Map([[p,J]])},A={key:p,name:"Autoselect",index:p},U={key:p,name:"Autoselect",regions:[A],regionByIndex:new Map([[p,A]])},Y={countryCode:"00",depth:1,device:0,key:R,index:R,lang:"ru",name:"Without region"},ce=()=>(A.name=x.useI18n().Common.Autoselect,A),ge=()=>(ce(),U.name=x.useI18n().Common.Autoselect,console.log(U),U),me=()=>(Y.name=x.useI18n().Keywords.Without_region,Y),z=(n=!1,l=!1,r=[])=>{let t;return n?t=fe(r):t=W(r),l&&t.set(p,ge()),t.size||t.set(p,G),t},W=(n,l=!0,r=[],t=!1)=>{const d=new Map;return n.forEach(o=>{if(!o.enabled||t&&typeof o.key=="number"&&o.key>1)return;const a={...o};a.regionByIndex=new Map,o.regions&&o.regions.forEach(s=>{if(l&&!s.enabled)return;const v={...s};a.regionByIndex.set(v.index,v)}),!a.regionByIndex.size&&r.length,(!o.regions||a.regionByIndex.size||r.length)&&typeof a.key=="number"&&d.set(a.key,a)}),r.forEach(o=>{if(d.has(o))return;const a={key:o,name:se[o],regions:[],regionByIndex:new Map};d.set(a.key,a)}),d},fe=n=>{const l=W(n,!1,[0,1],!0);if(l.has(2)){const r=l.get(2);r&&(r.regionByIndex=new Map)}return l.forEach(r=>{if(!r.regionByIndex)return;const t={...me()};r.regionByIndex.set(t.index,t)}),l},H=(n,l,r=[])=>{const t=z(n,!1,r);let d;return t.forEach(o=>{if(!(l.searcher_key!==void 0&&l.searcher_key!=o.key)&&o.regions&&(o.regions.forEach(a=>{if(!d&&!(l.key!==void 0&&l.key!=a.key)&&!(l.index!==void 0&&l.index!=a.index)&&!(!n&&(l.lang!==void 0&&l.lang!=a.lang||l.device!==void 0&&l.device!=a.device)))return a.searcher_key=o.key,d=a,!1}),d))return!1}),d},Q=le.useAsyncTopDialog(()=>new Promise((n,l)=>ne(["../.chunks/dialog_selectorRegions-CIUq3D8W.amd"],n,l))),ve=(n,l)=>{const r=x.useI18n(),t=e.ref(l.value.keys().next().value??p),d=e.computed(()=>{const o=new Map;if(l.value.forEach(a=>{let s={value:a.key,title:a.name};n.addSearcherIcon&&(s.icon=P.getSearcherGIcon(a.key)),o.set(a.key,s)}),n.addCompare&&!o.has(p)){const a={value:"",title:"--------------------",disabled:!0};o.set(a.value,a);const s={value:w,title:r.Common.Compare};o.set(s.value,s)}return o});return{searcherKey:t,optionBySearcherKey:d}},ye=(n,l)=>{var o,a,s;const r=x.useI18n(),t=e.ref(p);n.modelValue.length===1&&(t.value=n.modelValue[0]),t.value===p&&(n.forFrequency?t.value=((a=(o=l.value)==null?void 0:o.regionByIndex.values().next().value)==null?void 0:a.key)??p:t.value=((s=l.value)==null?void 0:s.regionByIndex.keys().next().value)??p);const d=e.computed(()=>{var h;const v=new Map;return(h=l.value.regionByIndex)==null||h.forEach(k=>{let i=k.name;if(n.forFrequency){const I={value:k.key,title:i};v.has(k.key)||v.set(k.key,I);return}k.device&&(i+=" ("+r.Common["Device_"+k.device]+")");const m=P.getLangLabel(l.value.key||0,k.lang??"");m&&(i+=" / "+m);const c={value:k.index,title:i,icon:k.device?P.getDeviceGIcon(k.device):void 0};v.set(k.index,c)}),v});return e.watch(d,(v,h)=>{var c;if(n.onlySearcher||t.value!==void 0&&v.get(t.value))return;let k=v.keys().next().value;if(t.value===p||k===p){t.value=k;return}let i=((c=h==null?void 0:h.get(t.value))==null?void 0:c.title)||"",m=-1;for(const[I,B]of v.entries()){const C=B.title;if(typeof C!="string"||typeof I=="string")break;if(C===i){k=I;break}const T=new RegExp(` \\((${r.Common.Device_1}|${r.Common.Device_2})\\)`);let f=i,u=3;C.indexOf(f)===-1&&(f=i.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(f)===-1&&(f=i.replace(/ \/.*/,""),u--),C.indexOf(f)===-1&&(f=i.replace(/ \/.*/,""),f=f.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(f)!==-1&&(u<=m||(m=u,k=I))}t.value=k}),{regionIndex:t,optionByRegionIndex:d}},pe=(n,l,r)=>{const t=e.ref([]),d=()=>{if(n.onlySearcher&&l.value){t.value=Array.from(l.value.keys());return}let a=[];if(n.modelValue.length>1)a=[...n.modelValue];else try{a=JSON.parse(localStorage.getItem("ui:project:regionSelector"+n.projectId+":regionsIndexes"))??[]}catch{}a.length&&(a=a.filter(s=>r.value.has(s))),a.length||(a=Array.from(r.value)),t.value=[...a]},o=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes")};return e.watch(t,()=>{o()}),n.addCompare&&d(),{regionsIndexes:t}},he=n=>{const l=e.computed(()=>z(n.forFrequency,n.autoRegion,n.searchers)),r=e.computed(()=>l.value.get(d.searcherKey.value)||G),t=e.computed(()=>{const i=new Set;return l.value.forEach(m=>{m.regionByIndex.forEach(c=>{c.index!==R&&c.index!==p&&i.add(c.index)})}),i}),d=ve(n,l),o=ye(n,r),a=pe(n,l,t);e.watch(l,()=>{var m,c,I,B;if(n.onlySearcher?a.regionsIndexes.value=Array.from(l.value.keys()):a.regionsIndexes.value=a.regionsIndexes.value.filter(C=>t.value.has(C)),d.searcherKey.value===w)return;let i=l.value.keys().next().value;l.value.forEach(C=>{var T,f,u;if(n.onlySearcher&&C.key===d.searcherKey.value){i=d.searcherKey.value;return}if(o.regionIndex.value&&((T=C.regionByIndex)!=null&&T.has(o.regionIndex.value))&&(i=C.key),!n.onlySearcher){let g;i!==void 0&&(g=(f=l.value.get(i))==null?void 0:f.regionByIndex);const y=(u=l.value.get(C.key))==null?void 0:u.regionByIndex;g!=null&&g.has(p)&&!(y!=null&&y.has(p))&&(i=C.key)}}),i!==void 0&&(d.searcherKey.value=i),o.regionIndex.value!==void 0&&!((c=(m=r.value)==null?void 0:m.regionByIndex)!=null&&c.has(o.regionIndex.value))&&(o.regionIndex.value=(B=(I=r.value)==null?void 0:I.regions)==null?void 0:B.keys().next().value)},{immediate:!0});const s=()=>{if(!(d.searcherKey.value===w||d.searcherKey.value===p))return d.searcherKey.value},v=()=>{if(n.onlySearcher||o.regionIndex.value===p)return;let i=o.regionIndex.value;if(n.forFrequency){const m=o.regionIndex.value,c=H(n.forFrequency,{searcher_key:s(),key:m},n.searchers);i=c==null?void 0:c.index}return i},h=()=>{const i=s();if(i!==void 0)return l.value.get(i)};return{selectSearcher:d,selectRegion:o,compare:a,searcherByKey:l,allRegionsIndexes:t,getSearcher:h,getRegion:()=>{var m,c;const i=v();if(i!==void 0)return(c=(m=h())==null?void 0:m.regionByIndex)==null?void 0:c.get(i)}}},ke=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},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(n,{expose:l}){const r=n,t=e.useModel(n,"modelValue"),d=e.useModel(n,"modelValueSingle"),{selectSearcher:o,selectRegion:a,compare:s,searcherByKey:v,allRegionsIndexes:h,getSearcher:k,getRegion:i}=he(r),m=()=>{const c=[];v.value.forEach(I=>{I.enabled&&I.regions.forEach(B=>{B.enabled&&c.push(B)})}),Q.open("selectorRegions",{regions:c,regionsIndexes:s.regionsIndexes.value,"@update:regionsIndexes":I=>s.regionsIndexes.value=I})};return e.watch([a.regionIndex,o.searcherKey,s.regionsIndexes],()=>{if(o.searcherKey.value===w&&s.regionsIndexes.value.length){if(JSON.stringify(t.value)===JSON.stringify(s.regionsIndexes.value))return;t.value=[...s.regionsIndexes.value]}else r.onlySearcher?(t.value=[o.searcherKey.value],o.searcherKey.value===p&&!r.autoRegion&&(t.value.length=0)):(t.value=[a.regionIndex.value],a.regionIndex.value===p&&!r.autoRegion&&(t.value.length=0));!r.onlySearcher&&!h.value.size&&(o.searcherKey.value=p)}),d.value&&e.watch(d,()=>{d.value&&(t.value=[d.value])},{immediate:!0}),e.watch(t,()=>{var c,I,B,C,T;if(t.value[0]&&(d.value=t.value[0]),r.onlySearcher){if(!t.value.length||t.value.length===1&&!v.value.has(t.value[0])||t.value.length===1&&t.value[0]===p&&!r.autoRegion){let f=v.value.keys().next().value;f===p&&!r.autoRegion&&(f=void 0,d.value=p),f!==void 0?t.value=[f]:t.value.length=0;return}if(t.value.length>1&&JSON.stringify(t.value)!==JSON.stringify(s.regionsIndexes.value)){t.value=[...s.regionsIndexes.value];return}}else{let f=[...new Set(t.value)],u=(I=(c=v.value.values().next().value)==null?void 0:c.regionByIndex)==null?void 0:I.keys().next().value;if(r.forFrequency&&(u=(T=(C=(B=v.value.values().next().value)==null?void 0:B.regionByIndex)==null?void 0:C.values().next().value)==null?void 0:T.key),u===p&&!r.autoRegion&&(u=void 0,d.value=p),!f.length)u!==void 0&&f.push(u);else if(f.length===1){let g=h.value;r.forFrequency&&(g=new Set,v.value.forEach(y=>{y.regionByIndex.forEach(S=>{S.index!==R&&S.index!==p&&g.add(S.key)})})),g.has(f[0])||(f=[],u!==void 0&&f.push(u))}else f=f.filter(g=>h.value.has(g)),!f.length&&u!==void 0&&f.push(u);if(JSON.stringify(t.value)!==JSON.stringify(f)){t.value=f;return}}if(!(t.value.length===1&&t.value[0]===(r.onlySearcher?o.searcherKey.value:a.regionIndex.value)))if(r.onlySearcher){if(t.value.length===1){o.searcherKey.value=t.value[0];return}o.searcherKey.value=w;return}else{if(!t.value.length)return;if(t.value.length===1&&o.searcherKey.value!==w){a.regionIndex.value=t.value[0];let f;for(const u of v.value.values()){for(const g of u.regionByIndex.values())if((r.forFrequency?g.key:g.index)===a.regionIndex.value){f=u.key;break}if(f!==void 0)break}f!==void 0&&(o.searcherKey.value=f)}else o.searcherKey.value=w,s.regionsIndexes.value=[...t.value]}},{immediate:!0}),l({getSearcher:k,getRegion:i}),(c,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":c.onlySearcher})},[e.createVNode(x._sfc_main$9,{options:e.unref(o).optionBySearcherKey.value,modelValue:e.unref(o).searcherKey.value,"onUpdate:modelValue":I[0]||(I[0]=B=>e.unref(o).searcherKey.value=B),name:"searcher_key",addChanger:c.addChanger},null,8,["options","modelValue","addChanger"]),!c.onlySearcher&&e.unref(o).searcherKey.value!==e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$9,{key:0,class:"top-select-region",options:e.unref(a).optionByRegionIndex.value,modelValue:e.unref(a).regionIndex.value,"onUpdate:modelValue":I[1]||(I[1]=B=>e.unref(a).regionIndex.value=B),name:c.forFrequency?"region_key":"region_index",addChanger:c.addChanger,"data-top-icon":c.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),c.addCompare&&!c.onlySearcher&&e.unref(o).searcherKey.value===e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$1,{key:1,name:"compare",onClick:m,"data-count-compare-regions-indexes":e.unref(s).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),X=n=>"-"+n,K=n=>n[0]==="-"?n.substring(1):n,O=(n,l)=>{n=K(n);const r=l.find(t=>t.id===n);if(r)return r},Se=(n,l,r)=>{l||(l={id:n.id}),l.id=n.id;const t=ae.TopPopupWorker.genElPopupOpener("div",l);return t.classList.add("top-tagSelector"),n.useTopButton&&t.classList.add("top-button","top-color_theme"),n.mode==="filter"&&t.classList.add("top-tagSelector-filter"),n.mode==="setter"&&!n.filters&&t.classList.add("top-tagSelector-setter_single"),n.mode==="setter"&&n.filters&&t.classList.add("top-tagSelector-setter_several"),t.onclick=d=>{d.preventDefault(),d.stopPropagation(),t.onclick=null;const o=e.ref(n.modelValue),a={model:o,mode:n.mode,targetId:n.targetId,filters:n.filters,payload:n.payload};_.storage(t,"topTagSelectorTarget",a),delete t.dataset.topPopupDisabled,e.isRef(n.modelValue)||e.watch(o,()=>{n.modelValue=o.value,D(t,n,r)}),t.click()},e.isRef(n.modelValue)?e.watch(n.modelValue,()=>D(t,n,r)):_.storage(t,"topTagSelectorRender",d=>{n.modelValue=d;const o=_.storage(t,"topTagSelectorTarget");o&&(o.model.value=d),D(t,n,r)}),D(t,n,r),t},Ie=(n,l)=>{var r;(r=_.storage(n,"topTagSelectorRender"))==null||r(l)},D=(n,l,r)=>{var d;const t=e.unref(l.modelValue);if(n.classList.toggle("top-tagSelector-selectedOne",!t.length||t.length===1),n.classList.toggle("top-tagSelector-toTwoLine",t.length>5),l.mode==="setter"&&l.filters){n.innerHTML=`<div>${r}</div>`;return}if(n.innerHTML="",!t.length&&l.mode==="filter"){const o=Z({id:"all",colorId:"",name:((d=x.useI18n().Common)==null?void 0:d.All_tags)??"",state:""});n.append(o)}t.forEach(o=>{var s,v;const a=Z({id:K(o),colorId:((s=O(o,l.tags))==null?void 0:s.color_id)??"",name:((v=O(o,l.tags))==null?void 0:v.name)??"",state:K(o)===o?"selected":"excluded"});n.append(a)})},Z=n=>{const l=document.createElement("div");return l.classList.add("top-tagSelector_tagIcon"),l.classList.toggle("top-tagSelector-active",!!n.state),l.classList.toggle("top-tagSelector-excluded",n.state==="excluded"),l.dataset.tag_id=n.id,l.dataset.tag_color_id=n.colorId,l.title=n.name,l},xe=[{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"}],Ce=["data-tag_id","data-tag_color_id","title"],F=e.defineComponent({__name:"tagIcon",props:{id:{},colorId:{},name:{},state:{}},setup(n){return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!l.state,"top-tagSelector-excluded":l.state==="excluded"}),"data-tag_id":l.id,"data-tag_color_id":l.colorId,title:l.name},null,10,Ce))}}),Be=["contenteditable","onKeydown"],ee=e.defineComponent({__name:"tagPopupListItem",props:e.mergeModels({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:e.mergeModels(["update:name","unselect","exclude","select"],["update:name"]),setup(n,{emit:l}){const r=n,t=l,d=e.useModel(n,"name"),o=e.ref(null),a=e.computed(()=>navigator.userAgent.indexOf("Firefox")!=-1?{contenteditable:s.value,onpaste:m=>m.preventDefault()}:{}),s=e.ref(!1),v=async()=>{var m;s.value=!0,await e.nextTick(),(m=o.value)==null||m.focus()},h=()=>{var c;const m=(c=o.value)==null?void 0:c.innerText;if(!m)return k();o.value&&(o.value.innerText=m),s.value=!1,t("update:name",m)},k=async()=>{o.value&&(o.value.innerText=r.name),s.value=!1},i=m=>{if(s.value||r.disabled)return;let c="selected";r.canExclude&&(m.ctrlKey||m.metaKey)&&(c="excluded"),r.state==c&&(c=""),c===""&&t("unselect"),c==="selected"&&t("select"),c==="excluded"&&t("exclude")};return(m,c)=>(e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":m.disabled,"top-tagSelector_tagListItem-canExclude":m.canExclude,"top-tagSelector-active":!!m.state,"top-tagSelector-excluded":m.state==="excluded"}),onClick:e.withModifiers(i,["stop"])},{default:e.withCtx(()=>[e.createVNode(F,{id:m.id,name:d.value,colorId:m.colorId,state:m.state},null,8,["id","name","colorId","state"]),e.createElementVNode("span",e.mergeProps({ref_key:"elName",ref:o,class:"top-tagSelector_tagListItemName",contenteditable:s.value?"plaintext-only":!1},a.value,{onKeydown:[e.withKeys(e.withModifiers(h,["stop"]),["enter"]),e.withKeys(e.withModifiers(k,["stop"]),["esc"])]}),e.toDisplayString(d.value),17,Be),m.editable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value?(e.openBlock(),e.createElementBlock("span",{key:1,"data-top-icon":"",class:"top-tagSelector_edit",onClick:e.withModifiers(h,["stop"])})):(e.openBlock(),e.createElementBlock("span",{key:0,"data-top-icon":"",class:"top-tagSelector_edit",onClick:v}))],64)):e.createCommentVNode("",!0)]),_:1},8,["class"]))}}),Ve={key:1},te=e.defineComponent({inheritAttrs:!1,__name:"popupOpener",props:e.mergeModels({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=l.useTopButton?x._sfc_main$1:"div",d=l.useTopButton?"html":"default",o={model:r,mode:l.mode,targetId:l.targetId,filters:l.filters,payload:l.payload};return(a,s)=>{const v=e.resolveDirective("top-data");return e.openBlock(),e.createBlock(E._sfc_main$1,{id:a.id},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(t)),e.mergeProps({class:{"top-tagSelector":!0,"top-tagSelector-filter":l.mode==="filter","top-tagSelector-setter_single":l.mode==="setter"&&!a.filters,"top-tagSelector-setter_several":l.mode==="setter"&&a.filters,"top-tagSelector-selectedOne":!r.value.length||r.value.length===1,"top-tagSelector-toTwoLine":r.value.length>5},color:"theme",styling:a.styling},a.$attrs),{[e.unref(d)]:e.withCtx(()=>[!r.value.length&&a.mode==="filter"?(e.openBlock(),e.createBlock(F,{key:0,id:"all",colorId:"",name:a.$i18n.Common.All_tags??"",state:""},null,8,["name"])):e.createCommentVNode("",!0),a.mode==="setter"&&a.filters?(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(a.$slots,"default")])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,h=>{var k,i;return e.openBlock(),e.createBlock(F,{id:e.unref(K)(h),colorId:((k=e.unref(O)(h,a.tags))==null?void 0:k.color_id)??"",name:((i=e.unref(O)(h,a.tags))==null?void 0:i.name)??"",state:e.unref(K)(h)===h?"selected":"excluded"},null,8,["id","colorId","name","state"])}),256))]),_:2},1040,["class","styling"])),[[v,o,"topTagSelectorTarget"]])]),_:3},8,["id"])}}}),Te=e.defineComponent({__name:"tagSelector",props:e.mergeModels({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:e.reactive(xe)},tagsModifiers:{}}),emits:e.mergeModels(["selector","setter","tagsChanged"],["update:modelValue","update:tags"]),setup(n,{emit:l}){const r=x.useI18n(),t=n,d=e.useModel(n,"modelValue"),o=e.useModel(n,"tags"),a=l,s=x.debounce((u,g)=>{a(u,g)},t.emitDelay);t.singleMode&&!d.value.length&&(d.value=[o.value[0].id]);const v=t.id??"top-popup-id-"+Math.random(),h=e.ref("add"),k=()=>{var y;const u=" "+((y=r.Common.Tags)==null?void 0:y.toLowerCase()),g=new Map;return g.set("add",{value:"add",title:r.Common.Add+u}),g.set("replace",{value:"replace",title:r.Common.Replace+u}),g.set("delete",{value:"delete",title:r.Common.Delete+u}),g};let i=e.shallowRef({model:d,mode:"filter",targetId:void 0,filters:void 0,payload:void 0});e.watch(d,()=>{s("selector",d.value)});const m=e.computed(()=>{if(i.value.mode==="setter"&&t.maxTagsForSetter&&!i.value.filters)return i.value.model.value.length>=t.maxTagsForSetter}),c=u=>{if(u!=="all"){if(i.value.model.value.includes(u))return"selected";if(i.value.model.value.includes(X(u)))return"excluded"}return u==="all"&&!i.value.model.value.length?"selected":""},I=(u,g)=>{const y=X(u);let S=i.value.model.value.filter(M=>M!==u&&M!==y);g==="select"&&S.push(u),g==="exclude"&&S.push(y),i.value.mode==="setter"&&i.value.targetId!==void 0&&t.requiredForSetter&&(S.length||S.push("1"),S.length===2&&i.value.model.value.length===1&&i.value.model.value[0]==="1"&&(S=S.filter(M=>M!=="1"))),t.singleMode&&!i.value.filters&&(S.length||(S=i.value.model.value),S.length>1&&(S=[S[S.length-1]])),S.sort((M,N)=>{if(!t.tags)return 0;const q=t.tags.findIndex(b=>b.id===M),L=t.tags.findIndex(b=>b.id===N);return q-L}),i.value.model.value=S,i.value.mode==="setter"&&i.value.targetId!==void 0&&s("setter",{tagsIds:S,targetId:i.value.targetId,payload:i.value.payload})},B=e.computed(()=>{let u="top-tagSelector_popup";return i.value.mode==="filter"&&(u+=" top-tagSelector_popup-filter"),i.value.mode==="setter"&&(u+=" top-tagSelector_popup-setter"),u}),C=()=>{const u=prompt("","New tag");if(!u||u==="New tag")return;const g=o.value.length+1;o.value.push({id:String(g),name:u,color_id:String((g-1)%10+1)}),a("tagsChanged",o.value)},T=u=>{var g;if(i.value=_.storage(u.elPopupOpener,"topTagSelectorTarget"),!i.value)throw new Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");if(i.value.filters&&(h.value="add",i.value.model.value=[]),!((g=x.Core.$)!=null&&g.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}!x.Core.state.isMobile&&!x.Core.state.isMobileUA&&o.value&&$(u.elPopup).sortable({items:'li:has([data-tag_id]:not([data-tag_id="all"]))',cancel:'[contenteditable="plaintext-only"], [contenteditable="true"]',distance:10,stop:function(y,S){if(!o.value)return;const M=$(S.item).parent().find("[data-tag_id]"),N=[];M.each((q,L)=>{if(!o.value)return;const b=$(L).attr("data-tag_id");N.push(b)}),o.value.sort((q,L)=>{const b=N.findIndex(j=>j===q.id),we=N.findIndex(j=>j===L.id);return b-we}),s("tagsChanged",o.value)}})},f=u=>{var g;(g=x.Core.$)!=null&&g.ui.sortable&&$(u.elPopup).data("ui-sortable")&&$(u.elPopup).sortable("destroy")};return(u,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(te,{class:"top-as-selector",modelValue:d.value,"onUpdate:modelValue":g[0]||(g[0]=y=>d.value=y),id:e.unref(v),tags:o.value,styling:u.styling,mode:"filter",useTopButton:""},null,8,["modelValue","id","tags","styling"]),e.createVNode(E._sfc_main,{id:e.unref(v),class:e.normalizeClass(B.value),onOpen:g[4]||(g[4]=y=>T(y)),onClose:g[5]||(g[5]=y=>f(y)),"transition-duration":50},e.createSlots({contentList:e.withCtx(()=>[e.unref(i).mode==="filter"&&!u.singleMode?(e.openBlock(),e.createBlock(ee,{key:0,id:"all",colorId:"",name:u.$i18n.Common.All_tags??"",state:e.unref(i).model.value.length?"":"selected",onSelect:g[3]||(g[3]=y=>e.unref(i).model.value=[])},null,8,["name","state"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>(e.openBlock(),e.createBlock(ee,{key:y.id,id:y.id,colorId:y.color_id,name:y.name,state:c(y.id),canExclude:e.unref(i).mode==="filter"&&!u.singleMode,editable:u.tagsEditable,disabled:m.value&&c(y.id)==="",onUnselect:S=>I(y.id,"unselect"),onSelect:S=>I(y.id,"select"),onExclude:S=>I(y.id,"exclude"),"onUpdate:name":S=>{y.name=S,e.unref(s)("tagsChanged",o.value)}},null,8,["id","colorId","name","state","canExclude","editable","disabled","onUnselect","onSelect","onExclude","onUpdate:name"]))),128)),u.tagsEditable&&o.value.length<u.tagsMax&&o.value.length<20?(e.openBlock(),e.createBlock(E._sfc_main$2,{key:1,"data-top-icon":"",onClick:e.withModifiers(C,["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Add),1)]),_:1})):e.createCommentVNode("",!0)]),_:2},[e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"header",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$9,{modelValue:h.value,"onUpdate:modelValue":g[1]||(g[1]=y=>h.value=y),options:k()},null,8,["modelValue","options"])]),key:"0"}:void 0,e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"footer",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(x._sfc_main$1,{onClick:g[2]||(g[2]=y=>e.unref(s)("setter",{tagsIds:e.unref(i).model.value,filters:e.unref(i).filters,filtersAction:h.value,payload:e.unref(i).payload}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.value==="add"?u.$i18n.Common.Add:"")+" "+e.toDisplayString(h.value==="replace"?u.$i18n.Common.Replace:"")+" "+e.toDisplayString(h.value==="delete"?u.$i18n.Common.Remove:""),1)]),_:1})]),key:"1"}:void 0]),1032,["id","class"])],64))}});V.TopSelectorCompetitors=de,V.TopSelectorRegion=ke,V.TopTagSelector=Te,V.TopTagSelectorPopupOpener=te,V.TopTagSelectorTagIcon=F,V.dialogSelectorRegions=Q,V.findRegion=H,V.genElTopTagSelectorPopupOpener=Se,V.genSearcherByKey=z,V.renderElTopTagSelectorPopupOpener=Ie,V.useItemsFromCompetitors=ue,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=project.amd.js.map
@@ -3,7 +3,7 @@ import { defineComponent as P, mergeModels as N, useModel as D, computed as E, c
3
3
  import { u as R, C as J, c as H, o as re, d as Ae } from "../.chunks/forms-BWoAyEVH.es.js";
4
4
  import { _ as Ie, b as ue, a as Re } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-Dljef_xa.es.js";
5
5
  import { _ as Oe } from "../.chunks/menu.vue_vue_type_style_index_0_lang-HDPVVgzy.es.js";
6
- import { u as Ne } from "../.chunks/utils-B1fRcl8f.es.js";
6
+ import { u as Ne } from "../.chunks/utils-CzR2aepH.es.js";
7
7
  import { getSearcherGIcon as De, getLangLabel as Fe, getDeviceGIcon as qe } from "../utils/searchers.js";
8
8
  import { storage as W } from "../utils/dom.js";
9
9
  import { TopPopupWorker as Pe } from "../popup/worker.js";
@@ -170,7 +170,7 @@ const Ue = { class: "top-selectorCompetitors" }, je = { class: "top-ellipsis1" }
170
170
  }), i))
171
171
  return !1;
172
172
  }), i;
173
- }, Qe = Ne(() => import("../.chunks/dialog_selectorRegions-BpE6vw7x.es.js")), Xe = (t, l) => {
173
+ }, Qe = Ne(() => import("../.chunks/dialog_selectorRegions-B-qVSxWs.es.js")), Xe = (t, l) => {
174
174
  const o = R(), e = F(l.value.keys().next().value ?? p), i = E(() => {
175
175
  const a = /* @__PURE__ */ new Map();
176
176
  if (l.value.forEach((n) => {
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-BfDSGwrU.amd","../.chunks/core-Ct3VWRde.amd","vue","../.chunks/dialogs.vue_vue_type_script_setup_true_lang-CM666D6Q.amd"],(function(b,c,g,f,r,d){"use strict";if(typeof r>"u")var r=window.Vue;const s={0:"Yandex",20:"Yandex.com",21:"Yandex.com.tr",1:"Google",4:"YouTube",5:"Bing",7:"Seznam",8:"AppStore",9:"GooglePlay",101:"VK",102:"Facebook",103:"Twitter"},t=a=>{let e="";switch(typeof a=="string"&&(a=Number(a)),a){case 0:e="";break;case 20:case 21:e="";break;case 1:e="";break;case 2:e="";break;case 3:e="";break;case 4:e="";break;case 5:e="";break;case 6:e="";break;case 7:e="";break;case 8:e="";break;case 9:e="";break;case null:e="";break}return e},n=a=>{let e="";switch(typeof a=="string"&&(a=Number(a)),a%10){case 0:e="";break;case 1:e="";break;case 2:e="";break}return e},i=(a,e)=>{switch(typeof a=="string"&&(a=Number(a)),a*1){case 1:case 4:case 5:case 6:case 8:case 9:return e}return""},u=(a,e,k)=>{switch(e*1){case 0:switch(k*1){case 2:a=`"${a}"`;break;case 3:a=`"!${a}"`;break;case 5:a=`"[${a}]"`;break;case 6:a=`"[!${a}]"`;break}break;case 1:a=`[${a}]`;break}return a},o=(a,e)=>{switch(e===null&&(e=6),a){case 1:e=3;break;case 2:e=2;break;case 5:e>1&&(e=1);break;default:[1,2,3,5,6].includes(e)||(e=3)}return e};c.genVolumeLabel=u,c.getDeviceGIcon=n,c.getLangLabel=i,c.getSearcherGIcon=t,c.prepareVolumeType=o,c.searchersNames=s,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","../.chunks/forms-BfDSGwrU.amd","../.chunks/core-Bl-lqyaf.amd","vue","../.chunks/dialogs.vue_vue_type_script_setup_true_lang-C5E3bwpc.amd"],(function(b,c,g,f,r,d){"use strict";if(typeof r>"u")var r=window.Vue;const s={0:"Yandex",20:"Yandex.com",21:"Yandex.com.tr",1:"Google",4:"YouTube",5:"Bing",7:"Seznam",8:"AppStore",9:"GooglePlay",101:"VK",102:"Facebook",103:"Twitter"},t=a=>{let e="";switch(typeof a=="string"&&(a=Number(a)),a){case 0:e="";break;case 20:case 21:e="";break;case 1:e="";break;case 2:e="";break;case 3:e="";break;case 4:e="";break;case 5:e="";break;case 6:e="";break;case 7:e="";break;case 8:e="";break;case 9:e="";break;case null:e="";break}return e},n=a=>{let e="";switch(typeof a=="string"&&(a=Number(a)),a%10){case 0:e="";break;case 1:e="";break;case 2:e="";break}return e},i=(a,e)=>{switch(typeof a=="string"&&(a=Number(a)),a*1){case 1:case 4:case 5:case 6:case 8:case 9:return e}return""},u=(a,e,k)=>{switch(e*1){case 0:switch(k*1){case 2:a=`"${a}"`;break;case 3:a=`"!${a}"`;break;case 5:a=`"[${a}]"`;break;case 6:a=`"[!${a}]"`;break}break;case 1:a=`[${a}]`;break}return a},o=(a,e)=>{switch(e===null&&(e=6),a){case 1:e=3;break;case 2:e=2;break;case 5:e>1&&(e=1);break;default:[1,2,3,5,6].includes(e)||(e=3)}return e};c.genVolumeLabel=u,c.getDeviceGIcon=n,c.getLangLabel=i,c.getSearcherGIcon=t,c.prepareVolumeType=o,c.searchersNames=s,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=searchers.amd.js.map
@@ -1,7 +1,7 @@
1
1
  import "../.chunks/forms-BWoAyEVH.es.js";
2
- import "../.chunks/core-DVlMYAfi.es.js";
2
+ import "../.chunks/core-BAfIDulV.es.js";
3
3
  import "vue";
4
- import "../.chunks/dialogs.vue_vue_type_script_setup_true_lang-6huAKJt_.es.js";
4
+ import "../.chunks/dialogs.vue_vue_type_script_setup_true_lang-B9Uc437d.es.js";
5
5
  const k = {
6
6
  0: "Yandex",
7
7
  20: "Yandex.com",
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialogs.vue_vue_type_script_setup_true_lang-6huAKJt_.es.js","sources":["../../src/storybook/jquery.ts","../../src/components/dialog/lib/worker.ts","../../src/components/dialog/lib/utils.globalEvents.ts","../../src/components/dialog/lib/utils.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue"],"sourcesContent":["/**\n * см. /.storybook/preview-head.html\n */\nexport default $;\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';\nimport { getElDialogWrapper } from '@/components/dialog/lib/utils';\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>('.top-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('.top-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\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<ElTopDialogPage>(elDialog, `[data-view-page=\"${pageName}\"]`);\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\t/**\n\t * Закрыть диалоговое окно по его id\n\t * @param id - id элемента ElTopDialog\n\t * @see ElTopDialog\n\t */\n\tstatic close(id: string) {\n\t\tconst elDialog = <ElTopDialog | null>document.getElementById(id);\n\t\tif (!elDialog) return;\n\n\t\tconst elDialogWrapper = getElDialogWrapper(elDialog);\n\n\t\telDialogWrapper.close();\n\t};\n\n\t/**\n\t * Размонтировать диалоговое окно по его id\n\t * @param id - id элемента ElTopDialog\n\t * @see ElTopDialog\n\t */\n\tstatic destroy(id: string) {\n\t\tconst elDialog = <ElTopDialog | null>document.getElementById(id);\n\t\tif (!elDialog) return;\n\n\t\tconst elDialogWrapper = getElDialogWrapper(elDialog);\n\n\t\telDialogWrapper.close();\n\t\telDialogWrapper.remove();\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\tlet view: RegExpExecArray | null;\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\n\t\t// TODO: Цикл делает только одну оперцию и выходит (возможно, оставлен специально с какой-то целью, если нет - заменить на if)\n\t\twhile (view = regexp.exec(location.hash)) {\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<ElTopDialog>(document, '.top-dialog-content[data-view-page-active]');\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 elDialogWrapper = getElDialogWrapper(elDialog);\n\n\t\t\t\telDialogWrapper.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 { getElDialogWrapper, TopDialogUtils } from './utils';\nimport { TopDialogWorker } from './worker';\nimport { isVisible, querySelectorAllArray } 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 * Закрытие диалога по кнопке закрыть\n\t */\n\tdocument.addEventListener('click', (e) => {\n\t\t// // навигация без истории\n\t\t// var $dialog = $(this).closest('.top-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('.top-dialog-content').dialog('close');\n\t\t// \t});\n\t\t// } else {\n\t\t// \t$(this).closest('.top-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>('.top-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 elDialogWrapper = getElDialogWrapper(elDialog);\n\n\t\telDialogWrapper.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('.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', (event) => {\n\t\tif (!(event.target instanceof HTMLElement)) return;\n\n\t\tconst eventTarget = event.target;\n\n\t\tif (!eventTarget.classList.contains('top-dialog-overlay')) return;\n\n\t\tlet elDialogWrapperWithTopZIndex: ElTopDialogWrapper | undefined;\n\t\tlet topZIndex = 0;\n\n\t\tconst elDialogWrapperVisibles = querySelectorAllArray<ElTopDialogWrapper>(document, '.dialog').filter((elDialogWrapper) => {\n\t\t\treturn isVisible(elDialogWrapper) && elDialogWrapper.getAttribute('aria-modal') === 'false';\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\telDialogWrapperWithTopZIndex.close();\n\t\t}\n\t});\n\n\twindow.addEventListener('resize', TopDialogUtils.recalcPositions);\n\n\tTopDialogUtils.recalcPositions();\n};\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 {\n\tElTopDialogBody,\n\tElTopDialog,\n\tElTopDialogModalLayer,\n\tElTopDialogPage,\n\tMoveDirection,\n\tElTopDialogWrapper,\n\tElDialogOverlay,\n} 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;\n\n/**\n * Является ли элемент JQuery<HTMLElement>\n * @todo Удалить после переписки jquery на сайте\n */\nconst isElJQuery = (el: JQuery<HTMLElement> | HTMLElement | HTMLElement[]) => {\n\treturn !!el && typeof el === 'object' && 'jquery' in el;\n};\n\nconst openElDialog = (elDialogWrapper: ElTopDialogWrapper) => {\n\tconst elDialog = getElDialog(elDialogWrapper);\n\n\tconst options = genVueOptions(elDialog);\n\n\telDialogWrapper.setAttribute('closedby', options.closedby!);\n\n\tif (options.modal) {\n\t\telDialogWrapper.setAttribute('aria-modal', 'true');\n\t\telDialogWrapper.showModal();\n\t} else {\n\t\telDialogWrapper.setAttribute('aria-modal', 'false');\n\t\telDialogWrapper.show();\n\t}\n};\n\n/**\n * Получить настройки диалогового окна из Vue компонента\n */\nconst genVueOptions = (elDialog: ElTopDialog) => {\n\tconst options: {\n\t\tmodal: boolean,\n\t\tclosedby: 'any' | 'closerequest' | 'none',\n\t\tposition?: undefined,\n\t} = {\n\t\tmodal: false,\n\t\tclosedby: 'closerequest',\n\t};\n\n\t// Установить диалоговое окно в режим модального (при использовании нативного элемента \"dialog\" в модльном режиме браузеры помещают его в \"#top-layer\", что делает невозможным расположение других всплывающих элементов поверх него)\n\t// if (elDialog.dataset.modal === 'true') options.modal = true;\n\n\tconst elDialogClosedby = elDialog.dataset.closedby;\n\n\t// Значение \"any\" не используется, так как нативный элемент \"dialog\" будет закрываться при клике даже на элементы, расположенные поверх него\n\tif (elDialogClosedby === 'closerequest' || elDialogClosedby === 'none') options.closedby = elDialogClosedby;\n\n\treturn options;\n};\n\nconst getElDialogById = (id: string) => {\n\treturn <ElTopDialog | null>document.getElementById(id);\n};\n\n/**\n * Добавить методы jquery-диалога для обратной совместимости\n * @todo Удалить после прекрщения использовния jquery-диалога на сайте\n */\nconst addJQueryDialogMethods = (elDialog: ElTopDialog) => {\n\telDialog.dialog = (action) => {\n\t\tconst elDialogWrapper = elDialog.closest('.dialog');\n\n\t\tswitch (action) {\n\t\t\tcase undefined:\n\t\t\tcase 'open': {\n\t\t\t\topenElDialog(elDialogWrapper);\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'close': {\n\t\t\t\telDialogWrapper.close();\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(`Передан неизвестный аргумент: \"${action}\"`);\n\t\t\t}\n\t\t}\n\n\t\treturn elDialog;\n\t};\n\n\telDialog.toggleClass = (classNames, state) => {\n\t\tif (typeof classNames === 'string') {\n\t\t\tclassNames = classNames.split(' ');\n\t\t}\n\n\t\tif (Array.isArray(classNames)) {\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telDialog.classList.toggle(className, state);\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new Error(`Передан необработанный тип аргумента: ${typeof classNames}`);\n\t\t}\n\n\t\treturn elDialog;\n\t};\n\n\telDialog.data = (...args) => {\n\t\t$(elDialog).data(args);\n\n\t\treturn elDialog;\n\t};\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 * Событие create дилогового окна\n */\nconst onCreate = (elDialog: ElTopDialog) => {\n\tconst elDialogBody = elDialog.querySelector<ElTopDialogBody>('.modal-body');\n\tif (!elDialogBody) return;\n\n\tconnectScrollShadow(elDialogBody);\n\n\tTopDialogWorker.state.decoratorOnCreate?.(elDialog);\n\n\tinitPopup(elDialog);\n};\n\n/**\n * Инициирование событий TopPopup в диалоговом окне\n */\nconst initPopup = (elDialog: ElTopDialog) => {\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 * Событие open дилогового окна\n */\nconst onOpen = async (elDialog: ElTopDialog) => {\n\tconst pageName = elDialog.dataset.viewPageActive;\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);\n};\n\n/**\n * Событие close дилогового окна\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 elDialogOpened = querySelectorAllArray(document, '.dialog[open]').find((el) => {\n\t\treturn isVisible(el);\n\t});\n\n\tif (!elDialogOpened) {\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 elDialogWrapperVisibilityes = querySelectorAllArray<ElTopDialogWrapper>(document, '.dialog').filter((el) => {\n\t\treturn isVisible(el);\n\t});\n\n\telDialogWrapperVisibilityes.forEach((elDialogWrapper) => {\n\t\tconst elDialogBody = elDialogWrapper.querySelector<ElTopDialogBody>('.modal-body');\n\t\tif (!elDialogBody || isVisible(elDialogBody)) return;\n\n\t\topenElDialog(elDialogWrapper);\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 * Получить id внешнего элемента нативного модального окна\n * @param id - id элемента ElTopDialog\n * @see ElTopDialog\n */\nexport const getDialogWrapperId = (id: string) => {\n\treturn `${id}Wrapper`;\n};\n\n/**\n * Получить id внутреннего элемента нативного диалогового окна\n * @param id - id элемента ElTopDialogWrapper\n * @see ElTopDialogWrapper\n */\nexport const getDialogId = (id: string) => {\n\treturn id.replace(/Wrapper$/, '');\n};\n\n/**\n * Получить внешний элемент нативного диалогового окна\n * @param elDialog - элемент ElTopDialog\n * @see ElTopDialog\n */\nexport const getElDialogWrapper = (elDialog: ElTopDialog) => {\n\treturn elDialog.closest('.dialog');\n};\n\n/**\n * Получить внутренний элемент нативного диалогового окна\n * @param elDialogWrapper - элемент ElTopDialogWrapper\n * @see ElTopDialogWrapper\n */\nexport const getElDialog = (elDialogWrapper: ElTopDialogWrapper) => {\n\treturn elDialogWrapper.querySelector('.top-dialog-content');\n};\n\n/**\n * Создать и монтировать в body задний фон окна\n * @description Создаётся только один для всех диалоговых окон\n * @description Используется только в нативных диалоговых окнах в немодальном режиме вместо \"::backdrop\"\n */\nconst createAndMountElDialogOverlay = () => {\n\tlet elDialogOverlay = document.body.querySelector<ElDialogOverlay>('.top-dialog-overlay');\n\n\tif (!elDialogOverlay) {\n\t\telDialogOverlay = document.createElement('div');\n\t\telDialogOverlay.classList.add('top-dialog-overlay');\n\t\tdocument.body.appendChild(elDialogOverlay);\n\t}\n\n\treturn elDialogOverlay;\n};\n\n/**\n * Создать и монтировать в body нативную оболочку окна\n * @description Используется только для нативного диалогового окна\n * @param id - id элемента ElTopDialog\n * @param pageActive - активная страница\n * @see ElTopDialog\n */\nexport const createAndMountElDialogWrapper = (id: string, pageActive: string) => {\n\tconst elDialogOverlay = createAndMountElDialogOverlay();\n\n\tconst elDialogWrapper = document.createElement('dialog');\n\n\telDialogWrapper.setAttribute('id', getDialogWrapperId(id));\n\telDialogWrapper.setAttribute('page-active', pageActive);\n\telDialogWrapper.setAttribute('class', 'dialog');\n\n\telDialogOverlay.insertAdjacentElement('beforebegin', elDialogWrapper);\n\n\treturn elDialogWrapper as ElTopDialogWrapper;\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?: Function,\n) => {\n\tlet elDialog: ElTopDialog | null = null;\n\tlet elDialogWrapper: ElTopDialogWrapper | null = null;\n\n\tif (typeof (viewNameOrElDialog) === 'object') {\n\t\tif (isElJQuery(viewNameOrElDialog)) viewNameOrElDialog = viewNameOrElDialog?.[0]; // TODO: Убрать после переписки jquery на сайте\n\n\t\telDialog = viewNameOrElDialog;\n\n\t\telDialogWrapper = getElDialogWrapper(elDialog) as ElTopDialogWrapper | null;\n\t} else {\n\t\telDialog = <ElTopDialog | null>document.getElementById(viewNameOrElDialog);\n\n\t\tif (elDialog) elDialogWrapper = <ElTopDialogWrapper | null>document.getElementById(getDialogWrapperId(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\tawait toView(viewNameOrElDialog, pageName, args, moveDirection, callback);\n\n\t\treturn;\n\t}\n\n\tif (!elDialog) return;\n\n\t// Создать нативное модальное окно и поместить в него диалоговое окно (только для окон, созданных НЕ с помощью Vue)\n\tif (!elDialogWrapper && elDialog.dataset.vueDiaolg !== 'true') {\n\t\telDialog.classList.add('top-dialog', 'top-dialog-content');\n\n\t\telDialogWrapper = createAndMountElDialogWrapper(elDialog.getAttribute('id'), elDialog.dataset.viewPageActive);\n\n\t\telDialogWrapper.append(elDialog);\n\t}\n\n\tif (!elDialogWrapper) return;\n\n\tawait toViewPage(elDialog, pageName, args, moveDirection);\n\n\tif (!elDialogWrapper.__isInit) {\n\t\telDialogWrapper.__isInit = true;\n\n\t\tonCreate(elDialog);\n\n\t\taddJQueryDialogMethods(elDialog);\n\n\t\telDialogWrapper.onclose = () => onClose(elDialog);\n\t}\n\n\topenElDialog(elDialogWrapper);\n\n\tawait onOpen(elDialog);\n\n\tif (callback) callback(elDialogWrapper);\n};\n\nconst toViewPage = async (elDialog: ElTopDialog | JQuery<ElTopDialog>, pageName?: string, args?: string[], moveDirection?: MoveDirection) => {\n\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0]; // TODO: Убрать после переписки jquery на сайте\n\n\tif (pageName === undefined) pageName = elDialog.dataset.viewPageActive;\n\n\tif (pageName !== elDialog.dataset.viewPageActive) {\n\t\tconst stopped = stopAnimations(elDialog);\n\t\tif (stopped) await sleep(100);\n\t}\n\n\tif (args === undefined) args = [];\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\tconst elDialogWrapper = getElDialogWrapper(elDialog);\n\n\telDialog.dataset.viewPageActive = pageName;\n\t// Элемент HTMLDialogElement должен иметь атрибут 'page-active'\n\telDialogWrapper.setAttribute('page-active', pageName);\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\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(() => {\n\t\t\tif (isElJQuery(elDialog)) elDialog = elDialog?.[0]; // TODO: Убрать после переписки jquery на сайте\n\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 elDialogWrapper = getElDialogWrapper(elDialog);\n\n\t\telDialogWrapper.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(() => {\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(() => {\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 = (id: string) => {\n\tconst elDialog = getElDialogById(id);\n\tif (!elDialog) return;\n\n\tconst elDialogWrapper = getElDialogWrapper(elDialog);\n\n\telDialogWrapper.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\ninitDialogGlobalEvents();\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?: {}, 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?: {},\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","<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"],"names":["TopDialogWorker","options","autoInitDelay","e","el","moveDirection","mouseEvent","TopDialogUtils","toView","viewName","elDialog","elModalLayers","querySelectorAllArray","elCurrentPages","acc","elCurrentPage","pageName","_a","elNextPage","_b","hash","isVisible","historySetState","oldUrl","newUrl","oldHash","newHash","utils","$el","elPage","$dialog","id","getElDialogWrapper","elDialogWrapper","toViewPageN","viewNameAndPageLink","pageLink","genHash","hash2","mathes","mathes2","math","n","math2","getHash","view","regexp","inited","initDialogGlobalEvents","elToPages","elForm","eventTarget","elSubmitButton","event","elDialogWrapperWithTopZIndex","topZIndex","zIndex","Core","css","cssM","cssPC","cssModern","cssModernPC","timerClearAnimation","isElJQuery","openElDialog","getElDialog","genVueOptions","elDialogClosedby","getElDialogById","addJQueryDialogMethods","action","classNames","state","className","args","updatePageVue","dialogId","pageNameNext","dialog","getDialogWorker","nextTick","waitWhile","onCreate","elDialogBody","connectScrollShadow","initPopup","_e","$popup","elPopup","elPageContents","onOpen","w1","scrollBarWidth","recalcPositions","onClose","hashData","setHashs","getDialogWrapperId","createAndMountElDialogOverlay","elDialogOverlay","createAndMountElDialogWrapper","pageActive","toViewDirty","toViewPageName","toViewParts","argsString","viewNameOrElDialog","callback","toViewPage","stopAnimations","sleep","elModalLayer","elNextPages","beforeOpenViewPage","afterOpenViewPage","TopPopupWorker","elActive","delay","toPrevPage","prevPageName","elPrevPage","beforeOpenViewPageTimers","elPages","eventKey","inAnimation","close","setLoading","isLoading","duration","elPagesVisibleds","elPagesVisibled","TopDialogHandle","ref","TopDialogComponent","markRaw","topDialogComponent","topDialogBaseComponent","props","onCloseOnce","_args","name","dialogsWorkers","shallowReactive","addDialogWorker","onUnmounted","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","_unref","_createBlock","_resolveDynamicComponent"],"mappings":"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"}