@topvisor/ui 1.3.1-utils.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.chunks/{core-CY6RkZz2.es.js → core-Cmk3j1ll.es.js} +4 -4
  2. package/.chunks/{core-CY6RkZz2.es.js.map → core-Cmk3j1ll.es.js.map} +1 -1
  3. package/.chunks/{core-CXqQSo9c.amd.js → core-DWQI6OYD.amd.js} +2 -2
  4. package/.chunks/{core-CXqQSo9c.amd.js.map → core-DWQI6OYD.amd.js.map} +1 -1
  5. package/.chunks/{datepicker-DUoArkDy.amd.js → datepicker-BgLipRW7.amd.js} +2 -2
  6. package/.chunks/{datepicker-DUoArkDy.amd.js.map → datepicker-BgLipRW7.amd.js.map} +1 -1
  7. package/.chunks/{datepicker-BiaXdEIn.es.js → datepicker-Dfl91fRZ.es.js} +2 -2
  8. package/.chunks/{datepicker-BiaXdEIn.es.js.map → datepicker-Dfl91fRZ.es.js.map} +1 -1
  9. package/.chunks/{dialog_selectorRegions-CPRVbPAk.amd.js → dialog_selectorRegions-JEsqs4cv.amd.js} +2 -2
  10. package/.chunks/{dialog_selectorRegions-CPRVbPAk.amd.js.map → dialog_selectorRegions-JEsqs4cv.amd.js.map} +1 -1
  11. package/.chunks/{dialog_selectorRegions-Zlm6K2mk.es.js → dialog_selectorRegions-eFMZwckA.es.js} +4 -4
  12. package/.chunks/{dialog_selectorRegions-Zlm6K2mk.es.js.map → dialog_selectorRegions-eFMZwckA.es.js.map} +1 -1
  13. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CLahwA6M.es.js → dialogs.vue_vue_type_script_setup_true_lang-CuRb6ess.es.js} +15 -13
  14. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CuRb6ess.es.js.map +1 -0
  15. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-DJoFuqCw.amd.js +2 -0
  16. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-DJoFuqCw.amd.js.map +1 -0
  17. package/.chunks/{forms-DarRVke_.es.js → forms-BWoAyEVH.es.js} +5 -5
  18. package/.chunks/{forms-DarRVke_.es.js.map → forms-BWoAyEVH.es.js.map} +1 -1
  19. package/.chunks/{forms-CgtkdwgA.amd.js → forms-BfDSGwrU.amd.js} +3 -3
  20. package/.chunks/{forms-CgtkdwgA.amd.js.map → forms-BfDSGwrU.amd.js.map} +1 -1
  21. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js → listItem.vue_vue_type_script_setup_true_lang-Dljef_xa.es.js} +2 -2
  22. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js.map → listItem.vue_vue_type_script_setup_true_lang-Dljef_xa.es.js.map} +1 -1
  23. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd.js → listItem.vue_vue_type_script_setup_true_lang-R7J0Cawj.amd.js} +2 -2
  24. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-R7J0Cawj.amd.js.map} +1 -1
  25. package/.chunks/{menu.vue_vue_type_style_index_0_lang-COD_4iTy.es.js → menu.vue_vue_type_style_index_0_lang-HDPVVgzy.es.js} +2 -2
  26. package/.chunks/{menu.vue_vue_type_style_index_0_lang-COD_4iTy.es.js.map → menu.vue_vue_type_style_index_0_lang-HDPVVgzy.es.js.map} +1 -1
  27. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BLMYjYLV.amd.js → menu.vue_vue_type_style_index_0_lang-JZ-QwyLO.amd.js} +2 -2
  28. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BLMYjYLV.amd.js.map → menu.vue_vue_type_style_index_0_lang-JZ-QwyLO.amd.js.map} +1 -1
  29. package/.chunks/notice-DAcU_6aT.amd.js +4 -0
  30. package/.chunks/notice-DAcU_6aT.amd.js.map +1 -0
  31. package/.chunks/notice-DYd206Yd.es.js +192 -0
  32. package/.chunks/notice-DYd206Yd.es.js.map +1 -0
  33. package/.chunks/{page.vue_vue_type_script_setup_true_lang-BS0aEP4i.es.js → page.vue_vue_type_script_setup_true_lang-CFR_XnIk.es.js} +4 -4
  34. package/.chunks/{page.vue_vue_type_script_setup_true_lang-BS0aEP4i.es.js.map → page.vue_vue_type_script_setup_true_lang-CFR_XnIk.es.js.map} +1 -1
  35. package/.chunks/{page.vue_vue_type_script_setup_true_lang-DLebrPmi.amd.js → page.vue_vue_type_script_setup_true_lang-Cy3k9hJN.amd.js} +2 -2
  36. package/.chunks/{page.vue_vue_type_script_setup_true_lang-DLebrPmi.amd.js.map → page.vue_vue_type_script_setup_true_lang-Cy3k9hJN.amd.js.map} +1 -1
  37. package/.chunks/{popup-AG94kehM.es.js → popup-1pqtx_O5.es.js} +2 -2
  38. package/.chunks/{popup-AG94kehM.es.js.map → popup-1pqtx_O5.es.js.map} +1 -1
  39. package/.chunks/{popup-CtvJLWn3.amd.js → popup-JuvnpqC-.amd.js} +2 -2
  40. package/.chunks/{popup-CtvJLWn3.amd.js.map → popup-JuvnpqC-.amd.js.map} +1 -1
  41. package/.chunks/{utils-D9D3zzjc.amd.js → utils-7_bMpPkj.amd.js} +2 -2
  42. package/.chunks/{utils-D9D3zzjc.amd.js.map → utils-7_bMpPkj.amd.js.map} +1 -1
  43. package/.chunks/{utils-3M9LC_L_.es.js → utils-CdePhhIZ.es.js} +2 -2
  44. package/.chunks/{utils-3M9LC_L_.es.js.map → utils-CdePhhIZ.es.js.map} +1 -1
  45. package/.chunks/{utils-BitKP31L.es.js → utils-DOkSnf59.es.js} +24 -22
  46. package/.chunks/utils-DOkSnf59.es.js.map +1 -0
  47. package/.chunks/utils-_O-2Zobt.amd.js +2 -0
  48. package/.chunks/utils-_O-2Zobt.amd.js.map +1 -0
  49. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-xwjgBq1L.es.js → widgetInput.vue_vue_type_script_setup_true_lang-Cr_jgOW4.es.js} +2 -2
  50. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-xwjgBq1L.es.js.map → widgetInput.vue_vue_type_script_setup_true_lang-Cr_jgOW4.es.js.map} +1 -1
  51. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-BK-pTu3V.amd.js → widgetInput.vue_vue_type_script_setup_true_lang-DVHWVUQM.amd.js} +2 -2
  52. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-BK-pTu3V.amd.js.map → widgetInput.vue_vue_type_script_setup_true_lang-DVHWVUQM.amd.js.map} +1 -1
  53. package/assets/formsExt.css +1 -1
  54. package/assets/notice.css +1 -1
  55. package/charts/charts.amd.js +1 -1
  56. package/charts/charts.js +1 -1
  57. package/core/app.amd.js +1 -1
  58. package/core/app.js +5 -5
  59. package/dialog/dialog.amd.js +1 -1
  60. package/dialog/dialog.js +2 -2
  61. package/forms/forms.amd.js +1 -1
  62. package/forms/forms.js +1 -1
  63. package/formsExt/formsExt.amd.js +1 -1
  64. package/formsExt/formsExt.amd.js.map +1 -1
  65. package/formsExt/formsExt.js +384 -363
  66. package/formsExt/formsExt.js.map +1 -1
  67. package/layout/layout.amd.js +1 -1
  68. package/layout/layout.js +1 -1
  69. package/package.json +1 -1
  70. package/popup/popup.amd.js +1 -1
  71. package/popup/popup.js +4 -4
  72. package/popup/worker.amd.js +1 -1
  73. package/popup/worker.js +2 -2
  74. package/project/project.amd.js +1 -1
  75. package/project/project.js +5 -5
  76. package/src/components/core/notice/item/types.d.ts +6 -0
  77. package/src/components/core/notice/utils.d.ts +1 -0
  78. package/src/components/forms/checkbox/checkbox.vue.d.ts +2 -2
  79. package/src/components/forms/checkbox/types.d.ts +4 -3
  80. package/src/components/formsExt/checkboxGroup/checkboxGroup.vue.d.ts +18 -7
  81. package/src/components/formsExt/checkboxGroup/types.d.ts +4 -18
  82. package/src/components/formsExt/libs/optionGroup/optionGroup.vue.d.ts +16 -0
  83. package/src/components/formsExt/libs/optionGroup/types.d.ts +18 -0
  84. package/src/components/formsExt/radioGroup/radioGroup.vue.d.ts +18 -7
  85. package/src/components/formsExt/radioGroup/types.d.ts +4 -20
  86. package/tabsView/tabsView.amd.js +1 -1
  87. package/tabsView/tabsView.js +2 -2
  88. package/utils/clipboard.amd.js +1 -1
  89. package/utils/clipboard.amd.js.map +1 -1
  90. package/utils/clipboard.js +1 -1
  91. package/utils/clipboard.js.map +1 -1
  92. package/utils/date.amd.js +1 -1
  93. package/utils/date.js +1 -1
  94. package/utils/device.amd.js +1 -1
  95. package/utils/device.js +1 -1
  96. package/utils/lodash.amd.js +1 -1
  97. package/utils/lodash.js +1 -1
  98. package/utils/price.amd.js +1 -1
  99. package/utils/price.js +1 -1
  100. package/utils/searchers.amd.js +1 -1
  101. package/utils/searchers.js +3 -3
  102. package/utils/string.amd.js +1 -1
  103. package/utils/string.js +1 -1
  104. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CLahwA6M.es.js.map +0 -1
  105. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-D8NggYHD.amd.js +0 -2
  106. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-D8NggYHD.amd.js.map +0 -1
  107. package/.chunks/notice-CPtAnc7p.amd.js +0 -4
  108. package/.chunks/notice-CPtAnc7p.amd.js.map +0 -1
  109. package/.chunks/notice-fno9saBY.es.js +0 -175
  110. package/.chunks/notice-fno9saBY.es.js.map +0 -1
  111. package/.chunks/utils-BitKP31L.es.js.map +0 -1
  112. package/.chunks/utils-DcP4RFmH.amd.js +0 -2
  113. package/.chunks/utils-DcP4RFmH.amd.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"formsExt.js","sources":["../../src/components/formsExt/editArea/editArea.vue","../../src/components/formsExt/editInput/editInput.vue","../../src/components/formsExt/radioGroup/radioGroup.vue","../../src/components/formsExt/checkboxGroup/checkboxGroup.vue","../../src/components/formsExt/selector2/itemMulti.vue","../../src/components/formsExt/selector2/composables/useAPI.ts","../../src/components/formsExt/selector2/utils.ts","../../src/components/formsExt/selector2/composables/useMenu.ts","../../src/components/formsExt/selector2/selector2.vue","../../src/components/formsExt/info/info.vue","../../src/components/formsExt/policy/policy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport Button from '@/components/forms/button/button.vue';\nimport type { Emits, Props } from './types';\nimport Textarea from '@/components/forms/textarea/textarea.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tdefaultValue: '',\n\tcancelText: 'Cancel',\n\tsubmitText: 'Send',\n\tcloseText: 'Close',\n\texpandable: true,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst localValue = ref(props.defaultValue);\n\nconst isFocused = ref(props.isFocused);\n\nconst isChanged = computed(() => localValue.value !== props.defaultValue);\n\nconst submit = (value: string) => {\n\temit('submit', value);\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst cancel = () => {\n\tif (props.forceShowCloseBtn && !isChanged.value) {\n\t\temit('close');\n\n\t\treturn;\n\t}\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst clickOnTitle = () => {\n\tif (props.attachToKeyboard) emit('clickOnTitle');\n};\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-editArea': true,\n\t\t\t'top-editArea-attachedToKeyboard': attachToKeyboard,\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tv-if=\"title\"\n\t\t\tclass=\"top-editArea_title\"\n\t\t\t@click=\"clickOnTitle()\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-editArea_form': true,\n\t\t\t\t'top-forms-focusable': true,\n\t\t\t\t'top-as-input': true,\n\t\t\t\t'top-error': isError,\n\t\t\t\t'top-focus': isFocused,\n\t\t\t}\"\n\t\t>\n\t\t\t<Textarea\n\t\t\t\tv-model=\"localValue\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:rows=\"rows\"\n\t\t\t\t:minHeight=\"minHeight\"\n\t\t\t\t:expandable=\"expandable\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:readonly=\"readonly\"\n\t\t\t\t:isError=\"isError\"\n\t\t\t\t:hint=\"hint\"\n\t\t\t\tclass=\"top-editArea_element\"\n\t\t\t\t@focus=\"() => isFocused = true\"\n\t\t\t\t@blur=\"() => isFocused = false\"\n\t\t\t\t@keyup.esc=\"cancel\"\n\t\t\t\t@keyup.ctrl.enter=\"submit(localValue)\"\n\t\t\t/>\n\n\t\t\t<div class=\"top-editArea_footer\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"isChanged || forceShowCloseBtn\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\tstyling=\"soft\"\n\t\t\t\t\t@click=\"cancel\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ cancelText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tv-if=\"isChanged\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\t@click=\"submit(localValue)\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ submitText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n.top-editArea {\n\t--top-editArea-bottom: env(keyboard-inset-height, 0px);\n\t--top-editArea-offset-bottom: 0px;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n}\n\n.top-editArea_title {\n\tfont-size: 12px;\n}\n\n.top-editArea_form {\n\tflex-direction: column;\n}\n\n/* textarea в EditArea */\n.top-textarea {\n\twidth: 100%;\n}\n\n.top-editArea_element.top-textarea_textarea {\n\t--top-forms-border-width: 0px;\n\n\toutline: none;\n\tanimation: none;\n}\n\n/* footer */\n.top-editArea_footer {\n\tpadding: var(--top-forms-padding);\n\tdisplay: flex;\n\tmin-height: 32px;\n\talign-self: flex-end;\n\tjustify-content: flex-end;\n\tgap: var(--top-forms-padding);\n}\n\n/* attachedToKeyboard */\n.top-editArea-attachedToKeyboard {\n\tbackground: var(--top-forms-background-color);\n\tposition: fixed;\n\tbottom: calc(var(--top-editArea-offset-bottom) + var(--top-editArea-bottom));\n\tright: 0;\n\tleft: 0;\n\tz-index: 2;\n\tgap: 0;\n\ttransition: bottom var(--transition-fast);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_form {\n\tborder-radius: 0;\n\tborder: none;\n\tborder-top: 1px solid var(--top-forms-border-color);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_title {\n\tcursor: pointer;\n\tborder-top: 1px solid var(--color-line-2-opacity);\n\tpadding: var(--top-forms-padding);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_footer > [data-top-icon] {\n\tborder-radius: 100%;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-editArea_form{\n\t\tflex-direction: row;\n\t}\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, toRef, watch } from 'vue';\nimport type { Emits, Props } from './types';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = defineProps<Props>();\n\nconst intermediateValue = ref(props.modelValue);\n\nwatch(toRef(props.modelValue), () => {\n\tintermediateValue.value = props.modelValue;\n});\n\nconst emit = defineEmits<Emits>();\n\nconst submit = () => {\n\temit('update:modelValue', intermediateValue.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-editInput\">\n\t\t<TopInput\n\t\t\t:=\"input\"\n\t\t\t@keydown.esc.capture.stop=\"intermediateValue = modelValue\"\n\t\t\t@keydown.enter.stop=\"submit\"\n\t\t\tv-model=\"intermediateValue\"\n\t\t/>\n\n\t\t<TopButton\n\t\t\tv-if=\"intermediateValue !== modelValue\"\n\t\t\ticon=\"\"\n\t\t\tstyling=\"soft\"\n\t\t\t:=\"button\"\n\t\t\t@click=\"submit\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n.top-editInput {\n\twidth: 220px;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: var(--top-gap-1);\n}\n\n.top-editInput .top-input {\n\twidth: unset;\n\tflex-grow: 1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { Ref } from '@vue/reactivity';\nimport { ref, watch } from 'vue';\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsize: 's',\n});\n\nconst elRef: Ref<HTMLElement | null> = ref(null);\n\nwatch(model, () => {\n\tif (!props.radiosProps?.some(item => item.value === model.value)) {\n\t\tmodel.value = props.radiosProps?.[0]?.value ?? '';\n\t}\n\n\telRef.value?.querySelector('.radioGroup_item-selected')?.scrollIntoView();\n}, { immediate: true });\n\nconst uid = 'radioGroup-' + Math.random();\n</script>\n\n<template>\n\t<div\n\t\tref=\"elRef\"\n\t\t:class=\"{\n\t\t\t['top-radioGroup']: true,\n\t\t\t['top-scrollBarXHidding']: true,\n\t\t\t['top-size_' + size]: !!size,\n\t\t\t['top-error']: isError,\n\t\t}\"\n\t>\n\t\t<label\n\t\t\tv-for=\"item of radiosProps\"\n\t\t\t:class=\"{\n\t\t\t\t['top-radioGroup_item-selected']: item.value === model,\n\t\t\t\t['top-radioGroup_item']: true,\n\t\t\t\t['top-forms-focusable']: true,\n\t\t\t\t['top-disabled']: item.disabled,\n\t\t\t}\"\n\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t@click=\"model = item.value\"\n\t\t>\n\t\t\t{{ item.title }}\n\n\t\t\t<span\n\t\t\t\tv-if=\"showIndicator\"\n\t\t\t\tclass=\"top-radioGroup_circle\"\n\t\t\t></span>\n\n\t\t\t<!-- Для нативной навигации -->\n\t\t\t<input\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:name=\"uid\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-unvisible']: true,\n\t\t\t\t}\"\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t/>\n\t\t</label>\n\t</div>\n</template>\n\n<style>\n.top-radioGroup {\n\tuser-select: none;\n\tbox-sizing: border-box;\n\tborder-radius: 8px;\n\tbackground-color: var(--color-layout-middle);\n\theight: var(--top-forms-base-height);\n\tpadding: 2px;\n\tgap: 2px;\n\tdisplay: flex;\n\talign-items: flex-start;\n}\n\n.top-radioGroup_item {\n\tcolor: var(--color-text-2);\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\tborder-radius: 6px;\n\theight: calc(var(--top-forms-base-height) - 4px);\n\tpadding: 0 16px;\n\tfont-weight: 400;\n\twhite-space: nowrap;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-grow: 1;\n\tgap: 4px;\n}\n\n.top-radioGroup_item:hover {\n\tbackground-color: var(--color-layout-front-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n/* selected */\n.top-radioGroup_item-selected {\n\tcolor: var(--color-text-1);\n\tpointer-events: none;\n\tbackground-color: var(--color-bg-lightning-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n/* circle */\n.top-radioGroup_circle {\n\tcontent: \"\";\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--color-line-3-opacity);\n\tborder-radius: 50%;\n\tpadding: 3px;\n\tmargin-left: auto;\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\n}\n\n.top-radioGroup_item:hover .top-radioGroup_circle:before {\n\tborder-color: var(--color-line-primary-1);\n}\n\n/* circle selected */\n.top-radioGroup_item-selected .top-radioGroup_circle {\n\tborder-color: var(--color-line-primary-1);\n\tborder-width: 5px;\n}\n\n.top-radioGroup_item-selected:hover .top-radioGroup_circle {\n\tborder-color: var(--color-line-primary-1);\n}\n\n/* top-error */\n.top-radioGroup.top-error .top-radioGroup_item:not(.top-disabled) .top-radioGroup_circle {\n\tborder-color: var(--color-line-negative-1);\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nwithDefaults(defineProps<Props>(), {\n\tsize: 's',\n\tstyling: 'outline',\n});\n\nconst onChange = (id: Props['modelValue'][number]) => {\n\tconst newModel = [...model.value];\n\tconst index = newModel.indexOf(id);\n\n\tif (index === -1) {\n\t\tnewModel.push(id);\n\t} else {\n\t\tnewModel.splice(index, 1);\n\t}\n\n\tmodel.value = newModel;\n};\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n \t\t['top-checkboxGroup']: true,\n \t\t['top-checkboxGroup-' + styling]: true,\n \t\t['top-scrollBarXHidding']: true,\n \t\t['top-size_' + size]: !!size,\n \t\t['top-error']: isError,\n \t}\"\n\t>\n\t\t<label\n\t\t\tv-for=\"item in items\"\n\t\t\t:key=\"item.id\"\n\t\t\t:class=\"{\n\t\t\t\t['top-checkboxGroup_item']: true,\n\t\t\t\t['top-checkboxGroup_item-selected']: model.includes(item.id),\n\t\t\t\t['top-forms-focusable']: true,\n\t\t\t\t['top-disabled']: item.disabled,\n\t\t\t}\"\n\t\t\t:data-top-icon=\"item.icon\"\n\t\t>\n\t\t\t<input\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"top-unvisible\"\n\t\t\t\t:value=\"item.id\"\n\t\t\t\t:checked=\"model.includes(item.id)\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t\t@change=\"onChange(item.id)\"\n\t\t\t/>\n\n\t\t\t{{ item.title }}\n\t\t</label>\n\t</div>\n</template>\n\n<style>\n.top-checkboxGroup {\n\tuser-select: none;\n\tborder-radius: 8px;\n\theight: var(--top-forms-base-height);\n\tbox-sizing: border-box;\n\tdisplay: flex;\n}\n\n.top-checkboxGroup_item {\n\tbox-sizing: border-box;\n\tpadding: 1px var(--top-padding-4);\n\tcursor: pointer;\n\tfont-weight: 600;\n\twhite-space: nowrap;\n\tdisplay: flex;\n\tflex-grow: 1;\n\tjustify-content: center;\n\talign-items: center;\n\tgap: var(--top-gap-1);\n}\n\n/* outline */\n.top-checkboxGroup-outline {\n\tborder: 1px solid var(--color-line-1);\n\tbackground: var(--color-layout-front-1);\n}\n\n.top-checkboxGroup-outline .top-checkboxGroup_item {\n\theight: calc(var(--top-forms-base-height) - 2px);\n\tmin-height: 100%;\n}\n\n.top-checkboxGroup-outline .top-checkboxGroup_item:hover {\n\tbackground: var(--color-layer-primary-1);\n}\n\n.top-checkboxGroup-outline .top-checkboxGroup_item-selected {\n\tbackground: var(--color-bg-primary-1);\n\tcolor: var(--color-text-white);\n\t--top-icon-color: var(--color-text-white);\n}\n\n.top-checkboxGroup-outline .top-checkboxGroup_item-selected:hover {\n\tbackground: var(--color-bg-primary-2);\n}\n\n.top-checkboxGroup-outline.top-error .top-checkboxGroup_item:hover {\n\tbackground: var(--color-layer-negative-1);\n}\n\n.top-checkboxGroup-outline.top-error .top-checkboxGroup_item-selected {\n\tbackground: var(--color-bg-negative-1);\n}\n\n.top-checkboxGroup-outline.top-error .top-checkboxGroup_item-selected:hover {\n\tbackground: var(--color-bg-negative-2);\n}\n\n/* borderless */\n.top-checkboxGroup-borderless {\n\tpadding: 2px;\n\tbackground: var(--color-bg-shading-2);\n\tgap: 2px;\n}\n\n.top-checkboxGroup-borderless .top-checkboxGroup_item {\n\tborder-radius: 6px;\n\theight: calc(var(--top-forms-base-height) - 4px);\n}\n\n.top-checkboxGroup-borderless .top-checkboxGroup_item:hover {\n\tbox-shadow: var(--top-shadow-s);\n\tbackground: var(--color-bg-lightning-1);\n}\n\n.top-checkboxGroup-borderless .top-checkboxGroup_item-selected {\n\tbackground: var(--color-bg-primary-1);\n\tcolor: var(--color-text-white);\n\t--top-icon-color: var(--color-text-white);\n}\n\n.top-checkboxGroup-borderless .top-checkboxGroup_item-selected:hover {\n\tbackground: var(--color-bg-primary-2);\n}\n\n.top-checkboxGroup-borderless.top-error .top-checkboxGroup_item:hover {\n\tbackground: var(--color-bg-lightning-1);\n}\n\n.top-checkboxGroup-borderless.top-error .top-checkboxGroup_item-selected {\n\tbackground: var(--color-bg-negative-1);\n}\n\n.top-checkboxGroup-borderless.top-error .top-checkboxGroup_item-selected:hover {\n\tbackground: var(--color-bg-negative-2);\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { EmitsItemMulti, PropsItemMulti } from './types';\n\ndefineProps<PropsItemMulti>();\ndefineEmits<EmitsItemMulti>();\n</script>\n\n<template>\n\t<div class=\"top-selector2_itemMulti top-ellipsis\">\n\t\t{{ name }}\n\t\t<span\n\t\t\tclass=\"top-selector2_itemMultiDelete\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t@click=\"$emit('delete', id)\"\n\t\t\t@mousedown.stop\n\t\t></span>\n\t</div>\n</template>\n\n<style>\n.top-selector2_itemMulti {\n\tbox-sizing: border-box;\n\tpadding-left: var(--top-padding-2);\n\tborder-radius: var(--top-radius-1, 4px);\n\tborder: 1px solid var(--color-line-primary-1);\n\tbackground: var(--color-layer-primary-2);\n\tmin-height: 22px;\n\tmax-width: 100%;\n\tcolor: var(--color-text-1);\n\tflex-grow: 0;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--top-gap-1);\n}\n\n.top-selector2_itemMultiDelete {\n\t--top-icon-size: 14px;\n\t--top-icon-width: 18px;\n\t--top-icon-color: var(--color-text-1);\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\theight: 100%;\n\tcursor: pointer;\n}\n\n.top-selector2_itemMultiDelete:hover {\n\tbackground: var(--color-layer-primary-2);\n}\n\n@media screen and (min-width: 900px) {\n\t.top-selector2.top-active .top-selector2_itemMultiDelete {\n\t\tz-index: calc(var(--top-popup-z-index) + 1);\n\t}\n}\n</style>\n","import { ref } from 'vue';\nimport { debounce } from '../../../../core/utils/lodash';\nimport type { Item, Props } from '../types';\n\nexport type API = ReturnType<typeof useAPI>;\n\nexport const useAPI = (api: Props['api'], apiSetSearchParams: Props['apiSetSearchParams'], minLength: number, useCache: Props['useCache']) => {\n\t/**\n\t * Список, полученный через API\n\t */\n\tconst items = ref<Item[]>([]);\n\n\t/**\n\t * Кэш для полученных ответов через apiRequest\n\t */\n\tconst cache = new Map<string, any>();\n\n\t/**\n\t * Флаг - идет загрузка\n\t */\n\tconst isLoading = ref(false);\n\n\tlet searchText = '';\n\tlet nextOffset: number | null | undefined;\n\n\tif (api && !api.params.limit) {\n\t\tapi.params.limit = 100;\n\t}\n\n\t/**\n\t * Выполнить обращение к API\n\t *\n\t * При ошибке вернет undefined\n\t */\n\tconst callAPI = async (): Promise<Api.ResponseSuccess<any, 'get'> | undefined> => {\n\t\tif (!api) return;\n\n\t\tlet cacheKey: string | undefined = undefined;\n\n\t\tif (useCache) {\n\t\t\tcacheKey = JSON.stringify(api.params);\n\t\t\tconst res = cache.get(cacheKey);\n\n\t\t\tif (res) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\tisLoading.value = true;\n\t\tconst res = await api.call();\n\t\tisLoading.value = false;\n\n\t\tif (res.errors) return;\n\n\t\tif (!Array.isArray(res.result)) {\n\t\t\tconsole.warn('Array expected in `res.result`');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst indexWithError = (res.result as Array<Item | any>).findIndex(item => item.id === undefined || item.name === undefined);\n\t\tif (indexWithError !== -1) {\n\t\t\tconsole.warn(`В result[${indexWithError}] нет id или name`);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (cacheKey) {\n\t\t\tcache.set(cacheKey, res);\n\t\t}\n\n\t\treturn res as Api.ResponseSuccess<any, 'get'>;\n\t};\n\n\t/**\n\t * Загрузить items\n\t */\n\tconst load = async (append: boolean) => {\n\t\tif (!api) return;\n\n\t\tif (append) {\n\t\t\t// данных о следующих страницах не обнаружено\n\t\t\tif (!nextOffset) return;\n\n\t\t\t// дозагружать нельзя, если не завершена предыдущая загрузка\n\t\t\tif (isLoading.value) return;\n\n\t\t\tapi.params.offset = nextOffset;\n\t\t} else {\n\t\t\tapi.params.offset = 0;\n\t\t}\n\n\t\tapiSetSearchParams?.(searchText);\n\n\t\tconst res = await callAPI();\n\t\tif (!res) return;\n\n\t\tnextOffset = res.nextOffset;\n\n\t\tif (append) {\n\t\t\titems.value = items.value.concat(res.result);\n\t\t} else {\n\t\t\titems.value = res.result;\n\t\t}\n\t};\n\n\tconst loadDebounce = debounce(() => load(false), 200);\n\n\t/**\n\t * Выполнить поиск по указанному тексту\n\t *\n\t * Если длина текста меньше minLength, поиск не будет произведен\n\t *\n\t * Если текст не изменился, поиск не будет произведен\n\t *\n\t * @param newSearchText - текст поиска\n\t * @param useDebounce - дедупликация загрузки списка\n\t */\n\tconst setSearchTextAndLoad = (newSearchText: string, useDebounce = true) => {\n\t\tif (!api) return;\n\n\t\tif (newSearchText.length < minLength) return;\n\n\t\t// условия поиска не поменялись, данные загружены\n\t\tif (newSearchText === searchText && items.value.length) return;\n\n\t\tsearchText = newSearchText;\n\n\t\tif (useDebounce) {\n\t\t\tvoid loadDebounce();\n\t\t} else {\n\t\t\tvoid load(false);\n\t\t}\n\t};\n\n\treturn {\n\t\tapiRequest: api,\n\t\titems,\n\t\tisLoading,\n\t\tload,\n\t\tsetSearchTextAndLoad,\n\t};\n};\n","import type { Item, Props } from './types';\n\nexport const ITEM_ID_ALL = 0;\n\n/**\n * Выбран ли элемент\n */\nexport const isSelected = (modelValue: Props['modelValue'], item: Item, checkNameForNullId = true) => {\n\tif (checkNameForNullId && item.id === null) {\n\t\tif (Array.isArray(modelValue)) {\n\t\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id && itemSelected.name === item.name);\n\t\t} else {\n\t\t\treturn item.name === modelValue.name;\n\t\t}\n\t}\n\n\tif (Array.isArray(modelValue)) {\n\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id);\n\t} else {\n\t\treturn item.id === modelValue.id;\n\t}\n};\n","import { computed, ref, type ComputedRef, type Ref } from 'vue';\nimport { invertKeyboardLayout } from '@/core/utils/keyboard';\nimport type { Item, Props } from '../types';\nimport { type API } from './useAPI';\nimport { isSelected, ITEM_ID_ALL } from '../utils';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Функционал поиска\n */\nexport const useMenu = (\n\tmodel: Ref<Props['modelValue']>,\n\titems: Ref<Props['items']>,\n\tmultiselect: Props['multiselect'],\n\tappendAllValue: Ref<Props['appendAllValue']>,\n\tappendSearchToResult: Ref<Props['appendSearchToResult']>,\n\tsearchType: Ref<Props['searchType']>,\n\tminLength: number,\n\tapi: API,\n) => {\n\t/**\n\t * Текст поиска по результатам\n\t */\n\tconst searchText = ref('');\n\n\t/**\n\t * Объект, представляющий опцию \"Все\"\n\t */\n\tconst itemAll = {\n\t\tid: ITEM_ID_ALL,\n\t\tname: useI18n().Common.All,\n\t};\n\n\t/**\n\t * Сброс поиска\n\t */\n\tconst resetSearch = () => {\n\t\tsearchText.value = '';\n\t\tapi.items.value = [];\n\t};\n\n\t/**\n\t * Является ли строка поиска достаточной длины для отображения меню\n\t */\n\tconst genIsShort = () => {\n\t\tif (!api.apiRequest) return false;\n\t\tif (searchType.value !== 'inline') return false;\n\t\tif (searchText.value.length >= minLength) return false;\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Варианты выбора: props.items + \"Выбрать все\"\n\t */\n\tconst localItems: ComputedRef<Item[]> = computed(() => {\n\t\tconst localItems: Item[] = [];\n\n\t\tif (!multiselect && appendAllValue.value) {\n\t\t\tlocalItems.push(itemAll);\n\t\t}\n\n\t\titems.value?.forEach(item => localItems.push({ ...item }));\n\n\t\treturn localItems;\n\t});\n\n\t/**\n\t * Подготовленный список меню, который содержит в сумме:\n\t * - prop.items: указанный список с учетом фильтра и опций компонента\n\t * - api.items: результаты api запроса, если используется api\n\t *\n\t * @returns Отфильтрованный массив элементов для отображения\n\t */\n\tconst itemsForShow = computed(() => {\n\t\tconst searchString = searchText.value.toLowerCase();\n\t\tconst searchStringInvertKeyboard = invertKeyboardLayout(searchString);\n\n\t\tlet items: NonNullable<Props['items']> = [];\n\n\t\tlocalItems.value.forEach((item) => {\n\t\t\tconst itemName = item.name.toLowerCase();\n\n\t\t\tif (\n\t\t\t\titem.id === Number(searchString) ||\n\t\t\t\titemName.includes(searchString) ||\n\t\t\t\titemName.includes(searchStringInvertKeyboard)\n\t\t\t) {\n\t\t\t\tif (itemName === searchString || itemName === searchStringInvertKeyboard) {\n\t\t\t\t\titems.unshift(item);\n\t\t\t\t} else {\n\t\t\t\t\titems.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\titems.push(...api.items.value);\n\n\t\t// ввод произвольного значения\n\t\tif (\n\t\t\tappendSearchToResult.value &&\n\t\t\t!!searchText.value &&\n\t\t\t(!items.length || items[0].name.toLowerCase() !== searchString)\n\t\t) {\n\t\t\titems.push({\n\t\t\t\tid: null,\n\t\t\t\tname: searchText.value,\n\t\t\t});\n\t\t}\n\n\t\tif (multiselect) {\n\t\t\titems = items.filter(item => !isSelected(model.value, item));\n\t\t}\n\n\t\treturn items;\n\t});\n\n\t/**\n\t * Выбрать элемент\n\t *\n\t * @param item Элемент для выбора\n\t */\n\tconst selectItem = (item: Item) => {\n\t\tif (multiselect && Array.isArray(model.value)) {\n\t\t\tif (!isSelected(model.value, item)) {\n\t\t\t\tmodel.value = [...model.value, item];\n\t\t\t}\n\t\t} else {\n\t\t\tmodel.value = item;\n\t\t}\n\t};\n\n\t/**\n\t * Выбрать следующее значение\n\t */\n\tconst selectNextItem = () => {\n\t\tif (!Array.isArray(model.value)) {\n\t\t\tconst currentIndex = itemsForShow.value.findIndex(item => item.id === (model.value as Item).id);\n\t\t\tconst nextIndex = (currentIndex + 1) % itemsForShow.value.length;\n\t\t\tmodel.value = { ...itemsForShow.value[nextIndex] };\n\t\t}\n\t};\n\n\t/**\n\t * Удалить выбранное значение по id\n\t *\n\t * @param id Идентификатор элемента для удаления\n\t */\n\tconst deleteItemById = async (id: Item['id']) => {\n\t\tif (Array.isArray(model.value)) {\n\t\t\tmodel.value = model.value.filter(item => item.id !== id);\n\t\t}\n\t};\n\n\treturn {\n\t\tsearchText,\n\t\tresetSearch,\n\t\tgenIsShort,\n\t\titems: localItems,\n\t\titemsForShow,\n\t\tselectItem,\n\t\tselectNextItem,\n\t\tdeleteItemById,\n\t};\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, toRef, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport { TopPopup, TopPopupListItem, TopPopupWidgetInput } from '@/components/popup/popup';\nimport { TopPreloader } from '@/components/forms/forms';\nimport type { Item, Props, Slots } from './types';\nimport Selector2ItemMulti from './itemMulti.vue';\nimport { useAPI } from './composables/useAPI';\nimport { useMenu } from './composables/useMenu';\nimport type { TopLibPopup } from '../../popup/lib/popup';\n\nconst props = withDefaults(defineProps<Props>(), {\n\titems: () => [] as Item[],\n\tsize: 's',\n\tminLength: 0,\n\tsearchType: 'popup',\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\n\ndefineSlots<Slots>();\n\nconst searchTypeLocal = computed(() => {\n\t// multiselect не поддерживает inline ввода\n\tif (props.searchType === 'inline' && props.multiselect) return 'popup';\n\n\t// В мобильной версии popup работает в полноэкранном режиме\n\tif (props.searchType === 'inline' && Core.state.isMobile) return 'popup';\n\n\treturn props.searchType;\n});\n\nlet minLength = 0;\nif (searchTypeLocal.value === 'inline' && props.minLength) {\n\tminLength = props.minLength;\n}\n\n/**\n * Объект для работы с API\n */\nconst api = useAPI(props.api, props.apiSetSearchParams, minLength, props.useCache);\n\n/**\n * Объект для работы с меню\n */\nconst menu = useMenu(\n\tmodel,\n\ttoRef(props, 'items'),\n\tprops.multiselect,\n\ttoRef(props, 'appendAllValue'),\n\ttoRef(props, 'appendSearchToResult'),\n\tsearchTypeLocal,\n\tminLength,\n\tapi,\n);\n\nconst component = computed(() => {\n\tif (props.buttonProps) return 'TopButton';\n\tif (searchTypeLocal.value === 'inline') return 'TopInput';\n\n\treturn 'div';\n});\n\n/**\n * Экземпляр компонента Popup\n */\nconst popupRef = ref<any>(null);\n\n/**\n * Получить доступ к объекту popup\n */\nconst getPopup = (): TopLibPopup | undefined => {\n\treturn popupRef.value?.popup;\n};\n\nif (api.apiRequest) {\n\t// отложенный поиск при вводе текста\n\twatch(menu.searchText, () => {\n\t\tapi.setSearchTextAndLoad(menu.searchText.value);\n\n\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\tif (menu.genIsShort()) {\n\t\t\t\tgetPopup()?.close();\n\t\t\t}\n\t\t}\n\t});\n}\n\nwatch(model, () => {\n\t/**\n\t * При изменении значения модели в режиме inline необходимо очистить поле поиска,\n\t * так как поиск больше не актуален после выбора значения\n\t */\n\tif (searchTypeLocal.value === 'inline') {\n\t\tmenu.resetSearch();\n\t}\n});\n\nconst placeholder = computed(() => {\n\tif (Array.isArray(model.value) || props.multiselect || !props.selectedAsPlaceholder && searchTypeLocal.value !== 'inline') {\n\t\treturn props.placeholder;\n\t}\n\n\treturn model.value?.name || props.placeholder;\n});\n\n/**\n * Обработчик ввода клавиш на кнопке или поле ввода\n */\nconst onOpenerKeydown = (e: KeyboardEvent) => {\n\tlet needOpen = false;\n\n\tswitch (e.key) {\n\t\tcase 'Delete':\n\t\tcase 'Backspace':\n\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tmodel.value.pop();\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'ArrowUp':\n\t\tcase 'ArrowRight':\n\t\tcase 'ArrowDown':\n\t\tcase 'ArrowLeft':\n\t\tcase 'Enter':\n\t\tcase ' ':\n\t\t\tneedOpen = true;\n\n\t\t\tbreak;\n\t\tcase 'Escape':\n\t\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\t\t// очистка введенного текста\n\t\t\t\tmenu.resetSearch();\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\t// введен символ\n\tconst symbolPressed = e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n\n\t// введен символ\n\tif (searchTypeLocal.value === 'popup' || searchTypeLocal.value === 'inline') {\n\t\tif (symbolPressed) {\n\t\t\tneedOpen = true;\n\t\t}\n\t}\n\n\t// popup уже открыт\n\tif (getPopup()?.elPopup) {\n\t\tneedOpen = false;\n\t}\n\n\tif (needOpen) {\n\t\tif (searchTypeLocal.value === 'popup') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\t// введен символ\n\t\t\tif (symbolPressed) {\n\t\t\t\t// начало ввода, сразу ввести первый символ вместе с открытием popup\n\t\t\t\tif (!menu.searchText.value) {\n\t\t\t\t\tmenu.searchText.value = e.key;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t(e.currentTarget as HTMLElement)?.click();\n\t}\n};\n\nlet disabledFocusToOpen = false;\n\nconst onFocus = (e: FocusEvent) => {\n\tif (disabledFocusToOpen) return;\n\n\tif (searchTypeLocal.value === 'inline') {\n\t\t(e.currentTarget as HTMLElement)?.click();\n\t}\n};\n\nconst onClickChanger = (e: MouseEvent) => {\n\te.preventDefault();\n\n\tdisabledFocusToOpen = true;\n\t(e.currentTarget as HTMLElement)?.parentElement?.focus();\n\tdisabledFocusToOpen = false;\n\n\tmenu.selectNextItem();\n};\n\n/**\n * Обработчик открытия попапа\n */\nconst onOpen = () => {\n\tdisabledFocusToOpen = true;\n\n\tif (api.apiRequest) {\n\t\tif (menu.genIsShort()) {\n\t\t\tgetPopup()?.close();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// при открытии сразу выполнить поиск\n\t\tapi.setSearchTextAndLoad(menu.searchText.value, false);\n\t}\n};\n\n/**\n * Обработчик закрытия попапа\n */\nconst onClose = () => {\n\tsetTimeout(() => {\n\t\tdisabledFocusToOpen = false;\n\t}, 100);\n\n\t// очистка введенного текста\n\tif (searchTypeLocal.value === 'popup') {\n\t\tif (menu.searchText.value) menu.resetSearch();\n\t}\n};\n\n/**\n * Обработчик прокрутки списка контента\n *\n * Для дозагрузки элеменов через api\n *\n * @param {Event} e - Событие прокрутки\n */\nconst onScrollContentList = (e: Event) => {\n\tconst el = e.target as HTMLElement;\n\n\tif (el.scrollTop / (el.scrollHeight - el.offsetHeight) > 0.8) {\n\t\tapi.load(true);\n\t}\n};\n\n// для storybook\nif ((window as any).__STORYBOOK_PREVIEW__) {\n\twatch(\n\t\t() => props.multiselect,\n\t\t() => {\n\t\t\tif (props.multiselect) {\n\t\t\t\tif (!Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\t\tname: 'Выбери меня',\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = {\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t\tname: '',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ immediate: true },\n\t);\n\n\twatch(\n\t\t() => props.searchType,\n\t\t() => {\n\t\t\t// пауза для установки props в адресной строке\n\t\t\tsetTimeout(() => {\n\t\t\t\tlocation.reload();\n\t\t\t}, 500);\n\t\t},\n\t);\n}\n</script>\n\n<template>\n\t<TopPopup\n\t\tref=\"popupRef\"\n\t\t@open=\"onOpen()\"\n\t\t@close=\"onClose()\"\n\t\t@scrollContentList=\"api ? onScrollContentList($event) : undefined\"\n\t\t:notch=\"searchTypeLocal !== 'inline'\"\n\t\t:transitionDuration=\"0\"\n\t>\n\t\t<template #opener>\n\t\t\t<component\n\t\t\t\t:is=\"component\"\n\n\t\t\t\t:=\"buttonProps\"\n\n\t\t\t\tref=\"subcomponentSelector\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-selector2' : true,\n\t\t\t\t\t'top-selector2-multiselect': multiselect,\n\t\t\t\t\t['top-selector2-' + modificator]: !!modificator,\n\t\t\t\t\t'top-as-input': !buttonProps,\n\t\t\t\t\t'top-as-selector': true,\n\t\t\t\t\t['top-size_' + size]: true,\n\t\t\t\t\t['top-disabled']: disabled,\n\t\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t\t['top-error']: isError,\n\t\t\t\t}\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t@keydown=\"onOpenerKeydown\"\n\t\t\t\tv-top-focus.onupdate=\"isError\"\n\n\t\t\t\t:placeholder\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t\t@focus=\"onFocus\"\n\t\t\t\t@blur=\"getPopup()?.isClosed ? menu.resetSearch() : ''\"\n\t\t\t>\n\t\t\t\t<template v-if=\"multiselect\">\n\t\t\t\t\t<div class=\"top-selector2_activeItems\">\n\t\t\t\t\t\t<Selector2ItemMulti\n\t\t\t\t\t\t\tv-for=\"item of model as Item[]\"\n\t\t\t\t\t\t\t:id=\"item.id\"\n\t\t\t\t\t\t\t:name=\"item.name\"\n\t\t\t\t\t\t\t@delete=\"menu.deleteItemById\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\n\t\t\t\t<span v-if=\"searchTypeLocal !== 'inline' && !multiselect\" class=\"top-selector2_activeName top-ellipsis\">\n\t\t\t\t\t{{ !Array.isArray(model) ? model.name : '' }}\n\t\t\t\t</span>\n\n\t\t\t\t<span v-if=\"multiselect && !model.length\" class=\"top-selector2_placeholder top-ellipsis\">\n\t\t\t\t\t{{ placeholder }}\n\t\t\t\t</span>\n\n\t\t\t\t<span\n\t\t\t\t\tv-if=\"addChanger && !buttonProps && !multiselect && menu.items.value.length > 1 && !disabled\"\n\t\t\t\t\tclass=\"top-changer top-changer-selector top-popup_widget\"\n\t\t\t\t\tdata-top-popup-disabled=\"true\"\n\t\t\t\t\t@click=\"onClickChanger\"\n\t\t\t\t></span>\n\t\t\t</component>\n\t\t</template>\n\n\t\t<template #widget v-if=\"searchTypeLocal === 'popup'\">\n\t\t\t<TopPopupWidgetInput\n\t\t\t\ttitle=\"Поиск\"\n\t\t\t\ticon=\"\"\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t\t:isLoading=\"api.isLoading.value && !api.apiRequest?.params.offset\"\n\t\t\t\t:placeholder\n\t\t\t/>\n\t\t</template>\n\n\t\t<template #contentList>\n\t\t\t<TopPopupListItem\n\t\t\t\tv-for=\"item of menu.itemsForShow.value\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-active': !Array.isArray(model) && !multiselect && model.id === item.id && model.name === item.name,\n\t\t\t\t}\"\n\t\t\t\t:key=\"item.id ?? undefined\"\n\t\t\t\t:closeByClick=\"!multiselect || Core.state.isMobile\"\n\t\t\t\t@click=\"menu.selectItem(item)\"\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tv-if=\"$slots.item\"\n\t\t\t\t\tname=\"item\"\n\t\t\t\t\t:item\n\t\t\t\t></slot>\n\n\t\t\t\t<template\n\t\t\t\t\tv-else\n\t\t\t\t>\n\t\t\t\t\t{{ item.name }}\n\t\t\t\t</template>\n\t\t\t</TopPopupListItem>\n\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"!api.isLoading.value && !menu.itemsForShow.value.length\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t{{ $i18n.Common.No_results }}\n\t\t\t</TopPopupListItem>\n\n\t\t\t<!-- Индикатор загрузки, первичная дозагрузка отображается в поле поиска, если оно отображено -->\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"api.isLoading.value && (searchType !== 'popup' || api.apiRequest?.params.offset)\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t<TopPreloader type=\"circles\"/>\n\t\t\t</TopPopupListItem>\n\t\t</template>\n\t</TopPopup>\n</template>\n\n<style>\n.top-selector2 {\n\twidth: 180px;\n\tpadding: var(--top-padding-1) var(--top-forms-padding);\n}\n\n.top-selector2::placeholder,\n.top-selector2_placeholder {\n\tcolor: var(--color-text-2);\n}\n\n.top-selector2_placeholder {\n\tpadding-left: var(--top-padding-1);\n}\n\n.top-selector2-multiselect {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tflex-grow: 1;\n}\n\n.top-selector2.top-active {\n\t--top-forms-border-color: var(--top-forms-border-color-hover);\n}\n\n.top-selector2_activeItems {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--top-padding-1);\n\tmax-width: 100%;\n}\n\n.top-selector2_activeName {\n\twhite-space: nowrap;\n}\n\n.top-changer-selector {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tmargin: calc(0px - var(--top-padding-1));\n\ttransform: translateX(0);\n}\n\n.top-selector2.top-button {\n\tjustify-content: start;\n}\n\n.top-selector2.top-input_input ~ .top-changer-selector {\n\ttransform: translateX(-52px);\n}\n\n.top-selector2.top-as-selector {\n\tpadding-right: calc(var(--top-selector-arrow-width) + var(--top-padding-2));\n}\n</style>\n","<script lang=\"ts\" setup>\nimport type { Props, Slots } from './types';\n\nwithDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n\tsize: 'default',\n});\n\ndefineSlots<Slots>();\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-info']: true,\n\t\t\t['top-size_' + size]: true,\n\t\t\t['top-info-styling_' + styling]: true,\n\t\t}\"\n\t\t:data-top-icon=\"icon\"\n\t>\n\t\t<div class=\"top-info_text\">\n\t\t\t<slot></slot>\n\t\t</div>\n\n\t\t<span v-if=\"$slots.additional\" class=\"top-info_value\">\n\t\t\t<slot name=\"additional\"></slot>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n.top-info {\n\t--top-icon-width: var(--top-icon-size);\n\n\tborder-radius: var(--top-forms-radius);\n\tbox-sizing: border-box;\n\tmin-height: var(--top-forms-base-height);\n\tpadding: var(--top-padding-1) var(--top-padding-2);\n\tflex-grow: 5;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--top-gap-2);\n}\n\n.top-info_text {\n\tflex-grow: 1;\n}\n\n.top-info_value {\n\tfont-weight: bold;\n}\n\n/* size */\n.top-info.top-size_default {\n\tborder-radius: var(--top-radius-3);\n\tpadding: var(--top-padding-4);\n}\n\n/* styling */\n.top-info-styling_default {\n\t--top-icon-color: var(--color-text-2);\n\n\tbackground: var(--color-layer-1);\n}\n\n.top-info-styling_info {\n\t--top-icon-color: var(--color-text-primary);\n\n\tbackground: var(--color-layer-primary-1);\n}\n\n.top-info-styling_warning {\n\t--top-icon-color: var(--color-text-warning);\n\n\tbackground: var(--color-layer-warning-1);\n}\n\n.top-info-styling_negative {\n\t--top-icon-color: var(--color-text-negative);\n\n\tbackground: var(--color-layer-negative-1);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { TopButton } from '@/components/forms/forms';\nimport type { Emits, Props } from '@/components/formsExt/policy/types';\n\ndefineProps<Props>();\nconst emits = defineEmits<Emits>();\n\nconst isVisible = ref(true);\n\nconst onAccept = () => {\n\tisVisible.value = false;\n\n\temits('accept');\n};\n</script>\n\n<template>\n\t<div\n\t\tv-if=\"isVisible\"\n\t\tclass=\"top-policy\"\n\t>\n\t\t<div class=\"top-policy_title\">\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\tclass=\"top-policy_description\"\n\t\t\tv-html=\"description\"\n\t\t></div>\n\n\t\t<TopButton\n\t\t\tsize=\"m\"\n\t\t\t@click=\"onAccept\"\n\t\t>\n\t\t\t{{ acceptText }}\n\t\t</TopButton>\n\t</div>\n</template>\n\n<style>\n.top-policy {\n\tbox-sizing: border-box;\n\tbox-shadow: var(--top-shadow-b);\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-bg-lightning-1);\n\twidth: 600px;\n\tpadding: var(--top-padding-4);\n\tposition: fixed;\n\tright: var(--top-gap-10);\n\tbottom: var(--top-gap-10);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-4);\n\tz-index: 10000;\n}\n\n.top-policy_title {\n\tfont-size: 24px;\n\tfont-weight: 700;\n}\n\n.top-policy_description {\n\tfont-size: 14px;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-policy {\n\t\twidth: 100%;\n\t\tright: 0;\n\t\tbottom: calc(var(--top-gap-5) + var(--toolbar-height, 0px));\n\t}\n}\n</style>\n"],"names":["props","__props","emit","__emit","localValue","ref","isFocused","isChanged","computed","submit","value","cancel","clickOnTitle","normalizeClass","attachToKeyboard","_cache","$event","toDisplayString","_ctx","createCommentVNode","isError","name","placeholder","rows","minHeight","expandable","disabled","readonly","hint","withKeys","withModifiers","openBlock","createBlock","_sfc_main$9","createSlots","withCtx","createTextVNode","intermediateValue","watch","toRef","createElementBlock","_hoisted_1$6","createVNode","_sfc_main$a","mergeProps","model","useModel","elRef","_a","item","_c","_b","_e","_d","uid","size","_hoisted_2$4","_hoisted_3$3","onChange","id","newModel","index","_hoisted_2$3","_hoisted_1$4","_hoisted_1$3","createElementVNode","useAPI","api","apiSetSearchParams","minLength","useCache","items","cache","isLoading","searchText","nextOffset","callAPI","cacheKey","res2","res","indexWithError","load","append","loadDebounce","debounce","newSearchText","useDebounce","ITEM_ID_ALL","isSelected","modelValue","checkNameForNullId","itemSelected","useMenu","multiselect","appendAllValue","appendSearchToResult","searchType","itemAll","useI18n","resetSearch","genIsShort","localItems","localItems2","itemsForShow","searchString","searchStringInvertKeyboard","invertKeyboardLayout","items2","itemName","nextIndex","searchTypeLocal","Core","menu","component","popupRef","getPopup","onOpenerKeydown","e","needOpen","symbolPressed","disabledFocusToOpen","onFocus","onClickChanger","onOpen","onClose","onScrollContentList","el","unref","withDirectives","resolveDynamicComponent","modificator","buttonProps","_hoisted_1$2","Fragment","renderList","renderSlot","_sfc_main$d","_sfc_main$e","icon","emits","isVisible","onAccept","_hoisted_2","description"],"mappings":"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"}
