@topvisor/ui 1.5.7-5 → 1.5.7

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/worker-a6MSM1uV.esm.js","../../src/components/popup/lib/worker.ts"],"names":["k2","k","desc","m","o","v","\"default\"","ownKeys","ar","mod","result","resolve_1","reject_1"],"mappings":"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","sourcesContent":["var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\ndefine([\"require\", \"exports\", \"./forms-LywqKN9I.esm.js\", \"../utils/dom.js\"], function (require, exports, forms_LywqKN9I_esm_js_1, dom_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = void 0;\n dom_js_1 = __importDefault(dom_js_1);\n //#region src/components/popup/lib/worker.ts\n var Worker = class Worker {\n static getPopup(e) {\n return dom_js_1.default.storage(e, \"TopPopup\");\n }\n static getParentPopup(e) {\n let t = Worker.getElPopup(e);\n if (!t)\n return;\n let n = Worker.getPopup(t);\n if (n)\n return n;\n }\n static getClosestPopup(e, t) {\n let n = Worker.getParentPopup(e);\n if (n && n.el)\n return n.el === t ? n : Worker.getClosestPopup(n.el, t);\n }\n static getElPopup(e) {\n return e.closest(\".top-popup-wrapper\");\n }\n static getElPopupOpener(e) {\n return e.closest(\"[data-top-popup]\");\n }\n static getPopupFromOpener(e) {\n let t = Worker.getElPopupOpener(e);\n return t ? dom_js_1.default.storage(t, \"#TopPopup\") : null;\n }\n static getAll() {\n return dom_js_1.default.querySelectorAllArray(document, \".top-popup-wrapper\");\n }\n static getAllVisible() {\n return dom_js_1.default.querySelectorAllVisible(document, \".top-popup-wrapper\");\n }\n static async openByOpener(e) {\n if (!(e instanceof HTMLElement))\n return;\n let t = {};\n return t.popup = e.dataset.topPopup, t.id = e.dataset.topPopupId, !t.id && t.popup && (e.dataset.topPopupId = btoa(String.fromCharCode(...new TextEncoder().encode(t.popup))), t.id = e.dataset.topPopupId), e.dataset.topPopupP && (t.p = parseInt(e.dataset.topPopupP)), e.dataset.topPopupPos && (t.p = parseInt(e.dataset.topPopupPos)), e.dataset.topPopupNotch && (t.notch = e.dataset.topPopupNotch === \"true\" || e.dataset.topPopupNotch === \"1\"), e.dataset.topPopupClass && (t.class = e.dataset.topPopupClass), e.dataset.topPopupPosBy && (t.posBy = e.dataset.topPopupPosBy), e.dataset.topPopupFront && (t.frontSelector = e.dataset.topPopupFront), e.dataset.topPopupInvertX && (t.invertX = e.dataset.topPopupInvertX === \"true\" || e.dataset.topPopupInvertX === \"1\"), e.dataset.topPopupOpenByHovertopPopupOpenByHover && (t.openByHover = e.dataset.topPopupOpenByHover === \"true\" || e.dataset.topPopupOpenByHover === \"1\"), e.dataset.topPopupUseOriginal && (t.useOriginal = e.dataset.topPopupUseOriginal === \"true\" || e.dataset.topPopupUseOriginal === \"1\"), await Worker.open(e, t);\n }\n static async open(elOpener, options) {\n elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = \"opened\");\n const { TopLibPopup } = await new Promise((resolve_1, reject_1) => { require([\"./popup-BqacuTuJ.esm.js\"], resolve_1, reject_1); }).then(__importStar);\n if (forms_LywqKN9I_esm_js_1.O.$) {\n const $elOpener = forms_LywqKN9I_esm_js_1.O.$(elOpener);\n if ($elOpener.data(\"aftershow\")) {\n let afterShow = $elOpener.data(\"aftershow\");\n typeof afterShow == \"string\" && (afterShow = eval(afterShow.replace(/\\W/g, \"\"))), $elOpener.one(\"aftershow.top-menu-popup\", afterShow);\n }\n if ($elOpener.data(\"afterclose\")) {\n let afterclose = $elOpener.data(\"afterclose\");\n typeof afterclose == \"string\" && (afterclose = eval(afterclose.replace(/\\W/g, \"\"))), $elOpener.one(\"afterclose.top-menu-popup\", afterclose);\n }\n }\n return options.isFullScreen = forms_LywqKN9I_esm_js_1.O.state.isMobile, new TopLibPopup(elOpener, options);\n }\n static close(e, t = !1) {\n let n = Worker.getPopup(e);\n if (n) {\n n.close();\n let e = n.el.contains(document.activeElement);\n t && !e && setTimeout(() => {\n let e = Worker.getParentPopup(n.el);\n if (e?.openerIsInput) {\n e.el.focus();\n return;\n }\n n.el.focus();\n });\n }\n }\n static recalcPosition(e) {\n let t = Worker.getPopup(e);\n t && t.elPopupBody instanceof HTMLElement && t.recalcPosition();\n }\n static scrollToActive(e) {\n if (!dom_js_1.default.querySelectorVisible(e, \"ul.top-popup_content > li > .top-active\"))\n return;\n let t = e.querySelector(\"ul.top-popup_content\"), n = dom_js_1.default.querySelectorAllVisible(e, \"ul.top-popup_content > li\");\n e.classList.add(\"top-popup-wrapper-no_animate\"), setTimeout(() => e.classList.remove(\"top-popup-wrapper-no_animate\"), 100);\n let r = 100;\n for (let e of n) {\n if (e.querySelector(\":scope > .top-active\"))\n break;\n e instanceof HTMLElement && (r += e.offsetHeight);\n }\n if (t instanceof HTMLElement) {\n let e = t.offsetHeight;\n r > e ? t.scrollTop = r - e : t.scrollTop = 0;\n }\n }\n static decoratorBeforeOpen(e) {\n this.options.decoratorBeforeOpen && this.options.decoratorBeforeOpen(e);\n }\n static decoratorAfterOpen(e) {\n this.options.decoratorAfterOpen && this.options.decoratorAfterOpen(e);\n }\n static decoratorIsIgnoreOuterClick(e) {\n return this.options.decoratorIsIgnoreOuterClick ? this.options.decoratorIsIgnoreOuterClick(e) : !1;\n }\n static regVueComponent(e, t) {\n if (Worker.vueConnectors.get(e))\n throw \"Vue component Popup use duplicated id: \" + e;\n Worker.vueConnectors.set(e, t);\n }\n static unregVueComponent(e) {\n Worker.vueConnectors.delete(e);\n }\n static genElPopupOpener(e, t, ...n) {\n let r = dom_js_1.default.genEl(e, {}, ...n);\n r.dataset.topPopup = \"#\" + t.id;\n for (let e in t) {\n let n = \"topPopup\" + e.charAt(0).toUpperCase() + e.slice(1);\n r.dataset[n] = t[e];\n }\n return r.__TopPopupOpenerProps = t, r;\n }\n };\n exports.t = Worker;\n (0, forms_LywqKN9I_esm_js_1.K)(Worker, \"noClose\", !1), (0, forms_LywqKN9I_esm_js_1.K)(Worker, \"vueConnectors\", /* @__PURE__ */ new Map()), (0, forms_LywqKN9I_esm_js_1.K)(Worker, \"options\", {});\n});\n//# sourceMappingURL=worker-a6MSM1uV.esm.js.map\n","/**\n * PopupWorker управляет работой Popup\n *\n * Должен грузить TopLibPopup только в отложенном режиме\n */\n\nimport Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport type { PopupOptions, TopLibPopup } from '@/components/popup/lib/popup';\nimport type { OpenerProps } from '@/components/popup/popup/opener/types';\n\nexport type Options = {\n\t/**\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\n\t */\n\tdecoratorBeforeOpen?: (popup: TopLibPopup) => void,\n\n\t/**\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\n\t */\n\tdecoratorAfterOpen?: (popup: TopLibPopup) => void;\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\n\t */\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\n}\n\nclass Worker {\n\n\t/**\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\n\t */\n\tstatic noClose = false;\n\n\t/**\n\t * Для взаимодействия с vue\n\t */\n\tstatic vueConnectors = new Map();\n\n\tstatic options: Options = {};\n\n\t/**\n\t * Вернуть объект компонента popup, привязанный к элементу\n\t */\n\tstatic getPopup(elPopup: HTMLElement): TopLibPopup {\n\t\treturn DOM.storage(elPopup, 'TopPopup') as TopLibPopup;\n\t}\n\n\t/**\n\t * Получить родительский popup\n\t */\n\tstatic getParentPopup(el: HTMLElement): TopLibPopup | undefined {\n\t\tconst elPopup = Worker.getElPopup(el);\n\t\tif (!elPopup) return;\n\n\t\tconst parentPopup = Worker.getPopup(elPopup);\n\t\tif (!parentPopup) return;\n\n\t\treturn parentPopup;\n\t}\n\n\t/**\n\t * Найти родительский (или этот) popup, с указанным opener\n\t *\n\t * @param el Любой элемент внутри любого popup\n\t * @param elOpenerClosest Элемент opener для поиска нужного родительского popup\n\t */\n\tstatic getClosestPopup(el: HTMLElement, elOpenerClosest: HTMLElement): TopLibPopup | undefined {\n\t\tconst parentPopup = Worker.getParentPopup(el);\n\t\tif (!parentPopup) return;\n\n\t\tif (!parentPopup.el) return;\n\n\t\tif (parentPopup.el === elOpenerClosest) {\n\t\t\treturn parentPopup;\n\t\t}\n\n\t\treturn Worker.getClosestPopup(parentPopup.el, elOpenerClosest);\n\t}\n\n\tstatic getElPopup(el: HTMLElement): HTMLElement | null {\n\t\treturn el.closest<HTMLElement>('.top-popup-wrapper');\n\t}\n\n\tstatic getElPopupOpener(el: HTMLElement): HTMLElement | null {\n\t\treturn el.closest<HTMLElement>('[data-top-popup]');\n\t}\n\n\tstatic getPopupFromOpener(el: HTMLElement): TopLibPopup | null {\n\t\tconst elOpener = Worker.getElPopupOpener(el);\n\t\tif (!elOpener) return null;\n\n\t\treturn DOM.storage(elOpener, '#TopPopup');\n\t}\n\n\t/**\n\t * Вернуть все элементы с Popup\n\t */\n\tstatic getAll(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Вернуть все элементы с открытыми Popup\n\t */\n\tstatic getAllVisible(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открыть Popup от указанного elOpener\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<TopLibPopup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\toptions.id = elOpener.dataset.topPopupId;\n\n\t\t/**\n\t\t * @deprecated в php шаблонах нет data-top-popup-id\n\t\t */\n\t\tif (!options.id && options.popup) {\n\t\t\telOpener.dataset.topPopupId = btoa(\n\t\t\t\tString.fromCharCode(...new TextEncoder().encode(options.popup))\n\t\t\t);\n\n\t\t\toptions.id = elOpener.dataset.topPopupId;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPos) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupOpenByHovertopPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param elOpener - элемент, вызвавший открытие Popup\n\t * @param options - опции Popup\n\t */\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<TopLibPopup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { TopLibPopup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\n\t\treturn new TopLibPopup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: HTMLElement, restoreFocus = false): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\n\t\tif (popup) {\n\t\t\tpopup.close();\n\n\t\t\tconst isFocused = popup.el.contains(document.activeElement);\n\n\t\t\tif (restoreFocus && !isFocused) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst parentPopup = Worker.getParentPopup(popup.el);\n\t\t\t\t\tif (parentPopup?.openerIsInput) {\n\t\t\t\t\t\tparentPopup.el.focus();\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tpopup.el.focus();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic recalcPosition(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\t\t}\n\t}\n\n\t/**\n\t * Скролл к активному элементу списка\n\t */\n\tstatic scrollToActive(elPopup: HTMLElement): void {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorBeforeOpen) {\n\t\t\tthis.options.decoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorAfterOpen) {\n\t\t\tthis.options.decoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n\t/**\n\t * Сгенерировать элемент для открытия popup\n\t */\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens) as TopLibPopup['el'];\n\n\t\tel.dataset.topPopup = '#' + props.id;\n\n\t\t// if (props.pos === undefined) props.pos = '3';\n\t\t// if (props.notch === undefined) props.notch = true;\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\n\n\t\tfor (const name in props) {\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\n\n\t\t\tel.dataset[attrName] = props[name];\n\t\t}\n\n\t\tel.__TopPopupOpenerProps = props;\n\n\t\treturn el;\n\t}\n\n}\n\nexport default Worker;\n"]}
1
+ {"version":3,"sources":[".chunks/worker-a6MSM1uV.esm.js","../../src/components/popup/lib/worker.ts"],"names":["k2","k","desc","m","o","v","\"default\"","ownKeys","ar","mod","result","resolve_1","reject_1"],"mappings":"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","sourcesContent":["var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\ndefine([\"require\", \"exports\", \"./forms-LywqKN9I.esm.js\", \"../utils/dom.js\"], function (require, exports, forms_LywqKN9I_esm_js_1, dom_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = void 0;\n dom_js_1 = __importDefault(dom_js_1);\n //#region src/components/popup/lib/worker.ts\n var Worker = class Worker {\n static getPopup(e) {\n return dom_js_1.default.storage(e, \"TopPopup\");\n }\n static getParentPopup(e) {\n let t = Worker.getElPopup(e);\n if (!t)\n return;\n let n = Worker.getPopup(t);\n if (n)\n return n;\n }\n static getClosestPopup(e, t) {\n let n = Worker.getParentPopup(e);\n if (n && n.el)\n return n.el === t ? n : Worker.getClosestPopup(n.el, t);\n }\n static getElPopup(e) {\n return e.closest(\".top-popup-wrapper\");\n }\n static getElPopupOpener(e) {\n return e.closest(\"[data-top-popup]\");\n }\n static getPopupFromOpener(e) {\n let t = Worker.getElPopupOpener(e);\n return t ? dom_js_1.default.storage(t, \"#TopPopup\") : null;\n }\n static getAll() {\n return dom_js_1.default.querySelectorAllArray(document, \".top-popup-wrapper\");\n }\n static getAllVisible() {\n return dom_js_1.default.querySelectorAllVisible(document, \".top-popup-wrapper\");\n }\n static async openByOpener(e) {\n if (!(e instanceof HTMLElement))\n return;\n let t = {};\n return t.popup = e.dataset.topPopup, t.id = e.dataset.topPopupId, !t.id && t.popup && (e.dataset.topPopupId = btoa(String.fromCharCode(...new TextEncoder().encode(t.popup))), t.id = e.dataset.topPopupId), e.dataset.topPopupP && (t.p = parseInt(e.dataset.topPopupP)), e.dataset.topPopupPos && (t.p = parseInt(e.dataset.topPopupPos)), e.dataset.topPopupNotch && (t.notch = e.dataset.topPopupNotch === \"true\" || e.dataset.topPopupNotch === \"1\"), e.dataset.topPopupClass && (t.class = e.dataset.topPopupClass), e.dataset.topPopupPosBy && (t.posBy = e.dataset.topPopupPosBy), e.dataset.topPopupFront && (t.frontSelector = e.dataset.topPopupFront), e.dataset.topPopupInvertX && (t.invertX = e.dataset.topPopupInvertX === \"true\" || e.dataset.topPopupInvertX === \"1\"), e.dataset.topPopupOpenByHovertopPopupOpenByHover && (t.openByHover = e.dataset.topPopupOpenByHover === \"true\" || e.dataset.topPopupOpenByHover === \"1\"), e.dataset.topPopupUseOriginal && (t.useOriginal = e.dataset.topPopupUseOriginal === \"true\" || e.dataset.topPopupUseOriginal === \"1\"), await Worker.open(e, t);\n }\n static async open(elOpener, options) {\n elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = \"opened\");\n const { TopLibPopup } = await new Promise((resolve_1, reject_1) => { require([\"./popup-BqacuTuJ.esm.js\"], resolve_1, reject_1); }).then(__importStar);\n if (forms_LywqKN9I_esm_js_1.O.$) {\n const $elOpener = forms_LywqKN9I_esm_js_1.O.$(elOpener);\n if ($elOpener.data(\"aftershow\")) {\n let afterShow = $elOpener.data(\"aftershow\");\n typeof afterShow == \"string\" && (afterShow = eval(afterShow.replace(/\\W/g, \"\"))), $elOpener.one(\"aftershow.top-menu-popup\", afterShow);\n }\n if ($elOpener.data(\"afterclose\")) {\n let afterclose = $elOpener.data(\"afterclose\");\n typeof afterclose == \"string\" && (afterclose = eval(afterclose.replace(/\\W/g, \"\"))), $elOpener.one(\"afterclose.top-menu-popup\", afterclose);\n }\n }\n return options.isFullScreen = forms_LywqKN9I_esm_js_1.O.state.isMobile, new TopLibPopup(elOpener, options);\n }\n static close(e, t = !1) {\n let n = Worker.getPopup(e);\n if (n) {\n n.close();\n let e = n.el.contains(document.activeElement);\n t && !e && setTimeout(() => {\n let e = Worker.getParentPopup(n.el);\n if (e?.openerIsInput) {\n e.el.focus();\n return;\n }\n n.el.focus();\n });\n }\n }\n static recalcPosition(e) {\n let t = Worker.getPopup(e);\n t && t.elPopupBody instanceof HTMLElement && t.recalcPosition();\n }\n static scrollToActive(e) {\n if (!dom_js_1.default.querySelectorVisible(e, \"ul.top-popup_content > li > .top-active\"))\n return;\n let t = e.querySelector(\"ul.top-popup_content\"), n = dom_js_1.default.querySelectorAllVisible(e, \"ul.top-popup_content > li\");\n e.classList.add(\"top-popup-wrapper-no_animate\"), setTimeout(() => e.classList.remove(\"top-popup-wrapper-no_animate\"), 100);\n let r = 100;\n for (let e of n) {\n if (e.querySelector(\":scope > .top-active\"))\n break;\n e instanceof HTMLElement && (r += e.offsetHeight);\n }\n if (t instanceof HTMLElement) {\n let e = t.offsetHeight;\n r > e ? t.scrollTop = r - e : t.scrollTop = 0;\n }\n }\n static decoratorBeforeOpen(e) {\n this.options.decoratorBeforeOpen && this.options.decoratorBeforeOpen(e);\n }\n static decoratorAfterOpen(e) {\n this.options.decoratorAfterOpen && this.options.decoratorAfterOpen(e);\n }\n static decoratorIsIgnoreOuterClick(e) {\n return this.options.decoratorIsIgnoreOuterClick ? this.options.decoratorIsIgnoreOuterClick(e) : !1;\n }\n static regVueComponent(e, t) {\n if (Worker.vueConnectors.get(e))\n throw \"Vue component Popup use duplicated id: \" + e;\n Worker.vueConnectors.set(e, t);\n }\n static unregVueComponent(e) {\n Worker.vueConnectors.delete(e);\n }\n static genElPopupOpener(e, t, ...n) {\n let r = dom_js_1.default.genEl(e, {}, ...n);\n r.dataset.topPopup = \"#\" + t.id;\n for (let e in t) {\n let n = \"topPopup\" + e.charAt(0).toUpperCase() + e.slice(1);\n r.dataset[n] = t[e];\n }\n return r.__TopPopupOpenerProps = t, r;\n }\n };\n exports.t = Worker;\n (0, forms_LywqKN9I_esm_js_1.K)(Worker, \"noClose\", !1), (0, forms_LywqKN9I_esm_js_1.K)(Worker, \"vueConnectors\", /* @__PURE__ */ new Map()), (0, forms_LywqKN9I_esm_js_1.K)(Worker, \"options\", {});\n});\n//# sourceMappingURL=worker-a6MSM1uV.esm.js.map\n","/**\n * PopupWorker управляет работой Popup\n *\n * Должен грузить TopLibPopup только в отложенном режиме\n */\n\nimport Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport type { PopupOptions, TopLibPopup } from '@/components/popup/lib/popup';\nimport type { OpenerProps } from '@/components/popup/popup/opener/types';\n\nexport type Options = {\n\t/**\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\n\t */\n\tdecoratorBeforeOpen?: (popup: TopLibPopup) => void,\n\n\t/**\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\n\t */\n\tdecoratorAfterOpen?: (popup: TopLibPopup) => void;\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\n\t */\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\n}\n\nclass Worker {\n\n\t/**\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\n\t */\n\tstatic noClose = false;\n\n\t/**\n\t * Для взаимодействия с vue\n\t */\n\tstatic vueConnectors = new Map();\n\n\tstatic options: Options = {};\n\n\t/**\n\t * Вернуть объект компонента popup, привязанный к элементу\n\t */\n\tstatic getPopup(elPopup: HTMLElement): TopLibPopup {\n\t\treturn DOM.storage(elPopup, 'TopPopup') as TopLibPopup;\n\t}\n\n\t/**\n\t * Получить родительский popup\n\t */\n\tstatic getParentPopup(el: HTMLElement): TopLibPopup | undefined {\n\t\tconst elPopup = Worker.getElPopup(el);\n\t\tif (!elPopup) return;\n\n\t\tconst parentPopup = Worker.getPopup(elPopup);\n\t\tif (!parentPopup) return;\n\n\t\treturn parentPopup;\n\t}\n\n\t/**\n\t * Найти родительский (или этот) popup, с указанным opener\n\t *\n\t * @param el Любой элемент внутри любого popup\n\t * @param elOpenerClosest Элемент opener для поиска нужного родительского popup\n\t */\n\tstatic getClosestPopup(el: HTMLElement, elOpenerClosest: HTMLElement): TopLibPopup | undefined {\n\t\tconst parentPopup = Worker.getParentPopup(el);\n\t\tif (!parentPopup) return;\n\n\t\tif (!parentPopup.el) return;\n\n\t\tif (parentPopup.el === elOpenerClosest) {\n\t\t\treturn parentPopup;\n\t\t}\n\n\t\treturn Worker.getClosestPopup(parentPopup.el, elOpenerClosest);\n\t}\n\n\tstatic getElPopup(el: HTMLElement): HTMLElement | null {\n\t\treturn el.closest<HTMLElement>('.top-popup-wrapper');\n\t}\n\n\tstatic getElPopupOpener(el: HTMLElement): HTMLElement | null {\n\t\treturn el.closest<HTMLElement>('[data-top-popup]');\n\t}\n\n\tstatic getPopupFromOpener(el: HTMLElement): TopLibPopup | null {\n\t\tconst elOpener = Worker.getElPopupOpener(el);\n\t\tif (!elOpener) return null;\n\n\t\treturn DOM.storage(elOpener, '#TopPopup');\n\t}\n\n\t/**\n\t * Вернуть все элементы с Popup\n\t */\n\tstatic getAll(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Вернуть все элементы с открытыми Popup\n\t */\n\tstatic getAllVisible(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открыть Popup от указанного elOpener\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<TopLibPopup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\toptions.id = elOpener.dataset.topPopupId;\n\n\t\t/**\n\t\t * @deprecated в php шаблонах нет data-top-popup-id\n\t\t */\n\t\tif (!options.id && options.popup) {\n\t\t\telOpener.dataset.topPopupId = btoa(\n\t\t\t\tString.fromCharCode(...new TextEncoder().encode(options.popup))\n\t\t\t);\n\n\t\t\toptions.id = elOpener.dataset.topPopupId;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPos) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupOpenByHovertopPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param elOpener - элемент, вызвавший открытие Popup\n\t * @param options - опции Popup\n\t */\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<TopLibPopup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { TopLibPopup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\n\t\treturn new TopLibPopup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: HTMLElement, restoreFocus = false): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\n\t\tif (popup) {\n\t\t\tpopup.close();\n\n\t\t\tconst isFocused = popup.el.contains(document.activeElement);\n\n\t\t\tif (restoreFocus && !isFocused) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst parentPopup = Worker.getParentPopup(popup.el);\n\t\t\t\t\tif (parentPopup?.openerIsInput) {\n\t\t\t\t\t\tparentPopup.el.focus();\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tpopup.el.focus();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic recalcPosition(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\t\t}\n\t}\n\n\t/**\n\t * Скролл к активному элементу списка\n\t */\n\tstatic scrollToActive(elPopup: HTMLElement): void {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorBeforeOpen) {\n\t\t\tthis.options.decoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorAfterOpen) {\n\t\t\tthis.options.decoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n\t/**\n\t * Сгенерировать элемент для открытия popup\n\t */\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens) as TopLibPopup['el'];\n\n\t\tel.dataset.topPopup = '#' + props.id;\n\n\t\t// if (props.pos === undefined) props.pos = '3';\n\t\t// if (props.notch === undefined) props.notch = true;\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\n\n\t\tfor (const name in props) {\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\n\n\t\t\tel.dataset[attrName] = props[name];\n\t\t}\n\n\t\tel.__TopPopupOpenerProps = props;\n\n\t\treturn el;\n\t}\n\n}\n\nexport default Worker;\n"]}
@@ -1,2 +1,2 @@
1
- define([`require`,`exports`,`../.chunks/field-DEusYVqS.amd`],function(e,t,n){"use strict";if(r===void 0)var r=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.pushFilterTagsIds=t.genFilters=t.genFilterPrimitive=t.genFilterIn=void 0;var i=e=>{let t=[];return Object.keys(e).forEach(n=>{let r=n,i=e[r];if(i===void 0)return;let a;r===`tags_ids`||r===`tags`?o(r,t,i):typeof i==`string`||typeof i==`number`||typeof i==`boolean`?a=s(r,i):(Array.isArray(i)||i instanceof Set)&&(a=c(r,i)),a&&t.push(a)}),t},a=e=>{let t=e,n=`EQUALS`,r;switch((e[1]===`:`||e[2]===`:`)&&([r,t]=e.split(`:`)),r){case`>`:n=`GREATER_THAN`,t=Number(t);break;case`>=`:n=`GREATER_THAN_EQUALS`,t=Number(t);break;case`<`:n=`LESS_THAN`,t=Number(t);break;case`<=`:n=`LESS_THAN_EQUALS`,t=Number(t);break;case`!=`:n=`NOT_EQUALS`,t.match(/^\d+$/)&&(t=Number(t));break;case`%`:n=`CONTAINS`;break;case`!%`:n=`DOES_NOT_CONTAIN`;break;case`^`:n=`STARTS_WITH`;break;case`null`:n=`IS_NULL`;break;case`!null`:n=`IS_NOT_NULL`;break;case`~`:n=`REGEXP`;break;case`!~`:n=`NOT_REGEXP`;break}return{value:t,operator:n}},o=(e,t,r)=>{let i=[],a=[];r.forEach(e=>{e[0]===`-`?a.push(e.substring(1)):i.push(e)}),i.length&&t.push((0,n.t)(e,`IN`,i)),a.length&&t.push((0,n.t)(e,`NOT_IN`,a))},s=(e,t)=>{let r=t,i=`EQUALS`;return typeof t==`string`&&({value:r,operator:i}=a(t)),typeof r==`boolean`&&(r=+!!r),(0,n.t)(e,i,[r])},c=(e,t)=>(0,n.t)(e,`IN`,Array.isArray(t)?t:[...t]);t.genFilters=i,t.pushFilterTagsIds=o,t.genFilterPrimitive=s,t.genFilterIn=c});
1
+ define([`require`,`exports`,`../.chunks/field-DEusYVqS.amd`],function(e,t,n){"use strict";if(r===void 0)var r=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.pushFilterTagsIds=t.genFilters=t.genFilterPrimitive=t.genFilterIn=void 0;var i=e=>{let t=[];return Object.keys(e).forEach(n=>{let r=n,i=e[r];if(i===void 0)return;let a;r===`tags_ids`||r===`tags`?o(r,t,i):typeof i==`string`||typeof i==`number`||typeof i==`boolean`?a=s(r,i):(Array.isArray(i)||i instanceof Set)&&(a=c(r,i)),a&&t.push(a)}),t},a=e=>{let t=e,n=`EQUALS`,r;switch((e[1]===`:`||e[2]===`:`)&&([r,t]=e.split(`:`)),r){case`>`:n=`GREATER_THAN`,t=Number(t);break;case`>=`:n=`GREATER_THAN_EQUALS`,t=Number(t);break;case`<`:n=`LESS_THAN`,t=Number(t);break;case`<=`:n=`LESS_THAN_EQUALS`,t=Number(t);break;case`!=`:n=`NOT_EQUALS`,t.match(/^\d+$/)&&(t=Number(t));break;case`%`:n=`CONTAINS`;break;case`!%`:n=`DOES_NOT_CONTAIN`;break;case`^`:n=`STARTS_WITH`;break;case`null`:n=`IS_NULL`;break;case`!null`:n=`IS_NOT_NULL`;break;case`~`:n=`REGEXP`;break;case`!~`:n=`NOT_REGEXP`}return{value:t,operator:n}},o=(e,t,r)=>{let i=[],a=[];r.forEach(e=>{e[0]===`-`?a.push(e.substring(1)):i.push(e)}),i.length&&t.push((0,n.t)(e,`IN`,i)),a.length&&t.push((0,n.t)(e,`NOT_IN`,a))},s=(e,t)=>{let r=t,i=`EQUALS`;return typeof t==`string`&&({value:r,operator:i}=a(t)),typeof r==`boolean`&&(r=+!!r),(0,n.t)(e,i,[r])},c=(e,t)=>(0,n.t)(e,`IN`,Array.isArray(t)?t:[...t]);t.genFilters=i,t.pushFilterTagsIds=o,t.genFilterPrimitive=s,t.genFilterIn=c});
2
2
  //# sourceMappingURL=additional.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["api/additional.js","../../src/api/api/utils/filters.ts"],"names":["vue","exports","t","o","s","c","r","i","a","n","field_DEusYVqS_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,+BAAkC,EAAG,SAAU,EAAS,EAAS,EAAyB,CACpH,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,ICuCS,OACZ,eAC+BC,EAAA,aAAA,CAAA,MAAA,EAAA,CAAA,EAC/B,EAA4C,kBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,IAAA,GAG3C,IAAMC,EACA,GAAiC,CACnC,IAAU,EAAA,CAAA,EAEV,OAAA,OAAA,KAAA,CAAA,CAAA,CAAA,QAAA,GAAA,CAES,IAAAC,EAAA,EAAcC,EAAA,EAASD,GAa9B,GAAAC,IAAA,IAAA,GASH,OAEA,IAA8CC,EAGpBF,IAAA,YAAwCA,IAAO,OAC3EG,EAAkBH,EAAA,EAAmCC,CAAA,EAAA,OAASA,GAGhE,UAAA,OAAAA,GAAA,UAAA,OAAAA,GAAA,UAAA,EAAAG,EAAAJ,EAAAC,CAAA,GAAA,MAAA,QAAAA,CAAA,GAAAA,aAAA,OAAA,EAAAI,EAAAL,EAAAC,CAAA,GAAAC,GAAA,EAAA,KAAAA,CAAA,CACM,CAAA,EAAA,CACJ,EAAWI,EAAA,GAAA,CAGX,IAAA,EAAA,EAAA,EAAA,SAAA,EACI,QAAA,EAAA,KAAA,KAAA,EAAA,KAAA,OAAA,CAAA,EAAA,GAAA,EAAA,MAAA,GAAA,GAAA,EAAA,CACO,IAAA,IAGX,EAAA,eAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,KAGX,EAAA,sBAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,IAGX,EAAA,YAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,KAIX,EAAA,mBAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,KAEX,EAAA,aAAA,EAAA,MAAA,OAAA,IAAA,EAAA,OAAA,CAAA,GACI,MACO,IAAA,IAEX,EAAA,WACI,MACO,IAAA,KAEX,EAAA,mBACI,MACO,IAAA,IAEX,EAAA,cACI,MACO,IAAA,OAEX,EAAA,UACI,MACO,IAAA,QAEX,EAAA,cACI,MACO,IAAA,IAEX,EAAA,SACF,MAEO,IAAA,KAAE,EAAA,aAAO,KAAS,CAUzB,MAEA,CAEuD,MACA,EAEtC,SAAU,CAChB,CAKV,EAEgBH,GAAA,EAAA,EAAQ,IAAa,CAWtC,IACA,EAAA,CACI,EAAA,EAAA,CAAA,EACA,EAAQ,QACsC,GAAA,CAE9C,EAAA,KAAqC,IAAA,EAAA,KACvC,EAAA,UAAA,CAAA,CAAA,EAAA,EAAA,KAAsB,CAAA,CAkBxB,CAAA,EACA,EAAA,QAE8CG,EAAA,MAAM,EAAMC,EAAqD,EAAA,CAAAR,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,QAAAO,EAAA,MAAA,EAAAC,EAAA,EAAA,CAAAR,EAAA,SAAA,CAAA,CAAA,CD7I5G,EAAGK,GAAK,EAAG,IAAM,CACb,IAAIA,EAAID,EAAGE,EAAI,SACf,OAAO,OAAOF,GAAK,WAAa,CAAE,MAAOC,EAAG,SAAUC,GAAMC,EAAEH,CAAC,GAAI,OAAOC,GAAK,YAAc,EAAI,CAAC,CAAC,CAACA,IAAK,EAAGG,EAAwB,EAAC,CAAER,EAAGM,EAAG,CAACD,CAAC,CAAC,CACpJ,EAAGC,GAAK,EAAG,KAAO,EAAGE,EAAwB,EAAC,CAAER,EAAG,KAAM,MAAM,QAAQO,CAAC,EAAIA,EAAI,CAAC,GAAGA,CAAC,CAAC,EACtF,EAAQ,WAAaP,EACrB,EAAQ,kBAAoBI,EAC5B,EAAQ,mBAAqBC,EAC7B,EAAQ,YAAcC,CAC1B,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/field-DEusYVqS.esm.js\"], function (require, exports, field_DEusYVqS_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.pushFilterTagsIds = exports.genFilters = exports.genFilterPrimitive = exports.genFilterIn = void 0;\n //#region src/api/api/utils/filters.ts\n var t = (e) => {\n let t = [];\n return Object.keys(e).forEach((n) => {\n let o = n, s = e[o];\n if (s === void 0)\n return;\n let c;\n o === \"tags_ids\" || o === \"tags\" ? r(o, t, s) : typeof s == \"string\" || typeof s == \"number\" || typeof s == \"boolean\" ? c = i(o, s) : (Array.isArray(s) || s instanceof Set) && (c = a(o, s)), c && t.push(c);\n }), t;\n }, n = (e) => {\n let t = e, n = \"EQUALS\", r;\n switch ((e[1] === \":\" || e[2] === \":\") && ([r, t] = e.split(\":\")), r) {\n case \">\":\n n = \"GREATER_THAN\", t = Number(t);\n break;\n case \">=\":\n n = \"GREATER_THAN_EQUALS\", t = Number(t);\n break;\n case \"<\":\n n = \"LESS_THAN\", t = Number(t);\n break;\n case \"<=\":\n n = \"LESS_THAN_EQUALS\", t = Number(t);\n break;\n case \"!=\":\n n = \"NOT_EQUALS\", t.match(/^\\d+$/) && (t = Number(t));\n break;\n case \"%\":\n n = \"CONTAINS\";\n break;\n case \"!%\":\n n = \"DOES_NOT_CONTAIN\";\n break;\n case \"^\":\n n = \"STARTS_WITH\";\n break;\n case \"null\":\n n = \"IS_NULL\";\n break;\n case \"!null\":\n n = \"IS_NOT_NULL\";\n break;\n case \"~\":\n n = \"REGEXP\";\n break;\n case \"!~\":\n n = \"NOT_REGEXP\";\n break;\n }\n return {\n value: t,\n operator: n\n };\n }, r = (t, n, r) => {\n let i = [], a = [];\n r.forEach((e) => {\n e[0] === \"-\" ? a.push(e.substring(1)) : i.push(e);\n }), i.length && n.push((0, field_DEusYVqS_esm_js_1.t)(t, \"IN\", i)), a.length && n.push((0, field_DEusYVqS_esm_js_1.t)(t, \"NOT_IN\", a));\n }, i = (t, r) => {\n let i = r, a = \"EQUALS\";\n return typeof r == \"string\" && ({ value: i, operator: a } = n(r)), typeof i == \"boolean\" && (i = +!!i), (0, field_DEusYVqS_esm_js_1.t)(t, a, [i]);\n }, a = (t, n) => (0, field_DEusYVqS_esm_js_1.t)(t, \"IN\", Array.isArray(n) ? n : [...n]);\n exports.genFilters = t;\n exports.pushFilterTagsIds = r;\n exports.genFilterPrimitive = i;\n exports.genFilterIn = a;\n});\n//# sourceMappingURL=additional.js.map\n","import type { components as componentsTagId } from 'topvisor-openapi/src/ts/Tags_2/Types/TagId';\nimport { genFieldFilter } from './field';\n\ntype TagId = componentsTagId['schemas']['Tags_2.Types.TagId'];\ntype TagIdExclude = `-${TagId}`;\n\ntype DataWithModifierOperator<Model> = {\n\t[K in keyof Model]: Model[K] | Model[K][] | Set<Model[K]> | string\n};\n\n/**\n * Модификатор оператора сравнения\n *\n * Используется посредством добавления к строковому значению поля для упрощения синтаксиса указания фильтров\n *\n * @example Поиск вхождения `Иван` в поле `name`\n * genFilters({\n * id: 12345, // без модификатора опертора\n * name: '%:' + 'Иван', // с модификатором опертора\n * });\n */\ntype ModifierOperator = '>=' | '<=' | '!=' | '>' | '<' | '%' | '!%' | '^' | '~' | '!~' | 'null' | '!null';\n\ntype ValueWithModifierOperator = `${ModifierOperator}:${string | number}`;\n\n/**\n * Сгенерировать массив с фильтрами API\n *\n * Ключи - `filedName`, значения - `[ModifierOperator:]fieldValue` / `fieldValues`\n *\n * Значения `undefined` будут пропускаться\n *\n * Додерживает типы:\n *\n * - string, number, boolean - строгое равенство `EQUALS`, если не указан `modifierOperator`\n * - Array - вхождение `IN`\n * - Set<string | number> - вхождение `IN`\n *\n * @see ModifierOperator\n */\nexport const genFilters = <Model extends Api.Ext.Schemas['Model']>(\n\tdataWithModifierOperator: DataWithModifierOperator<Model>,\n): Api.Field.Filter<Model>[] => {\n\tconst filters: Api.Field.Filter<Model>[] = [];\n\n\tObject.keys(dataWithModifierOperator).forEach(_name => {\n\t\tconst name = _name as string & keyof Model;\n\t\tconst value = dataWithModifierOperator[name];\n\t\tif (value === undefined) return;\n\n\t\tlet filter: Api.Field.Filter<Model> | undefined;\n\n\t\tif (name === 'tags_ids' || name === 'tags') {\n\t\t\tpushFilterTagsIds(name, filters, value as any);\n\t\t} else if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n\t\t\tfilter = genFilterPrimitive(name, value);\n\t\t} else if (Array.isArray(value) || value instanceof Set) {\n\t\t\tfilter = genFilterIn(name, value as any);\n\t\t}\n\n\t\tif (filter) {\n\t\t\tfilters.push(filter);\n\t\t}\n\t});\n\n\treturn filters;\n};\n\n/**\n * Получить value и operator из valueWithModifierOperator\n */\nconst extractOperator = (valueWithModifierOperator: ValueWithModifierOperator): {\n\tvalue: any,\n\toperator: Api.Ext.Schemas['FieldOperator']\n} => {\n\tlet value: string | number = valueWithModifierOperator;\n\tlet operator: Api.Field.Filter<any>['operator'] = 'EQUALS';\n\n\tlet modifierOperator: ModifierOperator | undefined;\n\tif (valueWithModifierOperator[1] === ':' || valueWithModifierOperator[2] === ':') {\n\t\t[modifierOperator, value] = valueWithModifierOperator.split(':') as [ModifierOperator, string];\n\t}\n\n\tswitch (modifierOperator) {\n\t\tcase '>':\n\t\t\toperator = 'GREATER_THAN';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '>=':\n\t\t\toperator = 'GREATER_THAN_EQUALS';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '<':\n\t\t\toperator = 'LESS_THAN';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '<=':\n\t\t\toperator = 'LESS_THAN_EQUALS';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '!=':\n\t\t\toperator = 'NOT_EQUALS';\n\n\t\t\tif (value.match(/^\\d+$/)) value = Number(value);\n\n\t\t\tbreak;\n\t\tcase '%':\n\t\t\toperator = 'CONTAINS';\n\n\t\t\tbreak;\n\t\tcase '!%':\n\t\t\toperator = 'DOES_NOT_CONTAIN';\n\n\t\t\tbreak;\n\t\tcase '^':\n\t\t\toperator = 'STARTS_WITH';\n\n\t\t\tbreak;\n\t\tcase 'null':\n\t\t\toperator = 'IS_NULL';\n\n\t\t\tbreak;\n\t\tcase '!null':\n\t\t\toperator = 'IS_NOT_NULL';\n\n\t\t\tbreak;\n\t\tcase '~':\n\t\t\toperator = 'REGEXP';\n\n\t\t\tbreak;\n\t\tcase '!~':\n\t\t\toperator = 'NOT_REGEXP';\n\n\t\t\tbreak;\n\t}\n\n\treturn { value, operator };\n};\n\n/**\n * Сгенерировать и добавить API фильтр из списка тегов\n */\nexport const pushFilterTagsIds = <\n\tModel extends Api.Ext.Schemas['Model'] = any,\n\tFieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>\n>(\n\tname: FieldName,\n\tfilters: Api.Field.Filter<Model, FieldName>[],\n\ttagsIds: Array<TagId | TagIdExclude>,\n) => {\n\tconst tagsIncluded: Array<Model[FieldName] & TagId> = [];\n\tconst tagsExcluded: Array<Model[FieldName] & TagId> = [];\n\n\ttagsIds.forEach((tagId) => {\n\t\tif (tagId[0] === '-') {\n\t\t\ttagsExcluded.push(tagId.substring(1) as Model[FieldName] & TagId);\n\t\t} else {\n\t\t\ttagsIncluded.push(tagId as Model[FieldName] & TagId);\n\t\t}\n\t});\n\n\tif (tagsIncluded.length) filters.push(genFieldFilter<Model, FieldName>(name, 'IN', tagsIncluded));\n\tif (tagsExcluded.length) filters.push(genFieldFilter<Model, FieldName>(name, 'NOT_IN', tagsExcluded));\n};\n\n/**\n * Сгенерировать API фильтр из простого значения\n */\nexport const genFilterPrimitive = <\n\tModel extends Api.Ext.Schemas['Model'] = any,\n\tFieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>\n>(\n\tname: FieldName,\n\tvalueWithModifierOperator: number | string | boolean | ValueWithModifierOperator,\n) => {\n\tlet value = valueWithModifierOperator;\n\tlet operator: Api.Field.Filter<any>['operator'] = 'EQUALS';\n\n\tif (typeof valueWithModifierOperator === 'string') {\n\t\t({ value, operator } = extractOperator(valueWithModifierOperator as ValueWithModifierOperator));\n\t}\n\n\t// @deprecated\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? 1 : 0;\n\t}\n\n\treturn genFieldFilter<Model>(name, operator, [value as any]);\n};\n\n/**\n * Сгенерировать API фильтр IN\n */\nexport const genFilterIn = <\n\tModel extends Api.Ext.Schemas['Model'] = any,\n\tFieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>\n>(\n\tname: FieldName,\n\tvaluesOrSet: Model[FieldName][] | Set<Model[FieldName]>,\n) => {\n\treturn genFieldFilter<Model, FieldName>(name, 'IN', Array.isArray(valuesOrSet) ? valuesOrSet : [...valuesOrSet]);\n};\n"]}
