@topvisor/ui 1.0.30-0 → 1.0.30-1
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.
- package/.chunks/{core-DerSGhnf.es.js → core-L1cfoiCl.es.js} +4 -4
- package/.chunks/{core-DerSGhnf.es.js.map → core-L1cfoiCl.es.js.map} +1 -1
- package/.chunks/{core-tZjrVA9F.amd.js → core-iBztm1r-.amd.js} +2 -2
- package/.chunks/{core-tZjrVA9F.amd.js.map → core-iBztm1r-.amd.js.map} +1 -1
- package/.chunks/{datepicker-Xsb3xcX8.amd.js → datepicker-Cr-cdNls.amd.js} +2 -2
- package/.chunks/{datepicker-Xsb3xcX8.amd.js.map → datepicker-Cr-cdNls.amd.js.map} +1 -1
- package/.chunks/{datepicker-KbendK1M.es.js → datepicker-Dr_hF3hJ.es.js} +2 -2
- package/.chunks/{datepicker-KbendK1M.es.js.map → datepicker-Dr_hF3hJ.es.js.map} +1 -1
- package/.chunks/{dialog_selectorRegions-Chq0yqFg.amd.js → dialog_selectorRegions-CW4uQwh5.amd.js} +2 -2
- package/.chunks/{dialog_selectorRegions-Chq0yqFg.amd.js.map → dialog_selectorRegions-CW4uQwh5.amd.js.map} +1 -1
- package/.chunks/{dialog_selectorRegions-CQB8rW_o.es.js → dialog_selectorRegions-tz_E4JXX.es.js} +4 -4
- package/.chunks/{dialog_selectorRegions-CQB8rW_o.es.js.map → dialog_selectorRegions-tz_E4JXX.es.js.map} +1 -1
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-BRv3Mpzj.es.js → dialogs.vue_vue_type_script_setup_true_lang-CJm53s-R.es.js} +2 -2
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-BRv3Mpzj.es.js.map → dialogs.vue_vue_type_script_setup_true_lang-CJm53s-R.es.js.map} +1 -1
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-DRXenVvu.amd.js → dialogs.vue_vue_type_script_setup_true_lang-mCCFbKT2.amd.js} +2 -2
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-DRXenVvu.amd.js.map → dialogs.vue_vue_type_script_setup_true_lang-mCCFbKT2.amd.js.map} +1 -1
- package/.chunks/{forms-BvGGRIzu.amd.js → forms-DzVLntpR.amd.js} +3 -3
- package/.chunks/{forms-BvGGRIzu.amd.js.map → forms-DzVLntpR.amd.js.map} +1 -1
- package/.chunks/{forms-DvSi_Mh8.es.js → forms-y5m2XRDE.es.js} +5 -5
- package/.chunks/{forms-DvSi_Mh8.es.js.map → forms-y5m2XRDE.es.js.map} +1 -1
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-BsOU-bZ6.es.js → listItem.vue_vue_type_script_setup_true_lang-CTWHBqKC.es.js} +2 -2
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-BsOU-bZ6.es.js.map → listItem.vue_vue_type_script_setup_true_lang-CTWHBqKC.es.js.map} +1 -1
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-yo0gJ6X4.amd.js → listItem.vue_vue_type_script_setup_true_lang-l4J2ukxj.amd.js} +2 -2
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-yo0gJ6X4.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-l4J2ukxj.amd.js.map} +1 -1
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-LMqVTnj9.es.js → menu.vue_vue_type_style_index_0_lang-6rKuaIXo.es.js} +2 -2
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-LMqVTnj9.es.js.map → menu.vue_vue_type_style_index_0_lang-6rKuaIXo.es.js.map} +1 -1
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-DdTdt1qa.amd.js → menu.vue_vue_type_style_index_0_lang-y9G2xnCW.amd.js} +2 -2
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-DdTdt1qa.amd.js.map → menu.vue_vue_type_style_index_0_lang-y9G2xnCW.amd.js.map} +1 -1
- package/.chunks/{notice-CB8iRenB.amd.js → notice-CY-T9oQb.amd.js} +2 -2
- package/.chunks/{notice-CB8iRenB.amd.js.map → notice-CY-T9oQb.amd.js.map} +1 -1
- package/.chunks/{notice-DNMb2ah9.es.js → notice-Dc-rliJw.es.js} +2 -2
- package/.chunks/{notice-DNMb2ah9.es.js.map → notice-Dc-rliJw.es.js.map} +1 -1
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-CpTBLsTO.amd.js → page.vue_vue_type_script_setup_true_lang-5bg_D7ql.amd.js} +2 -2
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-CpTBLsTO.amd.js.map → page.vue_vue_type_script_setup_true_lang-5bg_D7ql.amd.js.map} +1 -1
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-syEbR-ts.es.js → page.vue_vue_type_script_setup_true_lang-CfZBDecm.es.js} +4 -4
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-syEbR-ts.es.js.map → page.vue_vue_type_script_setup_true_lang-CfZBDecm.es.js.map} +1 -1
- package/.chunks/{popup-B8NUff7S.es.js → popup-B_HmF7JW.es.js} +84 -76
- package/.chunks/popup-B_HmF7JW.es.js.map +1 -0
- package/.chunks/popup-D-MRN1nb.amd.js +2 -0
- package/.chunks/popup-D-MRN1nb.amd.js.map +1 -0
- package/.chunks/{utils-hS40kghU.es.js → utils-BHAnz5od.es.js} +2 -2
- package/.chunks/{utils-hS40kghU.es.js.map → utils-BHAnz5od.es.js.map} +1 -1
- package/.chunks/{utils-B0ZFaEX-.amd.js → utils-CqxdOpd8.amd.js} +2 -2
- package/.chunks/{utils-B0ZFaEX-.amd.js.map → utils-CqxdOpd8.amd.js.map} +1 -1
- package/.chunks/{utils-CW_aQoj6.es.js → utils-DEuAebuf.es.js} +3 -3
- package/.chunks/{utils-CW_aQoj6.es.js.map → utils-DEuAebuf.es.js.map} +1 -1
- package/.chunks/{utils-Cx-PLrV1.amd.js → utils-DG5ghT_a.amd.js} +2 -2
- package/.chunks/{utils-Cx-PLrV1.amd.js.map → utils-DG5ghT_a.amd.js.map} +1 -1
- package/charts/charts.amd.js +1 -1
- package/charts/charts.js +1 -1
- package/components/popup/lib/popup.globalEvents.d.ts +6 -0
- package/core/app.amd.js +1 -1
- package/core/app.js +5 -5
- package/dialog/dialog.amd.js +1 -1
- package/dialog/dialog.js +2 -2
- package/forms/forms.amd.js +1 -1
- package/forms/forms.js +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.js +2 -2
- package/layout/layout.amd.js +1 -1
- package/layout/layout.js +1 -1
- package/package.json +1 -1
- package/popup/popup.amd.js +1 -1
- package/popup/popup.js +2 -2
- package/popup/worker.amd.js +1 -1
- package/popup/worker.js +2 -2
- package/project/project.amd.js +1 -1
- package/project/project.js +5 -5
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.js +1 -1
- package/utils/clipboard.amd.js +1 -1
- package/utils/clipboard.js +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.js +1 -1
- package/utils/lodash.amd.js +1 -1
- package/utils/lodash.js +1 -1
- package/utils/price.amd.js +1 -1
- package/utils/price.js +1 -1
- package/utils/searchers.amd.js +1 -1
- package/utils/searchers.js +3 -3
- package/utils/string.amd.js +1 -1
- package/utils/string.js +1 -1
- package/.chunks/popup-B8NUff7S.es.js.map +0 -1
- package/.chunks/popup-TDcAXCva.amd.js +0 -2
- package/.chunks/popup-TDcAXCva.amd.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
{"version":3,"file":"page.vue_vue_type_script_setup_true_lang-CfZBDecm.es.js","sources":["../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/dialog/page/page.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t\t'--top-dialog-width': width,\n\t\t\t\t'--top-dialog-height': height,\n\t\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n"],"names":["dialog","getDialogWorker","__props","provide","onMounted","topDialogBaseComponent","getCurrentInstance","topDialogComponent","_a","watch","props","useTopDialogSelf","classes","computed"],"mappings":";;;;;;;;;;;;;;;;;;AAiBM,UAAAA,IAASC,EAXDC,EAWuB,EAAE;AACvC,QAAI,CAACF;AACE,YAAA,IAAI,MAAM,kFAAkF;AAMnG,WAAAG,EAAQ,gBAAgBH,CAAM,GAK9BI,EAAU,MAAM;;AACf,YAAMC,IAAyBC,EAAmB,GAC5CC,IAAqBF,EAAuB;AAElD,YAAIG,IAAAD,KAAA,gBAAAA,EAAoB,WAApB,gBAAAC,EAA4B,KAAK,UAAS;AACvC,cAAA,IAAI,MAAM,4DAA4D;AAGzE,UAAA,MAAM,QAAQD,EAAmB,QAAQ,QAAQ,KAAKA,EAAmB,QAAQ,SAAS,WAAW;AAClG,cAAA,IAAI,MAAM,yCAAyC;AAGnD,MAAAP,EAAA,UAAUO,GAAoBF,CAAsB;AAAA,IAAA,CAC3D,GAEKI,EAAAT,EAAO,UAAU,MAAM;AAC5B,MAAAA,EAAO,QAAQ,QAAQ;AAAA,IAAA,GACrB;AAAA,MACF,OAAO;AAAA,MACP,MAAM;AAAA,IAAA,CACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CD,UAAMU,IAAQR,GAMRF,IAASW,EAAiB,GAE1BC,IAAUC,EAAS,MAAM;;AACvB,aAAA;AAAA,QACN,UAAQL,IAAAR,EAAO,eAAP,gBAAAQ,EAAmB,WAAUE,EAAM;AAAA,QAC3C,eAAeA,EAAM,aAAaV,EAAO,cAAc;AAAA,MACxD;AAAA,IAAA,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { u as w, C as f } from "./forms-
|
|
2
|
-
import
|
|
3
|
-
import { TopPopupWorker as
|
|
1
|
+
import { u as w, C as f } from "./forms-y5m2XRDE.es.js";
|
|
2
|
+
import e from "../utils/dom.js";
|
|
3
|
+
import { TopPopupWorker as n } from "../popup/worker.js";
|
|
4
4
|
class x {
|
|
5
5
|
static componentName = "Top";
|
|
6
6
|
componentName;
|
|
@@ -21,18 +21,18 @@ class x {
|
|
|
21
21
|
init(t, p, o) {
|
|
22
22
|
if (!p)
|
|
23
23
|
throw t + ": el is undefined";
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
return
|
|
24
|
+
const i = x.getComponent(p, t);
|
|
25
|
+
if (i)
|
|
26
|
+
return i.reInit(o), i;
|
|
27
27
|
this.componentName = t, this.className = "top" + t[0].toUpperCase() + t.substring(1), this.uid = this.componentName + (Math.random() + "").replace(".", ""), this._setComponent(p), this.el = p, this.el.classList.add(this.className), this.options = Object.assign(this.options, o), this.mount();
|
|
28
28
|
}
|
|
29
29
|
// получить инициированный компонент
|
|
30
30
|
static getComponent(t, p) {
|
|
31
|
-
return
|
|
31
|
+
return e.storage(t, "#" + p);
|
|
32
32
|
}
|
|
33
33
|
// устанвоить компонент
|
|
34
34
|
_setComponent(t) {
|
|
35
|
-
|
|
35
|
+
e.storage(t, "#" + this.componentName, this);
|
|
36
36
|
}
|
|
37
37
|
// функция подключения компонента
|
|
38
38
|
mount() {
|
|
@@ -40,7 +40,7 @@ class x {
|
|
|
40
40
|
}
|
|
41
41
|
// функция отключения компонента
|
|
42
42
|
unmount() {
|
|
43
|
-
|
|
43
|
+
e.storage(this.el, "#" + this.componentName, null), this.unmountEls.forEach((t) => {
|
|
44
44
|
t.remove();
|
|
45
45
|
}), this.unmountEls = [], this.unmountEvents.forEach((t) => {
|
|
46
46
|
t.el.removeEventListener(t.type, t.listener, t.options);
|
|
@@ -51,18 +51,18 @@ class x {
|
|
|
51
51
|
this.unmountEls.push(t);
|
|
52
52
|
}
|
|
53
53
|
// указание новые события, которые должны будут удалиться после unmount
|
|
54
|
-
addEventListenerWithUnmount(t, p, o,
|
|
55
|
-
t.addEventListener(p, o,
|
|
54
|
+
addEventListenerWithUnmount(t, p, o, i) {
|
|
55
|
+
t.addEventListener(p, o, i), this.registerEventForUnmount(t, p, o, i);
|
|
56
56
|
}
|
|
57
57
|
// указание новые события, которые должны будут удалиться после unmount
|
|
58
|
-
registerEventForUnmount(t, p, o,
|
|
59
|
-
const
|
|
58
|
+
registerEventForUnmount(t, p, o, i) {
|
|
59
|
+
const s = {
|
|
60
60
|
el: t,
|
|
61
61
|
type: p,
|
|
62
62
|
listener: o,
|
|
63
|
-
options:
|
|
63
|
+
options: i
|
|
64
64
|
};
|
|
65
|
-
this.unmountEvents.push(
|
|
65
|
+
this.unmountEvents.push(s);
|
|
66
66
|
}
|
|
67
67
|
// функция перенастройки уже подключенного компонента
|
|
68
68
|
reInit(t) {
|
|
@@ -73,8 +73,8 @@ class x {
|
|
|
73
73
|
var p;
|
|
74
74
|
if (t instanceof NodeList)
|
|
75
75
|
t.forEach((o) => {
|
|
76
|
-
var
|
|
77
|
-
return (
|
|
76
|
+
var i;
|
|
77
|
+
return (i = o.parentElement) == null ? void 0 : i.removeChild(o);
|
|
78
78
|
});
|
|
79
79
|
else {
|
|
80
80
|
const o = t;
|
|
@@ -90,7 +90,25 @@ class y {
|
|
|
90
90
|
* Добавляются на страницу один раз и навсегда
|
|
91
91
|
*/
|
|
92
92
|
static init() {
|
|
93
|
-
this.isInited || (this.isInited = !0, document.addEventListener("click", this.
|
|
93
|
+
this.isInited || (this.isInited = !0, document.addEventListener("click", this.onclickCapture, { capture: !0 }), document.addEventListener("click", this.onclick), document.addEventListener("keydown", this.onkeydown));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Глобальный обработчик захватов кликов
|
|
97
|
+
*
|
|
98
|
+
* Обрабатывает захватов клики внутри Popup
|
|
99
|
+
*/
|
|
100
|
+
static onclickCapture(t) {
|
|
101
|
+
if (!(!(t.target instanceof HTMLElement) || !t.target.closest(".top-popup-wrapper"))) {
|
|
102
|
+
if (t.target.matches("[data-top-popup]")) {
|
|
103
|
+
t.target.closest("ul"), t.stopPropagation();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (t.target.matches(".top-popup-wrapper")) {
|
|
107
|
+
const o = t.target;
|
|
108
|
+
n.close(o), t.stopPropagation();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
94
112
|
}
|
|
95
113
|
/**
|
|
96
114
|
* Глобальный обработчик кликов
|
|
@@ -98,30 +116,20 @@ class y {
|
|
|
98
116
|
* Обрабатывает клики внутри Popup
|
|
99
117
|
*/
|
|
100
118
|
static onclick(t) {
|
|
101
|
-
var o;
|
|
102
119
|
if (!(t.target instanceof HTMLElement)) return;
|
|
103
120
|
const p = t.target.closest(".closer, a, .a, .top-button");
|
|
104
121
|
if (p) {
|
|
105
|
-
const
|
|
106
|
-
if (!
|
|
122
|
+
const o = t.target.closest(".top-popup-wrapper");
|
|
123
|
+
if (!o || p.matches(".top-popup-noCloser"))
|
|
107
124
|
return;
|
|
108
|
-
|
|
109
|
-
const n = t.target.closest("ul"), r = t.target.closest("a, .a");
|
|
110
|
-
n && ((o = n.querySelector("a.top-active, .a.top-active")) == null || o.classList.remove("top-active")), r && r.classList.add("top-active"), t.stopPropagation();
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
s.close(e);
|
|
114
|
-
}
|
|
115
|
-
if (t.target.matches(".top-popup-wrapper")) {
|
|
116
|
-
const e = t.target;
|
|
117
|
-
s.close(e);
|
|
125
|
+
p.getAttribute("href") === "." && t.preventDefault(), n.close(o);
|
|
118
126
|
}
|
|
119
127
|
}
|
|
120
128
|
/**
|
|
121
129
|
* Глобальный обработчик нажатия кнопки на клавиатуре
|
|
122
130
|
*/
|
|
123
131
|
static onkeydown(t) {
|
|
124
|
-
var
|
|
132
|
+
var i, s;
|
|
125
133
|
if (!(t.target instanceof HTMLElement)) return;
|
|
126
134
|
const p = t.target.closest(".top-popup-wrapper");
|
|
127
135
|
if (!p)
|
|
@@ -129,22 +137,22 @@ class y {
|
|
|
129
137
|
const o = p.querySelector("ul.top-popup_content");
|
|
130
138
|
switch (t.key) {
|
|
131
139
|
case "Escape":
|
|
132
|
-
|
|
140
|
+
n.close(p);
|
|
133
141
|
break;
|
|
134
142
|
case "Enter":
|
|
135
143
|
if (!o) {
|
|
136
|
-
if (
|
|
144
|
+
if (e.querySelectorVisible(p, ".preloader"))
|
|
137
145
|
break;
|
|
138
|
-
const u =
|
|
146
|
+
const u = e.querySelectorVisible(p, ".top-popup_footer .go, .top-popup_footer [data-action]");
|
|
139
147
|
if (u instanceof HTMLElement) {
|
|
140
148
|
u.click();
|
|
141
149
|
break;
|
|
142
150
|
}
|
|
143
|
-
|
|
144
|
-
m instanceof HTMLElement && m.click();
|
|
151
|
+
let m = e.querySelectorVisibleLast(p, ".top-popup_footer .top-button:focus");
|
|
152
|
+
m || (m = e.querySelectorVisibleLast(p, ".top-popup_footer .top-button")), m instanceof HTMLElement && m.click();
|
|
145
153
|
break;
|
|
146
154
|
}
|
|
147
|
-
const r =
|
|
155
|
+
const r = e.querySelectorVisible(p, "li > a.top-active");
|
|
148
156
|
r && r.getAttribute("href") && (t.preventDefault(), location.href = r.getAttribute("href"));
|
|
149
157
|
const a = p.querySelector("li > .top-active");
|
|
150
158
|
a instanceof HTMLElement && a.click();
|
|
@@ -156,25 +164,25 @@ class y {
|
|
|
156
164
|
case "ArrowLeft":
|
|
157
165
|
if (!o)
|
|
158
166
|
break;
|
|
159
|
-
t.key === "ArrowRight" || t.key === "ArrowLeft" ?
|
|
167
|
+
t.key === "ArrowRight" || t.key === "ArrowLeft" ? e.querySelectorVisible(
|
|
160
168
|
p,
|
|
161
169
|
"ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore"
|
|
162
170
|
) && t.preventDefault() : t.preventDefault();
|
|
163
|
-
const c = (
|
|
171
|
+
const c = (i = p.querySelector("ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active")) == null ? void 0 : i.parentElement;
|
|
164
172
|
if (t.key === "ArrowRight" && c) {
|
|
165
173
|
const u = c.querySelector(".top-active > .top-popup_listMore");
|
|
166
174
|
if (u instanceof HTMLElement)
|
|
167
175
|
return u.click();
|
|
168
176
|
}
|
|
169
|
-
const h =
|
|
177
|
+
const h = e.querySelectorAllVisible(p, "ul.top-popup_content > li:not(.top-popup_liNoSelectable)"), d = h.length;
|
|
170
178
|
if (!d)
|
|
171
179
|
return;
|
|
172
180
|
let l = -1;
|
|
173
181
|
if (c && (l = h.indexOf(c)), t.key === "ArrowUp" || t.key === "ArrowLeft" ? l-- : l++, t.key === "ArrowLeft" && l === -1)
|
|
174
|
-
return t.target.matches("input") ? void 0 :
|
|
182
|
+
return t.target.matches("input") ? void 0 : n.close(p);
|
|
175
183
|
if (t.key === "ArrowRight" && l === d)
|
|
176
184
|
return;
|
|
177
|
-
l < 0 && (l = d - 1), l > d - 1 && (l = 0), p.querySelectorAll("ul.top-popup_content > li > .top-active").forEach((u) => u.classList.remove("top-active")), (
|
|
185
|
+
l < 0 && (l = d - 1), l > d - 1 && (l = 0), p.querySelectorAll("ul.top-popup_content > li > .top-active").forEach((u) => u.classList.remove("top-active")), (s = h[l].querySelector(":scope > a, :scope > .a")) == null || s.classList.add("top-active"), n.scrollToActive(p);
|
|
178
186
|
break;
|
|
179
187
|
}
|
|
180
188
|
}
|
|
@@ -243,22 +251,22 @@ class v extends x {
|
|
|
243
251
|
super(), this.init(v.componentName, t, p);
|
|
244
252
|
}
|
|
245
253
|
async mount() {
|
|
246
|
-
var
|
|
254
|
+
var i, s;
|
|
247
255
|
if (!(this.el instanceof HTMLElement)) return;
|
|
248
256
|
const t = this.vueGetComponent();
|
|
249
|
-
if (this.el.closest(".top-popup-wrapper") && (this.popupParent =
|
|
250
|
-
this.type = "vue", this.options.popup = "", this.elPopup =
|
|
251
|
-
else if ((
|
|
257
|
+
if (this.el.closest(".top-popup-wrapper") && (this.popupParent = n.getPopup(this.el.closest(".top-popup-wrapper"))), await this.mountJQuery(), e.css(this.el, "position") !== "absolute" && (this.el.style.position = "relative"), this.el.dataset.topPopupOpened = "opened", this.elActiveByDefault = this.el.classList.contains("top-active"), this.el.classList.add("top-active"), t)
|
|
258
|
+
this.type = "vue", this.options.popup = "", this.elPopup = e.genEl("div", {}, this.options.popup);
|
|
259
|
+
else if ((i = this.options.popup) != null && i.match(/^[#.]/))
|
|
252
260
|
this.type = "selector", this.elPopup = document.querySelector(`${this.options.popup}.template`) || void 0;
|
|
253
261
|
else {
|
|
254
262
|
if (this.type = "html", this.options.useOriginal)
|
|
255
263
|
throw "Option useOriginal not allowed for text templates";
|
|
256
|
-
this.elPopup =
|
|
264
|
+
this.elPopup = e.genEl("div", {}, this.options.popup ?? "");
|
|
257
265
|
}
|
|
258
266
|
if (!this.elPopup || t != null && t.opened) {
|
|
259
267
|
if (this.options.useOriginal || t != null && t.opened) {
|
|
260
268
|
if (t != null && t.opened ? this.elPopup = t.popup.elPopup : this.elPopup = document.querySelector(`${this.options.popup}.top-popup-wrapper-shown`) || void 0, this.elPopup) {
|
|
261
|
-
this.el.dataset.topPopupOpened = "", this.elActiveByDefault || this.el.classList.remove("top-active"),
|
|
269
|
+
this.el.dataset.topPopupOpened = "", this.elActiveByDefault || this.el.classList.remove("top-active"), n.close(this.elPopup), setTimeout(() => this.mount(), this.options.transitionDuration);
|
|
262
270
|
return;
|
|
263
271
|
}
|
|
264
272
|
throw "Option useOriginal state allowed only elements .template";
|
|
@@ -267,9 +275,9 @@ class v extends x {
|
|
|
267
275
|
}
|
|
268
276
|
if (!this.elPopup)
|
|
269
277
|
return;
|
|
270
|
-
for (this.options.useOriginal ? (this.elStartPosition = this.elPopup.closest(".top-popup-el-start-position"), this.elStartPosition || (this.elStartPosition =
|
|
278
|
+
for (this.options.useOriginal ? (this.elStartPosition = this.elPopup.closest(".top-popup-el-start-position"), this.elStartPosition || (this.elStartPosition = e.wrap(this.elPopup, "i"), this.elStartPosition.classList.add("top-popup-el-start-position", "hidden"))) : (this.elPopup = this.elPopup.cloneNode(!0), this.type === "selector" && !this.elPopup.matches(".template") && (this.elPopup.classList.remove("hidden"), this.elPopup.querySelector(":scope > .top-popup_content") || this.elPopup.classList.add("top-popup_content"), this.elPopup = e.wrap(this.elPopup, "div")), this.type === "html" && (this.elPopup.querySelector(":scope > .top-popup_content") || (this.elPopup.classList.add("top-popup_content"), this.elPopup = e.wrap(this.elPopup, "div"))), (this.type === "selector" && !this.elPopup.matches(".template") || this.type === "html" || this.type === "vue") && (e.querySelectorAllArray(this.elPopup, "[data-top-popup]").forEach((r) => {
|
|
271
279
|
r instanceof HTMLElement && (r.dataset.topPopupPosBy = "fixed");
|
|
272
|
-
}),
|
|
280
|
+
}), e.querySelectorAllArray(this.elPopup, ".top-popup-wrapper").forEach((r) => r.remove()))), n.decoratorBeforeOpen(this), t && (this.options.class = t.classRef.value, t.transitionDurationRef.value !== void 0 && (this.options.transitionDuration = t.transitionDurationRef.value, this.elPopup instanceof HTMLElement && this.elPopup.style.setProperty(
|
|
273
281
|
"--top-popup-transition-delay",
|
|
274
282
|
this.options.transitionDuration + "ms"
|
|
275
283
|
))), this.elPopupInner = document.createElement("div"), this.elPopupInner.classList.add("top-popupPanel", "top-popup"); this.elPopup.firstChild; )
|
|
@@ -282,14 +290,14 @@ class v extends x {
|
|
|
282
290
|
const p = !!this.elPopup.querySelector('[data-widget="search"]');
|
|
283
291
|
if (this.options.isFullScreen && !p) {
|
|
284
292
|
const r = w();
|
|
285
|
-
!this.elPopupHeader && r.Common.Close && (this.elPopupHeader =
|
|
293
|
+
!this.elPopupHeader && r.Common.Close && (this.elPopupHeader = e.genEl("i", { class: "top-popup_header" }), this.elPopupInner.prepend(this.elPopupHeader), this.elPopupHeader.prepend(e.genEl("i", { class: "a closer" }, r.Common.Close)), this.elPopupHeader.append(e.genEl("i", { class: "top-popup_headerButton" })));
|
|
286
294
|
}
|
|
287
|
-
|
|
295
|
+
e.storage(this.elPopup, v.componentName, this), this.options.frontSelector && (this.elFront = document.querySelector(this.options.frontSelector)), this.elFront || (this.elFront = this.el.closest(".top-popup-front")), this.elFront || (this.elFront = document.body), this.elPopup instanceof HTMLElement && (this.elPopup.style.width = this.el.offsetWidth + "px", this.elPopup.style.height = this.el.offsetHeight + "px", this.elPopup.style.top = this.el.offsetTop + "px", this.elPopup.style.right = parseInt(this.el.style.right || "0") + "px", this.elPopup.style.bottom = parseInt(this.el.style.bottom || "0") + "px"), (s = this.el.parentElement) == null || s.insertBefore(this.elPopup, this.el), this.elPopup.classList.remove("template"), this.options.invertX && this.elPopup.classList.add("invert-x");
|
|
288
296
|
let o = !!this.el.closest(".modal-header");
|
|
289
297
|
o || (o = !!this.el.closest("#top_panel")), o || (o = !!this.el.closest("#secondmenu")), o && this.elPopup.classList.add("p-from-top"), setTimeout(() => {
|
|
290
298
|
var r;
|
|
291
299
|
return (r = this.elPopup) == null ? void 0 : r.classList.add("top-popup-wrapper-shown");
|
|
292
|
-
}), this.elFront && !this.elFront.matches("body") && (this.elFront.append(this.elPopup), this.shift.top =
|
|
300
|
+
}), this.elFront && !this.elFront.matches("body") && (this.elFront.append(this.elPopup), this.shift.top = e.offset(this.el).top - this.el.offsetTop - e.offset(this.elFront).top, this.shift.left = e.offset(this.el).left - this.el.offsetLeft - e.offset(this.elFront).left, this.shift.top -= parseInt(this.el.style["margin-top"] || 0), this.shift.left -= parseInt(this.el.style["margin-left"] || 0), this.elPopup instanceof HTMLElement && (this.elPopup.style.top = parseInt(this.elPopup.style.top || "0") + this.shift.top + "px", this.elPopup.style.left = parseInt(this.elPopup.style.left || "0") + this.shift.left + "px")), this.$ && f.$ && this.$.trigger("aftershow.top-menu-popup", [f.$(this.elPopup)]), this.recalcPosition(), this.elPopup.setAttribute("tabindex", "0"), this.focus(), n.decoratorAfterOpen(this), this.mountEvents();
|
|
293
301
|
}
|
|
294
302
|
async mountJQuery() {
|
|
295
303
|
f.$ && (this.$ = f.$(this.el));
|
|
@@ -299,7 +307,7 @@ class v extends x {
|
|
|
299
307
|
*/
|
|
300
308
|
focus() {
|
|
301
309
|
let t;
|
|
302
|
-
this.elPopup && (t =
|
|
310
|
+
this.elPopup && (t = e.querySelectorVisible(this.elPopup, ".top-popup-autofocus"), t || (t = e.querySelectorVisible(this.elPopup, ":read-write, select:not(:disabled)")), t || (t = e.querySelectorVisible(this.elPopup, ".top-popup_footer .top-button")), t || (t = this.elPopup), t instanceof HTMLElement && t.focus(), setTimeout(() => {
|
|
303
311
|
t instanceof HTMLElement && t.focus();
|
|
304
312
|
}, this.options.transitionDuration));
|
|
305
313
|
}
|
|
@@ -312,8 +320,8 @@ class v extends x {
|
|
|
312
320
|
onMousedown(t) {
|
|
313
321
|
if (!this.elPopup || !(t.target instanceof Element) || !this.isFirstClick || (this.isFirstClick = !1, setTimeout(() => this.isFirstClick = !0), t instanceof MouseEvent && t.button !== 0))
|
|
314
322
|
return;
|
|
315
|
-
let p =
|
|
316
|
-
p && p !== this.elPopup || t.target.closest(".top-popup-front") && (p =
|
|
323
|
+
let p = e.querySelectorVisibleLast(document.body, ":scope > .top-popup-wrapper");
|
|
324
|
+
p && p !== this.elPopup || t.target.closest(".top-popup-front") && (p = e.querySelectorVisibleLast(t.target.closest(".top-popup-front"), ":scope > .top-popup-wrapper"), p && p !== this.elPopup) || this.elPopup.contains(t.target) || this.elPopup.closest(".ui-dialog") && !t.target.closest(".ui-dialog") || n.decoratorIsIgnoreOuterClick(t) || n.close(this.elPopup);
|
|
317
325
|
}
|
|
318
326
|
/**
|
|
319
327
|
* Закрыть другие Popup при фокусе на элемент формы в текущем
|
|
@@ -321,9 +329,9 @@ class v extends x {
|
|
|
321
329
|
onFocus(t) {
|
|
322
330
|
if (t.target instanceof Element && t.target.matches("input") || this.isClosed)
|
|
323
331
|
return;
|
|
324
|
-
|
|
325
|
-
var
|
|
326
|
-
(
|
|
332
|
+
n.getAllVisible().forEach((o) => {
|
|
333
|
+
var i, s, r, a;
|
|
334
|
+
(i = this.elPopup) != null && i.contains(o) || ((s = this.popupParent) == null ? void 0 : s.elPopup) === o || ((a = (r = this.popupParent) == null ? void 0 : r.popupParent) == null ? void 0 : a.elPopup) === o || n.close(o);
|
|
327
335
|
});
|
|
328
336
|
}
|
|
329
337
|
/**
|
|
@@ -331,14 +339,14 @@ class v extends x {
|
|
|
331
339
|
*/
|
|
332
340
|
onMouseleave(t) {
|
|
333
341
|
setTimeout(() => {
|
|
334
|
-
this.elPopupInner && this.elPopupInner.matches(":hover") || !this.elPopup ||
|
|
342
|
+
this.elPopupInner && this.elPopupInner.matches(":hover") || !this.elPopup || n.close(this.elPopup);
|
|
335
343
|
}, 100);
|
|
336
344
|
}
|
|
337
345
|
/**
|
|
338
346
|
* Контроль положения Popup при fixed позиционировании
|
|
339
347
|
*/
|
|
340
348
|
onResize() {
|
|
341
|
-
this.elPopup && this.elPopup.parentElement !== document.body && document.body.append(this.elPopup), this.elPopup instanceof HTMLElement && (this.elPopup.style.top =
|
|
349
|
+
this.elPopup && this.elPopup.parentElement !== document.body && document.body.append(this.elPopup), this.elPopup instanceof HTMLElement && (this.elPopup.style.top = e.offset(this.el).top + "px", this.elPopup.style.left = e.offset(this.el).left + "px");
|
|
342
350
|
}
|
|
343
351
|
unmount() {
|
|
344
352
|
super.unmount(), this.el instanceof HTMLElement && (this.el.dataset.topPopupOpened = ""), this.elActiveByDefault || this.el.classList.remove("top-active");
|
|
@@ -365,35 +373,35 @@ class v extends x {
|
|
|
365
373
|
default:
|
|
366
374
|
(P = this.options.posBy) == null || P.append(this.elPopup);
|
|
367
375
|
}
|
|
368
|
-
const
|
|
369
|
-
this.elPopup.style.setProperty("--top-popup-height", this.elPopup.offsetHeight + "px"), this.elPopup.style.setProperty("--top-popup-right-bounding",
|
|
370
|
-
let
|
|
376
|
+
const i = this.elPopup.getBoundingClientRect();
|
|
377
|
+
this.elPopup.style.setProperty("--top-popup-height", this.elPopup.offsetHeight + "px"), this.elPopup.style.setProperty("--top-popup-right-bounding", i.right + "px"), this.elPopup.style.setProperty("--top-popup-bottom-bounding", i.bottom + "px"), this.elPopup.style.setProperty("--top-popup-top", i.top + "px"), this.elPopup.style.setProperty("--top-popup-left", i.left + "px"), this.elPopupInner instanceof HTMLElement && (this.elPopupInner.style.maxWidth = "unset", this.elPopupInner.style.maxHeight = "unset");
|
|
378
|
+
let s = !1, r = !1, a = !1, c = !1, h = i.left > window.innerWidth / 2, d = i.top > window.innerHeight / 2;
|
|
371
379
|
p === 4 && (h = !h), p === 1 && (d = !d);
|
|
372
380
|
const l = (b = this.elPopupInner) == null ? void 0 : b.getBoundingClientRect();
|
|
373
381
|
let u, m;
|
|
374
382
|
if (l) {
|
|
375
383
|
u = window.innerWidth - l.right, m = window.innerHeight - l.bottom;
|
|
376
384
|
const g = 8;
|
|
377
|
-
l.top < g && (
|
|
385
|
+
l.top < g && (s = !0), u < g && (r = !0), m < g && (a = !0), l.left < g && (c = !0);
|
|
378
386
|
}
|
|
379
|
-
|
|
387
|
+
s && (p === 0 || p === 1) && d && (p = 3), a && p === 3 && d && (p = 1), r && p === 2 && h && (p = 4), c && p === 4 && h && (p = 2), r && (p === 0 || p === 1 || p === 3) && this.elPopup.classList.add("invert-x"), a && (p === 2 || p === 4) && d && (p === 2 && !h && this.elPopup.classList.add("invert-y"), p === 4 && !h && this.elPopup.classList.add("invert-x"), this.elPopup.matches(".invert-y") || (p = 1)), this.elPopup.classList.remove("p0", "p1", "p2", "p3", "p4"), this.elPopup.classList.add("p" + p), this.elPopupInner instanceof HTMLElement && (this.elPopupInner.style.maxWidth = "", this.elPopupInner.style.maxHeight = ""), n.scrollToActive(this.elPopup);
|
|
380
388
|
}
|
|
381
389
|
onTouchmove(t) {
|
|
382
|
-
var p, o,
|
|
390
|
+
var p, o, i;
|
|
383
391
|
if (t.currentTarget instanceof HTMLElement && t.target instanceof HTMLElement) {
|
|
384
|
-
if (t.currentTarget.scrollWidth > t.currentTarget.offsetWidth || (p = t.target.parentElement) != null && p.scrollWidth && ((o = t.target.parentElement) != null && o.offsetWidth) && t.target.parentElement.scrollWidth > ((
|
|
392
|
+
if (t.currentTarget.scrollWidth > t.currentTarget.offsetWidth || (p = t.target.parentElement) != null && p.scrollWidth && ((o = t.target.parentElement) != null && o.offsetWidth) && t.target.parentElement.scrollWidth > ((i = t.target.parentElement) == null ? void 0 : i.offsetWidth))
|
|
385
393
|
return;
|
|
386
394
|
t.currentTarget.matches(".has_scroll") || t.preventDefault();
|
|
387
395
|
}
|
|
388
396
|
}
|
|
389
397
|
close() {
|
|
390
398
|
var t;
|
|
391
|
-
this.isClosed || (this.isClosed = !0, this.$ && f.$ && this.elPopup && this.$.trigger("afterclose.top-menu-popup", [f.$(this.elPopup)]), !
|
|
392
|
-
var
|
|
399
|
+
this.isClosed || (this.isClosed = !0, this.$ && f.$ && this.elPopup && this.$.trigger("afterclose.top-menu-popup", [f.$(this.elPopup)]), !n.noClose && (this.unmount(), (t = this.elPopup) == null || t.classList.add("top-popup-wrapper-closed"), setTimeout(() => {
|
|
400
|
+
var i, s, r, a, c;
|
|
393
401
|
if (this.vueClose(), !this.elPopup) return;
|
|
394
|
-
this.options.useOriginal ? (this.elPopup.removeAttribute("style"), this.elPopup.classList.remove("top-popup-wrapper-shown", "top-popup-wrapper-closed"), this.elPopup.classList.add("template"), (
|
|
395
|
-
const p =
|
|
396
|
-
o ?
|
|
402
|
+
this.options.useOriginal ? (this.elPopup.removeAttribute("style"), this.elPopup.classList.remove("top-popup-wrapper-shown", "top-popup-wrapper-closed"), this.elPopup.classList.add("template"), (i = this.elStartPosition) == null || i.append(this.elPopup), (s = this.elPopup.querySelector("div.top-popup_content.top-column")) == null || s.classList.remove("top-column"), (r = this.elPopup.querySelector(".notch-border")) == null || r.remove(), (a = this.elPopup.querySelector(".notch")) == null || a.remove(), (c = this.elPopupInner) == null || c.replaceWith(...this.elPopupInner.childNodes), e.storageClear(this.elPopup)) : (e.storageClear(this.elPopup), this.elPopup.remove(), delete this.elPopup);
|
|
403
|
+
const p = n.getAllVisible(), o = p.length && p[p.length - 1];
|
|
404
|
+
o ? n.getPopup(o).focus() : document.documentElement.classList.remove("with_popup");
|
|
397
405
|
}, this.options.transitionDuration)));
|
|
398
406
|
}
|
|
399
407
|
async vueOpen() {
|
|
@@ -406,11 +414,11 @@ class v extends x {
|
|
|
406
414
|
}
|
|
407
415
|
// получить vueConnectors компонента Popup
|
|
408
416
|
vueGetComponent() {
|
|
409
|
-
if (this.el instanceof HTMLElement && this.options.id) return
|
|
417
|
+
if (this.el instanceof HTMLElement && this.options.id) return n.vueConnectors.get(this.options.id);
|
|
410
418
|
}
|
|
411
419
|
}
|
|
412
420
|
y.init();
|
|
413
421
|
export {
|
|
414
422
|
v as TopLibPopup
|
|
415
423
|
};
|
|
416
|
-
//# sourceMappingURL=popup-
|
|
424
|
+
//# sourceMappingURL=popup-B_HmF7JW.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popup-B_HmF7JW.es.js","sources":["../../src/components/component.ts","../../src/components/popup/lib/popup.globalEvents.ts","../../src/components/popup/lib/popup.ts"],"sourcesContent":["import DOM from '@/core/utils/dom';\n\n/**\n * Базовый компонент для js компонентов, не имеет отношения к Vue\n */\nclass Component {\n\n\tstatic componentName = 'Top';\n\n\tcomponentName: string | undefined; // имя класса компонента\n\tclassName: string | undefined; // имя css класса компонента\n\tuid: string | undefined; // уникальный id компонента\n\tel: HTMLElement | undefined; // элемент, связанный с компонентом\n\toptions = {}; // параметры компонента\n\n\tunmountEls: HTMLElement[] = [];\n\tunmountEvents: any[] = [];\n\n\t// переопредлять нельзя\n\t// если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()\n\t// используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса\n\tinit(componentName: string, el: HTMLElement, options: object): Component | void {\n\t\tif (!el) {\n\t\t\tthrow componentName + ': el is undefined';\n\t\t}\n\n\t\tconst component = Component.getComponent(el, componentName);\n\n\t\tif (component) {\n\t\t\tcomponent.reInit(options);\n\n\t\t\treturn component;\n\t\t}\n\n\t\tthis.componentName = componentName;\n\t\tthis.className = 'top' + componentName[0].toUpperCase() + componentName.substring(1);\n\t\tthis.uid = this.componentName + (Math.random() + '').replace('.', '');\n\n\t\tthis._setComponent(el);\n\t\tthis.el = el;\n\t\tthis.el.classList.add(this.className);\n\t\tthis.options = Object.assign(this.options, options);\n\n\t\tthis.mount();\n\t}\n\n\t// получить инициированный компонент\n\tstatic getComponent(el: HTMLElement, componentName: string): any {\n\t\treturn DOM.storage(el, '#' + componentName);\n\t}\n\n\t// устанвоить компонент\n\t_setComponent(el: HTMLElement) {\n\t\tDOM.storage(el, '#' + this.componentName, this);\n\t}\n\n\t// функция подключения компонента\n\tmount(): void {\n\t\tthrow 'Please, add method mount() to component: ' + this.componentName;\n\t}\n\n\t// функция отключения компонента\n\tunmount(): void {\n\t\tDOM.storage(this.el, '#' + this.componentName, null);\n\n\t\tthis.unmountEls.forEach((el) => {\n\t\t\tel.remove();\n\t\t});\n\n\t\tthis.unmountEls = [];\n\n\t\tthis.unmountEvents.forEach((eventData) => {\n\t\t\teventData.el.removeEventListener(eventData.type, eventData.listener, eventData.options);\n\t\t});\n\n\t\tthis.unmountEvents = [];\n\t}\n\n\t// указание новые элементы, которые должны будут удалиться после unmount\n\tregisterElForUnmount(el: HTMLElement): void {\n\t\tthis.unmountEls.push(el);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\taddEventListenerWithUnmount(\n\t\tel: HTMLElement | Document | Window,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: HTMLElement, e: Event) => any,\n\t\toptions?: any,\n\t): void {\n\t\tel.addEventListener(type, listener, options);\n\n\t\tthis.registerEventForUnmount(el, type, listener, options);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\tregisterEventForUnmount(\n\t\tel: HTMLElement | Document | Window,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: HTMLElement, e: Event) => any,\n\t\toptions?: any,\n\t): void {\n\t\tconst eventData = {\n\t\t\tel: el,\n\t\t\ttype: type,\n\t\t\tlistener: listener,\n\t\t\toptions: options,\n\t\t};\n\n\t\tthis.unmountEvents.push(eventData);\n\t}\n\n\t// функция перенастройки уже подключенного компонента\n\treInit(_options: object): void {\n\t\tthrow 'Please, add method reInit() to component: ' + this.componentName;\n\t}\n\n\t// удалить элементы из DOM, но не из памяти\n\tstatic detach(nodes: NodeList | HTMLElement): void {\n\t\tif (nodes instanceof NodeList) {\n\t\t\tnodes.forEach((node) => node.parentElement?.removeChild(node));\n\t\t} else {\n\t\t\tconst el = nodes;\n\t\t\tel.parentElement?.removeChild(el);\n\t\t}\n\t}\n\n}\n\nexport default Component;\n","import Worker from '@/components/popup/lib/worker';\nimport DOM from '@/core/utils/dom';\n\n/**\n * Глобальные события, для реализации Popup\n * Автоматически инициируется при первой загрузке, не является выгружаемым модулем\n *\n * Если в меню встречает класс .preloader, то событие нажатия на кнопку через enter будет остановлено\n */\nclass GlobalEvents {\n\n\tprivate static isInited = false;\n\n\t/**\n\t * Добавить глобальные обработчики\n\t *\n\t * Добавляются на страницу один раз и навсегда\n\t */\n\tstatic init(): void {\n\t\tif (this.isInited) return;\n\n\t\tthis.isInited = true;\n\n\t\tdocument.addEventListener('click', this.onclickCapture, { capture: true });\n\t\tdocument.addEventListener('click', this.onclick);\n\t\tdocument.addEventListener('keydown', this.onkeydown);\n\t}\n\n\t/**\n\t * Глобальный обработчик захватов кликов\n\t *\n\t * Обрабатывает захватов клики внутри Popup\n\t */\n\tprivate static onclickCapture(e: Event): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t// меню\n\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\t// клик вне меню\n\t\tif (!elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик по кнопке открытия другого меню\n\t\tif (e.target.matches('[data-top-popup]')) {\n\t\t\t// список меню, в котором был сделан клик\n\t\t\tconst elUl = e.target.closest<HTMLElement>('ul');\n\n\t\t\t// // элемент меню, по которому был сделан клик\n\t\t\t// const elItem = e.target.closest<HTMLElement>('a, .a');\n\t\t\t//\n\t\t\t// // сделать элемент меню, по которому сделан клик активным\n\t\t\t// if (elUl) {\n\t\t\t// \telUl.querySelector('a.top-active, .a.top-active')?.classList.remove('top-active');\n\t\t\t// }\n\t\t\t//\n\t\t\t// if (elItem) {\n\t\t\t// \telItem.classList.add('top-active');\n\t\t\t// }\n\n\t\t\te.stopPropagation();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// клик по фону меню\n\t\tif (e.target.matches('.top-popup-wrapper')) {\n\t\t\tconst elPopup = e.target;\n\n\t\t\tWorker.close(elPopup);\n\n\t\t\te.stopPropagation();\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t *\n\t * Обрабатывает клики внутри Popup\n\t */\n\tprivate static onclick(e: Event): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t// элементы меню, клик по которым должен его закрыть\n\t\tconst elCloser = e.target.closest<HTMLElement>('.closer, a, .a, .top-button');\n\t\tif (elCloser) {\n\t\t\t// меню\n\t\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\t\t// клик вне меню\n\t\t\tif (!elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// элемент имеет модификатор, запрещаюущий закрытие меню по клику на него\n\t\t\tif (elCloser.matches('.top-popup-noCloser')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// deprecated, ссылки с href=\".\" запрещены, они должны быть заменены на .top-popup_listItem-button\n\t\t\tif (elCloser.getAttribute('href') === '.') {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\t// закрыть меню\n\t\t\tWorker.close(elPopup);\n\t\t}\n\t}\n\n\t/**\n\t * Глобальный обработчик нажатия кнопки на клавиатуре\n\t */\n\tprivate static onkeydown(e: KeyboardEvent): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\t// нажатие не в меню\n\t\tif (!elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector<HTMLElement>('ul.top-popup_content');\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tWorker.close(elPopup);\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\t// атоматическое нажатие кнопок при нажатии Enter\n\t\t\t\tif (!elUl) {\n\t\t\t\t\tif (DOM.querySelectorVisible(elPopup, '.preloader')) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// deprecated, старый код на сайте\n\t\t\t\t\tconst elBtn = DOM.querySelectorVisible(elPopup, '.top-popup_footer .go, .top-popup_footer [data-action]');\n\t\t\t\t\tif (elBtn instanceof HTMLElement) {\n\t\t\t\t\t\telBtn.click();\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Запуск клика последней кнопки, расположенной в footer'е Popup'а, нажатием клавиши Enter\n\t\t\t\t\tlet elFooterLastBtn = DOM.querySelectorVisibleLast(elPopup, '.top-popup_footer .top-button:focus');\n\t\t\t\t\tif (!elFooterLastBtn) elFooterLastBtn = DOM.querySelectorVisibleLast(elPopup, '.top-popup_footer .top-button');\n\t\t\t\t\tif (elFooterLastBtn instanceof HTMLElement) {\n\t\t\t\t\t\telFooterLastBtn.click();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// перейти по ссылке по нажатию на Enter\n\t\t\t\t// данный функуционал игнорирует SPA\n\t\t\t\tconst elLink = DOM.querySelectorVisible(elPopup, 'li > a.top-active');\n\t\t\t\tif (elLink && elLink.getAttribute('href')) {\n\t\t\t\t\t// фокус может находиться на другой ссылке\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tlocation.href = elLink.getAttribute('href')!;\n\t\t\t\t}\n\n\t\t\t\t// кликнуть по элементу меню по нажатию на Enter\n\t\t\t\tconst elItem = elPopup.querySelector<HTMLElement>('li > .top-active');\n\t\t\t\tif (elItem instanceof HTMLElement) {\n\t\t\t\t\telItem.click();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\t// управление стрелками\n\t\t\tcase 'ArrowUp':\n\t\t\tcase 'ArrowRight':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tif (!elUl) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n\t\t\t\t\tconst elMoreVisible = DOM.querySelectorVisible(\n\t\t\t\t\t\telPopup,\n\t\t\t\t\t\t'ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore',\n\t\t\t\t\t);\n\t\t\t\t\tif (elMoreVisible) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tconst elItemActive = elPopup.querySelector<HTMLElement>('ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active')?.parentElement;\n\n\t\t\t\t// есть подменю\n\t\t\t\tif (e.key === 'ArrowRight' && elItemActive) {\n\t\t\t\t\t// const elItemMoreActive = elItemActive.querySelector<HTMLElement>('[data-top-popup].top-active');\n\t\t\t\t\t// if (elItemMoreActive) {\n\t\t\t\t\t// \treturn elItemMoreActive.click();\n\t\t\t\t\t// }\n\n\t\t\t\t\tconst elMore = elItemActive.querySelector<HTMLElement>('.top-active > .top-popup_listMore');\n\t\t\t\t\tif (elMore instanceof HTMLElement) {\n\t\t\t\t\t\treturn elMore.click();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst elsLiVisible = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li:not(.top-popup_liNoSelectable)');\n\t\t\t\tconst countLi = elsLiVisible.length;\n\n\t\t\t\tif (!countLi) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet index = -1;\n\t\t\t\tif (elItemActive) {\n\t\t\t\t\tindex = elsLiVisible.indexOf(elItemActive);\n\t\t\t\t}\n\n\t\t\t\tif (e.key === 'ArrowUp' || e.key === 'ArrowLeft') {\n\t\t\t\t\tindex--;\n\t\t\t\t} else {\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\n\t\t\t\t// это первый элемен, \"Назад\" должен закрывать окно\n\t\t\t\tif (e.key === 'ArrowLeft' && index === -1) {\n\t\t\t\t\tif (e.target.matches('input')) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Worker.close(elPopup);\n\t\t\t\t}\n\n\t\t\t\t// это последний элемен, \"Вперед\" не должен ни чего делать\n\t\t\t\tif (e.key === 'ArrowRight' && index === countLi) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = countLi - 1;\n\t\t\t\t}\n\n\t\t\t\tif (index > countLi - 1) {\n\t\t\t\t\tindex = 0;\n\t\t\t\t}\n\n\t\t\t\telPopup.querySelectorAll('ul.top-popup_content > li > .top-active').forEach(el => el.classList.remove('top-active'));\n\t\t\t\telsLiVisible[index].querySelector(':scope > a, :scope > .a')?.classList.add('top-active');\n\n\t\t\t\tWorker.scrollToActive(elPopup);\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nexport default GlobalEvents;\n","import Core from '@/core/core/core';\nimport Component from '@/components/component';\nimport DOM from '@/core/utils/dom';\nimport Worker from '@/components/popup/lib/worker';\nimport GlobalEvents from '@/components/popup/lib/popup.globalEvents';\n\nimport css from '@/components/popup/popup/style/popup.css?inline';\nimport cssM from '@/components/popup/popup/style/popup.m.css?inline';\nimport cssPC from '@/components/popup/popup/style/popup.pc.css?inline';\nimport { useI18n } from '@/core/plugins/i18n';\n\nCore.insertStyleToPage(css);\nCore.insertStyleToPage(cssM, 'm');\nCore.insertStyleToPage(cssPC, 'pc');\n\nexport interface PopupOptions {\n\tpopup?: string,\n\tid?: string,\n\tp?: number,\n\tnotch?: boolean,\n\tclass?: string,\n\tposBy?: 'left' | 'right' | 'fixed' | Element,\n\tfrontSelector?: string,\n\tinvertX?: boolean,\n\topenByHover?: boolean,\n\tuseOriginal?: boolean,\n\ttransitionDuration?: number,\n\tisFullScreen?: boolean,\n}\n\n/**\n * Основной объект js компонента TopPopup\n *\n * Добавляет jQuery события на this.el, если jQuery загружен:\n *\n * - aftershow.top-menu-popup\n * - afterclose.top-menu-popup\n */\nexport class TopLibPopup extends Component {\n\n\tstatic componentName = 'TopPopup';\n\n\tdeclare el: HTMLElement; // элемент, вызвавший открытие Popup\n\telActiveByDefault: boolean | undefined; // элемент уже имеет класс top-active перед открытием окна\n\telPopup: HTMLElement | undefined; // Popup .top-popup-wrapper\n\telPopupInner: HTMLElement | undefined; // контентная часть Popup .top-popup\n\telPopupHeader: HTMLElement | undefined | null;\n\telPopupWidget: HTMLElement | undefined | null;\n\telPopupBody: HTMLElement | undefined | null;\n\telPopupFooter: HTMLElement | undefined | null;\n\telFront: HTMLElement | undefined | null;\n\n\tpopupParent: TopLibPopup | undefined;\n\n\t$: JQuery<HTMLElement> | undefined; // только, если есть jQuery\n\n\telStartPosition: HTMLElement | undefined | null; // используется для useOriginal\n\tshift = {\n\t\ttop: 0,\n\t\tleft: 0,\n\t};\n\tisClosed = false; // флаг того, что меню закрыто\n\tisFirstClick = true;\n\ttype: string | undefined; // selector или html\n\n\toptions: PopupOptions = {\n\t\tpopup: '', // selector, text\n\t\tp: 0, // положение меню (0 - над элементом, 1 - сверху, 2 - справа, 3 - снизу, 4 слева)\n\t\tnotch: false, // отображать ли клювик\n\n\t\tclass: '', // класс, добавляемый меню\n\n\t\tposBy: 'left', // способ привязки позиционирования меню (left/right - левый/правый край родителя, fixed - по документу)\n\t\tfrontSelector: '',\n\t\tinvertX: false, // базовая ордината - правая граница элемента, а не левая\n\t\topenByHover: false, // открывать при наведении\n\n\t\tuseOriginal: false, // использовать оригинальный шаблон, без клонирвоания (для сохранения состояния меню)\n\n\t\ttransitionDuration: 100, // значение прописано в css\n\n\t\tisFullScreen: false,\n\t};\n\n\tevents = {};\n\n\t/**\n\t * Создать Popup\n\t * @param el - элемент, открывающий меню\n\t * @param options\n\t */\n\tconstructor(el: HTMLElement, options: PopupOptions) {\n\t\tsuper();\n\n\t\tthis.init(TopLibPopup.componentName, el, options);\n\t}\n\n\tasync mount(): Promise<void> {\n\t\tif (!(this.el instanceof HTMLElement)) return;\n\t\tconst vueConnector = this.vueGetComponent();\n\n\t\tif (this.el.closest('.top-popup-wrapper')) this.popupParent = Worker.getPopup(this.el.closest('.top-popup-wrapper')!);\n\n\t\tawait this.mountJQuery();\n\n\t\tif (DOM.css(this.el, 'position') !== 'absolute') {\n\t\t\tthis.el.style.position = 'relative';\n\t\t}\n\n\t\tthis.el.dataset.topPopupOpened = 'opened';\n\t\tthis.elActiveByDefault = this.el.classList.contains('top-active');\n\t\tthis.el.classList.add('top-active');\n\n\t\tif (vueConnector) {\n\t\t\t// компонент vue Popup\n\t\t\tthis.type = 'vue';\n\n\t\t\tthis.options.popup = '';\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup);\n\t\t} else if (this.options.popup?.match(/^[#.]/)) {\n\t\t\t// selector\n\t\t\tthis.type = 'selector';\n\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}.template`) || undefined;\n\t\t} else {\n\t\t\t// html\n\t\t\tthis.type = 'html';\n\n\t\t\tif (this.options.useOriginal) {\n\t\t\t\tthrow ('Option useOriginal not allowed for text templates');\n\t\t\t}\n\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup ?? '');\n\t\t}\n\n\t\tif (!this.elPopup || vueConnector?.opened) {\n\t\t\t// возможно шаблон не найден, так как он используется в уже открытом меню\n\t\t\tif (this.options.useOriginal || vueConnector?.opened) {\n\t\t\t\t// закрыть открытое меню\n\t\t\t\tif (vueConnector?.opened) {\n\t\t\t\t\tthis.elPopup = vueConnector.popup.elPopup;\n\t\t\t\t} else {\n\t\t\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}.top-popup-wrapper-shown`) || undefined;\n\t\t\t\t}\n\n\t\t\t\tif (this.elPopup) {\n\t\t\t\t\tthis.el.dataset.topPopupOpened = '';\n\n\t\t\t\t\tif (!this.elActiveByDefault) {\n\t\t\t\t\t\tthis.el.classList.remove('top-active');\n\t\t\t\t\t}\n\n\t\t\t\t\tWorker.close(this.elPopup);\n\n\t\t\t\t\t// повторит попытку открыть меню\n\t\t\t\t\tsetTimeout(() => this.mount(), this.options.transitionDuration);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow ('Option useOriginal state allowed only elements .template');\n\t\t\t}\n\n\t\t\t// возможно вместо шаблона используется другой элемент\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}:not(.top-popup-wrapper)`) || undefined;\n\t\t}\n\n\t\tif (!this.elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.useOriginal) {\n\t\t\tthis.elStartPosition = this.elPopup.closest<HTMLElement>('.top-popup-el-start-position');\n\t\t\tif (!this.elStartPosition) {\n\t\t\t\tthis.elStartPosition = DOM.wrap(this.elPopup, 'i');\n\t\t\t\tthis.elStartPosition.classList.add('top-popup-el-start-position', 'hidden');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.elPopup = this.elPopup.cloneNode(true) as HTMLElement;\n\n\t\t\t// вывод в меню копии произвольного элемента\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template')) {\n\t\t\t\tthis.elPopup.classList.remove('hidden');\n\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\n\t\t\t\t}\n\n\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\n\t\t\t}\n\n\t\t\tif (this.type === 'html') {\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\n\n\t\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// вложенный Popup\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template') || this.type === 'html' || this.type === 'vue') {\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '[data-top-popup]').forEach(el => {\n\t\t\t\t\tif (el instanceof HTMLElement) el.dataset.topPopupPosBy = 'fixed';\n\t\t\t\t});\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '.top-popup-wrapper').forEach(el => el.remove());\n\t\t\t}\n\t\t}\n\n\t\tWorker.decoratorBeforeOpen(this);\n\n\t\tif (vueConnector) {\n\t\t\tthis.options.class = vueConnector.classRef.value;\n\t\t\tif (vueConnector.transitionDurationRef.value !== undefined) {\n\t\t\t\tthis.options.transitionDuration = vueConnector.transitionDurationRef.value;\n\n\t\t\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\t\t\tthis.elPopup.style.setProperty(\n\t\t\t\t\t\t'--top-popup-transition-delay',\n\t\t\t\t\t\tthis.options.transitionDuration + 'ms',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.elPopupInner = document.createElement('div');\n\t\tthis.elPopupInner.classList.add('top-popupPanel', 'top-popup');\n\n\t\twhile (this.elPopup.firstChild) {\n\t\t\tthis.elPopupInner.appendChild(this.elPopup.firstChild);\n\t\t}\n\n\t\tthis.elPopup.append(this.elPopupInner);\n\n\t\tthis.elPopup.classList.add('top-popup-wrapper');\n\n\t\tif (this.options.class) {\n\t\t\tconst classes = this.options.class.split(' ');\n\t\t\tthis.elPopup.classList.add(...classes);\n\t\t}\n\n\t\tif (this.options.notch) {\n\t\t\tthis.elPopup.classList.add('with_notch');\n\t\t\tthis.elPopup.insertAdjacentHTML('beforeend', '<i class=\"notch notch-border\"></i><i class=\"notch\"></i>');\n\t\t}\n\n\t\tawait this.vueOpen();\n\n\t\tthis.elPopupHeader = this.elPopupInner.querySelector<HTMLElement>('.top-popup_header');\n\t\tthis.elPopupWidget = this.elPopupInner.querySelector<HTMLElement>('.top-popup_widget');\n\t\tthis.elPopupBody = this.elPopupInner.querySelector<HTMLElement>('.top-popup_content');\n\t\tthis.elPopupFooter = this.elPopupInner.querySelector<HTMLElement>('.top-popup_footer');\n\n\t\tconst existsWidgetSearch = !!this.elPopup.querySelector('[data-widget=\"search\"]');\n\n\t\tif (this.options.isFullScreen && !existsWidgetSearch) {\n\t\t\tconst i18n = useI18n();\n\n\t\t\tif (!this.elPopupHeader && i18n.Common.Close) {\n\t\t\t\tthis.elPopupHeader = DOM.genEl('i', { class: 'top-popup_header' });\n\t\t\t\tthis.elPopupInner.prepend(this.elPopupHeader);\n\n\t\t\t\tthis.elPopupHeader.prepend(DOM.genEl('i', { class: 'a closer' }, i18n.Common.Close));\n\t\t\t\tthis.elPopupHeader.append(DOM.genEl('i', { class: 'top-popup_headerButton' }));\n\t\t\t}\n\t\t}\n\n\t\tDOM.storage(this.elPopup, TopLibPopup.componentName, this);\n\n\t\tif (this.options.frontSelector) {\n\t\t\tthis.elFront = document.querySelector<HTMLElement>(this.options.frontSelector);\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = this.el.closest<HTMLElement>('.top-popup-front');\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = document.body;\n\t\t}\n\n\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.width = this.el.offsetWidth + 'px';\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\t\t\tthis.elPopup.style.top = this.el.offsetTop + 'px';\n\t\t\tthis.elPopup.style.right = parseInt(this.el.style.right || '0') + 'px';\n\t\t\tthis.elPopup.style.bottom = parseInt(this.el.style.bottom || '0') + 'px';\n\t\t}\n\n\t\tthis.el.parentElement?.insertBefore(this.elPopup, this.el);\n\t\tthis.elPopup.classList.remove('template');\n\n\t\tif (this.options.invertX) {\n\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t}\n\n\t\tlet fromTop = !!this.el.closest('.modal-header');\n\t\tif (!fromTop) {\n\t\t\tfromTop = !!this.el.closest('#top_panel');\n\t\t}\n\t\tif (!fromTop) {\n\t\t\tfromTop = !!this.el.closest('#secondmenu');\n\t\t}\n\t\tif (fromTop) {\n\t\t\tthis.elPopup.classList.add('p-from-top');\n\t\t}\n\n\t\t// появление с анимацией\n\t\tsetTimeout(() => this.elPopup?.classList.add('top-popup-wrapper-shown'));\n\n\t\tif (this.elFront && !this.elFront.matches('body')) {\n\t\t\tthis.elFront.append(this.elPopup);\n\n\t\t\tthis.shift.top = DOM.offset(this.el).top - this.el.offsetTop - DOM.offset(this.elFront).top;\n\t\t\tthis.shift.left = DOM.offset(this.el).left - this.el.offsetLeft - DOM.offset(this.elFront).left;\n\n\t\t\t// position() не учитывает margin, замечено для flex\n\t\t\tthis.shift.top -= parseInt(this.el.style['margin-top'] || 0);\n\t\t\tthis.shift.left -= parseInt(this.el.style['margin-left'] || 0);\n\n\t\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\t\tthis.elPopup.style.top = parseInt(this.elPopup.style.top || '0') + this.shift.top + 'px';\n\t\t\t\tthis.elPopup.style.left = parseInt(this.elPopup.style.left || '0') + this.shift.left + 'px';\n\t\t\t}\n\t\t}\n\n\t\tif (this.$ && Core.$) {\n\t\t\tthis.$.trigger('aftershow.top-menu-popup', [Core.$(this.elPopup)]);\n\t\t}\n\n\t\tthis.recalcPosition();\n\n\t\tthis.elPopup.setAttribute('tabindex', '0');\n\t\tthis.focus();\n\n\t\tWorker.decoratorAfterOpen(this);\n\n\t\tthis.mountEvents();\n\t}\n\n\tasync mountJQuery() {\n\t\tif (!Core.$) return;\n\n\t\tthis.$ = Core.$(this.el);\n\t}\n\n\t/**\n\t * Выполнить фокусировку на нужный элемент после открытия окна\n\t */\n\tfocus(): void {\n\t\tlet el: Element | null;\n\n\t\tif (this.elPopup) {\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup-autofocus');\n\n\t\t\t// поле ввода\n\t\t\tif (!el) {\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, ':read-write, select:not(:disabled)');\n\t\t\t}\n\n\t\t\t// кнопка\n\t\t\tif (!el) {\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup_footer .top-button');\n\t\t\t}\n\n\t\t\tif (!el) {\n\t\t\t\tel = this.elPopup;\n\t\t\t}\n\n\t\t\t// выполнить фокусировку сразу, для применения необъодимых стилей\n\t\t\tif (el instanceof HTMLElement) el.focus();\n\n\t\t\t// выполнить фокусировку после завершения анимации открытия popup\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (el instanceof HTMLElement) el.focus();\n\t\t\t}, this.options.transitionDuration);\n\t\t}\n\t}\n\n\tmountEvents(): void {\n\t\t// закрытие при клике вне контекстного меню\n\t\tthis.addEventListenerWithUnmount(document, 'mousedown', (e) => this.onMousedown(e as MouseEvent));\n\n\t\tif (this.elPopup && this.elPopupInner) {\n\t\t\t// закрыть другие меню\n\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'focus', (e) => this.onFocus(e as FocusEvent));\n\n\t\t\t// автоматическое закрытие при отведении мыши\n\t\t\tif (this.options.openByHover) {\n\t\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\n\t\t\t\tthis.addEventListenerWithUnmount(this.elPopupInner, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\n\t\t\t}\n\t\t}\n\n\t\t// не скроллить страницу\n\t\tif (this.options.isFullScreen && this.elPopupBody) {\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupBody, 'touchmove', (e) => this.onTouchmove(e as TouchEvent));\n\t\t}\n\t}\n\n\t/**\n\t * Обработка клика вне окна\n\t */\n\tprivate onMousedown(e: MouseEvent): void {\n\t\t// // не оригинальное событие\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\n\t\t// \treturn;\n\t\t// }\n\n\t\t// Popup уже закрыт\n\t\tif (!this.elPopup || !(e.target instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик на внешнем элементе\n\t\tif (!this.isFirstClick) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isFirstClick = false;\n\t\tsetTimeout(() => this.isFirstClick = true);\n\n\t\t// клик не основной кнопкой мыши\n\t\tif (e instanceof MouseEvent && e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// открыто другое меню с posBy = fixed, сначала должно быть закрыто оно\n\t\tlet elPopupOpened = DOM.querySelectorVisibleLast(document.body, ':scope > .top-popup-wrapper');\n\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\t// открыто другое меню в top-popup-front, сначала должно быть закрыто оно\n\t\tif (e.target.closest('.top-popup-front')) {\n\t\t\telPopupOpened = DOM.querySelectorVisibleLast(e.target.closest('.top-popup-front')!, ':scope > .top-popup-wrapper');\n\n\t\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// клик внутри этого меню\n\t\tif (this.elPopup.contains(e.target)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик вне родительского диалогового окна\n\t\tif (this.elPopup.closest('.ui-dialog') && !e.target.closest('.ui-dialog')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Worker.decoratorIsIgnoreOuterClick(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tWorker.close(this.elPopup);\n\t}\n\n\t/**\n\t * Закрыть другие Popup при фокусе на элемент формы в текущем\n\t */\n\tprivate onFocus(e: FocusEvent): void {\n\t\tif (e.target instanceof Element && e.target.matches('input')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// // не оригинальное событие\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\n\t\t// \treturn;\n\t\t// }\n\n\t\t// это окно уже закрывается\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elsPopups = Worker.getAllVisible();\n\t\telsPopups.forEach(elPopup => {\n\t\t\t// фокус внутри этого окна\n\t\t\tif (this.elPopup?.contains(elPopup)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// это Popup из которого был открыт Popup с фокусом\n\t\t\t// глубина вложенности: до 3 подменю\n\t\t\tif (\n\t\t\t\tthis.popupParent?.elPopup === elPopup ||\n\t\t\t\tthis.popupParent?.popupParent?.elPopup === elPopup\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.close(elPopup);\n\t\t});\n\t}\n\n\t/**\n\t * Закрыть Popup при отведении мыши\n\t */\n\tprivate onMouseleave(_e: MouseEvent): void {\n\t\tsetTimeout(() => {\n\t\t\tif (this.elPopupInner && this.elPopupInner.matches(':hover') || !this.elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.close(this.elPopup);\n\t\t}, 100);\n\t}\n\n\t/**\n\t * Контроль положения Popup при fixed позиционировании\n\t */\n\tprivate onResize(): void {\n\t\t// на android при вызове метода append сбрасывается фокус с input внутри this.elPopup\n\t\tif (this.elPopup && this.elPopup.parentElement !== document.body) {\n\t\t\tdocument.body.append(this.elPopup);\n\t\t}\n\n\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.top = DOM.offset(this.el).top + 'px';\n\t\t\tthis.elPopup.style.left = DOM.offset(this.el).left + 'px';\n\t\t}\n\t}\n\n\tunmount(): void {\n\t\tsuper.unmount();\n\n\t\tif (this.el instanceof HTMLElement) this.el.dataset.topPopupOpened = '';\n\t\tif (!this.elActiveByDefault) {\n\t\t\tthis.el.classList.remove('top-active');\n\t\t}\n\n\t\tlet style = this.el.getAttribute('style');\n\t\tif (style) {\n\t\t\tstyle = style.replace(/position:[^;]*;?/g, '');\n\t\t\tthis.el.setAttribute('style', style);\n\t\t}\n\t}\n\n\t// контроль за положением Popup, чтобы оно не вылезало за пределы документа\n\trecalcPosition(pForce?: typeof this.options.p): void {\n\t\tif (!(this.elPopup instanceof HTMLElement)) return;\n\n\t\tlet p = pForce ?? this.options.p;\n\t\tlet leftPos: number;\n\n\t\tif (this.el instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\n\t\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\t\tthis.elPopup.classList.add('p' + p);\n\n\t\t\tswitch (this.options.posBy) {\n\t\t\t\tcase 'left':\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\n\t\t\t\t\tleftPos += this.shift.left;\n\t\t\t\t\tthis.elPopup.style.left = leftPos + 'px';\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'right':\n\t\t\t\t\tif (!(this.el.offsetParent instanceof HTMLElement)) break;\n\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\n\t\t\t\t\tthis.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - leftPos + 'px';\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'fixed':\n\t\t\t\t\tthis.addEventListenerWithUnmount(window, 'resize', () => this.onResize());\n\n\t\t\t\t\tthis.onResize();\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.options.posBy?.append(this.elPopup);\n\t\t\t}\n\t\t}\n\n\t\t// контроль за пложением Popup, чтобы оно не вылезало за пределы документа\n\t\tconst boundingClientRect = this.elPopup.getBoundingClientRect();\n\t\tthis.elPopup.style.setProperty('--top-popup-height', this.elPopup.offsetHeight + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-right-bounding', boundingClientRect.right + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-bottom-bounding', boundingClientRect.bottom + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-top', boundingClientRect.top + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-left', boundingClientRect.left + 'px');\n\n\t\tif (this.elPopupInner instanceof HTMLElement) {\n\t\t\tthis.elPopupInner.style.maxWidth = 'unset';\n\t\t\tthis.elPopupInner.style.maxHeight = 'unset';\n\t\t}\n\n\t\tlet outTop = false;\n\t\tlet outRight = false;\n\t\tlet outBottom = false;\n\t\tlet outLeft = false;\n\n\t\t// имеет ли смысл прикреплять окно к другой стороне кнопки\n\t\tlet usefulInvertX = boundingClientRect.left > window.innerWidth / 2;\n\t\tlet usefulInvertY = boundingClientRect.top > window.innerHeight / 2;\n\n\t\tif (p === 4) {\n\t\t\tusefulInvertX = !usefulInvertX;\n\t\t}\n\n\t\tif (p === 1) {\n\t\t\tusefulInvertY = !usefulInvertY;\n\t\t}\n\n\t\tconst contentBoundingClientRect = this.elPopupInner?.getBoundingClientRect();\n\n\t\tlet contentRight: number;\n\t\tlet contentBottom: number;\n\n\t\tif (contentBoundingClientRect) {\n\t\t\tcontentRight = window.innerWidth - contentBoundingClientRect.right;\n\t\t\tcontentBottom = window.innerHeight - contentBoundingClientRect.bottom;\n\n\t\t\tconst margin = 8;\n\n\t\t\tif (contentBoundingClientRect.top < margin) {\n\t\t\t\toutTop = true;\n\t\t\t}\n\n\t\t\tif (contentRight < margin) {\n\t\t\t\toutRight = true;\n\t\t\t}\n\n\t\t\tif (contentBottom < margin) {\n\t\t\t\toutBottom = true;\n\t\t\t}\n\n\t\t\tif (contentBoundingClientRect.left < margin) {\n\t\t\t\toutLeft = true;\n\t\t\t}\n\t\t}\n\n\t\tif (outTop && (p === 0 || p === 1) && usefulInvertY) {\n\t\t\tp = 3;\n\t\t}\n\n\t\tif (outBottom && p === 3 && usefulInvertY) {\n\t\t\tp = 1;\n\t\t}\n\n\t\tif (outRight && p === 2 && usefulInvertX) {\n\t\t\tp = 4;\n\t\t}\n\n\t\tif (outLeft && p === 4 && usefulInvertX) {\n\t\t\tp = 2;\n\t\t}\n\n\t\tif (outRight && (p === 0 || p === 1 || p === 3)) {\n\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t}\n\n\t\tif (outBottom && (p === 2 || p === 4) && usefulInvertY) {\n\t\t\t// меню справа может перемещаться вверх, толкьо если есть место слева\n\t\t\tif (p === 2 && !usefulInvertX) {\n\t\t\t\tthis.elPopup.classList.add('invert-y');\n\t\t\t}\n\n\t\t\t// меню слева перемещаясь вверх, должно открываться влево\n\t\t\tif (p === 4 && !usefulInvertX) {\n\t\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t\t}\n\n\t\t\tif (!this.elPopup.matches('.invert-y')) {\n\t\t\t\tp = 1;\n\t\t\t}\n\t\t}\n\n\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\tthis.elPopup.classList.add('p' + p);\n\n\t\tif (this.elPopupInner instanceof HTMLElement) {\n\t\t\tthis.elPopupInner.style.maxWidth = '';\n\t\t\tthis.elPopupInner.style.maxHeight = '';\n\t\t}\n\n\t\t// if (this.elPopupBody instanceof HTMLElement) {\n\t\t// \t// отобразить popup по вертикали с другой стороны, если с другой стороны больше места\n\t\t// \tconst hasScroll = this.elPopupBody.offsetHeight < this.elPopupBody.scrollHeight;\n\t\t// \tvd(this.elPopupBody.scrollHeight);\n\t\t// \tvd(this.elPopupBody.offsetHeight);\n\t\t// \tif (hasScroll && pForce === undefined) {\n\t\t// \t\tconst contentBoundingClientRect = this.elPopupBody?.getBoundingClientRect();\n\t\t// \t\tif (\n\t\t// \t\t\tp === 1 && contentBoundingClientRect.top * 2 < contentBoundingClientRect.bottom ||\n\t\t// \t\t\tp === 3 && contentBoundingClientRect.bottom * 2 < contentBoundingClientRect.top\n\t\t// \t\t) {\n\t\t// \t\t\tthis.recalcPosition(p === 1 ? 3 : 1);\n\t\t//\n\t\t// \t\t\treturn;\n\t\t// \t\t}\n\t\t// \t}\n\t\t// }\n\n\t\tWorker.scrollToActive(this.elPopup);\n\t};\n\n\tonTouchmove(e: TouchEvent): void {\n\t\tif (e.currentTarget instanceof HTMLElement && e.target instanceof HTMLElement) {\n\t\t\t// разрешить горизональный скролл\n\t\t\tlet hasScrollX = e.currentTarget.scrollWidth > e.currentTarget.offsetWidth;\n\t\t\tif (hasScrollX) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.target.parentElement?.scrollWidth && e.target.parentElement?.offsetWidth) {\n\t\t\t\t// разрешить горизональный скролл\n\t\t\t\tlet hasScrollX2 = e.target.parentElement.scrollWidth > e.target.parentElement?.offsetWidth;\n\t\t\t\tif (hasScrollX2) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!e.currentTarget.matches('.has_scroll')) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isClosed = true;\n\n\t\tif (this.$ && Core.$ && this.elPopup) {\n\t\t\tthis.$.trigger('afterclose.top-menu-popup', [Core.$(this.elPopup)]);\n\t\t}\n\n\t\tif (Worker.noClose) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.unmount();\n\n\t\tthis.elPopup?.classList.add('top-popup-wrapper-closed');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.vueClose();\n\n\t\t\tif (!this.elPopup) return;\n\n\t\t\tif (this.options.useOriginal) {\n\t\t\t\tthis.elPopup.removeAttribute('style');\n\t\t\t\tthis.elPopup.classList.remove('top-popup-wrapper-shown', 'top-popup-wrapper-closed');\n\t\t\t\tthis.elPopup.classList.add('template');\n\t\t\t\tthis.elStartPosition?.append(this.elPopup);\n\n\t\t\t\tthis.elPopup.querySelector('div.top-popup_content.top-column')?.classList.remove('top-column');\n\t\t\t\tthis.elPopup.querySelector('.notch-border')?.remove();\n\t\t\t\tthis.elPopup.querySelector('.notch')?.remove();\n\n\t\t\t\tthis.elPopupInner?.replaceWith(...this.elPopupInner.childNodes);\n\n\t\t\t\tDOM.storageClear(this.elPopup);\n\t\t\t} else {\n\t\t\t\tDOM.storageClear(this.elPopup);\n\n\t\t\t\tthis.elPopup.remove();\n\t\t\t\tdelete this.elPopup;\n\t\t\t}\n\n\t\t\tconst elsPopups = Worker.getAllVisible();\n\t\t\tconst elPopupLast = elsPopups.length && elsPopups[elsPopups.length - 1];\n\n\t\t\tif (elPopupLast) {\n\t\t\t\tWorker.getPopup(elPopupLast).focus();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement.classList.remove('with_popup');\n\t\t\t}\n\t\t}, this.options.transitionDuration);\n\t}\n\n\tasync vueOpen(): Promise<void> {\n\t\tawait this.vueGetComponent()?.onOpen(this);\n\t}\n\n\tvueClose(): void {\n\t\tthis.vueGetComponent()?.onClose(this);\n\t}\n\n\t// получить vueConnectors компонента Popup\n\tvueGetComponent() {\n\t\tif (this.el instanceof HTMLElement && this.options.id) return Worker.vueConnectors.get(this.options.id);\n\t}\n}\n\nGlobalEvents.init();\n"],"names":["Component","componentName","el","options","component","DOM","eventData","type","listener","_options","nodes","node","_a","GlobalEvents","e","elPopup","Worker","elCloser","elUl","elBtn","elFooterLastBtn","elLink","elItem","elItemActive","elMore","elsLiVisible","countLi","index","_b","Core","css","cssM","cssPC","TopLibPopup","vueConnector","classes","existsWidgetSearch","i18n","useI18n","fromTop","elPopupOpened","_d","_c","_e","style","pForce","leftPos","boundingClientRect","outTop","outRight","outBottom","outLeft","usefulInvertX","usefulInvertY","contentBoundingClientRect","contentRight","contentBottom","margin","elsPopups","elPopupLast"],"mappings":"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"}
|