1
+ {"version":3,"file":"formsExt.js","sources":["../../src/components/formsExt/editArea/editArea.vue","../../src/components/formsExt/editInput/editInput.vue","../../src/components/formsExt/libs/optionGroup/optionGroup.vue","../../src/components/formsExt/radioGroup/radioGroup.vue","../../src/components/formsExt/checkboxGroup/checkboxGroup.vue","../../src/components/formsExt/selector2/itemMulti.vue","../../src/components/formsExt/selector2/composables/useAPI.ts","../../src/components/formsExt/selector2/utils.ts","../../src/components/formsExt/selector2/composables/useMenu.ts","../../src/components/formsExt/selector2/selector2.vue","../../src/components/formsExt/info/info.vue","../../src/components/formsExt/policy/policy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport Button from '@/components/forms/button/button.vue';\nimport type { Emits, Props } from './types';\nimport Textarea from '@/components/forms/textarea/textarea.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tdefaultValue: '',\n\tcancelText: 'Cancel',\n\tsubmitText: 'Send',\n\tcloseText: 'Close',\n\texpandable: true,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst localValue = ref(props.defaultValue);\n\nconst isFocused = ref(props.isFocused);\n\nconst isChanged = computed(() => localValue.value !== props.defaultValue);\n\nconst submit = (value: string) => {\n\temit('submit', value);\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst cancel = () => {\n\tif (props.forceShowCloseBtn && !isChanged.value) {\n\t\temit('close');\n\n\t\treturn;\n\t}\n\n\tlocalValue.value = props.defaultValue;\n};\n\nconst clickOnTitle = () => {\n\tif (props.attachToKeyboard) emit('clickOnTitle');\n};\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-editArea': true,\n\t\t\t'top-editArea-attachedToKeyboard': attachToKeyboard,\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tv-if=\"title\"\n\t\t\tclass=\"top-editArea_title\"\n\t\t\t@click=\"clickOnTitle()\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-editArea_form': true,\n\t\t\t\t'top-forms-focusable': true,\n\t\t\t\t'top-as-input': true,\n\t\t\t\t'top-error': isError,\n\t\t\t\t'top-focus': isFocused,\n\t\t\t}\"\n\t\t>\n\t\t\t<Textarea\n\t\t\t\tv-model=\"localValue\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:rows=\"rows\"\n\t\t\t\t:minHeight=\"minHeight\"\n\t\t\t\t:expandable=\"expandable\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:readonly=\"readonly\"\n\t\t\t\t:isError=\"isError\"\n\t\t\t\t:hint=\"hint\"\n\t\t\t\tclass=\"top-editArea_element\"\n\t\t\t\t@focus=\"() => isFocused = true\"\n\t\t\t\t@blur=\"() => isFocused = false\"\n\t\t\t\t@keyup.esc=\"cancel\"\n\t\t\t\t@keyup.ctrl.enter=\"submit(localValue)\"\n\t\t\t/>\n\n\t\t\t<div class=\"top-editArea_footer\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"isChanged || forceShowCloseBtn\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\tstyling=\"soft\"\n\t\t\t\t\t@click=\"cancel\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ cancelText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tv-if=\"isChanged\"\n\t\t\t\t\t:icon=\"$core.state.isMobile ? '': ''\"\n\t\t\t\t\t@click=\"submit(localValue)\"\n\t\t\t\t>\n\t\t\t\t\t<template\n\t\t\t\t\t\t#default\n\t\t\t\t\t\tv-if=\"!$core.state.isMobile\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ submitText }}\n\t\t\t\t\t</template>\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n.top-editArea {\n\t--top-editArea-bottom: env(keyboard-inset-height, 0px);\n\t--top-editArea-offset-bottom: 0px;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n}\n\n.top-editArea_title {\n\tfont-size: 12px;\n}\n\n.top-editArea_form {\n\tflex-direction: column;\n}\n\n/* textarea в EditArea */\n.top-textarea {\n\twidth: 100%;\n}\n\n.top-editArea_element.top-textarea_textarea {\n\t--top-forms-border-width: 0px;\n\n\toutline: none;\n\tanimation: none;\n}\n\n/* footer */\n.top-editArea_footer {\n\tpadding: var(--top-forms-padding);\n\tdisplay: flex;\n\tmin-height: 32px;\n\talign-self: flex-end;\n\tjustify-content: flex-end;\n\tgap: var(--top-forms-padding);\n}\n\n/* attachedToKeyboard */\n.top-editArea-attachedToKeyboard {\n\tbackground: var(--top-forms-background-color);\n\tposition: fixed;\n\tbottom: calc(var(--top-editArea-offset-bottom) + var(--top-editArea-bottom));\n\tright: 0;\n\tleft: 0;\n\tz-index: 2;\n\tgap: 0;\n\ttransition: bottom var(--transition-fast);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_form {\n\tborder-radius: 0;\n\tborder: none;\n\tborder-top: 1px solid var(--top-forms-border-color);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_title {\n\tcursor: pointer;\n\tborder-top: 1px solid var(--color-line-2-opacity);\n\tpadding: var(--top-forms-padding);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_footer > [data-top-icon] {\n\tborder-radius: 100%;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-editArea_form{\n\t\tflex-direction: row;\n\t}\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, toRef, watch } from 'vue';\nimport type { Emits, Props } from './types';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = defineProps<Props>();\n\nconst intermediateValue = ref(props.modelValue);\n\nwatch(toRef(props.modelValue), () => {\n\tintermediateValue.value = props.modelValue;\n});\n\nconst emit = defineEmits<Emits>();\n\nconst submit = () => {\n\temit('update:modelValue', intermediateValue.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-editInput\">\n\t\t<TopInput\n\t\t\t:=\"input\"\n\t\t\t@keydown.esc.capture.stop=\"intermediateValue = modelValue\"\n\t\t\t@keydown.enter.stop=\"submit\"\n\t\t\tv-model=\"intermediateValue\"\n\t\t/>\n\n\t\t<TopButton\n\t\t\tv-if=\"intermediateValue !== modelValue\"\n\t\t\ticon=\"\"\n\t\t\tstyling=\"soft\"\n\t\t\t:=\"button\"\n\t\t\t@click=\"submit\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n.top-editInput {\n\twidth: 220px;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: var(--top-gap-1);\n}\n\n.top-editInput .top-input {\n\twidth: unset;\n\tflex-grow: 1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { Props } from './types';\nimport TopCheckbox from '@/components/forms/checkbox/checkbox.vue';\nimport TopRadio from '@/components/forms/radio/radio.vue';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsize: 's',\n});\n\nconst elRef = ref<HTMLElement | null>(null);\n\nwatch(model, () => {\n\tconst valuesAvailable = props.items.map(item => item.value);\n\n\tif (Array.isArray(model.value)) {\n\t\t// есть ли неподдерживаемые значения\n\t\tconst valueIsWrong = model.value.find((value) => {\n\t\t\treturn !valuesAvailable.includes(value);\n\t\t});\n\n\t\tif (valueIsWrong) {\n\t\t\t// оставить только поддерживаемые значения\n\t\t\tmodel.value = model.value.filter((value) => {\n\t\t\t\treturn valuesAvailable.includes(value);\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif (!valuesAvailable.includes(model.value)) {\n\t\t\tmodel.value = valuesAvailable[0] ?? '';\n\t\t}\n\t}\n\n\telRef.value?.querySelector('.radioGroup_item-selected')?.scrollIntoView();\n}, { immediate: true });\n\nconst name = 'optionGroup-' + Math.random();\n</script>\n\n<template>\n\t<div\n\t\tref=\"elRef\"\n\t\t:class=\"{\n\t\t\t['top-optionGroup']: true,\n\t\t\t['top-optionGroup-showIndicator_' + Number(showIndicator)]: true,\n\t\t\t['top-scrollBarXHidding']: true,\n\t\t\t['top-size_' + size]: !!size,\n\t\t\t['top-error']: isError,\n\t\t}\"\n\t>\n\t\t<template v-if=\"Array.isArray(model)\">\n\t\t\t<TopCheckbox\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-optionGroup_item-selected']: model.includes(item.value),\n\t\t\t\t\t['top-optionGroup_item']: true,\n\t\t\t\t}\"\n\t\t\t\tv-for=\"item of items\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t\t:isError\n\t\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t>\n\t\t\t\t{{ item.title }}\n\t\t\t</TopCheckbox>\n\t\t</template>\n\n\t\t<template v-else>\n\t\t\t<TopRadio\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-optionGroup_item-selected']: item.value === model,\n\t\t\t\t\t['top-optionGroup_item']: true,\n\t\t\t\t}\"\n\t\t\t\tv-for=\"item of items\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:name\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t\t:isError\n\t\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t>\n\t\t\t\t{{ item.title }}\n\t\t\t</TopRadio>\n\t\t</template>\n\t</div>\n</template>\n\n<style>\n.top-optionGroup {\n\tuser-select: none;\n\tbox-sizing: border-box;\n\tborder-radius: 8px;\n\tbackground-color: var(--color-layout-middle);\n\theight: var(--top-forms-base-height);\n\tpadding: 2px;\n\tgap: 2px;\n\tdisplay: flex;\n\talign-items: flex-start;\n}\n\n.top-optionGroup_item {\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\tborder-radius: 6px;\n\theight: calc(var(--top-forms-base-height) - 4px);\n\tpadding: 1px 3px;\n\tcolor: var(--color-text-2);\n\tfont-weight: 400;\n\twhite-space: nowrap;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-grow: 1;\n\tgap: var(--top-gap-1);\n}\n\n.top-optionGroup_item:hover {\n\tbackground-color: var(--color-layout-front-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n.top-optionGroup_item-selected {\n\tcolor: var(--color-text-1);\n\tbackground-color: var(--color-bg-lightning-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n.top-optionGroup_item > .top-forms-optionLabel {\n\tflex-grow: 0;\n}\n\n/* indicator */\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item {\n\tjustify-content: center;\n}\n\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item:has(:focus-visible) {\n\toutline: 2px solid var(--color-bg-primary-2);\n\toutline-offset: -1px;\n}\n\n.top-optionGroup-showIndicator_1 > .top-optionGroup_item {\n\tjustify-content: flex-start;\n}\n\n.top-optionGroup-showIndicator_0 > .top-optionGroup_item > .top-forms-option {\n\topacity: 0;\n\twidth: 0;\n\theight: 0;\n\tposition: absolute;\n}\n\n.top-optionGroup_item > .top-forms-option {\n\torder: -1;\n}\n</style>\n","<script setup lang=\"ts\">\nimport OptionGroup from '../libs/optionGroup/optionGroup.vue';\n\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\ndefineProps<Props>();\n</script>\n\n<template>\n\t<OptionGroup\n\t\tclass=\"top-radioGroup\"\n\t\tv-model=\"model\"\n\t\t:items=\"$props.items\"\n\t\t:size=\"$props.size\"\n\t\t:showIndicator=\"$props.showIndicator\"\n\t\t:isError=\"$props.isError\"\n\t>\n\t\t<slot/>\n\t</OptionGroup>\n</template>\n\n<style>\n.top-radioGroup > .top-optionGroup_item-selected {\n\tcolor: var(--color-text-1);\n\tbackground-color: var(--color-bg-lightning-1);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n/* indicator */\n.top-radioGroup > .top-optionGroup_item > .top-optionGroup_indicator {\n\tborder-radius: 50%;\n}\n\n.top-radioGroup > .top-optionGroup_item-selected > .top-optionGroup_indicator {\n\tborder-color: var(--color-line-primary-1);\n\tborder-width: 5px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport OptionGroup from '../libs/optionGroup/optionGroup.vue';\n\nimport type { Props } from './types';\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\ndefineProps<Props>();\n</script>\n\n<template>\n\t<OptionGroup\n\t\tclass=\"top-checkboxGroup\"\n\t\tv-model=\"model\"\n\t\t:items=\"$props.items\"\n\t\t:size=\"$props.size\"\n\t\t:showIndicator=\"$props.showIndicator\"\n\t\t:isError=\"$props.isError\"\n\t>\n\t\t<slot/>\n\t</OptionGroup>\n</template>\n\n<style>\n.top-checkboxGroup > .top-optionGroup_item .top-optionGroup_indicator {\n\tborder-radius: var(--top-radius-1);\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\n}\n\n.top-checkboxGroup > .top-optionGroup_item-selected .top-optionGroup_indicator {\n\tborder-color: transparent;\n\tbackground: var(--color-bg-primary-1);\n\tdisplay: inline-flex;\n\tjustify-content: center;\n}\n\n.top-checkboxGroup > .top-optionGroup_item-selected .top-optionGroup_indicator:before {\n\tcontent: \"\";\n\tcolor: #FFF;\n\tfont-size: 16px;\n\tline-height: 0.8;\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { EmitsItemMulti, PropsItemMulti } from './types';\n\ndefineProps<PropsItemMulti>();\ndefineEmits<EmitsItemMulti>();\n</script>\n\n<template>\n\t<div class=\"top-selector2_itemMulti top-ellipsis\">\n\t\t{{ name }}\n\t\t<span\n\t\t\tclass=\"top-selector2_itemMultiDelete\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t@click=\"$emit('delete', id)\"\n\t\t\t@mousedown.stop\n\t\t></span>\n\t</div>\n</template>\n\n<style>\n.top-selector2_itemMulti {\n\tbox-sizing: border-box;\n\tpadding-left: var(--top-padding-2);\n\tborder-radius: var(--top-radius-1, 4px);\n\tborder: 1px solid var(--color-line-primary-1);\n\tbackground: var(--color-layer-primary-2);\n\tmin-height: 22px;\n\tmax-width: 100%;\n\tcolor: var(--color-text-1);\n\tflex-grow: 0;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--top-gap-1);\n}\n\n.top-selector2_itemMultiDelete {\n\t--top-icon-size: 14px;\n\t--top-icon-width: 18px;\n\t--top-icon-color: var(--color-text-1);\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\theight: 100%;\n\tcursor: pointer;\n}\n\n.top-selector2_itemMultiDelete:hover {\n\tbackground: var(--color-layer-primary-2);\n}\n\n@media screen and (min-width: 900px) {\n\t.top-selector2.top-active .top-selector2_itemMultiDelete {\n\t\tz-index: calc(var(--top-popup-z-index) + 1);\n\t}\n}\n</style>\n","import { ref } from 'vue';\nimport { debounce } from '../../../../core/utils/lodash';\nimport type { Item, Props } from '../types';\n\nexport type API = ReturnType<typeof useAPI>;\n\nexport const useAPI = (api: Props['api'], apiSetSearchParams: Props['apiSetSearchParams'], minLength: number, useCache: Props['useCache']) => {\n\t/**\n\t * Список, полученный через API\n\t */\n\tconst items = ref<Item[]>([]);\n\n\t/**\n\t * Кэш для полученных ответов через apiRequest\n\t */\n\tconst cache = new Map<string, any>();\n\n\t/**\n\t * Флаг - идет загрузка\n\t */\n\tconst isLoading = ref(false);\n\n\tlet searchText = '';\n\tlet nextOffset: number | null | undefined;\n\n\tif (api && !api.params.limit) {\n\t\tapi.params.limit = 100;\n\t}\n\n\t/**\n\t * Выполнить обращение к API\n\t *\n\t * При ошибке вернет undefined\n\t */\n\tconst callAPI = async (): Promise<Api.ResponseSuccess<any, 'get'> | undefined> => {\n\t\tif (!api) return;\n\n\t\tlet cacheKey: string | undefined = undefined;\n\n\t\tif (useCache) {\n\t\t\tcacheKey = JSON.stringify(api.params);\n\t\t\tconst res = cache.get(cacheKey);\n\n\t\t\tif (res) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\tisLoading.value = true;\n\t\tconst res = await api.call();\n\t\tisLoading.value = false;\n\n\t\tif (res.errors) return;\n\n\t\tif (!Array.isArray(res.result)) {\n\t\t\tconsole.warn('Array expected in `res.result`');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst indexWithError = (res.result as Array<Item | any>).findIndex(item => item.id === undefined || item.name === undefined);\n\t\tif (indexWithError !== -1) {\n\t\t\tconsole.warn(`В result[${indexWithError}] нет id или name`);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (cacheKey) {\n\t\t\tcache.set(cacheKey, res);\n\t\t}\n\n\t\treturn res as Api.ResponseSuccess<any, 'get'>;\n\t};\n\n\t/**\n\t * Загрузить items\n\t */\n\tconst load = async (append: boolean) => {\n\t\tif (!api) return;\n\n\t\tif (append) {\n\t\t\t// данных о следующих страницах не обнаружено\n\t\t\tif (!nextOffset) return;\n\n\t\t\t// дозагружать нельзя, если не завершена предыдущая загрузка\n\t\t\tif (isLoading.value) return;\n\n\t\t\tapi.params.offset = nextOffset;\n\t\t} else {\n\t\t\tapi.params.offset = 0;\n\t\t}\n\n\t\tapiSetSearchParams?.(searchText);\n\n\t\tconst res = await callAPI();\n\t\tif (!res) return;\n\n\t\tnextOffset = res.nextOffset;\n\n\t\tif (append) {\n\t\t\titems.value = items.value.concat(res.result);\n\t\t} else {\n\t\t\titems.value = res.result;\n\t\t}\n\t};\n\n\tconst loadDebounce = debounce(() => load(false), 200);\n\n\t/**\n\t * Выполнить поиск по указанному тексту\n\t *\n\t * Если длина текста меньше minLength, поиск не будет произведен\n\t *\n\t * Если текст не изменился, поиск не будет произведен\n\t *\n\t * @param newSearchText - текст поиска\n\t * @param useDebounce - дедупликация загрузки списка\n\t */\n\tconst setSearchTextAndLoad = (newSearchText: string, useDebounce = true) => {\n\t\tif (!api) return;\n\n\t\tif (newSearchText.length < minLength) return;\n\n\t\t// условия поиска не поменялись, данные загружены\n\t\tif (newSearchText === searchText && items.value.length) return;\n\n\t\tsearchText = newSearchText;\n\n\t\tif (useDebounce) {\n\t\t\tvoid loadDebounce();\n\t\t} else {\n\t\t\tvoid load(false);\n\t\t}\n\t};\n\n\treturn {\n\t\tapiRequest: api,\n\t\titems,\n\t\tisLoading,\n\t\tload,\n\t\tsetSearchTextAndLoad,\n\t};\n};\n","import type { Item, Props } from './types';\n\nexport const ITEM_ID_ALL = 0;\n\n/**\n * Выбран ли элемент\n */\nexport const isSelected = (modelValue: Props['modelValue'], item: Item, checkNameForNullId = true) => {\n\tif (checkNameForNullId && item.id === null) {\n\t\tif (Array.isArray(modelValue)) {\n\t\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id && itemSelected.name === item.name);\n\t\t} else {\n\t\t\treturn item.name === modelValue.name;\n\t\t}\n\t}\n\n\tif (Array.isArray(modelValue)) {\n\t\treturn modelValue.some(itemSelected => itemSelected.id === item.id);\n\t} else {\n\t\treturn item.id === modelValue.id;\n\t}\n};\n","import { computed, ref, type ComputedRef, type Ref } from 'vue';\nimport { invertKeyboardLayout } from '@/core/utils/keyboard';\nimport type { Item, Props } from '../types';\nimport { type API } from './useAPI';\nimport { isSelected, ITEM_ID_ALL } from '../utils';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Функционал поиска\n */\nexport const useMenu = (\n\tmodel: Ref<Props['modelValue']>,\n\titems: Ref<Props['items']>,\n\tmultiselect: Props['multiselect'],\n\tappendAllValue: Ref<Props['appendAllValue']>,\n\tappendSearchToResult: Ref<Props['appendSearchToResult']>,\n\tsearchType: Ref<Props['searchType']>,\n\tminLength: number,\n\tapi: API,\n) => {\n\t/**\n\t * Текст поиска по результатам\n\t */\n\tconst searchText = ref('');\n\n\t/**\n\t * Объект, представляющий опцию \"Все\"\n\t */\n\tconst itemAll = {\n\t\tid: ITEM_ID_ALL,\n\t\tname: useI18n().Common.All,\n\t};\n\n\t/**\n\t * Сброс поиска\n\t */\n\tconst resetSearch = () => {\n\t\tsearchText.value = '';\n\t\tapi.items.value = [];\n\t};\n\n\t/**\n\t * Является ли строка поиска достаточной длины для отображения меню\n\t */\n\tconst genIsShort = () => {\n\t\tif (!api.apiRequest) return false;\n\t\tif (searchType.value !== 'inline') return false;\n\t\tif (searchText.value.length >= minLength) return false;\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Варианты выбора: props.items + \"Выбрать все\"\n\t */\n\tconst localItems: ComputedRef<Item[]> = computed(() => {\n\t\tconst localItems: Item[] = [];\n\n\t\tif (!multiselect && appendAllValue.value) {\n\t\t\tlocalItems.push(itemAll);\n\t\t}\n\n\t\titems.value?.forEach(item => localItems.push({ ...item }));\n\n\t\treturn localItems;\n\t});\n\n\t/**\n\t * Подготовленный список меню, который содержит в сумме:\n\t * - prop.items: указанный список с учетом фильтра и опций компонента\n\t * - api.items: результаты api запроса, если используется api\n\t *\n\t * @returns Отфильтрованный массив элементов для отображения\n\t */\n\tconst itemsForShow = computed(() => {\n\t\tconst searchString = searchText.value.toLowerCase();\n\t\tconst searchStringInvertKeyboard = invertKeyboardLayout(searchString);\n\n\t\tlet items: NonNullable<Props['items']> = [];\n\n\t\tlocalItems.value.forEach((item) => {\n\t\t\tconst itemName = item.name.toLowerCase();\n\n\t\t\tif (\n\t\t\t\titem.id === Number(searchString) ||\n\t\t\t\titemName.includes(searchString) ||\n\t\t\t\titemName.includes(searchStringInvertKeyboard)\n\t\t\t) {\n\t\t\t\tif (itemName === searchString || itemName === searchStringInvertKeyboard) {\n\t\t\t\t\titems.unshift(item);\n\t\t\t\t} else {\n\t\t\t\t\titems.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\titems.push(...api.items.value);\n\n\t\t// ввод произвольного значения\n\t\tif (\n\t\t\tappendSearchToResult.value &&\n\t\t\t!!searchText.value &&\n\t\t\t(!items.length || items[0].name.toLowerCase() !== searchString)\n\t\t) {\n\t\t\titems.push({\n\t\t\t\tid: null,\n\t\t\t\tname: searchText.value,\n\t\t\t});\n\t\t}\n\n\t\tif (multiselect) {\n\t\t\titems = items.filter(item => !isSelected(model.value, item));\n\t\t}\n\n\t\treturn items;\n\t});\n\n\t/**\n\t * Выбрать элемент\n\t *\n\t * @param item Элемент для выбора\n\t */\n\tconst selectItem = (item: Item) => {\n\t\tif (multiselect && Array.isArray(model.value)) {\n\t\t\tif (!isSelected(model.value, item)) {\n\t\t\t\tmodel.value = [...model.value, item];\n\t\t\t}\n\t\t} else {\n\t\t\tmodel.value = item;\n\t\t}\n\t};\n\n\t/**\n\t * Выбрать следующее значение\n\t */\n\tconst selectNextItem = () => {\n\t\tif (!Array.isArray(model.value)) {\n\t\t\tconst currentIndex = itemsForShow.value.findIndex(item => item.id === (model.value as Item).id);\n\t\t\tconst nextIndex = (currentIndex + 1) % itemsForShow.value.length;\n\t\t\tmodel.value = { ...itemsForShow.value[nextIndex] };\n\t\t}\n\t};\n\n\t/**\n\t * Удалить выбранное значение по id\n\t *\n\t * @param id Идентификатор элемента для удаления\n\t */\n\tconst deleteItemById = async (id: Item['id']) => {\n\t\tif (Array.isArray(model.value)) {\n\t\t\tmodel.value = model.value.filter(item => item.id !== id);\n\t\t}\n\t};\n\n\treturn {\n\t\tsearchText,\n\t\tresetSearch,\n\t\tgenIsShort,\n\t\titems: localItems,\n\t\titemsForShow,\n\t\tselectItem,\n\t\tselectNextItem,\n\t\tdeleteItemById,\n\t};\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, toRef, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport { TopPopup, TopPopupListItem, TopPopupWidgetInput } from '@/components/popup/popup';\nimport { TopPreloader } from '@/components/forms/forms';\nimport type { Item, Props, Slots } from './types';\nimport Selector2ItemMulti from './itemMulti.vue';\nimport { useAPI } from './composables/useAPI';\nimport { useMenu } from './composables/useMenu';\nimport type { TopLibPopup } from '../../popup/lib/popup';\n\nconst props = withDefaults(defineProps<Props>(), {\n\titems: () => [] as Item[],\n\tsize: 's',\n\tminLength: 0,\n\tsearchType: 'popup',\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\n\ndefineSlots<Slots>();\n\nconst searchTypeLocal = computed(() => {\n\t// multiselect не поддерживает inline ввода\n\tif (props.searchType === 'inline' && props.multiselect) return 'popup';\n\n\t// В мобильной версии popup работает в полноэкранном режиме\n\tif (props.searchType === 'inline' && Core.state.isMobile) return 'popup';\n\n\treturn props.searchType;\n});\n\nlet minLength = 0;\nif (searchTypeLocal.value === 'inline' && props.minLength) {\n\tminLength = props.minLength;\n}\n\n/**\n * Объект для работы с API\n */\nconst api = useAPI(props.api, props.apiSetSearchParams, minLength, props.useCache);\n\n/**\n * Объект для работы с меню\n */\nconst menu = useMenu(\n\tmodel,\n\ttoRef(props, 'items'),\n\tprops.multiselect,\n\ttoRef(props, 'appendAllValue'),\n\ttoRef(props, 'appendSearchToResult'),\n\tsearchTypeLocal,\n\tminLength,\n\tapi,\n);\n\nconst component = computed(() => {\n\tif (props.buttonProps) return 'TopButton';\n\tif (searchTypeLocal.value === 'inline') return 'TopInput';\n\n\treturn 'div';\n});\n\n/**\n * Экземпляр компонента Popup\n */\nconst popupRef = ref<any>(null);\n\n/**\n * Получить доступ к объекту popup\n */\nconst getPopup = (): TopLibPopup | undefined => {\n\treturn popupRef.value?.popup;\n};\n\nif (api.apiRequest) {\n\t// отложенный поиск при вводе текста\n\twatch(menu.searchText, () => {\n\t\tapi.setSearchTextAndLoad(menu.searchText.value);\n\n\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\tif (menu.genIsShort()) {\n\t\t\t\tgetPopup()?.close();\n\t\t\t}\n\t\t}\n\t});\n}\n\nwatch(model, () => {\n\t/**\n\t * При изменении значения модели в режиме inline необходимо очистить поле поиска,\n\t * так как поиск больше не актуален после выбора значения\n\t */\n\tif (searchTypeLocal.value === 'inline') {\n\t\tmenu.resetSearch();\n\t}\n});\n\nconst placeholder = computed(() => {\n\tif (Array.isArray(model.value) || props.multiselect || !props.selectedAsPlaceholder && searchTypeLocal.value !== 'inline') {\n\t\treturn props.placeholder;\n\t}\n\n\treturn model.value?.name || props.placeholder;\n});\n\n/**\n * Обработчик ввода клавиш на кнопке или поле ввода\n */\nconst onOpenerKeydown = (e: KeyboardEvent) => {\n\tlet needOpen = false;\n\n\tswitch (e.key) {\n\t\tcase 'Delete':\n\t\tcase 'Backspace':\n\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tmodel.value.pop();\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'ArrowUp':\n\t\tcase 'ArrowRight':\n\t\tcase 'ArrowDown':\n\t\tcase 'ArrowLeft':\n\t\tcase 'Enter':\n\t\tcase ' ':\n\t\t\tneedOpen = true;\n\n\t\t\tbreak;\n\t\tcase 'Escape':\n\t\t\tif (searchTypeLocal.value === 'inline') {\n\t\t\t\t// очистка введенного текста\n\t\t\t\tmenu.resetSearch();\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\t// введен символ\n\tconst symbolPressed = e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n\n\t// введен символ\n\tif (searchTypeLocal.value === 'popup' || searchTypeLocal.value === 'inline') {\n\t\tif (symbolPressed) {\n\t\t\tneedOpen = true;\n\t\t}\n\t}\n\n\t// popup уже открыт\n\tif (getPopup()?.elPopup) {\n\t\tneedOpen = false;\n\t}\n\n\tif (needOpen) {\n\t\tif (searchTypeLocal.value === 'popup') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\t// введен символ\n\t\t\tif (symbolPressed) {\n\t\t\t\t// начало ввода, сразу ввести первый символ вместе с открытием popup\n\t\t\t\tif (!menu.searchText.value) {\n\t\t\t\t\tmenu.searchText.value = e.key;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t(e.currentTarget as HTMLElement)?.click();\n\t}\n};\n\nlet disabledFocusToOpen = false;\n\nconst onFocus = (e: FocusEvent) => {\n\tif (disabledFocusToOpen) return;\n\n\tif (searchTypeLocal.value === 'inline') {\n\t\t(e.currentTarget as HTMLElement)?.click();\n\t}\n};\n\nconst onClickChanger = (e: MouseEvent) => {\n\te.preventDefault();\n\n\tdisabledFocusToOpen = true;\n\t(e.currentTarget as HTMLElement)?.parentElement?.focus();\n\tdisabledFocusToOpen = false;\n\n\tmenu.selectNextItem();\n};\n\n/**\n * Обработчик открытия попапа\n */\nconst onOpen = () => {\n\tdisabledFocusToOpen = true;\n\n\tif (api.apiRequest) {\n\t\tif (menu.genIsShort()) {\n\t\t\tgetPopup()?.close();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// при открытии сразу выполнить поиск\n\t\tapi.setSearchTextAndLoad(menu.searchText.value, false);\n\t}\n};\n\n/**\n * Обработчик закрытия попапа\n */\nconst onClose = () => {\n\tsetTimeout(() => {\n\t\tdisabledFocusToOpen = false;\n\t}, 100);\n\n\t// очистка введенного текста\n\tif (searchTypeLocal.value === 'popup') {\n\t\tif (menu.searchText.value) menu.resetSearch();\n\t}\n};\n\n/**\n * Обработчик прокрутки списка контента\n *\n * Для дозагрузки элеменов через api\n *\n * @param {Event} e - Событие прокрутки\n */\nconst onScrollContentList = (e: Event) => {\n\tconst el = e.target as HTMLElement;\n\n\tif (el.scrollTop / (el.scrollHeight - el.offsetHeight) > 0.8) {\n\t\tapi.load(true);\n\t}\n};\n\n// для storybook\nif ((window as any).__STORYBOOK_PREVIEW__) {\n\twatch(\n\t\t() => props.multiselect,\n\t\t() => {\n\t\t\tif (props.multiselect) {\n\t\t\t\tif (!Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\t\tname: 'Выбери меня',\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (Array.isArray(model.value)) {\n\t\t\t\t\tmodel.value = {\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t\tname: '',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ immediate: true },\n\t);\n\n\twatch(\n\t\t() => props.searchType,\n\t\t() => {\n\t\t\t// пауза для установки props в адресной строке\n\t\t\tsetTimeout(() => {\n\t\t\t\tlocation.reload();\n\t\t\t}, 500);\n\t\t},\n\t);\n}\n</script>\n\n<template>\n\t<TopPopup\n\t\tref=\"popupRef\"\n\t\t@open=\"onOpen()\"\n\t\t@close=\"onClose()\"\n\t\t@scrollContentList=\"api ? onScrollContentList($event) : undefined\"\n\t\t:notch=\"searchTypeLocal !== 'inline'\"\n\t\t:transitionDuration=\"0\"\n\t>\n\t\t<template #opener>\n\t\t\t<component\n\t\t\t\t:is=\"component\"\n\n\t\t\t\t:=\"buttonProps\"\n\n\t\t\t\tref=\"subcomponentSelector\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-selector2' : true,\n\t\t\t\t\t'top-selector2-multiselect': multiselect,\n\t\t\t\t\t['top-selector2-' + modificator]: !!modificator,\n\t\t\t\t\t'top-as-input': !buttonProps,\n\t\t\t\t\t'top-as-selector': true,\n\t\t\t\t\t['top-size_' + size]: true,\n\t\t\t\t\t['top-disabled']: disabled,\n\t\t\t\t\t['top-forms-focusable']: !disabled,\n\t\t\t\t\t['top-error']: isError,\n\t\t\t\t}\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t@keydown=\"onOpenerKeydown\"\n\t\t\t\tv-top-focus.onupdate=\"isError\"\n\n\t\t\t\t:placeholder\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t\t@focus=\"onFocus\"\n\t\t\t\t@blur=\"getPopup()?.isClosed ? menu.resetSearch() : ''\"\n\t\t\t>\n\t\t\t\t<template v-if=\"multiselect\">\n\t\t\t\t\t<div class=\"top-selector2_activeItems\">\n\t\t\t\t\t\t<Selector2ItemMulti\n\t\t\t\t\t\t\tv-for=\"item of model as Item[]\"\n\t\t\t\t\t\t\t:id=\"item.id\"\n\t\t\t\t\t\t\t:name=\"item.name\"\n\t\t\t\t\t\t\t@delete=\"menu.deleteItemById\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\n\t\t\t\t<span v-if=\"searchTypeLocal !== 'inline' && !multiselect\" class=\"top-selector2_activeName top-ellipsis\">\n\t\t\t\t\t{{ !Array.isArray(model) ? model.name : '' }}\n\t\t\t\t</span>\n\n\t\t\t\t<span v-if=\"multiselect && !model.length\" class=\"top-selector2_placeholder top-ellipsis\">\n\t\t\t\t\t{{ placeholder }}\n\t\t\t\t</span>\n\n\t\t\t\t<span\n\t\t\t\t\tv-if=\"addChanger && !buttonProps && !multiselect && menu.items.value.length > 1 && !disabled\"\n\t\t\t\t\tclass=\"top-changer top-changer-selector top-popup_widget\"\n\t\t\t\t\tdata-top-popup-disabled=\"true\"\n\t\t\t\t\t@click=\"onClickChanger\"\n\t\t\t\t></span>\n\t\t\t</component>\n\t\t</template>\n\n\t\t<template #widget v-if=\"searchTypeLocal === 'popup'\">\n\t\t\t<TopPopupWidgetInput\n\t\t\t\ttitle=\"Поиск\"\n\t\t\t\ticon=\"\"\n\t\t\t\tv-model=\"menu.searchText.value\"\n\t\t\t\t:isLoading=\"api.isLoading.value && !api.apiRequest?.params.offset\"\n\t\t\t\t:placeholder\n\t\t\t/>\n\t\t</template>\n\n\t\t<template #contentList>\n\t\t\t<TopPopupListItem\n\t\t\t\tv-for=\"item of menu.itemsForShow.value\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'top-active': !Array.isArray(model) && !multiselect && model.id === item.id && model.name === item.name,\n\t\t\t\t}\"\n\t\t\t\t:key=\"item.id ?? undefined\"\n\t\t\t\t:closeByClick=\"!multiselect || Core.state.isMobile\"\n\t\t\t\t@click=\"menu.selectItem(item)\"\n\t\t\t>\n\t\t\t\t<slot\n\t\t\t\t\tv-if=\"$slots.item\"\n\t\t\t\t\tname=\"item\"\n\t\t\t\t\t:item\n\t\t\t\t></slot>\n\n\t\t\t\t<template\n\t\t\t\t\tv-else\n\t\t\t\t>\n\t\t\t\t\t{{ item.name }}\n\t\t\t\t</template>\n\t\t\t</TopPopupListItem>\n\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"!api.isLoading.value && !menu.itemsForShow.value.length\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t{{ $i18n.Common.No_results }}\n\t\t\t</TopPopupListItem>\n\n\t\t\t<!-- Индикатор загрузки, первичная дозагрузка отображается в поле поиска, если оно отображено -->\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"api.isLoading.value && (searchType !== 'popup' || api.apiRequest?.params.offset)\"\n\t\t\t\ttype=\"regular\"\n\t\t\t>\n\t\t\t\t<TopPreloader type=\"circles\"/>\n\t\t\t</TopPopupListItem>\n\t\t</template>\n\t</TopPopup>\n</template>\n\n<style>\n.top-selector2 {\n\twidth: 180px;\n\tpadding: var(--top-padding-1) var(--top-forms-padding);\n}\n\n.top-selector2::placeholder,\n.top-selector2_placeholder {\n\tcolor: var(--color-text-2);\n}\n\n.top-selector2_placeholder {\n\tpadding-left: var(--top-padding-1);\n}\n\n.top-selector2-multiselect {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tflex-grow: 1;\n}\n\n.top-selector2.top-active {\n\t--top-forms-border-color: var(--top-forms-border-color-hover);\n}\n\n.top-selector2_activeItems {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--top-padding-1);\n\tmax-width: 100%;\n}\n\n.top-selector2_activeName {\n\twhite-space: nowrap;\n}\n\n.top-changer-selector {\n\twidth: auto;\n\tpadding: var(--top-padding-1);\n\tmargin: calc(0px - var(--top-padding-1));\n\ttransform: translateX(0);\n}\n\n.top-selector2.top-button {\n\tjustify-content: start;\n}\n\n.top-selector2.top-input_input ~ .top-changer-selector {\n\ttransform: translateX(-52px);\n}\n\n.top-selector2.top-as-selector {\n\tpadding-right: calc(var(--top-selector-arrow-width) + var(--top-padding-2));\n}\n</style>\n","<script lang=\"ts\" setup>\nimport type { Props, Slots } from './types';\n\nwithDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n\tsize: 'default',\n});\n\ndefineSlots<Slots>();\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-info']: true,\n\t\t\t['top-size_' + size]: true,\n\t\t\t['top-info-styling_' + styling]: true,\n\t\t}\"\n\t\t:data-top-icon=\"icon\"\n\t>\n\t\t<div class=\"top-info_text\">\n\t\t\t<slot></slot>\n\t\t</div>\n\n\t\t<span v-if=\"$slots.additional\" class=\"top-info_value\">\n\t\t\t<slot name=\"additional\"></slot>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n.top-info {\n\t--top-icon-width: var(--top-icon-size);\n\n\tborder-radius: var(--top-forms-radius);\n\tbox-sizing: border-box;\n\tmin-height: var(--top-forms-base-height);\n\tpadding: var(--top-padding-1) var(--top-padding-2);\n\tflex-grow: 5;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--top-gap-2);\n}\n\n.top-info_text {\n\tflex-grow: 1;\n}\n\n.top-info_value {\n\tfont-weight: bold;\n}\n\n/* size */\n.top-info.top-size_default {\n\tborder-radius: var(--top-radius-3);\n\tpadding: var(--top-padding-4);\n}\n\n/* styling */\n.top-info-styling_default {\n\t--top-icon-color: var(--color-text-2);\n\n\tbackground: var(--color-layer-1);\n}\n\n.top-info-styling_info {\n\t--top-icon-color: var(--color-text-primary);\n\n\tbackground: var(--color-layer-primary-1);\n}\n\n.top-info-styling_warning {\n\t--top-icon-color: var(--color-text-warning);\n\n\tbackground: var(--color-layer-warning-1);\n}\n\n.top-info-styling_negative {\n\t--top-icon-color: var(--color-text-negative);\n\n\tbackground: var(--color-layer-negative-1);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { TopButton } from '@/components/forms/forms';\nimport type { Emits, Props } from '@/components/formsExt/policy/types';\n\ndefineProps<Props>();\nconst emits = defineEmits<Emits>();\n\nconst isVisible = ref(true);\n\nconst onAccept = () => {\n\tisVisible.value = false;\n\n\temits('accept');\n};\n</script>\n\n<template>\n\t<div\n\t\tv-if=\"isVisible\"\n\t\tclass=\"top-policy\"\n\t>\n\t\t<div class=\"top-policy_title\">\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\tclass=\"top-policy_description\"\n\t\t\tv-html=\"description\"\n\t\t></div>\n\n\t\t<TopButton\n\t\t\tsize=\"m\"\n\t\t\t@click=\"onAccept\"\n\t\t>\n\t\t\t{{ acceptText }}\n\t\t</TopButton>\n\t</div>\n</template>\n\n<style>\n.top-policy {\n\tbox-sizing: border-box;\n\tbox-shadow: var(--top-shadow-b);\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-bg-lightning-1);\n\twidth: 600px;\n\tpadding: var(--top-padding-4);\n\tposition: fixed;\n\tright: var(--top-gap-10);\n\tbottom: var(--top-gap-10);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-4);\n\tz-index: 10000;\n}\n\n.top-policy_title {\n\tfont-size: 24px;\n\tfont-weight: 700;\n}\n\n.top-policy_description {\n\tfont-size: 14px;\n}\n\n@media screen and (max-width: 900px) {\n\t.top-policy {\n\t\twidth: 100%;\n\t\tright: 0;\n\t\tbottom: calc(var(--top-gap-5) + var(--toolbar-height, 0px));\n\t}\n}\n</style>\n"],"names":["props","__props","emit","__emit","localValue","ref","isFocused","isChanged","computed","submit","value","cancel","clickOnTitle","normalizeClass","attachToKeyboard","_cache","$event","toDisplayString","_ctx","createCommentVNode","isError","name","placeholder","rows","minHeight","expandable","disabled","readonly","hint","withKeys","withModifiers","openBlock","createBlock","_sfc_main$a","createSlots","withCtx","createTextVNode","intermediateValue","watch","toRef","createElementBlock","_hoisted_1$4","createVNode","_sfc_main$b","mergeProps","model","useModel","elRef","valuesAvailable","item","_b","_a","size","renderSlot","_hoisted_1$3","createElementVNode","useAPI","api","apiSetSearchParams","minLength","useCache","items","cache","isLoading","searchText","nextOffset","callAPI","cacheKey","res2","res","indexWithError","load","append","loadDebounce","debounce","newSearchText","useDebounce","ITEM_ID_ALL","isSelected","modelValue","checkNameForNullId","itemSelected","useMenu","multiselect","appendAllValue","appendSearchToResult","searchType","itemAll","useI18n","resetSearch","genIsShort","localItems","localItems2","itemsForShow","searchString","searchStringInvertKeyboard","invertKeyboardLayout","items2","itemName","nextIndex","id","searchTypeLocal","Core","menu","component","popupRef","getPopup","onOpenerKeydown","e","needOpen","symbolPressed","disabledFocusToOpen","onFocus","onClickChanger","onOpen","onClose","onScrollContentList","el","unref","withDirectives","resolveDynamicComponent","modificator","buttonProps","_hoisted_1$2","Fragment","renderList","_sfc_main$g","_sfc_main$h","icon","emits","isVisible","onAccept","_hoisted_2","description"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-CgtkdwgA.amd","../require/css.amd!../assets/layout.css"],(function(k,t,e,n){"use strict";if(typeof e>"u")var e=window.Vue;const l=e.defineComponent({__name:"rows",props:{gap:{default:"none"}},setup(s){const o=s;return(r,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-rows":!0,["top-rows-gap_"+o.gap]:!0})},[e.renderSlot(r.$slots,"default")],2))}}),c={class:"top-islandRows"},a={key:0,class:"top-islandRows_title"},d=e.defineComponent({__name:"islandRows",setup(s){return(o,r)=>(e.openBlock(),e.createElementBlock("div",c,[o.$slots.title?(e.openBlock(),e.createElementBlock("div",a,[e.renderSlot(o.$slots,"title")])):e.createCommentVNode("",!0),e.createVNode(l,{gap:"l",class:"top-islandRows_rows"},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3})]))}}),i={},_={class:"top-islandRows_row"};function u(s,o){return e.openBlock(),e.createElementBlock("div",_,[e.renderSlot(s.$slots,"default")])}const p=n._export_sfc(i,[["render",u]]),f={},w={class:"top-islandRows_subTitle"};function m(s,o){return e.openBlock(),e.createElementBlock("div",w,[e.renderSlot(s.$slots,"default")])}const R=n._export_sfc(f,[["render",m]]);t.TopIslandRows=d,t.TopIslandRowsRow=p,t.TopIslandRowsSubTitle=R,t.TopRows=l,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","vue","../.chunks/forms-BfDSGwrU.amd","../require/css.amd!../assets/layout.css"],(function(k,t,e,n){"use strict";if(typeof e>"u")var e=window.Vue;const l=e.defineComponent({__name:"rows",props:{gap:{default:"none"}},setup(s){const o=s;return(r,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-rows":!0,["top-rows-gap_"+o.gap]:!0})},[e.renderSlot(r.$slots,"default")],2))}}),c={class:"top-islandRows"},a={key:0,class:"top-islandRows_title"},d=e.defineComponent({__name:"islandRows",setup(s){return(o,r)=>(e.openBlock(),e.createElementBlock("div",c,[o.$slots.title?(e.openBlock(),e.createElementBlock("div",a,[e.renderSlot(o.$slots,"title")])):e.createCommentVNode("",!0),e.createVNode(l,{gap:"l",class:"top-islandRows_rows"},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3})]))}}),i={},_={class:"top-islandRows_row"};function u(s,o){return e.openBlock(),e.createElementBlock("div",_,[e.renderSlot(s.$slots,"default")])}const p=n._export_sfc(i,[["render",u]]),f={},w={class:"top-islandRows_subTitle"};function m(s,o){return e.openBlock(),e.createElementBlock("div",w,[e.renderSlot(s.$slots,"default")])}const R=n._export_sfc(f,[["render",m]]);t.TopIslandRows=d,t.TopIslandRowsRow=p,t.TopIslandRowsSubTitle=R,t.TopRows=l,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=layout.amd.js.map
package/layout/layout.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Core as c } from "../core/app.js";
2
2
  import { defineComponent as r, createElementBlock as t, openBlock as e, normalizeClass as _, renderSlot as a, createCommentVNode as d, createVNode as p, withCtx as u } from "vue";