1
+ {"version":3,"sources":["api/additional.js","../../src/api/api/utils/filters.ts"],"names":["vue","exports","t","o","s","c","r","i","a","n","field_DEusYVqS_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,+BAAkC,EAAG,SAAU,EAAS,EAAS,EAAyB,CACpH,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,ICuCS,OACZ,eAC+BC,EAAA,aAAA,CAAA,MAAA,EAAA,CAAA,EAC/B,EAA4C,kBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,IAAA,GAG3C,IAAMC,EACA,GAAiC,CACnC,IAAU,EAAA,CAAA,EAEV,OAAA,OAAA,KAAA,CAAA,CAAA,CAAA,QAAA,GAAA,CAES,IAAAC,EAAA,EAAcC,EAAA,EAASD,GAa9B,GAAAC,IAAA,IAAA,GASH,OAEA,IAA8CC,EAGpBF,IAAA,YAAwCA,IAAO,OAC3EG,EAAkBH,EAAA,EAAmCC,CAAA,EAAA,OAASA,GAGhE,UAAA,OAAAA,GAAA,UAAA,OAAAA,GAAA,UAAA,EAAAG,EAAAJ,EAAAC,CAAA,GAAA,MAAA,QAAAA,CAAA,GAAAA,aAAA,OAAA,EAAAI,EAAAL,EAAAC,CAAA,GAAAC,GAAA,EAAA,KAAAA,CAAA,CACM,CAAA,EAAA,CACJ,EAAWI,EAAA,GAAA,CAGX,IAAA,EAAA,EAAA,EAAA,SAAA,EACI,QAAA,EAAA,KAAA,KAAA,EAAA,KAAA,OAAA,CAAA,EAAA,GAAA,EAAA,MAAA,GAAA,GAAA,EAAA,CACO,IAAA,IAGX,EAAA,eAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,KAGX,EAAA,sBAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,IAGX,EAAA,YAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,KAIX,EAAA,mBAAA,EAAA,OAAA,CAAA,EACI,MACO,IAAA,KAEX,EAAA,aAAA,EAAA,MAAA,OAAA,IAAA,EAAA,OAAA,CAAA,GACI,MACO,IAAA,IAEX,EAAA,WACI,MACO,IAAA,KAEX,EAAA,mBACI,MACO,IAAA,IAEX,EAAA,cACI,MACO,IAAA,OAEX,EAAA,UACI,MACO,IAAA,QAEX,EAAA,cACI,MACO,IAAA,IAEX,EAAA,SACF,MAEO,IAAA,KAAE,EAAA,YAAgB,CAUzB,MAEA,CAEuD,MACA,EAEtC,SAAU,CAChB,CAKV,EAEgBH,GAAA,EAAA,EAAQ,IAAa,CAWtC,IACA,EAAA,CACI,EAAA,EAAA,CAAA,EACA,EAAQ,QACsC,GAAA,CAE9C,EAAA,KAAqC,IAAA,EAAA,KACvC,EAAA,UAAA,CAAA,CAAA,EAAA,EAAA,KAAsB,CAAA,CAkBxB,CAAA,EACA,EAAA,QAE8CG,EAAA,MAAM,EAAMC,EAAqD,EAAA,CAAAR,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,QAAAO,EAAA,MAAA,EAAAC,EAAA,EAAA,CAAAR,EAAA,SAAA,CAAA,CAAA,CD7I5G,EAAGK,GAAK,EAAG,IAAM,CACb,IAAIA,EAAID,EAAGE,EAAI,SACf,OAAO,OAAOF,GAAK,WAAa,CAAE,MAAOC,EAAG,SAAUC,GAAMC,EAAEH,CAAC,GAAI,OAAOC,GAAK,YAAc,EAAI,CAAC,CAAC,CAACA,IAAK,EAAGG,EAAwB,EAAC,CAAER,EAAGM,EAAG,CAACD,CAAC,CAAC,CACpJ,EAAGC,GAAK,EAAG,KAAO,EAAGE,EAAwB,EAAC,CAAER,EAAG,KAAM,MAAM,QAAQO,CAAC,EAAIA,EAAI,CAAC,GAAGA,CAAC,CAAC,EACtF,EAAQ,WAAaP,EACrB,EAAQ,kBAAoBI,EAC5B,EAAQ,mBAAqBC,EAC7B,EAAQ,YAAcC,CAC1B,CAAC","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/field-DEusYVqS.esm.js\"], function (require, exports, field_DEusYVqS_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.pushFilterTagsIds = exports.genFilters = exports.genFilterPrimitive = exports.genFilterIn = void 0;\n //#region src/api/api/utils/filters.ts\n var t = (e) => {\n let t = [];\n return Object.keys(e).forEach((n) => {\n let o = n, s = e[o];\n if (s === void 0)\n return;\n let c;\n o === \"tags_ids\" || o === \"tags\" ? r(o, t, s) : typeof s == \"string\" || typeof s == \"number\" || typeof s == \"boolean\" ? c = i(o, s) : (Array.isArray(s) || s instanceof Set) && (c = a(o, s)), c && t.push(c);\n }), t;\n }, n = (e) => {\n let t = e, n = \"EQUALS\", r;\n switch ((e[1] === \":\" || e[2] === \":\") && ([r, t] = e.split(\":\")), r) {\n case \">\":\n n = \"GREATER_THAN\", t = Number(t);\n break;\n case \">=\":\n n = \"GREATER_THAN_EQUALS\", t = Number(t);\n break;\n case \"<\":\n n = \"LESS_THAN\", t = Number(t);\n break;\n case \"<=\":\n n = \"LESS_THAN_EQUALS\", t = Number(t);\n break;\n case \"!=\":\n n = \"NOT_EQUALS\", t.match(/^\\d+$/) && (t = Number(t));\n break;\n case \"%\":\n n = \"CONTAINS\";\n break;\n case \"!%\":\n n = \"DOES_NOT_CONTAIN\";\n break;\n case \"^\":\n n = \"STARTS_WITH\";\n break;\n case \"null\":\n n = \"IS_NULL\";\n break;\n case \"!null\":\n n = \"IS_NOT_NULL\";\n break;\n case \"~\":\n n = \"REGEXP\";\n break;\n case \"!~\":\n n = \"NOT_REGEXP\";\n break;\n }\n return {\n value: t,\n operator: n\n };\n }, r = (t, n, r) => {\n let i = [], a = [];\n r.forEach((e) => {\n e[0] === \"-\" ? a.push(e.substring(1)) : i.push(e);\n }), i.length && n.push((0, field_DEusYVqS_esm_js_1.t)(t, \"IN\", i)), a.length && n.push((0, field_DEusYVqS_esm_js_1.t)(t, \"NOT_IN\", a));\n }, i = (t, r) => {\n let i = r, a = \"EQUALS\";\n return typeof r == \"string\" && ({ value: i, operator: a } = n(r)), typeof i == \"boolean\" && (i = +!!i), (0, field_DEusYVqS_esm_js_1.t)(t, a, [i]);\n }, a = (t, n) => (0, field_DEusYVqS_esm_js_1.t)(t, \"IN\", Array.isArray(n) ? n : [...n]);\n exports.genFilters = t;\n exports.pushFilterTagsIds = r;\n exports.genFilterPrimitive = i;\n exports.genFilterIn = a;\n});\n//# sourceMappingURL=additional.js.map\n","import type { components as componentsTagId } from 'topvisor-openapi/src/ts/Tags_2/Types/TagId';\nimport { genFieldFilter } from './field';\n\ntype TagId = componentsTagId['schemas']['Tags_2.Types.TagId'];\ntype TagIdExclude = `-${TagId}`;\n\ntype DataWithModifierOperator<Model> = {\n\t[K in keyof Model]: Model[K] | Model[K][] | Set<Model[K]> | string\n};\n\n/**\n * Модификатор оператора сравнения\n *\n * Используется посредством добавления к строковому значению поля для упрощения синтаксиса указания фильтров\n *\n * @example Поиск вхождения `Иван` в поле `name`\n * genFilters({\n * id: 12345, // без модификатора опертора\n * name: '%:' + 'Иван', // с модификатором опертора\n * });\n */\ntype ModifierOperator = '>=' | '<=' | '!=' | '>' | '<' | '%' | '!%' | '^' | '~' | '!~' | 'null' | '!null';\n\ntype ValueWithModifierOperator = `${ModifierOperator}:${string | number}`;\n\n/**\n * Сгенерировать массив с фильтрами API\n *\n * Ключи - `filedName`, значения - `[ModifierOperator:]fieldValue` / `fieldValues`\n *\n * Значения `undefined` будут пропускаться\n *\n * Додерживает типы:\n *\n * - string, number, boolean - строгое равенство `EQUALS`, если не указан `modifierOperator`\n * - Array - вхождение `IN`\n * - Set<string | number> - вхождение `IN`\n *\n * @see ModifierOperator\n */\nexport const genFilters = <Model extends Api.Ext.Schemas['Model']>(\n\tdataWithModifierOperator: DataWithModifierOperator<Model>,\n): Api.Field.Filter<Model>[] => {\n\tconst filters: Api.Field.Filter<Model>[] = [];\n\n\tObject.keys(dataWithModifierOperator).forEach(_name => {\n\t\tconst name = _name as string & keyof Model;\n\t\tconst value = dataWithModifierOperator[name];\n\t\tif (value === undefined) return;\n\n\t\tlet filter: Api.Field.Filter<Model> | undefined;\n\n\t\tif (name === 'tags_ids' || name === 'tags') {\n\t\t\tpushFilterTagsIds(name, filters, value as any);\n\t\t} else if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n\t\t\tfilter = genFilterPrimitive(name, value);\n\t\t} else if (Array.isArray(value) || value instanceof Set) {\n\t\t\tfilter = genFilterIn(name, value as any);\n\t\t}\n\n\t\tif (filter) {\n\t\t\tfilters.push(filter);\n\t\t}\n\t});\n\n\treturn filters;\n};\n\n/**\n * Получить value и operator из valueWithModifierOperator\n */\nconst extractOperator = (valueWithModifierOperator: ValueWithModifierOperator): {\n\tvalue: any,\n\toperator: Api.Ext.Schemas['FieldOperator']\n} => {\n\tlet value: string | number = valueWithModifierOperator;\n\tlet operator: Api.Field.Filter<any>['operator'] = 'EQUALS';\n\n\tlet modifierOperator: ModifierOperator | undefined;\n\tif (valueWithModifierOperator[1] === ':' || valueWithModifierOperator[2] === ':') {\n\t\t[modifierOperator, value] = valueWithModifierOperator.split(':') as [ModifierOperator, string];\n\t}\n\n\tswitch (modifierOperator) {\n\t\tcase '>':\n\t\t\toperator = 'GREATER_THAN';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '>=':\n\t\t\toperator = 'GREATER_THAN_EQUALS';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '<':\n\t\t\toperator = 'LESS_THAN';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '<=':\n\t\t\toperator = 'LESS_THAN_EQUALS';\n\t\t\tvalue = Number(value);\n\n\t\t\tbreak;\n\t\tcase '!=':\n\t\t\toperator = 'NOT_EQUALS';\n\n\t\t\tif (value.match(/^\\d+$/)) value = Number(value);\n\n\t\t\tbreak;\n\t\tcase '%':\n\t\t\toperator = 'CONTAINS';\n\n\t\t\tbreak;\n\t\tcase '!%':\n\t\t\toperator = 'DOES_NOT_CONTAIN';\n\n\t\t\tbreak;\n\t\tcase '^':\n\t\t\toperator = 'STARTS_WITH';\n\n\t\t\tbreak;\n\t\tcase 'null':\n\t\t\toperator = 'IS_NULL';\n\n\t\t\tbreak;\n\t\tcase '!null':\n\t\t\toperator = 'IS_NOT_NULL';\n\n\t\t\tbreak;\n\t\tcase '~':\n\t\t\toperator = 'REGEXP';\n\n\t\t\tbreak;\n\t\tcase '!~':\n\t\t\toperator = 'NOT_REGEXP';\n\n\t\t\tbreak;\n\t}\n\n\treturn { value, operator };\n};\n\n/**\n * Сгенерировать и добавить API фильтр из списка тегов\n */\nexport const pushFilterTagsIds = <\n\tModel extends Api.Ext.Schemas['Model'] = any,\n\tFieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>\n>(\n\tname: FieldName,\n\tfilters: Api.Field.Filter<Model, FieldName>[],\n\ttagsIds: Array<TagId | TagIdExclude>,\n) => {\n\tconst tagsIncluded: Array<Model[FieldName] & TagId> = [];\n\tconst tagsExcluded: Array<Model[FieldName] & TagId> = [];\n\n\ttagsIds.forEach((tagId) => {\n\t\tif (tagId[0] === '-') {\n\t\t\ttagsExcluded.push(tagId.substring(1) as Model[FieldName] & TagId);\n\t\t} else {\n\t\t\ttagsIncluded.push(tagId as Model[FieldName] & TagId);\n\t\t}\n\t});\n\n\tif (tagsIncluded.length) filters.push(genFieldFilter<Model, FieldName>(name, 'IN', tagsIncluded));\n\tif (tagsExcluded.length) filters.push(genFieldFilter<Model, FieldName>(name, 'NOT_IN', tagsExcluded));\n};\n\n/**\n * Сгенерировать API фильтр из простого значения\n */\nexport const genFilterPrimitive = <\n\tModel extends Api.Ext.Schemas['Model'] = any,\n\tFieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>\n>(\n\tname: FieldName,\n\tvalueWithModifierOperator: number | string | boolean | ValueWithModifierOperator,\n) => {\n\tlet value = valueWithModifierOperator;\n\tlet operator: Api.Field.Filter<any>['operator'] = 'EQUALS';\n\n\tif (typeof valueWithModifierOperator === 'string') {\n\t\t({ value, operator } = extractOperator(valueWithModifierOperator as ValueWithModifierOperator));\n\t}\n\n\t// @deprecated\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? 1 : 0;\n\t}\n\n\treturn genFieldFilter<Model>(name, operator, [value as any]);\n};\n\n/**\n * Сгенерировать API фильтр IN\n */\nexport const genFilterIn = <\n\tModel extends Api.Ext.Schemas['Model'] = any,\n\tFieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>\n>(\n\tname: FieldName,\n\tvaluesOrSet: Model[FieldName][] | Set<Model[FieldName]>,\n) => {\n\treturn genFieldFilter<Model, FieldName>(name, 'IN', Array.isArray(valuesOrSet) ? valuesOrSet : [...valuesOrSet]);\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.5.7-5",
4
+ "version": "1.5.7",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,2 +1,2 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`../.chunks/forms-LywqKN9I.amd`,`../.chunks/field-DEusYVqS.amd`,`../utils/dom.amd`,`../.chunks/worker-a6MSM1uV.amd`,`../.chunks/utils-CZnFOkS6.amd`,`../utils/check.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`../utils/keyboard.amd`,`../.chunks/popup-BWD4eASc.amd`,`../.chunks/formsExt-D16-9Jor.amd`,`vue`,`../.chunks/api-Dy2x6A8L.amd`,`../.chunks/app-CyODeY0D.amd`,`../require/css.amd!../assets/project.css`],function(e,t,r,i,a,o,s,c,l,u,d,f,p,m){"use strict";if(h===void 0)var h=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useItemsFromCompetitors=t.topProjectSelectorClearCache=t.renderElTopTagSelectorPopupOpener=t.genSearcherByKey=t.genElTopTagSelectorPopupOpener=t.findRegion=t.dialogRegionSelector=t.TopTagSelectorTagIcon=t.TopTagSelectorPopupOpener=t.TopTagSelector=t.TopRegionSelector=t.TopProjectSelector=t.TopGroupSelector=t.TopCompetitorSelector=void 0;var g={class:`top-competitorSelector`},_={class:`top-ellipsis1`},v=(0,m.defineComponent)({__name:`competitorSelector`,props:(0,m.mergeModels)({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0},selectAllItemIcon:{default:``}},{modelValue:{},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,m.useModel)(e,`modelValue`),i=(0,m.computed)(()=>{if(t.showSelectAllItem)return{icon:t.selectAllItemIcon,title:(0,r.E)().Common.Select_all,value:`all`,content:``}});return(t,a)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,g,[(0,m.unref)(r.O).state.isMobile?((0,m.openBlock)(),(0,m.createBlock)(f.s,{key:0},{opener:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{class:`top-competitorSelector_opener`,color:`theme`,icon:``,icon2:``},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.items.find(e=>e.value===n.value?.[0])?.content),1)]),_:1})]),contentList:(0,m.withCtx)(()=>[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(e.items,e=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-active":n.value?.includes(e.value)}),"data-top-icon":e.icon,title:e.title,onClick:()=>n.value=[e.value]},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,_,(0,m.toDisplayString)(e.content),1)]),_:2},1032,[`class`,`data-top-icon`,`title`,`onClick`]))),256))]),_:1})):((0,m.openBlock)(),(0,m.createBlock)(p.f,{key:1,modelValue:n.value,"onUpdate:modelValue":a[0]||=e=>n.value=e,items:e.items,isMultiple:!0,styling:`bar`,canBeEmptyMultiple:!1,selectAllItem:i.value},null,8,[`modelValue`,`items`,`selectAllItem`]))]))}}),y=(e,t)=>(0,m.computed)(()=>(0,m.toValue)(e).filter(e=>e.on>=0||e.id===t).map(e=>({value:e.id,title:e.url+` [${e.id}]`,icon:e.id===(0,m.toValue)(t)?``:``,content:e.name}))),b={0:`Yandex`,1:`Google`,4:`YouTube`,5:`Bing`,7:`Seznam`,8:`AppStore`,9:`GoogleStore`,20:`Yandex.com`,21:`Yandex.com.tr`,22:`YandexLive`},x={key:-2,name:`--`,index:-2},S={key:-2,name:`--`,regions:[x],regionByIndex:new Map([[-2,x]])},C={key:-2,name:`Autoselect`,index:-2},w={key:-2,name:`Autoselect`,regions:[C],regionByIndex:new Map([[-2,C]])},T={countryCode:`00`,depth:1,device:0,key:-1,index:-1,lang:`ru`,name:`Without region`},ee=()=>(C.name=(0,r.E)().Common.Autoselect,C),te=()=>(ee(),w.name=(0,r.E)().Common.Autoselect,console.log(w),w),ne=()=>(T.name=(0,r.E)().Keywords.Without_region,T),E=(e=``,t=!1,n=[])=>{let r;return r=e?re(n,e):D(n),t&&r.set(-2,te()),r.size||r.set(-2,S),r},D=(e,t=!0,n=[],r=``)=>{let i=new Map;return e.forEach(e=>{if(r!==`project_relevant_url`&&!e.enabled||r&&typeof e.key==`number`&&e.key>1)return;let a={...e};a.regionByIndex=new Map,e.regions&&e.regions.forEach(e=>{if(t&&!e.enabled)return;let n={...e};a.regionByIndex.set(n.index,n)}),!a.regionByIndex.size&&n.length,(!e.regions||a.regionByIndex.size||n.length)&&i.set(a.key,a)}),n.forEach(e=>{if(i.has(e))return;let t={key:e,name:b[e],regions:[],regionByIndex:new Map};i.set(t.key,t)}),i},re=(e,t)=>{let n=D(e,!1,r.O.state.forceSearchersKeysForKeywordsStats,t);if(n.has(2)){let e=n.get(2);e&&(e.regionByIndex=new Map)}return(t===`volume`||t===`cost_forecast`)&&r.O.state.showGlobalRegionForKeywordsStats&&n.forEach(e=>{if(!e.regionByIndex)return;let t={...ne()};e.regionByIndex.set(t.index,t)}),n},O=(e,t,n=[])=>{let r=E(e,!1,n),i;return r.forEach(n=>{if(!(t.searcher_key!==void 0&&t.searcher_key!=n.key)&&n.regions&&(n.regions.forEach(r=>{if(!i&&!(t.key!==void 0&&t.key!=r.key)&&!(t.index!==void 0&&t.index!=r.index)&&!(!e&&(t.lang!==void 0&&t.lang!=r.lang||t.device!==void 0&&t.device!=r.device)))return r.searcher_key=n.key,i=r,!1}),i))return!1}),i},k=(0,s.t)(()=>new Promise((t,n)=>{e([`../.chunks/dialog_regionSelectorRegions-zJShjr2f.amd`],t,n)}).then(__importStar)),ie=(e,t)=>{let n=(0,r.E)();return{searcherKey:(0,m.ref)(t.value.keys().next().value??-2),optionBySearcherKey:(0,m.computed)(()=>{let r=new Map;if(t.value.forEach(t=>{let n={value:t.key,title:t.name};e.addSearcherIcon&&(n.icon=(0,u.getSearcherGIcon)(t.key)),r.set(t.key,n)}),e.addCompare&&!r.has(-2)){let e={value:``,title:`--------------------`,disabled:!0};r.set(e.value,e);let t={value:-1,title:n.Common.Compare};r.set(t.value,t)}return r})}},ae=(e,t)=>{let n=(0,r.E)(),i=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),a=(0,m.ref)(-2);e.modelValue.length===1&&(a.value=e.modelValue[0]),a.value===-2&&(i.value?a.value=t.value?.regionByIndex.values().next().value?.key??-2:a.value=t.value?.regionByIndex.keys().next().value??-2);let o=(0,m.computed)(()=>{let e=new Map;return t.value.regionByIndex?.forEach(r=>{let a=r.name;if(i.value){let t={value:r.key,title:a};e.has(r.key)||e.set(r.key,t);return}r.device&&(a+=` (`+n.Common[`Device_`+r.device]+`)`);let o=(0,u.getLangLabel)(t.value.key||0,r.lang??``);o&&(a+=` / `+o);let s={value:r.index,title:a,icon:r.device?(0,u.getDeviceGIcon)(r.device):void 0};e.set(r.index,s)}),e});return(0,m.watch)(o,(t,r)=>{if(e.onlySearcher||a.value!==void 0&&t.get(a.value))return;let i=t.keys().next().value;if(a.value===-2||i===-2){a.value=i;return}let o=r?.get(a.value)?.title||``,s=-1;for(let[e,r]of t.entries()){let t=r.title;if(typeof t!=`string`||typeof e==`string`)break;if(t===o){i=e;break}let a=RegExp(` \\((${n.Common.Device_1}|${n.Common.Device_2})\\)`),c=o,l=3;t.indexOf(c)===-1&&(c=o.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),c=c.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)!==-1&&(l<=s||(s=l,i=e))}a.value=i}),{regionIndex:a,optionByRegionIndex:o}},oe=(e,t,n)=>{let r=(0,m.ref)([]),i=()=>{if(e.onlySearcher&&t.value){r.value=Array.from(t.value.keys());return}let i=[];if(e.modelValue.length>1)i=[...e.modelValue];else try{i=JSON.parse(localStorage.getItem(`ui:project:regionSelector`+e.projectId+`:regionsIndexes`))??[]}catch{}i.length&&(i=i.filter(e=>n.value.has(e))),i.length||(i=Array.from(n.value)),r.value=[...i]},a=()=>{r.value.length?localStorage.setItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`,JSON.stringify(r.value)):localStorage.removeItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`)};return(0,m.watch)(r,()=>{a()}),e.addCompare&&i(),{regionsIndexes:r}},se=e=>{let t=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),n=(0,m.computed)(()=>E(e.forMode,e.autoRegion,e.searchers)),r=(0,m.computed)(()=>n.value.get(a.searcherKey.value)||S),i=(0,m.computed)(()=>{let e=new Set;return n.value.forEach(t=>{t.regionByIndex.forEach(t=>{t.index!==-1&&t.index!==-2&&e.add(t.index)})}),e}),a=ie(e,n),o=ae(e,r),s=oe(e,n,i);(0,m.watch)(n,()=>{if(e.onlySearcher?s.regionsIndexes.value=Array.from(n.value.keys()):s.regionsIndexes.value=s.regionsIndexes.value.filter(e=>i.value.has(e)),a.searcherKey.value===-1)return;let t=n.value.keys().next().value;n.value.forEach(r=>{if(e.onlySearcher&&r.key===a.searcherKey.value){t=a.searcherKey.value;return}if(o.regionIndex.value&&r.regionByIndex?.has(o.regionIndex.value)&&(t=r.key),!e.onlySearcher){let e;t!==void 0&&(e=n.value.get(t)?.regionByIndex);let i=n.value.get(r.key)?.regionByIndex;e?.has(-2)&&!i?.has(-2)&&(t=r.key)}}),t!==void 0&&(a.searcherKey.value=t),o.regionIndex.value!==void 0&&!(r.value?.regionByIndex)?.has(o.regionIndex.value)&&(o.regionIndex.value=r.value?.regions?.keys().next().value)},{immediate:!0});let c=()=>{if(!(a.searcherKey.value===-1||a.searcherKey.value===-2))return a.searcherKey.value},l=()=>{if(e.onlySearcher||o.regionIndex.value===-2)return;let n=o.regionIndex.value;if(t.value&&e.forMode){let t=o.regionIndex.value;n=O(e.forMode,{searcher_key:c(),key:t},e.searchers)?.index}return n},u=()=>{let e=c();if(e!==void 0)return n.value.get(e)};return{selectSearcher:a,selectRegion:o,compare:s,searcherByKey:n,allRegionsIndexes:i,getSearcher:u,getRegion:()=>{let e=l();if(e!==void 0)return u()?.regionByIndex?.get(e)}}},ce=(0,m.defineComponent)({__name:`regionSelector`,props:(0,m.mergeModels)({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forMode:{},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(e,{expose:t}){let n=e,i=(0,m.computed)(()=>n.forMode===`volume`||n.forMode===`cost_forecast`),a=(0,m.useModel)(e,`modelValue`),o=(0,m.useModel)(e,`modelValueSingle`),{selectSearcher:s,selectRegion:c,compare:l,searcherByKey:u,allRegionsIndexes:d,getSearcher:f,getRegion:p}=se(n),h=()=>{let e=[];u.value.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.regions.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.index!==-1&&e.push(t)})}),k.open(`regions`,{regions:e,regionsIndexes:l.regionsIndexes.value,"@update:regionsIndexes":e=>l.regionsIndexes.value=e})};return(0,m.watch)([c.regionIndex,s.searcherKey,l.regionsIndexes],()=>{if(s.searcherKey.value===-1&&l.regionsIndexes.value.length){if(JSON.stringify(a.value)===JSON.stringify(l.regionsIndexes.value))return;a.value=[...l.regionsIndexes.value]}else n.onlySearcher?(a.value=[s.searcherKey.value],s.searcherKey.value===-2&&!n.autoRegion&&(a.value.length=0)):(a.value=[c.regionIndex.value],c.regionIndex.value===-2&&!n.autoRegion&&(a.value.length=0));!n.onlySearcher&&!d.value.size&&(s.searcherKey.value=-2)}),o.value&&(0,m.watch)(o,()=>{o.value&&(a.value=[o.value])},{immediate:!0}),(0,m.watch)(a,()=>{if(a.value[0]&&(o.value=a.value[0]),n.onlySearcher){if(!a.value.length||a.value.length===1&&!u.value.has(a.value[0])||a.value.length===1&&a.value[0]===-2&&!n.autoRegion){let e=u.value.keys().next().value;e===-2&&!n.autoRegion&&(e=void 0,o.value=-2),e===void 0?a.value.length=0:a.value=[e];return}if(a.value.length>1&&JSON.stringify(a.value)!==JSON.stringify(l.regionsIndexes.value)){a.value=[...l.regionsIndexes.value];return}}else{let e=[...new Set(a.value)],t=u.value.values().next().value?.regionByIndex?.keys().next().value;if(i.value&&(t=u.value.values().next().value?.regionByIndex?.values().next().value?.key),t===-2&&!n.autoRegion&&(t=void 0,o.value=-2),!e.length)t!==void 0&&e.push(t);else if(e.length===1){let n=d.value;i.value&&(n=new Set,u.value.forEach(e=>{e.regionByIndex.forEach(e=>{e.index!==-1&&e.index!==-2&&n.add(e.key)})})),n.has(e[0])||(e=[],t!==void 0&&e.push(t))}else e=e.filter(e=>d.value.has(e)),!e.length&&t!==void 0&&e.push(t);if(JSON.stringify(a.value)!==JSON.stringify(e)){a.value=e;return}}if(!(a.value.length===1&&a.value[0]===(n.onlySearcher?s.searcherKey.value:c.regionIndex.value)))if(n.onlySearcher){if(a.value.length===1){s.searcherKey.value=a.value[0];return}s.searcherKey.value=-1;return}else{if(!a.value.length)return;if(a.value.length===1&&s.searcherKey.value!==-1){c.regionIndex.value=a.value[0];let e;for(let t of u.value.values()){for(let n of t.regionByIndex.values())if((i.value?n.key:n.index)===c.regionIndex.value){e=t.key;break}if(e!==void 0)break}e!==void 0&&(s.searcherKey.value=e)}else s.searcherKey.value=-1,l.regionsIndexes.value=[...a.value]}},{immediate:!0}),t({getSearcher:f,getRegion:p}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-regionSelector":!0,"top-regionSelector-onlySearcher":e.onlySearcher})},[(0,m.createVNode)(r.n,{options:(0,m.unref)(s).optionBySearcherKey.value,modelValue:(0,m.unref)(s).searcherKey.value,"onUpdate:modelValue":n[0]||=e=>(0,m.unref)(s).searcherKey.value=e,name:`searcher_key`,addChanger:e.addChanger},null,8,[`options`,`modelValue`,`addChanger`]),!e.onlySearcher&&(0,m.unref)(s).searcherKey.value!==(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.n,{key:0,class:`top-select-region`,options:(0,m.unref)(c).optionByRegionIndex.value,modelValue:(0,m.unref)(c).regionIndex.value,"onUpdate:modelValue":n[1]||=e=>(0,m.unref)(c).regionIndex.value=e,name:i.value?`region_key`:`region_index`,addChanger:e.addChanger,"data-top-icon":e.addRegionIcon?``:void 0},null,8,[`options`,`modelValue`,`name`,`addChanger`,`data-top-icon`])):(0,m.createCommentVNode)(``,!0),e.addCompare&&!e.onlySearcher&&(0,m.unref)(s).searcherKey.value===(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.h,{key:1,name:`compare`,onClick:h,"data-count-compare-regions-indexes":(0,m.unref)(l).regionsIndexes.value.length},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Selected_regions),1)]),_:1},8,[`data-count-compare-regions-indexes`])):(0,m.createCommentVNode)(``,!0)],2))}}),A={id:0,name:`/`,path:`/`};t.TopCompetitorSelector=v,t.useItemsFromCompetitors=y,t.genSearcherByKey=E,t.findRegion=O,t.dialogRegionSelector=k,t.TopRegionSelector=ce;function j(e){return e?(0,r.E)()?.Common.All_folders:`/ (`+(0,r.E)()?.Keywords.Root_folder+`)`}var M=(e,t,n=new Map,r={id:`root`},i=0)=>(r.childsIds=[],r.id&&(r.countAllGroupsActive=r.count_groups_active),e[r.id]&&e[r.id].forEach(a=>{a={...a},r.childsIds.push(a.id),a.id===0&&(a.name=j(t));let o=i>1?`-`.repeat(i-1)+` `:``;o&&!a.name.startsWith(o)&&(a.name=o+a.name),n.set(a.id,a),M(e,t,n,a,i+1),r.childsIds=r.childsIds.concat(a.childsIds),r.id&&a.count_groups_active&&(r.countAllGroupsActive+=a.count_groups_active)}),n),le=(e,t)=>e.gen(`/get/${t}/folders/`,[`id`,`parent_id`,`name`,`path`]).changeParams({orders:[`ord_path`],limit:100});function N(e,t,n){let r=Object.keys(e);return(0,m.watch)(r.map(t=>e[t]),(e,n,i)=>{let a={};e.forEach((e,t)=>{if(!Object.is(e,n[t])){let i=r[t];a[i]={old:n[t],new:e}}}),Object.keys(a).length&&t(a,i)},n)}var ue=[`innerHTML`],de=(0,m.defineComponent)({__name:`folders`,props:(0,m.mergeModels)({folderId:{},folder:{},folders:{},projectId:{},canSelectAll:{type:Boolean},addChanger:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{}},{folderId:{required:!0},folderIdModifiers:{},folder:{default:A},folderModifiers:{}}),emits:[`update:folderId`,`update:folder`],setup(e){let t=e,n=(0,m.useModel)(e,`folderId`),r=(0,m.useModel)(e,`folder`),i=t.client&&!t.folders?le(t.client,t.service):void 0,a=(0,m.ref)(null);(0,m.watch)(()=>t.projectId,()=>{i?.changeParams({project_id:t.projectId}),i?.setOptions({checkFingerprint:`TopGroupSelectorFolders:`+t.projectId}),a.value?.resetCache()},{immediate:!0});let o=(0,m.computed)(()=>M(t.folders??{root:[A]},t.canSelectAll)),s=e=>(t.canSelectAll&&e[0]?.id===0&&(e[0]={...e[0],name:j(!0)}),e);return N({modelFolder:r,modelFolderId:n},async e=>{if(n.value===r.value.id)return;if(e.modelFolder&&!e.modelFolderId){n.value=r.value.id;return}let i=o.value.get(t.folderId);i||=A,r.value=i,n.value=i.id},{immediate:!0}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.s,{class:`top-groupSelector_folder`,modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,items:e.folders?[...o.value.values()]:void 0,"search-type":`inline`,icon:e.addIcon?``:void 0,api:e.folders?void 0:(0,m.unref)(i),apiSetSearchParams:(...e)=>(0,m.unref)(p.u)(...e,`name`),prepareItemsBeforeRender:s,addChanger:e.addChanger,useCache:``},{item:(0,m.withCtx)(({item:e})=>[(0,m.createElementVNode)(`div`,{innerHTML:e.name.replaceAll(/</g,`< `)},null,8,ue)]),_:1},8,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`addChanger`]))}}),P={id:-1,name:`--`,folder_id:A.id,folder_path:A.path},F={id:0,name:`All groups`,folder_id:A.id,folder_path:A.path},I=()=>(F.name=(0,r.E)()?.Common.All_groups,F),L=()=>(F.name=(0,r.E)()?.Keywords.Choose_group,F),fe=(e,t,n)=>(e=[...e],t!==void 0&&(e=e.filter(e=>e.on==Number(t))),n&&n.id&&n.childsIds&&(e=e.filter(e=>e.folder_id===n.id||n.childsIds.includes(e.folder_id))),e),R=(e,t)=>e.gen(`/get/${t}/groups/`,[`id`,`name`,`folder_id`,`folder_path`]).changeParams({folder_id_depth:!0,limit:100}),pe=(e,t)=>e.gen(`/add/${t}/groups/`),me=(e,t)=>e.gen(`/del/${t}/groups/`),he=(e,t)=>e.gen(`/edit/${t}/groups/rename/`),ge={class:`top-groupSelector_groupItem top-ellipsis1`},_e={key:0,class:`top-comment`},ve=[`innerHTML`],ye=[`innerHTML`],be=[`innerHTML`],xe=(0,m.defineComponent)({__name:`groups`,props:(0,m.mergeModels)({groupId:{},group:{},projectId:{},folder:{},groups:{},on:{type:Boolean,default:void 0},canAdd:{type:[String,Boolean]},canEditAndDel:{type:Boolean},canSelectAll:{type:[Boolean,String]},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showPath:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{groupId:{required:!0},groupIdModifiers:{},group:{required:!0},groupModifiers:{}}),emits:(0,m.mergeModels)([`addGroup`,`editGroup`,`delGroup`],[`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,a=n,o=(0,m.useModel)(e,`groupId`),s=(0,m.useModel)(e,`group`),c=r.client&&!r.groups?R(r.client,r.service):void 0,l=r.client?pe(r.client,r.service):void 0,u=r.client?me(r.client,r.service):void 0,d=r.client?he(r.client,r.service):void 0,h=(0,m.ref)(null),g=(0,m.computed)(()=>{if(r.groups!==void 0)return fe(r.groups,r.on,r.folder)}),_=(0,i.t)(`folder_id`,`EQUALS`,[r.folder?.id??0]);c?.changeParams({project_id:r.projectId,folder_id_depth:!0,filters:[_]}),r.on!==void 0&&c?.params.filters?.push((0,i.t)(`on`,`EQUALS`,[Number(r.on)]));let v=e=>{s.value=e,o.value=e.id},y=(e=!1)=>{h.value?.resetCache(e)};N({projectId:()=>r.projectId,folderId:()=>r.folder?.id,canSelectAll:()=>r.canSelectAll},e=>{if(e.projectId&&(c?.changeParams({project_id:r.projectId}),c?.setOptions({checkFingerprint:`TopGroupSelectorGroups:`+r.projectId})),e.folderId&&(_.values=[r.folder?.id??0]),y(),(e.folderId?.old!==void 0||e.canSelectAll?.old!==void 0)&&o.value!==null){let e;r.autoselect===`first`&&(e=g.value?.[0],r.canSelectAll&&(e=(0,m.reactive)(I()))),(r.autoselect===`placeholder`||!e)&&(e=L()),v(e)}},{immediate:!0}),N({modelGroup:s,modelGroupId:o},async e=>{if(o.value!==s.value.id){if(e.modelGroup&&!e.modelGroupId){o.value=s.value.id;return}if(!(r.canAdd&&o.value===null)){if(r.groups){let e=g.value?.find(e=>e.id===o.value);if(!e&&r.canSelectAll&&(e=I()),e)v(e);else{let e=g.value?.[0];e&&!o.value?v(e):v(P)}}if(r.client&&!r.groups&&(o.value||o.value===0&&!r.canSelectAll)){let e=R(r.client,r.service).changeParams({project_id:r.projectId,id:o.value,filters:[_]});e?.setOptions({checkFingerprint:`TopGroupSelectorFindGroup:`+r.projectId});let t=await e.call();if(!t.errors?.length&&!t.result)return;!t.errors&&t.result[0]?v(t.result[0]):v(P)}}}},{immediate:!0});let b=async e=>{if(r.canAdd!==`api`||!l)return;let t=s.value,n=await l.changeParams({project_id:r.projectId,names:[e.name],to_id:r.folder?.id??A.id,to_type:`in_folder_last`}).call();if(n.result){let e=n.result[0];v(e),a(`addGroup`,e)}else v(t);h.value?.resetCache(!0)},x=async(e,t)=>{d&&((await d.changeParams({project_id:r.projectId,id:e.id,name:t}).call()).errors||(s.value.id===e.id&&(s.value.name=t),a(`editGroup`,{id:e.id,name:t}),h.value?.updateCacheItemById(e.id,{name:t})))},S=async e=>{u&&((await u.changeParams({project_id:r.projectId,id:e.id}).call()).errors||(s.value.id===e.id&&v(r.canSelectAll?I():P),a(`delGroup`,e.id),h.value?.deleteCacheItemById(e.id)))};return t({resetCacheGroups:y}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.s,{ref_key:`refSelector`,ref:h,class:`top-groupSelector_group`,modelValue:s.value,"onUpdate:modelValue":n[0]||=e=>s.value=e,items:g.value??e.groups,searchType:`inline`,icon:e.addIcon?``:void 0,api:e.groups?void 0:(0,m.unref)(c),apiSetSearchParams:(...e)=>(0,m.unref)(p.u)(...e,`name`),appendSearchToResult:!!e.canAdd,useAllItem:e.canSelectAll?(0,m.unref)(I)().name:!1,addChanger:e.addChanger,useCache:``,onAppendItem:b},(0,m.createSlots)({item:(0,m.withCtx)(({item:n})=>[(0,m.createElementVNode)(`div`,ge,[n.id===(0,m.unref)(null)?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,_e,(0,m.toDisplayString)(t.$i18n.Common.Add)+`: `,1)):(0,m.createCommentVNode)(``,!0),(0,m.createElementVNode)(`span`,{class:`top-groupSelector_groupItemName top-ellipsis1`,innerHTML:n.name},null,8,ve),n.folder_path&&e.showPath?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,class:`top-groupSelector_groupItemFolderPath top-ellipsis1`,innerHTML:n.folder_path},null,8,ye)):(0,m.createCommentVNode)(``,!0)])]),_:2},[e.canEditAndDel&&e.client?{name:`actions`,fn:(0,m.withCtx)(({item:r})=>[r.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createVNode)(f.n,{submitText:t.$i18n.Common.Save,defaultValue:r.name,inputProps:{addCleaner:!1},onSubmit:e=>x(r,e)},{opener:(0,m.withCtx)(()=>[...n[1]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[...n[2]||=[]]),_:1},8,[`submitText`,`defaultValue`,`onSubmit`]),(0,m.createVNode)(f.r,{isWarning:``,submitText:t.$i18n.Common.Delete,onSubmit:e=>S(r)},{opener:(0,m.withCtx)(()=>[...n[3]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,{innerHTML:e.service===`keywords_2`?t.$i18n.Keywords.Delete_group_warning:t.$i18n[`Ai.Tracker`].Delete_group_warning},null,8,be)]),_:1},8,[`submitText`,`onSubmit`])],64)):(0,m.createCommentVNode)(``,!0)]),key:`0`}:void 0]),1032,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`appendSearchToResult`,`useAllItem`,`addChanger`]))}}),Se={class:`top-groupSelector`},Ce=(0,m.defineComponent)({__name:`groupSelector`,props:(0,m.mergeModels)({folderId:{},folder:{},groupId:{},group:{},projectId:{},folders:{},groups:{},on:{type:Boolean,default:void 0},canSelectAllGroups:{type:Boolean,default:!1},canAddGroup:{type:[String,Boolean]},canEditAndDelGroup:{type:Boolean},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showFolders:{type:Boolean,default:!0},showGroups:{type:Boolean,default:!0},showGroupsPaths:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{folderId:{required:!0},folderIdModifiers:{},folder:{},folderModifiers:{},groupId:{required:!0},groupIdModifiers:{},group:{default:P},groupModifiers:{}}),emits:(0,m.mergeModels)([`update:groups`],[`update:folderId`,`update:folder`,`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,i=(0,m.ref)(null),a=(0,m.useModel)(e,`folderId`),o=(0,m.useModel)(e,`folder`),s=(0,m.useModel)(e,`groupId`),c=(0,m.useModel)(e,`group`),l=n;o.value=M(r.folders??{root:[A]},r.canSelectAllGroups).get(a.value);let u=r.groups?.find(e=>e.id===s.value);s.value||(u=r.groups?.[0]),r.canSelectAllGroups&&!u&&(u=I()),(r.autoselect===`placeholder`||!u)&&(u=L()),u??=P,c.value=u;let d=e=>{let t;r.groups&&e&&(t=[...r.groups,e]),l(`update:groups`,t)},f=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.find(t=>t.id===e.id);if(!t)return;let n={...t,...e},i=r.groups.map(e=>e.id===n.id?n:e);l(`update:groups`,i)},p=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.filter(t=>t.id!==e);l(`update:groups`,t)};return t({resetCacheGroups:(e=!1)=>{i.value?.resetCacheGroups(e)}}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Se,[e.showFolders?((0,m.openBlock)(),(0,m.createBlock)(de,{key:0,folderId:a.value,"onUpdate:folderId":n[0]||=e=>a.value=e,folder:o.value,"onUpdate:folder":n[1]||=e=>o.value=e,projectId:e.projectId,folders:e.folders,canSelectAll:e.canSelectAllGroups,addChanger:e.addChanger,addIcon:e.addIcon,client:e.client,service:r.service},null,8,[`folderId`,`folder`,`projectId`,`folders`,`canSelectAll`,`addChanger`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0),e.showGroups?((0,m.openBlock)(),(0,m.createBlock)(xe,{key:1,ref_key:`componentGroupsRef`,ref:i,groupId:s.value,"onUpdate:groupId":n[2]||=e=>s.value=e,group:c.value,"onUpdate:group":n[3]||=e=>c.value=e,projectId:e.projectId,folder:o.value,groups:e.groups,on:e.on,canAdd:e.canAddGroup,canEditAndDel:e.canEditAndDelGroup,canSelectAll:e.canSelectAllGroups,autoselect:e.autoselect,addChanger:e.addChanger,showPath:e.showGroupsPaths||e.showFolders,addIcon:e.addIcon,client:e.client,service:r.service,onAddGroup:d,onEditGroup:f,onDelGroup:p},null,8,[`groupId`,`group`,`projectId`,`folder`,`groups`,`on`,`canAdd`,`canEditAndDel`,`canSelectAll`,`autoselect`,`addChanger`,`showPath`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0)]))}}),z=e=>({id:null,name:e,listItemProps:{type:`title`,class:`top-projectSelector_item`}}),B={scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1},we=(e,t)=>{let n=[],i={scheduledUpdate:z((0,r.E)().Projects.Scheduled_update),manualUpdate:z((0,r.E)().Projects.Manual_update),guestProjects:z((0,r.E)().Projects.Guest_projects)},a=t?{scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1}:B;for(let t of e)!a.scheduledUpdate&&t.right?.startsWith(`1`)&&t.on>0&&(n.push(i.scheduledUpdate),a.scheduledUpdate=!0),!a.manualUpdate&&t.right?.startsWith(`1`)&&t.on===0&&(n.push(i.manualUpdate),a.manualUpdate=!0),!a.guestProjects&&t.right?.startsWith(`0`)&&t.on>=0&&(n.push(i.guestProjects),a.guestProjects=!0),n.push(t);return n},V=e=>({...e,externalLink:Oe(e.url??``),listItemProps:{class:`top-projectSelector_item`,attrs:{title:e.name}}}),Te=(e,t,n)=>!e||e.length===0?[]:(t&&Object.keys(B).forEach(e=>B[e]=!1),we(e.map(V),n)),Ee=e=>{e=e.replace(/#.*/,``);let t=location.hash;return t=t.replace(/%22historyView%22:[^,]*,/,``),t=t.replace(/%22modelsKeys%22:\[[^\]]*],/,``),t=t.replace(/%22competitorsIds%22:\[[^\]]*],/,``),t=t.replace(/%22searchersKeys%22:\[[^\]]*],/,``),t=t.replace(/%22regionIndex%22:[^,]*,/,``),t=t.replace(/%22regionsIndexes%22:\[[^\]]*],/,``),t=t.replace(/%22folderId%22:[^,]*,/,``),t=t.replace(/%22groupId%22:[^,]*,/,``),t=t.replace(/%22tagsIds%22:\[[^\]]*],/,``),/%22dataSort%22:\{[^}]*0000-00-00[^}]*}/.test(t)||(t=t.replace(/,?%22dataSort%22:\{[^}]*}(,?)/,`$1`)),e+t},De=e=>{location.href=H(e)},H=e=>{let t=U(),n=location.pathname.split(`/`),r=`project/dynamics/`,i=``;n[1]==`project`&&(r=n[1]+`/`+n[2]+`/`),n[2]==`settings`&&(i=location.hash),[`watcher`,`indexing`,`sitemap`,`audit`,`direct`,`adwords`].includes(n[4])&&(i=n[4]+`/`);let a=`https://`+t+`/`+r+e+`/`+i;return a=Ee(a),a},U=()=>window.page?.subdomain?window.location.host.replace(window.page?.subdomain+`.`,``):window.location.host,Oe=e=>{let t=e.startsWith(`http`)?e:`https://`+e;return t=t.replace(/"/g,`%22`),t},ke=(e,t)=>{let n=e.params.filters??[];n=n.filter(e=>e.name!==`GEN_SEARCH_STRING()`);let r=(0,d.invertKeyboardLayout)(t),a=t.replace(/([[^$.|?*+()])/g,`\\$1`),o=r.replace(/([[^$.|?*+()])/g,`\\$1`);t&&n.push((0,i.t)(`GEN_SEARCH_STRING()`,`REGEXP`,[`(${a}|${o})`])),e.changeParams({filters:n})},Ae=e=>{let t=e.gen(`/get/projects_2/projects/`,[`id`,`user_id`,`name`,`url`,`on`,`right`]);return t.changeParams({filters:[(0,i.t)(`on`,`GREATER_THAN_EQUALS`,[0])],orders:[(0,i.n)(`user_id`,`DESC`,[r.O.state.userId]),(0,i.n)(`on`,`ASC`,[0]),(0,i.n)(`favorite`,`DESC`),(0,i.n)(`ord`,`ASC`),(0,i.n)(`id`,`DESC`)]}),t.options.loadingShowSpinner=!1,t.options.onApiLoaded=(e,t,n)=>{let r=t.data.filters.length>1,i=t.data.offset===0,a=t.data.offset===void 0||i&&!r,o=r;e.result=Te(e.result,a,o),n?.(e,t)},t},je=e=>e.gen(`/add/projects_2/projects/`),Me={class:`top-ellipsis1`},Ne=(0,m.defineComponent)({__name:`submenu`,props:{id:{}},setup(e){let t=e,n=(0,r.E)(),i=U(),a=e=>{let t=[{href:`https://${i}/project/keywords/${e.id}/`,title:n.Common.Menu_phrases,icon:``,right:`2`},{href:`https://${i}/project/dynamics/${e.id}/`,title:n.Common.Menu_dynamics,icon:``,right:`1`},{href:`https://${i}/project/snapshots/${e.id}/`,title:n.Common.Menu_snapshots,icon:``,right:`1`},{href:`https://${i}/project/competitors/${e.id}/`,title:n.Common.Menu_competitors,icon:``,right:`1`},{href:`https://${i}/project/ai-tracker/${e.id}/`,title:n.Common.Menu_aiTracker,icon:``,right:`13`},{href:`https://${i}/project/analytics/${e.id}/`,title:n.Common.Menu_analytics,icon:``,right:`5`},{href:`https://${i}/project/broker/${e.id}/`,title:n.Common.Menu_broker,icon:``,right:`6`},{href:`https://${i}/project/audit/${e.id}/sitemap/`,title:n.Audit.Sitemap_gen,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/audit/`,title:n.Common.Menu_audit,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/indexing/`,title:n.Audit.Indexing,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/watcher/`,title:n.Audit.Watcher,icon:``,right:`9`},{href:`https://${i}/project/settings/${e.id}/`,title:n.Common.Menu_settings,icon:``,right:`2`}].filter(e=>!Object.entries(r.O.state.closedByMod).some(([t,n])=>n&&e.href.includes(`/${t}/`)));return e.right.includes(`0`)?t.filter(t=>e.right[t.right]===`1`):t};return(e,n)=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.s),{id:t.id,class:`top-projectSelectorSubmenu`,notch:!1,pos:`2`},{contentList:(0,m.withCtx)(({data:t})=>[t?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(a(t.projectItem),t=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.o),{href:t.href,title:t.title,"data-top-icon":t.icon,"data-right":t.right},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.$core.state.isMobile?t.title:``),1)]),_:2},1032,[`href`,`title`,`data-top-icon`,`data-right`]))),256)),(0,m.createVNode)((0,m.unref)(f.o),{href:t.projectItem.externalLink,title:t.projectItem.externalLink,class:`top-ellipsis`,"data-top-icon":``,target:`_blank`},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,Me,(0,m.toDisplayString)(e.$core.state.isMobile?t.projectItem.externalLink:``),1)]),_:2},1032,[`href`,`title`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`id`]))}}),Pe=1440*60*1e3,W=(0,m.ref)(null),G=(0,m.shallowRef)(),K=e=>{localStorage.setItem(`ui_project_selector_total:`+r.O.state.userId,JSON.stringify({projectsTotal:e,expiresAt:Date.now()+Pe}))},Fe=()=>{let e=localStorage.getItem(`ui_project_selector_total:`+r.O.state.userId);if(!e)return;let{projectsTotal:t,expiresAt:n}=JSON.parse(e);if(Date.now()>n){localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId);return}return t},Ie=()=>{W.value=null,G.value=void 0,localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId),(0,p.d)(`/get/projects_2/projects/`)},Le={class:`top-projectSelector_itemText`},Re={class:`top-comment`},ze={key:0,class:`top-comment`},Be=[`href`],q=1e3,Ve=(0,m.defineComponent)({__name:`projectSelector`,props:(0,m.mergeModels)({modelValue:{},client:{},menuMode:{type:Boolean},excludeProjectId:{},openerShortcut:{},modificator:{},placeholder:{},buttonProps:{default:()=>({color:`theme`,styling:`outline`})}},{modelValue:{default:()=>({id:null,name:``})},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=(0,r.E)(),n=e,i=(0,m.useModel)(e,`modelValue`),a=Ae(n.client),o=je(n.client),s=(0,m.ref)(Fe()),u=(0,m.ref)(null),d=(0,m.useId)(),h=(0,m.computed)(()=>n.placeholder??t.Projects.Select_project),g=(0,m.computed)(()=>!G.value||!n.excludeProjectId?G.value:G.value.filter(e=>e.id!==n.excludeProjectId)),_=(0,m.computed)(()=>{if(!(!s.value&&s.value!==0))return s.value<q?`static`:`api`}),v=async()=>{W.value||=a.call();let e=await W.value;return W.value=null,e},y=async e=>{let t=await o.changeParams({url:e.name,name:e.name}).call();if(!t.errors){if(G.value&&_.value===`static`){let n=V({id:t.result,user_id:r.O.state.userId,name:e.name,url:e.name,on:0,right:`11111111111111111111`}),i=G.value.findIndex(e=>e.on===0);G.value=[...G.value.slice(0,i),n,...G.value.slice(i)],s.value&&(s.value+=1,K(s.value))}_.value===`api`&&u.value?.resetCache(!0)}},b=async()=>{if(G.value||_.value===`api`)return;let e=await v();e.errors||(G.value=e.result)},x=async()=>{if(s.value){let e=u.value?.popupOpenerRef?.$el;e&&e.addEventListener(`pointerenter`,()=>b(),{once:!0})}else{a.changeParams({limit:q});let e=await v();if(e.errors)return;delete a.params.limit,s.value=e.total??void 0,!G.value&&_.value!==`api`&&(G.value=e.result),s.value&&K(s.value)}};return(0,m.onMounted)(async()=>{await x()}),(t,n)=>{let r=(0,m.resolveComponent)(`TopButton`);return(0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[((0,m.openBlock)(),(0,m.createBlock)(p.s,{key:_.value??`dummy`,ref_key:`refSelector`,ref:u,class:`top-projectSelector`,modelValue:i.value,"onUpdate:modelValue":n[1]||=t=>e.menuMode?(0,m.unref)(De)(t.id):i.value=t,items:g.value,itemsChunkSize:100,itemsIsLoading:_.value===`static`&&(0,m.unref)(G)===void 0,title:t.$i18n.Projects.Search_projects,modificator:e.modificator,searchFields:[`id`,`name`,`url`],placeholder:h.value,hasCloserBtn:``,api:_.value===`api`?(0,m.unref)(a):void 0,apiSetSearchParams:_.value===`api`?(...e)=>(0,m.unref)(ke)(...e):void 0,useCache:``,appendSearchToResult:``,appendSearchAllowDuplicate:``,appendSearchToResultCond:(0,m.unref)(c.validUrl),appendWithoutSelect:``,buttonProps:{...e.buttonProps,isProgress:!_.value,disabled:!_.value},openerShortcut:e.openerShortcut,onAppendItem:y,onOpen:b},{item:(0,m.withCtx)(({item:i})=>[(0,m.createElementVNode)(`div`,Le,[i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createTextVNode)((0,m.toDisplayString)((0,m.unref)(l.ellipsis)(i.name,20))+` `,1),(0,m.createElementVNode)(`span`,Re,` id `+(0,m.toDisplayString)(i.id),1)],64)):((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:1},[i.listItemProps?.type?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createElementBlock)(`div`,ze,(0,m.toDisplayString)(t.$i18n.Projects.Add_project)+`: `,1)),(0,m.createTextVNode)(` `+(0,m.toDisplayString)(i.name),1)],64))]),i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[e.menuMode?((0,m.openBlock)(),(0,m.createElementBlock)(`a`,{key:0,class:`top-projectSelector_itemLink`,href:(0,m.unref)(H)(i.id)},null,8,Be)):(0,m.createCommentVNode)(``,!0),t.$core.state.isMobile?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createBlock)(r,{key:1,href:i.externalLink,"data-top-icon":``,color:`theme`,target:`_blank`,onClick:n[0]||=(0,m.withModifiers)(()=>{},[`stop`])},null,8,[`href`])),(0,m.createVNode)(f.c,{id:(0,m.unref)(d),pos:`2`,notch:!1,data:{projectItem:i}},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(r,{class:`top-popup_listMore`,"data-top-icon":``,color:`theme`})]),_:1},8,[`id`,`data`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`modelValue`,`items`,`itemsIsLoading`,`title`,`modificator`,`placeholder`,`api`,`apiSetSearchParams`,`appendSearchToResultCond`,`buttonProps`,`openerShortcut`])),(0,m.createVNode)(Ne,{id:(0,m.unref)(d)},null,8,[`id`])],64)}}}),J=e=>`-`+e,Y=e=>e[0]===`-`?e.substring(1):e,X=(e,t)=>{e=Y(e);let n=t.find(t=>t.id===e);if(n)return n},He=(e,t,n)=>{t||={id:e.id},t.id=e.id,t.pos??=`3`,t.notch??=!0,t.posBy??=`fixed`;let r=o.t.genElPopupOpener(`div`,t);return r.classList.add(`top-tagSelector`),e.useTopButton&&r.classList.add(`top-tagSelector-useTopButton`,`top-button`,`top-color_theme`,`top-as-selector`),e.useTopButton||r.classList.add(`top-tagSelector-custom`),e.mode===`filter`&&r.classList.add(`top-tagSelector-filter`),e.mode===`setter`&&!e.filters&&r.classList.add(`top-tagSelector-setter_single`),e.mode===`setter`&&e.filters&&r.classList.add(`top-tagSelector-setter_several`),r.onclick=t=>{t.preventDefault(),t.stopPropagation(),r.onclick=null;let i=(0,m.ref)(e.modelValue),o={model:i,mode:e.mode,targetId:e.targetId,filters:e.filters,payload:e.payload};(0,a.storage)(r,`topTagSelectorTarget`,o),delete r.dataset.topPopupDisabled,(0,m.isRef)(e.modelValue)||(0,m.watch)(i,()=>{e.modelValue=i.value,Z(r,e,n)}),r.click()},(0,m.isRef)(e.modelValue)?(0,m.watch)(e.modelValue,()=>Z(r,e,n)):(0,a.storage)(r,`topTagSelectorRender`,t=>{e.modelValue=t;let i=(0,a.storage)(r,`topTagSelectorTarget`);i&&(i.model.value=t),Z(r,e,n)}),Z(r,e,n),r},Ue=(e,t)=>{(0,a.storage)(e,`topTagSelectorRender`)?.(t)},Z=(e,t,n)=>{let i=(0,m.unref)(t.modelValue);if(e.classList.toggle(`top-tagSelector-selectedOne`,!i.length||i.length===1),e.classList.toggle(`top-tagSelector-toTwoLine`,i.length>5),t.mode===`setter`&&t.filters){e.innerHTML=`<div>${n}</div>`;return}if(e.innerHTML=``,!i.length&&t.mode===`filter`){let t=We({id:`all`,colorId:``,name:(0,r.E)().Common?.All_tags??``,state:``});e.append(t)}i.forEach(n=>{let r=We({id:Y(n),colorId:X(n,t.tags)?.color_id??``,name:X(n,t.tags)?.name??``,state:Y(n)===n?`selected`:`excluded`});e.append(r)})},We=e=>{let t=document.createElement(`div`);return t.classList.add(`top-tagSelector_tagIcon`),t.classList.toggle(`top-tagSelector-active`,!!e.state),t.classList.toggle(`top-tagSelector-excluded`,e.state===`excluded`),t.dataset.tag_id=e.id,t.dataset.tag_color_id=e.colorId,t.title=e.name,t},Ge=[{id:`1`,name:`Without Tag`,color_id:`1`},{id:`2`,name:`Red`,color_id:`2`},{id:`3`,name:`Orange`,color_id:`3`},{id:`4`,name:`Yellow`,color_id:`4`},{id:`5`,name:`Blue`,color_id:`5`},{id:`6`,name:`Purple`,color_id:`6`},{id:`7`,name:`Green`,color_id:`7`},{id:`8`,name:`Magenta`,color_id:`8`},{id:`9`,name:`Dark blue`,color_id:`9`},{id:`10`,name:`Turquoise`,color_id:`10`}],Ke=[`data-tag_id`,`data-tag_color_id`,`title`],Q=(0,m.defineComponent)({__name:`tagIcon`,props:{id:{},colorId:{},name:{},state:{}},setup(e){return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),"data-tag_id":e.id,"data-tag_color_id":e.colorId,title:e.name},null,10,Ke))}}),qe=[`contenteditable`,`onKeydown`],Je=(0,m.defineComponent)({__name:`tagPopupListItem`,props:(0,m.mergeModels)({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:(0,m.mergeModels)([`update:name`,`unselect`,`exclude`,`select`],[`update:name`]),setup(e,{emit:t}){let n=e,r=t,i=(0,m.useModel)(e,`name`),a=(0,m.ref)(null),o=(0,m.computed)(()=>navigator.userAgent.indexOf(`Firefox`)==-1?{}:{contenteditable:s.value,onpaste:e=>e.preventDefault()}),s=(0,m.ref)(!1),c=async()=>{s.value=!0,await(0,m.nextTick)(),a.value?.focus()},l=()=>{let e=a.value?.innerText;if(!e)return u();a.value&&(a.value.innerText=e),s.value=!1,r(`update:name`,e)},u=async()=>{a.value&&(a.value.innerText=n.name),s.value=!1},d=e=>{if(s.value||n.disabled)return;let t=`selected`;n.canExclude&&(e.ctrlKey||e.metaKey)&&(t=`excluded`),n.state==t&&(t=``),t===``&&r(`unselect`),t===`selected`&&r(`select`),t===`excluded`&&r(`exclude`)};return(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":e.disabled,"top-tagSelector_tagListItem-canExclude":e.canExclude,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),onClick:(0,m.withModifiers)(d,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(Q,{id:e.id,name:i.value,colorId:e.colorId,state:e.state},null,8,[`id`,`name`,`colorId`,`state`]),(0,m.createElementVNode)(`span`,(0,m.mergeProps)({ref_key:`elName`,ref:a,class:`top-tagSelector_tagListItemName`,contenteditable:s.value?`plaintext-only`:!1},o.value,{onKeydown:[(0,m.withKeys)((0,m.withModifiers)(l,[`stop`]),[`enter`]),(0,m.withKeys)((0,m.withModifiers)(u,[`stop`]),[`esc`])]}),(0,m.toDisplayString)(i.value),17,qe),e.editable?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[s.value?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:(0,m.withModifiers)(l,[`stop`])})):((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:0,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:c}))],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`class`]))}}),Ye={key:1},Xe=(0,m.defineComponent)({inheritAttrs:!1,__name:`popupOpener`,props:(0,m.mergeModels)({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,m.useModel)(e,`modelValue`),i=t.useTopButton?r.h:`div`,a=t.useTopButton?`html`:`default`,o={model:n,mode:t.mode,targetId:t.targetId,filters:t.filters,payload:t.payload};return(r,s)=>{let c=(0,m.resolveDirective)(`top-data`);return(0,m.openBlock)(),(0,m.createBlock)(f.c,{id:e.id},{default:(0,m.withCtx)(()=>[(0,m.withDirectives)(((0,m.openBlock)(),(0,m.createBlock)((0,m.resolveDynamicComponent)((0,m.unref)(i)),(0,m.mergeProps)({class:{"top-tagSelector":!0,"top-tagSelector-useTopButton":t.useTopButton,"top-tagSelector-custom":!t.useTopButton,"top-as-selector":t.useTopButton,"top-tagSelector-filter":t.mode===`filter`,"top-tagSelector-setter_single":t.mode===`setter`&&!e.filters,"top-tagSelector-setter_several":t.mode===`setter`&&e.filters,"top-tagSelector-selectedOne":!n.value.length||n.value.length===1,"top-tagSelector-toTwoLine":n.value.length>5},color:`theme`,styling:e.styling},r.$attrs),{[(0,m.unref)(a)]:(0,m.withCtx)(()=>[!n.value.length&&e.mode===`filter`?((0,m.openBlock)(),(0,m.createBlock)(Q,{key:0,id:`all`,colorId:``,name:r.$i18n.Common.All_tags??``,state:``},null,8,[`name`])):(0,m.createCommentVNode)(``,!0),e.mode===`setter`&&e.filters?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Ye,[(0,m.renderSlot)(r.$slots,`default`)])):((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,{key:2},(0,m.renderList)(n.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Q,{id:(0,m.unref)(Y)(t),colorId:(0,m.unref)(X)(t,e.tags)?.color_id??``,name:(0,m.unref)(X)(t,e.tags)?.name??``,state:(0,m.unref)(Y)(t)===t?`selected`:`excluded`},null,8,[`id`,`colorId`,`name`,`state`]))),256))]),_:2},1040,[`class`,`styling`])),[[c,o,`topTagSelectorTarget`]])]),_:3},8,[`id`])}}}),Ze=(0,m.defineComponent)({__name:`tagSelector`,props:(0,m.mergeModels)({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},useTopButton:{type:Boolean,default:!0},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:(0,m.reactive)(Ge)},tagsModifiers:{}}),emits:(0,m.mergeModels)([`selector`,`setter`,`tagsChanged`],[`update:modelValue`,`update:tags`]),setup(e,{emit:t}){let n=(0,r.E)(),i=e,o=(0,m.useModel)(e,`modelValue`),s=(0,m.useModel)(e,`tags`),c=t,l=(0,r.P)((e,t)=>{c(e,t)},i.emitDelay);i.singleMode&&!o.value.length&&(o.value=[s.value[0].id]);let u=i.id??`top-popup-id-`+Math.random(),d=(0,m.ref)(`add`),p=()=>{let e=` `+n.Common.Tags?.toLowerCase(),t=new Map;return t.set(`add`,{value:`add`,title:n.Common.Add+e}),t.set(`replace`,{value:`replace`,title:n.Common.Replace+e}),t.set(`delete`,{value:`delete`,title:n.Common.Delete+e}),t},h=(0,m.shallowRef)({model:o,mode:`filter`,targetId:void 0,filters:void 0,payload:void 0});(0,m.watch)(o,()=>{l(`selector`,o.value)});let g=(0,m.computed)(()=>{if(h.value.mode===`setter`&&i.maxTagsForSetter&&!h.value.filters)return h.value.model.value.length>=i.maxTagsForSetter}),_=e=>{if(e!==`all`){if(h.value.model.value.includes(e))return`selected`;if(h.value.model.value.includes(J(e)))return`excluded`}return e===`all`&&!h.value.model.value.length?`selected`:``},v=(e,t)=>{let n=J(e),r=h.value.model.value.filter(t=>t!==e&&t!==n);t===`select`&&r.push(e),t===`exclude`&&r.push(n),h.value.mode===`setter`&&h.value.targetId!==void 0&&i.requiredForSetter&&(r.length||r.push(`1`),r.length===2&&h.value.model.value.length===1&&h.value.model.value[0]===`1`&&(r=r.filter(e=>e!==`1`))),i.singleMode&&!h.value.filters&&(r.length||(r=h.value.model.value),r.length>1&&(r=[r[r.length-1]])),r.sort((e,t)=>i.tags?i.tags.findIndex(t=>t.id===e)-i.tags.findIndex(e=>e.id===t):0),h.value.model.value=r,h.value.mode===`setter`&&h.value.targetId!==void 0&&l(`setter`,{tagsIds:r,targetId:h.value.targetId,payload:h.value.payload})},y=(0,m.computed)(()=>{let e=`top-tagSelector_popup`;return h.value.mode===`filter`&&(e+=` top-tagSelector_popup-filter`),h.value.mode===`setter`&&(e+=` top-tagSelector_popup-setter`),e}),b=()=>{let e=prompt(``,`New tag`);if(!e||e===`New tag`)return;let t=s.value.length+1;s.value.push({id:String(t),name:e,color_id:String((t-1)%10+1)}),c(`tagsChanged`,s.value)},x=e=>{if(h.value=(0,a.storage)(e.elPopupOpener,`topTagSelectorTarget`),!h.value)throw Error(`Open popup TopTagSelector required v-data:topTagSelectorTarget`);if(h.value.filters&&(d.value=`add`,h.value.model.value=[]),!r.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}!r.O.state.isMobile&&!r.O.state.isMobileUA&&s.value&&$(e.elPopup).sortable({items:`li:has([data-tag_id]:not([data-tag_id="all"]))`,cancel:`[contenteditable="plaintext-only"], [contenteditable="true"]`,distance:10,stop:function(e,t){if(!s.value)return;let n=$(t.item).parent().find(`[data-tag_id]`),r=[];n.each((e,t)=>{if(!s.value)return;let n=$(t).attr(`data-tag_id`);r.push(n)}),s.value.sort((e,t)=>r.findIndex(t=>t===e.id)-r.findIndex(e=>e===t.id)),l(`tagsChanged`,s.value)}})},S=e=>{r.O.$?.ui.sortable&&$(e.elPopup).data(`ui-sortable`)&&$(e.elPopup).sortable(`destroy`)};return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[(0,m.createVNode)(Xe,{modelValue:o.value,"onUpdate:modelValue":n[0]||=e=>o.value=e,id:(0,m.unref)(u),tags:s.value,styling:e.styling,mode:`filter`,useTopButton:e.useTopButton},null,8,[`modelValue`,`id`,`tags`,`styling`,`useTopButton`]),(0,m.createVNode)(f.s,{id:(0,m.unref)(u),class:(0,m.normalizeClass)(y.value),onOpen:n[4]||=e=>x(e),onClose:n[5]||=e=>S(e),"transition-duration":50},(0,m.createSlots)({contentList:(0,m.withCtx)(()=>[h.value.mode===`filter`&&!e.singleMode?((0,m.openBlock)(),(0,m.createBlock)(Je,{key:0,id:`all`,colorId:``,name:t.$i18n.Common.All_tags??``,state:h.value.model.value.length?``:`selected`,onSelect:n[3]||=e=>h.value.model.value=[]},null,8,[`name`,`state`])):(0,m.createCommentVNode)(``,!0),((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(s.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Je,{key:t.id,id:t.id,colorId:t.color_id,name:t.name,state:_(t.id),canExclude:h.value.mode===`filter`&&!e.singleMode,editable:e.tagsEditable,disabled:g.value&&_(t.id)===``,onUnselect:e=>v(t.id,`unselect`),onSelect:e=>v(t.id,`select`),onExclude:e=>v(t.id,`exclude`),"onUpdate:name":e=>{t.name=e,(0,m.unref)(l)(`tagsChanged`,s.value)}},null,8,[`id`,`colorId`,`name`,`state`,`canExclude`,`editable`,`disabled`,`onUnselect`,`onSelect`,`onExclude`,`onUpdate:name`]))),128)),e.tagsEditable&&s.value.length<e.tagsMax&&s.value.length<20?((0,m.openBlock)(),(0,m.createBlock)(f.o,{key:1,"data-top-icon":``,onClick:(0,m.withModifiers)(b,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Add),1)]),_:1})):(0,m.createCommentVNode)(``,!0)]),_:2},[h.value.mode===`setter`&&h.value.filters?{name:`header`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.n,{modelValue:d.value,"onUpdate:modelValue":n[1]||=e=>d.value=e,options:p()},null,8,[`modelValue`,`options`])]),key:`0`}:void 0,h.value.mode===`setter`&&h.value.filters?{name:`footer`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{color:`theme`},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Cancel),1)]),_:1}),(0,m.createVNode)(r.h,{onClick:n[2]||=e=>(0,m.unref)(l)(`setter`,{tagsIds:h.value.model.value,filters:h.value.filters,filtersAction:d.value,payload:h.value.payload})},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(d.value===`add`?t.$i18n.Common.Add:``)+` `+(0,m.toDisplayString)(d.value===`replace`?t.$i18n.Common.Replace:``)+` `+(0,m.toDisplayString)(d.value===`delete`?t.$i18n.Common.Delete:``),1)]),_:1})]),key:`1`}:void 0]),1032,[`id`,`class`])],64))}});t.TopGroupSelector=Ce,t.topProjectSelectorClearCache=Ie,t.TopProjectSelector=Ve,t.genElTopTagSelectorPopupOpener=He,t.renderElTopTagSelectorPopupOpener=Ue,t.TopTagSelectorTagIcon=Q,t.TopTagSelectorPopupOpener=Xe,t.TopTagSelector=Ze});
1
+ var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`../.chunks/forms-LywqKN9I.amd`,`../.chunks/field-DEusYVqS.amd`,`../utils/dom.amd`,`../.chunks/worker-a6MSM1uV.amd`,`../.chunks/utils-CZnFOkS6.amd`,`../utils/check.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`../utils/keyboard.amd`,`../.chunks/popup-BWD4eASc.amd`,`../.chunks/formsExt-D16-9Jor.amd`,`vue`,`../.chunks/api-Dy2x6A8L.amd`,`../.chunks/app-CyODeY0D.amd`,`../require/css.amd!../assets/project.css`],function(e,t,r,i,a,o,s,c,l,u,d,f,p,m){"use strict";if(h===void 0)var h=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.useItemsFromCompetitors=t.topProjectSelectorClearCache=t.renderElTopTagSelectorPopupOpener=t.genSearcherByKey=t.genElTopTagSelectorPopupOpener=t.findRegion=t.dialogRegionSelector=t.TopTagSelectorTagIcon=t.TopTagSelectorPopupOpener=t.TopTagSelector=t.TopRegionSelector=t.TopProjectSelector=t.TopGroupSelector=t.TopCompetitorSelector=void 0;var g={class:`top-competitorSelector`},_={class:`top-ellipsis1`},v=(0,m.defineComponent)({__name:`competitorSelector`,props:(0,m.mergeModels)({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0},selectAllItemIcon:{default:``}},{modelValue:{},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,m.useModel)(e,`modelValue`),i=(0,m.computed)(()=>{if(t.showSelectAllItem)return{icon:t.selectAllItemIcon,title:(0,r.E)().Common.Select_all,value:`all`,content:``}});return(t,a)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,g,[(0,m.unref)(r.O).state.isMobile?((0,m.openBlock)(),(0,m.createBlock)(f.s,{key:0},{opener:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{class:`top-competitorSelector_opener`,color:`theme`,icon:``,icon2:``},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.items.find(e=>e.value===n.value?.[0])?.content),1)]),_:1})]),contentList:(0,m.withCtx)(()=>[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(e.items,e=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-active":n.value?.includes(e.value)}),"data-top-icon":e.icon,title:e.title,onClick:()=>n.value=[e.value]},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,_,(0,m.toDisplayString)(e.content),1)]),_:2},1032,[`class`,`data-top-icon`,`title`,`onClick`]))),256))]),_:1})):((0,m.openBlock)(),(0,m.createBlock)(p.f,{key:1,modelValue:n.value,"onUpdate:modelValue":a[0]||=e=>n.value=e,items:e.items,isMultiple:!0,styling:`bar`,canBeEmptyMultiple:!1,selectAllItem:i.value},null,8,[`modelValue`,`items`,`selectAllItem`]))]))}}),y=(e,t)=>(0,m.computed)(()=>(0,m.toValue)(e).filter(e=>e.on>=0||e.id===t).map(e=>({value:e.id,title:e.url+` [${e.id}]`,icon:e.id===(0,m.toValue)(t)?``:``,content:e.name}))),b={0:`Yandex`,1:`Google`,4:`YouTube`,5:`Bing`,7:`Seznam`,8:`AppStore`,9:`GoogleStore`,20:`Yandex.com`,21:`Yandex.com.tr`,22:`YandexLive`},x={key:-2,name:`--`,index:-2},S={key:-2,name:`--`,regions:[x],regionByIndex:new Map([[-2,x]])},C={key:-2,name:`Autoselect`,index:-2},w={key:-2,name:`Autoselect`,regions:[C],regionByIndex:new Map([[-2,C]])},T={countryCode:`00`,depth:1,device:0,key:-1,index:-1,lang:`ru`,name:`Without region`},ee=()=>(C.name=(0,r.E)().Common.Autoselect,C),te=()=>(ee(),w.name=(0,r.E)().Common.Autoselect,console.log(w),w),ne=()=>(T.name=(0,r.E)().Keywords.Without_region,T),E=(e=``,t=!1,n=[])=>{let r;return r=e?re(n,e):D(n),t&&r.set(-2,te()),r.size||r.set(-2,S),r},D=(e,t=!0,n=[],r=``)=>{let i=new Map;return e.forEach(e=>{if(r!==`project_relevant_url`&&!e.enabled||r&&typeof e.key==`number`&&e.key>1)return;let a={...e};a.regionByIndex=new Map,e.regions&&e.regions.forEach(e=>{if(t&&!e.enabled)return;let n={...e};a.regionByIndex.set(n.index,n)}),!a.regionByIndex.size&&n.length,(!e.regions||a.regionByIndex.size||n.length)&&i.set(a.key,a)}),n.forEach(e=>{if(i.has(e))return;let t={key:e,name:b[e],regions:[],regionByIndex:new Map};i.set(t.key,t)}),i},re=(e,t)=>{let n=D(e,!1,r.O.state.forceSearchersKeysForKeywordsStats,t);if(n.has(2)){let e=n.get(2);e&&(e.regionByIndex=new Map)}return(t===`volume`||t===`cost_forecast`)&&r.O.state.showGlobalRegionForKeywordsStats&&n.forEach(e=>{if(!e.regionByIndex)return;let t={...ne()};e.regionByIndex.set(t.index,t)}),n},O=(e,t,n=[])=>{let r=E(e,!1,n),i;return r.forEach(n=>{if((t.searcher_key===void 0||t.searcher_key==n.key)&&n.regions&&(n.regions.forEach(r=>{if(!i&&(t.key===void 0||t.key==r.key)&&(t.index===void 0||t.index==r.index)&&!(!e&&(t.lang!==void 0&&t.lang!=r.lang||t.device!==void 0&&t.device!=r.device)))return r.searcher_key=n.key,i=r,!1}),i))return!1}),i},k=(0,s.t)(()=>new Promise((t,n)=>{e([`../.chunks/dialog_regionSelectorRegions-zJShjr2f.amd`],t,n)}).then(__importStar)),ie=(e,t)=>{let n=(0,r.E)();return{searcherKey:(0,m.ref)(t.value.keys().next().value??-2),optionBySearcherKey:(0,m.computed)(()=>{let r=new Map;if(t.value.forEach(t=>{let n={value:t.key,title:t.name};e.addSearcherIcon&&(n.icon=(0,u.getSearcherGIcon)(t.key)),r.set(t.key,n)}),e.addCompare&&!r.has(-2)){let e={value:``,title:`--------------------`,disabled:!0};r.set(e.value,e);let t={value:-1,title:n.Common.Compare};r.set(t.value,t)}return r})}},ae=(e,t)=>{let n=(0,r.E)(),i=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),a=(0,m.ref)(-2);e.modelValue.length===1&&(a.value=e.modelValue[0]),a.value===-2&&(a.value=i.value?t.value?.regionByIndex.values().next().value?.key??-2:t.value?.regionByIndex.keys().next().value??-2);let o=(0,m.computed)(()=>{let e=new Map;return t.value.regionByIndex?.forEach(r=>{let a=r.name;if(i.value){let t={value:r.key,title:a};e.has(r.key)||e.set(r.key,t);return}r.device&&(a+=` (`+n.Common[`Device_`+r.device]+`)`);let o=(0,u.getLangLabel)(t.value.key||0,r.lang??``);o&&(a+=` / `+o);let s={value:r.index,title:a,icon:r.device?(0,u.getDeviceGIcon)(r.device):void 0};e.set(r.index,s)}),e});return(0,m.watch)(o,(t,r)=>{if(e.onlySearcher||a.value!==void 0&&t.get(a.value))return;let i=t.keys().next().value;if(a.value===-2||i===-2){a.value=i;return}let o=r?.get(a.value)?.title||``,s=-1;for(let[e,r]of t.entries()){let t=r.title;if(typeof t!=`string`||typeof e==`string`)break;if(t===o){i=e;break}let a=RegExp(` \\((${n.Common.Device_1}|${n.Common.Device_2})\\)`),c=o,l=3;t.indexOf(c)===-1&&(c=o.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),l--),t.indexOf(c)===-1&&(c=o.replace(/ \/.*/,``),c=c.replace(/^[^a-zа-я]/i,``).replace(a,``),l--),t.indexOf(c)!==-1&&(l<=s||(s=l,i=e))}a.value=i}),{regionIndex:a,optionByRegionIndex:o}},oe=(e,t,n)=>{let r=(0,m.ref)([]),i=()=>{if(e.onlySearcher&&t.value){r.value=Array.from(t.value.keys());return}let i=[];if(e.modelValue.length>1)i=[...e.modelValue];else try{i=JSON.parse(localStorage.getItem(`ui:project:regionSelector`+e.projectId+`:regionsIndexes`))??[]}catch{}i.length&&(i=i.filter(e=>n.value.has(e))),i.length||(i=Array.from(n.value)),r.value=[...i]},a=()=>{r.value.length?localStorage.setItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`,JSON.stringify(r.value)):localStorage.removeItem(`ui:project:regionSelector:`+e.projectId+`:regionsIndexes`)};return(0,m.watch)(r,()=>{a()}),e.addCompare&&i(),{regionsIndexes:r}},se=e=>{let t=(0,m.computed)(()=>e.forMode===`volume`||e.forMode===`cost_forecast`),n=(0,m.computed)(()=>E(e.forMode,e.autoRegion,e.searchers)),r=(0,m.computed)(()=>n.value.get(a.searcherKey.value)||S),i=(0,m.computed)(()=>{let e=new Set;return n.value.forEach(t=>{t.regionByIndex.forEach(t=>{t.index!==-1&&t.index!==-2&&e.add(t.index)})}),e}),a=ie(e,n),o=ae(e,r),s=oe(e,n,i);(0,m.watch)(n,()=>{if(e.onlySearcher?s.regionsIndexes.value=Array.from(n.value.keys()):s.regionsIndexes.value=s.regionsIndexes.value.filter(e=>i.value.has(e)),a.searcherKey.value===-1)return;let t=n.value.keys().next().value;n.value.forEach(r=>{if(e.onlySearcher&&r.key===a.searcherKey.value){t=a.searcherKey.value;return}if(o.regionIndex.value&&r.regionByIndex?.has(o.regionIndex.value)&&(t=r.key),!e.onlySearcher){let e;t!==void 0&&(e=n.value.get(t)?.regionByIndex);let i=n.value.get(r.key)?.regionByIndex;e?.has(-2)&&!i?.has(-2)&&(t=r.key)}}),t!==void 0&&(a.searcherKey.value=t),o.regionIndex.value!==void 0&&!(r.value?.regionByIndex)?.has(o.regionIndex.value)&&(o.regionIndex.value=r.value?.regions?.keys().next().value)},{immediate:!0});let c=()=>{if(a.searcherKey.value!==-1&&a.searcherKey.value!==-2)return a.searcherKey.value},l=()=>{if(e.onlySearcher||o.regionIndex.value===-2)return;let n=o.regionIndex.value;if(t.value&&e.forMode){let t=o.regionIndex.value;n=O(e.forMode,{searcher_key:c(),key:t},e.searchers)?.index}return n},u=()=>{let e=c();if(e!==void 0)return n.value.get(e)};return{selectSearcher:a,selectRegion:o,compare:s,searcherByKey:n,allRegionsIndexes:i,getSearcher:u,getRegion:()=>{let e=l();if(e!==void 0)return u()?.regionByIndex?.get(e)}}},ce=(0,m.defineComponent)({__name:`regionSelector`,props:(0,m.mergeModels)({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forMode:{},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(e,{expose:t}){let n=e,i=(0,m.computed)(()=>n.forMode===`volume`||n.forMode===`cost_forecast`),a=(0,m.useModel)(e,`modelValue`),o=(0,m.useModel)(e,`modelValueSingle`),{selectSearcher:s,selectRegion:c,compare:l,searcherByKey:u,allRegionsIndexes:d,getSearcher:f,getRegion:p}=se(n),h=()=>{let e=[];u.value.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.regions.forEach(t=>{n.forMode!==`project_relevant_url`&&!t.enabled||t.index!==-1&&e.push(t)})}),k.open(`regions`,{regions:e,regionsIndexes:l.regionsIndexes.value,"@update:regionsIndexes":e=>l.regionsIndexes.value=e})};return(0,m.watch)([c.regionIndex,s.searcherKey,l.regionsIndexes],()=>{if(s.searcherKey.value===-1&&l.regionsIndexes.value.length){if(JSON.stringify(a.value)===JSON.stringify(l.regionsIndexes.value))return;a.value=[...l.regionsIndexes.value]}else n.onlySearcher?(a.value=[s.searcherKey.value],s.searcherKey.value===-2&&!n.autoRegion&&(a.value.length=0)):(a.value=[c.regionIndex.value],c.regionIndex.value===-2&&!n.autoRegion&&(a.value.length=0));!n.onlySearcher&&!d.value.size&&(s.searcherKey.value=-2)}),o.value&&(0,m.watch)(o,()=>{o.value&&(a.value=[o.value])},{immediate:!0}),(0,m.watch)(a,()=>{if(a.value[0]&&(o.value=a.value[0]),n.onlySearcher){if(!a.value.length||a.value.length===1&&!u.value.has(a.value[0])||a.value.length===1&&a.value[0]===-2&&!n.autoRegion){let e=u.value.keys().next().value;e===-2&&!n.autoRegion&&(e=void 0,o.value=-2),e===void 0?a.value.length=0:a.value=[e];return}if(a.value.length>1&&JSON.stringify(a.value)!==JSON.stringify(l.regionsIndexes.value)){a.value=[...l.regionsIndexes.value];return}}else{let e=[...new Set(a.value)],t=u.value.values().next().value?.regionByIndex?.keys().next().value;if(i.value&&(t=u.value.values().next().value?.regionByIndex?.values().next().value?.key),t===-2&&!n.autoRegion&&(t=void 0,o.value=-2),!e.length)t!==void 0&&e.push(t);else if(e.length===1){let n=d.value;i.value&&(n=new Set,u.value.forEach(e=>{e.regionByIndex.forEach(e=>{e.index!==-1&&e.index!==-2&&n.add(e.key)})})),n.has(e[0])||(e=[],t!==void 0&&e.push(t))}else e=e.filter(e=>d.value.has(e)),!e.length&&t!==void 0&&e.push(t);if(JSON.stringify(a.value)!==JSON.stringify(e)){a.value=e;return}}if(a.value.length!==1||a.value[0]!==(n.onlySearcher?s.searcherKey.value:c.regionIndex.value))if(n.onlySearcher){if(a.value.length===1){s.searcherKey.value=a.value[0];return}s.searcherKey.value=-1;return}else{if(!a.value.length)return;if(a.value.length===1&&s.searcherKey.value!==-1){c.regionIndex.value=a.value[0];let e;for(let t of u.value.values()){for(let n of t.regionByIndex.values())if((i.value?n.key:n.index)===c.regionIndex.value){e=t.key;break}if(e!==void 0)break}e!==void 0&&(s.searcherKey.value=e)}else s.searcherKey.value=-1,l.regionsIndexes.value=[...a.value]}},{immediate:!0}),t({getSearcher:f,getRegion:p}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-regionSelector":!0,"top-regionSelector-onlySearcher":e.onlySearcher})},[(0,m.createVNode)(r.n,{options:(0,m.unref)(s).optionBySearcherKey.value,modelValue:(0,m.unref)(s).searcherKey.value,"onUpdate:modelValue":n[0]||=e=>(0,m.unref)(s).searcherKey.value=e,name:`searcher_key`,addChanger:e.addChanger},null,8,[`options`,`modelValue`,`addChanger`]),!e.onlySearcher&&(0,m.unref)(s).searcherKey.value!==(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.n,{key:0,class:`top-select-region`,options:(0,m.unref)(c).optionByRegionIndex.value,modelValue:(0,m.unref)(c).regionIndex.value,"onUpdate:modelValue":n[1]||=e=>(0,m.unref)(c).regionIndex.value=e,name:i.value?`region_key`:`region_index`,addChanger:e.addChanger,"data-top-icon":e.addRegionIcon?``:void 0},null,8,[`options`,`modelValue`,`name`,`addChanger`,`data-top-icon`])):(0,m.createCommentVNode)(``,!0),e.addCompare&&!e.onlySearcher&&(0,m.unref)(s).searcherKey.value===(0,m.unref)(-1)?((0,m.openBlock)(),(0,m.createBlock)(r.h,{key:1,name:`compare`,onClick:h,"data-count-compare-regions-indexes":(0,m.unref)(l).regionsIndexes.value.length},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Selected_regions),1)]),_:1},8,[`data-count-compare-regions-indexes`])):(0,m.createCommentVNode)(``,!0)],2))}}),A={id:0,name:`/`,path:`/`};t.TopCompetitorSelector=v,t.useItemsFromCompetitors=y,t.genSearcherByKey=E,t.findRegion=O,t.dialogRegionSelector=k,t.TopRegionSelector=ce;function j(e){return e?(0,r.E)()?.Common.All_folders:`/ (`+(0,r.E)()?.Keywords.Root_folder+`)`}var M=(e,t,n=new Map,r={id:`root`},i=0)=>(r.childsIds=[],r.id&&(r.countAllGroupsActive=r.count_groups_active),e[r.id]&&e[r.id].forEach(a=>{a={...a},r.childsIds.push(a.id),a.id===0&&(a.name=j(t));let o=i>1?`-`.repeat(i-1)+` `:``;o&&!a.name.startsWith(o)&&(a.name=o+a.name),n.set(a.id,a),M(e,t,n,a,i+1),r.childsIds=r.childsIds.concat(a.childsIds),r.id&&a.count_groups_active&&(r.countAllGroupsActive+=a.count_groups_active)}),n),le=(e,t)=>e.gen(`/get/${t}/folders/`,[`id`,`parent_id`,`name`,`path`]).changeParams({orders:[`ord_path`],limit:100});function N(e,t,n){let r=Object.keys(e);return(0,m.watch)(r.map(t=>e[t]),(e,n,i)=>{let a={};e.forEach((e,t)=>{if(!Object.is(e,n[t])){let i=r[t];a[i]={old:n[t],new:e}}}),Object.keys(a).length&&t(a,i)},n)}var ue=[`innerHTML`],de=(0,m.defineComponent)({__name:`folders`,props:(0,m.mergeModels)({folderId:{},folder:{},folders:{},projectId:{},canSelectAll:{type:Boolean},addChanger:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{}},{folderId:{required:!0},folderIdModifiers:{},folder:{default:A},folderModifiers:{}}),emits:[`update:folderId`,`update:folder`],setup(e){let t=e,n=(0,m.useModel)(e,`folderId`),r=(0,m.useModel)(e,`folder`),i=t.client&&!t.folders?le(t.client,t.service):void 0,a=(0,m.ref)(null);(0,m.watch)(()=>t.projectId,()=>{i?.changeParams({project_id:t.projectId}),i?.setOptions({checkFingerprint:`TopGroupSelectorFolders:`+t.projectId}),a.value?.resetCache()},{immediate:!0});let o=(0,m.computed)(()=>M(t.folders??{root:[A]},t.canSelectAll)),s=e=>(t.canSelectAll&&e[0]?.id===0&&(e[0]={...e[0],name:j(!0)}),e);return N({modelFolder:r,modelFolderId:n},async e=>{if(n.value===r.value.id)return;if(e.modelFolder&&!e.modelFolderId){n.value=r.value.id;return}let i=o.value.get(t.folderId);i||=A,r.value=i,n.value=i.id},{immediate:!0}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.s,{class:`top-groupSelector_folder`,modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,items:e.folders?[...o.value.values()]:void 0,"search-type":`inline`,icon:e.addIcon?``:void 0,api:e.folders?void 0:(0,m.unref)(i),apiSetSearchParams:(...e)=>(0,m.unref)(p.u)(...e,`name`),prepareItemsBeforeRender:s,addChanger:e.addChanger,useCache:``},{item:(0,m.withCtx)(({item:e})=>[(0,m.createElementVNode)(`div`,{innerHTML:e.name.replaceAll(/</g,`< `)},null,8,ue)]),_:1},8,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`addChanger`]))}}),P={id:-1,name:`--`,folder_id:A.id,folder_path:A.path},F={id:0,name:`All groups`,folder_id:A.id,folder_path:A.path},I=()=>(F.name=(0,r.E)()?.Common.All_groups,F),L=()=>(F.name=(0,r.E)()?.Keywords.Choose_group,F),fe=(e,t,n)=>(e=[...e],t!==void 0&&(e=e.filter(e=>e.on==Number(t))),n&&n.id&&n.childsIds&&(e=e.filter(e=>e.folder_id===n.id||n.childsIds.includes(e.folder_id))),e),R=(e,t)=>e.gen(`/get/${t}/groups/`,[`id`,`name`,`folder_id`,`folder_path`]).changeParams({folder_id_depth:!0,limit:100}),pe=(e,t)=>e.gen(`/add/${t}/groups/`),me=(e,t)=>e.gen(`/del/${t}/groups/`),he=(e,t)=>e.gen(`/edit/${t}/groups/rename/`),ge={class:`top-groupSelector_groupItem top-ellipsis1`},_e={key:0,class:`top-comment`},ve=[`innerHTML`],ye=[`innerHTML`],be=[`innerHTML`],xe=(0,m.defineComponent)({__name:`groups`,props:(0,m.mergeModels)({groupId:{},group:{},projectId:{},folder:{},groups:{},on:{type:Boolean,default:void 0},canAdd:{type:[String,Boolean]},canEditAndDel:{type:Boolean},canSelectAll:{type:[Boolean,String]},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showPath:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{groupId:{required:!0},groupIdModifiers:{},group:{required:!0},groupModifiers:{}}),emits:(0,m.mergeModels)([`addGroup`,`editGroup`,`delGroup`],[`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,a=n,o=(0,m.useModel)(e,`groupId`),s=(0,m.useModel)(e,`group`),c=r.client&&!r.groups?R(r.client,r.service):void 0,l=r.client?pe(r.client,r.service):void 0,u=r.client?me(r.client,r.service):void 0,d=r.client?he(r.client,r.service):void 0,h=(0,m.ref)(null),g=(0,m.computed)(()=>{if(r.groups!==void 0)return fe(r.groups,r.on,r.folder)}),_=(0,i.t)(`folder_id`,`EQUALS`,[r.folder?.id??0]);c?.changeParams({project_id:r.projectId,folder_id_depth:!0,filters:[_]}),r.on!==void 0&&c?.params.filters?.push((0,i.t)(`on`,`EQUALS`,[Number(r.on)]));let v=e=>{s.value=e,o.value=e.id},y=(e=!1)=>{h.value?.resetCache(e)};N({projectId:()=>r.projectId,folderId:()=>r.folder?.id,canSelectAll:()=>r.canSelectAll},e=>{if(e.projectId&&(c?.changeParams({project_id:r.projectId}),c?.setOptions({checkFingerprint:`TopGroupSelectorGroups:`+r.projectId})),e.folderId&&(_.values=[r.folder?.id??0]),y(),(e.folderId?.old!==void 0||e.canSelectAll?.old!==void 0)&&o.value!==null){let e;r.autoselect===`first`&&(e=g.value?.[0],r.canSelectAll&&(e=(0,m.reactive)(I()))),(r.autoselect===`placeholder`||!e)&&(e=L()),v(e)}},{immediate:!0}),N({modelGroup:s,modelGroupId:o},async e=>{if(o.value!==s.value.id){if(e.modelGroup&&!e.modelGroupId){o.value=s.value.id;return}if(!(r.canAdd&&o.value===null)){if(r.groups){let e=g.value?.find(e=>e.id===o.value);if(!e&&r.canSelectAll&&(e=I()),e)v(e);else{let e=g.value?.[0];e&&!o.value?v(e):v(P)}}if(r.client&&!r.groups&&(o.value||o.value===0&&!r.canSelectAll)){let e=R(r.client,r.service).changeParams({project_id:r.projectId,id:o.value,filters:[_]});e?.setOptions({checkFingerprint:`TopGroupSelectorFindGroup:`+r.projectId});let t=await e.call();if(!t.errors?.length&&!t.result)return;!t.errors&&t.result[0]?v(t.result[0]):v(P)}}}},{immediate:!0});let b=async e=>{if(r.canAdd!==`api`||!l)return;let t=s.value,n=await l.changeParams({project_id:r.projectId,names:[e.name],to_id:r.folder?.id??A.id,to_type:`in_folder_last`}).call();if(n.result){let e=n.result[0];v(e),a(`addGroup`,e)}else v(t);h.value?.resetCache(!0)},x=async(e,t)=>{d&&((await d.changeParams({project_id:r.projectId,id:e.id,name:t}).call()).errors||(s.value.id===e.id&&(s.value.name=t),a(`editGroup`,{id:e.id,name:t}),h.value?.updateCacheItemById(e.id,{name:t})))},S=async e=>{u&&((await u.changeParams({project_id:r.projectId,id:e.id}).call()).errors||(s.value.id===e.id&&v(r.canSelectAll?I():P),a(`delGroup`,e.id),h.value?.deleteCacheItemById(e.id)))};return t({resetCacheGroups:y}),(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(p.s,{ref_key:`refSelector`,ref:h,class:`top-groupSelector_group`,modelValue:s.value,"onUpdate:modelValue":n[0]||=e=>s.value=e,items:g.value??e.groups,searchType:`inline`,icon:e.addIcon?``:void 0,api:e.groups?void 0:(0,m.unref)(c),apiSetSearchParams:(...e)=>(0,m.unref)(p.u)(...e,`name`),appendSearchToResult:!!e.canAdd,useAllItem:e.canSelectAll?(0,m.unref)(I)().name:!1,addChanger:e.addChanger,useCache:``,onAppendItem:b},(0,m.createSlots)({item:(0,m.withCtx)(({item:n})=>[(0,m.createElementVNode)(`div`,ge,[n.id===(0,m.unref)(null)?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,_e,(0,m.toDisplayString)(t.$i18n.Common.Add)+`: `,1)):(0,m.createCommentVNode)(``,!0),(0,m.createElementVNode)(`span`,{class:`top-groupSelector_groupItemName top-ellipsis1`,innerHTML:n.name},null,8,ve),n.folder_path&&e.showPath?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,class:`top-groupSelector_groupItemFolderPath top-ellipsis1`,innerHTML:n.folder_path},null,8,ye)):(0,m.createCommentVNode)(``,!0)])]),_:2},[e.canEditAndDel&&e.client?{name:`actions`,fn:(0,m.withCtx)(({item:r})=>[r.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createVNode)(f.n,{submitText:t.$i18n.Common.Save,defaultValue:r.name,inputProps:{addCleaner:!1},onSubmit:e=>x(r,e)},{opener:(0,m.withCtx)(()=>[...n[1]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[...n[2]||=[]]),_:1},8,[`submitText`,`defaultValue`,`onSubmit`]),(0,m.createVNode)(f.r,{isWarning:``,submitText:t.$i18n.Common.Delete,onSubmit:e=>S(r)},{opener:(0,m.withCtx)(()=>[...n[3]||=[(0,m.createElementVNode)(`div`,{"data-top-icon":``},null,-1)]]),default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,{innerHTML:e.service===`keywords_2`?t.$i18n.Keywords.Delete_group_warning:t.$i18n[`Ai.Tracker`].Delete_group_warning},null,8,be)]),_:1},8,[`submitText`,`onSubmit`])],64)):(0,m.createCommentVNode)(``,!0)]),key:`0`}:void 0]),1032,[`modelValue`,`items`,`icon`,`api`,`apiSetSearchParams`,`appendSearchToResult`,`useAllItem`,`addChanger`]))}}),Se={class:`top-groupSelector`},Ce=(0,m.defineComponent)({__name:`groupSelector`,props:(0,m.mergeModels)({folderId:{},folder:{},groupId:{},group:{},projectId:{},folders:{},groups:{},on:{type:Boolean,default:void 0},canSelectAllGroups:{type:Boolean,default:!1},canAddGroup:{type:[String,Boolean]},canEditAndDelGroup:{type:Boolean},autoselect:{default:`first`},addChanger:{type:Boolean,default:!0},showFolders:{type:Boolean,default:!0},showGroups:{type:Boolean,default:!0},showGroupsPaths:{type:Boolean},addIcon:{type:Boolean,default:!0},client:{},service:{default:`keywords_2`}},{folderId:{required:!0},folderIdModifiers:{},folder:{},folderModifiers:{},groupId:{required:!0},groupIdModifiers:{},group:{default:P},groupModifiers:{}}),emits:(0,m.mergeModels)([`update:groups`],[`update:folderId`,`update:folder`,`update:groupId`,`update:group`]),setup(e,{expose:t,emit:n}){let r=e,i=(0,m.ref)(null),a=(0,m.useModel)(e,`folderId`),o=(0,m.useModel)(e,`folder`),s=(0,m.useModel)(e,`groupId`),c=(0,m.useModel)(e,`group`),l=n;o.value=M(r.folders??{root:[A]},r.canSelectAllGroups).get(a.value);let u=r.groups?.find(e=>e.id===s.value);s.value||(u=r.groups?.[0]),r.canSelectAllGroups&&!u&&(u=I()),(r.autoselect===`placeholder`||!u)&&(u=L()),u??=P,c.value=u;let d=e=>{let t;r.groups&&e&&(t=[...r.groups,e]),l(`update:groups`,t)},f=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.find(t=>t.id===e.id);if(!t)return;let n={...t,...e},i=r.groups.map(e=>e.id===n.id?n:e);l(`update:groups`,i)},p=e=>{if(!r.groups){l(`update:groups`);return}let t=r.groups.filter(t=>t.id!==e);l(`update:groups`,t)};return t({resetCacheGroups:(e=!1)=>{i.value?.resetCacheGroups(e)}}),(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Se,[e.showFolders?((0,m.openBlock)(),(0,m.createBlock)(de,{key:0,folderId:a.value,"onUpdate:folderId":n[0]||=e=>a.value=e,folder:o.value,"onUpdate:folder":n[1]||=e=>o.value=e,projectId:e.projectId,folders:e.folders,canSelectAll:e.canSelectAllGroups,addChanger:e.addChanger,addIcon:e.addIcon,client:e.client,service:r.service},null,8,[`folderId`,`folder`,`projectId`,`folders`,`canSelectAll`,`addChanger`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0),e.showGroups?((0,m.openBlock)(),(0,m.createBlock)(xe,{key:1,ref_key:`componentGroupsRef`,ref:i,groupId:s.value,"onUpdate:groupId":n[2]||=e=>s.value=e,group:c.value,"onUpdate:group":n[3]||=e=>c.value=e,projectId:e.projectId,folder:o.value,groups:e.groups,on:e.on,canAdd:e.canAddGroup,canEditAndDel:e.canEditAndDelGroup,canSelectAll:e.canSelectAllGroups,autoselect:e.autoselect,addChanger:e.addChanger,showPath:e.showGroupsPaths||e.showFolders,addIcon:e.addIcon,client:e.client,service:r.service,onAddGroup:d,onEditGroup:f,onDelGroup:p},null,8,[`groupId`,`group`,`projectId`,`folder`,`groups`,`on`,`canAdd`,`canEditAndDel`,`canSelectAll`,`autoselect`,`addChanger`,`showPath`,`addIcon`,`client`,`service`])):(0,m.createCommentVNode)(``,!0)]))}}),z=e=>({id:null,name:e,listItemProps:{type:`title`,class:`top-projectSelector_item`}}),B={scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1},we=(e,t)=>{let n=[],i={scheduledUpdate:z((0,r.E)().Projects.Scheduled_update),manualUpdate:z((0,r.E)().Projects.Manual_update),guestProjects:z((0,r.E)().Projects.Guest_projects)},a=t?{scheduledUpdate:!1,manualUpdate:!1,guestProjects:!1}:B;for(let t of e)!a.scheduledUpdate&&t.right?.startsWith(`1`)&&t.on>0&&(n.push(i.scheduledUpdate),a.scheduledUpdate=!0),!a.manualUpdate&&t.right?.startsWith(`1`)&&t.on===0&&(n.push(i.manualUpdate),a.manualUpdate=!0),!a.guestProjects&&t.right?.startsWith(`0`)&&t.on>=0&&(n.push(i.guestProjects),a.guestProjects=!0),n.push(t);return n},V=e=>({...e,externalLink:Oe(e.url??``),listItemProps:{class:`top-projectSelector_item`,attrs:{title:e.name}}}),Te=(e,t,n)=>!e||e.length===0?[]:(t&&Object.keys(B).forEach(e=>B[e]=!1),we(e.map(V),n)),Ee=e=>{e=e.replace(/#.*/,``);let t=location.hash;return t=t.replace(/%22historyView%22:[^,]*,/,``),t=t.replace(/%22modelsKeys%22:\[[^\]]*],/,``),t=t.replace(/%22competitorsIds%22:\[[^\]]*],/,``),t=t.replace(/%22searchersKeys%22:\[[^\]]*],/,``),t=t.replace(/%22regionIndex%22:[^,]*,/,``),t=t.replace(/%22regionsIndexes%22:\[[^\]]*],/,``),t=t.replace(/%22folderId%22:[^,]*,/,``),t=t.replace(/%22groupId%22:[^,]*,/,``),t=t.replace(/%22tagsIds%22:\[[^\]]*],/,``),/%22dataSort%22:\{[^}]*0000-00-00[^}]*}/.test(t)||(t=t.replace(/,?%22dataSort%22:\{[^}]*}(,?)/,`$1`)),e+t},De=e=>{location.href=H(e)},H=e=>{let t=U(),n=location.pathname.split(`/`),r=`project/dynamics/`,i=``;n[1]==`project`&&(r=n[1]+`/`+n[2]+`/`),n[2]==`settings`&&(i=location.hash),[`watcher`,`indexing`,`sitemap`,`audit`,`direct`,`adwords`].includes(n[4])&&(i=n[4]+`/`);let a=`https://`+t+`/`+r+e+`/`+i;return a=Ee(a),a},U=()=>window.page?.subdomain?window.location.host.replace(window.page?.subdomain+`.`,``):window.location.host,Oe=e=>{let t=e.startsWith(`http`)?e:`https://`+e;return t=t.replace(/"/g,`%22`),t},ke=(e,t)=>{let n=e.params.filters??[];n=n.filter(e=>e.name!==`GEN_SEARCH_STRING()`);let r=(0,d.invertKeyboardLayout)(t),a=t.replace(/([[^$.|?*+()])/g,`\\$1`),o=r.replace(/([[^$.|?*+()])/g,`\\$1`);t&&n.push((0,i.t)(`GEN_SEARCH_STRING()`,`REGEXP`,[`(${a}|${o})`])),e.changeParams({filters:n})},Ae=e=>{let t=e.gen(`/get/projects_2/projects/`,[`id`,`user_id`,`name`,`url`,`on`,`right`]);return t.changeParams({filters:[(0,i.t)(`on`,`GREATER_THAN_EQUALS`,[0])],orders:[(0,i.n)(`user_id`,`DESC`,[r.O.state.userId]),(0,i.n)(`on`,`ASC`,[0]),(0,i.n)(`favorite`,`DESC`),(0,i.n)(`ord`,`ASC`),(0,i.n)(`id`,`DESC`)]}),t.options.loadingShowSpinner=!1,t.options.onApiLoaded=(e,t,n)=>{let r=t.data.filters.length>1,i=t.data.offset===0,a=t.data.offset===void 0||i&&!r,o=r;e.result=Te(e.result,a,o),n?.(e,t)},t},je=e=>e.gen(`/add/projects_2/projects/`),Me={class:`top-ellipsis1`},Ne=(0,m.defineComponent)({__name:`submenu`,props:{id:{}},setup(e){let t=e,n=(0,r.E)(),i=U(),a=e=>{let t=[{href:`https://${i}/project/keywords/${e.id}/`,title:n.Common.Menu_phrases,icon:``,right:`2`},{href:`https://${i}/project/dynamics/${e.id}/`,title:n.Common.Menu_dynamics,icon:``,right:`1`},{href:`https://${i}/project/snapshots/${e.id}/`,title:n.Common.Menu_snapshots,icon:``,right:`1`},{href:`https://${i}/project/competitors/${e.id}/`,title:n.Common.Menu_competitors,icon:``,right:`1`},{href:`https://${i}/project/ai-tracker/${e.id}/`,title:n.Common.Menu_aiTracker,icon:``,right:`13`},{href:`https://${i}/project/analytics/${e.id}/`,title:n.Common.Menu_analytics,icon:``,right:`5`},{href:`https://${i}/project/broker/${e.id}/`,title:n.Common.Menu_broker,icon:``,right:`6`},{href:`https://${i}/project/audit/${e.id}/sitemap/`,title:n.Audit.Sitemap_gen,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/audit/`,title:n.Common.Menu_audit,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/indexing/`,title:n.Audit.Indexing,icon:``,right:`8`},{href:`https://${i}/project/audit/${e.id}/watcher/`,title:n.Audit.Watcher,icon:``,right:`9`},{href:`https://${i}/project/settings/${e.id}/`,title:n.Common.Menu_settings,icon:``,right:`2`}].filter(e=>!Object.entries(r.O.state.closedByMod).some(([t,n])=>n&&e.href.includes(`/${t}/`)));return e.right.includes(`0`)?t.filter(t=>e.right[t.right]===`1`):t};return(e,n)=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.s),{id:t.id,class:`top-projectSelectorSubmenu`,notch:!1,pos:`2`},{contentList:(0,m.withCtx)(({data:t})=>[t?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(a(t.projectItem),t=>((0,m.openBlock)(),(0,m.createBlock)((0,m.unref)(f.o),{href:t.href,title:t.title,"data-top-icon":t.icon,"data-right":t.right},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(e.$core.state.isMobile?t.title:``),1)]),_:2},1032,[`href`,`title`,`data-top-icon`,`data-right`]))),256)),(0,m.createVNode)((0,m.unref)(f.o),{href:t.projectItem.externalLink,title:t.projectItem.externalLink,class:`top-ellipsis`,"data-top-icon":``,target:`_blank`},{default:(0,m.withCtx)(()=>[(0,m.createElementVNode)(`span`,Me,(0,m.toDisplayString)(e.$core.state.isMobile?t.projectItem.externalLink:``),1)]),_:2},1032,[`href`,`title`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`id`]))}}),Pe=1440*60*1e3,W=(0,m.ref)(null),G=(0,m.shallowRef)(),K=e=>{localStorage.setItem(`ui_project_selector_total:`+r.O.state.userId,JSON.stringify({projectsTotal:e,expiresAt:Date.now()+Pe}))},Fe=()=>{let e=localStorage.getItem(`ui_project_selector_total:`+r.O.state.userId);if(!e)return;let{projectsTotal:t,expiresAt:n}=JSON.parse(e);if(Date.now()>n){localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId);return}return t},Ie=()=>{W.value=null,G.value=void 0,localStorage.removeItem(`ui_project_selector_total:`+r.O.state.userId),(0,p.d)(`/get/projects_2/projects/`)},Le={class:`top-projectSelector_itemText`},Re={class:`top-comment`},ze={key:0,class:`top-comment`},Be=[`href`],q=1e3,Ve=(0,m.defineComponent)({__name:`projectSelector`,props:(0,m.mergeModels)({modelValue:{},client:{},menuMode:{type:Boolean},excludeProjectId:{},openerShortcut:{},modificator:{},placeholder:{},buttonProps:{default:()=>({color:`theme`,styling:`outline`})}},{modelValue:{default:()=>({id:null,name:``})},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=(0,r.E)(),n=e,i=(0,m.useModel)(e,`modelValue`),a=Ae(n.client),o=je(n.client),s=(0,m.ref)(Fe()),u=(0,m.ref)(null),d=(0,m.useId)(),h=(0,m.computed)(()=>n.placeholder??t.Projects.Select_project),g=(0,m.computed)(()=>!G.value||!n.excludeProjectId?G.value:G.value.filter(e=>e.id!==n.excludeProjectId)),_=(0,m.computed)(()=>{if(!(!s.value&&s.value!==0))return s.value<q?`static`:`api`}),v=async()=>{W.value||=a.call();let e=await W.value;return W.value=null,e},y=async e=>{let t=await o.changeParams({url:e.name,name:e.name}).call();if(!t.errors){if(G.value&&_.value===`static`){let n=V({id:t.result,user_id:r.O.state.userId,name:e.name,url:e.name,on:0,right:`11111111111111111111`}),i=G.value.findIndex(e=>e.on===0);G.value=[...G.value.slice(0,i),n,...G.value.slice(i)],s.value&&(s.value+=1,K(s.value))}_.value===`api`&&u.value?.resetCache(!0)}},b=async()=>{if(G.value||_.value===`api`)return;let e=await v();e.errors||(G.value=e.result)},x=async()=>{if(s.value){let e=u.value?.popupOpenerRef?.$el;e&&e.addEventListener(`pointerenter`,()=>b(),{once:!0})}else{a.changeParams({limit:q});let e=await v();if(e.errors)return;delete a.params.limit,s.value=e.total??void 0,!G.value&&_.value!==`api`&&(G.value=e.result),s.value&&K(s.value)}};return(0,m.onMounted)(async()=>{await x()}),(t,n)=>{let r=(0,m.resolveComponent)(`TopButton`);return(0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[((0,m.openBlock)(),(0,m.createBlock)(p.s,{key:_.value??`dummy`,ref_key:`refSelector`,ref:u,class:`top-projectSelector`,modelValue:i.value,"onUpdate:modelValue":n[1]||=t=>e.menuMode?(0,m.unref)(De)(t.id):i.value=t,items:g.value,itemsChunkSize:100,itemsIsLoading:_.value===`static`&&(0,m.unref)(G)===void 0,title:t.$i18n.Projects.Search_projects,modificator:e.modificator,searchFields:[`id`,`name`,`url`],placeholder:h.value,hasCloserBtn:``,api:_.value===`api`?(0,m.unref)(a):void 0,apiSetSearchParams:_.value===`api`?(...e)=>(0,m.unref)(ke)(...e):void 0,useCache:``,appendSearchToResult:``,appendSearchAllowDuplicate:``,appendSearchToResultCond:(0,m.unref)(c.validUrl),appendWithoutSelect:``,buttonProps:{...e.buttonProps,isProgress:!_.value,disabled:!_.value},openerShortcut:e.openerShortcut,onAppendItem:y,onOpen:b},{item:(0,m.withCtx)(({item:i})=>[(0,m.createElementVNode)(`div`,Le,[i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[(0,m.createTextVNode)((0,m.toDisplayString)((0,m.unref)(l.ellipsis)(i.name,20))+` `,1),(0,m.createElementVNode)(`span`,Re,` id `+(0,m.toDisplayString)(i.id),1)],64)):((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:1},[i.listItemProps?.type?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createElementBlock)(`div`,ze,(0,m.toDisplayString)(t.$i18n.Projects.Add_project)+`: `,1)),(0,m.createTextVNode)(` `+(0,m.toDisplayString)(i.name),1)],64))]),i.id?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[e.menuMode?((0,m.openBlock)(),(0,m.createElementBlock)(`a`,{key:0,class:`top-projectSelector_itemLink`,href:(0,m.unref)(H)(i.id)},null,8,Be)):(0,m.createCommentVNode)(``,!0),t.$core.state.isMobile?(0,m.createCommentVNode)(``,!0):((0,m.openBlock)(),(0,m.createBlock)(r,{key:1,href:i.externalLink,"data-top-icon":``,color:`theme`,target:`_blank`,onClick:n[0]||=(0,m.withModifiers)(()=>{},[`stop`])},null,8,[`href`])),(0,m.createVNode)(f.c,{id:(0,m.unref)(d),pos:`2`,notch:!1,data:{projectItem:i}},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(r,{class:`top-popup_listMore`,"data-top-icon":``,color:`theme`})]),_:1},8,[`id`,`data`])],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`modelValue`,`items`,`itemsIsLoading`,`title`,`modificator`,`placeholder`,`api`,`apiSetSearchParams`,`appendSearchToResultCond`,`buttonProps`,`openerShortcut`])),(0,m.createVNode)(Ne,{id:(0,m.unref)(d)},null,8,[`id`])],64)}}}),J=e=>`-`+e,Y=e=>e[0]===`-`?e.substring(1):e,X=(e,t)=>{e=Y(e);let n=t.find(t=>t.id===e);if(n)return n},He=(e,t,n)=>{t||={id:e.id},t.id=e.id,t.pos??=`3`,t.notch??=!0,t.posBy??=`fixed`;let r=o.t.genElPopupOpener(`div`,t);return r.classList.add(`top-tagSelector`),e.useTopButton&&r.classList.add(`top-tagSelector-useTopButton`,`top-button`,`top-color_theme`,`top-as-selector`),e.useTopButton||r.classList.add(`top-tagSelector-custom`),e.mode===`filter`&&r.classList.add(`top-tagSelector-filter`),e.mode===`setter`&&!e.filters&&r.classList.add(`top-tagSelector-setter_single`),e.mode===`setter`&&e.filters&&r.classList.add(`top-tagSelector-setter_several`),r.onclick=t=>{t.preventDefault(),t.stopPropagation(),r.onclick=null;let i=(0,m.ref)(e.modelValue),o={model:i,mode:e.mode,targetId:e.targetId,filters:e.filters,payload:e.payload};(0,a.storage)(r,`topTagSelectorTarget`,o),delete r.dataset.topPopupDisabled,(0,m.isRef)(e.modelValue)||(0,m.watch)(i,()=>{e.modelValue=i.value,Z(r,e,n)}),r.click()},(0,m.isRef)(e.modelValue)?(0,m.watch)(e.modelValue,()=>Z(r,e,n)):(0,a.storage)(r,`topTagSelectorRender`,t=>{e.modelValue=t;let i=(0,a.storage)(r,`topTagSelectorTarget`);i&&(i.model.value=t),Z(r,e,n)}),Z(r,e,n),r},Ue=(e,t)=>{(0,a.storage)(e,`topTagSelectorRender`)?.(t)},Z=(e,t,n)=>{let i=(0,m.unref)(t.modelValue);if(e.classList.toggle(`top-tagSelector-selectedOne`,!i.length||i.length===1),e.classList.toggle(`top-tagSelector-toTwoLine`,i.length>5),t.mode===`setter`&&t.filters){e.innerHTML=`<div>${n}</div>`;return}if(e.innerHTML=``,!i.length&&t.mode===`filter`){let t=We({id:`all`,colorId:``,name:(0,r.E)().Common?.All_tags??``,state:``});e.append(t)}i.forEach(n=>{let r=We({id:Y(n),colorId:X(n,t.tags)?.color_id??``,name:X(n,t.tags)?.name??``,state:Y(n)===n?`selected`:`excluded`});e.append(r)})},We=e=>{let t=document.createElement(`div`);return t.classList.add(`top-tagSelector_tagIcon`),t.classList.toggle(`top-tagSelector-active`,!!e.state),t.classList.toggle(`top-tagSelector-excluded`,e.state===`excluded`),t.dataset.tag_id=e.id,t.dataset.tag_color_id=e.colorId,t.title=e.name,t},Ge=[{id:`1`,name:`Without Tag`,color_id:`1`},{id:`2`,name:`Red`,color_id:`2`},{id:`3`,name:`Orange`,color_id:`3`},{id:`4`,name:`Yellow`,color_id:`4`},{id:`5`,name:`Blue`,color_id:`5`},{id:`6`,name:`Purple`,color_id:`6`},{id:`7`,name:`Green`,color_id:`7`},{id:`8`,name:`Magenta`,color_id:`8`},{id:`9`,name:`Dark blue`,color_id:`9`},{id:`10`,name:`Turquoise`,color_id:`10`}],Ke=[`data-tag_id`,`data-tag_color_id`,`title`],Q=(0,m.defineComponent)({__name:`tagIcon`,props:{id:{},colorId:{},name:{},state:{}},setup(e){return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(`div`,{class:(0,m.normalizeClass)({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),"data-tag_id":e.id,"data-tag_color_id":e.colorId,title:e.name},null,10,Ke))}}),qe=[`contenteditable`,`onKeydown`],Je=(0,m.defineComponent)({__name:`tagPopupListItem`,props:(0,m.mergeModels)({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:(0,m.mergeModels)([`update:name`,`unselect`,`exclude`,`select`],[`update:name`]),setup(e,{emit:t}){let n=e,r=t,i=(0,m.useModel)(e,`name`),a=(0,m.ref)(null),o=(0,m.computed)(()=>navigator.userAgent.indexOf(`Firefox`)==-1?{}:{contenteditable:s.value,onpaste:e=>e.preventDefault()}),s=(0,m.ref)(!1),c=async()=>{s.value=!0,await(0,m.nextTick)(),a.value?.focus()},l=()=>{let e=a.value?.innerText;if(!e)return u();a.value&&(a.value.innerText=e),s.value=!1,r(`update:name`,e)},u=async()=>{a.value&&(a.value.innerText=n.name),s.value=!1},d=e=>{if(s.value||n.disabled)return;let t=`selected`;n.canExclude&&(e.ctrlKey||e.metaKey)&&(t=`excluded`),n.state==t&&(t=``),t===``&&r(`unselect`),t===`selected`&&r(`select`),t===`excluded`&&r(`exclude`)};return(t,n)=>((0,m.openBlock)(),(0,m.createBlock)(f.o,{class:(0,m.normalizeClass)({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":e.disabled,"top-tagSelector_tagListItem-canExclude":e.canExclude,"top-tagSelector-active":!!e.state,"top-tagSelector-excluded":e.state===`excluded`}),onClick:(0,m.withModifiers)(d,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createVNode)(Q,{id:e.id,name:i.value,colorId:e.colorId,state:e.state},null,8,[`id`,`name`,`colorId`,`state`]),(0,m.createElementVNode)(`span`,(0,m.mergeProps)({ref_key:`elName`,ref:a,class:`top-tagSelector_tagListItemName`,contenteditable:s.value?`plaintext-only`:!1},o.value,{onKeydown:[(0,m.withKeys)((0,m.withModifiers)(l,[`stop`]),[`enter`]),(0,m.withKeys)((0,m.withModifiers)(u,[`stop`]),[`esc`])]}),(0,m.toDisplayString)(i.value),17,qe),e.editable?((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,{key:0},[s.value?((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:1,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:(0,m.withModifiers)(l,[`stop`])})):((0,m.openBlock)(),(0,m.createElementBlock)(`span`,{key:0,"data-top-icon":``,class:`top-tagSelector_edit`,onClick:c}))],64)):(0,m.createCommentVNode)(``,!0)]),_:1},8,[`class`]))}}),Ye={key:1},Xe=(0,m.defineComponent)({inheritAttrs:!1,__name:`popupOpener`,props:(0,m.mergeModels)({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,m.useModel)(e,`modelValue`),i=t.useTopButton?r.h:`div`,a=t.useTopButton?`html`:`default`,o={model:n,mode:t.mode,targetId:t.targetId,filters:t.filters,payload:t.payload};return(r,s)=>{let c=(0,m.resolveDirective)(`top-data`);return(0,m.openBlock)(),(0,m.createBlock)(f.c,{id:e.id},{default:(0,m.withCtx)(()=>[(0,m.withDirectives)(((0,m.openBlock)(),(0,m.createBlock)((0,m.resolveDynamicComponent)((0,m.unref)(i)),(0,m.mergeProps)({class:{"top-tagSelector":!0,"top-tagSelector-useTopButton":t.useTopButton,"top-tagSelector-custom":!t.useTopButton,"top-as-selector":t.useTopButton,"top-tagSelector-filter":t.mode===`filter`,"top-tagSelector-setter_single":t.mode===`setter`&&!e.filters,"top-tagSelector-setter_several":t.mode===`setter`&&e.filters,"top-tagSelector-selectedOne":!n.value.length||n.value.length===1,"top-tagSelector-toTwoLine":n.value.length>5},color:`theme`,styling:e.styling},r.$attrs),{[(0,m.unref)(a)]:(0,m.withCtx)(()=>[!n.value.length&&e.mode===`filter`?((0,m.openBlock)(),(0,m.createBlock)(Q,{key:0,id:`all`,colorId:``,name:r.$i18n.Common.All_tags??``,state:``},null,8,[`name`])):(0,m.createCommentVNode)(``,!0),e.mode===`setter`&&e.filters?((0,m.openBlock)(),(0,m.createElementBlock)(`div`,Ye,[(0,m.renderSlot)(r.$slots,`default`)])):((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,{key:2},(0,m.renderList)(n.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Q,{id:(0,m.unref)(Y)(t),colorId:(0,m.unref)(X)(t,e.tags)?.color_id??``,name:(0,m.unref)(X)(t,e.tags)?.name??``,state:(0,m.unref)(Y)(t)===t?`selected`:`excluded`},null,8,[`id`,`colorId`,`name`,`state`]))),256))]),_:2},1040,[`class`,`styling`])),[[c,o,`topTagSelectorTarget`]])]),_:3},8,[`id`])}}}),Ze=(0,m.defineComponent)({__name:`tagSelector`,props:(0,m.mergeModels)({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},useTopButton:{type:Boolean,default:!0},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:(0,m.reactive)(Ge)},tagsModifiers:{}}),emits:(0,m.mergeModels)([`selector`,`setter`,`tagsChanged`],[`update:modelValue`,`update:tags`]),setup(e,{emit:t}){let n=(0,r.E)(),i=e,o=(0,m.useModel)(e,`modelValue`),s=(0,m.useModel)(e,`tags`),c=t,l=(0,r.P)((e,t)=>{c(e,t)},i.emitDelay);i.singleMode&&!o.value.length&&(o.value=[s.value[0].id]);let u=i.id??`top-popup-id-`+Math.random(),d=(0,m.ref)(`add`),p=()=>{let e=` `+n.Common.Tags?.toLowerCase(),t=new Map;return t.set(`add`,{value:`add`,title:n.Common.Add+e}),t.set(`replace`,{value:`replace`,title:n.Common.Replace+e}),t.set(`delete`,{value:`delete`,title:n.Common.Delete+e}),t},h=(0,m.shallowRef)({model:o,mode:`filter`,targetId:void 0,filters:void 0,payload:void 0});(0,m.watch)(o,()=>{l(`selector`,o.value)});let g=(0,m.computed)(()=>{if(h.value.mode===`setter`&&i.maxTagsForSetter&&!h.value.filters)return h.value.model.value.length>=i.maxTagsForSetter}),_=e=>{if(e!==`all`){if(h.value.model.value.includes(e))return`selected`;if(h.value.model.value.includes(J(e)))return`excluded`}return e===`all`&&!h.value.model.value.length?`selected`:``},v=(e,t)=>{let n=J(e),r=h.value.model.value.filter(t=>t!==e&&t!==n);t===`select`&&r.push(e),t===`exclude`&&r.push(n),h.value.mode===`setter`&&h.value.targetId!==void 0&&i.requiredForSetter&&(r.length||r.push(`1`),r.length===2&&h.value.model.value.length===1&&h.value.model.value[0]===`1`&&(r=r.filter(e=>e!==`1`))),i.singleMode&&!h.value.filters&&(r.length||(r=h.value.model.value),r.length>1&&(r=[r[r.length-1]])),r.sort((e,t)=>i.tags?i.tags.findIndex(t=>t.id===e)-i.tags.findIndex(e=>e.id===t):0),h.value.model.value=r,h.value.mode===`setter`&&h.value.targetId!==void 0&&l(`setter`,{tagsIds:r,targetId:h.value.targetId,payload:h.value.payload})},y=(0,m.computed)(()=>{let e=`top-tagSelector_popup`;return h.value.mode===`filter`&&(e+=` top-tagSelector_popup-filter`),h.value.mode===`setter`&&(e+=` top-tagSelector_popup-setter`),e}),b=()=>{let e=prompt(``,`New tag`);if(!e||e===`New tag`)return;let t=s.value.length+1;s.value.push({id:String(t),name:e,color_id:String((t-1)%10+1)}),c(`tagsChanged`,s.value)},x=e=>{if(h.value=(0,a.storage)(e.elPopupOpener,`topTagSelectorTarget`),!h.value)throw Error(`Open popup TopTagSelector required v-data:topTagSelectorTarget`);if(h.value.filters&&(d.value=`add`,h.value.model.value=[]),!r.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}!r.O.state.isMobile&&!r.O.state.isMobileUA&&s.value&&$(e.elPopup).sortable({items:`li:has([data-tag_id]:not([data-tag_id="all"]))`,cancel:`[contenteditable="plaintext-only"], [contenteditable="true"]`,distance:10,stop:function(e,t){if(!s.value)return;let n=$(t.item).parent().find(`[data-tag_id]`),r=[];n.each((e,t)=>{if(!s.value)return;let n=$(t).attr(`data-tag_id`);r.push(n)}),s.value.sort((e,t)=>r.findIndex(t=>t===e.id)-r.findIndex(e=>e===t.id)),l(`tagsChanged`,s.value)}})},S=e=>{r.O.$?.ui.sortable&&$(e.elPopup).data(`ui-sortable`)&&$(e.elPopup).sortable(`destroy`)};return(t,n)=>((0,m.openBlock)(),(0,m.createElementBlock)(m.Fragment,null,[(0,m.createVNode)(Xe,{modelValue:o.value,"onUpdate:modelValue":n[0]||=e=>o.value=e,id:(0,m.unref)(u),tags:s.value,styling:e.styling,mode:`filter`,useTopButton:e.useTopButton},null,8,[`modelValue`,`id`,`tags`,`styling`,`useTopButton`]),(0,m.createVNode)(f.s,{id:(0,m.unref)(u),class:(0,m.normalizeClass)(y.value),onOpen:n[4]||=e=>x(e),onClose:n[5]||=e=>S(e),"transition-duration":50},(0,m.createSlots)({contentList:(0,m.withCtx)(()=>[h.value.mode===`filter`&&!e.singleMode?((0,m.openBlock)(),(0,m.createBlock)(Je,{key:0,id:`all`,colorId:``,name:t.$i18n.Common.All_tags??``,state:h.value.model.value.length?``:`selected`,onSelect:n[3]||=e=>h.value.model.value=[]},null,8,[`name`,`state`])):(0,m.createCommentVNode)(``,!0),((0,m.openBlock)(!0),(0,m.createElementBlock)(m.Fragment,null,(0,m.renderList)(s.value,t=>((0,m.openBlock)(),(0,m.createBlock)(Je,{key:t.id,id:t.id,colorId:t.color_id,name:t.name,state:_(t.id),canExclude:h.value.mode===`filter`&&!e.singleMode,editable:e.tagsEditable,disabled:g.value&&_(t.id)===``,onUnselect:e=>v(t.id,`unselect`),onSelect:e=>v(t.id,`select`),onExclude:e=>v(t.id,`exclude`),"onUpdate:name":e=>{t.name=e,(0,m.unref)(l)(`tagsChanged`,s.value)}},null,8,[`id`,`colorId`,`name`,`state`,`canExclude`,`editable`,`disabled`,`onUnselect`,`onSelect`,`onExclude`,`onUpdate:name`]))),128)),e.tagsEditable&&s.value.length<e.tagsMax&&s.value.length<20?((0,m.openBlock)(),(0,m.createBlock)(f.o,{key:1,"data-top-icon":``,onClick:(0,m.withModifiers)(b,[`stop`])},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Add),1)]),_:1})):(0,m.createCommentVNode)(``,!0)]),_:2},[h.value.mode===`setter`&&h.value.filters?{name:`header`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.n,{modelValue:d.value,"onUpdate:modelValue":n[1]||=e=>d.value=e,options:p()},null,8,[`modelValue`,`options`])]),key:`0`}:void 0,h.value.mode===`setter`&&h.value.filters?{name:`footer`,fn:(0,m.withCtx)(()=>[(0,m.createVNode)(r.h,{color:`theme`},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(t.$i18n.Common.Cancel),1)]),_:1}),(0,m.createVNode)(r.h,{onClick:n[2]||=e=>(0,m.unref)(l)(`setter`,{tagsIds:h.value.model.value,filters:h.value.filters,filtersAction:d.value,payload:h.value.payload})},{default:(0,m.withCtx)(()=>[(0,m.createTextVNode)((0,m.toDisplayString)(d.value===`add`?t.$i18n.Common.Add:``)+` `+(0,m.toDisplayString)(d.value===`replace`?t.$i18n.Common.Replace:``)+` `+(0,m.toDisplayString)(d.value===`delete`?t.$i18n.Common.Delete:``),1)]),_:1})]),key:`1`}:void 0]),1032,[`id`,`class`])],64))}});t.TopGroupSelector=Ce,t.topProjectSelectorClearCache=Ie,t.TopProjectSelector=Ve,t.genElTopTagSelectorPopupOpener=He,t.renderElTopTagSelectorPopupOpener=Ue,t.TopTagSelectorTagIcon=Q,t.TopTagSelectorPopupOpener=Xe,t.TopTagSelector=Ze});
2
2
  //# sourceMappingURL=project.amd.js.map