@topvisor/ui 1.5.0-updates.8 → 1.5.0-updates.9

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.
@@ -1 +1 @@
1
- {"version":3,"sources":[".chunks/dialog_regionSelectorRegions-CYrmaDt3.esm.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","vue_1","N","g","P","utils_BwiXsV0S_esm_js_1","F","I","L","R","z","B","t","n","s","searchers_js_1","c","l","u","string_js_1","d","V","forms_CbUt_6Ff_esm_js_1","H","r","dialogs_CMrERMI7_esm_js_1","dialog_DeM4SApg_esm_js_1"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-CbUt-6Ff.esm.js\", \"./dialogs-CMrERMI7.esm.js\", \"../utils/string.js\", \"./utils-BwiXsV0S.esm.js\", \"../utils/searchers.js\", \"./dialog-DeM4SApg.esm.js\", \"vue\"], function (require, exports, forms_CbUt_6Ff_esm_js_1, dialogs_CMrERMI7_esm_js_1, string_js_1, utils_BwiXsV0S_esm_js_1, searchers_js_1, dialog_DeM4SApg_esm_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = void 0;\n //#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts\n var E = { class: \"dialog_regionSelectorRegions_header\" }, D = [\"data-top-icon\"], O = [\"src\", \"alt\"], k = { class: \"top-ellipsis\" }, A = { class: \"dialog_regionSelectorRegions_regionAreaName\" }, j = { key: 1 }, M = [\"data-top-icon\"], N = /* @__PURE__ */ (0, vue_1.defineComponent)({\n id: \"regionSelectorRegions\",\n __name: \"dialog_regionSelectorRegions\",\n props: {\n regions: {},\n regionsIndexes: {},\n \"@update:regionsIndexes\": { type: Function }\n },\n setup(g) {\n let N = g, P = (0, utils_BwiXsV0S_esm_js_1.r)(), F = (0, vue_1.ref)([]), I = (0, vue_1.ref)(null), L = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), R = (0, vue_1.computed)({\n get() {\n return F.value.every((e) => e.selected);\n },\n set(e) {\n F.value = F.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), z = (e) => {\n L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);\n }, B = () => {\n if (!F.value.some((e) => e.selected))\n return;\n let e = F.value.filter((e) => e.selected).map((e) => e.index);\n N[\"@update:regionsIndexes\"]?.(e), P.close();\n };\n (0, vue_1.watch)([() => N.regions, () => N.regionsIndexes], () => {\n if (F.value = [], !N.regions || !N.regionsIndexes)\n return;\n let e = [...N.regions], t = new Map(N.regionsIndexes.map((e, t) => [e, t]));\n e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {\n let t = e.name;\n e.areaName && (t += ` (${e.areaName})`);\n let r = N.regionsIndexes?.includes(e.index) ?? !1, s = (0, searchers_js_1.getSearcherGIcon)(e.searcher_key), c = e.lang === void 0 ? void 0 : (0, searchers_js_1.getLangLabel)(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : (0, searchers_js_1.getDeviceGIcon)(e.device), u = e.countryCode === void 0 ? void 0 : (0, string_js_1.genFlagLinkByCountryCode)(e.countryCode), d = {\n ...e,\n selected: r,\n title: t,\n searcherIcon: s,\n langLabel: c,\n deviceIcon: l,\n flagLink: u\n };\n F.value.push(d);\n });\n });\n let V = () => {\n if (!forms_CbUt_6Ff_esm_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n I.value && $(I.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...I.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, H = () => {\n forms_CbUt_6Ff_esm_js_1.O.$?.ui.sortable && I.value && $(I.value).sortable(\"destroy\");\n };\n return (e, n) => {\n let r = (0, vue_1.resolveComponent)(\"TopCheckbox\"), i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.unref)(dialogs_CMrERMI7_esm_js_1.a), {\n id: (0, vue_1.unref)(P).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: V,\n onClose: H\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_DeM4SApg_esm_js_1.r), {\n name: \"regions\",\n order: 0\n }, {\n header: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", E, [\n (0, vue_1.createVNode)(r, {\n modelValue: R.value,\n \"onUpdate:modelValue\": n[0] ||= (e) => R.value = e\n }, null, 8, [\"modelValue\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: n[1] ||= (e) => z(\"searcher_key\"),\n title: e.$i18n.Projects?.Sort_by_search_engine\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: n[2] ||= (e) => z(\"key\"),\n title: e.$i18n.Projects?.Sort_by_yande_region_code\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: n[3] ||= (e) => z(\"name\"),\n title: e.$i18n.Projects?.Sort_by_lphabetically\n }, null, 8, [\"title\"])\n ])]),\n body: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", {\n ref_key: \"elRegions\",\n ref: I\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(F.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: e.index,\n modelValue: e.selected,\n \"onUpdate:modelValue\": (t) => e.selected = t,\n class: \"dialog_regionSelectorRegions_region\",\n \"data-region-index\": e.index\n }, {\n default: (0, vue_1.withCtx)(() => [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"dialog_regionSelectorRegions_regionSearcherIcon\",\n \"data-top-icon\": e.searcherIcon\n }, null, 8, D),\n e.flagLink ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"img\", {\n key: 0,\n class: \"top-flag\",\n src: \"//topvisor.dev\" + e.flagLink,\n alt: e.countryCode\n }, null, 8, O)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createElementVNode)(\"div\", k, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.name) + \" \", 1), (0, vue_1.createElementVNode)(\"span\", A, (0, vue_1.toDisplayString)(e.areaName), 1)]),\n e.langLabel ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", j, \" [\" + (0, vue_1.toDisplayString)(e.langLabel) + \"] \", 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 2,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, M)) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]),\n _: 2\n }, 1032, [\n \"modelValue\",\n \"onUpdate:modelValue\",\n \"data-region-index\"\n ]))), 128))], 512)]),\n footer: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(i, { onClick: B }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.$i18n.Common?.Apply), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"id\"]);\n };\n }\n });\n exports.default = N;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-CYrmaDt3.esm.js.map\n","<script setup lang=\"ts\">\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tlet regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yande_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_lphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
1
+ {"version":3,"sources":[".chunks/dialog_regionSelectorRegions-CYrmaDt3.esm.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","vue_1","N","g","P","utils_BwiXsV0S_esm_js_1","F","I","L","R","z","B","t","n","s","searchers_js_1","c","l","u","string_js_1","d","V","forms_CbUt_6Ff_esm_js_1","H","r","dialogs_CMrERMI7_esm_js_1","dialog_DeM4SApg_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,uBAA2B,yBAA6B,sBAAsB,uBAA2B,yBAAyB,wBAA4B,MAAK,gEAAA,CAAA,SAAa,EAAS,EAAS,EAAyB,EAA2B,EAAa,EAAyB,EAAgB,EAA0B,EAAO,CACvW,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,GAAM,CAAC,CAC7D,EAAQ,QAAU,IAAK,GAEvB,IAAIC,EAAI,CAAE,MAAO,sCAAuC,CAAEC,EAAI,CAAC,gBAAgB,CAAEC,EAAI,CAAC,MAAO,MAAM,CAAEC,EAAI,CAAE,MAAO,eAAgB,CAAEC,EAAI,CAAE,MAAO,8CAA+C,CAAEC,EAAI,CAAE,IAAK,EAAG,CAAEC,EAAI,CAAC,gBAAgB,CAwJvO,EAAQ,SAxJsP,EAAGC,EAAM,iBAAiB,CACpR,GAAI,wBACJ,OAAQ,+BACR,MAAO,CACH,QAAS,EAAE,CACX,eAAgB,EAAE,CAClB,yBAA0B,CAAE,KAAM,SAAS,CAC9C,CACD,MAAM,EAAG,CACL,IAAIC,EAAIC,EAAGC,GAAK,EAAGC,EAAwB,IAAI,CAAEC,GAAK,EAAGL,EAAM,KAAK,EAAE,CAAC,CAAEM,GAAK,EAAGN,EAAM,KAAK,KAAK,CAAEO,GAAK,EAAGP,EAAM,UAAU,CACvH,aAAc,GACd,IAAK,GCJf,KAKA,GAWL,CAAA,CAAAQ,GAAc,EAAAR,EAAA,UAAA,CACT,KAAA,CACC,OAAAK,EAAA,MAAA,MAAA,GAAA,EAAA,SAAA,EAOA,IAAA,EAAA,CACoB,EAAA,MAAMA,EAAU,MAAO,IAAS,IAAA,CDdnC,GAAG,ECiBf,SAAA,EACsB,EAAM,EAA4B,CAAA,CAAUI,EAAA,GAAA,CAAS,EAAA,GAAA,CAAAF,EAAA,GAAAF,EAAA,MAAA,MAAA,EAAA,IAAA,CAAA,EAAA,IAAA,CAAA,EAAA,GAAA,GAAA,EAAA,IAAA,EAAA,GAAAE,EAAA,GAAA,CAAAA,EAAA,GAAA,EDZxEG,MAAU,CCoBX,GAAkD,CAAAL,EAAA,MAAA,KAAA,GAAA,EAAA,SAAA,CAGnD,OAYU,IAAA,EAAAA,EAAA,MAAA,OAAA,GAAA,EAAA,SAAA,CAAA,IAAA,GAAA,EAAA,MAAA,CACCJ,EAAA,4BAAiC,EAAA,CAAAE,EAAA,OAAA,GAMlD,EAAAH,EAAA,OAAA,KAA2CC,EAEjD,YAAcA,EAAA,eAAA,KAAA,CDrCC,GAAI,EAAE,MAAQ,EAAE,CAAE,CAACA,EAAE,SAAW,CAACA,EAAE,eC0CtC,OAGA,IAAU,EAEX,CAAA,GAAAA,EAAA,QACA,CAAAU,EAAA,IAAA,IAAAV,EAAgB,eAAA,KAAA,EAAA,IAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAET,EAAM,MAAA,EAGlB,KAAqBU,EAAI,IAAI,EAAM,MAAA,EAAA,OAAe,YAAuBA,EAAO,IAAQC,EAAA,MAAA,EAAA,OAAA,WAAA,CAAA,EAAA,QAAA,GAAA,CAEvE,IACYD,EAAI,EAAQ,KAO3B,EAAA,WAAA,GAAA,KAAA,EAAA,SAAA,IACE,IAAS,EAAAV,EAAK,gBAAgB,SAAA,EAAA,MAAA,EAAA,CAAA,EAAAY,GAAA,EAAAC,EAAA,kBAAA,EAAA,aAAA,CAAAC,EAAA,EAAA,OAAA,IAAA,GAAA,IAAA,IAAA,EAAAD,EAAA,cAAA,EAAA,cAAA,IAAA,EAAA,KAAA,CAAAE,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,IAAA,EAAAF,EAAA,gBAAA,EAAA,OAAA,CAAAG,EAAA,EAAA,cAAA,IAAA,GAAA,IAAA,IAAA,EAAAC,EAAA,0BAAA,EAAA,YAAA,CAAAC,EAAA,CAE5B,GAAA,EAOnB,SAAA,EACH,MAAAR,EACA,aAAAE,EACA,UAAAE,EACA,WAAAC,EACA,SAAAC,EACA,CACAZ,EAAA,MAAA,KAAAc,EAAA,EAEsB,EACtB,CACD,IAAAC,MAAA,CAKmB,GAAA,CAAAC,EAAA,EAAA,GAAA,GAAA,SAAA,CACJ,QAAa,KAAA,yEAAA,CACf,ODpECf,EAAE,OAAS,EAAEA,EAAE,MAAM,CAAC,SAAS,CC2ElC,SAAO,GACR,SAAA,CAEE,IAAA,EAAA,CAAA,GAAAA,EAAA,MAAA,SAAA,CAAA,IAAA,GAAA,OAAA,EAAA,aAAA,oBAAA,CAAA,CAAA,CAEyBD,EAAO,MAAA,MAAU,EAAI,IAAM,EAAA,QAAU,EAAA,MAAA,CAAa,EAAA,QAAA,EAAA,MAAA,CAAA,ED1ExE,CAAC,EC6EfiB,MAAA,CAMmBD,EAAA,EAAA,GAAA,GAAA,UAAAf,EAAA,OAAA,EAAAA,EAAA,MAAA,CAAA,SAAA,UAAA,ED/EV,OAAQ,EAAG,IAAM,CACb,IAAIiB,GAAK,EAAGvB,EAAM,kBAAkB,cAAc,CAAE,GAAK,EAAGA,EAAM,kBAAkB,YAAY,CAChG,OAAQ,EAAGA,EAAM,YAAY,EAAG,EAAGA,EAAM,cAAc,EAAGA,EAAM,OAAOwB,EAA0B,EAAE,CAAE,CC8KxG,IAAA,EAAAxB,EAAA,OAAAG,EAAA,CAAA,GAtFC,WAAA,UACD,MAAA,+BACL,OAAA,QACC,MAAA,QACD,OAAAiB,EACC,QAAAE,EACC,CAAA,CDrFU,SAAU,EAAGtB,EAAM,aAAe,EAAE,EAAGA,EAAM,cAAc,EAAGA,EAAM,OAAOyB,EAAyB,EAAE,CAAE,CCoK1G,KAAA,UA7EI,MAAA,EAAkB,CAAA,CDnFZ,QAAS,EAAGzB,EAAM,aAAe,EAAE,EAAGA,EAAM,oBAAoB,MAAOP,EAAG,EC+G5F,EAAAO,EAAA,aAAAuB,EAAA,CAzB8C,WAAAf,EAAA,MAA7B,sBAAA,EAAA,KAAA,GAAA,EAAA,MAAA,EDlFU,CAAE,KAAM,ECkFL,CAAA,aAAA,CAAA,EDjFH,EAAGR,EAAM,aAAa,EAAG,CCyFvD,MAAA,0CALK,MAAA,QACA,gBAAA,IACQ,QAAA,EAAA,KAAA,GAAAS,EAAA,eAAA,CACF,MAAA,EAAA,MAAA,UAAA,sBACY,CAAA,KAAA,EAAA,CAAA,QAAA,CAAA,EDjFO,EAAGT,EAAM,aAAa,EAAG,CC0FvD,MAAA,0CALK,MAAA,QACA,gBAAA,IACQ,QAAA,EAAA,KAAA,GAAAS,EAAA,MAAA,CACF,MAAA,EAAA,MAAA,UAAA,0BACY,CAAA,KAAA,EAAA,CAAA,QAAA,CAAA,EDlFO,EAAGT,EAAM,aAAa,EAAG,CC2FvD,MAAA,0CALK,MAAA,QACA,gBAAA,IACQ,QAAA,EAAA,KAAA,GAAAS,EAAA,OAAA,CACF,MAAA,EAAA,MAAA,UAAA,sBACY,CAAA,KAAA,EAAA,CAAA,QAAA,CAAA,CDnFG,CAAC,CAAC,CAAC,CACR,MAAO,EAAGT,EAAM,aAAe,EAAE,EAAGA,EAAM,oBAAoB,MAAO,CC6HvF,QAAA,YArCG,IAAAM,EAAA,CAAA,GAAA,EAAAN,EAAA,WAAA,CAAA,EAAA,EAAA,EAAAA,EAAA,oBAAAA,EAAA,SAAA,MAAA,EAAAA,EAAA,YAAAK,EAAA,MAAA,KAAA,EAAAL,EAAA,YAAA,EAAA,EAAAA,EAAA,aAAAuB,EAAA,CAEA,IAAA,EAAA,MACM,WAAA,EAAA,SACG,sBAAA,GAAA,EAAA,SAAA,EAAA,MAAA,sCACV,oBAAA,EAAA,MACqB,CAAA,CDpFO,SAAU,EAAGvB,EAAM,aAAe,ECyF7D,EAAAA,EAAA,oBAAA,MAAA,CAAA,MAAA,kDAFA,gBAAA,EAAA,aACiB,CAAA,KAAA,EAAAN,EAAA,CDnFc,EAAE,WAAa,EAAGM,EAAM,YAAY,EAAG,EAAGA,EAAM,oBAAoB,MAAO,CC2FhH,IAAA,EDzFyC,MAAO,WCsF1C,IAAA,iBAAA,EAAA,SAC0B,IAAA,EAAA,YACnB,CAAA,KAAA,EAAAL,EAAA,GAAA,EAAAK,EAAA,oBAAA,GAAA,CAAA,EAAA,EDpFyB,EAAGA,EAAM,oBAAoB,MAAOJ,EAAG,EAAE,EAAGI,EAAM,kBAAkB,EAAGA,EAAM,iBAAiB,EAAE,KAAK,CAAG,IAAK,EAAE,EAAG,EAAGA,EAAM,oBAAoB,OAAQH,GAAI,EAAGG,EAAM,iBAAiB,EAAE,SAAS,CAAE,EAAE,CAAC,CAAC,CC0F5O,EAEO,YADI,EAAAA,EAAQ,YAAA,EAAA,EAAAA,EAAA,oBAAA,MAAAF,EAAA,MAAA,EAAAE,EAAA,iBAAA,EAAA,UAAA,CAAA,KAAA,EAAA,GAAA,EAAAA,EAAA,oBAAA,GAAA,CAAA,EAAA,CAIS,EAC3B,aAAmB,EAAGA,EACxB,YAAA,EAAA,EAAAA,EAAA,oBAAA,MAAA,CAKO,IAAA,EDlGmC,gBAAiB,EAAE,WCiGrC,CAAA,KAAA,EAAAD,EAAA,GAAA,EAAAC,EAAA,oBAAA,GAAA,CAAA,EAAA,CD/FW,CAAC,CACF,EAAG,EACN,CAAE,KAAM,CACL,aACA,sBACA,oBACH,CAAC,EAAE,CAAE,IAAI,EAAE,CAAE,IAAI,CAAC,CAAC,CAC5B,QAAS,EAAGA,EAAM,aAAe,EAAE,EAAGA,EAAM,aAAa,EAAG,CAAE,QAASU,EAAG,CAAE,CC+FxF,SAAe,EAAAV,EAAA,aAAA,EAAA,EAAAA,EAAA,kBAAA,EAAAA,EAAA,iBAAA,EAAA,MAAA,QAAA,MAAA,CAAA,EAAA,CAAA,CAAA,CACjB,EAAA,ED7FmB,CAAC,CAAC,CAAC,CACR,EAAG,EACN,CAAC,CAAC,CAAC,CACR,EAAG,EACN,CAAE,EAAG,CAAC,KAAK,CAAC,GAGxB,CAAC,EAEJ","sourcesContent":["define([\"require\", \"exports\", \"./forms-CbUt-6Ff.esm.js\", \"./dialogs-CMrERMI7.esm.js\", \"../utils/string.js\", \"./utils-BwiXsV0S.esm.js\", \"../utils/searchers.js\", \"./dialog-DeM4SApg.esm.js\", \"vue\"], function (require, exports, forms_CbUt_6Ff_esm_js_1, dialogs_CMrERMI7_esm_js_1, string_js_1, utils_BwiXsV0S_esm_js_1, searchers_js_1, dialog_DeM4SApg_esm_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = void 0;\n //#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts\n var E = { class: \"dialog_regionSelectorRegions_header\" }, D = [\"data-top-icon\"], O = [\"src\", \"alt\"], k = { class: \"top-ellipsis\" }, A = { class: \"dialog_regionSelectorRegions_regionAreaName\" }, j = { key: 1 }, M = [\"data-top-icon\"], N = /* @__PURE__ */ (0, vue_1.defineComponent)({\n id: \"regionSelectorRegions\",\n __name: \"dialog_regionSelectorRegions\",\n props: {\n regions: {},\n regionsIndexes: {},\n \"@update:regionsIndexes\": { type: Function }\n },\n setup(g) {\n let N = g, P = (0, utils_BwiXsV0S_esm_js_1.r)(), F = (0, vue_1.ref)([]), I = (0, vue_1.ref)(null), L = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), R = (0, vue_1.computed)({\n get() {\n return F.value.every((e) => e.selected);\n },\n set(e) {\n F.value = F.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), z = (e) => {\n L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);\n }, B = () => {\n if (!F.value.some((e) => e.selected))\n return;\n let e = F.value.filter((e) => e.selected).map((e) => e.index);\n N[\"@update:regionsIndexes\"]?.(e), P.close();\n };\n (0, vue_1.watch)([() => N.regions, () => N.regionsIndexes], () => {\n if (F.value = [], !N.regions || !N.regionsIndexes)\n return;\n let e = [...N.regions], t = new Map(N.regionsIndexes.map((e, t) => [e, t]));\n e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {\n let t = e.name;\n e.areaName && (t += ` (${e.areaName})`);\n let r = N.regionsIndexes?.includes(e.index) ?? !1, s = (0, searchers_js_1.getSearcherGIcon)(e.searcher_key), c = e.lang === void 0 ? void 0 : (0, searchers_js_1.getLangLabel)(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : (0, searchers_js_1.getDeviceGIcon)(e.device), u = e.countryCode === void 0 ? void 0 : (0, string_js_1.genFlagLinkByCountryCode)(e.countryCode), d = {\n ...e,\n selected: r,\n title: t,\n searcherIcon: s,\n langLabel: c,\n deviceIcon: l,\n flagLink: u\n };\n F.value.push(d);\n });\n });\n let V = () => {\n if (!forms_CbUt_6Ff_esm_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n I.value && $(I.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...I.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, H = () => {\n forms_CbUt_6Ff_esm_js_1.O.$?.ui.sortable && I.value && $(I.value).sortable(\"destroy\");\n };\n return (e, n) => {\n let r = (0, vue_1.resolveComponent)(\"TopCheckbox\"), i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.unref)(dialogs_CMrERMI7_esm_js_1.a), {\n id: (0, vue_1.unref)(P).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: V,\n onClose: H\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_DeM4SApg_esm_js_1.r), {\n name: \"regions\",\n order: 0\n }, {\n header: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", E, [\n (0, vue_1.createVNode)(r, {\n modelValue: R.value,\n \"onUpdate:modelValue\": n[0] ||= (e) => R.value = e\n }, null, 8, [\"modelValue\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: n[1] ||= (e) => z(\"searcher_key\"),\n title: e.$i18n.Projects?.Sort_by_search_engine\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: n[2] ||= (e) => z(\"key\"),\n title: e.$i18n.Projects?.Sort_by_yande_region_code\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: n[3] ||= (e) => z(\"name\"),\n title: e.$i18n.Projects?.Sort_by_lphabetically\n }, null, 8, [\"title\"])\n ])]),\n body: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", {\n ref_key: \"elRegions\",\n ref: I\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(F.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: e.index,\n modelValue: e.selected,\n \"onUpdate:modelValue\": (t) => e.selected = t,\n class: \"dialog_regionSelectorRegions_region\",\n \"data-region-index\": e.index\n }, {\n default: (0, vue_1.withCtx)(() => [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"dialog_regionSelectorRegions_regionSearcherIcon\",\n \"data-top-icon\": e.searcherIcon\n }, null, 8, D),\n e.flagLink ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"img\", {\n key: 0,\n class: \"top-flag\",\n src: \"//topvisor.dev\" + e.flagLink,\n alt: e.countryCode\n }, null, 8, O)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createElementVNode)(\"div\", k, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.name) + \" \", 1), (0, vue_1.createElementVNode)(\"span\", A, (0, vue_1.toDisplayString)(e.areaName), 1)]),\n e.langLabel ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", j, \" [\" + (0, vue_1.toDisplayString)(e.langLabel) + \"] \", 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 2,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, M)) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]),\n _: 2\n }, 1032, [\n \"modelValue\",\n \"onUpdate:modelValue\",\n \"data-region-index\"\n ]))), 128))], 512)]),\n footer: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(i, { onClick: B }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.$i18n.Common?.Apply), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"id\"]);\n };\n }\n });\n exports.default = N;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-CYrmaDt3.esm.js.map\n","<script setup lang=\"ts\">\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tlet regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yande_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_lphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}