3
- import { g as l } from "../.chunks/forms-DarRVke_.es.js";
3
+ import { g as l } from "../.chunks/forms-BWoAyEVH.es.js";
4
4
  const i = ["../assets/layout.css"].map((s) => import.meta.resolve(s));
5
5
  c.insertCSSLinkToPage(i, !0);
6
6
  const m = /* @__PURE__ */ r({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.3.1-utils.0",
4
+ "version": "1.3.1",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd","../.chunks/widgetInput.vue_vue_type_script_setup_true_lang-BK-pTu3V.amd","../.chunks/widgetInput.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd","vue","../.chunks/forms-CgtkdwgA.amd"],(function(V,r,m,w,B,e,f){"use strict";if(typeof e>"u")var e=window.Vue;const k=e.defineComponent({__name:"alert",props:{submitText:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList"],setup(c){const C=c,{submitText:p,...u}=C;return(o,s)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupAlert"},u,{onOpen:s[0]||(s[0]=l=>o.$emit("open",l)),onClose:s[1]||(s[1]=l=>o.$emit("close",l)),onScrollContentList:s[2]||(s[2]=(...l)=>o.$emit("scrollContentList",...l))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(o.$slots,"footer"),e.createVNode(f._sfc_main$1,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p)||o.$i18n.Common.Close),1)]),_:1})]),_:2},[o.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"header")]),key:"0"}:void 0,o.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),key:"1"}:void 0]),1040))}}),h=e.defineComponent({__name:"confirm",props:{cancelText:{},submitText:{},isWarning:{type:Boolean},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(c,{emit:C}){const p=c,u=C,o=e.ref(!1),s=()=>{o.value=!0,u("submit")},l=n=>{if(o.value){o.value=!1;return}u("close",n)},{submitText:$,cancelText:S,isWarning:y,...T}=p;return(n,i)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupConfirm"},T,{onOpen:i[0]||(i[0]=t=>n.$emit("open",t)),onClose:i[1]||(i[1]=t=>l(t)),onScrollContentList:i[2]||(i[2]=(...t)=>n.$emit("scrollContentList",...t))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(n.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(n.$slots,"footer"),e.createVNode(f._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)||n.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(f._sfc_main$1,{onClick:s,color:e.unref(y)?"red":"blue"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref($)||n.$i18n.Common.Continue),1)]),_:1},8,["color"])]),_:2},[n.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"header")]),key:"0"}:void 0,n.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),key:"1"}:void 0]),1040))}}),v=e.defineComponent({__name:"prompt",props:{submitText:{},cancelText:{},defaultValue:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(c,{emit:C}){const p=c,u=C,o=()=>l.value=p.defaultValue??"",s=e.ref(!1),l=e.ref();e.watch(()=>p.defaultValue,()=>o(),{immediate:!0});const $=()=>{s.value=!0},S=t=>{if(s.value){s.value=!1,u("submit",l.value),o();return}o(),u("close",t)},{submitText:y,cancelText:T,defaultValue:n,...i}=p;return(t,a)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupPrompt"},i,{onOpen:a[1]||(a[1]=d=>t.$emit("open",d)),onClose:a[2]||(a[2]=d=>S(d)),onScrollContentList:a[3]||(a[3]=(...d)=>t.$emit("scrollContentList",...d))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(t.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(t.$slots,"footer"),e.createVNode(f._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(T)||t.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(f._sfc_main$1,{onClick:$},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(y)||t.$i18n.Common.OK),1)]),_:1})]),_:2},[t.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"header")]),key:"0"}:void 0,t.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"default"),e.createVNode(w._sfc_main,{modelValue:l.value,"onUpdate:modelValue":a[0]||(a[0]=d=>l.value=d),modelModifiers:{trim:!0}},null,8,["modelValue"])]),key:"1"}:void 0]),1040))}});r.TopPopup=m._sfc_main,r.TopPopupListItem=m._sfc_main$2,r.TopPopupOpener=m._sfc_main$1,r.TopPopupWidgetInput=w._sfc_main,r.TopPopupAlert=k,r.TopPopupConfirm=h,r.TopPopupPrompt=v,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-R7J0Cawj.amd","../.chunks/widgetInput.vue_vue_type_script_setup_true_lang-DVHWVUQM.amd","../.chunks/widgetInput.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd","vue","../.chunks/forms-BfDSGwrU.amd"],(function(V,r,m,w,B,e,f){"use strict";if(typeof e>"u")var e=window.Vue;const k=e.defineComponent({__name:"alert",props:{submitText:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList"],setup(c){const C=c,{submitText:p,...u}=C;return(o,s)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupAlert"},u,{onOpen:s[0]||(s[0]=l=>o.$emit("open",l)),onClose:s[1]||(s[1]=l=>o.$emit("close",l)),onScrollContentList:s[2]||(s[2]=(...l)=>o.$emit("scrollContentList",...l))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(o.$slots,"footer"),e.createVNode(f._sfc_main$1,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(p)||o.$i18n.Common.Close),1)]),_:1})]),_:2},[o.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"header")]),key:"0"}:void 0,o.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),key:"1"}:void 0]),1040))}}),h=e.defineComponent({__name:"confirm",props:{cancelText:{},submitText:{},isWarning:{type:Boolean},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(c,{emit:C}){const p=c,u=C,o=e.ref(!1),s=()=>{o.value=!0,u("submit")},l=n=>{if(o.value){o.value=!1;return}u("close",n)},{submitText:$,cancelText:S,isWarning:y,...T}=p;return(n,i)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupConfirm"},T,{onOpen:i[0]||(i[0]=t=>n.$emit("open",t)),onClose:i[1]||(i[1]=t=>l(t)),onScrollContentList:i[2]||(i[2]=(...t)=>n.$emit("scrollContentList",...t))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(n.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(n.$slots,"footer"),e.createVNode(f._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)||n.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(f._sfc_main$1,{onClick:s,color:e.unref(y)?"red":"blue"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref($)||n.$i18n.Common.Continue),1)]),_:1},8,["color"])]),_:2},[n.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"header")]),key:"0"}:void 0,n.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),key:"1"}:void 0]),1040))}}),v=e.defineComponent({__name:"prompt",props:{submitText:{},cancelText:{},defaultValue:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{},data:{}},emits:["open","close","scrollContentList","submit"],setup(c,{emit:C}){const p=c,u=C,o=()=>l.value=p.defaultValue??"",s=e.ref(!1),l=e.ref();e.watch(()=>p.defaultValue,()=>o(),{immediate:!0});const $=()=>{s.value=!0},S=t=>{if(s.value){s.value=!1,u("submit",l.value),o();return}o(),u("close",t)},{submitText:y,cancelText:T,defaultValue:n,...i}=p;return(t,a)=>(e.openBlock(),e.createBlock(m._sfc_main,e.mergeProps({class:"top-popupPrompt"},i,{onOpen:a[1]||(a[1]=d=>t.$emit("open",d)),onClose:a[2]||(a[2]=d=>S(d)),onScrollContentList:a[3]||(a[3]=(...d)=>t.$emit("scrollContentList",...d))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(t.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(t.$slots,"footer"),e.createVNode(f._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(T)||t.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(f._sfc_main$1,{onClick:$},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(y)||t.$i18n.Common.OK),1)]),_:1})]),_:2},[t.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"header")]),key:"0"}:void 0,t.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"default"),e.createVNode(w._sfc_main,{modelValue:l.value,"onUpdate:modelValue":a[0]||(a[0]=d=>l.value=d),modelModifiers:{trim:!0}},null,8,["modelValue"])]),key:"1"}:void 0]),1040))}});r.TopPopup=m._sfc_main,r.TopPopupListItem=m._sfc_main$2,r.TopPopupOpener=m._sfc_main$1,r.TopPopupWidgetInput=w._sfc_main,r.TopPopupAlert=k,r.TopPopupConfirm=h,r.TopPopupPrompt=v,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=popup.amd.js.map
package/popup/popup.js CHANGED
@@ -1,9 +1,9 @@
1
- import { _ as P } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js";
2
- import { b as E, a as F } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js";
3
- import { _ as H } from "../.chunks/widgetInput.vue_vue_type_script_setup_true_lang-xwjgBq1L.es.js";
1
+ import { _ as P } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-Dljef_xa.es.js";
2
+ import { b as E, a as F } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-Dljef_xa.es.js";
3
+ import { _ as H } from "../.chunks/widgetInput.vue_vue_type_script_setup_true_lang-Cr_jgOW4.es.js";
4
4
  /* empty css */
5
5
  import { defineComponent as S, createBlock as V, openBlock as g, mergeProps as O, createSlots as D, withCtx as t, renderSlot as r, createVNode as f, createTextVNode as y, toDisplayString as v, unref as d, ref as L, watch as W } from "vue";
6
- import { c as T } from "../.chunks/forms-DarRVke_.es.js";
6
+ import { c as T } from "../.chunks/forms-BWoAyEVH.es.js";
7
7
  const M = /* @__PURE__ */ S({
8
8
  __name: "alert",
9
9
  props: {
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-CgtkdwgA.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 getElPopupOpener(t){return t.closest("[data-top-popup]")}static getPopupFromOpener(t){const o=Worker.getElPopupOpener(t);return o?utils_dom.default.storage(o,"#TopPopup"):null}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{TopLibPopup}=await new Promise((t,o)=>require(["../.chunks/popup-CtvJLWn3.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 TopLibPopup(elOpener,options)}static close(t,o=!0){const e=Worker.getPopup(t);e&&(e.close(),o&&setTimeout(()=>{e.el.focus()}))}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 e=t.querySelector("ul.top-popup_content"),s=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 r=100;for(const p of s){if(p.querySelector(":scope > .top-active"))break;p instanceof HTMLElement&&(r+=p.offsetHeight)}if(e instanceof HTMLElement){const p=e.offsetHeight;r>p?e.scrollTop=r-p:e.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,...e){const s=utils_dom.default.genEl(t,{},...e);s.dataset.topPopup="#"+o.id;for(let r in o){const p="topPopup"+r.charAt(0).toUpperCase()+r.slice(1);s.dataset[p]=o[r]}return s.__TopPopupOpenerProps=o,s}}exports.TopPopupWorker=Worker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","../.chunks/forms-BfDSGwrU.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 getElPopupOpener(t){return t.closest("[data-top-popup]")}static getPopupFromOpener(t){const o=Worker.getElPopupOpener(t);return o?utils_dom.default.storage(o,"#TopPopup"):null}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{TopLibPopup}=await new Promise((t,o)=>require(["../.chunks/popup-JuvnpqC-.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 TopLibPopup(elOpener,options)}static close(t,o=!0){const e=Worker.getPopup(t);e&&(e.close(),o&&setTimeout(()=>{e.el.focus()}))}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 e=t.querySelector("ul.top-popup_content"),s=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 r=100;for(const p of s){if(p.querySelector(":scope > .top-active"))break;p instanceof HTMLElement&&(r+=p.offsetHeight)}if(e instanceof HTMLElement){const p=e.offsetHeight;r>p?e.scrollTop=r-p:e.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,...e){const s=utils_dom.default.genEl(t,{},...e);s.dataset.topPopup="#"+o.id;for(let r in o){const p="topPopup"+r.charAt(0).toUpperCase()+r.slice(1);s.dataset[p]=o[r]}return s.__TopPopupOpenerProps=o,s}}exports.TopPopupWorker=Worker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=worker.amd.js.map
package/popup/worker.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as Core } from "../.chunks/forms-DarRVke_.es.js";
1
+ import { C as Core } from "../.chunks/forms-BWoAyEVH.es.js";
2
2
  import DOM from "../utils/dom.js";
3
3
  class Worker {
4
4
  /**
@@ -51,7 +51,7 @@ class Worker {
51
51
  */
52
52
  static async open(elOpener, options) {
53
53
  elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = "opened");
54
- const { TopLibPopup } = await import("../.chunks/popup-AG94kehM.es.js");
54
+ const { TopLibPopup } = await import("../.chunks/popup-1pqtx_O5.es.js");
55
55
  if (Core.$) {
56
56
  const $elOpener = Core.$(elOpener);
57
57
  if ($elOpener.data("aftershow")) {
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-CgtkdwgA.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd","../.chunks/menu.vue_vue_type_style_index_0_lang-BLMYjYLV.amd","../.chunks/utils-D9D3zzjc.amd","../utils/searchers.amd","../utils/dom.amd","../popup/worker.amd","../require/css.amd!../assets/project.css"],(function(ne,V,e,x,E,oe,le,P,_,ae){"use strict";if(typeof e>"u")var e=window.Vue;const re={class:"top-selectorCompetitors"},ie={class:"top-ellipsis1"},de=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=e.computed(()=>{if(l.showSelectAllItem)return{icon:"",title:x.useI18n().Common.Select_all,value:"all",content:""}});return(d,o)=>(e.openBlock(),e.createElementBlock("div",re,[e.unref(x.Core).state.isMobile?(e.openBlock(),e.createBlock(E._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var a;return[e.createTextVNode(e.toDisplayString((a=d.items.find(s=>{var v;return s.value===((v=r.value)==null?void 0:v[0])}))==null?void 0:a.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.items,a=>{var s;return e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-active":(s=r.value)==null?void 0:s.includes(a.value)}),"data-top-icon":a.icon,title:a.title,onClick:()=>r.value=[a.value]},{default:e.withCtx(()=>[e.createElementVNode("span",ie,e.toDisplayString(a.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(oe._sfc_main,{key:1,modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=a=>r.value=a),items:d.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),ue=(n,l)=>e.computed(()=>e.toValue(n).filter(d=>d.on>=0||d.id===l).map(d=>({value:d.id,title:d.url+` [${d.id}]`,icon:d.id===e.toValue(l)?"":"",content:d.name}))),w=-1,p=-2,R=-1,se={0:"Yandex",1:"Google",4:"YouTube",5:"Bing",7:"Seznam",8:"AppStore",9:"GoogleStore",20:"Yandex.com",21:"Yandex.com.tr"},J={key:p,name:"--",index:p},G={key:p,name:"--",regions:[J],regionByIndex:new Map([[p,J]])},A={key:p,name:"Autoselect",index:p},U={key:p,name:"Autoselect",regions:[A],regionByIndex:new Map([[p,A]])},Y={countryCode:"00",depth:1,device:0,key:R,index:R,lang:"ru",name:"Without region"},ce=()=>(A.name=x.useI18n().Common.Autoselect,A),ge=()=>(ce(),U.name=x.useI18n().Common.Autoselect,console.log(U),U),fe=()=>(Y.name=x.useI18n().Keywords.Without_region,Y),z=(n=!1,l=!1,r=[])=>{let t;return n?t=me(r):t=W(r),l&&t.set(p,ge()),t.size||t.set(p,G),t},W=(n,l=!0,r=[],t=!1)=>{const d=new Map;return n.forEach(o=>{if(!o.enabled||t&&typeof o.key=="number"&&o.key>1)return;const a={...o};a.regionByIndex=new Map,o.regions&&o.regions.forEach(s=>{if(l&&!s.enabled)return;const v={...s};a.regionByIndex.set(v.index,v)}),!a.regionByIndex.size&&r.length,(!o.regions||a.regionByIndex.size||r.length)&&typeof a.key=="number"&&d.set(a.key,a)}),r.forEach(o=>{if(d.has(o))return;const a={key:o,name:se[o],regions:[],regionByIndex:new Map};d.set(a.key,a)}),d},me=n=>{const l=W(n,!1,[0,1],!0);if(l.has(2)){const r=l.get(2);r&&(r.regionByIndex=new Map)}return l.forEach(r=>{if(!r.regionByIndex)return;const t={...fe()};r.regionByIndex.set(t.index,t)}),l},H=(n,l,r=[])=>{const t=z(n,!1,r);let d;return t.forEach(o=>{if(!(l.searcher_key!==void 0&&l.searcher_key!=o.key)&&o.regions&&(o.regions.forEach(a=>{if(!d&&!(l.key!==void 0&&l.key!=a.key)&&!(l.index!==void 0&&l.index!=a.index)&&!(!n&&(l.lang!==void 0&&l.lang!=a.lang||l.device!==void 0&&l.device!=a.device)))return a.searcher_key=o.key,d=a,!1}),d))return!1}),d},Q=le.useAsyncTopDialog(()=>new Promise((n,l)=>ne(["../.chunks/dialog_selectorRegions-CPRVbPAk.amd"],n,l))),ve=(n,l)=>{const r=x.useI18n(),t=e.ref(l.value.keys().next().value??p),d=e.computed(()=>{const o=new Map;if(l.value.forEach(a=>{let s={value:a.key,title:a.name};n.addSearcherIcon&&(s.icon=P.getSearcherGIcon(a.key)),o.set(a.key,s)}),n.addCompare&&!o.has(p)){const a={value:"",title:"--------------------",disabled:!0};o.set(a.value,a);const s={value:w,title:r.Common.Compare};o.set(s.value,s)}return o});return{searcherKey:t,optionBySearcherKey:d}},ye=(n,l)=>{var o,a,s;const r=x.useI18n(),t=e.ref(p);n.modelValue.length===1&&(t.value=n.modelValue[0]),t.value===p&&(n.forFrequency?t.value=((a=(o=l.value)==null?void 0:o.regionByIndex.values().next().value)==null?void 0:a.key)??p:t.value=((s=l.value)==null?void 0:s.regionByIndex.keys().next().value)??p);const d=e.computed(()=>{var h;const v=new Map;return(h=l.value.regionByIndex)==null||h.forEach(k=>{let i=k.name;if(n.forFrequency){const I={value:k.key,title:i};v.has(k.key)||v.set(k.key,I);return}k.device&&(i+=" ("+r.Common["Device_"+k.device]+")");const f=P.getLangLabel(l.value.key||0,k.lang??"");f&&(i+=" / "+f);const c={value:k.index,title:i,icon:k.device?P.getDeviceGIcon(k.device):void 0};v.set(k.index,c)}),v});return e.watch(d,(v,h)=>{var c;if(n.onlySearcher||t.value!==void 0&&v.get(t.value))return;let k=v.keys().next().value;if(t.value===p||k===p){t.value=k;return}let i=((c=h==null?void 0:h.get(t.value))==null?void 0:c.title)||"",f=-1;for(const[I,B]of v.entries()){const C=B.title;if(typeof C!="string"||typeof I=="string")break;if(C===i){k=I;break}const T=new RegExp(` \\((${r.Common.Device_1}|${r.Common.Device_2})\\)`);let m=i,u=3;C.indexOf(m)===-1&&(m=i.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(m)===-1&&(m=i.replace(/ \/.*/,""),u--),C.indexOf(m)===-1&&(m=i.replace(/ \/.*/,""),m=m.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(m)!==-1&&(u<=f||(f=u,k=I))}t.value=k}),{regionIndex:t,optionByRegionIndex:d}},pe=(n,l,r)=>{const t=e.ref([]),d=()=>{if(n.onlySearcher&&l.value){t.value=Array.from(l.value.keys());return}let a=[];if(n.modelValue.length>1)a=[...n.modelValue];else try{a=JSON.parse(localStorage.getItem("ui:project:regionSelector"+n.projectId+":regionsIndexes"))??[]}catch{}a.length&&(a=a.filter(s=>r.value.has(s))),a.length||(a=Array.from(r.value)),t.value=[...a]},o=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes")};return e.watch(t,()=>{o()}),n.addCompare&&d(),{regionsIndexes:t}},he=n=>{const l=e.computed(()=>z(n.forFrequency,n.autoRegion,n.searchers)),r=e.computed(()=>l.value.get(d.searcherKey.value)||G),t=e.computed(()=>{const i=new Set;return l.value.forEach(f=>{f.regionByIndex.forEach(c=>{c.index!==R&&c.index!==p&&i.add(c.index)})}),i}),d=ve(n,l),o=ye(n,r),a=pe(n,l,t);e.watch(l,()=>{var f,c,I,B;if(n.onlySearcher?a.regionsIndexes.value=Array.from(l.value.keys()):a.regionsIndexes.value=a.regionsIndexes.value.filter(C=>t.value.has(C)),d.searcherKey.value===w)return;let i=l.value.keys().next().value;l.value.forEach(C=>{var T,m,u;if(n.onlySearcher&&C.key===d.searcherKey.value){i=d.searcherKey.value;return}if(o.regionIndex.value&&((T=C.regionByIndex)!=null&&T.has(o.regionIndex.value))&&(i=C.key),!n.onlySearcher){let g;i!==void 0&&(g=(m=l.value.get(i))==null?void 0:m.regionByIndex);const y=(u=l.value.get(C.key))==null?void 0:u.regionByIndex;g!=null&&g.has(p)&&!(y!=null&&y.has(p))&&(i=C.key)}}),i!==void 0&&(d.searcherKey.value=i),o.regionIndex.value!==void 0&&!((c=(f=r.value)==null?void 0:f.regionByIndex)!=null&&c.has(o.regionIndex.value))&&(o.regionIndex.value=(B=(I=r.value)==null?void 0:I.regions)==null?void 0:B.keys().next().value)},{immediate:!0});const s=()=>{if(!(d.searcherKey.value===w||d.searcherKey.value===p))return d.searcherKey.value},v=()=>{if(n.onlySearcher||o.regionIndex.value===p)return;let i=o.regionIndex.value;if(n.forFrequency){const f=o.regionIndex.value,c=H(n.forFrequency,{searcher_key:s(),key:f},n.searchers);i=c==null?void 0:c.index}return i},h=()=>{const i=s();if(i!==void 0)return l.value.get(i)};return{selectSearcher:d,selectRegion:o,compare:a,searcherByKey:l,allRegionsIndexes:t,getSearcher:h,getRegion:()=>{var f,c;const i=v();if(i!==void 0)return(c=(f=h())==null?void 0:f.regionByIndex)==null?void 0:c.get(i)}}},ke=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:["update:modelValue","update:modelValueSingle"],setup(n,{expose:l}){const r=n,t=e.useModel(n,"modelValue"),d=e.useModel(n,"modelValueSingle"),{selectSearcher:o,selectRegion:a,compare:s,searcherByKey:v,allRegionsIndexes:h,getSearcher:k,getRegion:i}=he(r),f=()=>{const c=[];v.value.forEach(I=>{I.enabled&&I.regions.forEach(B=>{B.enabled&&c.push(B)})}),Q.open("selectorRegions",{regions:c,regionsIndexes:s.regionsIndexes.value,"@update:regionsIndexes":I=>s.regionsIndexes.value=I})};return e.watch([a.regionIndex,o.searcherKey,s.regionsIndexes],()=>{if(o.searcherKey.value===w&&s.regionsIndexes.value.length){if(JSON.stringify(t.value)===JSON.stringify(s.regionsIndexes.value))return;t.value=[...s.regionsIndexes.value]}else r.onlySearcher?(t.value=[o.searcherKey.value],o.searcherKey.value===p&&!r.autoRegion&&(t.value.length=0)):(t.value=[a.regionIndex.value],a.regionIndex.value===p&&!r.autoRegion&&(t.value.length=0));!r.onlySearcher&&!h.value.size&&(o.searcherKey.value=p)}),d.value&&e.watch(d,()=>{d.value&&(t.value=[d.value])},{immediate:!0}),e.watch(t,()=>{var c,I,B,C,T;if(t.value[0]&&(d.value=t.value[0]),r.onlySearcher){if(!t.value.length||t.value.length===1&&!v.value.has(t.value[0])||t.value.length===1&&t.value[0]===p&&!r.autoRegion){let m=v.value.keys().next().value;m===p&&!r.autoRegion&&(m=void 0,d.value=p),m!==void 0?t.value=[m]:t.value.length=0;return}if(t.value.length>1&&JSON.stringify(t.value)!==JSON.stringify(s.regionsIndexes.value)){t.value=[...s.regionsIndexes.value];return}}else{let m=[...new Set(t.value)],u=(I=(c=v.value.values().next().value)==null?void 0:c.regionByIndex)==null?void 0:I.keys().next().value;if(r.forFrequency&&(u=(T=(C=(B=v.value.values().next().value)==null?void 0:B.regionByIndex)==null?void 0:C.values().next().value)==null?void 0:T.key),u===p&&!r.autoRegion&&(u=void 0,d.value=p),!m.length)u!==void 0&&m.push(u);else if(m.length===1){let g=h.value;r.forFrequency&&(g=new Set,v.value.forEach(y=>{y.regionByIndex.forEach(S=>{S.index!==R&&S.index!==p&&g.add(S.key)})})),g.has(m[0])||(m=[],u!==void 0&&m.push(u))}else m=m.filter(g=>h.value.has(g)),!m.length&&u!==void 0&&m.push(u);if(JSON.stringify(t.value)!==JSON.stringify(m)){t.value=m;return}}if(!(t.value.length===1&&t.value[0]===(r.onlySearcher?o.searcherKey.value:a.regionIndex.value)))if(r.onlySearcher){if(t.value.length===1){o.searcherKey.value=t.value[0];return}o.searcherKey.value=w;return}else{if(!t.value.length)return;if(t.value.length===1&&o.searcherKey.value!==w){a.regionIndex.value=t.value[0];let m;for(const u of v.value.values()){for(const g of u.regionByIndex.values())if((r.forFrequency?g.key:g.index)===a.regionIndex.value){m=u.key;break}if(m!==void 0)break}m!==void 0&&(o.searcherKey.value=m)}else o.searcherKey.value=w,s.regionsIndexes.value=[...t.value]}},{immediate:!0}),l({getSearcher:k,getRegion:i}),(c,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":c.onlySearcher})},[e.createVNode(x._sfc_main$9,{options:e.unref(o).optionBySearcherKey.value,modelValue:e.unref(o).searcherKey.value,"onUpdate:modelValue":I[0]||(I[0]=B=>e.unref(o).searcherKey.value=B),name:"searcher_key",addChanger:c.addChanger},null,8,["options","modelValue","addChanger"]),!c.onlySearcher&&e.unref(o).searcherKey.value!==e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$9,{key:0,class:"top-select-region",options:e.unref(a).optionByRegionIndex.value,modelValue:e.unref(a).regionIndex.value,"onUpdate:modelValue":I[1]||(I[1]=B=>e.unref(a).regionIndex.value=B),name:c.forFrequency?"region_key":"region_index",addChanger:c.addChanger,"data-top-icon":c.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),c.addCompare&&!c.onlySearcher&&e.unref(o).searcherKey.value===e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$1,{key:1,name:"compare",onClick:f,"data-count-compare-regions-indexes":e.unref(s).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),X=n=>"-"+n,K=n=>n[0]==="-"?n.substring(1):n,O=(n,l)=>{n=K(n);const r=l.find(t=>t.id===n);if(r)return r},Se=(n,l,r)=>{l||(l={id:n.id}),l.id=n.id;const t=ae.TopPopupWorker.genElPopupOpener("div",l);return t.classList.add("top-tagSelector"),n.useTopButton&&t.classList.add("top-button","top-color_theme"),n.mode==="filter"&&t.classList.add("top-tagSelector-filter"),n.mode==="setter"&&!n.filters&&t.classList.add("top-tagSelector-setter_single"),n.mode==="setter"&&n.filters&&t.classList.add("top-tagSelector-setter_several"),t.onclick=d=>{d.preventDefault(),d.stopPropagation(),t.onclick=null;const o=e.ref(n.modelValue),a={model:o,mode:n.mode,targetId:n.targetId,filters:n.filters,payload:n.payload};_.storage(t,"topTagSelectorTarget",a),delete t.dataset.topPopupDisabled,e.isRef(n.modelValue)||e.watch(o,()=>{n.modelValue=o.value,D(t,n,r)}),t.click()},e.isRef(n.modelValue)?e.watch(n.modelValue,()=>D(t,n,r)):_.storage(t,"topTagSelectorRender",d=>{n.modelValue=d;const o=_.storage(t,"topTagSelectorTarget");o&&(o.model.value=d),D(t,n,r)}),D(t,n,r),t},Ie=(n,l)=>{var r;(r=_.storage(n,"topTagSelectorRender"))==null||r(l)},D=(n,l,r)=>{var d;const t=e.unref(l.modelValue);if(n.classList.toggle("top-tagSelector-selectedOne",!t.length||t.length===1),n.classList.toggle("top-tagSelector-toTwoLine",t.length>5),l.mode==="setter"&&l.filters){n.innerHTML=`<div>${r}</div>`;return}if(n.innerHTML="",!t.length&&l.mode==="filter"){const o=Z({id:"all",colorId:"",name:((d=x.useI18n().Common)==null?void 0:d.All_tags)??"",state:""});n.append(o)}t.forEach(o=>{var s,v;const a=Z({id:K(o),colorId:((s=O(o,l.tags))==null?void 0:s.color_id)??"",name:((v=O(o,l.tags))==null?void 0:v.name)??"",state:K(o)===o?"selected":"excluded"});n.append(a)})},Z=n=>{const l=document.createElement("div");return l.classList.add("top-tagSelector_tagIcon"),l.classList.toggle("top-tagSelector-active",!!n.state),l.classList.toggle("top-tagSelector-excluded",n.state==="excluded"),l.dataset.tag_id=n.id,l.dataset.tag_color_id=n.colorId,l.title=n.name,l},xe=[{id:"1",name:"Without Tag",color_id:"1"},{id:"2",name:"Red",color_id:"2"},{id:"3",name:"Orange",color_id:"3"},{id:"4",name:"Yellow",color_id:"4"},{id:"5",name:"Blue",color_id:"5"},{id:"6",name:"Purple",color_id:"6"},{id:"7",name:"Green",color_id:"7"},{id:"8",name:"Magenta",color_id:"8"},{id:"9",name:"Dark blue",color_id:"9"},{id:"10",name:"Turquoise",color_id:"10"}],Ce=["data-tag_id","data-tag_color_id","title"],F=e.defineComponent({__name:"tagIcon",props:{id:{},colorId:{},name:{},state:{}},setup(n){return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!l.state,"top-tagSelector-excluded":l.state==="excluded"}),"data-tag_id":l.id,"data-tag_color_id":l.colorId,title:l.name},null,10,Ce))}}),Be=["contenteditable","onKeydown"],ee=e.defineComponent({__name:"tagPopupListItem",props:e.mergeModels({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:e.mergeModels(["update:name","unselect","exclude","select"],["update:name"]),setup(n,{emit:l}){const r=n,t=l,d=e.useModel(n,"name"),o=e.ref(null),a=e.computed(()=>navigator.userAgent.indexOf("Firefox")!=-1?{contenteditable:s.value,onpaste:f=>f.preventDefault()}:{}),s=e.ref(!1),v=async()=>{var f;s.value=!0,await e.nextTick(),(f=o.value)==null||f.focus()},h=()=>{var c;const f=(c=o.value)==null?void 0:c.innerText;if(!f)return k();o.value&&(o.value.innerText=f),s.value=!1,t("update:name",f)},k=async()=>{o.value&&(o.value.innerText=r.name),s.value=!1},i=f=>{if(s.value||r.disabled)return;let c="selected";r.canExclude&&(f.ctrlKey||f.metaKey)&&(c="excluded"),r.state==c&&(c=""),c===""&&t("unselect"),c==="selected"&&t("select"),c==="excluded"&&t("exclude")};return(f,c)=>(e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":f.disabled,"top-tagSelector_tagListItem-canExclude":f.canExclude,"top-tagSelector-active":!!f.state,"top-tagSelector-excluded":f.state==="excluded"}),onClick:e.withModifiers(i,["stop"])},{default:e.withCtx(()=>[e.createVNode(F,{id:f.id,name:d.value,colorId:f.colorId,state:f.state},null,8,["id","name","colorId","state"]),e.createElementVNode("span",e.mergeProps({ref_key:"elName",ref:o,class:"top-tagSelector_tagListItemName",contenteditable:s.value?"plaintext-only":!1},a.value,{onKeydown:[e.withKeys(e.withModifiers(h,["stop"]),["enter"]),e.withKeys(e.withModifiers(k,["stop"]),["esc"])]}),e.toDisplayString(d.value),17,Be),f.editable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value?(e.openBlock(),e.createElementBlock("span",{key:1,"data-top-icon":"",class:"top-tagSelector_edit",onClick:e.withModifiers(h,["stop"])})):(e.openBlock(),e.createElementBlock("span",{key:0,"data-top-icon":"",class:"top-tagSelector_edit",onClick:v}))],64)):e.createCommentVNode("",!0)]),_:1},8,["class"]))}}),Ve={key:1},te=e.defineComponent({inheritAttrs:!1,__name:"popupOpener",props:e.mergeModels({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=l.useTopButton?x._sfc_main$1:"div",d=l.useTopButton?"html":"default",o={model:r,mode:l.mode,targetId:l.targetId,filters:l.filters,payload:l.payload};return(a,s)=>{const v=e.resolveDirective("top-data");return e.openBlock(),e.createBlock(E._sfc_main$1,{id:a.id},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(t)),e.mergeProps({class:{"top-tagSelector":!0,"top-tagSelector-filter":l.mode==="filter","top-tagSelector-setter_single":l.mode==="setter"&&!a.filters,"top-tagSelector-setter_several":l.mode==="setter"&&a.filters,"top-tagSelector-selectedOne":!r.value.length||r.value.length===1,"top-tagSelector-toTwoLine":r.value.length>5},color:"theme",styling:a.styling},a.$attrs),{[e.unref(d)]:e.withCtx(()=>[!r.value.length&&a.mode==="filter"?(e.openBlock(),e.createBlock(F,{key:0,id:"all",colorId:"",name:a.$i18n.Common.All_tags??"",state:""},null,8,["name"])):e.createCommentVNode("",!0),a.mode==="setter"&&a.filters?(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(a.$slots,"default")])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,h=>{var k,i;return e.openBlock(),e.createBlock(F,{id:e.unref(K)(h),colorId:((k=e.unref(O)(h,a.tags))==null?void 0:k.color_id)??"",name:((i=e.unref(O)(h,a.tags))==null?void 0:i.name)??"",state:e.unref(K)(h)===h?"selected":"excluded"},null,8,["id","colorId","name","state"])}),256))]),_:2},1040,["class","styling"])),[[v,o,"topTagSelectorTarget"]])]),_:3},8,["id"])}}}),Te=e.defineComponent({__name:"tagSelector",props:e.mergeModels({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:e.reactive(xe)},tagsModifiers:{}}),emits:e.mergeModels(["selector","setter","tagsChanged"],["update:modelValue","update:tags"]),setup(n,{emit:l}){const r=x.useI18n(),t=n,d=e.useModel(n,"modelValue"),o=e.useModel(n,"tags"),a=l,s=x.debounce((u,g)=>{a(u,g)},t.emitDelay);t.singleMode&&!d.value.length&&(d.value=[o.value[0].id]);const v=t.id??"top-popup-id-"+Math.random(),h=e.ref("add"),k=()=>{var y;const u=" "+((y=r.Common.Tags)==null?void 0:y.toLowerCase()),g=new Map;return g.set("add",{value:"add",title:r.Common.Add+u}),g.set("replace",{value:"replace",title:r.Common.Replace+u}),g.set("delete",{value:"delete",title:r.Common.Delete+u}),g};let i=e.shallowRef({model:d,mode:"filter",targetId:void 0,filters:void 0,payload:void 0});e.watch(d,()=>{s("selector",d.value)});const f=e.computed(()=>{if(i.value.mode==="setter"&&t.maxTagsForSetter&&!i.value.filters)return i.value.model.value.length>=t.maxTagsForSetter}),c=u=>{if(u!=="all"){if(i.value.model.value.includes(u))return"selected";if(i.value.model.value.includes(X(u)))return"excluded"}return u==="all"&&!i.value.model.value.length?"selected":""},I=(u,g)=>{const y=X(u);let S=i.value.model.value.filter(M=>M!==u&&M!==y);g==="select"&&S.push(u),g==="exclude"&&S.push(y),i.value.mode==="setter"&&i.value.targetId!==void 0&&t.requiredForSetter&&(S.length||S.push("1"),S.length===2&&i.value.model.value.length===1&&i.value.model.value[0]==="1"&&(S=S.filter(M=>M!=="1"))),t.singleMode&&!i.value.filters&&(S.length||(S=i.value.model.value),S.length>1&&(S=[S[S.length-1]])),S.sort((M,N)=>{if(!t.tags)return 0;const q=t.tags.findIndex(b=>b.id===M),L=t.tags.findIndex(b=>b.id===N);return q-L}),i.value.model.value=S,i.value.mode==="setter"&&i.value.targetId!==void 0&&s("setter",{tagsIds:S,targetId:i.value.targetId,payload:i.value.payload})},B=e.computed(()=>{let u="top-tagSelector_popup";return i.value.mode==="filter"&&(u+=" top-tagSelector_popup-filter"),i.value.mode==="setter"&&(u+=" top-tagSelector_popup-setter"),u}),C=()=>{const u=prompt("","New tag");if(!u||u==="New tag")return;const g=o.value.length+1;o.value.push({id:String(g),name:u,color_id:String((g-1)%10+1)}),a("tagsChanged",o.value)},T=u=>{var g;if(i.value=_.storage(u.elPopupOpener,"topTagSelectorTarget"),!i.value)throw new Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");if(i.value.filters&&(h.value="add",i.value.model.value=[]),!((g=x.Core.$)!=null&&g.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}!x.Core.state.isMobile&&!x.Core.state.isMobileUA&&o.value&&$(u.elPopup).sortable({items:'li:has([data-tag_id]:not([data-tag_id="all"]))',cancel:'[contenteditable="plaintext-only"], [contenteditable="true"]',distance:10,stop:function(y,S){if(!o.value)return;const M=$(S.item).parent().find("[data-tag_id]"),N=[];M.each((q,L)=>{if(!o.value)return;const b=$(L).attr("data-tag_id");N.push(b)}),o.value.sort((q,L)=>{const b=N.findIndex(j=>j===q.id),we=N.findIndex(j=>j===L.id);return b-we}),s("tagsChanged",o.value)}})},m=u=>{var g;(g=x.Core.$)!=null&&g.ui.sortable&&$(u.elPopup).data("ui-sortable")&&$(u.elPopup).sortable("destroy")};return(u,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(te,{class:"top-as-selector",modelValue:d.value,"onUpdate:modelValue":g[0]||(g[0]=y=>d.value=y),id:e.unref(v),tags:o.value,styling:u.styling,mode:"filter",useTopButton:""},null,8,["modelValue","id","tags","styling"]),e.createVNode(E._sfc_main,{id:e.unref(v),class:e.normalizeClass(B.value),onOpen:g[4]||(g[4]=y=>T(y)),onClose:g[5]||(g[5]=y=>m(y)),"transition-duration":50},e.createSlots({contentList:e.withCtx(()=>[e.unref(i).mode==="filter"&&!u.singleMode?(e.openBlock(),e.createBlock(ee,{key:0,id:"all",colorId:"",name:u.$i18n.Common.All_tags??"",state:e.unref(i).model.value.length?"":"selected",onSelect:g[3]||(g[3]=y=>e.unref(i).model.value=[])},null,8,["name","state"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>(e.openBlock(),e.createBlock(ee,{key:y.id,id:y.id,colorId:y.color_id,name:y.name,state:c(y.id),canExclude:e.unref(i).mode==="filter"&&!u.singleMode,editable:u.tagsEditable,disabled:f.value&&c(y.id)==="",onUnselect:S=>I(y.id,"unselect"),onSelect:S=>I(y.id,"select"),onExclude:S=>I(y.id,"exclude"),"onUpdate:name":S=>{y.name=S,e.unref(s)("tagsChanged",o.value)}},null,8,["id","colorId","name","state","canExclude","editable","disabled","onUnselect","onSelect","onExclude","onUpdate:name"]))),128)),u.tagsEditable&&o.value.length<u.tagsMax&&o.value.length<20?(e.openBlock(),e.createBlock(E._sfc_main$2,{key:1,"data-top-icon":"",onClick:e.withModifiers(C,["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Add),1)]),_:1})):e.createCommentVNode("",!0)]),_:2},[e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"header",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$9,{modelValue:h.value,"onUpdate:modelValue":g[1]||(g[1]=y=>h.value=y),options:k()},null,8,["modelValue","options"])]),key:"0"}:void 0,e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"footer",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(x._sfc_main$1,{onClick:g[2]||(g[2]=y=>e.unref(s)("setter",{tagsIds:e.unref(i).model.value,filters:e.unref(i).filters,filtersAction:h.value,payload:e.unref(i).payload}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.value==="add"?u.$i18n.Common.Add:"")+" "+e.toDisplayString(h.value==="replace"?u.$i18n.Common.Replace:"")+" "+e.toDisplayString(h.value==="delete"?u.$i18n.Common.Remove:""),1)]),_:1})]),key:"1"}:void 0]),1032,["id","class"])],64))}});V.TopSelectorCompetitors=de,V.TopSelectorRegion=ke,V.TopTagSelector=Te,V.TopTagSelectorPopupOpener=te,V.TopTagSelectorTagIcon=F,V.dialogSelectorRegions=Q,V.findRegion=H,V.genElTopTagSelectorPopupOpener=Se,V.genSearcherByKey=z,V.renderElTopTagSelectorPopupOpener=Ie,V.useItemsFromCompetitors=ue,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})}));
1
+ define(["require","exports","vue","../.chunks/forms-BfDSGwrU.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-R7J0Cawj.amd","../.chunks/menu.vue_vue_type_style_index_0_lang-JZ-QwyLO.amd","../.chunks/utils-7_bMpPkj.amd","../utils/searchers.amd","../utils/dom.amd","../popup/worker.amd","../require/css.amd!../assets/project.css"],(function(ne,V,e,x,E,oe,le,P,_,ae){"use strict";if(typeof e>"u")var e=window.Vue;const re={class:"top-selectorCompetitors"},ie={class:"top-ellipsis1"},de=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=e.computed(()=>{if(l.showSelectAllItem)return{icon:"",title:x.useI18n().Common.Select_all,value:"all",content:""}});return(d,o)=>(e.openBlock(),e.createElementBlock("div",re,[e.unref(x.Core).state.isMobile?(e.openBlock(),e.createBlock(E._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var a;return[e.createTextVNode(e.toDisplayString((a=d.items.find(s=>{var v;return s.value===((v=r.value)==null?void 0:v[0])}))==null?void 0:a.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.items,a=>{var s;return e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-active":(s=r.value)==null?void 0:s.includes(a.value)}),"data-top-icon":a.icon,title:a.title,onClick:()=>r.value=[a.value]},{default:e.withCtx(()=>[e.createElementVNode("span",ie,e.toDisplayString(a.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(oe._sfc_main,{key:1,modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=a=>r.value=a),items:d.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),ue=(n,l)=>e.computed(()=>e.toValue(n).filter(d=>d.on>=0||d.id===l).map(d=>({value:d.id,title:d.url+` [${d.id}]`,icon:d.id===e.toValue(l)?"":"",content:d.name}))),w=-1,p=-2,R=-1,se={0:"Yandex",1:"Google",4:"YouTube",5:"Bing",7:"Seznam",8:"AppStore",9:"GoogleStore",20:"Yandex.com",21:"Yandex.com.tr"},J={key:p,name:"--",index:p},G={key:p,name:"--",regions:[J],regionByIndex:new Map([[p,J]])},A={key:p,name:"Autoselect",index:p},U={key:p,name:"Autoselect",regions:[A],regionByIndex:new Map([[p,A]])},Y={countryCode:"00",depth:1,device:0,key:R,index:R,lang:"ru",name:"Without region"},ce=()=>(A.name=x.useI18n().Common.Autoselect,A),ge=()=>(ce(),U.name=x.useI18n().Common.Autoselect,console.log(U),U),fe=()=>(Y.name=x.useI18n().Keywords.Without_region,Y),z=(n=!1,l=!1,r=[])=>{let t;return n?t=me(r):t=W(r),l&&t.set(p,ge()),t.size||t.set(p,G),t},W=(n,l=!0,r=[],t=!1)=>{const d=new Map;return n.forEach(o=>{if(!o.enabled||t&&typeof o.key=="number"&&o.key>1)return;const a={...o};a.regionByIndex=new Map,o.regions&&o.regions.forEach(s=>{if(l&&!s.enabled)return;const v={...s};a.regionByIndex.set(v.index,v)}),!a.regionByIndex.size&&r.length,(!o.regions||a.regionByIndex.size||r.length)&&typeof a.key=="number"&&d.set(a.key,a)}),r.forEach(o=>{if(d.has(o))return;const a={key:o,name:se[o],regions:[],regionByIndex:new Map};d.set(a.key,a)}),d},me=n=>{const l=W(n,!1,[0,1],!0);if(l.has(2)){const r=l.get(2);r&&(r.regionByIndex=new Map)}return l.forEach(r=>{if(!r.regionByIndex)return;const t={...fe()};r.regionByIndex.set(t.index,t)}),l},H=(n,l,r=[])=>{const t=z(n,!1,r);let d;return t.forEach(o=>{if(!(l.searcher_key!==void 0&&l.searcher_key!=o.key)&&o.regions&&(o.regions.forEach(a=>{if(!d&&!(l.key!==void 0&&l.key!=a.key)&&!(l.index!==void 0&&l.index!=a.index)&&!(!n&&(l.lang!==void 0&&l.lang!=a.lang||l.device!==void 0&&l.device!=a.device)))return a.searcher_key=o.key,d=a,!1}),d))return!1}),d},Q=le.useAsyncTopDialog(()=>new Promise((n,l)=>ne(["../.chunks/dialog_selectorRegions-JEsqs4cv.amd"],n,l))),ve=(n,l)=>{const r=x.useI18n(),t=e.ref(l.value.keys().next().value??p),d=e.computed(()=>{const o=new Map;if(l.value.forEach(a=>{let s={value:a.key,title:a.name};n.addSearcherIcon&&(s.icon=P.getSearcherGIcon(a.key)),o.set(a.key,s)}),n.addCompare&&!o.has(p)){const a={value:"",title:"--------------------",disabled:!0};o.set(a.value,a);const s={value:w,title:r.Common.Compare};o.set(s.value,s)}return o});return{searcherKey:t,optionBySearcherKey:d}},ye=(n,l)=>{var o,a,s;const r=x.useI18n(),t=e.ref(p);n.modelValue.length===1&&(t.value=n.modelValue[0]),t.value===p&&(n.forFrequency?t.value=((a=(o=l.value)==null?void 0:o.regionByIndex.values().next().value)==null?void 0:a.key)??p:t.value=((s=l.value)==null?void 0:s.regionByIndex.keys().next().value)??p);const d=e.computed(()=>{var h;const v=new Map;return(h=l.value.regionByIndex)==null||h.forEach(k=>{let i=k.name;if(n.forFrequency){const I={value:k.key,title:i};v.has(k.key)||v.set(k.key,I);return}k.device&&(i+=" ("+r.Common["Device_"+k.device]+")");const f=P.getLangLabel(l.value.key||0,k.lang??"");f&&(i+=" / "+f);const c={value:k.index,title:i,icon:k.device?P.getDeviceGIcon(k.device):void 0};v.set(k.index,c)}),v});return e.watch(d,(v,h)=>{var c;if(n.onlySearcher||t.value!==void 0&&v.get(t.value))return;let k=v.keys().next().value;if(t.value===p||k===p){t.value=k;return}let i=((c=h==null?void 0:h.get(t.value))==null?void 0:c.title)||"",f=-1;for(const[I,B]of v.entries()){const C=B.title;if(typeof C!="string"||typeof I=="string")break;if(C===i){k=I;break}const T=new RegExp(` \\((${r.Common.Device_1}|${r.Common.Device_2})\\)`);let m=i,u=3;C.indexOf(m)===-1&&(m=i.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(m)===-1&&(m=i.replace(/ \/.*/,""),u--),C.indexOf(m)===-1&&(m=i.replace(/ \/.*/,""),m=m.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(m)!==-1&&(u<=f||(f=u,k=I))}t.value=k}),{regionIndex:t,optionByRegionIndex:d}},pe=(n,l,r)=>{const t=e.ref([]),d=()=>{if(n.onlySearcher&&l.value){t.value=Array.from(l.value.keys());return}let a=[];if(n.modelValue.length>1)a=[...n.modelValue];else try{a=JSON.parse(localStorage.getItem("ui:project:regionSelector"+n.projectId+":regionsIndexes"))??[]}catch{}a.length&&(a=a.filter(s=>r.value.has(s))),a.length||(a=Array.from(r.value)),t.value=[...a]},o=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes")};return e.watch(t,()=>{o()}),n.addCompare&&d(),{regionsIndexes:t}},he=n=>{const l=e.computed(()=>z(n.forFrequency,n.autoRegion,n.searchers)),r=e.computed(()=>l.value.get(d.searcherKey.value)||G),t=e.computed(()=>{const i=new Set;return l.value.forEach(f=>{f.regionByIndex.forEach(c=>{c.index!==R&&c.index!==p&&i.add(c.index)})}),i}),d=ve(n,l),o=ye(n,r),a=pe(n,l,t);e.watch(l,()=>{var f,c,I,B;if(n.onlySearcher?a.regionsIndexes.value=Array.from(l.value.keys()):a.regionsIndexes.value=a.regionsIndexes.value.filter(C=>t.value.has(C)),d.searcherKey.value===w)return;let i=l.value.keys().next().value;l.value.forEach(C=>{var T,m,u;if(n.onlySearcher&&C.key===d.searcherKey.value){i=d.searcherKey.value;return}if(o.regionIndex.value&&((T=C.regionByIndex)!=null&&T.has(o.regionIndex.value))&&(i=C.key),!n.onlySearcher){let g;i!==void 0&&(g=(m=l.value.get(i))==null?void 0:m.regionByIndex);const y=(u=l.value.get(C.key))==null?void 0:u.regionByIndex;g!=null&&g.has(p)&&!(y!=null&&y.has(p))&&(i=C.key)}}),i!==void 0&&(d.searcherKey.value=i),o.regionIndex.value!==void 0&&!((c=(f=r.value)==null?void 0:f.regionByIndex)!=null&&c.has(o.regionIndex.value))&&(o.regionIndex.value=(B=(I=r.value)==null?void 0:I.regions)==null?void 0:B.keys().next().value)},{immediate:!0});const s=()=>{if(!(d.searcherKey.value===w||d.searcherKey.value===p))return d.searcherKey.value},v=()=>{if(n.onlySearcher||o.regionIndex.value===p)return;let i=o.regionIndex.value;if(n.forFrequency){const f=o.regionIndex.value,c=H(n.forFrequency,{searcher_key:s(),key:f},n.searchers);i=c==null?void 0:c.index}return i},h=()=>{const i=s();if(i!==void 0)return l.value.get(i)};return{selectSearcher:d,selectRegion:o,compare:a,searcherByKey:l,allRegionsIndexes:t,getSearcher:h,getRegion:()=>{var f,c;const i=v();if(i!==void 0)return(c=(f=h())==null?void 0:f.regionByIndex)==null?void 0:c.get(i)}}},ke=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:["update:modelValue","update:modelValueSingle"],setup(n,{expose:l}){const r=n,t=e.useModel(n,"modelValue"),d=e.useModel(n,"modelValueSingle"),{selectSearcher:o,selectRegion:a,compare:s,searcherByKey:v,allRegionsIndexes:h,getSearcher:k,getRegion:i}=he(r),f=()=>{const c=[];v.value.forEach(I=>{I.enabled&&I.regions.forEach(B=>{B.enabled&&c.push(B)})}),Q.open("selectorRegions",{regions:c,regionsIndexes:s.regionsIndexes.value,"@update:regionsIndexes":I=>s.regionsIndexes.value=I})};return e.watch([a.regionIndex,o.searcherKey,s.regionsIndexes],()=>{if(o.searcherKey.value===w&&s.regionsIndexes.value.length){if(JSON.stringify(t.value)===JSON.stringify(s.regionsIndexes.value))return;t.value=[...s.regionsIndexes.value]}else r.onlySearcher?(t.value=[o.searcherKey.value],o.searcherKey.value===p&&!r.autoRegion&&(t.value.length=0)):(t.value=[a.regionIndex.value],a.regionIndex.value===p&&!r.autoRegion&&(t.value.length=0));!r.onlySearcher&&!h.value.size&&(o.searcherKey.value=p)}),d.value&&e.watch(d,()=>{d.value&&(t.value=[d.value])},{immediate:!0}),e.watch(t,()=>{var c,I,B,C,T;if(t.value[0]&&(d.value=t.value[0]),r.onlySearcher){if(!t.value.length||t.value.length===1&&!v.value.has(t.value[0])||t.value.length===1&&t.value[0]===p&&!r.autoRegion){let m=v.value.keys().next().value;m===p&&!r.autoRegion&&(m=void 0,d.value=p),m!==void 0?t.value=[m]:t.value.length=0;return}if(t.value.length>1&&JSON.stringify(t.value)!==JSON.stringify(s.regionsIndexes.value)){t.value=[...s.regionsIndexes.value];return}}else{let m=[...new Set(t.value)],u=(I=(c=v.value.values().next().value)==null?void 0:c.regionByIndex)==null?void 0:I.keys().next().value;if(r.forFrequency&&(u=(T=(C=(B=v.value.values().next().value)==null?void 0:B.regionByIndex)==null?void 0:C.values().next().value)==null?void 0:T.key),u===p&&!r.autoRegion&&(u=void 0,d.value=p),!m.length)u!==void 0&&m.push(u);else if(m.length===1){let g=h.value;r.forFrequency&&(g=new Set,v.value.forEach(y=>{y.regionByIndex.forEach(S=>{S.index!==R&&S.index!==p&&g.add(S.key)})})),g.has(m[0])||(m=[],u!==void 0&&m.push(u))}else m=m.filter(g=>h.value.has(g)),!m.length&&u!==void 0&&m.push(u);if(JSON.stringify(t.value)!==JSON.stringify(m)){t.value=m;return}}if(!(t.value.length===1&&t.value[0]===(r.onlySearcher?o.searcherKey.value:a.regionIndex.value)))if(r.onlySearcher){if(t.value.length===1){o.searcherKey.value=t.value[0];return}o.searcherKey.value=w;return}else{if(!t.value.length)return;if(t.value.length===1&&o.searcherKey.value!==w){a.regionIndex.value=t.value[0];let m;for(const u of v.value.values()){for(const g of u.regionByIndex.values())if((r.forFrequency?g.key:g.index)===a.regionIndex.value){m=u.key;break}if(m!==void 0)break}m!==void 0&&(o.searcherKey.value=m)}else o.searcherKey.value=w,s.regionsIndexes.value=[...t.value]}},{immediate:!0}),l({getSearcher:k,getRegion:i}),(c,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":c.onlySearcher})},[e.createVNode(x._sfc_main$9,{options:e.unref(o).optionBySearcherKey.value,modelValue:e.unref(o).searcherKey.value,"onUpdate:modelValue":I[0]||(I[0]=B=>e.unref(o).searcherKey.value=B),name:"searcher_key",addChanger:c.addChanger},null,8,["options","modelValue","addChanger"]),!c.onlySearcher&&e.unref(o).searcherKey.value!==e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$9,{key:0,class:"top-select-region",options:e.unref(a).optionByRegionIndex.value,modelValue:e.unref(a).regionIndex.value,"onUpdate:modelValue":I[1]||(I[1]=B=>e.unref(a).regionIndex.value=B),name:c.forFrequency?"region_key":"region_index",addChanger:c.addChanger,"data-top-icon":c.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),c.addCompare&&!c.onlySearcher&&e.unref(o).searcherKey.value===e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$1,{key:1,name:"compare",onClick:f,"data-count-compare-regions-indexes":e.unref(s).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),X=n=>"-"+n,K=n=>n[0]==="-"?n.substring(1):n,O=(n,l)=>{n=K(n);const r=l.find(t=>t.id===n);if(r)return r},Se=(n,l,r)=>{l||(l={id:n.id}),l.id=n.id;const t=ae.TopPopupWorker.genElPopupOpener("div",l);return t.classList.add("top-tagSelector"),n.useTopButton&&t.classList.add("top-button","top-color_theme"),n.mode==="filter"&&t.classList.add("top-tagSelector-filter"),n.mode==="setter"&&!n.filters&&t.classList.add("top-tagSelector-setter_single"),n.mode==="setter"&&n.filters&&t.classList.add("top-tagSelector-setter_several"),t.onclick=d=>{d.preventDefault(),d.stopPropagation(),t.onclick=null;const o=e.ref(n.modelValue),a={model:o,mode:n.mode,targetId:n.targetId,filters:n.filters,payload:n.payload};_.storage(t,"topTagSelectorTarget",a),delete t.dataset.topPopupDisabled,e.isRef(n.modelValue)||e.watch(o,()=>{n.modelValue=o.value,D(t,n,r)}),t.click()},e.isRef(n.modelValue)?e.watch(n.modelValue,()=>D(t,n,r)):_.storage(t,"topTagSelectorRender",d=>{n.modelValue=d;const o=_.storage(t,"topTagSelectorTarget");o&&(o.model.value=d),D(t,n,r)}),D(t,n,r),t},Ie=(n,l)=>{var r;(r=_.storage(n,"topTagSelectorRender"))==null||r(l)},D=(n,l,r)=>{var d;const t=e.unref(l.modelValue);if(n.classList.toggle("top-tagSelector-selectedOne",!t.length||t.length===1),n.classList.toggle("top-tagSelector-toTwoLine",t.length>5),l.mode==="setter"&&l.filters){n.innerHTML=`<div>${r}</div>`;return}if(n.innerHTML="",!t.length&&l.mode==="filter"){const o=Z({id:"all",colorId:"",name:((d=x.useI18n().Common)==null?void 0:d.All_tags)??"",state:""});n.append(o)}t.forEach(o=>{var s,v;const a=Z({id:K(o),colorId:((s=O(o,l.tags))==null?void 0:s.color_id)??"",name:((v=O(o,l.tags))==null?void 0:v.name)??"",state:K(o)===o?"selected":"excluded"});n.append(a)})},Z=n=>{const l=document.createElement("div");return l.classList.add("top-tagSelector_tagIcon"),l.classList.toggle("top-tagSelector-active",!!n.state),l.classList.toggle("top-tagSelector-excluded",n.state==="excluded"),l.dataset.tag_id=n.id,l.dataset.tag_color_id=n.colorId,l.title=n.name,l},xe=[{id:"1",name:"Without Tag",color_id:"1"},{id:"2",name:"Red",color_id:"2"},{id:"3",name:"Orange",color_id:"3"},{id:"4",name:"Yellow",color_id:"4"},{id:"5",name:"Blue",color_id:"5"},{id:"6",name:"Purple",color_id:"6"},{id:"7",name:"Green",color_id:"7"},{id:"8",name:"Magenta",color_id:"8"},{id:"9",name:"Dark blue",color_id:"9"},{id:"10",name:"Turquoise",color_id:"10"}],Ce=["data-tag_id","data-tag_color_id","title"],F=e.defineComponent({__name:"tagIcon",props:{id:{},colorId:{},name:{},state:{}},setup(n){return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!l.state,"top-tagSelector-excluded":l.state==="excluded"}),"data-tag_id":l.id,"data-tag_color_id":l.colorId,title:l.name},null,10,Ce))}}),Be=["contenteditable","onKeydown"],ee=e.defineComponent({__name:"tagPopupListItem",props:e.mergeModels({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:e.mergeModels(["update:name","unselect","exclude","select"],["update:name"]),setup(n,{emit:l}){const r=n,t=l,d=e.useModel(n,"name"),o=e.ref(null),a=e.computed(()=>navigator.userAgent.indexOf("Firefox")!=-1?{contenteditable:s.value,onpaste:f=>f.preventDefault()}:{}),s=e.ref(!1),v=async()=>{var f;s.value=!0,await e.nextTick(),(f=o.value)==null||f.focus()},h=()=>{var c;const f=(c=o.value)==null?void 0:c.innerText;if(!f)return k();o.value&&(o.value.innerText=f),s.value=!1,t("update:name",f)},k=async()=>{o.value&&(o.value.innerText=r.name),s.value=!1},i=f=>{if(s.value||r.disabled)return;let c="selected";r.canExclude&&(f.ctrlKey||f.metaKey)&&(c="excluded"),r.state==c&&(c=""),c===""&&t("unselect"),c==="selected"&&t("select"),c==="excluded"&&t("exclude")};return(f,c)=>(e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":f.disabled,"top-tagSelector_tagListItem-canExclude":f.canExclude,"top-tagSelector-active":!!f.state,"top-tagSelector-excluded":f.state==="excluded"}),onClick:e.withModifiers(i,["stop"])},{default:e.withCtx(()=>[e.createVNode(F,{id:f.id,name:d.value,colorId:f.colorId,state:f.state},null,8,["id","name","colorId","state"]),e.createElementVNode("span",e.mergeProps({ref_key:"elName",ref:o,class:"top-tagSelector_tagListItemName",contenteditable:s.value?"plaintext-only":!1},a.value,{onKeydown:[e.withKeys(e.withModifiers(h,["stop"]),["enter"]),e.withKeys(e.withModifiers(k,["stop"]),["esc"])]}),e.toDisplayString(d.value),17,Be),f.editable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value?(e.openBlock(),e.createElementBlock("span",{key:1,"data-top-icon":"",class:"top-tagSelector_edit",onClick:e.withModifiers(h,["stop"])})):(e.openBlock(),e.createElementBlock("span",{key:0,"data-top-icon":"",class:"top-tagSelector_edit",onClick:v}))],64)):e.createCommentVNode("",!0)]),_:1},8,["class"]))}}),Ve={key:1},te=e.defineComponent({inheritAttrs:!1,__name:"popupOpener",props:e.mergeModels({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=l.useTopButton?x._sfc_main$1:"div",d=l.useTopButton?"html":"default",o={model:r,mode:l.mode,targetId:l.targetId,filters:l.filters,payload:l.payload};return(a,s)=>{const v=e.resolveDirective("top-data");return e.openBlock(),e.createBlock(E._sfc_main$1,{id:a.id},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(t)),e.mergeProps({class:{"top-tagSelector":!0,"top-tagSelector-filter":l.mode==="filter","top-tagSelector-setter_single":l.mode==="setter"&&!a.filters,"top-tagSelector-setter_several":l.mode==="setter"&&a.filters,"top-tagSelector-selectedOne":!r.value.length||r.value.length===1,"top-tagSelector-toTwoLine":r.value.length>5},color:"theme",styling:a.styling},a.$attrs),{[e.unref(d)]:e.withCtx(()=>[!r.value.length&&a.mode==="filter"?(e.openBlock(),e.createBlock(F,{key:0,id:"all",colorId:"",name:a.$i18n.Common.All_tags??"",state:""},null,8,["name"])):e.createCommentVNode("",!0),a.mode==="setter"&&a.filters?(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(a.$slots,"default")])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,h=>{var k,i;return e.openBlock(),e.createBlock(F,{id:e.unref(K)(h),colorId:((k=e.unref(O)(h,a.tags))==null?void 0:k.color_id)??"",name:((i=e.unref(O)(h,a.tags))==null?void 0:i.name)??"",state:e.unref(K)(h)===h?"selected":"excluded"},null,8,["id","colorId","name","state"])}),256))]),_:2},1040,["class","styling"])),[[v,o,"topTagSelectorTarget"]])]),_:3},8,["id"])}}}),Te=e.defineComponent({__name:"tagSelector",props:e.mergeModels({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:e.reactive(xe)},tagsModifiers:{}}),emits:e.mergeModels(["selector","setter","tagsChanged"],["update:modelValue","update:tags"]),setup(n,{emit:l}){const r=x.useI18n(),t=n,d=e.useModel(n,"modelValue"),o=e.useModel(n,"tags"),a=l,s=x.debounce((u,g)=>{a(u,g)},t.emitDelay);t.singleMode&&!d.value.length&&(d.value=[o.value[0].id]);const v=t.id??"top-popup-id-"+Math.random(),h=e.ref("add"),k=()=>{var y;const u=" "+((y=r.Common.Tags)==null?void 0:y.toLowerCase()),g=new Map;return g.set("add",{value:"add",title:r.Common.Add+u}),g.set("replace",{value:"replace",title:r.Common.Replace+u}),g.set("delete",{value:"delete",title:r.Common.Delete+u}),g};let i=e.shallowRef({model:d,mode:"filter",targetId:void 0,filters:void 0,payload:void 0});e.watch(d,()=>{s("selector",d.value)});const f=e.computed(()=>{if(i.value.mode==="setter"&&t.maxTagsForSetter&&!i.value.filters)return i.value.model.value.length>=t.maxTagsForSetter}),c=u=>{if(u!=="all"){if(i.value.model.value.includes(u))return"selected";if(i.value.model.value.includes(X(u)))return"excluded"}return u==="all"&&!i.value.model.value.length?"selected":""},I=(u,g)=>{const y=X(u);let S=i.value.model.value.filter(M=>M!==u&&M!==y);g==="select"&&S.push(u),g==="exclude"&&S.push(y),i.value.mode==="setter"&&i.value.targetId!==void 0&&t.requiredForSetter&&(S.length||S.push("1"),S.length===2&&i.value.model.value.length===1&&i.value.model.value[0]==="1"&&(S=S.filter(M=>M!=="1"))),t.singleMode&&!i.value.filters&&(S.length||(S=i.value.model.value),S.length>1&&(S=[S[S.length-1]])),S.sort((M,N)=>{if(!t.tags)return 0;const q=t.tags.findIndex(b=>b.id===M),L=t.tags.findIndex(b=>b.id===N);return q-L}),i.value.model.value=S,i.value.mode==="setter"&&i.value.targetId!==void 0&&s("setter",{tagsIds:S,targetId:i.value.targetId,payload:i.value.payload})},B=e.computed(()=>{let u="top-tagSelector_popup";return i.value.mode==="filter"&&(u+=" top-tagSelector_popup-filter"),i.value.mode==="setter"&&(u+=" top-tagSelector_popup-setter"),u}),C=()=>{const u=prompt("","New tag");if(!u||u==="New tag")return;const g=o.value.length+1;o.value.push({id:String(g),name:u,color_id:String((g-1)%10+1)}),a("tagsChanged",o.value)},T=u=>{var g;if(i.value=_.storage(u.elPopupOpener,"topTagSelectorTarget"),!i.value)throw new Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");if(i.value.filters&&(h.value="add",i.value.model.value=[]),!((g=x.Core.$)!=null&&g.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}!x.Core.state.isMobile&&!x.Core.state.isMobileUA&&o.value&&$(u.elPopup).sortable({items:'li:has([data-tag_id]:not([data-tag_id="all"]))',cancel:'[contenteditable="plaintext-only"], [contenteditable="true"]',distance:10,stop:function(y,S){if(!o.value)return;const M=$(S.item).parent().find("[data-tag_id]"),N=[];M.each((q,L)=>{if(!o.value)return;const b=$(L).attr("data-tag_id");N.push(b)}),o.value.sort((q,L)=>{const b=N.findIndex(j=>j===q.id),we=N.findIndex(j=>j===L.id);return b-we}),s("tagsChanged",o.value)}})},m=u=>{var g;(g=x.Core.$)!=null&&g.ui.sortable&&$(u.elPopup).data("ui-sortable")&&$(u.elPopup).sortable("destroy")};return(u,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(te,{class:"top-as-selector",modelValue:d.value,"onUpdate:modelValue":g[0]||(g[0]=y=>d.value=y),id:e.unref(v),tags:o.value,styling:u.styling,mode:"filter",useTopButton:""},null,8,["modelValue","id","tags","styling"]),e.createVNode(E._sfc_main,{id:e.unref(v),class:e.normalizeClass(B.value),onOpen:g[4]||(g[4]=y=>T(y)),onClose:g[5]||(g[5]=y=>m(y)),"transition-duration":50},e.createSlots({contentList:e.withCtx(()=>[e.unref(i).mode==="filter"&&!u.singleMode?(e.openBlock(),e.createBlock(ee,{key:0,id:"all",colorId:"",name:u.$i18n.Common.All_tags??"",state:e.unref(i).model.value.length?"":"selected",onSelect:g[3]||(g[3]=y=>e.unref(i).model.value=[])},null,8,["name","state"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>(e.openBlock(),e.createBlock(ee,{key:y.id,id:y.id,colorId:y.color_id,name:y.name,state:c(y.id),canExclude:e.unref(i).mode==="filter"&&!u.singleMode,editable:u.tagsEditable,disabled:f.value&&c(y.id)==="",onUnselect:S=>I(y.id,"unselect"),onSelect:S=>I(y.id,"select"),onExclude:S=>I(y.id,"exclude"),"onUpdate:name":S=>{y.name=S,e.unref(s)("tagsChanged",o.value)}},null,8,["id","colorId","name","state","canExclude","editable","disabled","onUnselect","onSelect","onExclude","onUpdate:name"]))),128)),u.tagsEditable&&o.value.length<u.tagsMax&&o.value.length<20?(e.openBlock(),e.createBlock(E._sfc_main$2,{key:1,"data-top-icon":"",onClick:e.withModifiers(C,["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Add),1)]),_:1})):e.createCommentVNode("",!0)]),_:2},[e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"header",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$9,{modelValue:h.value,"onUpdate:modelValue":g[1]||(g[1]=y=>h.value=y),options:k()},null,8,["modelValue","options"])]),key:"0"}:void 0,e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"footer",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(x._sfc_main$1,{onClick:g[2]||(g[2]=y=>e.unref(s)("setter",{tagsIds:e.unref(i).model.value,filters:e.unref(i).filters,filtersAction:h.value,payload:e.unref(i).payload}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.value==="add"?u.$i18n.Common.Add:"")+" "+e.toDisplayString(h.value==="replace"?u.$i18n.Common.Replace:"")+" "+e.toDisplayString(h.value==="delete"?u.$i18n.Common.Remove:""),1)]),_:1})]),key:"1"}:void 0]),1032,["id","class"])],64))}});V.TopSelectorCompetitors=de,V.TopSelectorRegion=ke,V.TopTagSelector=Te,V.TopTagSelectorPopupOpener=te,V.TopTagSelectorTagIcon=F,V.dialogSelectorRegions=Q,V.findRegion=H,V.genElTopTagSelectorPopupOpener=Se,V.genSearcherByKey=z,V.renderElTopTagSelectorPopupOpener=Ie,V.useItemsFromCompetitors=ue,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=project.amd.js.map
@@ -1,9 +1,9 @@
1
1
  import { Core as _e } from "../core/app.js";
