@topvisor/ui 1.0.11-fix-genDate → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/.chunks/datepicker-4Pv7WbOy.amd.js +248 -0
  2. package/.chunks/datepicker-4Pv7WbOy.amd.js.map +1 -0
  3. package/.chunks/datepicker-DDso1VCq.es.js +290 -0
  4. package/.chunks/datepicker-DDso1VCq.es.js.map +1 -0
  5. package/.chunks/{forms-6Z3p_rjQ.es.js → forms-Dm3JmuO3.es.js} +5 -5
  6. package/.chunks/forms-Dm3JmuO3.es.js.map +1 -0
  7. package/.chunks/{forms-VHBOI0dh.amd.js → forms-JhDIERVr.amd.js} +3 -3
  8. package/.chunks/forms-JhDIERVr.amd.js.map +1 -0
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-vJr-aboH.amd.js → listItem.vue_vue_type_script_setup_true_lang-DPLgssbE.amd.js} +2 -2
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DPLgssbE.amd.js.map +1 -0
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-D5L98ivn.es.js → listItem.vue_vue_type_script_setup_true_lang-DsTNQnlk.es.js} +2 -2
  12. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DsTNQnlk.es.js.map +1 -0
  13. package/.chunks/{menu.vue_vue_type_style_index_0_lang-KS0ds5K9.es.js → menu.vue_vue_type_style_index_0_lang-86OJDcnB.es.js} +2 -2
  14. package/.chunks/menu.vue_vue_type_style_index_0_lang-86OJDcnB.es.js.map +1 -0
  15. package/.chunks/{menu.vue_vue_type_style_index_0_lang-CIdtKoU3.amd.js → menu.vue_vue_type_style_index_0_lang-DkiaQwIJ.amd.js} +2 -2
  16. package/.chunks/menu.vue_vue_type_style_index_0_lang-DkiaQwIJ.amd.js.map +1 -0
  17. package/.chunks/{notice-CbblAkRb.amd.js → notice-BPxrLH4a.amd.js} +2 -2
  18. package/.chunks/notice-BPxrLH4a.amd.js.map +1 -0
  19. package/.chunks/{notice-CPsMulgd.es.js → notice-CTd0Zf-U.es.js} +2 -2
  20. package/.chunks/notice-CTd0Zf-U.es.js.map +1 -0
  21. package/.chunks/{popup-DiC5JWsJ.amd.js → popup-BXBFCWHU.amd.js} +448 -448
  22. package/.chunks/popup-BXBFCWHU.amd.js.map +1 -0
  23. package/.chunks/{popup-Wzy_7sXf.es.js → popup-DXuKsMuU.es.js} +491 -491
  24. package/.chunks/popup-DXuKsMuU.es.js.map +1 -0
  25. package/.chunks/store-CX_6ZXhO.es.js.map +1 -1
  26. package/.chunks/store-esTid5oI.amd.js.map +1 -1
  27. package/README.md +86 -86
  28. package/assets/core.css +1 -1
  29. package/assets/forms.css +1 -1
  30. package/assets/themes/dark.css +1 -1
  31. package/assets/themes/light.css +1 -1
  32. package/charts/charts.amd.js +1 -1
  33. package/charts/charts.amd.js.map +1 -1
  34. package/charts/charts.js +1 -1
  35. package/charts/charts.js.map +1 -1
  36. package/components/core/dialog/types.d.ts +2 -0
  37. package/core/app.amd.js +1 -1
  38. package/core/app.amd.js.map +1 -1
  39. package/core/app.js +3 -3
  40. package/core/app.js.map +1 -1
  41. package/core/utils/route.d.ts +2 -2
  42. package/core/utils/scroll.d.ts +14 -1
  43. package/forms/forms.amd.js +1 -1
  44. package/forms/forms.js +1 -1
  45. package/forms/helpers.amd.js.map +1 -1
  46. package/forms/helpers.js.map +1 -1
  47. package/formsExt/formsExt.amd.js +1 -1
  48. package/formsExt/formsExt.amd.js.map +1 -1
  49. package/formsExt/formsExt.js +2 -2
  50. package/formsExt/formsExt.js.map +1 -1
  51. package/icomoon/Read Me.txt +7 -7
  52. package/icomoon/Topvisor icons.json +5845 -5845
  53. package/icomoon/demo-files/demo.css +161 -161
  54. package/icomoon/demo-files/demo.js +30 -30
  55. package/icomoon/demo.html +3379 -3379
  56. package/icomoon/fonts/Topvisor-2.svg +263 -263
  57. package/icomoon/style.css +740 -740
  58. package/package.json +33 -33
  59. package/popup/popup.amd.js +1 -1
  60. package/popup/popup.amd.js.map +1 -1
  61. package/popup/popup.js +2 -2
  62. package/popup/popup.js.map +1 -1
  63. package/popup/worker.amd.js +1 -1
  64. package/popup/worker.amd.js.map +1 -1
  65. package/popup/worker.js +2 -2
  66. package/popup/worker.js.map +1 -1
  67. package/project/project.amd.js +1 -1
  68. package/project/project.amd.js.map +1 -1
  69. package/project/project.js +3 -3
  70. package/project/project.js.map +1 -1
  71. package/require/css.amd.js +12 -12
  72. package/tabs/tabs.amd.js.map +1 -1
  73. package/tabs/tabs.js.map +1 -1
  74. package/tabsView/tabsView.amd.js +1 -1
  75. package/tabsView/tabsView.amd.js.map +1 -1
  76. package/tabsView/tabsView.js +1 -1
  77. package/tabsView/tabsView.js.map +1 -1
  78. package/utils/check.amd.js +1 -1
  79. package/utils/check.amd.js.map +1 -1
  80. package/utils/check.js +1 -1
  81. package/utils/check.js.map +1 -1
  82. package/utils/clipboard.amd.js.map +1 -1
  83. package/utils/clipboard.js.map +1 -1
  84. package/utils/date.amd.js +1 -1
  85. package/utils/date.js +1 -1
  86. package/utils/device.amd.js +1 -1
  87. package/utils/device.js +1 -1
  88. package/utils/dom.amd.js.map +1 -1
  89. package/utils/dom.js.map +1 -1
  90. package/utils/image.amd.js.map +1 -1
  91. package/utils/image.js.map +1 -1
  92. package/utils/keyboard.amd.js.map +1 -1
  93. package/utils/keyboard.js.map +1 -1
  94. package/utils/lodash.amd.js +1 -1
  95. package/utils/lodash.js +1 -1
  96. package/utils/number.amd.js.map +1 -1
  97. package/utils/number.js.map +1 -1
  98. package/utils/price.amd.js +1 -1
  99. package/utils/price.amd.js.map +1 -1
  100. package/utils/price.js +1 -1
  101. package/utils/price.js.map +1 -1
  102. package/utils/route.amd.js.map +1 -1
  103. package/utils/route.js.map +1 -1
  104. package/utils/scroll.amd.js +1 -1
  105. package/utils/scroll.amd.js.map +1 -1
  106. package/utils/scroll.js +19 -7
  107. package/utils/scroll.js.map +1 -1
  108. package/utils/searchers.amd.js.map +1 -1
  109. package/utils/searchers.js.map +1 -1
  110. package/utils/string.amd.js +1 -1
  111. package/utils/string.amd.js.map +1 -1
  112. package/utils/string.js +1 -1
  113. package/utils/string.js.map +1 -1
  114. package/utils/system.amd.js.map +1 -1
  115. package/utils/system.js.map +1 -1
  116. package/utils/url.amd.js.map +1 -1
  117. package/utils/url.js.map +1 -1
  118. package/web-types.json +89 -89
  119. package/.chunks/datepicker-BLzgmRwE.amd.js +0 -248
  120. package/.chunks/datepicker-BLzgmRwE.amd.js.map +0 -1
  121. package/.chunks/datepicker-C0DMEWk5.es.js +0 -290
  122. package/.chunks/datepicker-C0DMEWk5.es.js.map +0 -1
  123. package/.chunks/forms-6Z3p_rjQ.es.js.map +0 -1
  124. package/.chunks/forms-VHBOI0dh.amd.js.map +0 -1
  125. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-D5L98ivn.es.js.map +0 -1
  126. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-vJr-aboH.amd.js.map +0 -1
  127. package/.chunks/menu.vue_vue_type_style_index_0_lang-CIdtKoU3.amd.js.map +0 -1
  128. package/.chunks/menu.vue_vue_type_style_index_0_lang-KS0ds5K9.es.js.map +0 -1
  129. package/.chunks/notice-CPsMulgd.es.js.map +0 -1
  130. package/.chunks/notice-CbblAkRb.amd.js.map +0 -1
  131. package/.chunks/popup-DiC5JWsJ.amd.js.map +0 -1
  132. package/.chunks/popup-Wzy_7sXf.es.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popup-DXuKsMuU.es.js","sources":["../../src/components/component.ts","../../src/components/popup/lib/popup.globalEvents.ts","../../src/components/popup/popup/style/popup.css?raw","../../src/components/popup/popup/style/popup.m.css?raw","../../src/components/popup/popup/style/popup.pc.css?raw","../../src/components/popup/lib/popup.ts"],"sourcesContent":["import DOM from '@/core/utils/dom';\r\n\r\n/**\r\n * Базовый компонент для js компонентов, не имеет отношения к Vue\r\n */\r\nclass Component {\r\n\r\n\tstatic componentName = 'Top';\r\n\r\n\tcomponentName: string | undefined; // имя класса компонента\r\n\tclassName: string | undefined; // имя css класса компонента\r\n\tuid: string | undefined; // уникальный id компонента\r\n\tel: HTMLElement | undefined; // элемент, связанный с компонентом\r\n\toptions = {}; // параметры компонента\r\n\r\n\tunmountEls: HTMLElement[] = [];\r\n\tunmountEvents: any[] = [];\r\n\r\n\t// переопредлять нельзя\r\n\t// если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()\r\n\t// используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса\r\n\tinit(componentName: string, el: HTMLElement, options: object): Component | void {\r\n\t\tif (!el) {\r\n\t\t\tthrow componentName + ': el is undefined';\r\n\t\t}\r\n\r\n\t\tconst component = Component.getComponent(el, componentName);\r\n\r\n\t\tif (component) {\r\n\t\t\tcomponent.reInit(options);\r\n\r\n\t\t\treturn component;\r\n\t\t}\r\n\r\n\t\tthis.componentName = componentName;\r\n\t\tthis.className = 'top' + componentName[0].toUpperCase() + componentName.substring(1);\r\n\t\tthis.uid = this.componentName + (Math.random() + '').replace('.', '');\r\n\r\n\t\tthis._setComponent(el);\r\n\t\tthis.el = el;\r\n\t\tthis.el.classList.add(this.className);\r\n\t\tthis.options = Object.assign(this.options, options);\r\n\r\n\t\tthis.mount();\r\n\t}\r\n\r\n\t// получить инициированный компонент\r\n\tstatic getComponent(el: HTMLElement, componentName: string): any {\r\n\t\treturn DOM.storage(el, '#' + componentName);\r\n\t}\r\n\r\n\t// устанвоить компонент\r\n\t_setComponent(el: HTMLElement) {\r\n\t\tDOM.storage(el, '#' + this.componentName, this);\r\n\t}\r\n\r\n\t// функция подключения компонента\r\n\tmount(): void {\r\n\t\tthrow 'Please, add method mount() to component: ' + this.componentName;\r\n\t}\r\n\r\n\t// функция отключения компонента\r\n\tunmount(): void {\r\n\t\tDOM.storage(this.el, '#' + this.componentName, null);\r\n\r\n\t\tthis.unmountEls.forEach((el) => {\r\n\t\t\tel.remove();\r\n\t\t});\r\n\r\n\t\tthis.unmountEls = [];\r\n\r\n\t\tthis.unmountEvents.forEach((eventData) => {\r\n\t\t\teventData.el.removeEventListener(eventData.type, eventData.listener, eventData.options);\r\n\t\t});\r\n\r\n\t\tthis.unmountEvents = [];\r\n\t}\r\n\r\n\t// указание новые элементы, которые должны будут удалиться после unmount\r\n\tregisterElForUnmount(el: HTMLElement): void {\r\n\t\tthis.unmountEls.push(el);\r\n\t}\r\n\r\n\t// указание новые события, которые должны будут удалиться после unmount\r\n\taddEventListenerWithUnmount(\r\n\t\tel: HTMLElement | Document | Window,\r\n\t\ttype: keyof GlobalEventHandlersEventMap,\r\n\t\tlistener: (this: HTMLElement, e: Event) => any,\r\n\t\toptions?: any,\r\n\t): void {\r\n\t\tel.addEventListener(type, listener, options);\r\n\r\n\t\tthis.registerEventForUnmount(el, type, listener, options);\r\n\t}\r\n\r\n\t// указание новые события, которые должны будут удалиться после unmount\r\n\tregisterEventForUnmount(\r\n\t\tel: HTMLElement | Document | Window,\r\n\t\ttype: keyof GlobalEventHandlersEventMap,\r\n\t\tlistener: (this: HTMLElement, e: Event) => any,\r\n\t\toptions?: any,\r\n\t): void {\r\n\t\tconst eventData = {\r\n\t\t\tel: el,\r\n\t\t\ttype: type,\r\n\t\t\tlistener: listener,\r\n\t\t\toptions: options,\r\n\t\t};\r\n\r\n\t\tthis.unmountEvents.push(eventData);\r\n\t}\r\n\r\n\t// функция перенастройки уже подключенного компонента\r\n\treInit(_options: object): void {\r\n\t\tthrow 'Please, add method reInit() to component: ' + this.componentName;\r\n\t}\r\n\r\n\tstatic detach(nodes: Node[]): void\r\n\tstatic detach(nodes: HTMLElement): void\r\n\r\n\t// удалить элементы из DOM, но не из памяти\r\n\tstatic detach(nodes: any): void {\r\n\t\tif (nodes.forEach) {\r\n\t\t\tnodes.forEach((node: Node) => node.parentElement?.removeChild(node));\r\n\t\t} else {\r\n\t\t\tconst el = nodes;\r\n\t\t\tel.parentElement?.removeChild(el);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport default Component;\r\n","import Worker from '@/components/popup/lib/worker';\r\nimport DOM from '@/core/utils/dom';\r\n\r\n/**\r\n * Глобальные события, для реализации Popup\r\n * Автоматически инициируется при первой загрузке, не является выгружаемым модулем\r\n *\r\n * Если в меню встречает класс .preloader, то событие нажатия на кнопку через enter будет остановлено\r\n */\r\nclass GlobalEvents {\r\n\r\n\tprivate static isInited = false;\r\n\r\n\t/**\r\n\t * Добавить глобальные обработчики\r\n\t *\r\n\t * Добавляются на страницу один раз и навсегда\r\n\t */\r\n\tstatic init(): void {\r\n\t\tif (this.isInited) return;\r\n\r\n\t\tthis.isInited = true;\r\n\r\n\t\tdocument.addEventListener('click', this.onclick);\r\n\t\tdocument.addEventListener('keydown', this.onkeydown);\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик кликов\r\n\t *\r\n\t * Обрабатывает клики внутри Popup\r\n\t */\r\n\tprivate static onclick(e: Event): void {\r\n\t\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\t\t// элементы меню, клик по которым должен его закрыть\r\n\t\tconst elCloser = e.target.closest<HTMLElement>('.closer, a, .a, .top-button');\r\n\t\tif (elCloser) {\r\n\t\t\t// меню\r\n\t\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\r\n\r\n\t\t\t// клик вне меню\r\n\t\t\tif (!elPopup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// элемент имеет модификатор, запрещаюущий закрытие меню по клику на него\r\n\t\t\tif (elCloser.matches('.top-popup-noCloser')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, ссылки с href=\".\" запрещены, они должны быть заменены на .top-popup_listItem-button\r\n\t\t\tif (elCloser.getAttribute('href') === '.') {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\t// клик по кнопке открытия другого меню\r\n\t\t\tif (e.target.matches('[data-top-popup]')) {\r\n\t\t\t\t// список меню, в котором был сделан клик\r\n\t\t\t\tconst elUl = e.target.closest<HTMLElement>('ul');\r\n\r\n\t\t\t\t// элемент меню, по которому был сделан клик\r\n\t\t\t\tconst elItem = e.target.closest<HTMLElement>('a, .a');\r\n\r\n\t\t\t\t// сделать элемент меню, по которому сделан клик активным\r\n\t\t\t\tif (elUl) {\r\n\t\t\t\t\telUl.querySelector('a.top-active, .a.top-active')?.classList.remove('top-active');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elItem) {\r\n\t\t\t\t\telItem.classList.add('top-active');\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// закрыть меню\r\n\t\t\tWorker.close(elPopup);\r\n\t\t}\r\n\r\n\t\t// клик по фону меню\r\n\t\tif (e.target.matches('.top-popup-wrapper')) {\r\n\t\t\tconst elPopup = e.target;\r\n\r\n\t\t\tWorker.close(elPopup);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик нажатия кнопки на клавиатуре\r\n\t */\r\n\tprivate static onkeydown(e: KeyboardEvent): void {\r\n\t\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\r\n\r\n\t\t// нажатие не в меню\r\n\t\tif (!elPopup) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector<HTMLElement>('ul.top-popup_content');\r\n\r\n\t\tswitch (e.key) {\r\n\t\t\tcase 'Escape':\r\n\t\t\t\tWorker.close(elPopup);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Enter':\r\n\t\t\t\t// атоматическое нажатие кнопок при нажатии Enter\r\n\t\t\t\tif (!elUl) {\r\n\t\t\t\t\tif (DOM.querySelectorVisible(elPopup, '.preloader')) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// deprecated, старый код на сайте\r\n\t\t\t\t\tconst elBtn = DOM.querySelectorVisible(elPopup, '.top-popup_footer .go, .top-popup_footer [data-action]');\r\n\t\t\t\t\tif (elBtn instanceof HTMLElement) {\r\n\t\t\t\t\t\telBtn.click();\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Запуск клика последней кнопки, расположенной в footer'е Popup'а, нажатием клавиши Enter\r\n\t\t\t\t\tconst elFooterLastBtn = DOM.querySelectorVisibleLast(elPopup, '.top-popup_footer .top-button');\r\n\t\t\t\t\tif (elFooterLastBtn instanceof HTMLElement) {\r\n\t\t\t\t\t\telFooterLastBtn.click();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// перейти по ссылке по нажатию на Enter\r\n\t\t\t\t// данный функуционал игнорирует SPA\r\n\t\t\t\tconst elLink = DOM.querySelectorVisible(elPopup, 'li > a.top-active');\r\n\t\t\t\tif (elLink && elLink.getAttribute('href')) {\r\n\t\t\t\t\t// фокус может находиться на другой ссылке\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tlocation.href = elLink.getAttribute('href')!;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// кликнуть по элементу меню по нажатию на Enter\r\n\t\t\t\tconst elItem = elPopup.querySelector<HTMLElement>('li > .top-active');\r\n\t\t\t\tif (elItem instanceof HTMLElement) {\r\n\t\t\t\t\telItem.click();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// управление стрелками\r\n\t\t\tcase 'ArrowUp':\r\n\t\t\tcase 'ArrowRight':\r\n\t\t\tcase 'ArrowDown':\r\n\t\t\tcase 'ArrowLeft':\r\n\t\t\t\tif (!elUl) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\r\n\t\t\t\t\tconst elMoreVisible = DOM.querySelectorVisible(\r\n\t\t\t\t\t\telPopup,\r\n\t\t\t\t\t\t'ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore',\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (elMoreVisible) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst elItemActive = elPopup.querySelector<HTMLElement>('ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active')?.parentElement;\r\n\r\n\t\t\t\t// есть подменю\r\n\t\t\t\tif (e.key === 'ArrowRight' && elItemActive) {\r\n\t\t\t\t\t// const elItemMoreActive = elItemActive.querySelector<HTMLElement>('[data-top-popup].top-active');\r\n\t\t\t\t\t// if (elItemMoreActive) {\r\n\t\t\t\t\t// \treturn elItemMoreActive.click();\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tconst elMore = elItemActive.querySelector<HTMLElement>('.top-active > .top-popup_listMore');\r\n\t\t\t\t\tif (elMore instanceof HTMLElement) {\r\n\t\t\t\t\t\treturn elMore.click();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst elsLiVisible = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li:not(.top-popup_liNoSelectable)');\r\n\t\t\t\tconst countLi = elsLiVisible.length;\r\n\r\n\t\t\t\tif (!countLi) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet index = -1;\r\n\t\t\t\tif (elItemActive) {\r\n\t\t\t\t\tindex = elsLiVisible.indexOf(elItemActive);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (e.key === 'ArrowUp' || e.key === 'ArrowLeft') {\r\n\t\t\t\t\tindex--;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// это первый элемен, \"Назад\" должен закрывать окно\r\n\t\t\t\tif (e.key === 'ArrowLeft' && index === -1) {\r\n\t\t\t\t\tif (e.target.matches('input')) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn Worker.close(elPopup);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// это последний элемен, \"Вперед\" не должен ни чего делать\r\n\t\t\t\tif (e.key === 'ArrowRight' && index === countLi) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (index < 0) {\r\n\t\t\t\t\tindex = countLi - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (index > countLi - 1) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\telPopup.querySelectorAll('ul.top-popup_content > li > .top-active').forEach(el => el.classList.remove('top-active'));\r\n\t\t\t\telsLiVisible[index].querySelector(':scope > a, :scope > .a')?.classList.add('top-active');\r\n\r\n\t\t\t\tWorker.scrollToActive(elPopup);\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport default GlobalEvents;\r\n","export default \":root {\\r\\n\\t--top-popup-z-index: 200000;\\r\\n\\t--top-popup-transition-delay: 100ms;\\r\\n\\r\\n\\t--top-popup-background-color: var(--color-layout-front-1);\\r\\n\\t--top-popup-background-color-hover: var(--color-layout-front-3);\\r\\n\\t--top-popup-background-color-active: var(--color-layout-front-4);\\r\\n\\r\\n\\t--top-popup-border-color: var(--color-line-2-opacity);\\r\\n\\t--top-popup-title-background-color: var(--color-layer-1);\\r\\n\\r\\n\\t/* суммарный отсуп от каря popup до элемента */\\r\\n\\t--top-popup-content-padding: calc(var(--top-popup-list-padding) + var(--top-popup-listItem-padding));\\r\\n\\r\\n\\t/* списки */\\r\\n\\t--top-popup-list-padding: var(--top-padding-2);\\r\\n\\r\\n\\t--top-popup-listItem-radius: var(--top-radius-2);\\r\\n\\t--top-popup-listItem-padding: var(--top-padding-2);\\r\\n}\\r\\n\\r\\n.top-popup-front { position: relative; }\\r\\n\\r\\n.top-popup-wrapper {\\r\\n\\t/* см. recalcPosition() */\\r\\n\\t--top-popup-height: 0px;\\r\\n\\t--top-popup-right-bounding: 0px;\\r\\n\\t--top-popup-bottom-bounding: 0px;\\r\\n\\t--top-popup-top: 0px;\\r\\n\\t--top-popup-right: calc(100vw - var(--top-popup-right-bounding));\\r\\n\\t--top-popup-bottom: calc(var(--100vh) - var(--top-popup-bottom-bounding));\\r\\n\\t--top-popup-left: 0px;\\r\\n\\r\\n\\ttext-align: initial; white-space: normal; word-break: normal;\\r\\n\\tposition: absolute; z-index: 200000;\\r\\n}\\r\\n\\r\\n.top-popup-wrapper:not(.top-popup-wrapper-shown) { overflow: hidden; }\\r\\n\\r\\n/* top-popupPanel */\\r\\n.top-popupPanel {\\r\\n\\tcursor: default;\\r\\n\\tbox-shadow: var(--top-shadow-b);\\r\\n\\tborder-radius: 14px;\\r\\n\\tbackground: var(--top-popup-background-color);\\r\\n\\tposition: absolute; overflow: hidden;\\r\\n\\tdisplay: flex; flex-direction: column;\\r\\n}\\r\\n\\r\\n/* position */\\r\\n.top-popup-wrapper > * {\\r\\n\\topacity: 0;\\r\\n\\ttransition: opacity var(--top-popup-transition-delay) linear, transform var(--top-popup-transition-delay) linear;\\r\\n}\\r\\n\\r\\n.top-popup-wrapper.p0 > * { transform: translateY(-8px); }\\r\\n\\r\\n.top-popup-wrapper.p1 > * { transform: translateY(8px); }\\r\\n\\r\\n.top-popup-wrapper.p2 > * { transform: translateX(8px); }\\r\\n\\r\\n.top-popup-wrapper.p3 > * { transform: translateY(8px); }\\r\\n\\r\\n.top-popup-wrapper.p4 > * { transform: translateX(-8px); }\\r\\n\\r\\n.top-popup-wrapper-shown:not(.top-popup-wrapper-closed) > * {opacity: 1;transform: translate(0, 0) !important;}\\r\\n\\r\\n.top-popup-wrapper.p0 > .top-popup { top: calc(-16px); left: calc(0px - 8px); }\\r\\n\\r\\n.top-popup-wrapper.p1 > .top-popup { bottom: calc(100% + 8px); }\\r\\n\\r\\n.top-popup-wrapper.p2 > .top-popup { left: calc(100% + 8px); }\\r\\n\\r\\n.top-popup-wrapper.p3 > .top-popup { top: calc(100% + 8px); }\\r\\n\\r\\n.top-popup-wrapper.p4 > .top-popup { right: calc(100% + 8px); }\\r\\n\\r\\n.top-popup-wrapper.p2 > .top-popup,\\r\\n.top-popup-wrapper.p4 > .top-popup { margin-top: -10px; }\\r\\n\\r\\n.top-popup-wrapper.p1.with_notch > .top-popup { margin-bottom: 5px; }\\r\\n\\r\\n.top-popup-wrapper.p2.with_notch > .top-popup { margin-left: 5px; }\\r\\n\\r\\n.top-popup-wrapper.p3.with_notch > .top-popup { margin-top: 5px; }\\r\\n\\r\\n.top-popup-wrapper.p4.with_notch > .top-popup { margin-right: 5px; }\\r\\n\\r\\n.top-popup-wrapper.invert-x > .top-popup { right: 0; }\\r\\n\\r\\n.top-popup-wrapper.invert-y > .top-popup { bottom: 0; }\\r\\n\\r\\n/* notch */\\r\\n.top-popup-wrapper > .notch { border: 7.4px solid transparent; position: absolute; display: block; }\\r\\n\\r\\n.top-popup-wrapper.p1 > .notch { border-bottom: 0; border-top: 7.4px solid var(--color-layout-front-1); margin: 0 0 7.4px -7.4px; bottom: 100%; left: 50% }\\r\\n\\r\\n.top-popup-wrapper.p2 > .notch { border-left: 0; border-right: 7.4px solid var(--color-layout-front-1); margin: 0 0 -7.4px 7.4px; bottom: 50%; left: 100%; }\\r\\n\\r\\n.top-popup-wrapper.p3 > .notch { border-top: 0; border-bottom: 7.4px solid var(--color-layout-front-1); margin: 7.4px 0 0 -7.4px; top: 100%; left: 50%; }\\r\\n\\r\\n.top-popup-wrapper.p4 > .notch { border-right: 0; border-left: 7.4px solid var(--color-layout-front-1); margin: 0 7.4px -7.4px 0; bottom: 50%; right: 100%; }\\r\\n\\r\\n.top-popup-wrapper.p1 > .notch-border { border-top-color: rgba(0, 0, 0, 0.05); margin-bottom: 6px; }\\r\\n\\r\\n.top-popup-wrapper.p2 > .notch-border { border-right-color: rgba(0, 0, 0, 0.05); margin-left: 6px; }\\r\\n\\r\\n.top-popup-wrapper.p3 > .notch-border { border-bottom-color: rgba(0, 0, 0, 0.05); margin-top: 6px; }\\r\\n\\r\\n.top-popup-wrapper.p4 > .notch-border { border-left-color: rgba(0, 0, 0, 0.05); margin-right: 6px; }\\r\\n\\r\\n/* common */\\r\\n.top-popup_header,\\r\\n.top-popup_content,\\r\\n.top-popup_footer { font-size: 14px; }\\r\\n\\r\\n.top-popup_header,\\r\\n.top-popup_footer { display: flex; align-items: center; justify-content: space-between; }\\r\\n\\r\\n/* header */\\r\\n.top-popup_header {\\r\\n\\tcolor: var(--color-text-1);\\r\\n\\tborder-bottom: 1px solid var(--top-popup-border-color);\\r\\n\\tpadding: var(--top-padding-3);\\r\\n\\tfont-weight: 600;\\r\\n}\\r\\n\\r\\n.top-popup_header > * { font-weight: 400; }\\r\\n\\r\\n.top-popup_header > .a { cursor: pointer;}\\r\\n\\r\\n.top-popup_header > .a:hover { color: var(--color-text-primary); }\\r\\n\\r\\n.top-popup_headerButton { width: 60px; }\\r\\n\\r\\n/* widget */\\r\\n.top-popup_widget {\\r\\n\\tpadding: var(--top-padding-2) var(--top-padding-2) 0 var(--top-padding-2);\\r\\n}\\r\\n\\r\\n/* content */\\r\\n.top-popup_content {\\r\\n\\tmargin: 0;\\r\\n\\tflex-grow: 1;\\r\\n\\toverflow-y: auto;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tgap: var(--top-gap-4);\\r\\n\\r\\n\\t-webkit-overflow-scrolling: touch;\\r\\n}\\r\\n\\r\\ndiv.top-popup_content {\\r\\n\\tcolor: var(--color-text-1);\\r\\n\\tpadding: var(--top-popup-content-padding);\\r\\n}\\r\\n\\r\\ndiv.top-popup_content > * { flex-shrink: 0; }\\r\\n\\r\\ndiv.top-popup_content > .top-button { margin: 0; }\\r\\n\\r\\ndiv.top-popup_content .top-unwrap {\\r\\n\\t--top-unwrap-x: var(--top-popup-content-padding);\\r\\n}\\r\\n\\r\\nul.top-popup_content {\\r\\n\\tcolor: var(--color-text-1);\\r\\n\\tpadding: var(--top-popup-list-padding);\\r\\n\\tgap: 2px;\\r\\n}\\r\\n\\r\\nul.top-popup_content .top-unwrap {\\r\\n\\t--top-unwrap-x: var(--top-popup-list-padding);\\r\\n}\\r\\n\\r\\n.top-popup_listItem {\\r\\n\\tborder-radius: var(--top-popup-listItem-radius);\\r\\n\\tpadding: var(--top-popup-listItem-padding);\\r\\n\\tline-height: 1 !important;\\r\\n}\\r\\n\\r\\nul.top-popup_content li { margin: 0; list-style: none; display: flex; position: relative }\\r\\n\\r\\nul.top-popup_content li > * { flex-grow: 1; }\\r\\n\\r\\nul.top-popup_content li > a:not(.top-button),\\r\\nul.top-popup_content li > .a {\\r\\n\\tcursor: pointer;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tborder-radius: var(--top-popup-listItem-radius);\\r\\n\\tbackground: var(--top-popup-background-color);\\r\\n\\tpadding: var(--top-popup-listItem-padding);\\r\\n\\tcolor: var(--color-text-1) !important; font-size: 14px; font-weight: normal !important; text-decoration: none !important; font-style: normal;\\r\\n\\tline-height: 1 !important;\\r\\n\\tdisplay: flex; flex: 1 1 100%; align-items: center;\\r\\n\\ttransition: background-color 0.1s ease-in-out;\\r\\n}\\r\\n\\r\\n.top-popup-wrapper-no_animate ul.top-popup_content li > a:not(.top-button),\\r\\n.top-popup-wrapper-no_animate ul.top-popup_content li > .a { transition: none; }\\r\\n\\r\\nul.top-popup_content li > a:not(.top-button):hover,\\r\\nul.top-popup_content li > .a:hover { background: var(--top-popup-background-color-hover); }\\r\\n\\r\\nul.top-popup_content li > a:not(.top-button).top-active,\\r\\nul.top-popup_content li > .a.top-active {\\r\\n\\t--top-icon-color: var(--color-text-primary) !important;\\r\\n\\r\\n\\tbackground: var(--top-popup-background-color-active);\\r\\n}\\r\\n\\r\\n.top-popup_content + .top-popup_content { padding-top: 0; }\\r\\n\\r\\n/* listTitle */\\r\\n.top-popup_listItem-title {\\r\\n\\tbackground: var(--color-layer-1);\\r\\n\\tcolor: var(--color-text-1); font-size: 12px;\\r\\n}\\r\\n\\r\\n/* listDelimiter */\\r\\n.top-popup_listItem-delimiter {\\r\\n\\tborder-radius: 3px;\\r\\n\\tbackground: var(--top-popup-border-color);\\r\\n\\theight: 1px;\\r\\n\\tpadding: 0;\\r\\n\\tmargin: 4px;\\r\\n}\\r\\n\\r\\n/* listMore */\\r\\n.top-popup_listMore {\\r\\n\\tfont-size: 20px;\\r\\n\\tmargin: calc(0px - var(--top-popup-listItem-padding)) calc(0px - var(--top-popup-listItem-padding) / 2) calc(0px - var(--top-popup-listItem-padding)) 0;\\r\\n}\\r\\n\\r\\n.top-popup_listMore.top-button { margin: 0; }\\r\\n\\r\\nul.top-popup_content li > .a.top-popup_listMore {\\r\\n\\ttext-align: center;\\r\\n\\tflex-basis: 10px;\\r\\n}\\r\\n\\r\\nul.top-popup_content li > .a.top-popup_listMore:before { color: var(--color-text-2); }\\r\\n\\r\\nul.top-popup_content li > * > .top-popup_listMore {\\r\\n\\tmargin-left: auto;\\r\\n\\tcolor: var(--color-layer-4);\\r\\n\\tfont-size: 14px;\\r\\n}\\r\\n\\r\\nul.top-popup_content li > * > i.top-popup_listMore:hover,\\r\\nul.top-popup_content li > * > i.top-popup_listMore.top-active { color: var(--color-text-primary); }\\r\\n\\r\\nul.top-popup_content li > * > i.top-popup_listMore:before {\\r\\n\\ttransform: rotate(90deg);\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\nul.top-popup_content li a.close { background: none !important; }\\r\\n\\r\\n/* data-top-icon */\\r\\n.top-popup_content > [data-top-icon]:before {\\r\\n\\t--top-icon-size: 20px;\\r\\n}\\r\\n\\r\\nul.top-popup_content li > [data-top-icon]:not(.top-button) {\\r\\n\\t--top-icon-color: var(--color-text-3);\\r\\n\\t--top-icon-size: 20px;\\r\\n\\t--top-icon-width: 20px;\\r\\n}\\r\\n\\r\\nul.top-popup_content li > [data-top-icon]:not(.top-button):before {\\r\\n\\theight: 1rem; margin-right: 8px; transition: color 0.1s;\\r\\n}\\r\\n\\r\\nul.top-popup_content li:hover > [data-top-icon]:not(.top-button) {\\r\\n\\t--top-icon-color: var(--color-text-2);\\r\\n}\\r\\n\\r\\n/* footer */\\r\\n.top-popup_footer {\\r\\n\\t/*padding: var(--top-popup-list-padding);*/\\r\\n\\tpadding: var(--top-padding-3);\\r\\n\\tborder-top: 1px solid var(--top-popup-border-color);\\r\\n\\tdisplay: flex;\\r\\n\\tgap: var(--top-gap-2);\\r\\n\\tjustify-content: flex-end;\\r\\n}\\r\\n\\r\\n/* footerSupportLink */\\r\\n.top-popup_footerSupportLink {\\r\\n\\tmargin-right: auto;\\r\\n}\\r\\n\\r\\n/* Виджеты */\\r\\n.top-popup > [data-widget] { padding: 0 var(--top-popup-list-padding); }\\r\\n\\r\\n.top-popup > [data-widget] + hr { margin: 0 var(--top-popup-list-padding); }\\r\\n\\r\\n.top-popup .placeholder {\\r\\n\\tborder: 1px solid #E0D9D9 !important; border-right: none !important; border-left: none !important; background: #F9F9F9 !important; margin: -1px 0; z-index: 1;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n/* компоненты */\\r\\n.top-popup-wrapper.simple_list > .top-popup { min-width: 0; white-space: nowrap; }\\r\\n\\r\\n.top-popup_content .top-column { display: flex; flex-direction: column; gap: 4px; }\\r\\n\\r\\nhtml .top-popup .top-popup_content li > .top-button {\\r\\n\\tmargin: calc(var(--top-popup-listItem-padding) / 2) var(--top-popup-listItem-padding);\\r\\n}\\r\\n\\r\\n.top-popup li .check_all,\\r\\n.top-popup li .clear_all { cursor: pointer; color: var(--color-text-primary); padding: 8px; display: inline-block; }\\r\\n\\r\\n.top-popup li .check_all:hover,\\r\\n.top-popup li .clear_all:hover { text-decoration: underline; }\\r\\n\\r\\n.top-popup li .clear_all { display: none; }\\r\\n\\r\\n/* table */\\r\\n.top-popup_content table { margin: -9px 0; }\\r\\n\\r\\n.top-popup_content table td,\\r\\n.top-popup_content table th { padding: 9px var(--top-popup-listItem-padding) 9px 0; vertical-align: top; }\\r\\n\\r\\n.top-popup_content table th { width: 40%; font-weight: 600; white-space: nowrap; }\\r\\n\\r\\n/* формы */\\r\\nul.top-popup_content .a > [type=\\\"checkbox\\\"],\\r\\nul.top-popup_content .a > [type=\\\"radio\\\"] { margin: -8px 0 -8px auto; }\\r\\n\\r\\n/* deprecated */\\r\\nul.top-popup_content a > [class*=icon],\\r\\nul.top-popup_content i.a > [class*=icon] {\\r\\n\\ttransition: 0.1s;\\r\\n}\\r\\n\\r\\n.top-popup .buttons { border-radius: 0 0 4px 4px; border-top: 1px solid #BDC3C7; background: #ECF0F1; padding: 10px 15px; margin: 10px -15px -10px -15px; white-space: nowrap; }\\r\\n\\r\\n.top-popup_footer [class*=btn]:not(.btn-transparent) { min-width: 100px; padding: 5px 14px; margin-left: 10px; }\\r\\n\\r\\n.top-popup_footer [class*=btn]:first-child { margin-left: 0; }\\r\\n\\r\\n.top-popup_footer .btn.full_width { margin: 0; flex-grow: 1; }\\r\\n\"","export default \":root {\\r\\n\\t--top-popup-list-padding: 0px;\\r\\n\\r\\n\\t--top-popup-listItem-radius: 0px;\\r\\n\\t--top-popup-listItem-padding: var(--top-padding-4);\\r\\n}\\r\\n\\r\\nhtml.with_popup { background: #808080; }\\r\\n\\r\\n.top-popup-wrapper {\\r\\n\\t--top-popup-footer-offset: 25px;\\r\\n\\r\\n\\twidth: auto !important; height: auto !important;\\r\\n\\tposition: fixed; top: 0 !important; right: 0 !important; left: 0 !important; overflow: hidden;\\r\\n\\ttransition: background 0.3s;\\r\\n}\\r\\n\\r\\n.top-popup-wrapper-shown:not(.top-popup-wrapper-closed) { background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(1px); }\\r\\n.top-popup-wrapper-shown:not(.top-popup-wrapper-closed) > .top-popup { opacity: 1 !important; }\\r\\n\\r\\n.top-popup {\\r\\n\\tborder-radius: 8px 8px 0 0; width: auto !important; max-height: calc(100% - var(--header-height, 0px) - var(--toolbar-height, 0px) - 12px); margin: 0 !important;\\r\\n\\ttop: auto !important; right: 0 !important; bottom: var(--toolbar-height, 0px) !important; left: 0 !important;\\r\\n\\tdisplay: flex; flex-direction: column;\\r\\n\\r\\n\\t/* невозможно опустить элемент вниз за экран на 100%, fix: opacity и translateY(80%) */\\r\\n\\ttransform: translateY(80%);\\r\\n\\r\\n\\ttransition: opacity 0.3s, transform 0.3s;\\r\\n}\\r\\n\\r\\n/* from top */\\r\\n.top-popup-wrapper.p-from-top {\\r\\n\\t--top-popup-footer-offset: 0px;\\r\\n\\r\\n\\ttop: var(--header-height, 0px) !important;\\r\\n}\\r\\n.with_dialog .top-popup-wrapper.p-from-top { top: 50px !important; }\\r\\n.top-popup-wrapper.p-from-top > .top-popup {\\r\\n\\tborder-radius: 0 0 8px 8px; max-height: calc(100% - 24px); top: 0 !important; bottom: auto !important;\\r\\n\\ttransform: translateY(calc(-100% - 24px));\\r\\n}\\r\\n\\r\\n/* widget */\\r\\n.top-popup_widget { padding: var(--top-padding-2);}\\r\\n.top-popup_widget:not(.p-from-top) { order: 10; }\\r\\n\\r\\n/* content */\\r\\nul.top-popup_content {\\r\\n\\tgap: 0;\\r\\n}\\r\\nul.top-popup_content li:not(:last-child) { border-bottom: 1px solid var(--top-popup-border-color); }\\r\\n\\r\\n.top-popup-wrapper.top-style_alt > .top-popup > ul > li { border-bottom: none; }\\r\\n\\r\\n/* footer */\\r\\n.top-popup_footer {\\r\\n\\tflex-direction: column-reverse;\\r\\n}\\r\\n.top-popup_footer > .top-button {\\r\\n\\t--top-forms-base-height: var(--top-forms-base-height_l);\\r\\n\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n/* listTitle */\\r\\nul.top-popup_content .top-popup_listItem-title {\\r\\n\\t--top-popup-padding-v: 12px;\\r\\n}\\r\\n\\r\\n/* listDelimiter */\\r\\nul.top-popup_content .top-popup_listItem-delimiter { background: var(--color-line-1-opacity); height: 4px; margin: 0; }\\r\\nul.top-popup_content li:first-child > .top-popup_listItem-delimiter { border-top: 1px solid var(--top-popup-border-color); }\\r\\n\"","export default \"html:not(.with_dialog) { margin-right: 0 !important; }\\r\\n\\r\\n.top-popup { min-width: 250px; max-width: calc(100vw - var(--top-popup-left) - 16px); max-height: calc(var(--top-popup-bottom) + var(--top-popup-height)); }\\r\\n.top-popup-wrapper.invert-x > .top-popup { max-width: calc(100vw - var(--top-popup-right) - 16px); }\\r\\n.top-popup-wrapper.invert-y > .top-popup { max-height: calc(100vh - var(--top-popup-bottom) - 16px); }\\r\\n\\r\\n/* position */\\r\\n.top-popup-wrapper.p1 > .top-popup { max-height: calc(var(--top-popup-top) - var(--header-height, 0px) - 16px); }\\r\\n.top-popup-wrapper.p3 > .top-popup { max-height: calc(var(--top-popup-bottom) - 16px); }\\r\\n.top-popup-wrapper.p2 > .top-popup { max-width: calc(var(--top-popup-right) - 16px); }\\r\\n.top-popup-wrapper.p4 > .top-popup { max-width: calc(var(--top-popup-left) - 16px); }\\r\\n\\r\\n/* notch */\\r\\n.top-popup-wrapper.p1.with_notch > .top-popup,\\r\\n.top-popup-wrapper.p3.with_notch > .top-popup { margin-left: -16px !important; }\\r\\n.top-popup-wrapper.p1.with_notch > .notch,\\r\\n.top-popup-wrapper.p3.with_notch > .notch { margin-left: -8px !important; }\\r\\n\\r\\n.top-popup-wrapper.p1.with_notch.invert-x,\\r\\n.top-popup-wrapper.p3.with_notch.invert-x { margin-left: 3px !important; }\\r\\n.top-popup-wrapper.p1.with_notch.invert-x > .notch,\\r\\n.top-popup-wrapper.p3.with_notch.invert-x > .notch { margin-left: -9px !important; }\\r\\n\\r\\n/* listMore */\\r\\nul.top-popup_content li > * > i.top-popup_listMore { visibility: hidden; transition: none; }\\r\\nul.top-popup_content li:hover > * > i.top-popup_listMore,\\r\\nul.top-popup_content li > *.top-active > i.top-popup_listMore,\\r\\nul.top-popup_content li > * > i.top-popup_listMore.top-active { visibility: visible; }\\r\\n\"","import Core from '@/core/core/core';\r\nimport Component from '@/components/component';\r\nimport DOM from '@/core/utils/dom';\r\nimport Worker from '@/components/popup/lib/worker';\r\nimport GlobalEvents from '@/components/popup/lib/popup.globalEvents';\r\n\r\nimport css from '@/components/popup/popup/style/popup.css?raw';\r\nimport cssM from '@/components/popup/popup/style/popup.m.css?raw';\r\nimport cssPC from '@/components/popup/popup/style/popup.pc.css?raw';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\n\r\nCore.insertStyleToPage(css);\r\nCore.insertStyleToPage(cssM, 'm');\r\nCore.insertStyleToPage(cssPC, 'pc');\r\n\r\nexport interface PopupOptions {\r\n\tpopup?: string,\r\n\tid?: string,\r\n\tp?: number,\r\n\tnotch?: boolean,\r\n\tclass?: string,\r\n\tposBy?: 'left' | 'right' | 'fixed' | Element,\r\n\tfrontSelector?: string,\r\n\tinvertX?: boolean,\r\n\topenByHover?: boolean,\r\n\tuseOriginal?: boolean,\r\n\ttransitionDuration?: number,\r\n\tisFullScreen?: boolean,\r\n}\r\n\r\n/**\r\n * Основной объект js компонента TopPopup\r\n *\r\n * Добавляет jQuery события на this.el, если jQuery загружен:\r\n *\r\n * - aftershow.top-menu-popup\r\n * - afterclose.top-menu-popup\r\n */\r\nexport class Popup extends Component {\r\n\r\n\tstatic componentName = 'TopPopup';\r\n\r\n\tdeclare el: HTMLElement; // элемент, вызвавший открытие Popup\r\n\telActiveByDefault: boolean | undefined; // элемент уже имеет класс top-active перед открытием окна\r\n\telPopup: HTMLElement | undefined; // Popup .top-popup-wrapper\r\n\telPopupInner: HTMLElement | undefined; // контентная часть Popup .top-popup\r\n\telPopupHeader: HTMLElement | undefined | null;\r\n\telPopupWidget: HTMLElement | undefined | null;\r\n\telPopupBody: HTMLElement | undefined | null;\r\n\telPopupFooter: HTMLElement | undefined | null;\r\n\telFront: HTMLElement | undefined | null;\r\n\r\n\tpopupParent: Popup | undefined;\r\n\r\n\t$: JQuery<HTMLElement> | undefined; // только, если есть jQuery\r\n\r\n\telStartPosition: HTMLElement | undefined | null; // используется для useOriginal\r\n\tshift = {\r\n\t\ttop: 0,\r\n\t\tleft: 0,\r\n\t};\r\n\tisClosed = false; // флаг того, что меню закрыто\r\n\tisFirstClick = true;\r\n\ttype: string | undefined; // selector или html\r\n\r\n\toptions: PopupOptions = {\r\n\t\tpopup: '', // selector, text\r\n\t\tp: 0, // положение меню (0 - над элементом, 1 - сверху, 2 - справа, 3 - снизу, 4 слева)\r\n\t\tnotch: false, // отображать ли клювик\r\n\r\n\t\tclass: '', // класс, добавляемый меню\r\n\r\n\t\tposBy: 'left', // способ привязки позиционирования меню (left/right - левый/правый край родителя, fixed - по окну)\r\n\t\tfrontSelector: '',\r\n\t\tinvertX: false, // базовая ордината - правая граница элемента, а не левая\r\n\t\topenByHover: false, // открывать при наведении\r\n\r\n\t\tuseOriginal: false, // использовать оригинальный шаблон, без клонирвоания (для сохранения состояния меню)\r\n\r\n\t\ttransitionDuration: 100, // значение прописано в css\r\n\r\n\t\tisFullScreen: false,\r\n\t};\r\n\r\n\tevents = {};\r\n\r\n\t/**\r\n\t * Создать Popup\r\n\t * @param el - элемент, открывающий меню\r\n\t * @param options\r\n\t */\r\n\tconstructor(el: HTMLElement, options: PopupOptions) {\r\n\t\tsuper();\r\n\r\n\t\tthis.init(Popup.componentName, el, options);\r\n\t}\r\n\r\n\tasync mount(): Promise<void> {\r\n\t\tif (!(this.el instanceof HTMLElement)) return;\r\n\t\tconst vueConnector = this.vueGetComponent();\r\n\r\n\t\tif (this.el.closest('.top-popup-wrapper')) this.popupParent = Worker.getPopup(this.el.closest('.top-popup-wrapper')!);\r\n\r\n\t\tawait this.mountJQuery();\r\n\r\n\t\tif (DOM.css(this.el, 'position') !== 'absolute') {\r\n\t\t\tthis.el.style.position = 'relative';\r\n\t\t}\r\n\r\n\t\tthis.el.dataset.topPopupOpened = 'opened';\r\n\t\tthis.elActiveByDefault = this.el.classList.contains('top-active');\r\n\t\tthis.el.classList.add('top-active');\r\n\r\n\t\tif (vueConnector) {\r\n\t\t\t// компонент vue Popup\r\n\t\t\tthis.type = 'vue';\r\n\r\n\t\t\tthis.options.popup = '';\r\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup);\r\n\t\t} else if (this.options.popup?.match(/^[#.]/)) {\r\n\t\t\t// selector\r\n\t\t\tthis.type = 'selector';\r\n\r\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}.template`) || undefined;\r\n\t\t} else {\r\n\t\t\t// html\r\n\t\t\tthis.type = 'html';\r\n\r\n\t\t\tif (this.options.useOriginal) {\r\n\t\t\t\tthrow ('Option useOriginal not allowed for text templates');\r\n\t\t\t}\r\n\r\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup ?? '');\r\n\t\t}\r\n\r\n\t\tif (!this.elPopup || vueConnector?.opened) {\r\n\t\t\t// возможно шаблон не найден, так как он используется в уже открытом меню\r\n\t\t\tif (this.options.useOriginal || vueConnector?.opened) {\r\n\t\t\t\t// закрыть открытое меню\r\n\t\t\t\tif (vueConnector?.opened) {\r\n\t\t\t\t\tthis.elPopup = vueConnector.popup.elPopup;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}.top-popup-wrapper-shown`) || undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.elPopup) {\r\n\t\t\t\t\tthis.el.dataset.topPopupOpened = '';\r\n\r\n\t\t\t\t\tif (!this.elActiveByDefault) {\r\n\t\t\t\t\t\tthis.el.classList.remove('top-active');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tWorker.close(this.elPopup);\r\n\r\n\t\t\t\t\t// повторит попытку открыть меню\r\n\t\t\t\t\tsetTimeout(() => this.mount(), this.options.transitionDuration);\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthrow ('Option useOriginal state allowed only elements .template');\r\n\t\t\t}\r\n\r\n\t\t\t// возможно вместо шаблона используется другой элемент\r\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}:not(.top-popup-wrapper)`) || undefined;\r\n\t\t}\r\n\r\n\t\tif (!this.elPopup) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.options.useOriginal) {\r\n\t\t\tthis.elStartPosition = this.elPopup.closest<HTMLElement>('.top-popup-el-start-position');\r\n\t\t\tif (!this.elStartPosition) {\r\n\t\t\t\tthis.elStartPosition = DOM.wrap(this.elPopup, 'i');\r\n\t\t\t\tthis.elStartPosition.classList.add('top-popup-el-start-position', 'hidden');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.elPopup = this.elPopup.cloneNode(true) as HTMLElement;\r\n\r\n\t\t\t// вывод в меню копии произвольного элемента\r\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template')) {\r\n\t\t\t\tthis.elPopup.classList.remove('hidden');\r\n\r\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\r\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\r\n\t\t\t}\r\n\r\n\t\t\tif (this.type === 'html') {\r\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\r\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\r\n\r\n\t\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// вложенный Popup\r\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template') || this.type === 'html' || this.type === 'vue') {\r\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '[data-top-popup]').forEach(el => {\r\n\t\t\t\t\tif (el instanceof HTMLElement) el.dataset.topPopupPosBy = 'fixed';\r\n\t\t\t\t});\r\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '.top-popup-wrapper').forEach(el => el.remove());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tWorker.decoratorBeforeOpen(this);\r\n\r\n\t\tif (vueConnector) {\r\n\t\t\tthis.options.class = vueConnector.classRef.value;\r\n\t\t\tif (vueConnector.transitionDurationRef.value !== undefined) {\r\n\t\t\t\tthis.options.transitionDuration = vueConnector.transitionDurationRef.value;\r\n\r\n\t\t\t\tif (this.elPopup instanceof HTMLElement) {\r\n\t\t\t\t\tthis.elPopup.style.setProperty(\r\n\t\t\t\t\t\t'--top-popup-transition-delay',\r\n\t\t\t\t\t\tthis.options.transitionDuration + 'ms',\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elPopupInner = document.createElement('div');\r\n\t\tthis.elPopupInner.classList.add('top-popupPanel', 'top-popup');\r\n\r\n\t\twhile (this.elPopup.firstChild) {\r\n\t\t\tthis.elPopupInner.appendChild(this.elPopup.firstChild);\r\n\t\t}\r\n\r\n\t\tthis.elPopup.append(this.elPopupInner);\r\n\r\n\t\tthis.elPopup.classList.add('top-popup-wrapper');\r\n\r\n\t\tif (this.options.class) {\r\n\t\t\tconst classes = this.options.class.split(' ');\r\n\t\t\tthis.elPopup.classList.add(...classes);\r\n\t\t}\r\n\r\n\t\tif (this.options.notch) {\r\n\t\t\tthis.elPopup.classList.add('with_notch');\r\n\t\t\tthis.elPopup.insertAdjacentHTML('beforeend', '<i class=\"notch notch-border\"></i><i class=\"notch\"></i>');\r\n\t\t}\r\n\r\n\t\tawait this.vueOpen();\r\n\r\n\t\tthis.elPopupHeader = this.elPopupInner.querySelector<HTMLElement>('.top-popup_header');\r\n\t\tthis.elPopupWidget = this.elPopupInner.querySelector<HTMLElement>('.top-popup_widget');\r\n\t\tthis.elPopupBody = this.elPopupInner.querySelector<HTMLElement>('.top-popup_content');\r\n\t\tthis.elPopupFooter = this.elPopupInner.querySelector<HTMLElement>('.top-popup_footer');\r\n\r\n\t\tconst existsWidgetSearch = !!this.elPopup.querySelector('[data-widget=\"search\"]');\r\n\r\n\t\tif (this.options.isFullScreen && !existsWidgetSearch) {\r\n\t\t\tconst i18n = useI18n();\r\n\r\n\t\t\tif (!this.elPopupHeader && i18n.Common.Close) {\r\n\t\t\t\tthis.elPopupHeader = DOM.genEl('i', { class: 'top-popup_header' });\r\n\t\t\t\tthis.elPopupInner.prepend(this.elPopupHeader);\r\n\r\n\t\t\t\tthis.elPopupHeader.prepend(DOM.genEl('i', { class: 'a closer' }, i18n.Common.Close));\r\n\t\t\t\tthis.elPopupHeader.append(DOM.genEl('i', { class: 'top-popup_headerButton' }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tDOM.storage(this.elPopup, Popup.componentName, this);\r\n\r\n\t\tif (this.options.frontSelector) {\r\n\t\t\tthis.elFront = document.querySelector<HTMLElement>(this.options.frontSelector);\r\n\t\t}\r\n\t\tif (!this.elFront) {\r\n\t\t\tthis.elFront = this.el.closest<HTMLElement>('.top-popup-front');\r\n\t\t}\r\n\t\tif (!this.elFront) {\r\n\t\t\tthis.elFront = document.body;\r\n\t\t}\r\n\r\n\t\tif (this.elPopup instanceof HTMLElement) {\r\n\t\t\tthis.elPopup.style.width = this.el.offsetWidth + 'px';\r\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\r\n\t\t\tthis.elPopup.style.top = this.el.offsetTop + 'px';\r\n\t\t\tthis.elPopup.style.right = parseInt(this.el.style.right || '0') + 'px';\r\n\t\t\tthis.elPopup.style.bottom = parseInt(this.el.style.bottom || '0') + 'px';\r\n\t\t}\r\n\r\n\t\tthis.el.parentElement?.insertBefore(this.elPopup, this.el);\r\n\t\tthis.elPopup.classList.remove('template');\r\n\r\n\t\tif (this.options.invertX) {\r\n\t\t\tthis.elPopup.classList.add('invert-x');\r\n\t\t}\r\n\r\n\t\tlet fromTop = !!this.el.closest('.modal-header');\r\n\t\tif (!fromTop) {\r\n\t\t\tfromTop = !!this.el.closest('#top_panel');\r\n\t\t}\r\n\t\tif (!fromTop) {\r\n\t\t\tfromTop = !!this.el.closest('#secondmenu');\r\n\t\t}\r\n\t\tif (fromTop) {\r\n\t\t\tthis.elPopup.classList.add('p-from-top');\r\n\t\t}\r\n\r\n\t\t// появление с анимацией\r\n\t\tsetTimeout(() => this.elPopup?.classList.add('top-popup-wrapper-shown'));\r\n\r\n\t\tif (this.elFront && !this.elFront.matches('body')) {\r\n\t\t\tthis.elFront.append(this.elPopup);\r\n\r\n\t\t\tthis.shift.top = DOM.offset(this.el).top - this.el.offsetTop - DOM.offset(this.elFront).top;\r\n\t\t\tthis.shift.left = DOM.offset(this.el).left - this.el.offsetLeft - DOM.offset(this.elFront).left;\r\n\r\n\t\t\t// position() не учитывает margin, замечено для flex\r\n\t\t\tthis.shift.top -= parseInt(this.el.style['margin-top'] || 0);\r\n\t\t\tthis.shift.left -= parseInt(this.el.style['margin-left'] || 0);\r\n\r\n\t\t\tif (this.elPopup instanceof HTMLElement) {\r\n\t\t\t\tthis.elPopup.style.top = parseInt(this.elPopup.style.top || '0') + this.shift.top + 'px';\r\n\t\t\t\tthis.elPopup.style.left = parseInt(this.elPopup.style.left || '0') + this.shift.left + 'px';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.$ && Core.$) {\r\n\t\t\tthis.$.trigger('aftershow.top-menu-popup', [Core.$(this.elPopup)]);\r\n\t\t}\r\n\r\n\t\tthis.recalcPosition();\r\n\r\n\t\tthis.elPopup.setAttribute('tabindex', '0');\r\n\t\tthis.focus();\r\n\r\n\t\tWorker.decoratorAfterOpen(this);\r\n\r\n\t\tthis.mountEvents();\r\n\t}\r\n\r\n\tasync mountJQuery() {\r\n\t\tif (!Core.$) return;\r\n\r\n\t\tthis.$ = Core.$(this.el);\r\n\t}\r\n\r\n\t/**\r\n\t * Выполнить фокусировку на нужный элемент после открытия окна\r\n\t */\r\n\tfocus(): void {\r\n\t\tlet el: Element | null;\r\n\r\n\t\tif (this.elPopup) {\r\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup-autofocus');\r\n\r\n\t\t\t// поле ввода\r\n\t\t\tif (!el) {\r\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, ':read-write, select:not(:disabled)');\r\n\t\t\t}\r\n\r\n\t\t\t// кнопка\r\n\t\t\tif (!el) {\r\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup_footer .top-button');\r\n\t\t\t}\r\n\r\n\t\t\tif (!el) {\r\n\t\t\t\tel = this.elPopup;\r\n\t\t\t}\r\n\r\n\t\t\t// выполнить фокусировку сразу, для применения необъодимых стилей\r\n\t\t\tif (el instanceof HTMLElement) el.focus();\r\n\r\n\t\t\t// выполнить фокусировку после завершения анимации открытия popup\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (el instanceof HTMLElement) el.focus();\r\n\t\t\t}, this.options.transitionDuration);\r\n\t\t}\r\n\t}\r\n\r\n\tmountEvents(): void {\r\n\t\t// закрытие при клике вне контекстного меню\r\n\t\tthis.addEventListenerWithUnmount(document, 'mousedown', (e) => this.onMousedown(e as MouseEvent));\r\n\r\n\t\tif (this.elPopup && this.elPopupInner) {\r\n\t\t\t// закрыть другие меню\r\n\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'focus', (e) => this.onFocus(e as FocusEvent));\r\n\r\n\t\t\t// автоматическое закрытие при отведении мыши\r\n\t\t\tif (this.options.openByHover) {\r\n\t\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\r\n\t\t\t\tthis.addEventListenerWithUnmount(this.elPopupInner, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// не скроллить страницу\r\n\t\tif (this.options.isFullScreen && this.elPopupBody) {\r\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupBody, 'touchmove', (e) => this.onTouchmove(e as TouchEvent));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Обработка клика вне окна\r\n\t */\r\n\tprivate onMousedown(e: MouseEvent): void {\r\n\t\t// // не оригинальное событие\r\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\t// Popup уже закрыт\r\n\t\tif (!this.elPopup || !(e.target instanceof Element)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// клик на внешнем элементе\r\n\t\tif (!this.isFirstClick) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isFirstClick = false;\r\n\t\tsetTimeout(() => this.isFirstClick = true);\r\n\r\n\t\t// клик не основной кнопкой мыши\r\n\t\tif (e instanceof MouseEvent && e.button !== 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// открыто другое меню с posBy = fixed, сначала должно быть закрыто оно\r\n\t\tlet elPopupOpened = DOM.querySelectorVisibleLast(document.body, ':scope > .top-popup-wrapper');\r\n\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// открыто другое меню в top-popup-front, сначала должно быть закрыто оно\r\n\t\tif (e.target.closest('.top-popup-front')) {\r\n\t\t\telPopupOpened = DOM.querySelectorVisibleLast(e.target.closest('.top-popup-front')!, ':scope > .top-popup-wrapper');\r\n\r\n\t\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// клик внутри этого меню\r\n\t\tif (this.elPopup.contains(e.target)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// клик вне родительского диалогового окна\r\n\t\tif (this.elPopup.closest('.ui-dialog') && !e.target.closest('.ui-dialog')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (Worker.decoratorIsIgnoreOuterClick(e)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tWorker.close(this.elPopup);\r\n\t}\r\n\r\n\t/**\r\n\t * Закрыть другие Popup при фокусе на элемент формы в текущем\r\n\t */\r\n\tprivate onFocus(e: FocusEvent): void {\r\n\t\tif (e.target instanceof Element && e.target.matches('input')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// // не оригинальное событие\r\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\t// это окно уже закрывается\r\n\t\tif (this.isClosed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elsPopups = Worker.getAllVisible();\r\n\t\telsPopups.forEach(elPopup => {\r\n\t\t\t// фокус внутри этого окна\r\n\t\t\tif (this.elPopup?.contains(elPopup)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// это Popup из которого был открыт Popup с фокусом\r\n\t\t\t// глубина вложенности: до 3 подменю\r\n\t\t\tif (\r\n\t\t\t\tthis.popupParent?.elPopup === elPopup ||\r\n\t\t\t\tthis.popupParent?.popupParent?.elPopup === elPopup\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.close(elPopup);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Закрыть Popup при отведении мыши\r\n\t */\r\n\tprivate onMouseleave(_e: MouseEvent): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.elPopupInner && this.elPopupInner.matches(':hover') || !this.elPopup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.close(this.elPopup);\r\n\t\t}, 100);\r\n\t}\r\n\r\n\t/**\r\n\t * Контроль положения Popup при fixed позиционировании\r\n\t */\r\n\tprivate onResize(): void {\r\n\t\t// на android при вызове метода append сбрасывается фокус с input внутри this.elPopup\r\n\t\tif (this.elPopup && this.elPopup.parentElement !== document.body) {\r\n\t\t\tdocument.body.append(this.elPopup);\r\n\t\t}\r\n\r\n\t\tif (this.elPopup instanceof HTMLElement) {\r\n\t\t\tthis.elPopup.style.top = DOM.offset(this.el).top + 'px';\r\n\t\t\tthis.elPopup.style.left = DOM.offset(this.el).left + 'px';\r\n\t\t}\r\n\t}\r\n\r\n\tunmount(): void {\r\n\t\tsuper.unmount();\r\n\r\n\t\tif (this.el instanceof HTMLElement) this.el.dataset.topPopupOpened = '';\r\n\t\tif (!this.elActiveByDefault) {\r\n\t\t\tthis.el.classList.remove('top-active');\r\n\t\t}\r\n\r\n\t\tlet style = this.el.getAttribute('style');\r\n\t\tif (style) {\r\n\t\t\tstyle = style.replace(/position:[^;]*;?/g, '');\r\n\t\t\tthis.el.setAttribute('style', style);\r\n\t\t}\r\n\t}\r\n\r\n\t// контроль за положением Popup, чтобы оно не вылезало за пределы документа\r\n\trecalcPosition(): void {\r\n\t\tif (!(this.elPopup instanceof HTMLElement)) return;\r\n\r\n\t\tlet p = this.options.p;\r\n\t\tlet leftPos: number;\r\n\r\n\t\tif (this.el instanceof HTMLElement) {\r\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\r\n\r\n\t\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\r\n\t\t\tthis.elPopup.classList.add('p' + p);\r\n\r\n\t\t\tswitch (this.options.posBy) {\r\n\t\t\t\tcase 'left':\r\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\r\n\t\t\t\t\tleftPos += this.shift.left;\r\n\t\t\t\t\tthis.elPopup.style.left = leftPos + 'px';\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'right':\r\n\t\t\t\t\tif (!(this.el.offsetParent instanceof HTMLElement)) break;\r\n\r\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\r\n\t\t\t\t\tthis.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - leftPos + 'px';\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'fixed':\r\n\t\t\t\t\tthis.addEventListenerWithUnmount(window, 'resize', () => this.onResize());\r\n\r\n\t\t\t\t\tthis.onResize();\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.options.posBy?.append(this.elPopup);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// контроль за пложением Popup, чтобы оно не вылезало за пределы документа\r\n\t\tconst boundingClientRect = this.elPopup.getBoundingClientRect();\r\n\t\tthis.elPopup.style.setProperty('--top-popup-height', this.elPopup.offsetHeight + 'px');\r\n\t\tthis.elPopup.style.setProperty('--top-popup-right-bounding', boundingClientRect.right + 'px');\r\n\t\tthis.elPopup.style.setProperty('--top-popup-bottom-bounding', boundingClientRect.bottom + 'px');\r\n\t\tthis.elPopup.style.setProperty('--top-popup-top', boundingClientRect.top + 'px');\r\n\t\tthis.elPopup.style.setProperty('--top-popup-left', boundingClientRect.left + 'px');\r\n\r\n\t\tif (this.elPopupInner instanceof HTMLElement) {\r\n\t\t\tthis.elPopupInner.style.maxWidth = 'unset';\r\n\t\t\tthis.elPopupInner.style.maxHeight = 'unset';\r\n\t\t}\r\n\r\n\t\tlet outTop = false;\r\n\t\tlet outRight = false;\r\n\t\tlet outBottom = false;\r\n\t\tlet outLeft = false;\r\n\r\n\t\t// имеет ли смысл прикреплять окно к другой стороне кнопки\r\n\t\tlet usefulInvertX = boundingClientRect.left > window.innerWidth / 2;\r\n\t\tlet usefulInvertY = boundingClientRect.top > window.innerHeight / 2;\r\n\r\n\t\tif (p === 4) {\r\n\t\t\tusefulInvertX = !usefulInvertX;\r\n\t\t}\r\n\r\n\t\tif (p === 1) {\r\n\t\t\tusefulInvertY = !usefulInvertY;\r\n\t\t}\r\n\r\n\t\tconst contentBoundingClientRect = this.elPopupInner?.getBoundingClientRect();\r\n\t\tlet contentRight: number;\r\n\t\tlet contentBottom: number;\r\n\r\n\t\tif (contentBoundingClientRect) {\r\n\t\t\tcontentRight = window.innerWidth - contentBoundingClientRect.right;\r\n\t\t\tcontentBottom = window.innerHeight - contentBoundingClientRect.bottom;\r\n\r\n\t\t\tconst margin = 8;\r\n\r\n\t\t\tif (contentBoundingClientRect.top < margin) {\r\n\t\t\t\toutTop = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (contentRight < margin) {\r\n\t\t\t\toutRight = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (contentBottom < margin) {\r\n\t\t\t\toutBottom = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (contentBoundingClientRect.left < margin) {\r\n\t\t\t\toutLeft = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (outTop && (p === 0 || p === 1) && usefulInvertY) {\r\n\t\t\tp = 3;\r\n\t\t}\r\n\r\n\t\tif (outBottom && p === 3 && usefulInvertY) {\r\n\t\t\tp = 1;\r\n\t\t}\r\n\r\n\t\tif (outRight && p === 2 && usefulInvertX) {\r\n\t\t\tp = 4;\r\n\t\t}\r\n\r\n\t\tif (outLeft && p === 4 && usefulInvertX) {\r\n\t\t\tp = 2;\r\n\t\t}\r\n\r\n\t\tif (outRight && (p === 0 || p === 1 || p === 3)) {\r\n\t\t\tthis.elPopup.classList.add('invert-x');\r\n\t\t}\r\n\r\n\t\tif (outBottom && (p === 2 || p === 4) && usefulInvertY) {\r\n\t\t\t// меню справа может перемещаться вверх, толкьо если есть место слева\r\n\t\t\tif (p === 2 && !usefulInvertX) {\r\n\t\t\t\tthis.elPopup.classList.add('invert-y');\r\n\t\t\t}\r\n\r\n\t\t\t// меню слева перемещаясь вверх, должно открываться влево\r\n\t\t\tif (p === 4 && !usefulInvertX) {\r\n\t\t\t\tthis.elPopup.classList.add('invert-x');\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.elPopup.matches('.invert-y')) {\r\n\t\t\t\tp = 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\r\n\t\tthis.elPopup.classList.add('p' + p);\r\n\r\n\t\tif (this.elPopupInner instanceof HTMLElement) {\r\n\t\t\tthis.elPopupInner.style.maxWidth = '';\r\n\t\t\tthis.elPopupInner.style.maxHeight = '';\r\n\t\t}\r\n\r\n\t\tWorker.scrollToActive(this.elPopup);\r\n\t};\r\n\r\n\tonTouchmove(e: TouchEvent): void {\r\n\t\tif (e.currentTarget instanceof HTMLElement && e.target instanceof HTMLElement) {\r\n\t\t\t// разрешить горизональный скролл\r\n\t\t\tlet hasScrollX = e.currentTarget.scrollWidth > e.currentTarget.offsetWidth;\r\n\t\t\tif (hasScrollX) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (e.target.parentElement?.scrollWidth && e.target.parentElement?.offsetWidth) {\r\n\t\t\t\t// разрешить горизональный скролл\r\n\t\t\t\tlet hasScrollX2 = e.target.parentElement.scrollWidth > e.target.parentElement?.offsetWidth;\r\n\t\t\t\tif (hasScrollX2) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!e.currentTarget.matches('.has_scroll')) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclose(): void {\r\n\t\tif (this.isClosed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isClosed = true;\r\n\r\n\t\tif (this.$ && Core.$ && this.elPopup) {\r\n\t\t\tthis.$.trigger('afterclose.top-menu-popup', [Core.$(this.elPopup)]);\r\n\t\t}\r\n\r\n\t\tif (Worker.noClose) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.unmount();\r\n\r\n\t\tthis.elPopup?.classList.add('top-popup-wrapper-closed');\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.vueClose();\r\n\r\n\t\t\tif (!this.elPopup) return;\r\n\r\n\t\t\tif (this.options.useOriginal) {\r\n\t\t\t\tthis.elPopup.removeAttribute('style');\r\n\t\t\t\tthis.elPopup.classList.remove('top-popup-wrapper-shown', 'top-popup-wrapper-closed');\r\n\t\t\t\tthis.elPopup.classList.add('template');\r\n\t\t\t\tthis.elStartPosition?.append(this.elPopup);\r\n\r\n\t\t\t\tthis.elPopup.querySelector('div.top-popup_content.top-column')?.classList.remove('top-column');\r\n\t\t\t\tthis.elPopup.querySelector('.notch-border')?.remove();\r\n\t\t\t\tthis.elPopup.querySelector('.notch')?.remove();\r\n\r\n\t\t\t\tthis.elPopupInner?.replaceWith(...this.elPopupInner.childNodes);\r\n\r\n\t\t\t\tDOM.storageClear(this.elPopup);\r\n\t\t\t} else {\r\n\t\t\t\tDOM.storageClear(this.elPopup);\r\n\r\n\t\t\t\tthis.elPopup.remove();\r\n\t\t\t\tdelete this.elPopup;\r\n\t\t\t}\r\n\r\n\t\t\tconst elsPopups = Worker.getAllVisible();\r\n\t\t\tconst elPopupLast = elsPopups.length && elsPopups[elsPopups.length - 1];\r\n\r\n\t\t\tif (elPopupLast) {\r\n\t\t\t\tWorker.getPopup(elPopupLast).focus();\r\n\t\t\t} else {\r\n\t\t\t\tdocument.documentElement.classList.remove('with_popup');\r\n\t\t\t}\r\n\t\t}, this.options.transitionDuration);\r\n\t}\r\n\r\n\tasync vueOpen(): Promise<void> {\r\n\t\tawait this.vueGetComponent()?.onOpen(this);\r\n\t}\r\n\r\n\tvueClose(): void {\r\n\t\tthis.vueGetComponent()?.onClose(this);\r\n\t}\r\n\r\n\t// получить vueConnectors компонента Popup\r\n\tvueGetComponent() {\r\n\t\tif (this.el instanceof HTMLElement && this.options.id) return Worker.vueConnectors.get(this.options.id);\r\n\t}\r\n}\r\n\r\nGlobalEvents.init();\r\n\r\nexport default Popup;\r\n"],"names":["Component","componentName","el","options","component","DOM","eventData","type","listener","_options","nodes","node","_a","GlobalEvents","e","elCloser","elPopup","elUl","elItem","Worker","elBtn","elFooterLastBtn","elLink","elItemActive","elMore","elsLiVisible","countLi","index","_b","css","cssM","cssPC","Core","Popup","vueConnector","classes","existsWidgetSearch","i18n","useI18n","fromTop","elPopupOpened","_d","_c","_e","style","p","leftPos","boundingClientRect","outTop","outRight","outBottom","outLeft","usefulInvertX","usefulInvertY","contentBoundingClientRect","contentRight","contentBottom","margin","elsPopups","elPopupLast"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}
@@ -1 +1 @@
1
- {"version":3,"file":"store-CX_6ZXhO.es.js","sources":["../../src/core/utils/store/plugin.ts","../../src/core/utils/store/store.ts"],"sourcesContent":["import { inject, type ObjectPlugin } from 'vue';\nimport type { Store } from './store';\n\nconst PluginsByApp = new WeakMap();\n\ntype Options = {\n\tonInit: (context: Context) => void;\n}\n\ntype Context = {\n\tstore: Store,\n\toptions: object,\n}\n\n/**\n * Плагин tpa (Third-party access) для pinia\n *\n * Сейчас не используется\n *\n * TODO: Должен реализовывать возмоэности piniaTPAPlugin\n */\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!PluginsByApp.has(app)) {\n\t\t\tPluginsByApp.set(app, []);\n\t\t}\n\n\t\tconst onInits = PluginsByApp.get(app);\n\n\t\tonInits.push(options.onInit);\n\n\t\tapp.provide('TopStoreOnInits', onInits);\n\t},\n} satisfies ObjectPlugin<Options>;\n\n/**\n * Применить плагины к store\n */\nexport const usePlugins = (store: Store, options: object = {}) => {\n\tconst context: Context = {\n\t\tstore,\n\t\toptions,\n\t};\n\n\tconst onInits: Array<Function> = inject('TopStoreOnInits', []);\n\n\tonInits.forEach((onInit) => {\n\t\tonInit.call(context);\n\t});\n};\n","/**\n * Храналище выполненное по аналогии с https://pinia.vuejs.org/\n *\n * Основное отличие от Pinia - реализация Храналища на уровне компонента, а не приложения.\n * Каждый экземдяр компонента будет иметь свой Store.\n *\n * Основное отличие от классического State - является общим для компонента и всех его дочерних компонентов. Основано на принципе provide/inject.\n * https://vuejs.org/guide/components/provide-inject.html\n *\n * @packageDocumentation\n */\n\nimport type { InjectionKey, UnwrapNestedRefs } from 'vue';\nimport { inject, provide, reactive, watch } from 'vue';\nimport { usePlugins } from './plugin';\n\n/**\n * Определить Store\n *\n * Следует определять на уровне корневого компонента, использующего Store\n * @param injectionKey - InjectionKey для provide / inject в области компонента\n * @param setup - Нстройки Store, см. https://pinia.vuejs.org/core-concepts/#Setup-Stores\n * @param $id - строковой id Store, используется в плагинах\n * @param options - настройки Store, используются в плагинах\n */\nexport const defineStore = <T extends object>(\n\tinjectionKey: InjectionKey<UnwrapNestedRefs<T>>,\n\tsetup: () => T | object,\n\t$id?: string,\n\toptions?: object,\n): UnwrapNestedRefs<T> & Store => {\n\tconst store = reactive(setup()) as UnwrapNestedRefs<T> & Store;\n\n\tstore.$id = $id;\n\tstore.$subscribe = (cb: Function) => {\n\t\twatch(store, () => cb(), { deep: true });\n\t};\n\n\tusePlugins(store, options);\n\n\tprovide(injectionKey, store);\n\n\treturn store;\n};\n\n/**\n * Получить State компонента\n * @param injectionKey - InjectionKey для provide / inject в области компонента\n * @return - State компонента\n */\nexport const useStore = <T>(injectionKey: InjectionKey<T>): T & Store => {\n\tconst store = inject(injectionKey);\n\n\tif (!store) {\n\t\tthrow Error('Попытка использовать Store до его инициализации, убедитесь, что defineStore() вызван в setup() необходимого компонента');\n\t}\n\n\treturn store;\n};\n\n/**\n * Легковесный аналог объекта Store Pinia для совместимости с плагинами Pinia\n */\nexport interface Store {\n\t/**\n\t * Строковой идентификатор Store\n\t *\n\t * Не уникален в рамках приложения\n\t */\n\t$id?: string;\n\t$subscribe?: Function;\n}\n\nexport default {\n\tdefineStore,\n\tuseStore,\n};\n"],"names":["usePlugins","store","options","context","inject","onInit","defineStore","injectionKey","setup","$id","reactive","cb","watch","provide","useStore"],"mappings":";AAsCO,MAAMA,IAAa,CAACC,GAAcC,IAAkB,OAAO;AACjE,QAAMC,IAAmB;AAAA,IACxB,OAAAF;AAAA,IACA,SAAAC;AAAA,EAAA;AAKO,EAFyBE,EAAO,mBAAmB,CAAE,CAAA,EAErD,QAAQ,CAACC,MAAW;AAC3B,IAAAA,EAAO,KAAKF,CAAO;AAAA,EAAA,CACnB;AACF,GCxBaG,IAAc,CAC1BC,GACAC,GACAC,GACAP,MACiC;AAC3B,QAAAD,IAAQS,EAASF,EAAA,CAAO;AAE9B,SAAAP,EAAM,MAAMQ,GACNR,EAAA,aAAa,CAACU,MAAiB;AACpC,IAAAC,EAAMX,GAAO,MAAMU,EAAA,GAAM,EAAE,MAAM,IAAM;AAAA,EAAA,GAGxCX,EAAWC,GAAOC,CAAO,GAEzBW,EAAQN,GAAcN,CAAK,GAEpBA;AACR,GAOaa,IAAW,CAAIP,MAA6C;AAClE,QAAAN,IAAQG,EAAOG,CAAY;AAEjC,MAAI,CAACN;AACJ,UAAM,MAAM,wHAAwH;AAG9H,SAAAA;AACR,GAeeA,IAAA;AAAA,EACd,aAAAK;AAAA,EACA,UAAAQ;AACD;"}
1
+ {"version":3,"file":"store-CX_6ZXhO.es.js","sources":["../../src/core/utils/store/plugin.ts","../../src/core/utils/store/store.ts"],"sourcesContent":["import { inject, type ObjectPlugin } from 'vue';\r\nimport type { Store } from './store';\r\n\r\nconst PluginsByApp = new WeakMap();\r\n\r\ntype Options = {\r\n\tonInit: (context: Context) => void;\r\n}\r\n\r\ntype Context = {\r\n\tstore: Store,\r\n\toptions: object,\r\n}\r\n\r\n/**\r\n * Плагин tpa (Third-party access) для pinia\r\n *\r\n * Сейчас не используется\r\n *\r\n * TODO: Должен реализовывать возмоэности piniaTPAPlugin\r\n */\r\nexport default {\r\n\tinstall: (app, options) => {\r\n\t\tif (!PluginsByApp.has(app)) {\r\n\t\t\tPluginsByApp.set(app, []);\r\n\t\t}\r\n\r\n\t\tconst onInits = PluginsByApp.get(app);\r\n\r\n\t\tonInits.push(options.onInit);\r\n\r\n\t\tapp.provide('TopStoreOnInits', onInits);\r\n\t},\r\n} satisfies ObjectPlugin<Options>;\r\n\r\n/**\r\n * Применить плагины к store\r\n */\r\nexport const usePlugins = (store: Store, options: object = {}) => {\r\n\tconst context: Context = {\r\n\t\tstore,\r\n\t\toptions,\r\n\t};\r\n\r\n\tconst onInits: Array<Function> = inject('TopStoreOnInits', []);\r\n\r\n\tonInits.forEach((onInit) => {\r\n\t\tonInit.call(context);\r\n\t});\r\n};\r\n","/**\r\n * Храналище выполненное по аналогии с https://pinia.vuejs.org/\r\n *\r\n * Основное отличие от Pinia - реализация Храналища на уровне компонента, а не приложения.\r\n * Каждый экземдяр компонента будет иметь свой Store.\r\n *\r\n * Основное отличие от классического State - является общим для компонента и всех его дочерних компонентов. Основано на принципе provide/inject.\r\n * https://vuejs.org/guide/components/provide-inject.html\r\n *\r\n * @packageDocumentation\r\n */\r\n\r\nimport type { InjectionKey, UnwrapNestedRefs } from 'vue';\r\nimport { inject, provide, reactive, watch } from 'vue';\r\nimport { usePlugins } from './plugin';\r\n\r\n/**\r\n * Определить Store\r\n *\r\n * Следует определять на уровне корневого компонента, использующего Store\r\n * @param injectionKey - InjectionKey для provide / inject в области компонента\r\n * @param setup - Нстройки Store, см. https://pinia.vuejs.org/core-concepts/#Setup-Stores\r\n * @param $id - строковой id Store, используется в плагинах\r\n * @param options - настройки Store, используются в плагинах\r\n */\r\nexport const defineStore = <T extends object>(\r\n\tinjectionKey: InjectionKey<UnwrapNestedRefs<T>>,\r\n\tsetup: () => T | object,\r\n\t$id?: string,\r\n\toptions?: object,\r\n): UnwrapNestedRefs<T> & Store => {\r\n\tconst store = reactive(setup()) as UnwrapNestedRefs<T> & Store;\r\n\r\n\tstore.$id = $id;\r\n\tstore.$subscribe = (cb: Function) => {\r\n\t\twatch(store, () => cb(), { deep: true });\r\n\t};\r\n\r\n\tusePlugins(store, options);\r\n\r\n\tprovide(injectionKey, store);\r\n\r\n\treturn store;\r\n};\r\n\r\n/**\r\n * Получить State компонента\r\n * @param injectionKey - InjectionKey для provide / inject в области компонента\r\n * @return - State компонента\r\n */\r\nexport const useStore = <T>(injectionKey: InjectionKey<T>): T & Store => {\r\n\tconst store = inject(injectionKey);\r\n\r\n\tif (!store) {\r\n\t\tthrow Error('Попытка использовать Store до его инициализации, убедитесь, что defineStore() вызван в setup() необходимого компонента');\r\n\t}\r\n\r\n\treturn store;\r\n};\r\n\r\n/**\r\n * Легковесный аналог объекта Store Pinia для совместимости с плагинами Pinia\r\n */\r\nexport interface Store {\r\n\t/**\r\n\t * Строковой идентификатор Store\r\n\t *\r\n\t * Не уникален в рамках приложения\r\n\t */\r\n\t$id?: string;\r\n\t$subscribe?: Function;\r\n}\r\n\r\nexport default {\r\n\tdefineStore,\r\n\tuseStore,\r\n};\r\n"],"names":["usePlugins","store","options","context","inject","onInit","defineStore","injectionKey","setup","$id","reactive","cb","watch","provide","useStore"],"mappings":";AAsCO,MAAMA,IAAa,CAACC,GAAcC,IAAkB,OAAO;AACjE,QAAMC,IAAmB;AAAA,IACxB,OAAAF;AAAA,IACA,SAAAC;AAAA,EAAA;AAKO,EAFyBE,EAAO,mBAAmB,CAAE,CAAA,EAErD,QAAQ,CAACC,MAAW;AAC3B,IAAAA,EAAO,KAAKF,CAAO;AAAA,EAAA,CACnB;AACF,GCxBaG,IAAc,CAC1BC,GACAC,GACAC,GACAP,MACiC;AAC3B,QAAAD,IAAQS,EAASF,EAAA,CAAO;AAE9B,SAAAP,EAAM,MAAMQ,GACNR,EAAA,aAAa,CAACU,MAAiB;AACpC,IAAAC,EAAMX,GAAO,MAAMU,EAAA,GAAM,EAAE,MAAM,IAAM;AAAA,EAAA,GAGxCX,EAAWC,GAAOC,CAAO,GAEzBW,EAAQN,GAAcN,CAAK,GAEpBA;AACR,GAOaa,IAAW,CAAIP,MAA6C;AAClE,QAAAN,IAAQG,EAAOG,CAAY;AAEjC,MAAI,CAACN;AACJ,UAAM,MAAM,wHAAwH;AAG9H,SAAAA;AACR,GAeeA,IAAA;AAAA,EACd,aAAAK;AAAA,EACA,UAAAQ;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"store-esTid5oI.amd.js","sources":["../../src/core/utils/store/plugin.ts","../../src/core/utils/store/store.ts"],"sourcesContent":["import { inject, type ObjectPlugin } from 'vue';\nimport type { Store } from './store';\n\nconst PluginsByApp = new WeakMap();\n\ntype Options = {\n\tonInit: (context: Context) => void;\n}\n\ntype Context = {\n\tstore: Store,\n\toptions: object,\n}\n\n/**\n * Плагин tpa (Third-party access) для pinia\n *\n * Сейчас не используется\n *\n * TODO: Должен реализовывать возмоэности piniaTPAPlugin\n */\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!PluginsByApp.has(app)) {\n\t\t\tPluginsByApp.set(app, []);\n\t\t}\n\n\t\tconst onInits = PluginsByApp.get(app);\n\n\t\tonInits.push(options.onInit);\n\n\t\tapp.provide('TopStoreOnInits', onInits);\n\t},\n} satisfies ObjectPlugin<Options>;\n\n/**\n * Применить плагины к store\n */\nexport const usePlugins = (store: Store, options: object = {}) => {\n\tconst context: Context = {\n\t\tstore,\n\t\toptions,\n\t};\n\n\tconst onInits: Array<Function> = inject('TopStoreOnInits', []);\n\n\tonInits.forEach((onInit) => {\n\t\tonInit.call(context);\n\t});\n};\n","/**\n * Храналище выполненное по аналогии с https://pinia.vuejs.org/\n *\n * Основное отличие от Pinia - реализация Храналища на уровне компонента, а не приложения.\n * Каждый экземдяр компонента будет иметь свой Store.\n *\n * Основное отличие от классического State - является общим для компонента и всех его дочерних компонентов. Основано на принципе provide/inject.\n * https://vuejs.org/guide/components/provide-inject.html\n *\n * @packageDocumentation\n */\n\nimport type { InjectionKey, UnwrapNestedRefs } from 'vue';\nimport { inject, provide, reactive, watch } from 'vue';\nimport { usePlugins } from './plugin';\n\n/**\n * Определить Store\n *\n * Следует определять на уровне корневого компонента, использующего Store\n * @param injectionKey - InjectionKey для provide / inject в области компонента\n * @param setup - Нстройки Store, см. https://pinia.vuejs.org/core-concepts/#Setup-Stores\n * @param $id - строковой id Store, используется в плагинах\n * @param options - настройки Store, используются в плагинах\n */\nexport const defineStore = <T extends object>(\n\tinjectionKey: InjectionKey<UnwrapNestedRefs<T>>,\n\tsetup: () => T | object,\n\t$id?: string,\n\toptions?: object,\n): UnwrapNestedRefs<T> & Store => {\n\tconst store = reactive(setup()) as UnwrapNestedRefs<T> & Store;\n\n\tstore.$id = $id;\n\tstore.$subscribe = (cb: Function) => {\n\t\twatch(store, () => cb(), { deep: true });\n\t};\n\n\tusePlugins(store, options);\n\n\tprovide(injectionKey, store);\n\n\treturn store;\n};\n\n/**\n * Получить State компонента\n * @param injectionKey - InjectionKey для provide / inject в области компонента\n * @return - State компонента\n */\nexport const useStore = <T>(injectionKey: InjectionKey<T>): T & Store => {\n\tconst store = inject(injectionKey);\n\n\tif (!store) {\n\t\tthrow Error('Попытка использовать Store до его инициализации, убедитесь, что defineStore() вызван в setup() необходимого компонента');\n\t}\n\n\treturn store;\n};\n\n/**\n * Легковесный аналог объекта Store Pinia для совместимости с плагинами Pinia\n */\nexport interface Store {\n\t/**\n\t * Строковой идентификатор Store\n\t *\n\t * Не уникален в рамках приложения\n\t */\n\t$id?: string;\n\t$subscribe?: Function;\n}\n\nexport default {\n\tdefineStore,\n\tuseStore,\n};\n"],"names":["store","options","onInit","context","defineStore","injectionKey","setup","$id","cb","vue","usePlugins","useStore"],"mappings":"6HAuC0B,MAAAA,EACxB,QAAAC,CACA,iCAKD,QAAAC,GAAA,CACCA,EAAA,KAAAC,CAAA,CAAmB,CAAA,GCtBdC,EAAA,CAAAC,EAAAC,EAAAC,EAAAN,IAAA,yBAQN,OAAAD,EAAA,IAAAO,EACAP,EAAA,WAAAQ,GAAA,CACCC,EAAA,MAAAT,EAAA,IAAAQ,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAuC,EAGxCE,EAAAV,EAAAC,CAAA,EAEAQ,EAAA,QAAAJ,EAAAL,CAAA,KAUYW,EAAAN,GAAA,CACZ,MAAAL,EAAAS,EAAA,OAAAJ,CAAA,QAGC,MAAA,MAAA,wHAAA,YAmBFL,EAAA,CAAe,YAAAI,EACd,SAAAO"}
1
+ {"version":3,"file":"store-esTid5oI.amd.js","sources":["../../src/core/utils/store/plugin.ts","../../src/core/utils/store/store.ts"],"sourcesContent":["import { inject, type ObjectPlugin } from 'vue';\r\nimport type { Store } from './store';\r\n\r\nconst PluginsByApp = new WeakMap();\r\n\r\ntype Options = {\r\n\tonInit: (context: Context) => void;\r\n}\r\n\r\ntype Context = {\r\n\tstore: Store,\r\n\toptions: object,\r\n}\r\n\r\n/**\r\n * Плагин tpa (Third-party access) для pinia\r\n *\r\n * Сейчас не используется\r\n *\r\n * TODO: Должен реализовывать возмоэности piniaTPAPlugin\r\n */\r\nexport default {\r\n\tinstall: (app, options) => {\r\n\t\tif (!PluginsByApp.has(app)) {\r\n\t\t\tPluginsByApp.set(app, []);\r\n\t\t}\r\n\r\n\t\tconst onInits = PluginsByApp.get(app);\r\n\r\n\t\tonInits.push(options.onInit);\r\n\r\n\t\tapp.provide('TopStoreOnInits', onInits);\r\n\t},\r\n} satisfies ObjectPlugin<Options>;\r\n\r\n/**\r\n * Применить плагины к store\r\n */\r\nexport const usePlugins = (store: Store, options: object = {}) => {\r\n\tconst context: Context = {\r\n\t\tstore,\r\n\t\toptions,\r\n\t};\r\n\r\n\tconst onInits: Array<Function> = inject('TopStoreOnInits', []);\r\n\r\n\tonInits.forEach((onInit) => {\r\n\t\tonInit.call(context);\r\n\t});\r\n};\r\n","/**\r\n * Храналище выполненное по аналогии с https://pinia.vuejs.org/\r\n *\r\n * Основное отличие от Pinia - реализация Храналища на уровне компонента, а не приложения.\r\n * Каждый экземдяр компонента будет иметь свой Store.\r\n *\r\n * Основное отличие от классического State - является общим для компонента и всех его дочерних компонентов. Основано на принципе provide/inject.\r\n * https://vuejs.org/guide/components/provide-inject.html\r\n *\r\n * @packageDocumentation\r\n */\r\n\r\nimport type { InjectionKey, UnwrapNestedRefs } from 'vue';\r\nimport { inject, provide, reactive, watch } from 'vue';\r\nimport { usePlugins } from './plugin';\r\n\r\n/**\r\n * Определить Store\r\n *\r\n * Следует определять на уровне корневого компонента, использующего Store\r\n * @param injectionKey - InjectionKey для provide / inject в области компонента\r\n * @param setup - Нстройки Store, см. https://pinia.vuejs.org/core-concepts/#Setup-Stores\r\n * @param $id - строковой id Store, используется в плагинах\r\n * @param options - настройки Store, используются в плагинах\r\n */\r\nexport const defineStore = <T extends object>(\r\n\tinjectionKey: InjectionKey<UnwrapNestedRefs<T>>,\r\n\tsetup: () => T | object,\r\n\t$id?: string,\r\n\toptions?: object,\r\n): UnwrapNestedRefs<T> & Store => {\r\n\tconst store = reactive(setup()) as UnwrapNestedRefs<T> & Store;\r\n\r\n\tstore.$id = $id;\r\n\tstore.$subscribe = (cb: Function) => {\r\n\t\twatch(store, () => cb(), { deep: true });\r\n\t};\r\n\r\n\tusePlugins(store, options);\r\n\r\n\tprovide(injectionKey, store);\r\n\r\n\treturn store;\r\n};\r\n\r\n/**\r\n * Получить State компонента\r\n * @param injectionKey - InjectionKey для provide / inject в области компонента\r\n * @return - State компонента\r\n */\r\nexport const useStore = <T>(injectionKey: InjectionKey<T>): T & Store => {\r\n\tconst store = inject(injectionKey);\r\n\r\n\tif (!store) {\r\n\t\tthrow Error('Попытка использовать Store до его инициализации, убедитесь, что defineStore() вызван в setup() необходимого компонента');\r\n\t}\r\n\r\n\treturn store;\r\n};\r\n\r\n/**\r\n * Легковесный аналог объекта Store Pinia для совместимости с плагинами Pinia\r\n */\r\nexport interface Store {\r\n\t/**\r\n\t * Строковой идентификатор Store\r\n\t *\r\n\t * Не уникален в рамках приложения\r\n\t */\r\n\t$id?: string;\r\n\t$subscribe?: Function;\r\n}\r\n\r\nexport default {\r\n\tdefineStore,\r\n\tuseStore,\r\n};\r\n"],"names":["store","options","onInit","context","defineStore","injectionKey","setup","$id","cb","vue","usePlugins","useStore"],"mappings":"6HAuC0B,MAAAA,EACxB,QAAAC,CACA,iCAKD,QAAAC,GAAA,CACCA,EAAA,KAAAC,CAAA,CAAmB,CAAA,GCtBdC,EAAA,CAAAC,EAAAC,EAAAC,EAAAN,IAAA,yBAQN,OAAAD,EAAA,IAAAO,EACAP,EAAA,WAAAQ,GAAA,CACCC,EAAA,MAAAT,EAAA,IAAAQ,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAuC,EAGxCE,EAAAV,EAAAC,CAAA,EAEAQ,EAAA,QAAAJ,EAAAL,CAAA,KAUYW,EAAAN,GAAA,CACZ,MAAAL,EAAAS,EAAA,OAAAJ,CAAA,QAGC,MAAA,MAAA,wHAAA,YAmBFL,EAAA,CAAe,YAAAI,EACd,SAAAO"}
package/README.md CHANGED
@@ -1,87 +1,87 @@
1
- # UI kit Topvisor Vue
2
-
3
- ## Зависимости
4
-
5
- - Vue 3
6
- - lodash 4:
7
- - debounce
8
-
9
- ## Vue компоненты
10
-
11
- Компоненты поставляются в двух форматах:
12
-
13
- - amd (requirejs)
14
- - es
15
-
16
- Компоненты делятся на разные библиотеки и доступны через импорт этих библиотек.
17
-
18
- Каждая библиотека находится в отдельной папке, соответствующей имени библиотеки.
19
-
20
- Все стили модулей находятся в папке /assets/ в файлах соответствующих имени библиотеки.
21
- В этой же папке располагаются стили для асинхронно загружаемых компонентов.
22
- Все стили грузятся автоматически вместе с загрузкой компонента.
23
-
24
- Список доступных библиотек компонентов см. на [npmjs](https://www.npmjs.com/package/@topvisor/ui?activeTab=code).
25
-
26
- ## Общие стили UI
27
-
28
- - /assets/core.css - основная палитра цветов и общие стили и модификаторы компонентов
29
- - /assets/light.css - светлая тема
30
- - /assets/dark.css - темная тема
31
-
32
- ## Подключение стилей
33
-
34
- Стили компонентов подгружаются автоматически.
35
-
36
- Стили UI core.css необходимо подгрузить на страницу вручную.
37
-
38
- ```js
39
- import '@topvisor/ui/assets/core.css';
40
- ```
41
-
42
- ```html
43
- <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/assets/core.css" rel="stylesheet">
44
- ```
45
-
46
- ## Подключение стилей темы
47
-
48
- Стили темы необходимо подгрузить на страницу вручную.
49
-
50
- Для смены темы необходимо подгрузить файл стилей необходимой темы и отключить стили предыдущей темы.
51
-
52
- ```js
53
- import '@topvisor/ui/assets/light.css';
54
- ```
55
-
56
- ```html
57
- <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/assets/light.css" rel="stylesheet">
58
- ```
59
-
60
- ## Внешние зависимсоти
61
-
62
- Стили icomoon добавлены в пакет и их необходимо подгрузить на страницу вручную.
63
-
64
- ```js
65
- import '@topvisor/ui/icomoon/style.css';
66
- ```
67
-
68
- ```html
69
- <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/icomoon/style.css" rel="stylesheet">
70
- ```
71
-
72
- ## Подключение компонентов
73
-
74
- Пример подключения библиотеки Forms и компонента Button:
75
-
76
- ```javascript
77
- require(['@topvisor/ui/forms/forms.amd'], ({ Button }) => {
78
- console.log(Button);
79
- });
80
-
81
- require(['@topvisor/ui/forms/forms.amd'], Forms => {
82
- const { Button } = Forms;
83
-
84
- console.log(Forms);
85
- console.log(Button);
86
- });
1
+ # UI kit Topvisor Vue
2
+
3
+ ## Зависимости
4
+
5
+ - Vue 3
6
+ - lodash 4:
7
+ - debounce
8
+
9
+ ## Vue компоненты
10
+
11
+ Компоненты поставляются в двух форматах:
12
+
13
+ - amd (requirejs)
14
+ - es
15
+
16
+ Компоненты делятся на разные библиотеки и доступны через импорт этих библиотек.
17
+
18
+ Каждая библиотека находится в отдельной папке, соответствующей имени библиотеки.
19
+
20
+ Все стили модулей находятся в папке /assets/ в файлах соответствующих имени библиотеки.
21
+ В этой же папке располагаются стили для асинхронно загружаемых компонентов.
22
+ Все стили грузятся автоматически вместе с загрузкой компонента.
23
+
24
+ Список доступных библиотек компонентов см. на [npmjs](https://www.npmjs.com/package/@topvisor/ui?activeTab=code).
25
+
26
+ ## Общие стили UI
27
+
28
+ - /assets/core.css - основная палитра цветов и общие стили и модификаторы компонентов
29
+ - /assets/light.css - светлая тема
30
+ - /assets/dark.css - темная тема
31
+
32
+ ## Подключение стилей
33
+
34
+ Стили компонентов подгружаются автоматически.
35
+
36
+ Стили UI core.css необходимо подгрузить на страницу вручную.
37
+
38
+ ```js
39
+ import '@topvisor/ui/assets/core.css';
40
+ ```
41
+
42
+ ```html
43
+ <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/assets/core.css" rel="stylesheet">
44
+ ```
45
+
46
+ ## Подключение стилей темы
47
+
48
+ Стили темы необходимо подгрузить на страницу вручную.
49
+
50
+ Для смены темы необходимо подгрузить файл стилей необходимой темы и отключить стили предыдущей темы.
51
+
52
+ ```js
53
+ import '@topvisor/ui/assets/light.css';
54
+ ```
55
+
56
+ ```html
57
+ <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/assets/light.css" rel="stylesheet">
58
+ ```
59
+
60
+ ## Внешние зависимсоти
61
+
62
+ Стили icomoon добавлены в пакет и их необходимо подгрузить на страницу вручную.
63
+
64
+ ```js
65
+ import '@topvisor/ui/icomoon/style.css';
66
+ ```
67
+
68
+ ```html
69
+ <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/icomoon/style.css" rel="stylesheet">
70
+ ```
71
+
72
+ ## Подключение компонентов
73
+
74
+ Пример подключения библиотеки Forms и компонента Button:
75
+
76
+ ```javascript
77
+ require(['@topvisor/ui/forms/forms.amd'], ({ Button }) => {
78
+ console.log(Button);
79
+ });
80
+
81
+ require(['@topvisor/ui/forms/forms.amd'], Forms => {
82
+ const { Button } = Forms;
83
+
84
+ console.log(Forms);
85
+ console.log(Button);
86
+ });
87
87
  ```
package/assets/core.css CHANGED
@@ -1 +1 @@
1
- :root{--top-line-heihgt: 1.36;--top-page-width: 1180px;--transition: .2s ease-in-out;--transition-fast: .1s;--transition-normal: .3s;--transition-slow: .5s;--top-padding-1: 4px;--top-padding-2: 8px;--top-padding-3: 12px;--top-padding-4: 16px;--top-padding-5: 20px;--top-padding-6: 24px;--top-padding-7: 28px;--top-padding-8: 32px;--top-padding-9: 36px;--top-padding-10: 40px;--top-padding-11: 44px;--top-padding-12: 48px;--top-gap-1: 4px;--top-gap-2: 8px;--top-gap-3: 12px;--top-gap-4: 16px;--top-gap-5: 20px;--top-gap-6: 24px;--top-gap-7: 28px;--top-gap-8: 32px;--top-gap-9: 36px;--top-gap-10: 40px;--top-gap-11: 44px;--top-gap-12: 48px;--top-radius-1: 4px;--top-radius-2: 8px;--top-radius-3: 12px;--top-radius-4: 16px;--top-radius-5: 20px;--top-radius-6: 24px;--top-radius-7: 28px;--top-radius-8: 32px;--top-radius-9: 36px;--top-radius-10: 40px;--top-radius-11: 44px;--top-radius-12: 48px}:root{--color-tag-1: #bdc3c7;--color-tag-2: #FD6052;--color-tag-3: #F48D09;--color-tag-4: #F4D30C;--color-tag-5: #5AACFD;--color-tag-6: #C98AE4;--color-tag-7: #A7DE59;--color-tag-8: #e44097;--color-tag-9: #0354a5;--color-tag-10: #33b8a5;--color-tag-all: #d8dbdd}.top-comment{color:var(--color-text-3);font-size:12px}[data-top-badge]{position:relative;width:0;margin:-3px 16px 0 -16px;display:flex;align-self:flex-start}[data-top-badge]:after{content:attr(data-top-badge);border-radius:4px;padding:2px 3px;background:var(--color-bg-negative-1);color:var(--color-text-white);font-size:12px}:root{--top-formsCaption-offset: 16px}.top-formsCaptionWrapper{padding-top:20px}.top-formsCaption{pointer-events:none;width:calc(100% - var(--top-forms-padding) - var(--top-icon-both-width) - var(--top-forms_clear-width) - var(--top-select_arrow-width));padding:0 var(--top-forms-padding);color:var(--top-forms-placeholder-color);white-space:nowrap;text-overflow:ellipsis;transform:translate(var(--top-icon-both-width));position:absolute;overflow:hidden;transition:.1s}.top-error~.top-formsCaption{transition:.1s .1s}.top-formsCaption *{pointer-events:auto}.top-formsCaptionWrapper>input:not([readonly]):focus~.top-formsCaption,.top-formsCaptionWrapper>input:not(:placeholder-shown)~.top-formsCaption,.top-formsCaptionWrapper>textarea:not(:placeholder-shown)~.top-formsCaption,.top-formsCaptionWrapper.top-select>.top-formsCaption,.top-formsCaptionWrapper.top-inputRange>.top-formsCaption,.top-formsCaptionWrapper-always>.top-formsCaption{width:100%;padding:0;color:var(--top-forms-placeholder-color-active);font-size:11px;transform:translateY(calc(-1em - var(--top-formsCaption-offset)));transition:.1s}.ui-tooltip{pointer-events:none;box-shadow:0 6px 18px #0e152f21,0 -2px 6px #0e152f08;border-radius:8px;border:none;background:var(--color-layout-front-1);width:max-content;padding:16px;margin:0 18px;font-size:13px}.ui-tooltip img{margin:12px 0 0}.ui-tooltip ul{margin-left:24px}button,input,textarea,select{border:1px solid var(--top-forms-border-color);background:var(--top-forms-background-color);color:var(--color-text-1);font-size:var(--top-font-size);font-family:inherit}::placeholder{color:var(--top-forms-placeholder-color)}[contenteditable][placeholder]:empty:before{content:attr(placeholder);color:var(--color-text-2)}.top-forms-optionWrapper{cursor:pointer;padding:8px 0;color:var(--color-text-1);line-height:1.3;display:inline-flex;align-items:flex-start;gap:4px}.top-forms-option{cursor:pointer;padding:0;margin:3px;display:inline-flex;flex-shrink:0;appearance:none;-webkit-appearance:none}.top-forms-focusable:focus-visible,.top-focus{outline:calc(var(--top-forms-border-width) * 2) solid var(--color-line-primary-1);outline-offset:2px;position:relative;z-index:1;transition:border-color .15s}.top-forms-focusable:hover,.top-forms-focusable:focus,.top-focus:hover,.top-focus:focus,.top-input:hover>.top-input_input,.top-select:hover>.top-select_select{--top-forms-border-color: var(--top-forms-border-color-hover);--top-forms-background-color: var(--top-forms-background-color-hover)}[contenteditable]:focus-visible,.top-selector-multiselect:focus-within{outline:2px solid var(--color-line-primary-1)}:root{--top-font-size: 14px;--top-forms-radius: 8px;--top-forms-border-width: 1px;--top-style_outline-color: transparent;--top-forms-base-height_xs: 24px;--top-forms-base-height_s: 32px;--top-forms-base-height_m: 36px;--top-forms-base-height_l: 40px;--top-forms-base-height: var(--top-forms-base-height_s);--top-forms-padding_xs: 6px;--top-forms-padding_s: 8px;--top-forms-padding_m: 10px;--top-forms-padding_l: 12px;--top-forms-padding: var(--top-forms-padding_s);--top-forms-option-height: 24px;--top-select_arrow-width: 0px;--top-forms_clear-width: 0px;--top-forms-border-color: var(--color-line-1);--top-forms-border-color-hover: var(--color-line-primary-1);--top-forms-placeholder-color: var(--color-text-3);--top-forms-placeholder-color-active: var(--color-text-2);--top-forms-background-color: var(--color-layout-front-1);--top-forms-background-color-hover: var(--color-layout-front-1)}.top-size_xs{--top-forms-base-height: var(--top-forms-base-height_xs)}.top-size_s{--top-forms-base-height: var(--top-forms-base-height_s)}.top-size_m{--top-forms-base-height: var(--top-forms-base-height_m)}.top-size_l{--top-forms-base-height: var(--top-forms-base-height_l)}.top-input_input,.top-textarea_textarea,.top-editArea_form,.top-select_select{box-sizing:border-box;border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);display:inline-flex;appearance:none;-webkit-appearance:none}.top-select_select{padding-right:calc(var(--top-forms-padding) + var(--top-forms_clear-width) + var(--top-select_arrow-width))}.top-select{position:relative}.top-select[data-top-icon]:before,.top-select[data-top-icon2]:after{position:absolute;z-index:3}.top-select[data-top-icon][data-top-icon2]:after{left:calc(var(--top-icon-width))}.top-cleaner[data-top-icon]{--top-icon-size: 20px;--top-icon-width: 20px;--top-icon-color: var(--color-text-secondary);cursor:pointer;border-radius:50%;width:30px;height:24px;margin-left:-34px;transform:translate(calc(0px - var(--top-forms-border-width) - var(--top-select_arrow-width)));display:flex;align-items:center;justify-content:center;position:relative;z-index:1}.top-cleaner[data-top-icon]:hover{--top-icon-color: var(--color-text-secondary-2)}:root{--top-icon-size: 24px;--top-icon-width: 0px;--top-icon2-size: 24px;--top-icon2-width: 0px;--top-icon-both-width: 0px}[data-top-icon]{--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon-color: inherit}[data-top-icon2]{--top-icon2-width: calc(var(--top-icon2-size) + 8px);--top-icon2-color: inherit}[data-top-icon=""]{--top-icon-width: 0px}[data-top-icon2=""]{--top-icon2-width: 0px}[data-top-icon]:before,[data-top-icon2]:after{pointer-events:none;content:attr(data-top-icon);border-radius:var(--top-forms-radius);width:var(--top-icon-width);color:var(--top-icon-color);font-family:Topvisor-2;font-size:var(--top-icon-size);font-weight:400;line-height:1;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}[data-top-icon2]:after{content:attr(data-top-icon2);width:var(--top-icon2-width);color:var(--top-icon2-color);font-size:var(--top-icon2-size)}[data-top-icon],[data-top-icon2]{--top-icon-both-width: calc(var(--top-icon-width) + var(--top-icon2-width))}[data-top-icon=]:before{font-family:Topvisor}.top-as-a{cursor:pointer;color:var(--color-text-primary)}.top-as-a:hover{text-decoration:underline}.top-ellipsis,.top-ellipsis1{max-height:100%;line-height:1.23;text-overflow:ellipsis;overflow:hidden;flex-grow:1}.top-ellipsis1{white-space:nowrap}.top-ellipsis2,.top-ellipsis3{max-width:fit-content;line-height:1.23;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.top-ellipsis3{-webkit-line-clamp:3}.top-hidden{display:none!important}.top-unvisible{width:0;height:0;overflow:hidden;position:absolute;-webkit-appearance:none;appearance:none;border:none}.top-unvisible:focus-visible{outline:none}.top-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}:disabled:not(option):not(optgroup),:disabled~.top-formsCaption,.top-disabled{opacity:.4;filter:grayscale(100%)}.top-input.top-disabled,.top-select.top-disabled{filter:unset}.top-input_input:disabled,.top-textarea_textarea:disabled,.top-select_select:disabled{opacity:1;background-color:var(--color-bg-shading-3);filter:unset}.top-checkbox_input:not(:checked):not(:indeterminate):disabled,.top-radio_input:not(:checked):disabled,.top-checkboxSwitcher_input:disabled{opacity:1;background-color:var(--color-layer-1)}.top-checkboxSwitcher_input:disabled{background-color:var(--color-layer-4)}.top-error,.top-error::placeholder,.top-error:before{--top-forms-border-color: var(--color-line-negative-1);border-color:var(--color-line-negative-1)}.top-error{--top-icon-color: var(--color-text-negative);color:var(--color-text-negative)}.top-error~.top-formsCaption{color:var(--color-text-negative)}.top-warning{--top-icon-color: var(--color-text-warning);color:var(--color-text-warning)}input.top-error,textarea.top-error,select.top-error,.top-editArea_form.top-error{animation:top-error .8s}@keyframes top-error{0%{outline-offset:10px;outline:3px solid transparent}50%{outline:3px solid var(--color-line-negative-1);outline-offset:2px}to{outline:3px solid transparent;outline-offset:2px}}@media only screen and (min-width: 900px){.top-only-mobile{display:none!important}}@media only screen and (max-width: 900px){.top-only-pc{display:none!important}}html:not([lang=ru]) .top-only-ru,html:not([lang=en]) .top-only-en{display:none!important}html[data-is_admin="0"] .top-only-admin{display:none!important}.top-select_arrow{--top-select_arrow-size: 12px;--top-select_arrow-width: 24px;background-image:url("data:image/svg+xml,%3Csvg width='16' height='9' viewBox='0 0 16 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.293 0.29269L8 6.5857L1.70704 0.29269C1.31679 -0.0975633 0.682937 -0.0975633 0.292687 0.29269C-0.0975624 0.682943 -0.0975624 1.31656 0.292687 1.70682L7.29294 8.70713C7.68343 9.09762 8.31657 9.09762 8.70706 8.70713L15.7073 1.70682C16.0976 1.31656 16.0976 0.682943 15.7073 0.29269C15.3171 -0.0975633 14.6832 -0.0975633 14.293 0.29269Z' fill='%23808A99'/%3E%3C/svg%3E");background-size:14px;background-position:calc(100% - var(--top-forms-padding)) 50%;background-repeat:no-repeat;padding-right:32px}.top-select_arrow~.top-cleaner{--top-select_arrow-width: 24px}
1
+ :root{--top-line-heihgt: 1.36;--top-page-width: 1180px;--transition: .2s ease-in-out;--transition-fast: .1s;--transition-normal: .3s;--transition-slow: .5s;--top-padding-1: 4px;--top-padding-2: 8px;--top-padding-3: 12px;--top-padding-4: 16px;--top-padding-5: 20px;--top-padding-6: 24px;--top-padding-7: 28px;--top-padding-8: 32px;--top-padding-9: 36px;--top-padding-10: 40px;--top-padding-11: 44px;--top-padding-12: 48px;--top-gap-1: 4px;--top-gap-2: 8px;--top-gap-3: 12px;--top-gap-4: 16px;--top-gap-5: 20px;--top-gap-6: 24px;--top-gap-7: 28px;--top-gap-8: 32px;--top-gap-9: 36px;--top-gap-10: 40px;--top-gap-11: 44px;--top-gap-12: 48px;--top-radius-1: 4px;--top-radius-2: 8px;--top-radius-3: 12px;--top-radius-4: 16px;--top-radius-5: 20px;--top-radius-6: 24px;--top-radius-7: 28px;--top-radius-8: 32px;--top-radius-9: 36px;--top-radius-10: 40px;--top-radius-11: 44px;--top-radius-12: 48px}:root{--color-tag-1: #bdc3c7;--color-tag-2: #FD6052;--color-tag-3: #F48D09;--color-tag-4: #F4D30C;--color-tag-5: #5AACFD;--color-tag-6: #C98AE4;--color-tag-7: #A7DE59;--color-tag-8: #e44097;--color-tag-9: #0354a5;--color-tag-10: #33b8a5;--color-tag-all: #d8dbdd}.top-comment{color:var(--color-text-3);font-size:12px}[data-top-badge]{position:relative;width:0;margin:-3px 16px 0 -16px;display:flex;align-self:flex-start}[data-top-badge]:after{content:attr(data-top-badge);border-radius:4px;padding:2px 3px;background:var(--color-bg-negative-1);color:var(--color-text-white);font-size:12px}:root{--top-formsCaption-offset: 16px}.top-formsCaptionWrapper{padding-top:20px}.top-formsCaption{pointer-events:none;width:calc(100% - var(--top-forms-padding) - var(--top-icon-both-width) - var(--top-forms_clear-width) - var(--top-select_arrow-width));padding:0 var(--top-forms-padding);color:var(--top-forms-placeholder-color);white-space:nowrap;text-overflow:ellipsis;transform:translate(var(--top-icon-both-width));position:absolute;overflow:hidden;transition:.1s}.top-error~.top-formsCaption{transition:.1s .1s}.top-formsCaption *{pointer-events:auto}.top-formsCaptionWrapper>input:not([readonly]):focus~.top-formsCaption,.top-formsCaptionWrapper>input:not(:placeholder-shown)~.top-formsCaption,.top-formsCaptionWrapper>textarea:not(:placeholder-shown)~.top-formsCaption,.top-formsCaptionWrapper.top-select>.top-formsCaption,.top-formsCaptionWrapper.top-inputRange>.top-formsCaption,.top-formsCaptionWrapper-always>.top-formsCaption{width:100%;padding:0;color:var(--top-forms-placeholder-color-active);font-size:11px;transform:translateY(calc(-1em - var(--top-formsCaption-offset)));transition:.1s}.ui-tooltip{pointer-events:none;box-shadow:0 6px 18px #0e152f21,0 -2px 6px #0e152f08;border-radius:8px;border:none;background:var(--color-layout-front-1);width:max-content;padding:16px;margin:0 18px;font-size:13px}.ui-tooltip img{margin:12px 0 0}.ui-tooltip ul{margin-left:24px}button,input,textarea,select{border:1px solid var(--top-forms-border-color);background:var(--top-forms-background-color);color:var(--color-text-1);font-size:var(--top-font-size);font-family:inherit}::placeholder{color:var(--top-forms-placeholder-color)}[contenteditable][placeholder]:empty:before{content:attr(placeholder);color:var(--color-text-2)}.top-forms-optionWrapper{cursor:pointer;padding:8px 0;color:var(--color-text-1);line-height:1.3;display:inline-flex;align-items:flex-start;gap:4px}.top-forms-option{cursor:pointer;padding:0;margin:3px;display:inline-flex;flex-shrink:0;appearance:none;-webkit-appearance:none}.top-forms-focusable:focus-visible,.top-focus{outline:calc(var(--top-forms-border-width) * 2) solid var(--color-line-primary-1);outline-offset:2px;position:relative;z-index:1;transition:border-color .15s}.top-forms-focusable:hover,.top-forms-focusable:focus,.top-focus:hover,.top-focus:focus,.top-input:hover>.top-input_input,.top-select:hover>.top-select_select{--top-forms-border-color: var(--top-forms-border-color-hover);--top-forms-background-color: var(--top-forms-background-color-hover)}[contenteditable]:focus-visible,.top-selector-multiselect:focus-within{outline:2px solid var(--color-line-primary-1)}:root{--top-font-size: 14px;--top-forms-radius: 8px;--top-forms-border-width: 1px;--top-style_outline-color: transparent;--top-forms-base-height_xs: 24px;--top-forms-base-height_s: 32px;--top-forms-base-height_m: 36px;--top-forms-base-height_l: 40px;--top-forms-base-height: var(--top-forms-base-height_s);--top-forms-padding_xs: 6px;--top-forms-padding_s: 8px;--top-forms-padding_m: 10px;--top-forms-padding_l: 12px;--top-forms-padding: var(--top-forms-padding_s);--top-forms-option-height: 24px;--top-select_arrow-width: 0px;--top-forms_clear-width: 0px;--top-forms-border-color: var(--color-line-1);--top-forms-border-color-hover: var(--color-line-primary-1);--top-forms-placeholder-color: var(--color-text-3);--top-forms-placeholder-color-active: var(--color-text-2);--top-forms-background-color: var(--color-layout-front-1);--top-forms-background-color-hover: var(--color-layout-front-1)}.top-size_xs{--top-forms-base-height: var(--top-forms-base-height_xs)}.top-size_s{--top-forms-base-height: var(--top-forms-base-height_s)}.top-size_m{--top-forms-base-height: var(--top-forms-base-height_m)}.top-size_l{--top-forms-base-height: var(--top-forms-base-height_l)}.top-input_input,.top-textarea_textarea,.top-editArea_form,.top-select_select{box-sizing:border-box;border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);display:inline-flex;appearance:none;-webkit-appearance:none}.top-select_select{padding-right:calc(var(--top-forms-padding) + var(--top-forms_clear-width) + var(--top-select_arrow-width))}.top-select{position:relative}.top-select[data-top-icon]:before,.top-select[data-top-icon2]:after{position:absolute;z-index:3}.top-select[data-top-icon][data-top-icon2]:after{left:calc(var(--top-icon-width))}.top-cleaner[data-top-icon]{--top-icon-size: 20px;--top-icon-width: 20px;--top-icon-color: var(--color-text-secondary);cursor:pointer;border-radius:50%;width:30px;height:24px;margin-left:-34px;transform:translate(calc(0px - var(--top-forms-border-width) - var(--top-select_arrow-width)));display:flex;align-items:center;justify-content:center;position:relative;z-index:1}.top-cleaner[data-top-icon]:hover{--top-icon-color: var(--color-text-secondary-2)}:root{--top-icon-size: 24px;--top-icon-width: 0px;--top-icon2-size: 24px;--top-icon2-width: 0px;--top-icon-both-width: 0px}[data-top-icon]{--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon-color: inherit}[data-top-icon2]{--top-icon2-width: calc(var(--top-icon2-size) + 8px);--top-icon2-color: inherit}[data-top-icon=""]{--top-icon-width: 0px}[data-top-icon2=""]{--top-icon2-width: 0px}[data-top-icon]:before,[data-top-icon2]:after{pointer-events:none;content:attr(data-top-icon);border-radius:var(--top-forms-radius);width:var(--top-icon-width);color:var(--top-icon-color);font-family:Topvisor-2;font-size:var(--top-icon-size);font-weight:400;line-height:1;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}[data-top-icon2]:after{content:attr(data-top-icon2);width:var(--top-icon2-width);color:var(--top-icon2-color);font-size:var(--top-icon2-size)}[data-top-icon],[data-top-icon2]{--top-icon-both-width: calc(var(--top-icon-width) + var(--top-icon2-width))}[data-top-icon=]:before{font-family:Topvisor}.top-as-a{cursor:pointer;color:var(--color-text-primary)}.top-as-a:hover{text-decoration:underline}.has_scroll_container{transform:translate(0)}.has_scroll{--scroll-offset-top: 0px;--scroll-padding-top: 0px;--scroll-padding-bottom: 0px;--scroll-height: 0px;--scroll-shadow-height: 15px;--scroll-shadow-color: rgba(0, 0, 0, .1)}.has_scroll:before{pointer-events:none;content:"";background:linear-gradient(180deg,transparent calc(100% - var(--scroll-shadow-height)),var(--scroll-shadow-color));height:calc(var(--scroll-height) - var(--scroll-padding-top) - var(--scroll-padding-bottom));position:fixed;top:calc(var(--scroll-offset-top) + var(--scroll-padding-top));right:0;left:0;z-index:1;display:block}.has_scroll-started:before{background:linear-gradient(180deg,var(--scroll-shadow-color),transparent var(--scroll-shadow-height),transparent calc(100% - var(--scroll-shadow-height)),var(--scroll-shadow-color))}.has_scroll-finished:before{background:linear-gradient(180deg,var(--scroll-shadow-color),transparent var(--scroll-shadow-height))}.top-ellipsis,.top-ellipsis1{max-height:100%;line-height:1.23;text-overflow:ellipsis;overflow:hidden;flex-grow:1}.top-ellipsis1{white-space:nowrap}.top-ellipsis2,.top-ellipsis3{max-width:fit-content;line-height:1.23;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.top-ellipsis3{-webkit-line-clamp:3}.top-hidden{display:none!important}.top-unvisible{width:0;height:0;overflow:hidden;position:absolute;-webkit-appearance:none;appearance:none;border:none}.top-unvisible:focus-visible{outline:none}.top-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}:disabled:not(option):not(optgroup),:disabled~.top-formsCaption,.top-disabled{opacity:.4;filter:grayscale(100%)}.top-input.top-disabled,.top-select.top-disabled{filter:unset}.top-input_input:disabled,.top-textarea_textarea:disabled,.top-select_select:disabled{opacity:1;background-color:var(--color-bg-shading-3);filter:unset}.top-checkbox_input:not(:checked):not(:indeterminate):disabled,.top-radio_input:not(:checked):disabled,.top-checkboxSwitcher_input:disabled{opacity:1;background-color:var(--color-layer-1)}.top-checkboxSwitcher_input:disabled{background-color:var(--color-layer-4)}.top-error,.top-error::placeholder,.top-error:before{--top-forms-border-color: var(--color-line-negative-1);border-color:var(--color-line-negative-1)}.top-error{--top-icon-color: var(--color-text-negative);color:var(--color-text-negative)}.top-error~.top-formsCaption{color:var(--color-text-negative)}.top-warning{--top-icon-color: var(--color-text-warning);color:var(--color-text-warning)}input.top-error,textarea.top-error,select.top-error,.top-editArea_form.top-error{animation:top-error .8s}@keyframes top-error{0%{outline-offset:10px;outline:3px solid transparent}50%{outline:3px solid var(--color-line-negative-1);outline-offset:2px}to{outline:3px solid transparent;outline-offset:2px}}@media only screen and (min-width: 900px){.top-only-mobile{display:none!important}}@media only screen and (max-width: 900px){.top-only-pc{display:none!important}}html:not([lang=ru]) .top-only-ru,html:not([lang=en]) .top-only-en{display:none!important}html[data-is_admin="0"] .top-only-admin{display:none!important}.top-select_arrow{--top-select_arrow-size: 12px;--top-select_arrow-width: 24px;background-image:url("data:image/svg+xml,%3Csvg width='16' height='9' viewBox='0 0 16 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.293 0.29269L8 6.5857L1.70704 0.29269C1.31679 -0.0975633 0.682937 -0.0975633 0.292687 0.29269C-0.0975624 0.682943 -0.0975624 1.31656 0.292687 1.70682L7.29294 8.70713C7.68343 9.09762 8.31657 9.09762 8.70706 8.70713L15.7073 1.70682C16.0976 1.31656 16.0976 0.682943 15.7073 0.29269C15.3171 -0.0975633 14.6832 -0.0975633 14.293 0.29269Z' fill='%23808A99'/%3E%3C/svg%3E");background-size:14px;background-position:calc(100% - var(--top-forms-padding)) 50%;background-repeat:no-repeat;padding-right:32px}.top-select_arrow~.top-cleaner{--top-select_arrow-width: 24px}
package/assets/forms.css CHANGED
@@ -1 +1 @@
1
- .top-avatar{width:var(--62448408);height:var(--62448408);display:flex;flex-grow:0;flex-shrink:0;position:relative;top:0;left:0}.top-avatar_image{border-radius:50%;width:100%;height:100%}.top-avatar_status{border-radius:50%;border:2px solid var(--color-layout-front-1);background-color:var(--color-bg-positive-1);width:25%;height:25%;position:absolute;right:0;bottom:0}.top-button{cursor:pointer;box-sizing:border-box;box-shadow:var(--top-button-box-shadow);border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);background-color:var(--top-button-background-color);height:var(--top-forms-base-height);padding:0 var(--top-forms-padding);color:var(--top-button-color);line-height:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,box-shadow .15s}.top-button:hover{box-shadow:var(--top-button-box-shadow-hover);background-color:var(--top-button-background-color-hover)}.top-button:active{box-shadow:var(--top-button-box-shadow-active);background-color:var(--top-button-background-color-active)}.top-button.top-active{box-shadow:var(--top-button-box-shadow-selected);background-color:var(--top-button-background-color-selected)}.top-button.top-button-progress{cursor:help;box-shadow:inset #00000080 0 0 64px;background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-size:32px 32px;animation:progress 1s linear infinite}@keyframes progress{0%{background-position-x:0px}to{background-position-x:32px}}a.top-button,button.top-button{min-width:100px;text-decoration:none}a.top-button,a.top-button:hover{min-width:var(--top-forms-base-height);text-decoration:none}.top-button[data-top-icon]:not(:empty):not(.top-button-withoutText),.top-button[data-top-icon2]:not(:empty):not(.top-button-withoutText){justify-content:flex-start;text-align:left}.top-button[data-top-icon]{padding-left:0}.top-button[data-top-icon2]{padding-right:var(--top-select_arrow-width)}.top-button[data-top-icon2]:after{margin-left:auto}.top-button:empty,.top-button.top-button-withoutText{min-width:var(--top-forms-base-height)}.top-button[data-top-icon]:empty,.top-button[data-top-icon2]:empty,.top-button[data-top-icon].top-button-withoutText,.top-button[data-top-icon2].top-button-withoutText{padding:0}.top-button.top-color_blue{--top-button-background-color: var(--color-bg-primary-1)}.top-button.top-color_green{--top-button-background-color: var(--color-bg-positive-1)}.top-button.top-color_orange{--top-button-background-color: var(--color-bg-warning-1)}.top-button.top-color_red{--top-button-background-color: var(--color-bg-negative-1)}.top-button.top-color_pink{--top-button-background-color: var(--color-bg-info-1)}.top-button.top-color_theme{--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-color: var(--color-text-1);--top-button-background-color: transparent;--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-2)}.top-button.top-color_theme:hover{--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1)}.top-button.top-color_theme.top-active{--top-icon-color: var(--color-text-2)}.top-button.top-style_outline{--top-button-box-shadow: none;--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-button-background-color: var(--color-layout-front-1);--top-forms-border-width: 1px}.top-button.top-style_outline.top-color_theme{--top-button-color: var(--color-text-2);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-2);--top-button-background-color-selected: var(--color-layer-3);--top-forms-border-color: var(--color-line-3)}.top-button.top-style_outline.top-color_theme:hover{--top-forms-border-color: var(--color-line-4)}.top-button.top-style_outline.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color-hover: var(--color-layer-primary-1);--top-button-background-color-active: var(--color-layer-primary-2);--top-button-background-color-selected: var(--color-layer-primary-3);--top-forms-border-color: var(--color-line-primary-1)}.top-button.top-style_outline.top-color_blue:hover{--top-forms-border-color: var(--color-line-primary-2)}.top-button.top-style_outline.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color-hover: var(--color-layer-positive-1);--top-button-background-color-active: var(--color-layer-positive-2);--top-button-background-color-selected: var(--color-layer-positive-3);--top-forms-border-color: var(--color-line-positive-1)}.top-button.top-style_outline.top-color_green:hover{--top-forms-border-color: var(--color-line-positive-2)}.top-button.top-style_outline.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color-hover: var(--color-layer-warning-1);--top-button-background-color-active: var(--color-layer-warning-2);--top-button-background-color-selected: var(--color-layer-warning-3);--top-forms-border-color: var(--color-line-warning-1)}.top-button.top-style_outline.top-color_orange:hover{--top-forms-border-color: var(--color-line-warning-2)}.top-button.top-style_outline.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color-hover: var(--color-layer-negative-1);--top-button-background-color-active: var(--color-layer-negative-2);--top-button-background-color-selected: var(--color-layer-negative-3);--top-forms-border-color: var(--color-line-negative-1)}.top-button.top-style_outline.top-color_red:hover{--top-forms-border-color: var(--color-line-negative-2)}.top-button.top-style_outline.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color-hover: var(--color-layer-info-1);--top-button-background-color-active: var(--color-layer-info-2);--top-button-background-color-selected: var(--color-layer-info-3);--top-forms-border-color: var(--color-line-info-1)}.top-button.top-style_outline.top-color_pink:hover{--top-forms-border-color: var(--color-line-info-2)}.top-button.top-style_soft{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none}.top-button.top-style_soft.top-color_theme{--top-button-color: var(--color-text-1);--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1);--top-button-background-color: var(--color-layer-1);--top-button-background-color-hover: var(--color-layer-2);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-3)}.top-button.top-style_soft.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color: var(--color-layer-primary-1);--top-button-background-color-hover: var(--color-layer-primary-2);--top-button-background-color-active: var(--color-layer-primary-3);--top-button-background-color-selected: var(--color-layer-primary-3)}.top-button.top-style_soft.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color: var(--color-layer-positive-1);--top-button-background-color-hover: var(--color-layer-positive-2);--top-button-background-color-active: var(--color-layer-positive-3);--top-button-background-color-selected: var(--color-layer-positive-3)}.top-button.top-style_soft.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color: var(--color-layer-warning-1);--top-button-background-color-hover: var(--color-layer-warning-2);--top-button-background-color-active: var(--color-layer-warning-3);--top-button-background-color-selected: var(--color-layer-warning-3)}.top-button.top-style_soft.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color: var(--color-layer-negative-1);--top-button-background-color-hover: var(--color-layer-negative-2);--top-button-background-color-active: var(--color-layer-negative-3);--top-button-background-color-selected: var(--color-layer-negative-3)}.top-button.top-style_soft.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color: var(--color-layer-info-1);--top-button-background-color-hover: var(--color-layer-info-2);--top-button-background-color-active: var(--color-layer-info-3);--top-button-background-color-selected: var(--color-layer-info-3)}.top-button.top-style_transparent{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: transparent;--top-button-background-color-hover: transparent;--top-button-background-color-active: transparent;--top-button-background-color-selected: var(--color-steel-200)}.top-button.top-style_transparent:hover{opacity:.8}.top-button.top-style_transparent.top-color_blue{--top-button-color: var(--color-text-primary)}.top-button.top-style_transparent.top-color_green{--top-button-color: var(--color-text-positive)}.top-button.top-style_transparent.top-color_orange{--top-button-color: var(--color-text-warning)}.top-button.top-style_transparent.top-color_red{--top-button-color: var(--color-text-negative)}.top-button.top-style_transparent.top-color_pink{--top-button-color: var(--color-text-info)}.top-button{--top-button-color: var(--color-white);--top-button-background-color: transparent;--top-button-background-color-hover: var(--top-button-background-color);--top-button-background-color-active: var(--top-button-background-color-hover);--top-button-background-color-selected: var(--top-button-background-color-hover);--top-button-box-shadow: none;--top-button-box-shadow-hover: var(--top-shadow-darken-2);--top-button-box-shadow-active: var(--top-shadow-darken-3);--top-button-box-shadow-selected: var(--top-shadow-darken-3);--top-forms-border-width: 0px;--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding))}.top-button>span{pointer-events:none}.top-button>.top-ellipsis{flex-grow:0}.top-button.top-size_xs{--top-forms-padding: var(--top-forms-padding_xs);--top-forms-base-height: var(--top-forms-base-height_xs)}.top-button.top-size_m{--top-forms-padding: var(--top-forms-padding_m);--top-forms-base-height: var(--top-forms-base-height_m)}.top-button.top-size_l{--top-forms-padding: var(--top-forms-padding_l);--top-forms-base-height: var(--top-forms-base-height_l)}.top-button_badge-afterText{order:100}.top-button:not([data-top-icon2])>.top-button_badge-afterText{margin-left:0}.top-forms-optionLabel{flex-grow:1}.top-forms-optionLabel_title{color:var(--color-text-1);min-height:var(--top-forms-option-height);display:flex;align-items:center}.top-forms-optionLabel_title-disabled{color:var(--color-text-3)}.top-forms-optionLabel_description{color:var(--color-text-2);font-size:.85em;line-height:var(--top-forms-option-height)}.top-forms-optionLabel_description-disabled{color:var(--color-text-3)}.top-checkbox{cursor:pointer;display:inline-flex}.top-checkbox_input{cursor:inherit;border-radius:4px;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-checkbox_input:before{content:" ";color:#fff;font-family:Topvisor-2;font-size:16px}.top-checkbox_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-checkbox_input:checked,.top-checkbox_input:indeterminate{border-color:var(--top-forms-option-color);background:var(--top-forms-option-color)}.top-checkbox_input:checked:before{content:""}.top-checkbox_input:indeterminate:before{content:""}.top-checkbox_input:checked:hover,.top-checkbox_input:indeterminate:hover{border-color:var(--top-forms-option-color-hover);background:var(--top-forms-option-color-hover)}.top-checkbox_input.top-error{border-color:var(--color-bg-negative-1)}.top-checkbox_input.top-error:hover{border-color:var(--color-bg-negative-2)}.top-checkbox_input:checked.top-error,.top-checkbox_input:indeterminate.top-error{background:var(--color-bg-negative-1)}.top-checkbox_input:checked.top-error:hover,.top-checkbox_input:indeterminate.top-error:hover{background:var(--color-bg-negative-2)}.top-hint{--top-icon-size: 16px;--top-icon-width: var(--top-icon-size);border-radius:50%;background:var(--color-layout-front-1);padding:1px;color:var(--color-text-3);line-height:1;z-index:1;pointer-events:all}.top-hint:hover{color:var(--color-text-2)}:root{--top-loadbar-duration: 10s;--top-loadbar-color: var(--color-line-primary-1)}.top-loadbar{background:var(--top-loadbar-color);width:0;height:4px;position:absolute;top:0;left:0;animation:top-loadbar var(--top-loadbar-duration) forwards}@keyframes top-loadbar{0%{width:4px}4%{width:4%}5%{width:5%}to{width:95%}}.top-input{--top-forms_clear-width: 0px;border-radius:var(--top-forms-radius);width:180px;position:relative;display:inline-flex;align-items:center;gap:var(--top-gap-1)}.top-input_input{color:var(--color-text-2);background:var(--top-forms-background-color);height:var(--top-forms-base-height);padding:0;padding-right:max(var(--top-forms-padding),calc(var(--top-icon2-width) + var(--top-forms_clear-width)));padding-left:max(var(--top-forms-padding),var(--top-icon-width))}.top-input_input:hover{background:var(--top-forms-background-color-hover)}.top-input_input:focus{color:var(--color-text-1);border-color:var(--color-line-primary-1);outline:none}.top-input[data-top-icon]:before,.top-input[data-top-icon2]:after{--top-icon-color: var(--color-text-4);--top-icon2-color: var(--color-text-4);position:absolute;z-index:3;font-size:20px}.top-input[data-top-icon]:before{left:0}.top-input[data-top-icon2]:after{right:0}.top-input-withCleaner{--top-forms_clear-width: 24px}.top-input_cleaner[data-top-icon]{--top-icon-size: 16px;--top-icon-width: 20px;--top-icon-color: var(--color-text-3);cursor:pointer;border-radius:50%;width:20px;height:16px;position:absolute;right:calc(var(--top-forms-border-width) + max(var(--top-icon2-width),var(--top-forms-padding) / 2));z-index:1;display:flex;align-items:center;justify-content:center}.top-input_cleaner[data-top-icon]:hover{--top-icon-color: var(--color-text-2)}.top-input_input{width:50%;flex-grow:1}.top-input .top-loadbar{border-radius:var(--top-forms-radius) 0 0 0}.top-input-datepicker{width:calc(105px + var(--top-icon-width) + var(--top-icon2-width))}.top-input_input-date{opacity:0;position:absolute;inset:0;z-index:-1}.top-input_input-date::-webkit-inner-spin-button{display:none}.top-input_input-date::-webkit-calendar-picker-indicator{opacity:0}.top-inputRange{max-width:320px;vertical-align:baseline;display:inline-flex;gap:8px}.top-inputRange_dash{height:var(--top-forms-base-height);color:var(--color-text-4);align-self:flex-end;display:inline-flex;align-items:center}.top-inputRange>.top-input{flex-grow:1}:root{--top-radio-background-color: var(--color-layout-front-1);--top-radio-background-color-hover: var(--top-radio-background-color);--top-radio-background-color-active: var(--top-radio-background-color)}.top-radio{cursor:pointer}.top-radio_input{border-radius:50%;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-radio_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-radio_input:checked{border-color:var(--top-forms-option-color);border-width:5px}.top-radio_input:checked:hover{border-color:var(--color-bg-primary-2)}.top-radio_input.top-error,.top-radio_input.top-error:hover{border-color:var(--color-bg-negative-1)}.top-checkboxSwitcher{cursor:pointer;display:inline-flex;gap:4px}.top-checkboxSwitcher_input{border-radius:9px;border:none;background:var(--color-layer-3);width:36px;height:18px;position:relative}.top-checkboxSwitcher_input:before{content:"";border-radius:50%;background:var(--color-white);width:12px;height:12px;margin:3px;position:absolute;top:0;left:0;transition:left .1s}.top-checkboxSwitcher_input:hover{background:var(--color-layer-4)}.top-checkboxSwitcher_input:checked{background:var(--top-forms-option-color)}.top-checkboxSwitcher_input:checked:hover{background:var(--top-forms-option-color-hover)}.top-checkboxSwitcher_input:checked:before{left:50%}.top-checkboxSwitcher_input.top-error{background:var(--color-layer-negative-3)}.top-checkboxSwitcher_input.top-error:hover{background:var(--color-layer-negative-4)}.top-checkboxSwitcher_input.top-error:checked{background:var(--color-bg-negative-2)}.top-checkboxSwitcher_input.top-error:checked:hover{background:var(--color-bg-negative-1)}.top-textarea{width:180px;display:inline-flex;align-items:center;position:relative}.top-textarea_textarea{color:var(--color-text-1);background:var(--top-forms-background-color);width:100%;padding:var(--top-forms-padding);resize:none}.top-textarea_textarea:hover{background:var(--top-forms-background-color-hover)}.top-textarea_textarea:focus{border-color:var(--color-line-primary-1);outline:none}html .top-textarea_textarea.top-textarea_textarea-expandable{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0}.top-textarea_pseudoContent{box-sizing:border-box;min-height:var(--445cd2c3);padding:var(--top-forms-padding);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;z-index:-1}.top-textarea_hint{position:absolute;top:2px;right:2px}.top-select{color:var(--color-text-1);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);align-items:center;width:180px;max-width:100%;display:inline-flex}.top-select-error{--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative)}.top-select_select{background-color:var(--top-forms-background-color);padding-left:var(--top-forms-padding);text-indent:clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)));width:100%;height:var(--top-forms-base-height);text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.top-select optgroup{color:var(--color-text-1);font-style:normal}.top-select option:not(:disabled){background:var(--color-layout-front-1);color:var(--color-text-1)}.top-select option:disabled{background:unset;color:unset}@-moz-document url-prefix(){.top-select_select{text-indent:calc(clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)))/2)}}@media only screen and (min-width: 900px){.top-changer{cursor:pointer;border-radius:100%;width:0;transform:translate(-44px);color:var(--color-text-2);font-size:16px;line-height:1;display:none;z-index:2;order:4}.top-changer:hover{color:var(--color-text-primary)}.top-changer:after{content:"";background-color:var(--top-forms-background-color);font-family:Topvisor-2}*:hover>.top-changer{display:block}}
1
+ .top-avatar{width:var(--3ce69dc2);height:var(--3ce69dc2);display:flex;flex-grow:0;flex-shrink:0;position:relative;top:0;left:0}.top-avatar_image{border-radius:50%;width:100%;height:100%}.top-avatar_status{border-radius:50%;border:2px solid var(--color-layout-front-1);background-color:var(--color-bg-positive-1);width:25%;height:25%;position:absolute;right:0;bottom:0}.top-button{cursor:pointer;box-sizing:border-box;box-shadow:var(--top-button-box-shadow);border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);background-color:var(--top-button-background-color);height:var(--top-forms-base-height);padding:0 var(--top-forms-padding);color:var(--top-button-color);line-height:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,box-shadow .15s}.top-button:hover{box-shadow:var(--top-button-box-shadow-hover);background-color:var(--top-button-background-color-hover)}.top-button:active{box-shadow:var(--top-button-box-shadow-active);background-color:var(--top-button-background-color-active)}.top-button.top-active{box-shadow:var(--top-button-box-shadow-selected);background-color:var(--top-button-background-color-selected)}.top-button.top-button-progress{cursor:help;box-shadow:inset #00000080 0 0 64px;background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-size:32px 32px;animation:progress 1s linear infinite}@keyframes progress{0%{background-position-x:0px}to{background-position-x:32px}}a.top-button,button.top-button{min-width:100px;text-decoration:none}a.top-button,a.top-button:hover{min-width:var(--top-forms-base-height);text-decoration:none}.top-button[data-top-icon]:not(:empty):not(.top-button-withoutText),.top-button[data-top-icon2]:not(:empty):not(.top-button-withoutText){justify-content:flex-start;text-align:left}.top-button[data-top-icon]{padding-left:0}.top-button[data-top-icon2]{padding-right:var(--top-select_arrow-width)}.top-button[data-top-icon2]:after{margin-left:auto}.top-button:empty,.top-button.top-button-withoutText{min-width:var(--top-forms-base-height)}.top-button[data-top-icon]:empty,.top-button[data-top-icon2]:empty,.top-button[data-top-icon].top-button-withoutText,.top-button[data-top-icon2].top-button-withoutText{padding:0}.top-button.top-color_blue{--top-button-background-color: var(--color-bg-primary-1)}.top-button.top-color_green{--top-button-background-color: var(--color-bg-positive-1)}.top-button.top-color_orange{--top-button-background-color: var(--color-bg-warning-1)}.top-button.top-color_red{--top-button-background-color: var(--color-bg-negative-1)}.top-button.top-color_pink{--top-button-background-color: var(--color-bg-info-1)}.top-button.top-color_theme{--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-color: var(--color-text-1);--top-button-background-color: transparent;--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-2)}.top-button.top-color_theme:hover{--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1)}.top-button.top-color_theme.top-active{--top-icon-color: var(--color-text-2)}.top-button.top-style_outline{--top-button-box-shadow: none;--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-button-background-color: var(--color-layout-front-1);--top-forms-border-width: 1px}.top-button.top-style_outline.top-color_theme{--top-button-color: var(--color-text-2);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-background-color-hover: var(--color-layer-1);--top-button-background-color-active: var(--color-layer-2);--top-button-background-color-selected: var(--color-layer-3);--top-forms-border-color: var(--color-line-3)}.top-button.top-style_outline.top-color_theme:hover{--top-forms-border-color: var(--color-line-4)}.top-button.top-style_outline.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color-hover: var(--color-layer-primary-1);--top-button-background-color-active: var(--color-layer-primary-2);--top-button-background-color-selected: var(--color-layer-primary-3);--top-forms-border-color: var(--color-line-primary-1)}.top-button.top-style_outline.top-color_blue:hover{--top-forms-border-color: var(--color-line-primary-2)}.top-button.top-style_outline.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color-hover: var(--color-layer-positive-1);--top-button-background-color-active: var(--color-layer-positive-2);--top-button-background-color-selected: var(--color-layer-positive-3);--top-forms-border-color: var(--color-line-positive-1)}.top-button.top-style_outline.top-color_green:hover{--top-forms-border-color: var(--color-line-positive-2)}.top-button.top-style_outline.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color-hover: var(--color-layer-warning-1);--top-button-background-color-active: var(--color-layer-warning-2);--top-button-background-color-selected: var(--color-layer-warning-3);--top-forms-border-color: var(--color-line-warning-1)}.top-button.top-style_outline.top-color_orange:hover{--top-forms-border-color: var(--color-line-warning-2)}.top-button.top-style_outline.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color-hover: var(--color-layer-negative-1);--top-button-background-color-active: var(--color-layer-negative-2);--top-button-background-color-selected: var(--color-layer-negative-3);--top-forms-border-color: var(--color-line-negative-1)}.top-button.top-style_outline.top-color_red:hover{--top-forms-border-color: var(--color-line-negative-2)}.top-button.top-style_outline.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color-hover: var(--color-layer-info-1);--top-button-background-color-active: var(--color-layer-info-2);--top-button-background-color-selected: var(--color-layer-info-3);--top-forms-border-color: var(--color-line-info-1)}.top-button.top-style_outline.top-color_pink:hover{--top-forms-border-color: var(--color-line-info-2)}.top-button.top-style_soft{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none}.top-button.top-style_soft.top-color_theme{--top-button-color: var(--color-text-1);--top-icon-color: var(--color-text-1);--top-icon2-color: var(--color-text-1);--top-button-background-color: var(--color-layer-1);--top-button-background-color-hover: var(--color-layer-2);--top-button-background-color-active: var(--color-layer-3);--top-button-background-color-selected: var(--color-layer-3)}.top-button.top-style_soft.top-color_blue{--top-button-color: var(--color-text-primary);--top-icon-color: var(--color-text-primary);--top-icon2-color: var(--color-text-primary);--top-button-background-color: var(--color-layer-primary-1);--top-button-background-color-hover: var(--color-layer-primary-2);--top-button-background-color-active: var(--color-layer-primary-3);--top-button-background-color-selected: var(--color-layer-primary-3)}.top-button.top-style_soft.top-color_green{--top-button-color: var(--color-text-positive);--top-icon-color: var(--color-text-positive);--top-icon2-color: var(--color-text-positive);--top-button-background-color: var(--color-layer-positive-1);--top-button-background-color-hover: var(--color-layer-positive-2);--top-button-background-color-active: var(--color-layer-positive-3);--top-button-background-color-selected: var(--color-layer-positive-3)}.top-button.top-style_soft.top-color_orange{--top-button-color: var(--color-text-warning);--top-icon-color: var(--color-text-warning);--top-icon2-color: var(--color-text-warning);--top-button-background-color: var(--color-layer-warning-1);--top-button-background-color-hover: var(--color-layer-warning-2);--top-button-background-color-active: var(--color-layer-warning-3);--top-button-background-color-selected: var(--color-layer-warning-3)}.top-button.top-style_soft.top-color_red{--top-button-color: var(--color-text-negative);--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative);--top-button-background-color: var(--color-layer-negative-1);--top-button-background-color-hover: var(--color-layer-negative-2);--top-button-background-color-active: var(--color-layer-negative-3);--top-button-background-color-selected: var(--color-layer-negative-3)}.top-button.top-style_soft.top-color_pink{--top-button-color: var(--color-text-info);--top-icon-color: var(--color-text-info);--top-icon2-color: var(--color-text-info);--top-button-background-color: var(--color-layer-info-1);--top-button-background-color-hover: var(--color-layer-info-2);--top-button-background-color-active: var(--color-layer-info-3);--top-button-background-color-selected: var(--color-layer-info-3)}.top-button.top-style_transparent{--top-shadow-darken-1: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: transparent;--top-button-background-color-hover: transparent;--top-button-background-color-active: transparent;--top-button-background-color-selected: var(--color-steel-200)}.top-button.top-style_transparent:hover{opacity:.8}.top-button.top-style_transparent.top-color_blue{--top-button-color: var(--color-text-primary)}.top-button.top-style_transparent.top-color_green{--top-button-color: var(--color-text-positive)}.top-button.top-style_transparent.top-color_orange{--top-button-color: var(--color-text-warning)}.top-button.top-style_transparent.top-color_red{--top-button-color: var(--color-text-negative)}.top-button.top-style_transparent.top-color_pink{--top-button-color: var(--color-text-info)}.top-button{--top-button-color: var(--color-white);--top-button-background-color: transparent;--top-button-background-color-hover: var(--top-button-background-color);--top-button-background-color-active: var(--top-button-background-color-hover);--top-button-background-color-selected: var(--top-button-background-color-hover);--top-button-box-shadow: none;--top-button-box-shadow-hover: var(--top-shadow-darken-2);--top-button-box-shadow-active: var(--top-shadow-darken-3);--top-button-box-shadow-selected: var(--top-shadow-darken-3);--top-forms-border-width: 0px;--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding))}.top-button>span{pointer-events:none}.top-button>.top-ellipsis{flex-grow:0}.top-button.top-size_xs{--top-forms-padding: var(--top-forms-padding_xs);--top-forms-base-height: var(--top-forms-base-height_xs)}.top-button.top-size_m{--top-forms-padding: var(--top-forms-padding_m);--top-forms-base-height: var(--top-forms-base-height_m)}.top-button.top-size_l{--top-forms-padding: var(--top-forms-padding_l);--top-forms-base-height: var(--top-forms-base-height_l)}.top-button_badge-afterText{order:100}.top-button:not([data-top-icon2])>.top-button_badge-afterText{margin-left:0}.top-forms-optionLabel{flex-grow:1}.top-forms-optionLabel_title{color:var(--color-text-1);min-height:var(--top-forms-option-height);display:flex;align-items:center}.top-forms-optionLabel_title-disabled{color:var(--color-text-3)}.top-forms-optionLabel_description{color:var(--color-text-2);font-size:.85em;line-height:var(--top-forms-option-height)}.top-forms-optionLabel_description-disabled{color:var(--color-text-3)}.top-checkbox{cursor:pointer;display:inline-flex}.top-checkbox_input{cursor:inherit;border-radius:4px;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-checkbox_input:before{content:" ";color:#fff;font-family:Topvisor-2;font-size:16px}.top-checkbox_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-checkbox_input:checked,.top-checkbox_input:indeterminate{border-color:var(--top-forms-option-color);background:var(--top-forms-option-color)}.top-checkbox_input:checked:before{content:""}.top-checkbox_input:indeterminate:before{content:""}.top-checkbox_input:checked:hover,.top-checkbox_input:indeterminate:hover{border-color:var(--top-forms-option-color-hover);background:var(--top-forms-option-color-hover)}.top-checkbox_input.top-error{border-color:var(--color-bg-negative-1)}.top-checkbox_input.top-error:hover{border-color:var(--color-bg-negative-2)}.top-checkbox_input:checked.top-error,.top-checkbox_input:indeterminate.top-error{background:var(--color-bg-negative-1)}.top-checkbox_input:checked.top-error:hover,.top-checkbox_input:indeterminate.top-error:hover{background:var(--color-bg-negative-2)}.top-hint{--top-icon-size: 16px;--top-icon-width: var(--top-icon-size);border-radius:50%;background:var(--color-layout-front-1);padding:1px;color:var(--color-text-3);line-height:1;z-index:1;pointer-events:all}.top-hint:hover{color:var(--color-text-2)}:root{--top-loadbar-duration: 10s;--top-loadbar-color: var(--color-line-primary-1)}.top-loadbar{background:var(--top-loadbar-color);width:0;height:4px;position:absolute;top:0;left:0;animation:top-loadbar var(--top-loadbar-duration) forwards}@keyframes top-loadbar{0%{width:4px}4%{width:4%}5%{width:5%}to{width:95%}}.top-input{--top-forms_clear-width: 0px;border-radius:var(--top-forms-radius);width:180px;position:relative;display:inline-flex;align-items:center;gap:var(--top-gap-1)}.top-input_input{color:var(--color-text-2);background:var(--top-forms-background-color);height:var(--top-forms-base-height);padding:0;padding-right:max(var(--top-forms-padding),calc(var(--top-icon2-width) + var(--top-forms_clear-width)));padding-left:max(var(--top-forms-padding),var(--top-icon-width))}.top-input_input:hover{background:var(--top-forms-background-color-hover)}.top-input_input:focus{color:var(--color-text-1);border-color:var(--color-line-primary-1);outline:none}.top-input[data-top-icon]:before,.top-input[data-top-icon2]:after{--top-icon-color: var(--color-text-4);--top-icon2-color: var(--color-text-4);position:absolute;z-index:3;font-size:20px}.top-input[data-top-icon]:before{left:0}.top-input[data-top-icon2]:after{right:0}.top-input-withCleaner{--top-forms_clear-width: 24px}.top-input_cleaner[data-top-icon]{--top-icon-size: 16px;--top-icon-width: 20px;--top-icon-color: var(--color-text-3);cursor:pointer;border-radius:50%;width:20px;height:16px;position:absolute;right:calc(var(--top-forms-border-width) + max(var(--top-icon2-width),var(--top-forms-padding) / 2));z-index:1;display:flex;align-items:center;justify-content:center}.top-input_cleaner[data-top-icon]:hover{--top-icon-color: var(--color-text-2)}.top-input_input{width:50%;flex-grow:1}.top-input .top-loadbar{border-radius:var(--top-forms-radius) 0 0 0}.top-input-datepicker{width:calc(105px + var(--top-icon-width) + var(--top-icon2-width))}.top-input_input-date{opacity:0;position:absolute;inset:0;z-index:-1}.top-input_input-date::-webkit-inner-spin-button{display:none}.top-input_input-date::-webkit-calendar-picker-indicator{opacity:0}.top-inputRange{max-width:320px;vertical-align:baseline;display:inline-flex;gap:8px}.top-inputRange_dash{height:var(--top-forms-base-height);color:var(--color-text-4);align-self:flex-end;display:inline-flex;align-items:center}.top-inputRange>.top-input{flex-grow:1}:root{--top-radio-background-color: var(--color-layout-front-1);--top-radio-background-color-hover: var(--top-radio-background-color);--top-radio-background-color-active: var(--top-radio-background-color)}.top-radio{cursor:pointer}.top-radio_input{border-radius:50%;background:var(--color-layout-front-1);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-radio_input:hover{border-color:var(--top-forms-border-color-hover);background:var(--color-layer-primary-1)}.top-radio_input:checked{border-color:var(--top-forms-option-color);border-width:5px}.top-radio_input:checked:hover{border-color:var(--color-bg-primary-2)}.top-radio_input.top-error,.top-radio_input.top-error:hover{border-color:var(--color-bg-negative-1)}.top-checkboxSwitcher{cursor:pointer;display:inline-flex;gap:4px}.top-checkboxSwitcher_input{border-radius:9px;border:none;background:var(--color-layer-3);width:36px;height:18px;position:relative}.top-checkboxSwitcher_input:before{content:"";border-radius:50%;background:var(--color-white);width:12px;height:12px;margin:3px;position:absolute;top:0;left:0;transition:left .1s}.top-checkboxSwitcher_input:hover{background:var(--color-layer-4)}.top-checkboxSwitcher_input:checked{background:var(--top-forms-option-color)}.top-checkboxSwitcher_input:checked:hover{background:var(--top-forms-option-color-hover)}.top-checkboxSwitcher_input:checked:before{left:50%}.top-checkboxSwitcher_input.top-error{background:var(--color-layer-negative-3)}.top-checkboxSwitcher_input.top-error:hover{background:var(--color-layer-negative-4)}.top-checkboxSwitcher_input.top-error:checked{background:var(--color-bg-negative-2)}.top-checkboxSwitcher_input.top-error:checked:hover{background:var(--color-bg-negative-1)}.top-textarea{width:180px;display:inline-flex;align-items:center;position:relative}.top-textarea_textarea{color:var(--color-text-1);background:var(--top-forms-background-color);width:100%;padding:var(--top-forms-padding);resize:none}.top-textarea_textarea:hover{background:var(--top-forms-background-color-hover)}.top-textarea_textarea:focus{border-color:var(--color-line-primary-1);outline:none}html .top-textarea_textarea.top-textarea_textarea-expandable{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0}.top-textarea_pseudoContent{box-sizing:border-box;min-height:var(--13a3474e);padding:var(--top-forms-padding);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;z-index:-1}.top-textarea_hint{position:absolute;top:2px;right:2px}.top-select{color:var(--color-text-1);--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);align-items:center;width:180px;max-width:100%;display:inline-flex}.top-select-error{--top-icon-color: var(--color-text-negative);--top-icon2-color: var(--color-text-negative)}.top-select_select{background-color:var(--top-forms-background-color);padding-left:var(--top-forms-padding);text-indent:clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)));width:100%;height:var(--top-forms-base-height);text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.top-select optgroup{color:var(--color-text-1);font-style:normal}.top-select option:not(:disabled){background:var(--color-layout-front-1);color:var(--color-text-1)}.top-select option:disabled{background:unset;color:unset}@-moz-document url-prefix(){.top-select_select{text-indent:calc(clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)))/2)}}@media only screen and (min-width: 900px){.top-changer{cursor:pointer;border-radius:100%;width:0;transform:translate(-44px);color:var(--color-text-2);font-size:16px;line-height:1;display:none;z-index:2;order:4}.top-changer:hover{color:var(--color-text-primary)}.top-changer:after{content:"";background-color:var(--top-forms-background-color);font-family:Topvisor-2}*:hover>.top-changer{display:block}}