@topvisor/ui 1.0.42-date.2 → 1.0.42-popupPosition.0

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 (105) hide show
  1. package/.chunks/{core-CTWfwyjq.es.js → core-BGKb9a73.es.js} +4 -4
  2. package/.chunks/{core-CTWfwyjq.es.js.map → core-BGKb9a73.es.js.map} +1 -1
  3. package/.chunks/{core-BDx1sI2y.amd.js → core-D-etXW3Y.amd.js} +2 -2
  4. package/.chunks/{core-BDx1sI2y.amd.js.map → core-D-etXW3Y.amd.js.map} +1 -1
  5. package/.chunks/{datepicker-Esxy0UQA.amd.js → datepicker-BWaVsTd0.amd.js} +2 -2
  6. package/.chunks/{datepicker-Esxy0UQA.amd.js.map → datepicker-BWaVsTd0.amd.js.map} +1 -1
  7. package/.chunks/{datepicker-iaUT_eSc.es.js → datepicker-DCDYQmsc.es.js} +2 -2
  8. package/.chunks/{datepicker-iaUT_eSc.es.js.map → datepicker-DCDYQmsc.es.js.map} +1 -1
  9. package/.chunks/{dialog_selectorRegions-B-4xalwM.es.js → dialog_selectorRegions-BAK6xG6N.es.js} +4 -4
  10. package/.chunks/{dialog_selectorRegions-B-4xalwM.es.js.map → dialog_selectorRegions-BAK6xG6N.es.js.map} +1 -1
  11. package/.chunks/{dialog_selectorRegions-C7tvNWJk.amd.js → dialog_selectorRegions-CMI1gx5d.amd.js} +2 -2
  12. package/.chunks/{dialog_selectorRegions-C7tvNWJk.amd.js.map → dialog_selectorRegions-CMI1gx5d.amd.js.map} +1 -1
  13. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CqYKaqcT.amd.js → dialogs.vue_vue_type_script_setup_true_lang-BSxHPUWf.amd.js} +2 -2
  14. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-BSxHPUWf.amd.js.map +1 -0
  15. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-DBzDS_l7.es.js → dialogs.vue_vue_type_script_setup_true_lang-CjUHErAY.es.js} +3 -3
  16. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CjUHErAY.es.js.map +1 -0
  17. package/.chunks/{forms-BZlFXc5U.es.js → forms-DOGPN_TR.es.js} +50 -51
  18. package/.chunks/{forms-BZlFXc5U.es.js.map → forms-DOGPN_TR.es.js.map} +1 -1
  19. package/.chunks/{forms-DMI0BqCj.amd.js → forms-Gb7ujpmz.amd.js} +3 -3
  20. package/.chunks/{forms-DMI0BqCj.amd.js.map → forms-Gb7ujpmz.amd.js.map} +1 -1
  21. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CACzwZ0A.amd.js → listItem.vue_vue_type_script_setup_true_lang-CF_hIWa6.amd.js} +2 -2
  22. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CACzwZ0A.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-CF_hIWa6.amd.js.map} +1 -1
  23. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-KxTfgv5Z.es.js → listItem.vue_vue_type_script_setup_true_lang-CJQj81Yq.es.js} +2 -2
  24. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-KxTfgv5Z.es.js.map → listItem.vue_vue_type_script_setup_true_lang-CJQj81Yq.es.js.map} +1 -1
  25. package/.chunks/{menu.vue_vue_type_style_index_0_lang-CIdaxq15.amd.js → menu.vue_vue_type_style_index_0_lang-CczcI_-j.amd.js} +2 -2
  26. package/.chunks/{menu.vue_vue_type_style_index_0_lang-CIdaxq15.amd.js.map → menu.vue_vue_type_style_index_0_lang-CczcI_-j.amd.js.map} +1 -1
  27. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BMpVs3Du.es.js → menu.vue_vue_type_style_index_0_lang-Dq5eEX9i.es.js} +2 -2
  28. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BMpVs3Du.es.js.map → menu.vue_vue_type_style_index_0_lang-Dq5eEX9i.es.js.map} +1 -1
  29. package/.chunks/{notice-ULAk8EKs.amd.js → notice-C5sXcBql.amd.js} +2 -2
  30. package/.chunks/{notice-ULAk8EKs.amd.js.map → notice-C5sXcBql.amd.js.map} +1 -1
  31. package/.chunks/{notice-C0QQCxdI.es.js → notice-DE88Oe-t.es.js} +2 -2
  32. package/.chunks/{notice-C0QQCxdI.es.js.map → notice-DE88Oe-t.es.js.map} +1 -1
  33. package/.chunks/{page.vue_vue_type_script_setup_true_lang-BjGqYm-r.es.js → page.vue_vue_type_script_setup_true_lang-DFvul4oF.es.js} +4 -4
  34. package/.chunks/{page.vue_vue_type_script_setup_true_lang-BjGqYm-r.es.js.map → page.vue_vue_type_script_setup_true_lang-DFvul4oF.es.js.map} +1 -1
  35. package/.chunks/{page.vue_vue_type_script_setup_true_lang-f557_PUb.amd.js → page.vue_vue_type_script_setup_true_lang-DJSuza2e.amd.js} +2 -2
  36. package/.chunks/{page.vue_vue_type_script_setup_true_lang-f557_PUb.amd.js.map → page.vue_vue_type_script_setup_true_lang-DJSuza2e.amd.js.map} +1 -1
  37. package/.chunks/popup-B_8bvIsF.amd.js +2 -0
  38. package/.chunks/{popup-BDm3_TJy.amd.js.map → popup-B_8bvIsF.amd.js.map} +1 -1
  39. package/.chunks/{popup-Cl0Rac26.es.js → popup-BjsK_pMZ.es.js} +106 -80
  40. package/.chunks/{popup-Cl0Rac26.es.js.map → popup-BjsK_pMZ.es.js.map} +1 -1
  41. package/.chunks/{utils-C4bTrMJX.amd.js → utils-BVdq18mg.amd.js} +2 -2
  42. package/.chunks/{utils-C4bTrMJX.amd.js.map → utils-BVdq18mg.amd.js.map} +1 -1
  43. package/.chunks/{utils-D9KqMkio.es.js → utils-CRPkMfKD.es.js} +2 -2
  44. package/.chunks/{utils-D9KqMkio.es.js.map → utils-CRPkMfKD.es.js.map} +1 -1
  45. package/.chunks/{utils-BfXpHkpA.es.js → utils-CacKxWvO.es.js} +87 -88
  46. package/.chunks/utils-CacKxWvO.es.js.map +1 -0
  47. package/.chunks/utils-DiQZv1Ae.amd.js +2 -0
  48. package/.chunks/utils-DiQZv1Ae.amd.js.map +1 -0
  49. package/assets/core.css +1 -1
  50. package/assets/forms.css +1 -1
  51. package/assets/formsExt.css +1 -1
  52. package/charts/charts.amd.js +1 -1
  53. package/charts/charts.js +1 -1
  54. package/components/dialog/lib/utils.d.ts +5 -5
  55. package/components/dialog/lib/worker.d.ts +5 -5
  56. package/components/formsExt/formsExt.d.ts +2 -0
  57. package/components/formsExt/policy/policy.vue.d.ts +4 -0
  58. package/components/formsExt/policy/types.d.ts +10 -0
  59. package/core/app.amd.js +1 -1
  60. package/core/app.js +5 -5
  61. package/core/utils/date.d.ts +4 -3
  62. package/core/utils/dom.d.ts +10 -0
  63. package/dialog/dialog.amd.js +1 -1
  64. package/dialog/dialog.js +2 -2
  65. package/forms/forms.amd.js +1 -1
  66. package/forms/forms.js +1 -1
  67. package/formsExt/formsExt.amd.js +1 -1
  68. package/formsExt/formsExt.amd.js.map +1 -1
  69. package/formsExt/formsExt.js +274 -242
  70. package/formsExt/formsExt.js.map +1 -1
  71. package/layout/layout.amd.js +1 -1
  72. package/layout/layout.js +1 -1
  73. package/package.json +1 -1
  74. package/popup/popup.amd.js +1 -1
  75. package/popup/popup.js +2 -2
  76. package/popup/worker.amd.js +1 -1
  77. package/popup/worker.js +2 -2
  78. package/project/project.amd.js +1 -1
  79. package/project/project.js +5 -5
  80. package/tabsView/tabsView.amd.js +1 -1
  81. package/tabsView/tabsView.js +1 -1
  82. package/utils/clipboard.amd.js +1 -1
  83. package/utils/clipboard.js +1 -1
  84. package/utils/date.amd.js +1 -1
  85. package/utils/date.js +1 -1
  86. package/utils/device.amd.js +1 -1
  87. package/utils/device.js +1 -1
  88. package/utils/dom.amd.js +1 -1
  89. package/utils/dom.amd.js.map +1 -1
  90. package/utils/dom.js +27 -22
  91. package/utils/dom.js.map +1 -1
  92. package/utils/lodash.amd.js +1 -1
  93. package/utils/lodash.js +1 -1
  94. package/utils/price.amd.js +1 -1
  95. package/utils/price.js +1 -1
  96. package/utils/searchers.amd.js +1 -1
  97. package/utils/searchers.js +3 -3
  98. package/utils/string.amd.js +1 -1
  99. package/utils/string.js +1 -1
  100. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CqYKaqcT.amd.js.map +0 -1
  101. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-DBzDS_l7.es.js.map +0 -1
  102. package/.chunks/popup-BDm3_TJy.amd.js +0 -2
  103. package/.chunks/utils-BV1bu3yj.amd.js +0 -2
  104. package/.chunks/utils-BV1bu3yj.amd.js.map +0 -1
  105. package/.chunks/utils-BfXpHkpA.es.js.map +0 -1
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","./page.vue_vue_type_script_setup_true_lang-f557_PUb.amd","./utils-C4bTrMJX.amd","../utils/string.amd","../utils/searchers.amd","./forms-DMI0BqCj.amd","../require/css.amd!../assets/dialog_selectorRegions.css"],function(j,v,e,_,h,C,p,f){"use strict";if(typeof e>"u")var e=window.Vue;const V={class:"dialog_selectorRegions_header"},b=["data-top-icon"],N=["src","alt"],B={class:"top-ellipsis"},I={class:"dialog_selectorRegions_regionAreaName"},R={key:1},S=["data-top-icon"],E=e.defineComponent({id:"selectorRegions",__name:"dialog_selectorRegions",props:{regions:{},regionsIndexes:{},"@update:regionsIndexes":{type:Function}},setup(L){const s=L,y=h.useTopDialogSelf(),r=e.ref([]),i=e.ref(null),u=e.reactive({searcher_key:-1,key:-1,name:-1}),k=e.computed({get(){return r.value.every(o=>o.selected)},set(o){r.value=r.value.map(l=>({...l,selected:o}))}}),g=o=>{u[o]=-u[o],r.value.sort((l,t)=>!l[o]||!t[o]?-1:l[o]>=t[o]?u[o]:-u[o])},w=()=>{var l;if(!r.value.some(t=>t.selected))return;const o=r.value.filter(t=>t.selected).map(t=>t.index);(l=s["@update:regionsIndexes"])==null||l.call(s,o),y.close()};e.watch([()=>s.regions,()=>s.regionsIndexes],()=>{if(r.value=[],!s.regions||!s.regionsIndexes)return;let o=[...s.regions];const l=new Map(s.regionsIndexes.map((t,a)=>[t,a]));o.sort((t,a)=>{const n=l.get(t.index)??Number.MAX_VALUE,c=l.get(a.index)??Number.MAX_VALUE;return n-c}),o.forEach(t=>{var x;let a=t.name;t.areaName&&(a+=` (${t.areaName})`);const n=((x=s.regionsIndexes)==null?void 0:x.includes(t.index))??!1,c=p.getSearcherGIcon(t.searcher_key),m=t.lang!==void 0?p.getLangLabel(t.searcher_key??999,t.lang):void 0,d=t.device!==void 0?p.getDeviceGIcon(t.device):void 0,D=t.countryCode!==void 0?C.genFlagLinkByCountryCode(t.countryCode):void 0,U={...t,selected:n,title:a,searcherIcon:c,langLabel:m,deviceIcon:d,flagLink:D};r.value.push(U)})});const A=()=>{var o;if(!((o=f.Core.$)!=null&&o.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}i.value&&$(i.value).sortable({distance:10,stop:()=>{const l=[...i.value.children].map(t=>Number(t.getAttribute("data-region-index")));r.value.sort((t,a)=>l.indexOf(t.index)-l.indexOf(a.index))}})},T=()=>{var o;(o=f.Core.$)!=null&&o.ui.sortable&&i.value&&$(i.value).sortable("destroy")};return(o,l)=>{const t=e.resolveComponent("TopCheckbox"),a=e.resolveComponent("TopButton");return e.openBlock(),e.createBlock(e.unref(_._sfc_main),{id:e.unref(y).id,pageActive:"selectorRegions",class:"dialog_selectorRegions",height:"600px",width:"600px",onOpen:A,onClose:T},{default:e.withCtx(()=>[e.createVNode(e.unref(_._sfc_main$1),{name:"selectorRegions",order:0},{header:e.withCtx(()=>{var n,c,m;return[e.createElementVNode("div",V,[e.createVNode(t,{modelValue:k.value,"onUpdate:modelValue":l[0]||(l[0]=d=>k.value=d)},null,8,["modelValue"]),e.createVNode(a,{class:"dialog_selectorRegions_sortButton",color:"theme","data-top-icon":"",onClick:l[1]||(l[1]=d=>g("searcher_key")),title:(n=o.$i18n.Projects)==null?void 0:n.Sort_by_search_engine},null,8,["title"]),e.createVNode(a,{class:"dialog_selectorRegions_sortButton",color:"theme","data-top-icon":"",onClick:l[2]||(l[2]=d=>g("key")),title:(c=o.$i18n.Projects)==null?void 0:c.Sort_by_yande_region_code},null,8,["title"]),e.createVNode(a,{class:"dialog_selectorRegions_sortButton",color:"theme","data-top-icon":"",onClick:l[3]||(l[3]=d=>g("name")),title:(m=o.$i18n.Projects)==null?void 0:m.Sort_by_lphabetically},null,8,["title"])])]}),body:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"elRegions",ref:i},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,n=>(e.openBlock(),e.createBlock(t,{key:n.index,modelValue:n.selected,"onUpdate:modelValue":c=>n.selected=c,class:"dialog_selectorRegions_region","data-region-index":n.index},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"dialog_selectorRegions_regionSearcherIcon","data-top-icon":n.searcherIcon},null,8,b),n.flagLink?(e.openBlock(),e.createElementBlock("img",{key:0,class:"top-flag",src:"//topvisor.dev"+n.flagLink,alt:n.countryCode},null,8,N)):e.createCommentVNode("",!0),e.createElementVNode("div",B,[e.createTextVNode(e.toDisplayString(n.name)+" ",1),e.createElementVNode("span",I,e.toDisplayString(n.areaName),1)]),n.langLabel?(e.openBlock(),e.createElementBlock("div",R," ["+e.toDisplayString(n.langLabel)+"] ",1)):e.createCommentVNode("",!0),n.deviceIcon?(e.openBlock(),e.createElementBlock("div",{key:2,"data-top-icon":n.deviceIcon},null,8,S)):e.createCommentVNode("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue","data-region-index"]))),128))],512)]),footer:e.withCtx(()=>[e.createVNode(a,{onClick:w},{default:e.withCtx(()=>{var n;return[e.createTextVNode(e.toDisplayString((n=o.$i18n.Common)==null?void 0:n.Apply),1)]}),_:1})]),_:1})]),_:1},8,["id"])}}});v.default=E,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
2
- //# sourceMappingURL=dialog_selectorRegions-C7tvNWJk.amd.js.map
1
+ define(["require","exports","vue","./page.vue_vue_type_script_setup_true_lang-DJSuza2e.amd","./utils-BVdq18mg.amd","../utils/string.amd","../utils/searchers.amd","./forms-Gb7ujpmz.amd","../require/css.amd!../assets/dialog_selectorRegions.css"],function(j,v,e,_,h,C,p,f){"use strict";if(typeof e>"u")var e=window.Vue;const V={class:"dialog_selectorRegions_header"},b=["data-top-icon"],N=["src","alt"],B={class:"top-ellipsis"},I={class:"dialog_selectorRegions_regionAreaName"},R={key:1},S=["data-top-icon"],E=e.defineComponent({id:"selectorRegions",__name:"dialog_selectorRegions",props:{regions:{},regionsIndexes:{},"@update:regionsIndexes":{type:Function}},setup(L){const s=L,y=h.useTopDialogSelf(),r=e.ref([]),i=e.ref(null),u=e.reactive({searcher_key:-1,key:-1,name:-1}),k=e.computed({get(){return r.value.every(o=>o.selected)},set(o){r.value=r.value.map(l=>({...l,selected:o}))}}),g=o=>{u[o]=-u[o],r.value.sort((l,t)=>!l[o]||!t[o]?-1:l[o]>=t[o]?u[o]:-u[o])},w=()=>{var l;if(!r.value.some(t=>t.selected))return;const o=r.value.filter(t=>t.selected).map(t=>t.index);(l=s["@update:regionsIndexes"])==null||l.call(s,o),y.close()};e.watch([()=>s.regions,()=>s.regionsIndexes],()=>{if(r.value=[],!s.regions||!s.regionsIndexes)return;let o=[...s.regions];const l=new Map(s.regionsIndexes.map((t,a)=>[t,a]));o.sort((t,a)=>{const n=l.get(t.index)??Number.MAX_VALUE,c=l.get(a.index)??Number.MAX_VALUE;return n-c}),o.forEach(t=>{var x;let a=t.name;t.areaName&&(a+=` (${t.areaName})`);const n=((x=s.regionsIndexes)==null?void 0:x.includes(t.index))??!1,c=p.getSearcherGIcon(t.searcher_key),m=t.lang!==void 0?p.getLangLabel(t.searcher_key??999,t.lang):void 0,d=t.device!==void 0?p.getDeviceGIcon(t.device):void 0,D=t.countryCode!==void 0?C.genFlagLinkByCountryCode(t.countryCode):void 0,U={...t,selected:n,title:a,searcherIcon:c,langLabel:m,deviceIcon:d,flagLink:D};r.value.push(U)})});const A=()=>{var o;if(!((o=f.Core.$)!=null&&o.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}i.value&&$(i.value).sortable({distance:10,stop:()=>{const l=[...i.value.children].map(t=>Number(t.getAttribute("data-region-index")));r.value.sort((t,a)=>l.indexOf(t.index)-l.indexOf(a.index))}})},T=()=>{var o;(o=f.Core.$)!=null&&o.ui.sortable&&i.value&&$(i.value).sortable("destroy")};return(o,l)=>{const t=e.resolveComponent("TopCheckbox"),a=e.resolveComponent("TopButton");return e.openBlock(),e.createBlock(e.unref(_._sfc_main),{id:e.unref(y).id,pageActive:"selectorRegions",class:"dialog_selectorRegions",height:"600px",width:"600px",onOpen:A,onClose:T},{default:e.withCtx(()=>[e.createVNode(e.unref(_._sfc_main$1),{name:"selectorRegions",order:0},{header:e.withCtx(()=>{var n,c,m;return[e.createElementVNode("div",V,[e.createVNode(t,{modelValue:k.value,"onUpdate:modelValue":l[0]||(l[0]=d=>k.value=d)},null,8,["modelValue"]),e.createVNode(a,{class:"dialog_selectorRegions_sortButton",color:"theme","data-top-icon":"",onClick:l[1]||(l[1]=d=>g("searcher_key")),title:(n=o.$i18n.Projects)==null?void 0:n.Sort_by_search_engine},null,8,["title"]),e.createVNode(a,{class:"dialog_selectorRegions_sortButton",color:"theme","data-top-icon":"",onClick:l[2]||(l[2]=d=>g("key")),title:(c=o.$i18n.Projects)==null?void 0:c.Sort_by_yande_region_code},null,8,["title"]),e.createVNode(a,{class:"dialog_selectorRegions_sortButton",color:"theme","data-top-icon":"",onClick:l[3]||(l[3]=d=>g("name")),title:(m=o.$i18n.Projects)==null?void 0:m.Sort_by_lphabetically},null,8,["title"])])]}),body:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"elRegions",ref:i},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,n=>(e.openBlock(),e.createBlock(t,{key:n.index,modelValue:n.selected,"onUpdate:modelValue":c=>n.selected=c,class:"dialog_selectorRegions_region","data-region-index":n.index},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"dialog_selectorRegions_regionSearcherIcon","data-top-icon":n.searcherIcon},null,8,b),n.flagLink?(e.openBlock(),e.createElementBlock("img",{key:0,class:"top-flag",src:"//topvisor.dev"+n.flagLink,alt:n.countryCode},null,8,N)):e.createCommentVNode("",!0),e.createElementVNode("div",B,[e.createTextVNode(e.toDisplayString(n.name)+" ",1),e.createElementVNode("span",I,e.toDisplayString(n.areaName),1)]),n.langLabel?(e.openBlock(),e.createElementBlock("div",R," ["+e.toDisplayString(n.langLabel)+"] ",1)):e.createCommentVNode("",!0),n.deviceIcon?(e.openBlock(),e.createElementBlock("div",{key:2,"data-top-icon":n.deviceIcon},null,8,S)):e.createCommentVNode("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue","data-region-index"]))),128))],512)]),footer:e.withCtx(()=>[e.createVNode(a,{onClick:w},{default:e.withCtx(()=>{var n;return[e.createTextVNode(e.toDisplayString((n=o.$i18n.Common)==null?void 0:n.Apply),1)]}),_:1})]),_:1})]),_:1},8,["id"])}}});v.default=E,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
2
+ //# sourceMappingURL=dialog_selectorRegions-CMI1gx5d.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog_selectorRegions-C7tvNWJk.amd.js","sources":["../../src/components/project/selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'selectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tlet regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"selectorRegions\"\n\t\tclass=\"dialog_selectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"selectorRegions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_selectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yande_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_lphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_selectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_selectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"names":["dialog","utils","regionsRich","vue","elRegions","sortedVectorByField","isAllSelected","region","sort","sortedField","regionA","regionB","_a","props","regionsIndexes","orderA","orderByRegionIndex","orderB","regions","title","selected","deviceIcon","utils_searchers","flagLink","utils_string","searcherIcon","langLabel","regionRich","a","b","sortedIndexes"],"mappings":"oqBAYAA,EAAAC,EAAA,iBAAA,EAKAC,EAAAC,EAAA,IAAA,CAAA,CAAA,EAKAC,EAAAD,EAAA,IAAA,IAAA,EAKAE,EAAAF,EAAA,SAAA,wBAEM,KAAA,EACC,CAAA,EAMPG,EAAAH,EAAA,SAAA,CAA+B,KAAA,CAE7B,OAAAD,EAAA,MAAA,MAAAK,GAAAA,EAAA,QAAA,qDAIoF,CACrF,CAAA,EAODC,EAAAC,GAAA,gCAIE,CAAAC,EAAAD,CAAA,GAAA,CAAAE,EAAAF,CAAA,EAAA,wBAEyH,gBAU1H,GAAA,CAAAP,EAAA,MAAA,KAAAK,GAAAA,EAAA,QAAA,EAAA,8DAMAK,EAAAC,EAAA,4BAAA,MAAAD,EAAA,KAAAC,EAAAC,cAMDX,EAAA,MAAA,mCAEa,EAAA,IAAA,CAKZ,GAHAD,EAAA,MAAA,CAAA,EAEA,CAAAW,EAAA,SACA,CAAAA,EAAA,eAAA,+FAQC,MAAAE,EAAAC,EAAA,IAAAN,EAAA,KAAA,GAAA,OAAA,UACAO,EAAAD,EAAA,IAAAL,EAAA,KAAA,GAAA,OAAA,oBAEgB,CAAA,EAGjBO,EAAA,QAAAX,GAAA,OACC,IAAAY,EAAAZ,EAAA,KACAA,EAAA,WAAAY,GAAA,KAAAZ,EAAA,QAAA,KAEA,MAAAa,IAAAR,EAAAC,EAAA,iBAAA,YAAAD,EAAA,SAAAL,EAAA,SAAA,4GAGAc,EAAAd,EAAA,SAAA,OAAAe,EAAA,eAAAf,EAAA,MAAA,EAAA,OACAgB,EAAAhB,EAAA,cAAA,OAAAiB,EAAA,yBAAAjB,EAAA,WAAA,EAAA,UAEmB,GAAAA,EACf,SAAAa,EACH,MAAAD,EACA,aAAAM,EACA,UAAAC,EACA,WAAAL,cAKDnB,EAAA,MAAA,KAAAyB,CAAA,CAAiC,CAAA,CACjC,CAAA,8DAQA,QAAA,KAAA,wEAAA,QAEA,CAGDvB,EAAA,oIAQEF,EAAA,MAAA,KAAA,CAAA0B,EAAAC,IAAAC,EAAA,QAAAF,EAAA,KAAA,EAAAE,EAAA,QAAAD,EAAA,KAAA,CAAA,CAAgG,CACjG,CAAA,mDASDzB,EAAA"}
1
+ {"version":3,"file":"dialog_selectorRegions-CMI1gx5d.amd.js","sources":["../../src/components/project/selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'selectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tlet regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"selectorRegions\"\n\t\tclass=\"dialog_selectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"selectorRegions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_selectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yande_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_lphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_selectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_selectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_selectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"names":["dialog","utils","regionsRich","vue","elRegions","sortedVectorByField","isAllSelected","region","sort","sortedField","regionA","regionB","_a","props","regionsIndexes","orderA","orderByRegionIndex","orderB","regions","title","selected","deviceIcon","utils_searchers","flagLink","utils_string","searcherIcon","langLabel","regionRich","a","b","sortedIndexes"],"mappings":"oqBAYAA,EAAAC,EAAA,iBAAA,EAKAC,EAAAC,EAAA,IAAA,CAAA,CAAA,EAKAC,EAAAD,EAAA,IAAA,IAAA,EAKAE,EAAAF,EAAA,SAAA,wBAEM,KAAA,EACC,CAAA,EAMPG,EAAAH,EAAA,SAAA,CAA+B,KAAA,CAE7B,OAAAD,EAAA,MAAA,MAAAK,GAAAA,EAAA,QAAA,qDAIoF,CACrF,CAAA,EAODC,EAAAC,GAAA,gCAIE,CAAAC,EAAAD,CAAA,GAAA,CAAAE,EAAAF,CAAA,EAAA,wBAEyH,gBAU1H,GAAA,CAAAP,EAAA,MAAA,KAAAK,GAAAA,EAAA,QAAA,EAAA,8DAMAK,EAAAC,EAAA,4BAAA,MAAAD,EAAA,KAAAC,EAAAC,cAMDX,EAAA,MAAA,mCAEa,EAAA,IAAA,CAKZ,GAHAD,EAAA,MAAA,CAAA,EAEA,CAAAW,EAAA,SACA,CAAAA,EAAA,eAAA,+FAQC,MAAAE,EAAAC,EAAA,IAAAN,EAAA,KAAA,GAAA,OAAA,UACAO,EAAAD,EAAA,IAAAL,EAAA,KAAA,GAAA,OAAA,oBAEgB,CAAA,EAGjBO,EAAA,QAAAX,GAAA,OACC,IAAAY,EAAAZ,EAAA,KACAA,EAAA,WAAAY,GAAA,KAAAZ,EAAA,QAAA,KAEA,MAAAa,IAAAR,EAAAC,EAAA,iBAAA,YAAAD,EAAA,SAAAL,EAAA,SAAA,4GAGAc,EAAAd,EAAA,SAAA,OAAAe,EAAA,eAAAf,EAAA,MAAA,EAAA,OACAgB,EAAAhB,EAAA,cAAA,OAAAiB,EAAA,yBAAAjB,EAAA,WAAA,EAAA,UAEmB,GAAAA,EACf,SAAAa,EACH,MAAAD,EACA,aAAAM,EACA,UAAAC,EACA,WAAAL,cAKDnB,EAAA,MAAA,KAAAyB,CAAA,CAAiC,CAAA,CACjC,CAAA,8DAQA,QAAA,KAAA,wEAAA,QAEA,CAGDvB,EAAA,oIAQEF,EAAA,MAAA,KAAA,CAAA0B,EAAAC,IAAAC,EAAA,QAAAF,EAAA,KAAA,EAAAE,EAAA,QAAAD,EAAA,KAAA,CAAA,CAAgG,CACjG,CAAA,mDASDzB,EAAA"}
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../utils/system.amd","../utils/route.amd","../utils/dom.amd"],function(H,w,s,S,d,y){"use strict";if(typeof s>"u")var s=window.Vue;class c{static state={load:void 0,decoratorOnCreate:void 0,viewPageN:0};static inited=!1;static init(e){if(this.inited)return;this.inited=!0,this.state.load=e==null?void 0:e.load,this.state.decoratorOnCreate=e==null?void 0:e.decoratorOnCreate;const a=(e==null?void 0:e.autoInitDelay)??5e3;window.addEventListener("hashchange",t=>{this.opendDialogsFromChangeUrl(t.oldURL,t.newURL)}),this.opendDialogsFromChangeUrl("",location.href),document.addEventListener("mousedown",async t=>{const i=t.target.closest("a[data-to-view]");if(!i)return;let r="next";i.dataset.action==="top-dialog-close"&&(r="prev"),i.href=c.genViewPageHash(i.dataset.toView,r)}),document.addEventListener("click",async t=>{var E,N;const i=t.target.closest("[data-to-view]");if(!i)return;if(i instanceof HTMLAnchorElement&&i.href==="."){t.preventDefault();const m=new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window});i.dispatchEvent(m),setTimeout(()=>i.click());return}const r=await this.getDialogsUtils(),o=i.dataset.toView,f=o.split("-")[0],g=r.getElDialogById(f);let v="next";if(g){const m=y.querySelectorAllArray(g,".modal-layer"),A=m.reduce((p,U)=>{const u=U.querySelector(":scope > .active");return u&&p.push(u),p},[]);if(A.length){const p=o.split("-")[1].split(":")[0];(((E=m.reduce((u,D)=>{const V=D==null?void 0:D.querySelector(`:scope > [data-view-page="${p}"]`);return V&&u.push(V),u},[])[0])==null?void 0:E.dataset.order)??0)<(((N=A[0])==null?void 0:N.dataset.order)??0)&&(v="prev")}}i.dataset.action==="top-dialog-close"&&(v="prev");const P=c.genViewPageHash(o,v);if(i instanceof HTMLAnchorElement){if(!(g!=null&&g.checkVisibility()))return;if(location.hash.indexOf(o.replace("-","="))!==-1){await r.toViewDirty(o);return}}!!(g!=null&&g.dataset.toViewReplace)?(t.preventDefault(),d.historySetState(!0,P),await r.toViewDirty(o),v=="next"?c.state.viewPageN++:c.state.viewPageN--):i.tagName!=="A"&&(this.compareStates(P,location.hash)?d.historySetState(!1,P):await r.toViewDirty(o))}),setTimeout(()=>this.getDialogsUtils(),a)}static opendDialogsFromChangeUrl(e,a){const t=e.replace(/.*?#/,"#"),n=a.replace(/.*?#/,"#");this.compareStates(t,n)&&this.opendDialogsFromUrl()}static async getDialogsUtils(){const{TopDialogUtils:e}=await new Promise((a,t)=>H(["./utils-BV1bu3yj.amd"],a,t));return e}static getDialog(e){return e.closest(".ui-dialog-content")}static get$dialog(e){return e.closest(".ui-dialog-content")}static getPage(e){return e.closest("[data-view-page]")}static get$page(e){return e.closest("[data-view-page]")}static get$pairPage(e){const a=c.get$dialog(e),n=c.get$page(e).data("view-page");return $('[data-view-page="'+n+'"]',a)}static getPairPage(e){const a=c.getDialog(e);if(!a)return;const t=c.getPage(e),n=t==null?void 0:t.dataset.viewPage;return y.querySelectorAllArray(a,`[data-view-page="${n}"]`)}static close(e){const a=$("#"+e);if(a.dialog("instance")){a.dialog("close");return}const t=document.getElementById(e);t instanceof HTMLDialogElement&&t.close()}static destroy(e){const a=$("#"+e);if(a.dialog("instance")){a.dialog("close"),a.dialog("destroy");return}const t=document.getElementById(e);t instanceof HTMLDialogElement&&t.close()}static genViewPageHash(e,a="next"){let t=this.state.viewPageN;a=="prev"?t--:t++;const n=e.split("-"),i=n.shift(),r=n.join("-");let o=d.genHash("vpn",t);return o=d.genHash("view-"+i,r,o),o}static compareStates(e,a){const t=e.match(/[#&]view-[^&]+/g)||[],n=a.match(/[#&]view-[^&]+/g)||[];return!!(t.length!==n.length||t.filter((r,o)=>{const f=n[o]||"";return r!==f}).length)}static opendDialogsFromUrl=async()=>{const e=Number(d.getHash("vpn"))||0;let a;const t=new RegExp("view-((\\w+)=([\\w-]+)(?::([\\w.:-]+))?)","g");for(;a=t.exec(location.hash);){let i="next";return e<this.state.viewPageN&&(i="prev"),(await this.getDialogsUtils()).toViewDirty(a[1],i)}return y.querySelectorAllArray(document,"dialog[page-active]").filter(i=>i.checkVisibility()).forEach(i=>{const r=i.getAttribute("id");if(!r)throw"Диалоговое окно не содержит id";d.getHash("view-"+r)||$(i).dialog("close")}),this.state.viewPageN=e,!0}}class L{id;idAttr;Component;isMounted=s.ref(!1);isReady=s.ref(!1);isOpened=s.ref(!1);pageActive=s.ref("");isLoadingPage=s.ref(!1);pageActiveNext=s.ref("");props;emit;onCloseOnce;constructor(e){this.id=e.id,this.idAttr="dialog_"+e.id,this.Component=s.markRaw(e)}onMounted(e,a){this.isMounted.value=!0,this.props=e.props,this.emit=a.emit}async open(e="main",a,t=[],n,i){a&&await this.setProps(a),n&&(this.onCloseOnce=n),await(await c.getDialogsUtils()).toView(this.idAttr,e,t,i)}async openAsLink(e="main",a,t=[],n,i){a&&await this.setProps(a),n&&(this.onCloseOnce=n);const r=this.idAttr+"-"+e,o=c.genViewPageHash(r,i);d.historySetState(!1,o)}async close(){c.close(this.idAttr)}async destroy(){c.destroy(this.idAttr)}async setProps(e={}){this.isMounted||await S.waitWhile(()=>!this.props);for(const a in this.props)this.props[a]=e[a]}needShowPage(e){return this.isOpened.value?this.pageActive.value===e||this.pageActiveNext.value===e:!1}}const k={class:"top-dialogs",style:{display:"none"}},h=s.shallowReactive(new Map),x=l=>(l=l.replace(/^dialog_/,""),h.get(l)),M=l=>{if(!(l!=null&&l.id))throw console.log({TopDialogComponent:l}),new Error("Expected TopDialogComponent");return h.has(l.id)||h.set(l.id,new L(l)),h.get(l.id)},B=s.defineComponent({name:"DialogWrapper",__name:"dialogs",setup(l){return s.onUnmounted(()=>{h.forEach(e=>e.destroy()),h.clear()}),(e,a)=>(s.openBlock(),s.createElementBlock("div",k,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(s.unref(h),([t,n])=>(s.openBlock(),s.createBlock(s.resolveDynamicComponent(n.Component),{key:t}))),128))]))}});w.TopDialogWorker=c,w._sfc_main=B,w.addDialogWorker=M,w.getDialogWorker=x});
2
- //# sourceMappingURL=dialogs.vue_vue_type_script_setup_true_lang-CqYKaqcT.amd.js.map
1
+ define(["require","exports","vue","../utils/system.amd","../utils/route.amd","../utils/dom.amd"],function(H,w,s,S,d,y){"use strict";if(typeof s>"u")var s=window.Vue;class c{static state={load:void 0,decoratorOnCreate:void 0,viewPageN:0};static inited=!1;static init(e){if(this.inited)return;this.inited=!0,this.state.load=e==null?void 0:e.load,this.state.decoratorOnCreate=e==null?void 0:e.decoratorOnCreate;const a=(e==null?void 0:e.autoInitDelay)??5e3;window.addEventListener("hashchange",t=>{this.opendDialogsFromChangeUrl(t.oldURL,t.newURL)}),this.opendDialogsFromChangeUrl("",location.href),document.addEventListener("mousedown",async t=>{const i=t.target.closest("a[data-to-view]");if(!i)return;let r="next";i.dataset.action==="top-dialog-close"&&(r="prev"),i.href=c.genViewPageHash(i.dataset.toView,r)}),document.addEventListener("click",async t=>{var E,N;const i=t.target.closest("[data-to-view]");if(!i)return;if(i instanceof HTMLAnchorElement&&i.href==="."){t.preventDefault();const m=new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window});i.dispatchEvent(m),setTimeout(()=>i.click());return}const r=await this.getDialogsUtils(),o=i.dataset.toView,f=o.split("-")[0],g=r.getElDialogById(f);let v="next";if(g){const m=y.querySelectorAllArray(g,".modal-layer"),A=m.reduce((p,U)=>{const u=U.querySelector(":scope > .active");return u&&p.push(u),p},[]);if(A.length){const p=o.split("-")[1].split(":")[0];(((E=m.reduce((u,D)=>{const V=D==null?void 0:D.querySelector(`:scope > [data-view-page="${p}"]`);return V&&u.push(V),u},[])[0])==null?void 0:E.dataset.order)??0)<(((N=A[0])==null?void 0:N.dataset.order)??0)&&(v="prev")}}i.dataset.action==="top-dialog-close"&&(v="prev");const P=c.genViewPageHash(o,v);if(i instanceof HTMLAnchorElement){if(!(g!=null&&g.checkVisibility()))return;if(location.hash.indexOf(o.replace("-","="))!==-1){await r.toViewDirty(o);return}}!!(g!=null&&g.dataset.toViewReplace)?(t.preventDefault(),d.historySetState(!0,P),await r.toViewDirty(o),v=="next"?c.state.viewPageN++:c.state.viewPageN--):i.tagName!=="A"&&(this.compareStates(P,location.hash)?d.historySetState(!1,P):await r.toViewDirty(o))}),setTimeout(()=>this.getDialogsUtils(),a)}static opendDialogsFromChangeUrl(e,a){const t=e.replace(/.*?#/,"#"),n=a.replace(/.*?#/,"#");this.compareStates(t,n)&&this.opendDialogsFromUrl()}static async getDialogsUtils(){const{TopDialogUtils:e}=await new Promise((a,t)=>H(["./utils-DiQZv1Ae.amd"],a,t));return e}static getDialog(e){return e.closest(".ui-dialog-content")}static get$dialog(e){return e.closest(".ui-dialog-content")}static getPage(e){return e.closest("[data-view-page]")}static get$page(e){return e.closest("[data-view-page]")}static get$pairPage(e){const a=c.get$dialog(e),n=c.get$page(e).data("view-page");return $('[data-view-page="'+n+'"]',a)}static getPairPage(e){const a=c.getDialog(e);if(!a)return;const t=c.getPage(e),n=t==null?void 0:t.dataset.viewPage;return y.querySelectorAllArray(a,`[data-view-page="${n}"]`)}static close(e){const a=$("#"+e);if(a.dialog("instance")){a.dialog("close");return}const t=document.getElementById(e);t instanceof HTMLDialogElement&&t.close()}static destroy(e){const a=$("#"+e);if(a.dialog("instance")){a.dialog("close"),a.dialog("destroy");return}const t=document.getElementById(e);t instanceof HTMLDialogElement&&t.close()}static genViewPageHash(e,a="next"){let t=this.state.viewPageN;a=="prev"?t--:t++;const n=e.split("-"),i=n.shift(),r=n.join("-");let o=d.genHash("vpn",t);return o=d.genHash("view-"+i,r,o),o}static compareStates(e,a){const t=e.match(/[#&]view-[^&]+/g)||[],n=a.match(/[#&]view-[^&]+/g)||[];return!!(t.length!==n.length||t.filter((r,o)=>{const f=n[o]||"";return r!==f}).length)}static opendDialogsFromUrl=async()=>{const e=Number(d.getHash("vpn"))||0;let a;const t=new RegExp("view-((\\w+)=([\\w-]+)(?::([\\w.:-]+))?)","g");for(;a=t.exec(location.hash);){let i="next";return e<this.state.viewPageN&&(i="prev"),(await this.getDialogsUtils()).toViewDirty(a[1],i)}return y.querySelectorAllArray(document,".ui-dialog-content[data-view-page-active]").filter(i=>i.checkVisibility()).forEach(i=>{const r=i.getAttribute("id");if(!r)throw"Диалоговое окно не содержит id";d.getHash("view-"+r)||$(i).dialog("close")}),this.state.viewPageN=e,!0}}class L{id;idAttr;Component;isMounted=s.ref(!1);isReady=s.ref(!1);isOpened=s.ref(!1);pageActive=s.ref("");isLoadingPage=s.ref(!1);pageActiveNext=s.ref("");props;emit;onCloseOnce;constructor(e){this.id=e.id,this.idAttr="dialog_"+e.id,this.Component=s.markRaw(e)}onMounted(e,a){this.isMounted.value=!0,this.props=e.props,this.emit=a.emit}async open(e="main",a,t=[],n,i){a&&await this.setProps(a),n&&(this.onCloseOnce=n),await(await c.getDialogsUtils()).toView(this.idAttr,e,t,i)}async openAsLink(e="main",a,t=[],n,i){a&&await this.setProps(a),n&&(this.onCloseOnce=n);const r=this.idAttr+"-"+e,o=c.genViewPageHash(r,i);d.historySetState(!1,o)}async close(){c.close(this.idAttr)}async destroy(){c.destroy(this.idAttr)}async setProps(e={}){this.isMounted||await S.waitWhile(()=>!this.props);for(const a in this.props)this.props[a]=e[a]}needShowPage(e){return this.isOpened.value?this.pageActive.value===e||this.pageActiveNext.value===e:!1}}const k={class:"top-dialogs",style:{display:"none"}},h=s.shallowReactive(new Map),x=l=>(l=l.replace(/^dialog_/,""),h.get(l)),M=l=>{if(!(l!=null&&l.id))throw console.log({TopDialogComponent:l}),new Error("Expected TopDialogComponent");return h.has(l.id)||h.set(l.id,new L(l)),h.get(l.id)},B=s.defineComponent({name:"DialogWrapper",__name:"dialogs",setup(l){return s.onUnmounted(()=>{h.forEach(e=>e.destroy()),h.clear()}),(e,a)=>(s.openBlock(),s.createElementBlock("div",k,[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(s.unref(h),([t,n])=>(s.openBlock(),s.createBlock(s.resolveDynamicComponent(n.Component),{key:t}))),128))]))}});w.TopDialogWorker=c,w._sfc_main=B,w.addDialogWorker=M,w.getDialogWorker=x});
2
+ //# sourceMappingURL=dialogs.vue_vue_type_script_setup_true_lang-BSxHPUWf.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogs.vue_vue_type_script_setup_true_lang-BSxHPUWf.amd.js","sources":["../../src/components/dialog/lib/worker.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue"],"sourcesContent":["import { genHash, getHash, historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogOpener, ElTopDialogPage, MoveDirection, TopDialogOptions } from './types';\nimport { querySelectorAllArray } from '@/core/utils/dom';\nimport type { $el } from '@/components/types';\n\nexport abstract class TopDialogWorker {\n\tstatic state = {\n\t\tload: undefined as TopDialogOptions['load'] | undefined,\n\t\tdecoratorOnCreate: undefined as TopDialogOptions['decoratorOnCreate'] | undefined,\n\n\t\t/**\n\t\t * Порядковый номер перехода в диалоговых окнах\n\t\t *\n\t\t * Для расчета анимации Вперед / Назад\n\t\t */\n\t\tviewPageN: 0,\n\t};\n\n\tprivate static inited = false;\n\n\t/**\n\t * Инициировать события слежения за парамтерами url\n\t *\n\t * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу\n\t */\n\tstatic init(options?: TopDialogOptions) {\n\t\tif (this.inited) return;\n\t\tthis.inited = true;\n\n\t\tthis.state.load = options?.load;\n\t\tthis.state.decoratorOnCreate = options?.decoratorOnCreate;\n\n\t\tconst autoInitDelay = options?.autoInitDelay ?? 5000;\n\n\t\twindow.addEventListener('hashchange', (e) => {\n\t\t\tthis.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n\t\t});\n\n\t\tthis.opendDialogsFromChangeUrl('', location.href);\n\n\t\t/**\n\t\t * Сгенерировать ссылку для перехода к странице диалогового окна\n\t\t */\n\t\tdocument.addEventListener('mousedown', async (e) => {\n\t\t\tconst elEventTarget = e.target as HTMLElement;\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\tconst elEventTarget = e.target as HTMLElement;\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?.checkVisibility()) return;\n\n\t\t\t\t// в адресе уже указана эта страница, необходимо явно запросить ее открытие\n\t\t\t\tif (location.hash.indexOf(toView.replace('-', '=')) !== -1) {\n\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst replaceHistory = !!elDialog?.dataset.toViewReplace;\n\n\t\t\tif (replaceHistory) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thistorySetState(true, hash);\n\n\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\tif (moveDirection == 'next') {\n\t\t\t\t\tTopDialogWorker.state.viewPageN++;\n\t\t\t\t} else {\n\t\t\t\t\tTopDialogWorker.state.viewPageN--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.tagName !== 'A') {\n\t\t\t\t\tif (this.compareStates(hash, location.hash)) {\n\t\t\t\t\t\thistorySetState(false, hash);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => this.getDialogsUtils(), autoInitDelay);\n\t}\n\n\tprivate static opendDialogsFromChangeUrl(oldUrl: string, newUrl: string) {\n\t\tconst oldHash = oldUrl.replace(/.*?#/, '#');\n\t\tconst newHash = newUrl.replace(/.*?#/, '#');\n\n\t\tconst dialogsStateChanged = this.compareStates(oldHash, newHash);\n\t\tif (dialogsStateChanged) void this.opendDialogsFromUrl();\n\t}\n\n\tstatic async getDialogsUtils() {\n\t\tconst { TopDialogUtils } = await import('./utils');\n\n\t\treturn TopDialogUtils;\n\t}\n\n\tstatic getDialog(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialog>('.ui-dialog-content');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getDialog()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$dialog($el: $el) {\n\t\treturn $el.closest('.ui-dialog-content');\n\t};\n\n\tstatic getPage(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialogPage>('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$page($el: $el) {\n\t\treturn $el.closest('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPairPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$pairPage($el: $el) {\n\t\tconst $dialog = TopDialogWorker.get$dialog($el);\n\n\t\tconst $page = TopDialogWorker.get$page($el);\n\t\tconst pageName = $page.data('view-page');\n\n\t\treturn $('[data-view-page=\"' + pageName + '\"]', $dialog);\n\t};\n\n\tstatic getPairPage(el: HTMLElement) {\n\t\tconst elDialog = TopDialogWorker.getDialog(el);\n\t\tif (!elDialog) return;\n\n\t\tconst elPage = TopDialogWorker.getPage(el);\n\t\tconst pageName = elPage?.dataset.viewPage;\n\n\t\treturn querySelectorAllArray(elDialog, `[data-view-page=\"${pageName}\"]`);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t */\n\tstatic close(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tstatic destroy(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\t\t\t$dialog.dialog('destroy');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Сгенерировать ссылку на страницу в диалоговом окне\n\t * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}\n\t * @param moveDirection\n\t */\n\tstatic genViewPageHash(toView: string, moveDirection: MoveDirection = 'next') {\n\t\tlet toViewPageN = this.state.viewPageN;\n\t\tif (moveDirection == 'prev') {\n\t\t\ttoViewPageN--;\n\t\t} else {\n\t\t\ttoViewPageN++;\n\t\t}\n\n\t\tconst viewNameAndPageLink = toView.split('-');\n\t\tconst viewName = viewNameAndPageLink.shift();\n\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\tlet hash = genHash('vpn', toViewPageN);\n\t\thash = genHash('view-' + viewName, pageLink, hash);\n\n\t\treturn hash;\n\t};\n\n\t/**\n\t * Сравнить версию открытых диалоговых окон\n\t * @returns вернет true, если состояния открытых окон изменилось\n\t */\n\tstatic compareStates(hash: string, hash2: string) {\n\t\tconst mathes = hash.match(/[#&]view-[^&]+/g) || [];\n\t\tconst mathes2 = hash2.match(/[#&]view-[^&]+/g) || [];\n\n\t\tif (mathes.length !== mathes2.length) return true;\n\n\t\tconst mathesChanged = mathes.filter((math, n) => {\n\t\t\tconst math2 = mathes2[n] || '';\n\n\t\t\treturn math !== math2;\n\t\t});\n\n\t\tif (mathesChanged.length) return true;\n\n\t\treturn false;\n\t};\n\n\tstatic opendDialogsFromUrl = async () => {\n\t\tconst toViewPageN = Number(getHash('vpn')) || 0;\n\n\t\t// Открыть диалоговое окно\n\t\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(document, '.ui-dialog-content[data-view-page-active]') as HTMLDialogElement[];\n\t\telDialogs.filter((elDialog) => {\n\t\t\treturn elDialog.checkVisibility();\n\t\t}).forEach((elDialog) => {\n\t\t\tconst viewName = elDialog.getAttribute('id');\n\t\t\tif (!viewName) throw 'Диалоговое окно не содержит id';\n\t\t\tconst pageName = getHash('view-' + viewName);\n\t\t\tif (!pageName) {\n\t\t\t\tconst $dialog = $(elDialog);\n\n\t\t\t\t$dialog.dialog('close');\n\t\t\t}\n\t\t});\n\n\t\tthis.state.viewPageN = toViewPageN;\n\n\t\treturn true;\n\t};\n}\n","import { type ComponentInstance, type ComponentInternalInstance, markRaw, ref } from 'vue';\nimport { waitWhile } from '@/core/utils/system';\nimport TopDialog from '../dialog.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { MoveDirection } from '@/components/dialog/lib/types';\nimport type { TopDialogComponent } from './types';\nimport { historySetState } from '@/core/utils/route';\n\n/**\n * Объект для работы с диалоговым окном\n *\n * Каждое окно уникально и может быть открыто одновременно только один раз\n *\n * Можно определить много окон, после чего с ними можно вести работу в любой части приложения\n */\nexport class TopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Индентификатор, определяется на уровне компонента TopDialogComponent\n\t *\n\t * Может использоваться в навигации для открытия нужных окон с нужными настройками\n\t */\n\tid: string;\n\n\t/**\n\t * ID, используемый в верстке диалогового окна\n\t */\n\tidAttr: string;\n\n\t/**\n\t * Пользовательский компонент диалогового окна\n\t */\n\tComponent: T;\n\n\t/**\n\t * Компонент инициирован\n\t *\n\t * Устанавливается после первого вызова useTopDialog()\n\t */\n\tisMounted = ref(false);\n\n\t/**\n\t * Компонент готов к использованию\n\t *\n\t * Используется для внутренних преобразований после отрисовки\n\t */\n\tisReady = ref(false);\n\n\t/**\n\t * Диалоговое окно открыто\n\t */\n\tisOpened = ref(false);\n\n\t/**\n\t * Имя активной страницы дилогового окна\n\t */\n\tpageActive = ref('');\n\n\t/**\n\t * Диалоговое окно находится в состоянии загрузки своей страницы\n\t */\n\tisLoadingPage = ref(false);\n\n\t/**\n\t * Следующая активная страница\n\t *\n\t * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию\n\t */\n\tpageActiveNext = ref('');\n\n\t/**\n\t * props компонента, доступны после инициализации\n\t */\n\tprops?: ComponentInstance<T>['$props'];\n\n\t/**\n\t * emit базового компонента `TopDialog`\n\t */\n\temit?: ComponentInstance<typeof TopDialog>['$emit'];\n\n\t/**\n\t * Одноразовое событие на закрытие диалогового окна\n\t *\n\t * Используется для привязки окна к сценариям использования\n\t */\n\tonCloseOnce?: (props: typeof this.props, pageName: string) => void;\n\n\tconstructor(TopDialogComponent: T) {\n\t\tthis.id = TopDialogComponent.id!;\n\t\tthis.idAttr = 'dialog_' + TopDialogComponent.id;\n\t\tthis.Component = markRaw(TopDialogComponent);\n\t}\n\n\t/**\n\t * Событие - компонент инициирован\n\t */\n\tonMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance) {\n\t\tthis.isMounted.value = true;\n\t\tthis.props = topDialogComponent.props;\n\t\tthis.emit = topDialogBaseComponent.emit;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t *\n\t * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента\n\t */\n\tasync open(pageName: string = 'main', props?: {}, 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","acc","elCurrentPages","pageName","elNextPage","el2","elDialog","utils_route","hash","oldUrl","newUrl","$el","elPage","utils_dom","dialogId","$dialog","toViewPageN","viewName","viewNameAndPageLink","hash2","view","TopDialogHandle","vue","TopDialogComponent","topDialogComponent","topDialogBaseComponent","props","args","onCloseOnce","_args","name","dialogsWorkers","getDialogWorker","id","addDialogWorker"],"mappings":"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"}
@@ -76,7 +76,7 @@ class c {
76
76
  this.compareStates(t, s) && this.opendDialogsFromUrl();
77
77
  }
78
78
  static async getDialogsUtils() {
79
- const { TopDialogUtils: e } = await import("./utils-BfXpHkpA.es.js");
79
+ const { TopDialogUtils: e } = await import("./utils-CacKxWvO.es.js");
80
80
  return e;
81
81
  }
82
82
  static getDialog(e) {
@@ -171,7 +171,7 @@ class c {
171
171
  let i = "next";
172
172
  return e < this.state.viewPageN && (i = "prev"), (await this.getDialogsUtils()).toViewDirty(a[1], i);
173
173
  }
174
- return P(document, "dialog[page-active]").filter((i) => i.checkVisibility()).forEach((i) => {
174
+ return P(document, ".ui-dialog-content[data-view-page-active]").filter((i) => i.checkVisibility()).forEach((i) => {
175
175
  const n = i.getAttribute("id");
176
176
  if (!n) throw "Диалоговое окно не содержит id";
177
177
  L("view-" + n) || $(i).dialog("close");
@@ -319,4 +319,4 @@ export {
319
319
  Q as a,
320
320
  K as g
321
321
  };
322
- //# sourceMappingURL=dialogs.vue_vue_type_script_setup_true_lang-DBzDS_l7.es.js.map
322
+ //# sourceMappingURL=dialogs.vue_vue_type_script_setup_true_lang-CjUHErAY.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogs.vue_vue_type_script_setup_true_lang-CjUHErAY.es.js","sources":["../../src/components/dialog/lib/worker.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue"],"sourcesContent":["import { genHash, getHash, historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogOpener, ElTopDialogPage, MoveDirection, TopDialogOptions } from './types';\nimport { querySelectorAllArray } from '@/core/utils/dom';\nimport type { $el } from '@/components/types';\n\nexport abstract class TopDialogWorker {\n\tstatic state = {\n\t\tload: undefined as TopDialogOptions['load'] | undefined,\n\t\tdecoratorOnCreate: undefined as TopDialogOptions['decoratorOnCreate'] | undefined,\n\n\t\t/**\n\t\t * Порядковый номер перехода в диалоговых окнах\n\t\t *\n\t\t * Для расчета анимации Вперед / Назад\n\t\t */\n\t\tviewPageN: 0,\n\t};\n\n\tprivate static inited = false;\n\n\t/**\n\t * Инициировать события слежения за парамтерами url\n\t *\n\t * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу\n\t */\n\tstatic init(options?: TopDialogOptions) {\n\t\tif (this.inited) return;\n\t\tthis.inited = true;\n\n\t\tthis.state.load = options?.load;\n\t\tthis.state.decoratorOnCreate = options?.decoratorOnCreate;\n\n\t\tconst autoInitDelay = options?.autoInitDelay ?? 5000;\n\n\t\twindow.addEventListener('hashchange', (e) => {\n\t\t\tthis.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n\t\t});\n\n\t\tthis.opendDialogsFromChangeUrl('', location.href);\n\n\t\t/**\n\t\t * Сгенерировать ссылку для перехода к странице диалогового окна\n\t\t */\n\t\tdocument.addEventListener('mousedown', async (e) => {\n\t\t\tconst elEventTarget = e.target as HTMLElement;\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\tconst elEventTarget = e.target as HTMLElement;\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?.checkVisibility()) return;\n\n\t\t\t\t// в адресе уже указана эта страница, необходимо явно запросить ее открытие\n\t\t\t\tif (location.hash.indexOf(toView.replace('-', '=')) !== -1) {\n\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst replaceHistory = !!elDialog?.dataset.toViewReplace;\n\n\t\t\tif (replaceHistory) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thistorySetState(true, hash);\n\n\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\tif (moveDirection == 'next') {\n\t\t\t\t\tTopDialogWorker.state.viewPageN++;\n\t\t\t\t} else {\n\t\t\t\t\tTopDialogWorker.state.viewPageN--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.tagName !== 'A') {\n\t\t\t\t\tif (this.compareStates(hash, location.hash)) {\n\t\t\t\t\t\thistorySetState(false, hash);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => this.getDialogsUtils(), autoInitDelay);\n\t}\n\n\tprivate static opendDialogsFromChangeUrl(oldUrl: string, newUrl: string) {\n\t\tconst oldHash = oldUrl.replace(/.*?#/, '#');\n\t\tconst newHash = newUrl.replace(/.*?#/, '#');\n\n\t\tconst dialogsStateChanged = this.compareStates(oldHash, newHash);\n\t\tif (dialogsStateChanged) void this.opendDialogsFromUrl();\n\t}\n\n\tstatic async getDialogsUtils() {\n\t\tconst { TopDialogUtils } = await import('./utils');\n\n\t\treturn TopDialogUtils;\n\t}\n\n\tstatic getDialog(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialog>('.ui-dialog-content');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getDialog()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$dialog($el: $el) {\n\t\treturn $el.closest('.ui-dialog-content');\n\t};\n\n\tstatic getPage(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialogPage>('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$page($el: $el) {\n\t\treturn $el.closest('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPairPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$pairPage($el: $el) {\n\t\tconst $dialog = TopDialogWorker.get$dialog($el);\n\n\t\tconst $page = TopDialogWorker.get$page($el);\n\t\tconst pageName = $page.data('view-page');\n\n\t\treturn $('[data-view-page=\"' + pageName + '\"]', $dialog);\n\t};\n\n\tstatic getPairPage(el: HTMLElement) {\n\t\tconst elDialog = TopDialogWorker.getDialog(el);\n\t\tif (!elDialog) return;\n\n\t\tconst elPage = TopDialogWorker.getPage(el);\n\t\tconst pageName = elPage?.dataset.viewPage;\n\n\t\treturn querySelectorAllArray(elDialog, `[data-view-page=\"${pageName}\"]`);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t */\n\tstatic close(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tstatic destroy(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\t\t\t$dialog.dialog('destroy');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Сгенерировать ссылку на страницу в диалоговом окне\n\t * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}\n\t * @param moveDirection\n\t */\n\tstatic genViewPageHash(toView: string, moveDirection: MoveDirection = 'next') {\n\t\tlet toViewPageN = this.state.viewPageN;\n\t\tif (moveDirection == 'prev') {\n\t\t\ttoViewPageN--;\n\t\t} else {\n\t\t\ttoViewPageN++;\n\t\t}\n\n\t\tconst viewNameAndPageLink = toView.split('-');\n\t\tconst viewName = viewNameAndPageLink.shift();\n\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\tlet hash = genHash('vpn', toViewPageN);\n\t\thash = genHash('view-' + viewName, pageLink, hash);\n\n\t\treturn hash;\n\t};\n\n\t/**\n\t * Сравнить версию открытых диалоговых окон\n\t * @returns вернет true, если состояния открытых окон изменилось\n\t */\n\tstatic compareStates(hash: string, hash2: string) {\n\t\tconst mathes = hash.match(/[#&]view-[^&]+/g) || [];\n\t\tconst mathes2 = hash2.match(/[#&]view-[^&]+/g) || [];\n\n\t\tif (mathes.length !== mathes2.length) return true;\n\n\t\tconst mathesChanged = mathes.filter((math, n) => {\n\t\t\tconst math2 = mathes2[n] || '';\n\n\t\t\treturn math !== math2;\n\t\t});\n\n\t\tif (mathesChanged.length) return true;\n\n\t\treturn false;\n\t};\n\n\tstatic opendDialogsFromUrl = async () => {\n\t\tconst toViewPageN = Number(getHash('vpn')) || 0;\n\n\t\t// Открыть диалоговое окно\n\t\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(document, '.ui-dialog-content[data-view-page-active]') as HTMLDialogElement[];\n\t\telDialogs.filter((elDialog) => {\n\t\t\treturn elDialog.checkVisibility();\n\t\t}).forEach((elDialog) => {\n\t\t\tconst viewName = elDialog.getAttribute('id');\n\t\t\tif (!viewName) throw 'Диалоговое окно не содержит id';\n\t\t\tconst pageName = getHash('view-' + viewName);\n\t\t\tif (!pageName) {\n\t\t\t\tconst $dialog = $(elDialog);\n\n\t\t\t\t$dialog.dialog('close');\n\t\t\t}\n\t\t});\n\n\t\tthis.state.viewPageN = toViewPageN;\n\n\t\treturn true;\n\t};\n}\n","import { type ComponentInstance, type ComponentInternalInstance, markRaw, ref } from 'vue';\nimport { waitWhile } from '@/core/utils/system';\nimport TopDialog from '../dialog.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { MoveDirection } from '@/components/dialog/lib/types';\nimport type { TopDialogComponent } from './types';\nimport { historySetState } from '@/core/utils/route';\n\n/**\n * Объект для работы с диалоговым окном\n *\n * Каждое окно уникально и может быть открыто одновременно только один раз\n *\n * Можно определить много окон, после чего с ними можно вести работу в любой части приложения\n */\nexport class TopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Индентификатор, определяется на уровне компонента TopDialogComponent\n\t *\n\t * Может использоваться в навигации для открытия нужных окон с нужными настройками\n\t */\n\tid: string;\n\n\t/**\n\t * ID, используемый в верстке диалогового окна\n\t */\n\tidAttr: string;\n\n\t/**\n\t * Пользовательский компонент диалогового окна\n\t */\n\tComponent: T;\n\n\t/**\n\t * Компонент инициирован\n\t *\n\t * Устанавливается после первого вызова useTopDialog()\n\t */\n\tisMounted = ref(false);\n\n\t/**\n\t * Компонент готов к использованию\n\t *\n\t * Используется для внутренних преобразований после отрисовки\n\t */\n\tisReady = ref(false);\n\n\t/**\n\t * Диалоговое окно открыто\n\t */\n\tisOpened = ref(false);\n\n\t/**\n\t * Имя активной страницы дилогового окна\n\t */\n\tpageActive = ref('');\n\n\t/**\n\t * Диалоговое окно находится в состоянии загрузки своей страницы\n\t */\n\tisLoadingPage = ref(false);\n\n\t/**\n\t * Следующая активная страница\n\t *\n\t * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию\n\t */\n\tpageActiveNext = ref('');\n\n\t/**\n\t * props компонента, доступны после инициализации\n\t */\n\tprops?: ComponentInstance<T>['$props'];\n\n\t/**\n\t * emit базового компонента `TopDialog`\n\t */\n\temit?: ComponentInstance<typeof TopDialog>['$emit'];\n\n\t/**\n\t * Одноразовое событие на закрытие диалогового окна\n\t *\n\t * Используется для привязки окна к сценариям использования\n\t */\n\tonCloseOnce?: (props: typeof this.props, pageName: string) => void;\n\n\tconstructor(TopDialogComponent: T) {\n\t\tthis.id = TopDialogComponent.id!;\n\t\tthis.idAttr = 'dialog_' + TopDialogComponent.id;\n\t\tthis.Component = markRaw(TopDialogComponent);\n\t}\n\n\t/**\n\t * Событие - компонент инициирован\n\t */\n\tonMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance) {\n\t\tthis.isMounted.value = true;\n\t\tthis.props = topDialogComponent.props;\n\t\tthis.emit = topDialogBaseComponent.emit;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t *\n\t * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента\n\t */\n\tasync open(pageName: string = 'main', props?: {}, 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","historySetState","oldUrl","newUrl","oldHash","newHash","$el","$dialog","elPage","dialogId","toViewPageN","viewNameAndPageLink","pageLink","genHash","hash2","mathes","mathes2","math","n","math2","getHash","view","regexp","TopDialogHandle","ref","TopDialogComponent","markRaw","topDialogComponent","topDialogBaseComponent","props","args","onCloseOnce","_args","waitWhile","name","dialogsWorkers","shallowReactive","getDialogWorker","id","addDialogWorker","onUnmounted","dialog"],"mappings":"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"}
@@ -77,7 +77,7 @@ var pn = /^\s+/;
77
77
  function fn(e) {
78
78
  return e && e.slice(0, cn(e) + 1).replace(pn, "");
79
79
  }
80
- var K = A.Symbol, Tt = Object.prototype, gn = Tt.hasOwnProperty, mn = Tt.toString, Q = K ? K.toStringTag : void 0;
80
+ var X = A.Symbol, Tt = Object.prototype, gn = Tt.hasOwnProperty, mn = Tt.toString, Q = X ? X.toStringTag : void 0;
81
81
  function hn(e) {
82
82
  var t = gn.call(e, Q), n = e[Q];
83
83
  try {
@@ -92,8 +92,8 @@ var bn = Object.prototype, yn = bn.toString;
92
92
  function vn(e) {
93
93
  return yn.call(e);
94
94
  }
95
- var wn = "[object Null]", Tn = "[object Undefined]", Fe = K ? K.toStringTag : void 0;
96
- function R(e) {
95
+ var wn = "[object Null]", Tn = "[object Undefined]", Fe = X ? X.toStringTag : void 0;
96
+ function F(e) {
97
97
  return e == null ? e === void 0 ? Tn : wn : Fe && Fe in Object(e) ? hn(e) : vn(e);
98
98
  }
99
99
  function W(e) {
@@ -101,7 +101,7 @@ function W(e) {
101
101
  }
102
102
  var $n = "[object Symbol]";
103
103
  function Sn(e) {
104
- return typeof e == "symbol" || W(e) && R(e) == $n;
104
+ return typeof e == "symbol" || W(e) && F(e) == $n;
105
105
  }
106
106
  var Ue = NaN, _n = /^[-+]0x[0-9a-f]+$/i, On = /^0b[01]+$/i, En = /^0o[0-7]+$/i, jn = parseInt;
107
107
  function He(e) {
@@ -227,7 +227,7 @@ var Fn = "[object AsyncFunction]", Un = "[object Function]", Hn = "[object Gener
227
227
  function De(e) {
228
228
  if (!E(e))
229
229
  return !1;
230
- var t = R(e);
230
+ var t = F(e);
231
231
  return t == Un || t == Hn || t == Fn || t == Gn;
232
232
  }
233
233
  var be = A["__core-js_shared__"], Ge = function() {
@@ -238,7 +238,7 @@ function Kn(e) {
238
238
  return !!Ge && Ge in e;
239
239
  }
240
240
  var Xn = Function.prototype, qn = Xn.toString;
241
- function F(e) {
241
+ function U(e) {
242
242
  if (e != null) {
243
243
  try {
244
244
  return qn.call(e);
@@ -258,16 +258,16 @@ function nr(e) {
258
258
  if (!E(e) || Kn(e))
259
259
  return !1;
260
260
  var t = De(e) ? tr : Qn;
261
- return t.test(F(e));
261
+ return t.test(U(e));
262
262
  }
263
263
  function rr(e, t) {
264
264
  return e == null ? void 0 : e[t];
265
265
  }
266
- function U(e, t) {
266
+ function H(e, t) {
267
267
  var n = rr(e, t);
268
268
  return nr(n) ? n : void 0;
269
269
  }
270
- var Z = U(A, "Map"), x = U(Object, "create");
270
+ var Z = H(A, "Map"), x = H(Object, "create");
271
271
  function ar() {
272
272
  this.__data__ = x ? x(null) : {}, this.size = 0;
273
273
  }
@@ -358,15 +358,15 @@ function $r(e, t) {
358
358
  }
359
359
  return n.set(e, t), this.size = n.size, this;
360
360
  }
361
- function H(e) {
361
+ function G(e) {
362
362
  var t = this.__data__ = new I(e);
363
363
  this.size = t.size;
364
364
  }
365
- H.prototype.clear = zn;
366
- H.prototype.delete = Vn;
367
- H.prototype.get = kn;
368
- H.prototype.has = Rn;
369
- H.prototype.set = $r;
365
+ G.prototype.clear = zn;
366
+ G.prototype.delete = Vn;
367
+ G.prototype.get = kn;
368
+ G.prototype.has = Rn;
369
+ G.prototype.set = $r;
370
370
  function Sr(e, t) {
371
371
  for (var n = -1, a = e == null ? 0 : e.length; ++n < a && t(e[n], n, e) !== !1; )
372
372
  ;
@@ -374,7 +374,7 @@ function Sr(e, t) {
374
374
  }
375
375
  var se = function() {
376
376
  try {
377
- var e = U(Object, "defineProperty");
377
+ var e = H(Object, "defineProperty");
378
378
  return e({}, "", {}), e;
379
379
  } catch {
380
380
  }
@@ -408,7 +408,7 @@ function jr(e, t) {
408
408
  }
409
409
  var Ar = "[object Arguments]";
410
410
  function Ke(e) {
411
- return W(e) && R(e) == Ar;
411
+ return W(e) && F(e) == Ar;
412
412
  }
413
413
  var _t = Object.prototype, Pr = _t.hasOwnProperty, Mr = _t.propertyIsEnumerable, Se = Ke(/* @__PURE__ */ function() {
414
414
  return arguments;
@@ -431,20 +431,20 @@ var Nr = "[object Arguments]", zr = "[object Array]", Vr = "[object Boolean]", k
431
431
  y[Zr] = y[xr] = y[ea] = y[ta] = y[na] = y[ra] = y[aa] = y[oa] = y[ia] = !0;
432
432
  y[Nr] = y[zr] = y[Qr] = y[Vr] = y[Jr] = y[kr] = y[Rr] = y[Fr] = y[Ur] = y[Hr] = y[Gr] = y[Kr] = y[Xr] = y[qr] = y[Yr] = !1;
433
433
  function sa(e) {
434
- return W(e) && jt(e.length) && !!y[R(e)];
434
+ return W(e) && jt(e.length) && !!y[F(e)];
435
435
  }
436
436
  function Le(e) {
437
437
  return function(t) {
438
438
  return e(t);
439
439
  };
440
440
  }
441
- var At = typeof exports == "object" && exports && !exports.nodeType && exports, J = At && typeof module == "object" && module && !module.nodeType && module, la = J && J.exports === At, ye = la && wt.process, X = function() {
441
+ var At = typeof exports == "object" && exports && !exports.nodeType && exports, J = At && typeof module == "object" && module && !module.nodeType && module, la = J && J.exports === At, ye = la && wt.process, q = function() {
442
442
  try {
443
443
  var e = J && J.require && J.require("util").types;
444
444
  return e || ye && ye.binding && ye.binding("util");
445
445
  } catch {
446
446
  }
447
- }(), Ye = X && X.isTypedArray, Pt = Ye ? Le(Ye) : sa, ua = Object.prototype, da = ua.hasOwnProperty;
447
+ }(), Ye = q && q.isTypedArray, Pt = Ye ? Le(Ye) : sa, ua = Object.prototype, da = ua.hasOwnProperty;
448
448
  function Mt(e, t) {
449
449
  var n = ee(e), a = !n && Se(e), o = !n && !a && Be(e), r = !n && !a && !o && Pt(e), s = n || a || o || r, i = s ? jr(e.length, String) : [], l = i.length;
450
450
  for (var u in e)
@@ -540,9 +540,9 @@ function Pa(e, t, n) {
540
540
  function Ma(e) {
541
541
  return Pa(e, ha, ja);
542
542
  }
543
- var _e = U(A, "DataView"), Oe = U(A, "Promise"), Ee = U(A, "Set"), je = U(A, "WeakMap"), et = "[object Map]", Ca = "[object Object]", tt = "[object Promise]", nt = "[object Set]", rt = "[object WeakMap]", at = "[object DataView]", Da = F(_e), Ia = F(Z), Ba = F(Oe), La = F(Ee), Wa = F(je), D = R;
543
+ var _e = H(A, "DataView"), Oe = H(A, "Promise"), Ee = H(A, "Set"), je = H(A, "WeakMap"), et = "[object Map]", Ca = "[object Object]", tt = "[object Promise]", nt = "[object Set]", rt = "[object WeakMap]", at = "[object DataView]", Da = U(_e), Ia = U(Z), Ba = U(Oe), La = U(Ee), Wa = U(je), D = F;
544
544
  (_e && D(new _e(new ArrayBuffer(1))) != at || Z && D(new Z()) != et || Oe && D(Oe.resolve()) != tt || Ee && D(new Ee()) != nt || je && D(new je()) != rt) && (D = function(e) {
545
- var t = R(e), n = t == Ca ? e.constructor : void 0, a = n ? F(n) : "";
545
+ var t = F(e), n = t == Ca ? e.constructor : void 0, a = n ? U(n) : "";
546
546
  if (a)
547
547
  switch (a) {
548
548
  case Da:
@@ -577,7 +577,7 @@ function Fa(e) {
577
577
  var t = new e.constructor(e.source, Ra.exec(e));
578
578
  return t.lastIndex = e.lastIndex, t;
579
579
  }
580
- var it = K ? K.prototype : void 0, st = it ? it.valueOf : void 0;
580
+ var it = X ? X.prototype : void 0, st = it ? it.valueOf : void 0;
581
581
  function Ua(e) {
582
582
  return st ? Object(st.call(e)) : {};
583
583
  }
@@ -639,11 +639,11 @@ var po = "[object Map]";
639
639
  function fo(e) {
640
640
  return W(e) && D(e) == po;
641
641
  }
642
- var ut = X && X.isMap, go = ut ? Le(ut) : fo, ho = "[object Set]";
642
+ var ut = q && q.isMap, go = ut ? Le(ut) : fo, ho = "[object Set]";
643
643
  function bo(e) {
644
644
  return W(e) && D(e) == ho;
645
645
  }
646
- var dt = X && X.isSet, yo = dt ? Le(dt) : bo, vo = 1, zt = "[object Arguments]", wo = "[object Array]", To = "[object Boolean]", $o = "[object Date]", So = "[object Error]", Vt = "[object Function]", _o = "[object GeneratorFunction]", Oo = "[object Map]", Eo = "[object Number]", kt = "[object Object]", jo = "[object RegExp]", Ao = "[object Set]", Po = "[object String]", Mo = "[object Symbol]", Co = "[object WeakMap]", Do = "[object ArrayBuffer]", Io = "[object DataView]", Bo = "[object Float32Array]", Lo = "[object Float64Array]", Wo = "[object Int8Array]", No = "[object Int16Array]", zo = "[object Int32Array]", Vo = "[object Uint8Array]", ko = "[object Uint8ClampedArray]", Ro = "[object Uint16Array]", Fo = "[object Uint32Array]", h = {};
646
+ var dt = q && q.isSet, yo = dt ? Le(dt) : bo, vo = 1, zt = "[object Arguments]", wo = "[object Array]", To = "[object Boolean]", $o = "[object Date]", So = "[object Error]", Vt = "[object Function]", _o = "[object GeneratorFunction]", Oo = "[object Map]", Eo = "[object Number]", kt = "[object Object]", jo = "[object RegExp]", Ao = "[object Set]", Po = "[object String]", Mo = "[object Symbol]", Co = "[object WeakMap]", Do = "[object ArrayBuffer]", Io = "[object DataView]", Bo = "[object Float32Array]", Lo = "[object Float64Array]", Wo = "[object Int8Array]", No = "[object Int16Array]", zo = "[object Int32Array]", Vo = "[object Uint8Array]", ko = "[object Uint8ClampedArray]", Ro = "[object Uint16Array]", Fo = "[object Uint32Array]", h = {};
647
647
  h[zt] = h[wo] = h[Do] = h[Io] = h[To] = h[$o] = h[Bo] = h[Lo] = h[Wo] = h[No] = h[zo] = h[Oo] = h[Eo] = h[kt] = h[jo] = h[Ao] = h[Po] = h[Mo] = h[Vo] = h[ko] = h[Ro] = h[Fo] = !0;
648
648
  h[So] = h[Vt] = h[Co] = !1;
649
649
  function oe(e, t, n, a, o, r) {
@@ -667,7 +667,7 @@ function oe(e, t, n, a, o, r) {
667
667
  s = uo(e, u, i);
668
668
  }
669
669
  }
670
- r || (r = new H());
670
+ r || (r = new G());
671
671
  var d = r.get(e);
672
672
  if (d)
673
673
  return d;
@@ -729,7 +729,7 @@ function Yo(e) {
729
729
  }
730
730
  var Qo = "[object Object]", Jo = Function.prototype, Zo = Object.prototype, Ft = Jo.toString, xo = Zo.hasOwnProperty, ei = Ft.call(Object);
731
731
  function ti(e) {
732
- if (!W(e) || R(e) != Qo)
732
+ if (!W(e) || F(e) != Qo)
733
733
  return !1;
734
734
  var t = Lt(e);
735
735
  if (t === null)
@@ -759,7 +759,7 @@ function ri(e, t, n, a, o, r, s) {
759
759
  }
760
760
  function Ut(e, t, n, a, o) {
761
761
  e !== t && qo(t, function(r, s) {
762
- if (o || (o = new H()), E(r))
762
+ if (o || (o = new G()), E(r))
763
763
  ri(e, t, s, n, Ut, a, o);
764
764
  else {
765
765
  var i = a ? a(Pe(e, s), r, s + "", e, t, o) : void 0;
@@ -860,7 +860,7 @@ window.addEventListener("resize", vi);
860
860
  const wi = {
861
861
  addOnReize: bi,
862
862
  removeOnResize: yi
863
- }, G = {
863
+ }, K = {
864
864
  /**
865
865
  * Имя темы оформления
866
866
  *
@@ -904,10 +904,10 @@ const wi = {
904
904
  /**
905
905
  * CSS-классы модификаторы для документа страницы
906
906
  */
907
- documentClassModificators: G.documentClassModificators,
908
- dateFormat: G.dateFormat,
909
- currency: G.currency,
910
- timezoneOffset: G.timezoneOffset,
907
+ documentClassModificators: K.documentClassModificators,
908
+ dateFormat: K.dateFormat,
909
+ currency: K.currency,
910
+ timezoneOffset: K.timezoneOffset,
911
911
  /**
912
912
  * Device by size
913
913
  *
@@ -950,13 +950,13 @@ class $i {
950
950
  * Загрузить в память полный функционал TopNotice
951
951
  */
952
952
  static async TopNotice() {
953
- await import("./notice-C0QQCxdI.es.js");
953
+ await import("./notice-DE88Oe-t.es.js");
954
954
  }
955
955
  /**
956
956
  * Загрузить в память полный функционал TopPopup
957
957
  */
958
958
  static async TopPopup() {
959
- await import("./popup-Cl0Rac26.es.js");
959
+ await import("./popup-BjsK_pMZ.es.js");
960
960
  }
961
961
  /**
962
962
  * Загрузить в память полный функционал TopDialog
@@ -969,8 +969,8 @@ class $i {
969
969
  class g {
970
970
  static state = ve({ ...Ti });
971
971
  static preloaders = $i;
972
- static widthForMobile = G.widthForMobile;
973
- static themeName = G.themeName;
972
+ static widthForMobile = K.widthForMobile;
973
+ static themeName = K.themeName;
974
974
  static matchMediaIsMobile;
975
975
  static $ = $;
976
976
  static Events = wi;
@@ -1032,7 +1032,7 @@ class g {
1032
1032
  *
1033
1033
  * @docs https://ui.topvisor.com/?path=/docs/components-core-notice--docs
1034
1034
  */
1035
- static notice = async (t, n, a) => (g.flags.needLoadNotice = !0, (await import("./notice-C0QQCxdI.es.js")).show(t, n, a));
1035
+ static notice = async (t, n, a) => (g.flags.needLoadNotice = !0, (await import("./notice-DE88Oe-t.es.js")).show(t, n, a));
1036
1036
  /**
1037
1037
  * Вставить css стили на страницу по ссылке с автоматическим добавлением правил media
1038
1038
  *
@@ -1151,7 +1151,7 @@ const ws = {
1151
1151
  }
1152
1152
  }, Ss = (e, t = !0, n = 2) => {
1153
1153
  let a = String(e.getFullYear()), o = String(e.getDate()).padStart(2, "0"), r = String(e.getMonth() + 1).padStart(2, "0"), s = String(e.getHours()).padStart(2, "0"), i = String(e.getMinutes()).padStart(2, "0"), l = String(e.getSeconds()).padStart(2, "0"), u = a + "-" + r + "-" + o;
1154
- return n >= 1 && (u += " " + s), n >= 2 && (u += ":" + i), n === 3 && (u += ":" + l), t && (u = q(u, n)), u;
1154
+ return n >= 1 && (u += " " + s), n >= 2 && (u += ":" + i), n === 3 && (u += ":" + l), t && (u = R(u, n)), u;
1155
1155
  };
1156
1156
  function _s(e) {
1157
1157
  if (e.indexOf("T") === -1) {
@@ -1168,22 +1168,21 @@ function _s(e) {
1168
1168
  }
1169
1169
  return new Date(e);
1170
1170
  }
1171
- const Os = (e, t = !0, n = 0, a = g.state.timezoneOffset) => (a === (/* @__PURE__ */ new Date()).getTimezoneOffset() && (a = void 0), Gt(e, t, n, a));
1172
- function Gt(e, t = !0, n = 0, a) {
1173
- e || (e = (/* @__PURE__ */ new Date()).getTime());
1171
+ const Os = (e = (/* @__PURE__ */ new Date()).getTime(), t = !0, n = 0) => Gt(e, t, n, g.state.timezoneOffset);
1172
+ function Gt(e = (/* @__PURE__ */ new Date()).getTime(), t = !0, n = 0, a) {
1174
1173
  const o = a ? e + (/* @__PURE__ */ new Date()).getTimezoneOffset() * 60 * 1e3 - a * 60 * 1e3 : e, r = new Date(o), s = r.getFullYear(), i = String(r.getMonth() + 1).padStart(2, "0"), l = r.getDate().toString().padStart(2, "0"), u = r.getHours().toString().padStart(2, "0"), c = r.getMinutes().toString().padStart(2, "0"), d = r.getSeconds().toString().padStart(2, "0");
1175
1174
  n === "auto" && (n = 0, r.getHours() && (n = 1), r.getMinutes() && (n = 2), r.getSeconds() && (n = 3));
1176
1175
  let p = s + "-" + i + "-" + l;
1177
- return n && (p += " "), n >= 1 && (p += u), n >= 2 && (p += ":" + c), n >= 3 && (p += ":" + d), t && (p = q(a ? p : r, n)), p;
1176
+ return n && (p += " "), n >= 1 && (p += u), n >= 2 && (p += ":" + c), n >= 3 && (p += ":" + d), t && (a ? p = R(p, n) : p = R(r, n)), p;
1178
1177
  }
1179
1178
  function Es(e, t = !0) {
1180
1179
  const a = (/* @__PURE__ */ new Date()).getTimezoneOffset() / 60 * -1 * 60 * 60 * 1e3, o = 3 * 60 * 60 * 1e3;
1181
1180
  let r;
1182
1181
  e !== void 0 ? r = new Date(e) : r = /* @__PURE__ */ new Date(), r.setTime(r.getTime() - a + o);
1183
1182
  let s = String(r.getFullYear()), i = String(r.getDate()).padStart(2, "0"), l = String(r.getMonth() + 1).padStart(2, "0"), u = String(r.getHours()).padStart(2, "0"), c = String(r.getMinutes()).padStart(2, "0"), d = String(r.getSeconds()).padStart(2, "0"), p = s + "-" + l + "-" + i + " " + u + ":" + c + ":" + d;
1184
- return t && (p = q(p)), p;
1183
+ return t && (p = R(p)), p;
1185
1184
  }
1186
- function q(e, t = 2, n, a) {
1185
+ function R(e, t = 2, n, a) {
1187
1186
  if (a || (a = pe().Common.Not_date), typeof e == "string" && (!e || e.substring(0, 10) === "0000-00-00") && a && a !== "0000-00-00" || !e) return a;
1188
1187
  n || (n = g.state.dateFormat), n = n.toLowerCase().replace("m", "mm").replace("y", "yy").replace("d", "dd");
1189
1188
  let o;
@@ -1267,7 +1266,7 @@ const Si = { class: "top-avatar" }, _i = ["src", "title"], Oi = ["title"], Ei =
1267
1266
  if (t.isOnline)
1268
1267
  return (o = t.i18n) == null ? void 0 : o.Online;
1269
1268
  if (t.lastActiveTime)
1270
- return ((r = t.i18n) == null ? void 0 : r.LastSeen) + ": " + q(t.lastActiveTime, 2);
1269
+ return ((r = t.i18n) == null ? void 0 : r.LastSeen) + ": " + R(t.lastActiveTime, 2);
1271
1270
  }), a = O(() => t.nickname ? t.nickname + (n.value ? `
1272
1271
  ${n.value}` : "") : n.value);
1273
1272
  return (o, r) => (f(), m("div", Si, [
@@ -1582,7 +1581,7 @@ const Ki = /* @__PURE__ */ _({
1582
1581
  let s;
1583
1582
  const i = O({
1584
1583
  get() {
1585
- return q(a.modelValue, 2, void 0, "0000-00-00");
1584
+ return R(a.modelValue, 2, void 0, "0000-00-00");
1586
1585
  },
1587
1586
  set(d) {
1588
1587
  d = pt(d, "0000-00-00"), o("update:modelValue", d);
@@ -1591,7 +1590,7 @@ const Ki = /* @__PURE__ */ _({
1591
1590
  let l = (d) => {
1592
1591
  ft(d);
1593
1592
  }, u = (d) => {
1594
- const p = pt(d.target.value), b = q(p);
1593
+ const p = pt(d.target.value), b = R(p);
1595
1594
  if (!b || b === n.Common.Not_date || d.target.value !== b) {
1596
1595
  d.target.value = i.value;
1597
1596
  return;
@@ -1599,7 +1598,7 @@ const Ki = /* @__PURE__ */ _({
1599
1598
  i.value = d.target.value;
1600
1599
  };
1601
1600
  async function c(d) {
1602
- const p = await import("./datepicker-iaUT_eSc.es.js");
1601
+ const p = await import("./datepicker-DCDYQmsc.es.js");
1603
1602
  ft = p.oninput, s = p.connectDatepicker(d.target, {
1604
1603
  onSelect: () => u(d)
1605
1604
  }), s && s.datepicker("show");
@@ -2024,7 +2023,7 @@ export {
2024
2023
  Pi as _,
2025
2024
  Ts as a,
2026
2025
  cs as b,
2027
- q as c,
2026
+ R as c,
2028
2027
  $t as d,
2029
2028
  Kt as e,
2030
2029
  Me as f,
@@ -2049,4 +2048,4 @@ export {
2049
2048
  ls as y,
2050
2049
  rn as z
2051
2050
  };
2052
- //# sourceMappingURL=forms-BZlFXc5U.es.js.map
2051
+ //# sourceMappingURL=forms-DOGPN_TR.es.js.map