2
2
  import { defineComponent as P, mergeModels as N, useModel as D, computed as E, createElementBlock as B, openBlock as k, createBlock as b, unref as y, withCtx as _, Fragment as Y, renderList as se, normalizeClass as X, createElementVNode as he, toDisplayString as K, createVNode as A, createTextVNode as G, toValue as de, ref as F, watch as w, createCommentVNode as q, isRef as ce, withModifiers as z, mergeProps as Se, withKeys as ge, nextTick as Be, resolveDirective as Ve, withDirectives as Ee, resolveDynamicComponent as Me, renderSlot as Ke, shallowRef as $e, createSlots as we, reactive as Le } from "vue";
3
- import { u as R, C as J, c as H, o as re, d as Ae } from "../.chunks/forms-DarRVke_.es.js";
4
- import { _ as Ie, b as ue, a as Re } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js";
5
- import { _ as Oe } from "../.chunks/menu.vue_vue_type_style_index_0_lang-COD_4iTy.es.js";
6
- import { u as Ne } from "../.chunks/utils-3M9LC_L_.es.js";
3
+ import { u as R, C as J, c as H, o as re, d as Ae } from "../.chunks/forms-BWoAyEVH.es.js";
4
+ import { _ as Ie, b as ue, a as Re } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-Dljef_xa.es.js";
5
+ import { _ as Oe } from "../.chunks/menu.vue_vue_type_style_index_0_lang-HDPVVgzy.es.js";
6
+ import { u as Ne } from "../.chunks/utils-CdePhhIZ.es.js";
7
7
  import { getSearcherGIcon as De, getLangLabel as Fe, getDeviceGIcon as qe } from "../utils/searchers.js";
8
8
  import { storage as W } from "../utils/dom.js";
9
9
  import { TopPopupWorker as Pe } from "../popup/worker.js";
@@ -170,7 +170,7 @@ const Ue = { class: "top-selectorCompetitors" }, je = { class: "top-ellipsis1" }
170
170
  }), i))
171
171
  return !1;
172
172
  }), i;
173
- }, Qe = Ne(() => import("../.chunks/dialog_selectorRegions-Zlm6K2mk.es.js")), Xe = (t, l) => {
173
+ }, Qe = Ne(() => import("../.chunks/dialog_selectorRegions-eFMZwckA.es.js")), Xe = (t, l) => {
174
174
  const o = R(), e = F(l.value.keys().next().value ?? p), i = E(() => {
175
175
  const a = /* @__PURE__ */ new Map();
176
176
  if (l.value.forEach((n) => {