@topvisor/ui 1.0.16 → 1.0.18-autofocus-3

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 (196) hide show
  1. package/.chunks/{datepicker-DW_EVh8-.amd.js → datepicker-2XyFBnpB.amd.js} +2 -2
  2. package/.chunks/{datepicker-DW_EVh8-.amd.js.map → datepicker-2XyFBnpB.amd.js.map} +1 -1
  3. package/.chunks/{datepicker-CDFryb2R.es.js → datepicker-CUB0U_lQ.es.js} +2 -2
  4. package/.chunks/{datepicker-CDFryb2R.es.js.map → datepicker-CUB0U_lQ.es.js.map} +1 -1
  5. package/.chunks/forms-CgS7En_e.amd.js +3 -0
  6. package/.chunks/{forms-CORLOoYZ.amd.js.map → forms-CgS7En_e.amd.js.map} +1 -1
  7. package/.chunks/forms-cAFIQajo.es.js +1995 -0
  8. package/.chunks/{forms-DmpPuKKh.es.js.map → forms-cAFIQajo.es.js.map} +1 -1
  9. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DwVG6MzF.amd.js +2 -0
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DwVG6MzF.amd.js.map +1 -0
  11. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DxPx80QT.es.js +181 -0
  12. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Cry_LWLq.es.js.map → listItem.vue_vue_type_script_setup_true_lang-DxPx80QT.es.js.map} +1 -1
  13. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BQFq184r.es.js → menu.vue_vue_type_style_index_0_lang-BoLzlJHY.es.js} +24 -24
  14. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BQFq184r.es.js.map → menu.vue_vue_type_style_index_0_lang-BoLzlJHY.es.js.map} +1 -1
  15. package/.chunks/{menu.vue_vue_type_style_index_0_lang-Chd1ygyG.amd.js → menu.vue_vue_type_style_index_0_lang-Dpm2Wnt9.amd.js} +2 -2
  16. package/.chunks/{menu.vue_vue_type_style_index_0_lang-Chd1ygyG.amd.js.map → menu.vue_vue_type_style_index_0_lang-Dpm2Wnt9.amd.js.map} +1 -1
  17. package/.chunks/{notice-BNik2ZIo.es.js → notice-DRCVp0mf.es.js} +2 -2
  18. package/.chunks/{notice-BNik2ZIo.es.js.map → notice-DRCVp0mf.es.js.map} +1 -1
  19. package/.chunks/{notice-BnvlWLlj.amd.js → notice-EerveAd9.amd.js} +2 -2
  20. package/.chunks/{notice-BnvlWLlj.amd.js.map → notice-EerveAd9.amd.js.map} +1 -1
  21. package/.chunks/popup-D6-5Xu_J.amd.js +2 -0
  22. package/.chunks/{popup-Dm9xIxVU.amd.js.map → popup-D6-5Xu_J.amd.js.map} +1 -1
  23. package/.chunks/{popup-BxLi2sMk.es.js → popup-DZDWzqMA.es.js} +4 -4
  24. package/.chunks/{popup-BxLi2sMk.es.js.map → popup-DZDWzqMA.es.js.map} +1 -1
  25. package/.chunks/punycode.es6-C2yitnNb.amd.js.map +1 -1
  26. package/.chunks/punycode.es6-CNI-zL6U.es.js.map +1 -1
  27. package/.chunks/store-CX_6ZXhO.es.js.map +1 -1
  28. package/.chunks/store-esTid5oI.amd.js.map +1 -1
  29. package/.chunks/{utils-k0wIxxij.amd.js → utils-CQcFLRGs.amd.js} +2 -2
  30. package/.chunks/{utils-k0wIxxij.amd.js.map → utils-CQcFLRGs.amd.js.map} +1 -1
  31. package/.chunks/{utils-DFwHp4q7.es.js → utils-DP2t2MXK.es.js} +85 -87
  32. package/.chunks/utils-DP2t2MXK.es.js.map +1 -0
  33. package/.chunks/{utils-CKpKCxOO.es.js → utils-DTkdtW9l.es.js} +78 -78
  34. package/.chunks/{utils-CKpKCxOO.es.js.map → utils-DTkdtW9l.es.js.map} +1 -1
  35. package/.chunks/utils-kDi9Zfjp.amd.js +2 -0
  36. package/.chunks/utils-kDi9Zfjp.amd.js.map +1 -0
  37. package/assets/core.css +1 -1
  38. package/assets/forms.css +1 -1
  39. package/assets/formsExt.css +1 -1
  40. package/assets/layout.css +1 -1
  41. package/assets/themes/dark-th.css +1 -1
  42. package/assets/themes/dark.css +1 -1
  43. package/assets/themes/light.css +1 -1
  44. package/charts/charts.amd.js +1 -1
  45. package/charts/charts.amd.js.map +1 -1
  46. package/charts/charts.js +1 -1
  47. package/components/charts/miniChart/miniChart.vue.d.ts +5 -5
  48. package/components/charts/miniCharts/miniCharts.vue.d.ts +9 -6
  49. package/components/core/notice/item/item.vue.d.ts +1 -1
  50. package/components/dialog/dialog/dialog.vue.d.ts +3 -2
  51. package/components/dialog/dialog/dialogs/dialogs.vue.d.ts +1 -1
  52. package/components/dialog/dialog/page/page.vue.d.ts +2 -1
  53. package/components/forms/avatar/avatar.vue.d.ts +1 -1
  54. package/components/forms/button/button.vue.d.ts +2 -1
  55. package/components/forms/button/types.d.ts +1 -0
  56. package/components/forms/checkbox/checkbox.vue.d.ts +7 -6
  57. package/components/forms/controlLabel/controlLabel.vue.d.ts +3 -2
  58. package/components/forms/hint/hint.vue.d.ts +1 -1
  59. package/components/forms/input/input.vue.d.ts +2 -1
  60. package/components/forms/inputDate/inputDate.vue.d.ts +3 -1
  61. package/components/forms/inputRange/inputRange.vue.d.ts +3 -2
  62. package/components/forms/loadbar/loadbar.vue.d.ts +1 -1
  63. package/components/forms/radio/radio.vue.d.ts +3 -2
  64. package/components/forms/select/select.vue.d.ts +5 -5
  65. package/components/forms/switcher/switcher.vue.d.ts +3 -2
  66. package/components/formsExt/editArea/editArea.vue.d.ts +1 -1
  67. package/components/formsExt/editInput/editInput.vue.d.ts +1 -1
  68. package/components/formsExt/formsExt.d.ts +2 -0
  69. package/components/formsExt/info/info.vue.d.ts +22 -0
  70. package/components/formsExt/info/types.d.ts +15 -0
  71. package/components/formsExt/menu/menu.vue.d.ts +7 -5
  72. package/components/formsExt/radioGroup/radioGroup.vue.d.ts +7 -5
  73. package/components/formsExt/selector2/itemMulti.vue.d.ts +1 -1
  74. package/components/formsExt/selector2/selector2.vue.d.ts +96 -8
  75. package/components/layout/islandRows/islandRows.vue.d.ts +3 -2
  76. package/components/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +3 -2
  77. package/components/layout/islandRows/islandRowsSubTitle/islandRowsSubTitle.vue.d.ts +18 -0
  78. package/components/layout/layout.d.ts +2 -0
  79. package/components/layout/rows/rows.vue.d.ts +3 -2
  80. package/components/popup/alert/alert.vue.d.ts +2 -1
  81. package/components/popup/confirm/confirm.vue.d.ts +2 -1
  82. package/components/popup/popup/listItem.vue.d.ts +2 -1
  83. package/components/popup/popup/opener.vue.d.ts +2 -1
  84. package/components/popup/popup/popup.vue.d.ts +2 -1
  85. package/components/popup/popup/widgetInput.vue.d.ts +4 -4
  86. package/components/popup/prompt/prompt.vue.d.ts +2 -1
  87. package/components/project/selectorCompetitors/selectorCompetitors.vue.d.ts +5 -5
  88. package/components/project/selectorRegion/selectorRegion.vue.d.ts +7 -7
  89. package/components/project/tagSelector/popupListItem/tagPopupListItem.vue.d.ts +5 -3
  90. package/components/project/tagSelector/popupOpener/popupOpener.vue.d.ts +6 -5
  91. package/components/project/tagSelector/tagIcon/tagIcon.vue.d.ts +1 -1
  92. package/components/project/tagSelector/tagSelector.vue.d.ts +6 -6
  93. package/components/tabs/tabs/content.vue.d.ts +3 -2
  94. package/components/tabs/tabs/tab.vue.d.ts +2 -1
  95. package/components/tabs/tabs/tabs.vue.d.ts +3 -2
  96. package/components/tabsView/tabsView/menu.vue.d.ts +9 -6
  97. package/components/tabsView/tabsView/menuDelimeter.vue.d.ts +1 -1
  98. package/components/tabsView/tabsView/menuItem.vue.d.ts +2 -1
  99. package/components/tabsView/tabsView/menuTitle.vue.d.ts +2 -1
  100. package/components/tabsView/tabsView/store.d.ts +5 -5
  101. package/components/tabsView/tabsView/tabsView.vue.d.ts +9 -6
  102. package/core/app.amd.js +1 -1
  103. package/core/app.amd.js.map +1 -1
  104. package/core/app.js +209 -162
  105. package/core/app.js.map +1 -1
  106. package/core/directives/focus.d.ts +3 -1
  107. package/core/directives/scrollIntoView.d.ts +3 -0
  108. package/core/directives/scrollShadow.d.ts +15 -0
  109. package/core/utils/number.d.ts +6 -0
  110. package/core/utils/scroll.d.ts +3 -2
  111. package/core/utils/string.d.ts +1 -1
  112. package/dialog/dialog.amd.js +1 -1
  113. package/dialog/dialog.amd.js.map +1 -1
  114. package/dialog/dialog.js +84 -79
  115. package/dialog/dialog.js.map +1 -1
  116. package/forms/forms.amd.js +1 -1
  117. package/forms/forms.js +1 -1
  118. package/forms/helpers.amd.js.map +1 -1
  119. package/formsExt/formsExt.amd.js +1 -1
  120. package/formsExt/formsExt.amd.js.map +1 -1
  121. package/formsExt/formsExt.js +330 -290
  122. package/formsExt/formsExt.js.map +1 -1
  123. package/layout/layout.amd.js +1 -1
  124. package/layout/layout.amd.js.map +1 -1
  125. package/layout/layout.js +33 -25
  126. package/layout/layout.js.map +1 -1
  127. package/package.json +31 -31
  128. package/popup/popup.amd.js +1 -1
  129. package/popup/popup.amd.js.map +1 -1
  130. package/popup/popup.js +17 -17
  131. package/popup/worker.amd.js +1 -1
  132. package/popup/worker.amd.js.map +1 -1
  133. package/popup/worker.js +9 -10
  134. package/popup/worker.js.map +1 -1
  135. package/project/project.amd.js +1 -1
  136. package/project/project.amd.js.map +1 -1
  137. package/project/project.js +307 -307
  138. package/tabsView/tabsView.amd.js +1 -1
  139. package/tabsView/tabsView.amd.js.map +1 -1
  140. package/tabsView/tabsView.js +37 -37
  141. package/utils/check.amd.js +1 -1
  142. package/utils/check.amd.js.map +1 -1
  143. package/utils/check.js +1 -1
  144. package/utils/check.js.map +1 -1
  145. package/utils/clipboard.amd.js +1 -1
  146. package/utils/clipboard.amd.js.map +1 -1
  147. package/utils/clipboard.js +1 -1
  148. package/utils/clipboard.js.map +1 -1
  149. package/utils/date.amd.js +1 -1
  150. package/utils/date.js +1 -1
  151. package/utils/device.amd.js +1 -1
  152. package/utils/device.js +1 -1
  153. package/utils/dom.amd.js +1 -1
  154. package/utils/dom.amd.js.map +1 -1
  155. package/utils/dom.js +30 -30
  156. package/utils/dom.js.map +1 -1
  157. package/utils/image.amd.js.map +1 -1
  158. package/utils/keyboard.amd.js.map +1 -1
  159. package/utils/lodash.amd.js +1 -1
  160. package/utils/lodash.js +1 -1
  161. package/utils/number.amd.js +1 -1
  162. package/utils/number.amd.js.map +1 -1
  163. package/utils/number.js +7 -3
  164. package/utils/number.js.map +1 -1
  165. package/utils/price.amd.js +1 -1
  166. package/utils/price.amd.js.map +1 -1
  167. package/utils/price.js +1 -1
  168. package/utils/price.js.map +1 -1
  169. package/utils/route.amd.js +1 -1
  170. package/utils/route.amd.js.map +1 -1
  171. package/utils/route.js +5 -5
  172. package/utils/route.js.map +1 -1
  173. package/utils/scroll.amd.js +1 -1
  174. package/utils/scroll.amd.js.map +1 -1
  175. package/utils/scroll.js +19 -14
  176. package/utils/scroll.js.map +1 -1
  177. package/utils/searchers.amd.js.map +1 -1
  178. package/utils/searchers.js.map +1 -1
  179. package/utils/string.amd.js +1 -1
  180. package/utils/string.amd.js.map +1 -1
  181. package/utils/string.js +48 -47
  182. package/utils/string.js.map +1 -1
  183. package/utils/system.amd.js.map +1 -1
  184. package/utils/system.js.map +1 -1
  185. package/utils/url.amd.js.map +1 -1
  186. package/utils/url.js.map +1 -1
  187. package/web-types.json +41 -0
  188. package/.chunks/forms-CORLOoYZ.amd.js +0 -3
  189. package/.chunks/forms-DmpPuKKh.es.js +0 -1944
  190. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-BZar2z_p.amd.js +0 -2
  191. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-BZar2z_p.amd.js.map +0 -1
  192. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Cry_LWLq.es.js +0 -174
  193. package/.chunks/popup-Dm9xIxVU.amd.js +0 -2
  194. package/.chunks/utils-COOeS9rk.amd.js +0 -2
  195. package/.chunks/utils-COOeS9rk.amd.js.map +0 -1
  196. package/.chunks/utils-DFwHp4q7.es.js.map +0 -1
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-CORLOoYZ.amd","../utils/dom.amd","../utils/scroll.amd"],function(require,exports,forms,utils_dom,utils_scroll){"use strict";if(typeof vue>"u")var vue=window.Vue;class Worker{static noClose=!1;static vueConnectors=new Map;static options={};static getPopup(t){return utils_dom.default.storage(t,"TopPopup")}static getAll(){return utils_dom.default.querySelectorAllArray(document,".top-popup-wrapper")}static getAllVisible(){return utils_dom.default.querySelectorAllVisible(document,".top-popup-wrapper")}static async openByOpener(t){if(!(t instanceof HTMLElement))return;const o={};return o.popup=t.dataset.topPopup,o.id=t.dataset.topPopupId,t.dataset.topPopupP&&(o.p=parseInt(t.dataset.topPopupP)),t.dataset.topPopupPos&&(o.p=parseInt(t.dataset.topPopupPos)),t.dataset.topPopupNotch&&(o.notch=t.dataset.topPopupNotch==="true"||t.dataset.topPopupNotch==="1"),t.dataset.topPopupClass&&(o.class=t.dataset.topPopupClass),t.dataset.topPopupPosBy&&(o.posBy=t.dataset.topPopupPosBy),t.dataset.topPopupFront&&(o.frontSelector=t.dataset.topPopupFront),t.dataset.topPopupInvertX&&(o.invertX=t.dataset.topPopupInvertX==="true"||t.dataset.topPopupInvertX==="1"),t.dataset.topPopupOpenByHover&&(o.openByHover=t.dataset.topPopupOpenByHover==="true"||t.dataset.topPopupOpenByHover==="1"),t.dataset.topPopupUseOriginal&&(o.useOriginal=t.dataset.topPopupUseOriginal==="true"||t.dataset.topPopupUseOriginal==="1"),await Worker.open(t,o)}static async open(elOpener,options){elOpener instanceof HTMLElement&&(elOpener.dataset.topPopupOpened="opened");const{default:Popup}=await new Promise((t,o)=>require(["../.chunks/popup-Dm9xIxVU.amd"],t,o));if(forms.Core.$){const $elOpener=forms.Core.$(elOpener);if($elOpener.data("aftershow")){let afterShow=$elOpener.data("aftershow");typeof afterShow=="string"&&(afterShow=eval(afterShow.replace(/\W/g,""))),$elOpener.one("aftershow.top-menu-popup",afterShow)}if($elOpener.data("afterclose")){let afterclose=$elOpener.data("afterclose");typeof afterclose=="string"&&(afterclose=eval(afterclose.replace(/\W/g,""))),$elOpener.one("afterclose.top-menu-popup",afterclose)}}return options.isFullScreen=forms.Core.state.isMobile,new Popup(elOpener,options)}static close(t){const o=Worker.getPopup(t);o&&o.close()}static recalcPosition(t){const o=Worker.getPopup(t);o&&o.elPopupBody instanceof HTMLElement&&(o.recalcPosition(),utils_scroll.genHasScroll(o.elPopupBody))}static scrollToActive(t){if(!utils_dom.default.querySelectorVisible(t,"ul.top-popup_content > li > .top-active"))return;const s=t.querySelector("ul.top-popup_content"),a=utils_dom.default.querySelectorAllVisible(t,"ul.top-popup_content > li");t.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>t.classList.remove("top-popup-wrapper-no_animate"),100);let p=100;for(const e of a){if(e.querySelector(":scope > .top-active"))break;e instanceof HTMLElement&&(p+=e.offsetHeight)}if(s instanceof HTMLElement){const e=s.offsetHeight;p>e?s.scrollTop=p-e:s.scrollTop=0}}static decoratorBeforeOpen(t){this.options.decoratorBeforeOpen&&this.options.decoratorBeforeOpen(t)}static decoratorAfterOpen(t){this.options.decoratorAfterOpen&&this.options.decoratorAfterOpen(t)}static decoratorIsIgnoreOuterClick(t){return this.options.decoratorIsIgnoreOuterClick?this.options.decoratorIsIgnoreOuterClick(t):!1}static regVueComponent(t,o){if(Worker.vueConnectors.get(t))throw"Vue component Popup use duplicated id: "+t;Worker.vueConnectors.set(t,o)}static unregVueComponent(t){Worker.vueConnectors.delete(t)}static genElPopupOpener(t,o,...s){const a=utils_dom.default.genEl(t,{},...s);a.dataset.topPopup="#"+o.id;for(let p in o){const e="topPopup"+p.charAt(0).toUpperCase()+p.slice(1);a.dataset[e]=o[p]}return a}}exports.TopPopupWorker=Worker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","../.chunks/forms-CgS7En_e.amd","../utils/dom.amd"],function(require,exports,forms,utils_dom){"use strict";if(typeof vue>"u")var vue=window.Vue;class Worker{static noClose=!1;static vueConnectors=new Map;static options={};static getPopup(t){return utils_dom.default.storage(t,"TopPopup")}static getAll(){return utils_dom.default.querySelectorAllArray(document,".top-popup-wrapper")}static getAllVisible(){return utils_dom.default.querySelectorAllVisible(document,".top-popup-wrapper")}static async openByOpener(t){if(!(t instanceof HTMLElement))return;const o={};return o.popup=t.dataset.topPopup,o.id=t.dataset.topPopupId,t.dataset.topPopupP&&(o.p=parseInt(t.dataset.topPopupP)),t.dataset.topPopupPos&&(o.p=parseInt(t.dataset.topPopupPos)),t.dataset.topPopupNotch&&(o.notch=t.dataset.topPopupNotch==="true"||t.dataset.topPopupNotch==="1"),t.dataset.topPopupClass&&(o.class=t.dataset.topPopupClass),t.dataset.topPopupPosBy&&(o.posBy=t.dataset.topPopupPosBy),t.dataset.topPopupFront&&(o.frontSelector=t.dataset.topPopupFront),t.dataset.topPopupInvertX&&(o.invertX=t.dataset.topPopupInvertX==="true"||t.dataset.topPopupInvertX==="1"),t.dataset.topPopupOpenByHover&&(o.openByHover=t.dataset.topPopupOpenByHover==="true"||t.dataset.topPopupOpenByHover==="1"),t.dataset.topPopupUseOriginal&&(o.useOriginal=t.dataset.topPopupUseOriginal==="true"||t.dataset.topPopupUseOriginal==="1"),await Worker.open(t,o)}static async open(elOpener,options){elOpener instanceof HTMLElement&&(elOpener.dataset.topPopupOpened="opened");const{default:Popup}=await new Promise((t,o)=>require(["../.chunks/popup-D6-5Xu_J.amd"],t,o));if(forms.Core.$){const $elOpener=forms.Core.$(elOpener);if($elOpener.data("aftershow")){let afterShow=$elOpener.data("aftershow");typeof afterShow=="string"&&(afterShow=eval(afterShow.replace(/\W/g,""))),$elOpener.one("aftershow.top-menu-popup",afterShow)}if($elOpener.data("afterclose")){let afterclose=$elOpener.data("afterclose");typeof afterclose=="string"&&(afterclose=eval(afterclose.replace(/\W/g,""))),$elOpener.one("afterclose.top-menu-popup",afterclose)}}return options.isFullScreen=forms.Core.state.isMobile,new Popup(elOpener,options)}static close(t){const o=Worker.getPopup(t);o&&o.close()}static recalcPosition(t){const o=Worker.getPopup(t);o&&o.elPopupBody instanceof HTMLElement&&o.recalcPosition()}static scrollToActive(t){if(!utils_dom.default.querySelectorVisible(t,"ul.top-popup_content > li > .top-active"))return;const s=t.querySelector("ul.top-popup_content"),a=utils_dom.default.querySelectorAllVisible(t,"ul.top-popup_content > li");t.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>t.classList.remove("top-popup-wrapper-no_animate"),100);let p=100;for(const e of a){if(e.querySelector(":scope > .top-active"))break;e instanceof HTMLElement&&(p+=e.offsetHeight)}if(s instanceof HTMLElement){const e=s.offsetHeight;p>e?s.scrollTop=p-e:s.scrollTop=0}}static decoratorBeforeOpen(t){this.options.decoratorBeforeOpen&&this.options.decoratorBeforeOpen(t)}static decoratorAfterOpen(t){this.options.decoratorAfterOpen&&this.options.decoratorAfterOpen(t)}static decoratorIsIgnoreOuterClick(t){return this.options.decoratorIsIgnoreOuterClick?this.options.decoratorIsIgnoreOuterClick(t):!1}static regVueComponent(t,o){if(Worker.vueConnectors.get(t))throw"Vue component Popup use duplicated id: "+t;Worker.vueConnectors.set(t,o)}static unregVueComponent(t){Worker.vueConnectors.delete(t)}static genElPopupOpener(t,o,...s){const a=utils_dom.default.genEl(t,{},...s);a.dataset.topPopup="#"+o.id;for(let p in o){const e="topPopup"+p.charAt(0).toUpperCase()+p.slice(1);a.dataset[e]=o[p]}return a}}exports.TopPopupWorker=Worker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=worker.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.ts"],"sourcesContent":["/**\r\n * PopupWorker управлеяет работой Popup\r\n *\r\n * Должен грузить Popup только в отложенном режиме\r\n */\r\n\r\nimport Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport { genHasScroll } from '@/core/utils/scroll';\r\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\r\nimport type { OpenerProps } from '@/components/popup/popup/popup';\r\n\r\nexport type Options = {\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\r\n\t */\r\n\tdecoratorBeforeOpen?: (TopPopupInstance: Popup) => void,\r\n\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\r\n\t */\r\n\tdecoratorAfterOpen?: (TopPopupInstance: Popup) => void;\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\r\n\t */\r\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\r\n}\r\n\r\nclass Worker {\r\n\r\n\t/**\r\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\r\n\t */\r\n\tstatic noClose = false;\r\n\r\n\t/**\r\n\t * Для взаимодействия с vue\r\n\t */\r\n\tstatic vueConnectors = new Map();\r\n\r\n\tstatic options: Options = {};\r\n\r\n\t/**\r\n\t * Вернуть объект компонента popup, привязанный к элементу\r\n\t */\r\n\tstatic getPopup(elPopup: HTMLElement): Popup {\r\n\t\treturn DOM.storage(elPopup, 'TopPopup') as Popup;\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с Popup\r\n\t */\r\n\tstatic getAll(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с открытыми Popup\r\n\t */\r\n\tstatic getAllVisible(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<Popup | undefined> {\r\n\t\tif (!(elOpener instanceof HTMLElement)) return;\r\n\r\n\t\tconst options: PopupOptions = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\toptions.id = elOpener.dataset.topPopupId;\r\n\r\n\t\t/**\r\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPos) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param elOpener - элемент, вызвавший открытие Popup\r\n\t * @param options - опции Popup\r\n\t */\r\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<Popup> {\r\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (Core.$) {\r\n\t\t\tconst $elOpener = Core.$(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\r\n\t\treturn new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tgenHasScroll(popup.elPopupBody);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Скролл к активному элементу списка\r\n\t */\r\n\tstatic scrollToActive(elPopup: HTMLElement): void {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tif (elUl instanceof HTMLElement) {\r\n\t\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\t\tif (top > heightWrapper) {\r\n\t\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t\t} else {\r\n\t\t\t\telUl.scrollTop = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorBeforeOpen) {\r\n\t\t\tthis.options.decoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorAfterOpen) {\r\n\t\t\tthis.options.decoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\r\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t */\r\n\tstatic regVueComponent(id: string, vueConnector: any): void {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t */\r\n\tstatic unregVueComponent(id: string): void {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n\t/**\r\n\t * Сгенерировтаь элемент для открытия popup\r\n\t */\r\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\r\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens);\r\n\r\n\t\tel.dataset.topPopup = '#' + props.id;\r\n\r\n\t\t// if (props.pos === undefined) props.pos = '3';\r\n\t\t// if (props.notch === undefined) props.notch = true;\r\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\r\n\r\n\t\tfor (let name in props) {\r\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\r\n\r\n\t\t\tel.dataset[attrName] = props[name];\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n}\r\n\r\nexport default Worker;\r\n"],"names":["elPopup","elOpener2","options2","popup","top","elLi","elsLi","elUl","heightWrapper","e","id","vueConnector","el","tagName","elsChildrens","name","props"],"mappings":"+MA8BA,MAAA,MAAA,CAAa,OAAA,QAAA,GAKK,OAAA,cAAA,IAAA,IAKc,OAAA,QAAA,CAAA,EAEJ,OAAA,SAAAA,EAAA,qPAqB3B,aAAA,aAAAC,EAAA,CAOC,GAAA,EAAAA,aAAA,aAAA,OAEA,MAAAC,EAAA,CAAA,8DASAD,EAAA,QAAA,YACCC,EAAA,EAAA,SAAAD,EAAA,QAAA,SAAA,GAGDA,EAAA,QAAA,cACCC,EAAA,EAAA,SAAAD,EAAA,QAAA,WAAA,GAMDA,EAAA,QAAA,gBACCC,EAAA,MAAAD,EAAA,QAAA,gBAAA,QAAAA,EAAA,QAAA,gBAAA,KAGDA,EAAA,QAAA,iDAIAA,EAAA,QAAA,iDAIAA,EAAA,QAAA,yDAOAA,EAAA,QAAA,kBACCC,EAAA,QAAAD,EAAA,QAAA,kBAAA,QAAAA,EAAA,QAAA,kBAAA,KAMDA,EAAA,QAAA,sBACCC,EAAA,YAAAD,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,KAMDA,EAAA,QAAA,sBACCC,EAAA,YAAAD,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,4BAIF,aAAA,KAAA,SAAA,QAAA,CAQC,oBAAA,cAAA,SAAA,QAAA,eAAA,wGAIA,GAAA,MAAA,KAAA,EAAA,wCAIC,GAAA,UAAA,KAAA,WAAA,EAAA,2CAEC,OAAA,WAAA,WAGC,UAAA,KAAA,UAAA,QAAA,MAAA,EAAA,CAAA,uDAOF,GAAA,UAAA,KAAA,YAAA,EAAA,6CAEC,OAAA,YAAA,WAGC,WAAA,KAAA,WAAA,QAAA,MAAA,EAAA,CAAA,4IAUJ,OAAA,MAAAD,EAAA,+BAKEG,EAAA,MAAA,EAEF,OAAA,eAAAH,EAAA,sEAKEG,EAAA,eAAA,EAIA,aAAA,aAAAA,EAAA,WAAA,GAEF,OAAA,eAAAH,EAAA,yFAQE,kLAOD,WAAA,IAAAA,EAAA,UAAA,OAAA,8BAAA,EAAA,GAAA,EAEA,IAAAI,EAAA,IACA,UAAAC,KAAAC,EAAA,CACC,GAAAD,EAAA,cAAA,sBAAA,EACC,oDAMF,GAAAE,aAAA,YAAA,CACC,MAAAC,EAAAD,EAAA,aACAH,EAAAI,EACCD,EAAA,UAAAH,EAAAI,EAEAD,EAAA,UAAA,GAGH,OAAA,oBAAAJ,EAAA,CAGC,KAAA,QAAA,yDAGD,OAAA,mBAAAA,EAAA,CAGC,KAAA,QAAA,uDAGD,OAAA,4BAAAM,EAAA,CAGC,OAAA,KAAA,QAAA,2EAKD,OAAA,gBAAAC,EAAAC,EAAA,gCASE,KAAA,0CAAAD,gCAIF,OAAA,kBAAAA,EAAA,kEAaC,MAAAE,EAAA,UAAA,QAAA,MAAAC,EAAA,CAAA,EAAA,GAAAC,CAAA,8BAQA,QAAAC,KAAAC,EAAA,oFASF"}
1
+ {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.ts"],"sourcesContent":["/**\r\n * PopupWorker управлеяет работой Popup\r\n *\r\n * Должен грузить Popup только в отложенном режиме\r\n */\r\n\r\nimport Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\r\nimport type { OpenerProps } from '@/components/popup/popup/popup';\r\n\r\nexport type Options = {\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\r\n\t */\r\n\tdecoratorBeforeOpen?: (TopPopupInstance: Popup) => void,\r\n\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\r\n\t */\r\n\tdecoratorAfterOpen?: (TopPopupInstance: Popup) => void;\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\r\n\t */\r\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\r\n}\r\n\r\nclass Worker {\r\n\r\n\t/**\r\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\r\n\t */\r\n\tstatic noClose = false;\r\n\r\n\t/**\r\n\t * Для взаимодействия с vue\r\n\t */\r\n\tstatic vueConnectors = new Map();\r\n\r\n\tstatic options: Options = {};\r\n\r\n\t/**\r\n\t * Вернуть объект компонента popup, привязанный к элементу\r\n\t */\r\n\tstatic getPopup(elPopup: HTMLElement): Popup {\r\n\t\treturn DOM.storage(elPopup, 'TopPopup') as Popup;\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с Popup\r\n\t */\r\n\tstatic getAll(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с открытыми Popup\r\n\t */\r\n\tstatic getAllVisible(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<Popup | undefined> {\r\n\t\tif (!(elOpener instanceof HTMLElement)) return;\r\n\r\n\t\tconst options: PopupOptions = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\toptions.id = elOpener.dataset.topPopupId;\r\n\r\n\t\t/**\r\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPos) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param elOpener - элемент, вызвавший открытие Popup\r\n\t * @param options - опции Popup\r\n\t */\r\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<Popup> {\r\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (Core.$) {\r\n\t\t\tconst $elOpener = Core.$(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\r\n\t\treturn new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\r\n\t\t\tpopup.recalcPosition();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Скролл к активному элементу списка\r\n\t */\r\n\tstatic scrollToActive(elPopup: HTMLElement): void {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tif (elUl instanceof HTMLElement) {\r\n\t\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\t\tif (top > heightWrapper) {\r\n\t\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t\t} else {\r\n\t\t\t\telUl.scrollTop = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorBeforeOpen) {\r\n\t\t\tthis.options.decoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorAfterOpen) {\r\n\t\t\tthis.options.decoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\r\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t */\r\n\tstatic regVueComponent(id: string, vueConnector: any): void {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t */\r\n\tstatic unregVueComponent(id: string): void {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n\t/**\r\n\t * Сгенерировтаь элемент для открытия popup\r\n\t */\r\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\r\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens);\r\n\r\n\t\tel.dataset.topPopup = '#' + props.id;\r\n\r\n\t\t// if (props.pos === undefined) props.pos = '3';\r\n\t\t// if (props.notch === undefined) props.notch = true;\r\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\r\n\r\n\t\tfor (let name in props) {\r\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\r\n\r\n\t\t\tel.dataset[attrName] = props[name];\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n}\r\n\r\nexport default Worker;\r\n"],"names":["elPopup","elOpener2","options2","elLi","elsLi","elUl","heightWrapper","top","popup","e","id","vueConnector","el","tagName","elsChildrens","name","props"],"mappings":"4KA6BA,MAAA,MAAA,mBAKkB,OAAA,cAAA,IAAA,sBAOU,OAAA,SAAAA,EAAA,+CAMY,8FAOyB,uGAOE,CAClE,aAAA,aAAAC,EAAA,CAOC,GAAA,EAAAA,aAAA,aAAA,8EAWAA,EAAA,QAAA,+CAIAA,EAAA,QAAA,mDAOAA,EAAA,QAAA,gBACCC,EAAA,MAAAD,EAAA,QAAA,gBAAA,QAAAA,EAAA,QAAA,gBAAA,KAGDA,EAAA,QAAA,iDAIAA,EAAA,QAAA,iDAIAA,EAAA,QAAA,yDAOAA,EAAA,QAAA,kBACCC,EAAA,QAAAD,EAAA,QAAA,kBAAA,QAAAA,EAAA,QAAA,kBAAA,KAMDA,EAAA,QAAA,sBACCC,EAAA,YAAAD,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,KAMDA,EAAA,QAAA,sBACCC,EAAA,YAAAD,EAAA,QAAA,sBAAA,QAAAA,EAAA,QAAA,sBAAA,2BAGyC,CAC3C,aAAA,KAAA,SAAA,QAAA,2KAYC,GAAA,MAAA,KAAA,EAAA,wCAIC,GAAA,UAAA,KAAA,WAAA,EAAA,2CAEC,OAAA,WAAA,WAGC,UAAA,KAAA,UAAA,QAAA,MAAA,EAAA,CAAA,GAGD,UAAA,IAAA,2BAAA,SAAA,CAAmD,CAIpD,GAAA,UAAA,KAAA,YAAA,EAAA,6CAEC,OAAA,YAAA,WAGC,WAAA,KAAA,WAAA,QAAA,MAAA,EAAA,CAAA,GAGD,UAAA,IAAA,4BAAA,UAAA,CAAqD,CACtD,uDAKD,IAAA,MAAA,SAAA,OAAA,CAAkC,CACnC,OAAA,MAAAD,EAAA,wCAMC,CACD,OAAA,eAAAA,EAAA,uFAMC,CACD,OAAA,eAAAA,EAAA,2NAcCA,EAAA,UAAA,IAAA,8BAAA,EACA,WAAA,IAAAA,EAAA,UAAA,OAAA,8BAAA,EAAA,GAAA,YAGA,UAAAG,KAAAC,EAAA,CACC,GAAAD,EAAA,cAAA,sBAAA,qDAI6C,CAG9C,GAAAE,aAAA,YAAA,CACC,MAAAC,EAAAD,EAAA,aACAE,EAAAD,EACCD,EAAA,UAAAE,EAAAD,EAEAD,EAAA,UAAA,CACD,CACD,CACD,OAAA,oBAAAG,EAAA,CAGC,KAAA,QAAA,qBACC,KAAA,QAAA,oBAAAA,CAAA,CACD,CACD,OAAA,mBAAAA,EAAA,CAGC,KAAA,QAAA,oBACC,KAAA,QAAA,mBAAAA,CAAA,CACD,CACD,OAAA,4BAAAC,EAAA,CAGC,OAAA,KAAA,QAAA,wEAIA,EAAO,CACR,OAAA,gBAAAC,EAAAC,EAAA,8GAY0C,CAC1C,OAAA,kBAAAD,EAAA,CAMC,OAAA,cAAA,OAAAA,CAAA,CAA8B,mCAO9B,MAAAE,EAAA,UAAA,QAAA,MAAAC,EAAA,CAAA,EAAA,GAAAC,CAAA,8BAQA,QAAAC,KAAAC,EAAA,0EAGkC,CAGlC,OAAAJ,CAAO,CAGT"}
package/popup/worker.js CHANGED
@@ -1,6 +1,5 @@
1
- import { C as Core } from "../.chunks/forms-DmpPuKKh.es.js";
1
+ import { C as Core } from "../.chunks/forms-cAFIQajo.es.js";
2
2
  import DOM from "../utils/dom.js";
3
- import { genHasScroll } from "../utils/scroll.js";
4
3
  class Worker {
5
4
  /**
6
5
  * Глобальное выключение закрытия меню, используется при различных оверлеях
@@ -45,7 +44,7 @@ class Worker {
45
44
  */
46
45
  static async open(elOpener, options) {
47
46
  elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = "opened");
48
- const { default: Popup } = await import("../.chunks/popup-BxLi2sMk.es.js");
47
+ const { default: Popup } = await import("../.chunks/popup-DZDWzqMA.es.js");
49
48
  if (Core.$) {
50
49
  const $elOpener = Core.$(elOpener);
51
50
  if ($elOpener.data("aftershow")) {
@@ -65,7 +64,7 @@ class Worker {
65
64
  }
66
65
  static recalcPosition(t) {
67
66
  const o = Worker.getPopup(t);
68
- o && o.elPopupBody instanceof HTMLElement && (o.recalcPosition(), genHasScroll(o.elPopupBody));
67
+ o && o.elPopupBody instanceof HTMLElement && o.recalcPosition();
69
68
  }
70
69
  /**
71
70
  * Скролл к активному элементу списка
@@ -73,10 +72,10 @@ class Worker {
73
72
  static scrollToActive(t) {
74
73
  if (!DOM.querySelectorVisible(t, "ul.top-popup_content > li > .top-active"))
75
74
  return;
76
- const a = t.querySelector("ul.top-popup_content"), r = DOM.querySelectorAllVisible(t, "ul.top-popup_content > li");
75
+ const a = t.querySelector("ul.top-popup_content"), s = DOM.querySelectorAllVisible(t, "ul.top-popup_content > li");
77
76
  t.classList.add("top-popup-wrapper-no_animate"), setTimeout(() => t.classList.remove("top-popup-wrapper-no_animate"), 100);
78
77
  let p = 100;
79
- for (const e of r) {
78
+ for (const e of s) {
80
79
  if (e.querySelector(":scope > .top-active"))
81
80
  break;
82
81
  e instanceof HTMLElement && (p += e.offsetHeight);
@@ -115,13 +114,13 @@ class Worker {
115
114
  * Сгенерировтаь элемент для открытия popup
116
115
  */
117
116
  static genElPopupOpener(t, o, ...a) {
118
- const r = DOM.genEl(t, {}, ...a);
119
- r.dataset.topPopup = "#" + o.id;
117
+ const s = DOM.genEl(t, {}, ...a);
118
+ s.dataset.topPopup = "#" + o.id;
120
119
  for (let p in o) {
121
120
  const e = "topPopup" + p.charAt(0).toUpperCase() + p.slice(1);
122
- r.dataset[e] = o[p];
121
+ s.dataset[e] = o[p];
123
122
  }
124
- return r;
123
+ return s;
125
124
  }
126
125
  }
127
126
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.ts"],"sourcesContent":["/**\r\n * PopupWorker управлеяет работой Popup\r\n *\r\n * Должен грузить Popup только в отложенном режиме\r\n */\r\n\r\nimport Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport { genHasScroll } from '@/core/utils/scroll';\r\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\r\nimport type { OpenerProps } from '@/components/popup/popup/popup';\r\n\r\nexport type Options = {\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\r\n\t */\r\n\tdecoratorBeforeOpen?: (TopPopupInstance: Popup) => void,\r\n\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\r\n\t */\r\n\tdecoratorAfterOpen?: (TopPopupInstance: Popup) => void;\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\r\n\t */\r\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\r\n}\r\n\r\nclass Worker {\r\n\r\n\t/**\r\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\r\n\t */\r\n\tstatic noClose = false;\r\n\r\n\t/**\r\n\t * Для взаимодействия с vue\r\n\t */\r\n\tstatic vueConnectors = new Map();\r\n\r\n\tstatic options: Options = {};\r\n\r\n\t/**\r\n\t * Вернуть объект компонента popup, привязанный к элементу\r\n\t */\r\n\tstatic getPopup(elPopup: HTMLElement): Popup {\r\n\t\treturn DOM.storage(elPopup, 'TopPopup') as Popup;\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с Popup\r\n\t */\r\n\tstatic getAll(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с открытыми Popup\r\n\t */\r\n\tstatic getAllVisible(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<Popup | undefined> {\r\n\t\tif (!(elOpener instanceof HTMLElement)) return;\r\n\r\n\t\tconst options: PopupOptions = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\toptions.id = elOpener.dataset.topPopupId;\r\n\r\n\t\t/**\r\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPos) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param elOpener - элемент, вызвавший открытие Popup\r\n\t * @param options - опции Popup\r\n\t */\r\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<Popup> {\r\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (Core.$) {\r\n\t\t\tconst $elOpener = Core.$(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\r\n\t\treturn new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tgenHasScroll(popup.elPopupBody);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Скролл к активному элементу списка\r\n\t */\r\n\tstatic scrollToActive(elPopup: HTMLElement): void {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tif (elUl instanceof HTMLElement) {\r\n\t\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\t\tif (top > heightWrapper) {\r\n\t\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t\t} else {\r\n\t\t\t\telUl.scrollTop = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorBeforeOpen) {\r\n\t\t\tthis.options.decoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorAfterOpen) {\r\n\t\t\tthis.options.decoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\r\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t */\r\n\tstatic regVueComponent(id: string, vueConnector: any): void {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t */\r\n\tstatic unregVueComponent(id: string): void {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n\t/**\r\n\t * Сгенерировтаь элемент для открытия popup\r\n\t */\r\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\r\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens);\r\n\r\n\t\tel.dataset.topPopup = '#' + props.id;\r\n\r\n\t\t// if (props.pos === undefined) props.pos = '3';\r\n\t\t// if (props.notch === undefined) props.notch = true;\r\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\r\n\r\n\t\tfor (let name in props) {\r\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\r\n\r\n\t\t\tel.dataset[attrName] = props[name];\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n}\r\n\r\nexport default Worker;\r\n"],"names":["elPopup","elOpener","options","popup","elUl","elsLi","top","elLi","heightWrapper","e","id","vueConnector","tagName","props","elsChildrens","el","name","attrName"],"mappings":";;;AA8BA,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA,EAKZ,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA,EAKjB,OAAO,gBAAgB,oBAAI;EAE3B,OAAO,UAAmB,CAAA;AAAA;AAAA;AAAA;AAAA,EAK1B,OAAO,SAASA,GAA6B;AACrC,WAAA,IAAI,QAAQA,GAAS,UAAU;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,SAAwB;AACvB,WAAA,IAAI,sBAAsB,UAAU,oBAAoB;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,gBAA+B;AAC9B,WAAA,IAAI,wBAAwB,UAAU,oBAAoB;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,aAAaC,GAAmD;AACxE,QAAA,EAAEA,aAAoB,aAAc;AAExC,UAAMC,IAAwB,CAAA;AAE9BA,WAAAA,EAAQ,QAAQD,EAAS,QAAQ,UAEjCC,EAAQ,KAAKD,EAAS,QAAQ,YAK1BA,EAAS,QAAQ,cACpBC,EAAQ,IAAI,SAASD,EAAS,QAAQ,SAAS,IAG5CA,EAAS,QAAQ,gBACpBC,EAAQ,IAAI,SAASD,EAAS,QAAQ,WAAW,IAM9CA,EAAS,QAAQ,kBACpBC,EAAQ,QAAQD,EAAS,QAAQ,kBAAkB,UAAUA,EAAS,QAAQ,kBAAkB,MAG7FA,EAAS,QAAQ,kBACpBC,EAAQ,QAAQD,EAAS,QAAQ,gBAG9BA,EAAS,QAAQ,kBACpBC,EAAQ,QAAQD,EAAS,QAAQ,gBAG9BA,EAAS,QAAQ,kBACpBC,EAAQ,gBAAgBD,EAAS,QAAQ,gBAMtCA,EAAS,QAAQ,oBACpBC,EAAQ,UAAUD,EAAS,QAAQ,oBAAoB,UAAUA,EAAS,QAAQ,oBAAoB,MAMnGA,EAAS,QAAQ,wBACpBC,EAAQ,cAAcD,EAAS,QAAQ,wBAAwB,UAAUA,EAAS,QAAQ,wBAAwB,MAM/GA,EAAS,QAAQ,wBACpBC,EAAQ,cAAcD,EAAS,QAAQ,wBAAwB,UAAUA,EAAS,QAAQ,wBAAwB,MAG5G,MAAM,OAAO,KAAKA,GAAUC,CAAO;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAqB,KAAK,UAAuB,SAAuC;AACvF,IAAI,oBAAoB,gBAAsB,SAAA,QAAQ,iBAAiB;AAEvE,UAAM,EAAE,SAAS,MAAU,IAAA,MAAM,OAAO,iCAAS;AAEjD,QAAI,KAAK,GAAG;AACL,YAAA,YAAY,KAAK,EAAE,QAAQ;AAG7B,UAAA,UAAU,KAAK,WAAW,GAAG;AAC5B,YAAA,YAAY,UAAU,KAAK,WAAW;AACtC,QAAA,OAAQ,aAAc,aAGzB,YAAY,KAAK,UAAU,QAAQ,OAAO,EAAE,CAAC,IAGpC,UAAA,IAAI,4BAA4B,SAAS;AAAA,MACpD;AAGI,UAAA,UAAU,KAAK,YAAY,GAAG;AAC7B,YAAA,aAAa,UAAU,KAAK,YAAY;AACxC,QAAA,OAAQ,cAAe,aAG1B,aAAa,KAAK,WAAW,QAAQ,OAAO,EAAE,CAAC,IAGtC,UAAA,IAAI,6BAA6B,UAAU;AAAA,MACtD;AAAA,IACD;AAEQ,mBAAA,eAAe,KAAK,MAAM,UAE3B,IAAI,MAAM,UAAU,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,MAAMF,GAA4B;AAClC,UAAAG,IAAQ,OAAO,SAASH,CAAO;AACrC,IAAIG,KACHA,EAAM,MAAM;AAAA,EAEd;AAAA,EAEA,OAAO,eAAeH,GAA4B;AAC3C,UAAAG,IAAQ,OAAO,SAASH,CAAO;AACjC,IAAAG,KAASA,EAAM,uBAAuB,gBACzCA,EAAM,eAAe,GAIrB,aAAaA,EAAM,WAAW;AAAA,EAEhC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,eAAeH,GAA4B;AAEjD,QAAI,CADiB,IAAI,qBAAqBA,GAAS,yCAAyC;AAE/F;AAGK,UAAAI,IAAOJ,EAAQ,cAAc,sBAAsB,GACnDK,IAAQ,IAAI,wBAAwBL,GAAS,2BAA2B;AAEtE,IAAAA,EAAA,UAAU,IAAI,8BAA8B,GACpD,WAAW,MAAMA,EAAQ,UAAU,OAAO,8BAA8B,GAAG,GAAG;AAE9E,QAAIM,IAAM;AACV,eAAWC,KAAQF,GAAO;AACrB,UAAAE,EAAK,cAAc,sBAAsB;AAC5C;AAGG,MAAAA,aAAgB,gBAAaD,KAAOC,EAAK;AAAA,IAC9C;AAEA,QAAIH,aAAgB,aAAa;AAChC,YAAMI,IAAgBJ,EAAK;AAC3B,MAAIE,IAAME,IACTJ,EAAK,YAAYE,IAAME,IAEvBJ,EAAK,YAAY;AAAA,IAEnB;AAAA,EACD;AAAA,EAEA,OAAO,oBAAoBD,GAAoB;AAC1C,IAAA,KAAK,QAAQ,uBACX,KAAA,QAAQ,oBAAoBA,CAAK;AAAA,EAExC;AAAA,EAEA,OAAO,mBAAmBA,GAAoB;AACzC,IAAA,KAAK,QAAQ,sBACX,KAAA,QAAQ,mBAAmBA,CAAK;AAAA,EAEvC;AAAA,EAEA,OAAO,4BAA4BM,GAAwB;AACtD,WAAA,KAAK,QAAQ,8BACT,KAAK,QAAQ,4BAA4BA,CAAC,IAG3C;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,gBAAgBC,GAAYC,GAAyB;AAC3D,QAAI,OAAO,cAAc,IAAID,CAAE;AAC9B,YAAM,4CAA4CA;AAG5C,WAAA,cAAc,IAAIA,GAAIC,CAAY;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,kBAAkBD,GAAkB;AACnC,WAAA,cAAc,OAAOA,CAAE;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,iBAAiBE,GAAiBC,MAAuBC,GAAqD;AACpH,UAAMC,IAAK,IAAI,MAAMH,GAAS,CAAC,GAAG,GAAGE,CAAY;AAE9C,IAAAC,EAAA,QAAQ,WAAW,MAAMF,EAAM;AAMlC,aAASG,KAAQH,GAAO;AACjB,YAAAI,IAAW,aAAaD,EAAK,OAAO,CAAC,EAAE,gBAAgBA,EAAK,MAAM,CAAC;AAEzE,MAAAD,EAAG,QAAQE,CAAQ,IAAIJ,EAAMG,CAAI;AAAA,IAClC;AAEO,WAAAD;AAAA,EACR;AAED;"}
1
+ {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.ts"],"sourcesContent":["/**\r\n * PopupWorker управлеяет работой Popup\r\n *\r\n * Должен грузить Popup только в отложенном режиме\r\n */\r\n\r\nimport Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\r\nimport type { OpenerProps } from '@/components/popup/popup/popup';\r\n\r\nexport type Options = {\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\r\n\t */\r\n\tdecoratorBeforeOpen?: (TopPopupInstance: Popup) => void,\r\n\r\n\t/**\r\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\r\n\t */\r\n\tdecoratorAfterOpen?: (TopPopupInstance: Popup) => void;\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\r\n\t */\r\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\r\n}\r\n\r\nclass Worker {\r\n\r\n\t/**\r\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\r\n\t */\r\n\tstatic noClose = false;\r\n\r\n\t/**\r\n\t * Для взаимодействия с vue\r\n\t */\r\n\tstatic vueConnectors = new Map();\r\n\r\n\tstatic options: Options = {};\r\n\r\n\t/**\r\n\t * Вернуть объект компонента popup, привязанный к элементу\r\n\t */\r\n\tstatic getPopup(elPopup: HTMLElement): Popup {\r\n\t\treturn DOM.storage(elPopup, 'TopPopup') as Popup;\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с Popup\r\n\t */\r\n\tstatic getAll(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Вернуть все элементы с открытыми Popup\r\n\t */\r\n\tstatic getAllVisible(): HTMLElement[] {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<Popup | undefined> {\r\n\t\tif (!(elOpener instanceof HTMLElement)) return;\r\n\r\n\t\tconst options: PopupOptions = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\toptions.id = elOpener.dataset.topPopupId;\r\n\r\n\t\t/**\r\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPos) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @deprecated '1' - добавлено для обратной совместимости\r\n\t\t */\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param elOpener - элемент, вызвавший открытие Popup\r\n\t * @param options - опции Popup\r\n\t */\r\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<Popup> {\r\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (Core.$) {\r\n\t\t\tconst $elOpener = Core.$(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\r\n\t\t\t\t\t// @deprecated\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\r\n\t\treturn new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition(elPopup: HTMLElement): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\r\n\t\t\tpopup.recalcPosition();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Скролл к активному элементу списка\r\n\t */\r\n\tstatic scrollToActive(elPopup: HTMLElement): void {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tif (elUl instanceof HTMLElement) {\r\n\t\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\t\tif (top > heightWrapper) {\r\n\t\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t\t} else {\r\n\t\t\t\telUl.scrollTop = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorBeforeOpen) {\r\n\t\t\tthis.options.decoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen(popup: Popup): void {\r\n\t\tif (this.options.decoratorAfterOpen) {\r\n\t\t\tthis.options.decoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\r\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t */\r\n\tstatic regVueComponent(id: string, vueConnector: any): void {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t */\r\n\tstatic unregVueComponent(id: string): void {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n\t/**\r\n\t * Сгенерировтаь элемент для открытия popup\r\n\t */\r\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\r\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens);\r\n\r\n\t\tel.dataset.topPopup = '#' + props.id;\r\n\r\n\t\t// if (props.pos === undefined) props.pos = '3';\r\n\t\t// if (props.notch === undefined) props.notch = true;\r\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\r\n\r\n\t\tfor (let name in props) {\r\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\r\n\r\n\t\t\tel.dataset[attrName] = props[name];\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n}\r\n\r\nexport default Worker;\r\n"],"names":["elPopup","elOpener","options","popup","elUl","elsLi","top","elLi","heightWrapper","e","id","vueConnector","tagName","props","elsChildrens","el","name","attrName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-CORLOoYZ.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-BZar2z_p.amd","../.chunks/menu.vue_vue_type_style_index_0_lang-Chd1ygyG.amd","../utils/searchers.amd","../utils/dom.amd","../popup/worker.amd","../require/css.amd!../assets/project.css"],function(Me,w,e,I,E,Z,q,_,ee){"use strict";if(typeof e>"u")var e=window.Vue;const te={class:"top-selectorCompetitors"},ne={class:"top-ellipsis1"},oe=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const o=t,d=e.useModel(t,"modelValue"),n=e.computed(()=>{if(o.showSelectAllItem)return{icon:"",title:I.useI18n().Common.Select_all,value:"all",content:""}});return(l,a)=>(e.openBlock(),e.createElementBlock("div",te,[e.unref(I.Core).state.isMobile?(e.openBlock(),e.createBlock(E._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(I._sfc_main,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var r;return[e.createTextVNode(e.toDisplayString((r=l.items.find(u=>{var f;return u.value===((f=d.value)==null?void 0:f[0])}))==null?void 0:r.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.items,(r,u)=>{var f;return e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-active":(f=d.value)==null?void 0:f.includes(r.value)}),"data-top-icon":r.icon,title:r.title,onClick:()=>d.value=[r.value]},{default:e.withCtx(()=>[e.createElementVNode("span",ne,e.toDisplayString(r.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(Z._sfc_main,{key:1,modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=r=>d.value=r),items:l.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:n.value},null,8,["modelValue","items","selectAllItem"]))]))}}),k=-2,le={0:"Yandex",1:"Google",2:"go.Mail",4:"YouTube",5:"Bing",6:"Yahoo",7:"Seznam",8:"AppStore",9:"GoogleStore",20:"Yandex.com",21:"Yandex.com.tr"},L={key:k,name:"--",index:k},j={key:k,name:"--",regions:[L],regionByIndex:new Map([[k,L]])},A={key:k,name:"Autoselect",index:k},P={key:k,name:"Autoselect",regions:[A],regionByIndex:new Map([[k,A]])},J={countryCode:"00",depth:1,device:0,key:-1,index:-1,lang:"ru",name:"Without region"},ae=()=>(A.name=I.useI18n().Common.Autoselect,A),re=()=>(ae(),P.name=I.useI18n().Common.Autoselect,console.log(P),P),ie=()=>(J.name=I.useI18n().Keywords.Without_region,J),U=(t=!1,o=!1,d=[])=>{let n;return t?n=de(d):n=G(d),o&&n.set(k,re()),n.size||n.set(k,j),n},G=(t,o=!0,d=[],n=!1)=>{const l=new Map;return t.forEach(a=>{if(!a.enabled||n&&typeof a.key=="number"&&a.key>1)return;const r={...a};r.regionByIndex=new Map,a.regions&&a.regions.forEach(u=>{if(o&&!u.enabled)return;const f={...u};r.regionByIndex&&r.regionByIndex.set(f.index,f)}),!r.regionByIndex.size&&!d.length&&r.regionByIndex.set(L.index,L),typeof r.key=="number"&&l.set(r.key,r)}),d.forEach(a=>{if(l.has(a))return;const r={key:a,name:le[a],regions:[],regionByIndex:new Map};l.set(r.key,r)}),l},de=t=>{const o=G(t,!1,[0,1],!0);if(o.has(2)){const d=o.get(2);d&&(d.regionByIndex=new Map)}return o.forEach(d=>{if(!d.regionByIndex)return;const n={...ie()};d.regionByIndex.set(n.index,n)}),o},Y=(t,o,d=[])=>{const n=U(t,!1,d);let l;return n.forEach(a=>{if(!(o.searcher_key!==void 0&&o.searcher_key!=a.key)&&a.regions&&(a.regions.forEach(r=>{if(!l&&!(o.key!==void 0&&o.key!=r.key)&&!(o.index!==void 0&&o.index!=r.index)&&!(!t&&(o.lang!==void 0&&o.lang!=r.lang||o.device!==void 0&&o.device!=r.device)))return r.searcher_key=a.key,l=r,!1}),l))return!1}),l},se=(t,o)=>{const d=I.useI18n(),n=e.ref(o.value.keys().next().value??k),l=e.computed(()=>{const a=new Map;if(o.value.forEach(r=>{let u={value:r.key,title:r.name};t.addSearcherIcon&&(u.icon=q.getSearcherGIcon(r.key)),a.set(r.key,u)}),t.addCompare&&!a.has(k)){const r={value:"",title:"--------------------",disabled:!0};a.set(r.value,r);const u={value:-1,title:d.Common.Compare};a.set(u.value,u)}return a});return{searcherKey:n,optionBySearcherKey:l}},ue=(t,o)=>{var a,r,u;const d=I.useI18n(),n=e.ref(k);t.modelValue.length===1&&(n.value=t.modelValue[0]),n.value===k&&(t.forFrequency?n.value=((r=(a=o.value)==null?void 0:a.regionByIndex.values().next().value)==null?void 0:r.key)??k:n.value=((u=o.value)==null?void 0:u.regionByIndex.keys().next().value)??k);const l=e.computed(()=>{var v;const f=new Map;return(v=o.value.regionByIndex)==null||v.forEach(p=>{let i=p.name;if(t.forFrequency){const C={value:p.key,title:i};f.has(p.key)||f.set(p.key,C);return}p.device&&(i+=" ("+d.Common["Device_"+p.device]+")");const g=q.getLangLabel(o.value.key||0,p.lang??"");g&&(i+=" / "+g);const y={value:p.index,title:i,icon:p.device?q.getDeviceGIcon(p.device):void 0};f.set(p.index,y)}),f});return e.watch(l,(f,v)=>{var y;if(t.onlySearcher||n.value!==void 0&&f.get(n.value))return;let p=f.keys().next().value;if(n.value===k||p===k){n.value=p;return}let i=((y=v==null?void 0:v.get(n.value))==null?void 0:y.title)||"",g=-1;for(const[C,x]of f.entries()){const S=x.title;if(typeof S!="string"||typeof C=="string")break;if(S===i){p=C;break}const T=new RegExp(` \\((${d.Common.Device_1}|${d.Common.Device_2})\\)`);let B=i,c=3;S.indexOf(B)===-1&&(B=i.replace(/^[^a-zа-я]/i,"").replace(T,""),c--),S.indexOf(B)===-1&&(B=i.replace(/ \/.*/,""),c--),S.indexOf(B)===-1&&(B=i.replace(/ \/.*/,""),B=B.replace(/^[^a-zа-я]/i,"").replace(T,""),c--),S.indexOf(B)!==-1&&(c<=g||(g=c,p=C))}n.value=p}),{regionIndex:n,optionByRegionIndex:l}},ce=(t,o,d)=>{const n=e.ref([]),l=()=>{if(t.onlySearcher&&o.value){n.value=Array.from(o.value.keys());return}let r=[];if(t.modelValue.length>1)r=[...t.modelValue];else try{r=JSON.parse(localStorage.getItem("ui:project:regionSelector"+t.projectId+":regionsIndexes"))??[]}catch{}r.length&&(r=r.filter(u=>d.value.has(u))),r.length||(r=Array.from(d.value)),n.value=[...r]},a=()=>{n.value.length?localStorage.setItem("ui:project:regionSelector:"+t.projectId+":regionsIndexes",JSON.stringify(n.value)):localStorage.removeItem("ui:project:regionSelector:"+t.projectId+":regionsIndexes")};return e.watch(n,()=>{a()}),t.addCompare&&l(),{regionsIndexes:n}},me=t=>{const o=e.computed(()=>U(t.forFrequency,t.autoRegion,t.searchers)),d=e.computed(()=>o.value.get(l.searcherKey.value)||j),n=e.computed(()=>{const i=new Set;return o.value.forEach(g=>{var y;(y=g.regions)==null||y.forEach(C=>{C.index!==-1&&C.index!==k&&i.add(C.index)})}),i}),l=se(t,o),a=ue(t,d),r=ce(t,o,n);e.watch(o,()=>{var g,y,C,x;if(t.onlySearcher?r.regionsIndexes.value=Array.from(o.value.keys()):r.regionsIndexes.value=r.regionsIndexes.value.filter(S=>n.value.has(S)),l.searcherKey.value===-1)return;let i=o.value.keys().next().value;o.value.forEach(S=>{var T,B,c;if(t.onlySearcher&&S.key===l.searcherKey.value){i=l.searcherKey.value;return}if(a.regionIndex.value&&((T=S.regionByIndex)!=null&&T.has(a.regionIndex.value))&&(i=S.key),!t.onlySearcher){let s;i!==void 0&&(s=(B=o.value.get(i))==null?void 0:B.regionByIndex);const m=(c=o.value.get(S.key))==null?void 0:c.regionByIndex;s!=null&&s.has(k)&&!(m!=null&&m.has(k))&&(i=S.key)}}),i!==void 0&&(l.searcherKey.value=i),a.regionIndex.value!==void 0&&!((y=(g=d.value)==null?void 0:g.regionByIndex)!=null&&y.has(a.regionIndex.value))&&(a.regionIndex.value=(x=(C=d.value)==null?void 0:C.regions)==null?void 0:x.keys().next().value)},{immediate:!0});const u=()=>{if(!(l.searcherKey.value===-1||l.searcherKey.value===k))return l.searcherKey.value},f=()=>{if(t.onlySearcher||a.regionIndex.value===k)return;let i=a.regionIndex.value;if(t.forFrequency){const g=a.regionIndex.value,y=Y(t.forFrequency,{searcher_key:u(),key:g},t.searchers);i=y==null?void 0:y.index}return i},v=()=>{const i=u();if(i!==void 0)return o.value.get(i)};return{selectSearcher:l,selectRegion:a,compare:r,searcherByKey:o,allRegionsIndexes:n,getSearcher:v,getRegion:()=>{var g,y;const i=f();if(i!==void 0)return(y=(g=v())==null?void 0:g.regionByIndex)==null?void 0:y.get(i)}}},ge=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:e.mergeModels(["compareRegions"],["update:modelValue","update:modelValueSingle"]),setup(t,{expose:o,emit:d}){const n=t,l=e.useModel(t,"modelValue"),a=e.useModel(t,"modelValueSingle"),r=d,{selectSearcher:u,selectRegion:f,compare:v,searcherByKey:p,allRegionsIndexes:i,getSearcher:g,getRegion:y}=me(n),C=()=>{var x;if(window.fieldTemplates&&((x=window.fieldTemplates)!=null&&x.openSelectorRegions)){window.fieldTemplates.openSelectorRegions(p.value,v.regionsIndexes.value,S=>v.regionsIndexes.value=S);return}r("compareRegions",p.value)};return e.watch([f.regionIndex,u.searcherKey,v.regionsIndexes],()=>{if(u.searcherKey.value===-1&&v.regionsIndexes.value.length){if(JSON.stringify(l.value)===JSON.stringify(v.regionsIndexes.value))return;l.value=[...v.regionsIndexes.value]}else l.value=[n.onlySearcher?u.searcherKey.value:f.regionIndex.value];!n.onlySearcher&&!i.value.size&&(u.searcherKey.value=k)}),a.value&&e.watch(a,()=>{l.value=[a.value]},{immediate:!0}),e.watch(l,()=>{var x,S,T,B,c;if(l.value[0]&&(a.value=l.value[0]),n.onlySearcher){if(!l.value.length||l.value.length===1&&!p.value.has(l.value[0])){let s=p.value.keys().next().value;s!==void 0&&(l.value=[s]);return}if(l.value.length>1&&JSON.stringify(l.value)!==JSON.stringify(v.regionsIndexes.value)){l.value=[...v.regionsIndexes.value];return}}else{let s=[...new Set(l.value)],m=(S=(x=p.value.values().next().value)==null?void 0:x.regionByIndex)==null?void 0:S.keys().next().value;if(n.forFrequency&&(m=(c=(B=(T=p.value.values().next().value)==null?void 0:T.regionByIndex)==null?void 0:B.values().next().value)==null?void 0:c.key),!s.length)m!==void 0&&s.push(m);else if(s.length===1){let h=i.value;n.forFrequency&&(h=new Set,p.value.forEach(V=>{V.regionByIndex.forEach(M=>{M.index!==-1&&M.index!==k&&h.add(M.key)})})),!h.has(s[0])&&s[0]!==-2&&(s=[],m!==void 0&&s.push(m))}else s=s.filter(h=>i.value.has(h)),!s.length&&m!==void 0&&s.push(m);if(JSON.stringify(l.value)!==JSON.stringify(s)){l.value=s;return}}if(!(l.value.length===1&&l.value[0]===(n.onlySearcher?u.searcherKey.value:f.regionIndex.value)))if(n.onlySearcher){if(l.value.length===1){u.searcherKey.value=l.value[0];return}u.searcherKey.value=-1;return}else if(l.value.length===1&&u.searcherKey.value!==-1){f.regionIndex.value=l.value[0];let s;for(const m of p.value.values()){for(const h of m.regionByIndex.values())if((n.forFrequency?h.key:h.index)===f.regionIndex.value){s=m.key;break}if(s!==void 0)break}s!==void 0&&(u.searcherKey.value=s)}else u.searcherKey.value=-1,v.regionsIndexes.value=[...l.value]},{immediate:!0}),o({getSearcher:g,getRegion:y}),(x,S)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":x.onlySearcher})},[e.createVNode(I._sfc_main$4,{options:e.unref(u).optionBySearcherKey.value,modelValue:e.unref(u).searcherKey.value,"onUpdate:modelValue":S[0]||(S[0]=T=>e.unref(u).searcherKey.value=T),name:"searcher_key",addChanger:x.addChanger},null,8,["options","modelValue","addChanger"]),!x.onlySearcher&&e.unref(u).searcherKey.value!==-1?(e.openBlock(),e.createBlock(I._sfc_main$4,{key:0,class:"top-select-region",options:e.unref(f).optionByRegionIndex.value,modelValue:e.unref(f).regionIndex.value,"onUpdate:modelValue":S[1]||(S[1]=T=>e.unref(f).regionIndex.value=T),name:x.forFrequency?"region_key":"region_index",addChanger:x.addChanger,"data-top-icon":x.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),x.addCompare&&!x.onlySearcher&&e.unref(u).searcherKey.value===-1?(e.openBlock(),e.createBlock(I._sfc_main,{key:1,name:"compare",onClick:C,"data-count-compare-regions-indexes":e.unref(v).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),fe=[{id:"1",name:"Without Tag",color_id:"1"},{id:"2",name:"Red",color_id:"2"},{id:"3",name:"Orange",color_id:"3"},{id:"4",name:"Yellow",color_id:"4"},{id:"5",name:"Blue",color_id:"5"},{id:"6",name:"Purple",color_id:"6"},{id:"7",name:"Green",color_id:"7"},{id:"8",name:"Magenta",color_id:"8"},{id:"9",name:"Dark blue",color_id:"9"},{id:"10",name:"Turquoise",color_id:"10"}],W=t=>"-"+t,K=t=>t[0]==="-"?t.substring(1):t,O=(t,o)=>{t=K(t);const d=o.find(n=>n.id===t);if(d)return d},ve=["data-tag_id","data-tag_color_id","title"],R=e.defineComponent({__name:"tagIcon",props:{id:{},colorId:{},name:{},state:{}},setup(t){return(o,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!o.state,"top-tagSelector-excluded":o.state==="excluded"}),"data-tag_id":o.id,"data-tag_color_id":o.colorId,title:o.name},null,10,ve))}}),pe=["contenteditable","onKeydown"],H=e.defineComponent({__name:"tagPopupListItem",props:e.mergeModels({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:e.mergeModels(["update:name","unselect","exclude","select"],["update:name"]),setup(t,{emit:o}){const d=t,n=o,l=e.useModel(t,"name"),a=e.ref(null),r=e.computed(()=>navigator.userAgent.indexOf("Firefox")!=-1?{contenteditable:u.value,onpaste:g=>g.preventDefault()}:{}),u=e.ref(!1),f=async()=>{var g;u.value=!0,await e.nextTick(),(g=a.value)==null||g.focus()},v=()=>{var y;const g=(y=a.value)==null?void 0:y.innerText;if(!g)return p();a.value&&(a.value.innerText=g),u.value=!1,n("update:name",g)},p=async()=>{a.value&&(a.value.innerText=d.name),u.value=!1},i=g=>{if(u.value||d.disabled)return;let y="selected";d.canExclude&&(g.ctrlKey||g.metaKey)&&(y="excluded"),d.state==y&&(y=""),y===""&&n("unselect"),y==="selected"&&n("select"),y==="excluded"&&n("exclude")};return(g,y)=>(e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":u.value,"top-tagSelector_tagListItem-disabled":g.disabled,"top-tagSelector_tagListItem-canExclude":g.canExclude,"top-tagSelector-active":!!g.state,"top-tagSelector-excluded":g.state==="excluded"}),onClick:e.withModifiers(i,["stop"])},{default:e.withCtx(()=>[e.createVNode(R,{id:g.id,name:l.value,colorId:g.colorId,state:g.state},null,8,["id","name","colorId","state"]),e.createElementVNode("span",e.mergeProps({ref_key:"elName",ref:a,class:"top-tagSelector_tagListItemName",contenteditable:u.value?"plaintext-only":!1},r.value,{onKeydown:[e.withKeys(e.withModifiers(v,["stop"]),["enter"]),e.withKeys(e.withModifiers(p,["stop"]),["esc"])]}),e.toDisplayString(l.value),17,pe),g.editable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[u.value?(e.openBlock(),e.createElementBlock("span",{key:1,"data-top-icon":"",class:"top-tagSelector_edit",onClick:e.withModifiers(v,["stop"])})):(e.openBlock(),e.createElementBlock("span",{key:0,"data-top-icon":"",class:"top-tagSelector_edit",onClick:f}))],64)):e.createCommentVNode("",!0)]),_:1},8,["class"]))}}),ye={key:1},Q=e.defineComponent({inheritAttrs:!1,__name:"popupOpener",props:e.mergeModels({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const o=t,d=e.useModel(t,"modelValue"),n=o.useTopButton?I._sfc_main:"div",l=o.useTopButton?"html":"default",a={model:d,mode:o.mode,targetId:o.targetId,filters:o.filters,payload:o.payload};return(r,u)=>{const f=e.resolveDirective("top-data");return e.openBlock(),e.createBlock(E._sfc_main$1,{id:r.id},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(n)),e.mergeProps({class:{"top-tagSelector":!0,"top-tagSelector-filter":o.mode==="filter","top-tagSelector-setter_single":o.mode==="setter"&&!r.filters,"top-tagSelector-setter_several":o.mode==="setter"&&r.filters,"top-tagSelector-selectedOne":!d.value.length||d.value.length===1,"top-tagSelector-toTwoLine":d.value.length>5},color:"theme",styling:""},r.$attrs),{[e.unref(l)]:e.withCtx(()=>[!d.value.length&&r.mode==="filter"?(e.openBlock(),e.createBlock(R,{key:0,id:"all",colorId:"",name:r.$i18n.Common.All_tags??"",state:""},null,8,["name"])):e.createCommentVNode("",!0),r.mode==="setter"&&r.filters?(e.openBlock(),e.createElementBlock("div",ye,[e.renderSlot(r.$slots,"default")])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(d.value,v=>{var p,i;return e.openBlock(),e.createBlock(R,{id:e.unref(K)(v),colorId:((p=e.unref(O)(v,r.tags))==null?void 0:p.color_id)??"",name:((i=e.unref(O)(v,r.tags))==null?void 0:i.name)??"",state:e.unref(K)(v)===v?"selected":"excluded"},null,8,["id","colorId","name","state"])}),256))]),_:2},1040,["class"])),[[f,a,"topTagSelectorTarget"]])]),_:3},8,["id"])}}}),he=e.defineComponent({__name:"tagSelector",props:e.mergeModels({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500}},{modelValue:{required:!0},modelModifiers:{},tags:{default:e.reactive(fe)},tagsModifiers:{}}),emits:e.mergeModels(["selector","setter","tagsChanged"],["update:modelValue","update:tags"]),setup(t,{emit:o}){const d=I.useI18n(),n=t,l=e.useModel(t,"modelValue"),a=e.useModel(t,"tags"),r=o,u=I.debounce((c,s)=>{r(c,s)},n.emitDelay);n.singleMode&&!l.value.length&&(l.value=[a.value[0].id]);const f=n.id??"top-popup-id-"+Math.random(),v=e.ref("add"),p=()=>{var m;const c=" "+((m=d.Common.Tags)==null?void 0:m.toLowerCase()),s=new Map;return s.set("add",{value:"add",title:d.Common.Add+c}),s.set("replace",{value:"replace",title:d.Common.Replace+c}),s.set("delete",{value:"delete",title:d.Common.Delete+c}),s};let i=e.shallowRef({model:l,mode:"filter",targetId:void 0,filters:void 0,payload:void 0});e.watch(l,()=>{u("selector",l.value)});const g=e.computed(()=>{if(i.value.mode==="setter"&&n.maxTagsForSetter&&!i.value.filters)return i.value.model.value.length>=n.maxTagsForSetter}),y=c=>{if(c!=="all"){if(i.value.model.value.includes(c))return"selected";if(i.value.model.value.includes(W(c)))return"excluded"}return c==="all"&&!i.value.model.value.length?"selected":""},C=(c,s)=>{const m=W(c);let h=i.value.model.value.filter(V=>V!==c&&V!==m);s==="select"&&h.push(c),s==="exclude"&&h.push(m),i.value.mode==="setter"&&i.value.targetId!==void 0&&n.requiredForSetter&&(h.length||h.push("1"),h.length===2&&i.value.model.value.length===1&&i.value.model.value[0]==="1"&&(h=h.filter(V=>V!=="1"))),n.singleMode&&!i.value.filters&&(h.length||(h=i.value.model.value),h.length>1&&(h=[h[h.length-1]])),h.sort((V,M)=>{if(!n.tags)return 0;const F=n.tags.findIndex(b=>b.id===V),N=n.tags.findIndex(b=>b.id===M);return F-N}),i.value.model.value=h,i.value.mode==="setter"&&i.value.targetId!==void 0&&u("setter",{tagsIds:h,targetId:i.value.targetId,payload:i.value.payload})},x=e.computed(()=>{let c="top-tagSelector_popup";return i.value.mode==="filter"&&(c+=" top-tagSelector_popup-filter"),i.value.mode==="setter"&&(c+=" top-tagSelector_popup-setter"),c}),S=()=>{const c=prompt("","New tag");if(!c||c==="New tag")return;const s=a.value.length+1;a.value.push({id:String(s),name:c,color_id:String((s-1)%10+1)}),r("tagsChanged",a.value)},T=c=>{var s;if(i.value=_.storage(c.elPopupOpener,"topTagSelectorTarget"),!i.value)throw new Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");if(i.value.filters&&(v.value="add",i.value.model.value=[]),!((s=I.Core.$)!=null&&s.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}!I.Core.state.isMobile&&!I.Core.state.isMobileUA&&a.value&&$(c.elPopup).sortable({items:'li:has([data-tag_id]:not([data-tag_id="all"]))',cancel:'[contenteditable="plaintext-only"], [contenteditable="true"]',distance:10,stop:function(m,h){if(!a.value)return;const V=$(h.item).parent().find("[data-tag_id]"),M=[];V.each((F,N)=>{if(!a.value)return;const b=$(N).attr("data-tag_id");M.push(b)}),a.value.sort((F,N)=>{const b=M.findIndex(z=>z===F.id),Ve=M.findIndex(z=>z===N.id);return b-Ve}),u("tagsChanged",a.value)}})},B=c=>{var s;(s=I.Core.$)!=null&&s.ui.sortable&&$(c.elPopup).data("ui-sortable")&&$(c.elPopup).sortable("destroy")};return(c,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Q,{class:"top-select_arrow",modelValue:l.value,"onUpdate:modelValue":s[0]||(s[0]=m=>l.value=m),id:e.unref(f),tags:a.value,mode:"filter",useTopButton:""},null,8,["modelValue","id","tags"]),e.createVNode(E._sfc_main,{id:e.unref(f),class:e.normalizeClass(x.value),onOpen:s[4]||(s[4]=m=>T(m)),onClose:s[5]||(s[5]=m=>B(m)),"transition-duration":50},e.createSlots({contentList:e.withCtx(()=>[e.unref(i).mode==="filter"&&!c.singleMode?(e.openBlock(),e.createBlock(H,{key:0,id:"all",colorId:"",name:c.$i18n.Common.All_tags??"",state:e.unref(i).model.value.length?"":"selected",onSelect:s[3]||(s[3]=m=>e.unref(i).model.value=[])},null,8,["name","state"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,m=>(e.openBlock(),e.createBlock(H,{key:m.id,id:m.id,colorId:m.color_id,name:m.name,state:y(m.id),canExclude:e.unref(i).mode==="filter"&&!c.singleMode,editable:c.tagsEditable,disabled:g.value&&y(m.id)==="",onUnselect:h=>C(m.id,"unselect"),onSelect:h=>C(m.id,"select"),onExclude:h=>C(m.id,"exclude"),"onUpdate:name":h=>{m.name=h,e.unref(u)("tagsChanged",a.value)}},null,8,["id","colorId","name","state","canExclude","editable","disabled","onUnselect","onSelect","onExclude","onUpdate:name"]))),128)),c.tagsEditable&&a.value.length<c.tagsMax&&a.value.length<20?(e.openBlock(),e.createBlock(E._sfc_main$2,{key:1,"data-top-icon":"",onClick:e.withModifiers(S,["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Add),1)]),_:1})):e.createCommentVNode("",!0)]),_:2},[e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"header",fn:e.withCtx(()=>[e.createVNode(I._sfc_main$4,{modelValue:v.value,"onUpdate:modelValue":s[1]||(s[1]=m=>v.value=m),options:p()},null,8,["modelValue","options"])]),key:"0"}:void 0,e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"footer",fn:e.withCtx(()=>[e.createVNode(I._sfc_main,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(I._sfc_main,{onClick:s[2]||(s[2]=m=>e.unref(u)("setter",{tagsIds:e.unref(i).model.value,filters:e.unref(i).filters,filtersAction:v.value,payload:e.unref(i).payload}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value==="add"?c.$i18n.Common.Add:"")+" "+e.toDisplayString(v.value==="replace"?c.$i18n.Common.Replace:"")+" "+e.toDisplayString(v.value==="delete"?c.$i18n.Common.Remove:""),1)]),_:1})]),key:"1"}:void 0]),1032,["id","class"])],64))}}),Se=(t,o)=>e.computed(()=>e.toValue(t).filter(l=>l.on>=0||l.id===o).map(l=>({value:l.id,title:l.url+` [${l.id}]`,icon:l.id===e.toValue(o)?"":"",content:l.name}))),ke=(t,o,d)=>{o||(o={id:t.id}),o.id=t.id;const n=ee.TopPopupWorker.genElPopupOpener("div",o);return n.classList.add("top-tagSelector"),t.useTopButton&&n.classList.add("top-button","top-color_theme"),t.mode==="filter"&&n.classList.add("top-tagSelector-filter"),t.mode==="setter"&&!t.filters&&n.classList.add("top-tagSelector-setter_single"),t.mode==="setter"&&t.filters&&n.classList.add("top-tagSelector-setter_several"),n.onclick=l=>{l.preventDefault(),l.stopPropagation(),n.onclick=null;const a=e.ref(t.modelValue),r={model:a,mode:t.mode,targetId:t.targetId,filters:t.filters,payload:t.payload};_.storage(n,"topTagSelectorTarget",r),delete n.dataset.topPopupDisabled,e.isRef(t.modelValue)||e.watch(a,()=>{t.modelValue=a.value,D(n,t,d)}),n.click()},e.isRef(t.modelValue)?e.watch(t.modelValue,()=>D(n,t,d)):_.storage(n,"topTagSelectorRender",l=>{t.modelValue=l;const a=_.storage(n,"topTagSelectorTarget");a&&(a.model.value=l),D(n,t,d)}),D(n,t,d),n},Ie=(t,o)=>{var d;(d=_.storage(t,"topTagSelectorRender"))==null||d(o)},D=(t,o,d)=>{var l;const n=e.unref(o.modelValue);if(t.classList.toggle("top-tagSelector-selectedOne",!n.length||n.length===1),t.classList.toggle("top-tagSelector-toTwoLine",n.length>5),o.mode==="setter"&&o.filters){t.innerHTML=`<div>${d}</div>`;return}if(t.innerHTML="",!n.length&&o.mode==="filter"){const a=X({id:"all",colorId:"",name:((l=I.useI18n().Common)==null?void 0:l.All_tags)??"",state:""});t.append(a)}n.forEach(a=>{var u,f;const r=X({id:K(a),colorId:((u=O(a,o.tags))==null?void 0:u.color_id)??"",name:((f=O(a,o.tags))==null?void 0:f.name)??"",state:K(a)===a?"selected":"excluded"});t.append(r)})},X=t=>{const o=document.createElement("div");return o.classList.add("top-tagSelector_tagIcon"),o.classList.toggle("top-tagSelector-active",!!t.state),o.classList.toggle("top-tagSelector-excluded",t.state==="excluded"),o.dataset.tag_id=t.id,o.dataset.tag_color_id=t.colorId,o.title=t.name,o},xe=oe,Ce=ge,Be=he,Te=Q,we=R;w.TopSelectorCompetitors=xe,w.TopSelectorRegion=Ce,w.TopTagSelector=Be,w.TopTagSelectorPopupOpener=Te,w.TopTagSelectorTagIcon=we,w.findRegion=Y,w.genElTopTagSelectorPopupOpener=ke,w.genSearcherByKey=U,w.renderElTopTagSelectorPopupOpener=Ie,w.useItemsFromCompetitors=Se,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../.chunks/forms-CgS7En_e.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-DwVG6MzF.amd","../.chunks/menu.vue_vue_type_style_index_0_lang-Dpm2Wnt9.amd","../utils/searchers.amd","../utils/dom.amd","../popup/worker.amd","../require/css.amd!../assets/project.css"],function(Me,w,e,I,E,Z,q,_,ee){"use strict";if(typeof e>"u")var e=window.Vue;const te={class:"top-selectorCompetitors"},ne={class:"top-ellipsis1"},oe=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const o=t,d=e.useModel(t,"modelValue"),n=e.computed(()=>{if(o.showSelectAllItem)return{icon:"",title:I.useI18n().Common.Select_all,value:"all",content:""}});return(l,a)=>(e.openBlock(),e.createElementBlock("div",te,[e.unref(I.Core).state.isMobile?(e.openBlock(),e.createBlock(E._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(I._sfc_main,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var r;return[e.createTextVNode(e.toDisplayString((r=l.items.find(s=>{var g;return s.value===((g=d.value)==null?void 0:g[0])}))==null?void 0:r.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.items,(r,s)=>{var g;return e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-active":(g=d.value)==null?void 0:g.includes(r.value)}),"data-top-icon":r.icon,title:r.title,onClick:()=>d.value=[r.value]},{default:e.withCtx(()=>[e.createElementVNode("span",ne,e.toDisplayString(r.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(Z._sfc_main,{key:1,modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=r=>d.value=r),items:l.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:n.value},null,8,["modelValue","items","selectAllItem"]))]))}}),k=-2,le={0:"Yandex",1:"Google",2:"go.Mail",4:"YouTube",5:"Bing",6:"Yahoo",7:"Seznam",8:"AppStore",9:"GoogleStore",20:"Yandex.com",21:"Yandex.com.tr"},L={key:k,name:"--",index:k},j={key:k,name:"--",regions:[L],regionByIndex:new Map([[k,L]])},A={key:k,name:"Autoselect",index:k},P={key:k,name:"Autoselect",regions:[A],regionByIndex:new Map([[k,A]])},J={countryCode:"00",depth:1,device:0,key:-1,index:-1,lang:"ru",name:"Without region"},ae=()=>(A.name=I.useI18n().Common.Autoselect,A),re=()=>(ae(),P.name=I.useI18n().Common.Autoselect,console.log(P),P),ie=()=>(J.name=I.useI18n().Keywords.Without_region,J),U=(t=!1,o=!1,d=[])=>{let n;return t?n=de(d):n=G(d),o&&n.set(k,re()),n.size||n.set(k,j),n},G=(t,o=!0,d=[],n=!1)=>{const l=new Map;return t.forEach(a=>{if(!a.enabled||n&&typeof a.key=="number"&&a.key>1)return;const r={...a};r.regionByIndex=new Map,a.regions&&a.regions.forEach(s=>{if(o&&!s.enabled)return;const g={...s};r.regionByIndex&&r.regionByIndex.set(g.index,g)}),!r.regionByIndex.size&&!d.length&&r.regionByIndex.set(L.index,L),typeof r.key=="number"&&l.set(r.key,r)}),d.forEach(a=>{if(l.has(a))return;const r={key:a,name:le[a],regions:[],regionByIndex:new Map};l.set(r.key,r)}),l},de=t=>{const o=G(t,!1,[0,1],!0);if(o.has(2)){const d=o.get(2);d&&(d.regionByIndex=new Map)}return o.forEach(d=>{if(!d.regionByIndex)return;const n={...ie()};d.regionByIndex.set(n.index,n)}),o},Y=(t,o,d=[])=>{const n=U(t,!1,d);let l;return n.forEach(a=>{if(!(o.searcher_key!==void 0&&o.searcher_key!=a.key)&&a.regions&&(a.regions.forEach(r=>{if(!l&&!(o.key!==void 0&&o.key!=r.key)&&!(o.index!==void 0&&o.index!=r.index)&&!(!t&&(o.lang!==void 0&&o.lang!=r.lang||o.device!==void 0&&o.device!=r.device)))return r.searcher_key=a.key,l=r,!1}),l))return!1}),l},ue=(t,o)=>{const d=I.useI18n(),n=e.ref(o.value.keys().next().value??k),l=e.computed(()=>{const a=new Map;if(o.value.forEach(r=>{let s={value:r.key,title:r.name};t.addSearcherIcon&&(s.icon=q.getSearcherGIcon(r.key)),a.set(r.key,s)}),t.addCompare&&!a.has(k)){const r={value:"",title:"--------------------",disabled:!0};a.set(r.value,r);const s={value:-1,title:d.Common.Compare};a.set(s.value,s)}return a});return{searcherKey:n,optionBySearcherKey:l}},se=(t,o)=>{var a,r,s;const d=I.useI18n(),n=e.ref(k);t.modelValue.length===1&&(n.value=t.modelValue[0]),n.value===k&&(t.forFrequency?n.value=((r=(a=o.value)==null?void 0:a.regionByIndex.values().next().value)==null?void 0:r.key)??k:n.value=((s=o.value)==null?void 0:s.regionByIndex.keys().next().value)??k);const l=e.computed(()=>{var v;const g=new Map;return(v=o.value.regionByIndex)==null||v.forEach(p=>{let i=p.name;if(t.forFrequency){const C={value:p.key,title:i};g.has(p.key)||g.set(p.key,C);return}p.device&&(i+=" ("+d.Common["Device_"+p.device]+")");const m=q.getLangLabel(o.value.key||0,p.lang??"");m&&(i+=" / "+m);const y={value:p.index,title:i,icon:p.device?q.getDeviceGIcon(p.device):void 0};g.set(p.index,y)}),g});return e.watch(l,(g,v)=>{var y;if(t.onlySearcher||n.value!==void 0&&g.get(n.value))return;let p=g.keys().next().value;if(n.value===k||p===k){n.value=p;return}let i=((y=v==null?void 0:v.get(n.value))==null?void 0:y.title)||"",m=-1;for(const[C,x]of g.entries()){const S=x.title;if(typeof S!="string"||typeof C=="string")break;if(S===i){p=C;break}const T=new RegExp(` \\((${d.Common.Device_1}|${d.Common.Device_2})\\)`);let B=i,c=3;S.indexOf(B)===-1&&(B=i.replace(/^[^a-zа-я]/i,"").replace(T,""),c--),S.indexOf(B)===-1&&(B=i.replace(/ \/.*/,""),c--),S.indexOf(B)===-1&&(B=i.replace(/ \/.*/,""),B=B.replace(/^[^a-zа-я]/i,"").replace(T,""),c--),S.indexOf(B)!==-1&&(c<=m||(m=c,p=C))}n.value=p}),{regionIndex:n,optionByRegionIndex:l}},ce=(t,o,d)=>{const n=e.ref([]),l=()=>{if(t.onlySearcher&&o.value){n.value=Array.from(o.value.keys());return}let r=[];if(t.modelValue.length>1)r=[...t.modelValue];else try{r=JSON.parse(localStorage.getItem("ui:project:regionSelector"+t.projectId+":regionsIndexes"))??[]}catch{}r.length&&(r=r.filter(s=>d.value.has(s))),r.length||(r=Array.from(d.value)),n.value=[...r]},a=()=>{n.value.length?localStorage.setItem("ui:project:regionSelector:"+t.projectId+":regionsIndexes",JSON.stringify(n.value)):localStorage.removeItem("ui:project:regionSelector:"+t.projectId+":regionsIndexes")};return e.watch(n,()=>{a()}),t.addCompare&&l(),{regionsIndexes:n}},fe=t=>{const o=e.computed(()=>U(t.forFrequency,t.autoRegion,t.searchers)),d=e.computed(()=>o.value.get(l.searcherKey.value)||j),n=e.computed(()=>{const i=new Set;return o.value.forEach(m=>{var y;(y=m.regions)==null||y.forEach(C=>{C.index!==-1&&C.index!==k&&i.add(C.index)})}),i}),l=ue(t,o),a=se(t,d),r=ce(t,o,n);e.watch(o,()=>{var m,y,C,x;if(t.onlySearcher?r.regionsIndexes.value=Array.from(o.value.keys()):r.regionsIndexes.value=r.regionsIndexes.value.filter(S=>n.value.has(S)),l.searcherKey.value===-1)return;let i=o.value.keys().next().value;o.value.forEach(S=>{var T,B,c;if(t.onlySearcher&&S.key===l.searcherKey.value){i=l.searcherKey.value;return}if(a.regionIndex.value&&((T=S.regionByIndex)!=null&&T.has(a.regionIndex.value))&&(i=S.key),!t.onlySearcher){let u;i!==void 0&&(u=(B=o.value.get(i))==null?void 0:B.regionByIndex);const f=(c=o.value.get(S.key))==null?void 0:c.regionByIndex;u!=null&&u.has(k)&&!(f!=null&&f.has(k))&&(i=S.key)}}),i!==void 0&&(l.searcherKey.value=i),a.regionIndex.value!==void 0&&!((y=(m=d.value)==null?void 0:m.regionByIndex)!=null&&y.has(a.regionIndex.value))&&(a.regionIndex.value=(x=(C=d.value)==null?void 0:C.regions)==null?void 0:x.keys().next().value)},{immediate:!0});const s=()=>{if(!(l.searcherKey.value===-1||l.searcherKey.value===k))return l.searcherKey.value},g=()=>{if(t.onlySearcher||a.regionIndex.value===k)return;let i=a.regionIndex.value;if(t.forFrequency){const m=a.regionIndex.value,y=Y(t.forFrequency,{searcher_key:s(),key:m},t.searchers);i=y==null?void 0:y.index}return i},v=()=>{const i=s();if(i!==void 0)return o.value.get(i)};return{selectSearcher:l,selectRegion:a,compare:r,searcherByKey:o,allRegionsIndexes:n,getSearcher:v,getRegion:()=>{var m,y;const i=g();if(i!==void 0)return(y=(m=v())==null?void 0:m.regionByIndex)==null?void 0:y.get(i)}}},me=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:e.mergeModels(["compareRegions"],["update:modelValue","update:modelValueSingle"]),setup(t,{expose:o,emit:d}){const n=t,l=e.useModel(t,"modelValue"),a=e.useModel(t,"modelValueSingle"),r=d,{selectSearcher:s,selectRegion:g,compare:v,searcherByKey:p,allRegionsIndexes:i,getSearcher:m,getRegion:y}=fe(n),C=()=>{var x;if(window.fieldTemplates&&((x=window.fieldTemplates)!=null&&x.openSelectorRegions)){window.fieldTemplates.openSelectorRegions(p.value,v.regionsIndexes.value,S=>v.regionsIndexes.value=S);return}r("compareRegions",p.value)};return e.watch([g.regionIndex,s.searcherKey,v.regionsIndexes],()=>{if(s.searcherKey.value===-1&&v.regionsIndexes.value.length){if(JSON.stringify(l.value)===JSON.stringify(v.regionsIndexes.value))return;l.value=[...v.regionsIndexes.value]}else l.value=[n.onlySearcher?s.searcherKey.value:g.regionIndex.value];!n.onlySearcher&&!i.value.size&&(s.searcherKey.value=k)}),a.value&&e.watch(a,()=>{l.value=[a.value]},{immediate:!0}),e.watch(l,()=>{var x,S,T,B,c;if(l.value[0]&&(a.value=l.value[0]),n.onlySearcher){if(!l.value.length||l.value.length===1&&!p.value.has(l.value[0])){let u=p.value.keys().next().value;u!==void 0&&(l.value=[u]);return}if(l.value.length>1&&JSON.stringify(l.value)!==JSON.stringify(v.regionsIndexes.value)){l.value=[...v.regionsIndexes.value];return}}else{let u=[...new Set(l.value)],f=(S=(x=p.value.values().next().value)==null?void 0:x.regionByIndex)==null?void 0:S.keys().next().value;if(n.forFrequency&&(f=(c=(B=(T=p.value.values().next().value)==null?void 0:T.regionByIndex)==null?void 0:B.values().next().value)==null?void 0:c.key),!u.length)f!==void 0&&u.push(f);else if(u.length===1){let h=i.value;n.forFrequency&&(h=new Set,p.value.forEach(V=>{V.regionByIndex.forEach(M=>{M.index!==-1&&M.index!==k&&h.add(M.key)})})),!h.has(u[0])&&u[0]!==-2&&(u=[],f!==void 0&&u.push(f))}else u=u.filter(h=>i.value.has(h)),!u.length&&f!==void 0&&u.push(f);if(JSON.stringify(l.value)!==JSON.stringify(u)){l.value=u;return}}if(!(l.value.length===1&&l.value[0]===(n.onlySearcher?s.searcherKey.value:g.regionIndex.value)))if(n.onlySearcher){if(l.value.length===1){s.searcherKey.value=l.value[0];return}s.searcherKey.value=-1;return}else if(l.value.length===1&&s.searcherKey.value!==-1){g.regionIndex.value=l.value[0];let u;for(const f of p.value.values()){for(const h of f.regionByIndex.values())if((n.forFrequency?h.key:h.index)===g.regionIndex.value){u=f.key;break}if(u!==void 0)break}u!==void 0&&(s.searcherKey.value=u)}else s.searcherKey.value=-1,v.regionsIndexes.value=[...l.value]},{immediate:!0}),o({getSearcher:m,getRegion:y}),(x,S)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":x.onlySearcher})},[e.createVNode(I._sfc_main$4,{options:e.unref(s).optionBySearcherKey.value,modelValue:e.unref(s).searcherKey.value,"onUpdate:modelValue":S[0]||(S[0]=T=>e.unref(s).searcherKey.value=T),name:"searcher_key",addChanger:x.addChanger},null,8,["options","modelValue","addChanger"]),!x.onlySearcher&&e.unref(s).searcherKey.value!==-1?(e.openBlock(),e.createBlock(I._sfc_main$4,{key:0,class:"top-select-region",options:e.unref(g).optionByRegionIndex.value,modelValue:e.unref(g).regionIndex.value,"onUpdate:modelValue":S[1]||(S[1]=T=>e.unref(g).regionIndex.value=T),name:x.forFrequency?"region_key":"region_index",addChanger:x.addChanger,"data-top-icon":x.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),x.addCompare&&!x.onlySearcher&&e.unref(s).searcherKey.value===-1?(e.openBlock(),e.createBlock(I._sfc_main,{key:1,name:"compare",onClick:C,"data-count-compare-regions-indexes":e.unref(v).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),ge=[{id:"1",name:"Without Tag",color_id:"1"},{id:"2",name:"Red",color_id:"2"},{id:"3",name:"Orange",color_id:"3"},{id:"4",name:"Yellow",color_id:"4"},{id:"5",name:"Blue",color_id:"5"},{id:"6",name:"Purple",color_id:"6"},{id:"7",name:"Green",color_id:"7"},{id:"8",name:"Magenta",color_id:"8"},{id:"9",name:"Dark blue",color_id:"9"},{id:"10",name:"Turquoise",color_id:"10"}],W=t=>"-"+t,K=t=>t[0]==="-"?t.substring(1):t,O=(t,o)=>{t=K(t);const d=o.find(n=>n.id===t);if(d)return d},ve=["data-tag_id","data-tag_color_id","title"],R=e.defineComponent({__name:"tagIcon",props:{id:{},colorId:{},name:{},state:{}},setup(t){return(o,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!o.state,"top-tagSelector-excluded":o.state==="excluded"}),"data-tag_id":o.id,"data-tag_color_id":o.colorId,title:o.name},null,10,ve))}}),pe=["contenteditable","onKeydown"],H=e.defineComponent({__name:"tagPopupListItem",props:e.mergeModels({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:e.mergeModels(["update:name","unselect","exclude","select"],["update:name"]),setup(t,{emit:o}){const d=t,n=o,l=e.useModel(t,"name"),a=e.ref(null),r=e.computed(()=>navigator.userAgent.indexOf("Firefox")!=-1?{contenteditable:s.value,onpaste:m=>m.preventDefault()}:{}),s=e.ref(!1),g=async()=>{var m;s.value=!0,await e.nextTick(),(m=a.value)==null||m.focus()},v=()=>{var y;const m=(y=a.value)==null?void 0:y.innerText;if(!m)return p();a.value&&(a.value.innerText=m),s.value=!1,n("update:name",m)},p=async()=>{a.value&&(a.value.innerText=d.name),s.value=!1},i=m=>{if(s.value||d.disabled)return;let y="selected";d.canExclude&&(m.ctrlKey||m.metaKey)&&(y="excluded"),d.state==y&&(y=""),y===""&&n("unselect"),y==="selected"&&n("select"),y==="excluded"&&n("exclude")};return(m,y)=>(e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":m.disabled,"top-tagSelector_tagListItem-canExclude":m.canExclude,"top-tagSelector-active":!!m.state,"top-tagSelector-excluded":m.state==="excluded"}),onClick:e.withModifiers(i,["stop"])},{default:e.withCtx(()=>[e.createVNode(R,{id:m.id,name:l.value,colorId:m.colorId,state:m.state},null,8,["id","name","colorId","state"]),e.createElementVNode("span",e.mergeProps({ref_key:"elName",ref:a,class:"top-tagSelector_tagListItemName",contenteditable:s.value?"plaintext-only":!1},r.value,{onKeydown:[e.withKeys(e.withModifiers(v,["stop"]),["enter"]),e.withKeys(e.withModifiers(p,["stop"]),["esc"])]}),e.toDisplayString(l.value),17,pe),m.editable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value?(e.openBlock(),e.createElementBlock("span",{key:1,"data-top-icon":"",class:"top-tagSelector_edit",onClick:e.withModifiers(v,["stop"])})):(e.openBlock(),e.createElementBlock("span",{key:0,"data-top-icon":"",class:"top-tagSelector_edit",onClick:g}))],64)):e.createCommentVNode("",!0)]),_:1},8,["class"]))}}),ye={key:1},Q=e.defineComponent({inheritAttrs:!1,__name:"popupOpener",props:e.mergeModels({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const o=t,d=e.useModel(t,"modelValue"),n=o.useTopButton?I._sfc_main:"div",l=o.useTopButton?"html":"default",a={model:d,mode:o.mode,targetId:o.targetId,filters:o.filters,payload:o.payload};return(r,s)=>{const g=e.resolveDirective("top-data");return e.openBlock(),e.createBlock(E._sfc_main$1,{id:r.id},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(n)),e.mergeProps({class:{"top-tagSelector":!0,"top-tagSelector-filter":o.mode==="filter","top-tagSelector-setter_single":o.mode==="setter"&&!r.filters,"top-tagSelector-setter_several":o.mode==="setter"&&r.filters,"top-tagSelector-selectedOne":!d.value.length||d.value.length===1,"top-tagSelector-toTwoLine":d.value.length>5},color:"theme",styling:""},r.$attrs),{[e.unref(l)]:e.withCtx(()=>[!d.value.length&&r.mode==="filter"?(e.openBlock(),e.createBlock(R,{key:0,id:"all",colorId:"",name:r.$i18n.Common.All_tags??"",state:""},null,8,["name"])):e.createCommentVNode("",!0),r.mode==="setter"&&r.filters?(e.openBlock(),e.createElementBlock("div",ye,[e.renderSlot(r.$slots,"default")])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(d.value,v=>{var p,i;return e.openBlock(),e.createBlock(R,{id:e.unref(K)(v),colorId:((p=e.unref(O)(v,r.tags))==null?void 0:p.color_id)??"",name:((i=e.unref(O)(v,r.tags))==null?void 0:i.name)??"",state:e.unref(K)(v)===v?"selected":"excluded"},null,8,["id","colorId","name","state"])}),256))]),_:2},1040,["class"])),[[g,a,"topTagSelectorTarget"]])]),_:3},8,["id"])}}}),he=e.defineComponent({__name:"tagSelector",props:e.mergeModels({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500}},{modelValue:{required:!0},modelModifiers:{},tags:{default:e.reactive(ge)},tagsModifiers:{}}),emits:e.mergeModels(["selector","setter","tagsChanged"],["update:modelValue","update:tags"]),setup(t,{emit:o}){const d=I.useI18n(),n=t,l=e.useModel(t,"modelValue"),a=e.useModel(t,"tags"),r=o,s=I.debounce((c,u)=>{r(c,u)},n.emitDelay);n.singleMode&&!l.value.length&&(l.value=[a.value[0].id]);const g=n.id??"top-popup-id-"+Math.random(),v=e.ref("add"),p=()=>{var f;const c=" "+((f=d.Common.Tags)==null?void 0:f.toLowerCase()),u=new Map;return u.set("add",{value:"add",title:d.Common.Add+c}),u.set("replace",{value:"replace",title:d.Common.Replace+c}),u.set("delete",{value:"delete",title:d.Common.Delete+c}),u};let i=e.shallowRef({model:l,mode:"filter",targetId:void 0,filters:void 0,payload:void 0});e.watch(l,()=>{s("selector",l.value)});const m=e.computed(()=>{if(i.value.mode==="setter"&&n.maxTagsForSetter&&!i.value.filters)return i.value.model.value.length>=n.maxTagsForSetter}),y=c=>{if(c!=="all"){if(i.value.model.value.includes(c))return"selected";if(i.value.model.value.includes(W(c)))return"excluded"}return c==="all"&&!i.value.model.value.length?"selected":""},C=(c,u)=>{const f=W(c);let h=i.value.model.value.filter(V=>V!==c&&V!==f);u==="select"&&h.push(c),u==="exclude"&&h.push(f),i.value.mode==="setter"&&i.value.targetId!==void 0&&n.requiredForSetter&&(h.length||h.push("1"),h.length===2&&i.value.model.value.length===1&&i.value.model.value[0]==="1"&&(h=h.filter(V=>V!=="1"))),n.singleMode&&!i.value.filters&&(h.length||(h=i.value.model.value),h.length>1&&(h=[h[h.length-1]])),h.sort((V,M)=>{if(!n.tags)return 0;const F=n.tags.findIndex(b=>b.id===V),N=n.tags.findIndex(b=>b.id===M);return F-N}),i.value.model.value=h,i.value.mode==="setter"&&i.value.targetId!==void 0&&s("setter",{tagsIds:h,targetId:i.value.targetId,payload:i.value.payload})},x=e.computed(()=>{let c="top-tagSelector_popup";return i.value.mode==="filter"&&(c+=" top-tagSelector_popup-filter"),i.value.mode==="setter"&&(c+=" top-tagSelector_popup-setter"),c}),S=()=>{const c=prompt("","New tag");if(!c||c==="New tag")return;const u=a.value.length+1;a.value.push({id:String(u),name:c,color_id:String((u-1)%10+1)}),r("tagsChanged",a.value)},T=c=>{var u;if(i.value=_.storage(c.elPopupOpener,"topTagSelectorTarget"),!i.value)throw new Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");if(i.value.filters&&(v.value="add",i.value.model.value=[]),!((u=I.Core.$)!=null&&u.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}!I.Core.state.isMobile&&!I.Core.state.isMobileUA&&a.value&&$(c.elPopup).sortable({items:'li:has([data-tag_id]:not([data-tag_id="all"]))',cancel:'[contenteditable="plaintext-only"], [contenteditable="true"]',distance:10,stop:function(f,h){if(!a.value)return;const V=$(h.item).parent().find("[data-tag_id]"),M=[];V.each((F,N)=>{if(!a.value)return;const b=$(N).attr("data-tag_id");M.push(b)}),a.value.sort((F,N)=>{const b=M.findIndex(z=>z===F.id),Ve=M.findIndex(z=>z===N.id);return b-Ve}),s("tagsChanged",a.value)}})},B=c=>{var u;(u=I.Core.$)!=null&&u.ui.sortable&&$(c.elPopup).data("ui-sortable")&&$(c.elPopup).sortable("destroy")};return(c,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Q,{class:"top-select_arrow",modelValue:l.value,"onUpdate:modelValue":u[0]||(u[0]=f=>l.value=f),id:e.unref(g),tags:a.value,mode:"filter",useTopButton:""},null,8,["modelValue","id","tags"]),e.createVNode(E._sfc_main,{id:e.unref(g),class:e.normalizeClass(x.value),onOpen:u[4]||(u[4]=f=>T(f)),onClose:u[5]||(u[5]=f=>B(f)),"transition-duration":50},e.createSlots({contentList:e.withCtx(()=>[e.unref(i).mode==="filter"&&!c.singleMode?(e.openBlock(),e.createBlock(H,{key:0,id:"all",colorId:"",name:c.$i18n.Common.All_tags??"",state:e.unref(i).model.value.length?"":"selected",onSelect:u[3]||(u[3]=f=>e.unref(i).model.value=[])},null,8,["name","state"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,f=>(e.openBlock(),e.createBlock(H,{key:f.id,id:f.id,colorId:f.color_id,name:f.name,state:y(f.id),canExclude:e.unref(i).mode==="filter"&&!c.singleMode,editable:c.tagsEditable,disabled:m.value&&y(f.id)==="",onUnselect:h=>C(f.id,"unselect"),onSelect:h=>C(f.id,"select"),onExclude:h=>C(f.id,"exclude"),"onUpdate:name":h=>{f.name=h,e.unref(s)("tagsChanged",a.value)}},null,8,["id","colorId","name","state","canExclude","editable","disabled","onUnselect","onSelect","onExclude","onUpdate:name"]))),128)),c.tagsEditable&&a.value.length<c.tagsMax&&a.value.length<20?(e.openBlock(),e.createBlock(E._sfc_main$2,{key:1,"data-top-icon":"",onClick:e.withModifiers(S,["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Add),1)]),_:1})):e.createCommentVNode("",!0)]),_:2},[e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"header",fn:e.withCtx(()=>[e.createVNode(I._sfc_main$4,{modelValue:v.value,"onUpdate:modelValue":u[1]||(u[1]=f=>v.value=f),options:p()},null,8,["modelValue","options"])]),key:"0"}:void 0,e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"footer",fn:e.withCtx(()=>[e.createVNode(I._sfc_main,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(I._sfc_main,{onClick:u[2]||(u[2]=f=>e.unref(s)("setter",{tagsIds:e.unref(i).model.value,filters:e.unref(i).filters,filtersAction:v.value,payload:e.unref(i).payload}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value==="add"?c.$i18n.Common.Add:"")+" "+e.toDisplayString(v.value==="replace"?c.$i18n.Common.Replace:"")+" "+e.toDisplayString(v.value==="delete"?c.$i18n.Common.Remove:""),1)]),_:1})]),key:"1"}:void 0]),1032,["id","class"])],64))}}),Se=(t,o)=>e.computed(()=>e.toValue(t).filter(l=>l.on>=0||l.id===o).map(l=>({value:l.id,title:l.url+` [${l.id}]`,icon:l.id===e.toValue(o)?"":"",content:l.name}))),ke=(t,o,d)=>{o||(o={id:t.id}),o.id=t.id;const n=ee.TopPopupWorker.genElPopupOpener("div",o);return n.classList.add("top-tagSelector"),t.useTopButton&&n.classList.add("top-button","top-color_theme"),t.mode==="filter"&&n.classList.add("top-tagSelector-filter"),t.mode==="setter"&&!t.filters&&n.classList.add("top-tagSelector-setter_single"),t.mode==="setter"&&t.filters&&n.classList.add("top-tagSelector-setter_several"),n.onclick=l=>{l.preventDefault(),l.stopPropagation(),n.onclick=null;const a=e.ref(t.modelValue),r={model:a,mode:t.mode,targetId:t.targetId,filters:t.filters,payload:t.payload};_.storage(n,"topTagSelectorTarget",r),delete n.dataset.topPopupDisabled,e.isRef(t.modelValue)||e.watch(a,()=>{t.modelValue=a.value,D(n,t,d)}),n.click()},e.isRef(t.modelValue)?e.watch(t.modelValue,()=>D(n,t,d)):_.storage(n,"topTagSelectorRender",l=>{t.modelValue=l;const a=_.storage(n,"topTagSelectorTarget");a&&(a.model.value=l),D(n,t,d)}),D(n,t,d),n},Ie=(t,o)=>{var d;(d=_.storage(t,"topTagSelectorRender"))==null||d(o)},D=(t,o,d)=>{var l;const n=e.unref(o.modelValue);if(t.classList.toggle("top-tagSelector-selectedOne",!n.length||n.length===1),t.classList.toggle("top-tagSelector-toTwoLine",n.length>5),o.mode==="setter"&&o.filters){t.innerHTML=`<div>${d}</div>`;return}if(t.innerHTML="",!n.length&&o.mode==="filter"){const a=X({id:"all",colorId:"",name:((l=I.useI18n().Common)==null?void 0:l.All_tags)??"",state:""});t.append(a)}n.forEach(a=>{var s,g;const r=X({id:K(a),colorId:((s=O(a,o.tags))==null?void 0:s.color_id)??"",name:((g=O(a,o.tags))==null?void 0:g.name)??"",state:K(a)===a?"selected":"excluded"});t.append(r)})},X=t=>{const o=document.createElement("div");return o.classList.add("top-tagSelector_tagIcon"),o.classList.toggle("top-tagSelector-active",!!t.state),o.classList.toggle("top-tagSelector-excluded",t.state==="excluded"),o.dataset.tag_id=t.id,o.dataset.tag_color_id=t.colorId,o.title=t.name,o},xe=oe,Ce=me,Be=he,Te=Q,we=R;w.TopSelectorCompetitors=xe,w.TopSelectorRegion=Ce,w.TopTagSelector=Be,w.TopTagSelectorPopupOpener=Te,w.TopTagSelectorTagIcon=we,w.findRegion=Y,w.genElTopTagSelectorPopupOpener=ke,w.genSearcherByKey=U,w.renderElTopTagSelectorPopupOpener=Ie,w.useItemsFromCompetitors=Se,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=project.amd.js.map