@topvisor/ui 1.0.12 → 1.0.13

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 (171) hide show
  1. package/.chunks/datepicker-DOmAO7Nq.es.js +44 -0
  2. package/.chunks/datepicker-DOmAO7Nq.es.js.map +1 -0
  3. package/.chunks/datepicker-DX0qKxI_.amd.js +2 -0
  4. package/.chunks/datepicker-DX0qKxI_.amd.js.map +1 -0
  5. package/.chunks/{forms-JhDIERVr.amd.js → forms-Dg1N8Jv3.amd.js} +3 -3
  6. package/.chunks/forms-Dg1N8Jv3.amd.js.map +1 -0
  7. package/.chunks/{forms-Dm3JmuO3.es.js → forms-FHMqYVvM.es.js} +29 -29
  8. package/.chunks/forms-FHMqYVvM.es.js.map +1 -0
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DsTNQnlk.es.js → listItem.vue_vue_type_script_setup_true_lang-CuWOLCGe.es.js} +2 -2
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CuWOLCGe.es.js.map +1 -0
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DPLgssbE.amd.js → listItem.vue_vue_type_script_setup_true_lang-tzOQcPs_.amd.js} +2 -2
  12. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-tzOQcPs_.amd.js.map +1 -0
  13. package/.chunks/{menu.vue_vue_type_style_index_0_lang-86OJDcnB.es.js → menu.vue_vue_type_style_index_0_lang-BGdS1bYl.es.js} +2 -2
  14. package/.chunks/menu.vue_vue_type_style_index_0_lang-BGdS1bYl.es.js.map +1 -0
  15. package/.chunks/{menu.vue_vue_type_style_index_0_lang-DkiaQwIJ.amd.js → menu.vue_vue_type_style_index_0_lang-C_ND48ou.amd.js} +2 -2
  16. package/.chunks/menu.vue_vue_type_style_index_0_lang-C_ND48ou.amd.js.map +1 -0
  17. package/.chunks/{notice-BPxrLH4a.amd.js → notice-BixWe-8g.amd.js} +2 -2
  18. package/.chunks/notice-BixWe-8g.amd.js.map +1 -0
  19. package/.chunks/{notice-CTd0Zf-U.es.js → notice-D07Kq3fU.es.js} +2 -2
  20. package/.chunks/notice-D07Kq3fU.es.js.map +1 -0
  21. package/.chunks/{popup-DXuKsMuU.es.js → popup-CBNL-Ixi.es.js} +46 -492
  22. package/.chunks/popup-CBNL-Ixi.es.js.map +1 -0
  23. package/.chunks/popup-CSNWKE4F.amd.js +2 -0
  24. package/.chunks/popup-CSNWKE4F.amd.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/.chunks/utils-B6497Bik.es.js +330 -0
  28. package/.chunks/utils-B6497Bik.es.js.map +1 -0
  29. package/.chunks/utils-BgirCapu.es.js +220 -0
  30. package/.chunks/utils-BgirCapu.es.js.map +1 -0
  31. package/.chunks/utils-Bxmh9YxC.amd.js +2 -0
  32. package/.chunks/utils-Bxmh9YxC.amd.js.map +1 -0
  33. package/.chunks/utils-DINqzHO_.amd.js +2 -0
  34. package/.chunks/utils-DINqzHO_.amd.js.map +1 -0
  35. package/README.md +86 -86
  36. package/assets/charts.css +1 -1
  37. package/assets/core.css +1 -1
  38. package/assets/forms.css +1 -1
  39. package/charts/charts.amd.js +1 -1
  40. package/charts/charts.amd.js.map +1 -1
  41. package/charts/charts.js +134 -81
  42. package/charts/charts.js.map +1 -1
  43. package/components/charts/charts.d.ts +2 -0
  44. package/components/charts/miniChart/miniChart.d.ts +8 -1
  45. package/components/charts/miniCharts/miniCharts.d.ts +20 -0
  46. package/components/charts/miniCharts/miniCharts.vue.d.ts +29 -0
  47. package/components/charts/miniCharts/stories/dummy.d.ts +6 -0
  48. package/components/dialog/dialog/composables/asyncDialogWorker.d.ts +51 -0
  49. package/components/dialog/dialog/composables/dialogWorker.d.ts +108 -0
  50. package/components/dialog/dialog/composables/types.d.ts +11 -0
  51. package/components/dialog/dialog/composables/utils.d.ts +21 -0
  52. package/components/dialog/dialog/dialog.vue.d.ts +27 -0
  53. package/components/dialog/dialog/dialogs/dialogs.vue.d.ts +10 -0
  54. package/components/dialog/dialog/page/page.vue.d.ts +18 -0
  55. package/components/dialog/dialog/page/types.d.ts +65 -0
  56. package/components/dialog/dialog/pageComponent/pageComponent.vue.d.ts +6 -0
  57. package/components/dialog/dialog/pageComponent/types.d.ts +18 -0
  58. package/components/dialog/dialog/stories/autoload.d.ts +2 -0
  59. package/components/dialog/dialog/stories/dialog_example/pages/utils.d.ts +7 -0
  60. package/components/dialog/dialog/types.d.ts +58 -0
  61. package/components/dialog/dialog.d.ts +6 -0
  62. package/components/dialog/lib/types.d.ts +16 -0
  63. package/components/dialog/lib/utils.d.ts +14 -0
  64. package/components/dialog/lib/utils.globalEvents.d.ts +8 -0
  65. package/components/dialog/lib/worker.d.ts +55 -0
  66. package/components/forms/select/select.d.ts +1 -1
  67. package/components/project/tagSelector/tagSelector.vue.d.ts +2 -2
  68. package/components/project/tagSelector/types.d.ts +2 -2
  69. package/components/tabsView/tabsView/tabsView.d.ts +1 -1
  70. package/core/app.amd.js +1 -1
  71. package/core/app.amd.js.map +1 -1
  72. package/core/app.d.ts +2 -0
  73. package/core/app.js +57 -50
  74. package/core/app.js.map +1 -1
  75. package/core/core/core.d.ts +2 -2
  76. package/core/core/options.d.ts +1 -1
  77. package/core/plugins/core.d.ts +12 -3
  78. package/dialog/dialog.amd.js +2 -0
  79. package/dialog/dialog.amd.js.map +1 -0
  80. package/dialog/dialog.d.ts +2 -0
  81. package/dialog/dialog.js +183 -0
  82. package/dialog/dialog.js.map +1 -0
  83. package/forms/forms.amd.js +1 -1
  84. package/forms/forms.js +1 -1
  85. package/forms/helpers.amd.js.map +1 -1
  86. package/forms/helpers.js.map +1 -1
  87. package/formsExt/formsExt.amd.js +1 -1
  88. package/formsExt/formsExt.amd.js.map +1 -1
  89. package/formsExt/formsExt.js +54 -54
  90. package/formsExt/formsExt.js.map +1 -1
  91. package/icomoon/Read Me.txt +7 -7
  92. package/icomoon/Topvisor icons.json +5845 -5845
  93. package/icomoon/demo-files/demo.css +161 -161
  94. package/icomoon/demo-files/demo.js +30 -30
  95. package/icomoon/demo.html +3379 -3379
  96. package/icomoon/fonts/Topvisor-2.svg +263 -263
  97. package/icomoon/style.css +740 -740
  98. package/jquery-ui.min.css +6 -0
  99. package/package.json +33 -33
  100. package/popup/popup.amd.js +1 -1
  101. package/popup/popup.amd.js.map +1 -1
  102. package/popup/popup.js +2 -2
  103. package/popup/popup.js.map +1 -1
  104. package/popup/worker.amd.js +1 -1
  105. package/popup/worker.amd.js.map +1 -1
  106. package/popup/worker.js +2 -2
  107. package/popup/worker.js.map +1 -1
  108. package/project/project.amd.js +1 -1
  109. package/project/project.amd.js.map +1 -1
  110. package/project/project.js +3 -3
  111. package/project/project.js.map +1 -1
  112. package/require/css.amd.js +12 -12
  113. package/tabs/tabs.amd.js.map +1 -1
  114. package/tabs/tabs.js.map +1 -1
  115. package/tabsView/tabsView.amd.js +1 -1
  116. package/tabsView/tabsView.amd.js.map +1 -1
  117. package/tabsView/tabsView.js +16 -16
  118. package/tabsView/tabsView.js.map +1 -1
  119. package/utils/check.amd.js.map +1 -1
  120. package/utils/check.js.map +1 -1
  121. package/utils/clipboard.amd.js.map +1 -1
  122. package/utils/clipboard.js.map +1 -1
  123. package/utils/date.amd.js +1 -1
  124. package/utils/date.js +1 -1
  125. package/utils/device.amd.js +1 -1
  126. package/utils/device.js +1 -1
  127. package/utils/dom.amd.js.map +1 -1
  128. package/utils/dom.js.map +1 -1
  129. package/utils/image.amd.js.map +1 -1
  130. package/utils/image.js.map +1 -1
  131. package/utils/keyboard.amd.js.map +1 -1
  132. package/utils/keyboard.js.map +1 -1
  133. package/utils/lodash.amd.js +1 -1
  134. package/utils/lodash.js +5 -5
  135. package/utils/number.amd.js.map +1 -1
  136. package/utils/number.js.map +1 -1
  137. package/utils/price.amd.js +1 -1
  138. package/utils/price.amd.js.map +1 -1
  139. package/utils/price.js +1 -1
  140. package/utils/price.js.map +1 -1
  141. package/utils/route.amd.js.map +1 -1
  142. package/utils/route.js.map +1 -1
  143. package/utils/scroll.amd.js.map +1 -1
  144. package/utils/scroll.js.map +1 -1
  145. package/utils/searchers.amd.js.map +1 -1
  146. package/utils/searchers.js.map +1 -1
  147. package/utils/string.amd.js +1 -1
  148. package/utils/string.amd.js.map +1 -1
  149. package/utils/string.js +1 -1
  150. package/utils/string.js.map +1 -1
  151. package/utils/system.amd.js.map +1 -1
  152. package/utils/system.js.map +1 -1
  153. package/utils/url.amd.js.map +1 -1
  154. package/utils/url.js.map +1 -1
  155. package/web-types.json +89 -89
  156. package/.chunks/datepicker-4Pv7WbOy.amd.js +0 -248
  157. package/.chunks/datepicker-4Pv7WbOy.amd.js.map +0 -1
  158. package/.chunks/datepicker-DDso1VCq.es.js +0 -290
  159. package/.chunks/datepicker-DDso1VCq.es.js.map +0 -1
  160. package/.chunks/forms-Dm3JmuO3.es.js.map +0 -1
  161. package/.chunks/forms-JhDIERVr.amd.js.map +0 -1
  162. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DPLgssbE.amd.js.map +0 -1
  163. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DsTNQnlk.es.js.map +0 -1
  164. package/.chunks/menu.vue_vue_type_style_index_0_lang-86OJDcnB.es.js.map +0 -1
  165. package/.chunks/menu.vue_vue_type_style_index_0_lang-DkiaQwIJ.amd.js.map +0 -1
  166. package/.chunks/notice-BPxrLH4a.amd.js.map +0 -1
  167. package/.chunks/notice-CTd0Zf-U.es.js.map +0 -1
  168. package/.chunks/popup-BXBFCWHU.amd.js +0 -448
  169. package/.chunks/popup-BXBFCWHU.amd.js.map +0 -1
  170. package/.chunks/popup-DXuKsMuU.es.js.map +0 -1
  171. package/components/core/dialog/types.d.ts +0 -2
@@ -0,0 +1,51 @@
1
+ import { Ref } from 'vue';
2
+ import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
3
+ import { TopDialogHandle } from './dialogWorker';
4
+ /**
5
+ * Объект для работы с асинхронным диалоговым окном
6
+ *
7
+ * Является прослойкой для доступа к TopDialogHandle
8
+ */
9
+ export declare class AsyncTopDialogHandle<T extends TopDialogComponent> {
10
+ /**
11
+ * Функция, определяющая компонент TopDialogComponent
12
+ */
13
+ readonly resolve: AsyncTopDialogComponentLoader<T>;
14
+ /**
15
+ * Реактивная Сссылка на объект worker,
16
+ *
17
+ * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено
18
+ */
19
+ readonly worker: Ref<TopDialogHandle<T> | null>;
20
+ constructor(resolve: AsyncTopDialogComponentLoader<T>);
21
+ /**
22
+ * Получить доступ к TopDialogHandle
23
+ */
24
+ get(): Promise<TopDialogHandle<T>>;
25
+ /**
26
+ * Открыть диалоговое окно
27
+ */
28
+ open(...args: Parameters<TopDialogHandle<T>['open']>): Promise<void>;
29
+ /**
30
+ * Открыть диалоговое окно как ссылку, для хеш-навигации
31
+ *
32
+ * Только общедоступные диалоговые окна, расположенные в @/dialogs
33
+ */
34
+ openAsLink(...args: Parameters<TopDialogHandle<T>['open']>): Promise<void>;
35
+ /**
36
+ * Закрыть диалоговое окно
37
+ *
38
+ * Не меняет состояние компонента диалогового окна
39
+ */
40
+ close(...args: Parameters<TopDialogHandle<T>['close']>): Promise<void>;
41
+ /**
42
+ * Размонтировать виджет диалогового окна
43
+ */
44
+ destroy(...args: Parameters<TopDialogHandle<T>['close']>): Promise<void>;
45
+ /**
46
+ * Устанвоить props
47
+ *
48
+ * Полностью сбрасывается состояние props
49
+ */
50
+ setProps(...args: Parameters<TopDialogHandle<T>['setProps']>): Promise<void>;
51
+ }
@@ -0,0 +1,108 @@
1
+ import { ComponentInstance, ComponentInternalInstance, Ref } from 'vue';
2
+ import { default as TopDialog } from '../dialog.vue';
3
+ import { MoveDirection } from '../../lib/types';
4
+ import { TopDialogComponent } from './types';
5
+ /**
6
+ * Объект для работы с диалоговым окном
7
+ *
8
+ * Каждое окно уникально и может быть открыто одновременно только один раз
9
+ *
10
+ * Можно определить много окон, после чего с ними можно вести работу в любой части приложения
11
+ */
12
+ export declare class TopDialogHandle<T extends TopDialogComponent> {
13
+ /**
14
+ * Индентификатор, определяется на уровне компонента TopDialogComponent
15
+ *
16
+ * Может использоваться в навигации для открытия нужных окон с нужными настройками
17
+ */
18
+ id: string;
19
+ /**
20
+ * ID, используемый в верстке диалогового окна
21
+ */
22
+ idAttr: string;
23
+ /**
24
+ * Пользовательский компонент диалогового окна
25
+ */
26
+ Component: T;
27
+ /**
28
+ * Компонент инициирован
29
+ *
30
+ * Устанавливается после первого вызова useTopDialog()
31
+ */
32
+ isMounted: Ref<boolean, boolean>;
33
+ /**
34
+ * Компонент готов к использованию
35
+ *
36
+ * Используется для внутренних преобразований после отрисовки
37
+ */
38
+ isReady: Ref<boolean, boolean>;
39
+ /**
40
+ * Диалоговое окно открыто
41
+ */
42
+ isOpened: Ref<boolean, boolean>;
43
+ /**
44
+ * Имя активной страницы дилогового окна
45
+ */
46
+ pageActive: Ref<string, string>;
47
+ /**
48
+ * Диалоговое окно находится в состоянии загрузки своей страницы
49
+ */
50
+ isLoadingPage: Ref<boolean, boolean>;
51
+ /**
52
+ * Следующая активная страница
53
+ *
54
+ * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию
55
+ */
56
+ pageActiveNext: Ref<string, string>;
57
+ /**
58
+ * props компонента, доступны после инициализации
59
+ */
60
+ props?: ComponentInstance<T>['$props'];
61
+ /**
62
+ * emit базового компонента `TopDialog`
63
+ */
64
+ emit?: ComponentInstance<typeof TopDialog>['$emit'];
65
+ /**
66
+ * Одноразовое событие на закрытие диалогового окна
67
+ *
68
+ * Используется для привязки окна к сценариям использования
69
+ */
70
+ onCloseOnce?: (props: typeof this.props, pageName: string) => void;
71
+ constructor(TopDialogComponent: T);
72
+ /**
73
+ * Событие - компонент инициирован
74
+ */
75
+ onMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance): void;
76
+ /**
77
+ * Открыть диалоговое окно
78
+ *
79
+ * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента
80
+ */
81
+ open(pageName?: string, props?: {}, args?: [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection): Promise<void>;
82
+ /**
83
+ * Открыть диалоговое окно как ссылку, для хеш-навигации
84
+ *
85
+ * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader
86
+ */
87
+ openAsLink(pageName?: string, props?: {}, _args?: string[], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection): Promise<void>;
88
+ /**
89
+ * Закрыть диалоговое окно
90
+ *
91
+ * Не меняет состояние компонента диалогового окна
92
+ */
93
+ close(): Promise<void>;
94
+ /**
95
+ * Размонтировать $.dialog
96
+ */
97
+ destroy(): Promise<void>;
98
+ /**
99
+ * Устанвоить props
100
+ *
101
+ * Полностью сбрасывается состояние props
102
+ */
103
+ setProps(props?: ComponentInstance<T>['$props']): Promise<void>;
104
+ /**
105
+ * Проверить, есть ли необходимость отрисовки страницы диалогового окна
106
+ */
107
+ needShowPage(pageName: string): boolean;
108
+ }
@@ -0,0 +1,11 @@
1
+ import { Component } from 'vue';
2
+ /**
3
+ * Компонент с определением конкретного диалогового окна с использованием компонента `TopDialog`
4
+ */
5
+ export type TopDialogComponent = Component & {
6
+ id?: string;
7
+ };
8
+ export type AsyncDialogComponentResolveResult<T extends TopDialogComponent> = {
9
+ default: T;
10
+ };
11
+ export type AsyncTopDialogComponentLoader<T extends TopDialogComponent> = () => Promise<AsyncDialogComponentResolveResult<T>>;
@@ -0,0 +1,21 @@
1
+ import { TopDialogHandle } from './dialogWorker';
2
+ import { AsyncTopDialogHandle } from './asyncDialogWorker';
3
+ import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
4
+ /**
5
+ * Получить объект управленя текущим диалоговым окном
6
+ */
7
+ export declare const useTopDialogSelf: () => TopDialogHandle<TopDialogComponent>;
8
+ /**
9
+ * Получить объект управленя диалоговым окном
10
+ *
11
+ * При первом вызове компонент диалогового окна будет внедрен в компонент DialogWrapper
12
+ */
13
+ export declare const useTopDialog: <T extends TopDialogComponent>(DialogComponent: T) => TopDialogHandle<T>;
14
+ /**
15
+ * Получить объект управленя асинхронным диалоговым окном
16
+ *
17
+ * Компонент диалогового окна будет загружен и инициирован при первом взаимодействии с объектом
18
+ *
19
+ * Использует useTopDialog()
20
+ */
21
+ export declare const useAsyncTopDialog: <T extends TopDialogComponent>(resolve: AsyncTopDialogComponentLoader<T>) => AsyncTopDialogHandle<T>;
@@ -0,0 +1,27 @@
1
+ import { Props, Slots } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare function __VLS_template(): {
4
+ slots: Readonly<Slots> & Slots;
5
+ refs: {};
6
+ attrs: Partial<{}>;
7
+ };
8
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
9
+ declare const __VLS_component: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
10
+ close: (pageName: string) => any;
11
+ open: (pageName: string) => any;
12
+ }, string, PublicProps, Readonly<Props> & Readonly<{
13
+ onClose?: ((pageName: string) => any) | undefined;
14
+ onOpen?: ((pageName: string) => any) | undefined;
15
+ }>, {
16
+ width: string;
17
+ height: string;
18
+ modal: boolean;
19
+ historyType: "push" | "replace";
20
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
22
+ export default _default;
23
+ type __VLS_WithTemplateSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1,10 @@
1
+ import { TopDialogHandle } from '../composables/dialogWorker';
2
+ import { TopDialogComponent } from '../composables/types';
3
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
4
+ export declare const getDialogWorker: (id: string) => TopDialogHandle<TopDialogComponent> | undefined;
5
+ /**
6
+ * Добавить компонент диалогового окна для использования
7
+ */
8
+ export declare const addDialogWorker: <T extends TopDialogComponent>(TopDialogComponent: T) => TopDialogHandle<T>;
9
+ declare const _default: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
10
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { Props, Slots } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare function __VLS_template(): {
4
+ slots: Readonly<Slots> & Slots;
5
+ refs: {};
6
+ attrs: Partial<{}>;
7
+ };
8
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
9
+ declare const __VLS_component: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {
10
+ order: number;
11
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
13
+ export default _default;
14
+ type __VLS_WithTemplateSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,65 @@
1
+ export interface Props extends PropsCommon {
2
+ /**
3
+ * Статус загрузки страницы диалогового окна
4
+ *
5
+ * При включении взаимодействие со страницей блокируется, отображается анимация загрузки
6
+ */
7
+ isLoading?: boolean;
8
+ }
9
+ /**
10
+ * Общие props для компонентов реализуюущих TopDialogPage
11
+ */
12
+ export interface PropsCommon {
13
+ /**
14
+ * Имя страницы для диалогового окна
15
+ *
16
+ * Имя страницы нужно для навигации между страницами в одном диалоговом окне
17
+ */
18
+ name: string;
19
+ /**
20
+ * Порядкой номер страницы в диалоговом окне
21
+ *
22
+ * Одна и та же страница может быть подключена в разные диалоговые окна и иметь разный порядковый номер
23
+ */
24
+ order: number;
25
+ /**
26
+ * Имя предыдущей страницы
27
+ *
28
+ * Для кнопки Назад / Закрыть в мобильной версии
29
+ */
30
+ prevName?: string;
31
+ }
32
+ /**
33
+ * Общие props для компонентов реализуюущих TopDialogPage
34
+ *
35
+ * Для не SFC компонентов
36
+ */
37
+ export declare const propsPageCommon: {
38
+ name: {
39
+ type: StringConstructor;
40
+ required: boolean;
41
+ };
42
+ order: {
43
+ type: NumberConstructor;
44
+ required: boolean;
45
+ };
46
+ prevName: StringConstructor;
47
+ };
48
+ export interface Slots {
49
+ /**
50
+ * Шапка страницы
51
+ */
52
+ header(props: {}): any;
53
+ /**
54
+ * Кнопки для шапки страницы
55
+ */
56
+ headerButtons(props: {}): any;
57
+ /**
58
+ * Контент страницы
59
+ */
60
+ body(props: {}): any;
61
+ /**
62
+ * Футер страницы
63
+ */
64
+ footer(props: {}): any;
65
+ }
@@ -0,0 +1,6 @@
1
+ import { Props } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {
4
+ keepAlive: boolean;
5
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { PropsCommon } from '../page/types';
2
+ import { Component } from 'vue';
3
+ export interface Props extends PropsCommon {
4
+ /**
5
+ * Компонент страницы с реализицией TopDialogPage
6
+ */
7
+ component: Component;
8
+ /**
9
+ * Кешировать ли эту страницу
10
+ *
11
+ * По умолчанию: true
12
+ */
13
+ keepAlive?: boolean;
14
+ /**
15
+ * Произвольный набор props, который будет передан в компонент страницы
16
+ */
17
+ props?: Record<string, any>;
18
+ }
@@ -0,0 +1,2 @@
1
+ import { TopDialogLoad } from '../../lib/types';
2
+ export declare const load: TopDialogLoad;
@@ -0,0 +1,7 @@
1
+ import { DefineProps } from 'vue';
2
+ import { TopDialogPagePropsCommon } from '../../..';
3
+ /**
4
+ * Логирования в console.log() событий страницы диалогового окна
5
+ * @param props
6
+ */
7
+ export declare const useLog: (props: DefineProps<TopDialogPagePropsCommon, never>) => void;
@@ -0,0 +1,58 @@
1
+ export interface Props {
2
+ id: string;
3
+ /**
4
+ * Имя активной страницы
5
+ */
6
+ pageActive: string;
7
+ /**
8
+ * Базовая ширина окна
9
+ */
10
+ width?: string;
11
+ /**
12
+ * Базовая высота окна
13
+ *
14
+ * Установите auto, если окно должно подстраиваться под размеры содержимого
15
+ *
16
+ * Установите значение, если окно должно подстраиваться под размеры содержимого
17
+ *
18
+ * @example 'auto'
19
+ * @example '200px'
20
+ */
21
+ height?: string;
22
+ /**
23
+ * Является ли окно модальным
24
+ *
25
+ * @see https://api.jqueryui.com/dialog/#option-modal
26
+ */
27
+ modal?: boolean;
28
+ /**
29
+ * Позиция окна
30
+ *
31
+ * @see https://api.jqueryui.com/dialog/#option-position
32
+ */
33
+ position?: string;
34
+ /**
35
+ * Для хеш-навигации
36
+ */
37
+ historyType?: 'push' | 'replace';
38
+ /**
39
+ * Список css классов для диалогового окна
40
+ */
41
+ classes?: string[];
42
+ }
43
+ export type Emits = {
44
+ /**
45
+ * Диалоговое окно было открыто
46
+ */
47
+ open: [pageName: string];
48
+ /**
49
+ * Диалоговое окно было закрыто
50
+ */
51
+ close: [pageName: string];
52
+ };
53
+ export interface Slots {
54
+ /**
55
+ * Слот с компонентами `TopDialogPage` и / или `TopDialogPageComponent`
56
+ */
57
+ default(props: {}): any;
58
+ }
@@ -0,0 +1,6 @@
1
+ export { default as TopDialog } from './dialog/dialog.vue';
2
+ export { default as TopDialogPage } from './dialog/page/page.vue';
3
+ export type { PropsCommon as TopDialogPagePropsCommon } from './dialog/page/types';
4
+ export { propsPageCommon } from './dialog/page/types';
5
+ export { default as TopDialogPageComponent } from './dialog/pageComponent/pageComponent.vue';
6
+ export { useTopDialogSelf } from './dialog/composables/utils';
@@ -0,0 +1,16 @@
1
+ export type TopDialogOptions = {
2
+ /**
3
+ * Загрузчик для компонентов диалоговых окон по их id
4
+ */
5
+ load?: TopDialogLoad;
6
+ /**
7
+ * Пауза перед загрузкой утилиты диалоговых окон в ms
8
+ *
9
+ * Для производительности
10
+ *
11
+ * Утилиты будут в любом случае загружены при работе с диалоговыми окнами, но их не надо грузить каждый раз после открытия страинцы
12
+ */
13
+ autoInitDelay?: number;
14
+ };
15
+ export type TopDialogLoad = (dialogId: string, callback?: () => void) => Promise<void>;
16
+ export type MoveDirection = 'next' | 'prev' | 'none';
@@ -0,0 +1,14 @@
1
+ import { MoveDirection } from './types';
2
+ import { $el } from '../../types';
3
+ export declare const TopDialogUtils: {
4
+ updatePageVue: (dialogId: string, pageName?: string, pageNameNext?: string) => Promise<void>;
5
+ recalcPositions: () => void;
6
+ toViewDirty: (toViewPageName: string, moveDirection?: MoveDirection) => Promise<void>;
7
+ toView: (viewNameOr$Dialog: $el | string, pageName?: string, args?: string[], moveDirection?: MoveDirection, callback?: Function) => Promise<void>;
8
+ toViewPage: ($dialog: $el, pageName?: string, args?: string[], moveDirection?: MoveDirection) => Promise<void>;
9
+ toPrevPage: ($dialog: $el) => void;
10
+ setLoading: ($page: $el, isLoading: boolean, duration?: number) => void;
11
+ isLoading: ($page: $el) => boolean;
12
+ inAnimation: ($dialog: $el) => boolean;
13
+ close: (dialogId: string) => void;
14
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Инициализация глобальных событий для диалоговых окон
3
+ *
4
+ * Проивзодится один раз при подклчюении диалогового окна
5
+ *
6
+ * События не размонитруются
7
+ */
8
+ export declare const initDialogGlobalEvents: () => void;
@@ -0,0 +1,55 @@
1
+ import { MoveDirection, TopDialogOptions } from './types';
2
+ import { $el } from '../../types';
3
+ export declare abstract class TopDialogWorker {
4
+ static state: {
5
+ load: TopDialogOptions["load"] | undefined;
6
+ /**
7
+ * Порядковай номер перехода в диалоговых окнах
8
+ *
9
+ * Для расчета направления Вперед / Назад
10
+ */
11
+ viewPageN: number;
12
+ locationHashPrev: string;
13
+ };
14
+ private static inited;
15
+ /**
16
+ * Инициировать события слежения за парамтерами url
17
+ *
18
+ * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу
19
+ */
20
+ static init(options?: TopDialogOptions): void;
21
+ static getDialogsUtils(): Promise<{
22
+ updatePageVue: (dialogId: string, pageName?: string, pageNameNext?: string) => Promise<void>;
23
+ recalcPositions: () => void;
24
+ toViewDirty: (toViewPageName: string, moveDirection?: MoveDirection) => Promise<void>;
25
+ toView: (viewNameOr$Dialog: $el | string, pageName?: string, args?: string[], moveDirection?: MoveDirection, callback?: Function) => Promise<void>;
26
+ toViewPage: ($dialog: $el, pageName?: string, args?: string[], moveDirection?: MoveDirection) => Promise<void>;
27
+ toPrevPage: ($dialog: $el) => void;
28
+ setLoading: ($page: $el, isLoading: boolean, duration?: number) => void;
29
+ isLoading: ($page: $el) => boolean;
30
+ inAnimation: ($dialog: $el) => boolean;
31
+ close: (dialogId: string) => void;
32
+ }>;
33
+ static get$dialog($el: $el): JQuery<HTMLElement>;
34
+ static get$page($el: $el): JQuery<HTMLElement>;
35
+ /**
36
+ * Закрыть диалоговое окно
37
+ */
38
+ static close(dialogId: string): void;
39
+ /**
40
+ * Размонтировать $.dialog
41
+ */
42
+ static destroy(dialogId: string): void;
43
+ /**
44
+ * Сгенерировать ссылку на страницу в диалоговом окне
45
+ * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}
46
+ * @param moveDirection
47
+ */
48
+ static genViewPageHash(toView: string, moveDirection?: MoveDirection): string;
49
+ /**
50
+ * Сравнить версию открытых диалоговых окон
51
+ * @returns вернет true, если состояния открытых окон изменилось
52
+ */
53
+ static compareStates(hash: string, hash2: string): boolean;
54
+ static opendDialogsFromUrl: () => Promise<true | void>;
55
+ }
@@ -5,7 +5,7 @@ export interface Props {
5
5
  * Словарь для генерации элементов <option>
6
6
  *
7
7
  * Поддерживает 3 типа аргумента:
8
- * - Словарь со значениями: базовый спобоб создать простой список
8
+ * - Словарь со значениями: базовый способ создать простой список
9
9
  * - Словарь с объектами Option: расширенный способ, позволяющий указать для <option disabled> и вынести <option> в <optgroup>
10
10
  * - Массив с объектами Option: альтернативный словарю расширенный способ, в новых версиях js использовать не рекомендуется, работает медленнее
11
11
  *
@@ -6,8 +6,8 @@ type __VLS_PublicProps = {
6
6
  'tags'?: Tag[];
7
7
  } & typeof __VLS_typeProps;
8
8
  declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
9
- selector: (tagsIds: ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-20")[]) => any;
10
9
  "update:modelValue": (modelValue: ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-20")[]) => any;
10
+ selector: (tagsIds: ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-20")[]) => any;
11
11
  setter: (event: {
12
12
  tagsIds: Tag["id"][];
13
13
  targetId?: number | string;
@@ -18,8 +18,8 @@ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, Compo
18
18
  tagsChanged: (tags: Tag[]) => any;
19
19
  "update:tags": (tags: Tag[]) => any;
20
20
  }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
- onSelector?: ((tagsIds: ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-20")[]) => any) | undefined;
22
21
  "onUpdate:modelValue"?: ((modelValue: ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-20")[]) => any) | undefined;
22
+ onSelector?: ((tagsIds: ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-13" | "-14" | "-15" | "-16" | "-17" | "-18" | "-19" | "-20")[]) => any) | undefined;
23
23
  onSetter?: ((event: {
24
24
  tagsIds: Tag["id"][];
25
25
  targetId?: number | string;
@@ -93,7 +93,7 @@ export interface Props {
93
93
  export type FiltersAction = 'add' | 'replace' | 'delete';
94
94
  export type Emits = {
95
95
  /**
96
- * Измнен выбор тегов
96
+ * Изменен выбор тегов
97
97
  *
98
98
  * При выборе тегов в режиме `filter`
99
99
  */
@@ -132,7 +132,7 @@ export type Emits = {
132
132
  }
133
133
  ];
134
134
  /**
135
- * Измнен список тегов
135
+ * Изменен список тегов
136
136
  */
137
137
  tagsChanged: [tags: NonNullable<Props['tags']>];
138
138
  };
@@ -28,7 +28,7 @@ export interface Props {
28
28
  */
29
29
  modelValue: string;
30
30
  /**
31
- * Указывает на то, что компоеннт испоьзуется в основной области документа
31
+ * Указывает на то, что компоеннт Используется в основной области документа
32
32
  *
33
33
  * props - константа, после инициализации менять нельзя
34
34
  *
package/core/app.amd.js CHANGED
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-JhDIERVr.amd","vue","../popup/worker.amd","../utils/clipboard.amd","../utils/string.amd","../utils/route.amd"],function(w,p,a,h,d,P,k,E){"use strict";if(typeof h>"u")var h=window.Vue;class I{static isInited=!1;static init(){this.isInited||(this.isInited=!0,document.addEventListener("mouseover",t=>{var e;!(t.target instanceof HTMLElement)||!((e=t.target.dataset)!=null&&e.topPopupOpenByHover)||t.target.click()}),document.addEventListener("scroll",()=>{a.Core.state.isMobile||a.Core.state.isMobileUA||d.TopPopupWorker.getAll().forEach(t=>d.TopPopupWorker.close(t))}),a.Events.addOnReize(t=>{a.Core.state.isMobile&&t.topEvent.widthDiff&&d.TopPopupWorker.getAll().forEach(e=>d.TopPopupWorker.close(e))}),document.addEventListener("click",this.onclick))}static async onclick(t){var o,n,s,r,c;if(!(t.target instanceof HTMLElement))return;let e;switch(!0){case!!((o=t.target.dataset)!=null&&o.topPopup):e=t.target;break;case!!((n=t.target.parentElement)!=null&&n.dataset.topPopup):e=t.target.parentElement;break;case!!((r=(s=t.target.parentElement)==null?void 0:s.parentElement)!=null&&r.dataset.topPopup):e=(c=t.target.parentElement)==null?void 0:c.parentElement;break}e&&(e.dataset.topPopupDisabled||e.dataset.topPopupOpened||(t.preventDefault(),await d.TopPopupWorker.openByOpener(e)))}}let m;const L={mounted:async(i,t)=>{m||(m=(await new Promise((s,r)=>w(["../utils/dom.amd"],s,r))).storage);const e=t.arg,o=t.value;m(i,e,o)}},C={mounted:function(i,t){t.value.disabled||i.focus()}};let u;const O={mounted(i,t,e){const o=t.value||"top-sticky";u=new IntersectionObserver(n=>{let s=n[0].intersectionRatio<1;s&&t.modifiers.bottom&&n[0].intersectionRect.y===0&&(s=!1),i.classList.toggle(o,s)},{threshold:[1]}),u.observe(i)},unmounted(i,t,e){u==null||u.disconnect()}};let v=!1,g;const f=new Map,y=(i,t)=>{const{distance:e,percent:o}=i.directiveSwipUpOptions,n=i.getBoundingClientRect().top,s=t*o/100/e,r=(t-n)/s;r<=e?i.style.transform=`translateY(${e-r}px)`:i.style.transform="translateY(0px)"},N=i=>{let t=window.innerHeight;window.addEventListener("scroll",()=>{f.forEach(e=>y(e,t))},{passive:!0}),g=new IntersectionObserver(e=>{t=window.innerHeight,e.forEach(o=>{const n=o.target;if(o.intersectionRatio<.1?f.delete(n):f.set(n,n),o.intersectionRatio===0){const{distance:s}=n.directiveSwipUpOptions;n.style.transform=`translateY(${s}px)`}})},{threshold:.1})},M={mounted(i,t,e){var o,n;a.Core.state.isMobileUA||(i.directiveSwipUpOptions={distance:((o=t.value)==null?void 0:o.distance)??100,percent:((n=t.value)==null?void 0:n.percent)??30},v||(N(),v=!0),g.observe(i))},unmounted(i,t,e){f.delete(i),g==null||g.unobserve(i)}},T=i=>{var t,e;if(!((e=(t=a.Core.$)==null?void 0:t.ui)!=null&&e.tooltip)){console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");return}return a.Core.$(i)},S=(i,t)=>{var o;const e=i.value??{};return e.content??=(o=t.props)==null?void 0:o.title,e.content=String(e.content).replace(/\r\n|\r|\n/g,"<br>"),e.position??={my:"bottom-18px",at:"top center"},e},H={mounted(i,t,e){var o;(o=T(i))==null||o.tooltip(S(t,e))},updated(i,t,e,o){var r;const n=S(t,e),s=(r=T(i))==null?void 0:r.tooltip("instance");s&&(s.options={...s.options,...n})},unmounted(i,t,e){var o;(o=T(i))==null||o.tooltip("destroy")}},U=h.defineAsyncComponent(()=>new Promise((i,t)=>w(["../.chunks/notice-BPxrLH4a.amd"],i,t))),F={install:(i,t)=>{i.config.globalProperties.$core=a.Core;for(const e in t)a.Core.state[e]=t[e];t.widthForMobile&&(a.Core.widthForMobile=t.widthForMobile),t.themeName&&(a.Core.themeName=t.themeName),a.Core._setState(),t.topPopupOptions&&(d.TopPopupWorker.options=t.topPopupOptions),I.init(),i.directive("top-data",L),i.directive("top-focus",C),i.directive("top-sticky",O),i.directive("top-swim-up",M),i.directive("top-tooltip",H),i.component("TopAvatar",a.TopAvatar),i.component("TopButton",a.TopButton),i.component("TopCheckbox",a.TopCheckbox),i.component("TopControlLabel",a.TopControlLabel),i.component("TopHint",a.TopHint),i.component("TopInput",a.TopInput),i.component("TopInputDate",a.TopInputDate),i.component("TopInputRange",a.TopInputRange),i.component("TopLoadbar",a.TopLoadbar),i.component("TopRadio",a.TopRadio),i.component("TopSelect",a.TopSelect),i.component("TopSwitcher",a.TopSwitcher),i.component("TopTextarea",a.TopTextarea),i.component("TopNotice",U)}};class R{#e;#t;#o;#n;#p;#i=[];#s=[];#d=[];#a=[];constructor(t){var o;this.#t=t.store,this.#e=this.#t.$id,this.#o=t.options.Page,this.#n=t.options.user,this.#p=t.options.Api,this.#i=t.options.tpaNamesUrlHash||[],this.#s=t.options.tpaNamesStorage||[],this.#d=t.options.tpaNamesStorageLocal||[],this.#a=t.options.tpaNamesGuestLink||[],t.store.genGuestLink=(n,s)=>this.genGuestLink(n,s),(o=this.#n.guest_data)!=null&&o.data||(this.#l(),this.#l(!0),this.#g()),this.#T(),this.#b();const e=a.debounce(()=>{this.#f(),this.#m()});t.store.$subscribe(e)}async genGuestLink(t,e){var r;const o=this.#h();e=Object.assign(e,Object.fromEntries(o));const n=await this.#p.gen(t,"fetchColumn").call({},e);if(n!=null&&n.errors)return;await P.setClipboard(n.result);const s=(r=a.useI18n().Common)==null?void 0:r.Guest_link_copied_to_clipboard;a.Core.notice(s+': <a href="'+n.result+'" target="_blank">'+n.result+"</a>","info")}#h(){const t=new Map;return this.#a.forEach(e=>{const o=k.camelToSnakeCase(e);t.set(o,this.#t[e])}),t}#r(t){if(Object.isFrozen(this))throw"Please, use setOptions only inner commit function";t.forEach((e,o)=>{const n=this.#t[o];if(e!=null&&e!=null&&e.constructor&&e.constructor===n.constructor){if(o.indexOf("date")===0&&!Array.isArray(e)){if(typeof e=="string"&&!/\d\d\d\d-\d\d-\d\d/.test(e))return}this.#t[o]=e}})}#u(t){const e=new Map;return t.forEach((o,n)=>{o!==null&&(o=JSON.stringify(o),e.set(n,o))}),e}#c(t){const e=new Map;return t.forEach((o,n)=>{if(!(o==null||o==="false")){try{if(typeof o=="string"&&!/^\d\d\d\d-\d\d-\d\d$/.test(o)&&(o=JSON.parse(o)),o==null||o==="false")return}catch{}e.set(n,o)}}),e}#g(){let t;try{t=JSON.parse(E.getHash(this.#e))}catch{}if(!t)return;const e=new Map;this.#i.forEach(n=>{const s=t[n];s&&e.set(n,s)});const o=this.#c(e);this.#r(o)}#f(){const t=new Map;this.#i.forEach(n=>{const s=this.#t[n];t.set(n,s)});const e=Object.fromEntries(t),o=JSON.stringify(e);E.setHash(this.#e,o)}#l(t=!1){const e=new Map;let o="state:"+this.#e;t&&(o="state:"+this.#e+":"+location.pathname),this.#s.forEach(s=>{const r=localStorage.getItem(o+":"+s);e.set(s,r)});const n=this.#c(e);this.#r(n)}#m(t=!1){const e=new Map;let o=this.#s,n="state:"+this.#e;t&&(o=this.#d,n="state:"+this.#e+":"+location.pathname),o.forEach(r=>{const c=this.#t[r];e.set(r,c)});const s=this.#u(e);o.forEach(r=>{const c=s.get(r);localStorage.setItem(n+":"+r,c)})}#T(){var s,r,c;const t=(r=(s=this.#n)==null?void 0:s.guest_data)==null?void 0:r.data;if(!t)return;this.#n.id===-1&&(this.#n.positionsReverseDates=t.positionsReverseDates);const e=new Map;this.#a.forEach(l=>{const b=t[l];e.set(l,b)});const o=this.#c(e);this.#r(o);const n=$(".mod_guest_title");if(((c=this.#t.competitorsIds)==null?void 0:c.length)===1&&this.#o.page.data.competitors){let l=this.#o.page.data.competitors.filter(b=>b.id===t.competitorsIds[0]);l.length&&($("a",n).attr("href","http://"+l[0].url),$("a",n).text(l[0].name))}}#b(){this.#t.regionsIndexes&&h.watch(this.#t,t=>{if(!t.length)return;t.forEach((n,s)=>t[s]=n);const e=TplProjectSelectorRegion.genSearchersMap(),o=[];e.forEach(n=>{n.regions.forEach(s=>{s.index!==-1&&o.push(s.index)})}),this.#t.regionsIndexes=t.filter(n=>o.includes(n))},{immediate:!0}),this.#t.competitorsIds&&h.watch(this.#t,t=>{if(!t.length)return;t.forEach((o,n)=>o[n]=o);const e=[this.#o.page.data.project.id];this.#o.page.data.project.competitors.forEach(o=>{o.on>=0&&e.push(o.id)}),this.#t.competitorsIds=t.filter(o=>e.includes(o))})}}const _=i=>{var e,o,n,s;const t=i;!((e=t.options.tpaNamesUrlHash)!=null&&e.length)&&!((o=t.options.tpaNamesStorage)!=null&&o.length)&&!((n=t.options.tpaNamesStorageLocal)!=null&&n.length)&&!((s=t.options.tpaNamesGuestLink)!=null&&s.length)||new R(t)};p.Core=a.Core,p.i18nPlugin=a.i18n,p.useI18n=a.useI18n,p.useI18nLang=a.useI18nLang,p.useI18nSetLang=a.useI18nSetLang,p.corePlugin=F,p.piniaTPAPlugin=_,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","../.chunks/forms-Dg1N8Jv3.amd","vue","../popup/worker.amd","../.chunks/utils-Bxmh9YxC.amd","../utils/clipboard.amd","../utils/string.amd","../utils/route.amd"],function(v,c,a,u,d,h,P,I,E){"use strict";if(typeof u>"u")var u=window.Vue;class y{static isInited=!1;static init(){this.isInited||(this.isInited=!0,document.addEventListener("mouseover",t=>{var e;!(t.target instanceof HTMLElement)||!((e=t.target.dataset)!=null&&e.topPopupOpenByHover)||t.target.click()}),document.addEventListener("scroll",()=>{a.Core.state.isMobile||a.Core.state.isMobileUA||d.TopPopupWorker.getAll().forEach(t=>d.TopPopupWorker.close(t))}),a.Events.addOnReize(t=>{a.Core.state.isMobile&&t.topEvent.widthDiff&&d.TopPopupWorker.getAll().forEach(e=>d.TopPopupWorker.close(e))}),document.addEventListener("click",this.onclick))}static async onclick(t){var o,n,s,r,p;if(!(t.target instanceof HTMLElement))return;let e;switch(!0){case!!((o=t.target.dataset)!=null&&o.topPopup):e=t.target;break;case!!((n=t.target.parentElement)!=null&&n.dataset.topPopup):e=t.target.parentElement;break;case!!((r=(s=t.target.parentElement)==null?void 0:s.parentElement)!=null&&r.dataset.topPopup):e=(p=t.target.parentElement)==null?void 0:p.parentElement;break}e&&(e.dataset.topPopupDisabled||e.dataset.topPopupOpened||(t.preventDefault(),await d.TopPopupWorker.openByOpener(e)))}}let T;const L={mounted:async(i,t)=>{T||(T=(await new Promise((s,r)=>v(["../utils/dom.amd"],s,r))).storage);const e=t.arg,o=t.value;T(i,e,o)}},O={mounted:function(i,t){t.value.disabled||i.focus()}};let g;const C={mounted(i,t,e){const o=t.value||"top-sticky";g=new IntersectionObserver(n=>{let s=n[0].intersectionRatio<1;s&&t.modifiers.bottom&&n[0].intersectionRect.y===0&&(s=!1),i.classList.toggle(o,s)},{threshold:[1]}),g.observe(i)},unmounted(i,t,e){g==null||g.disconnect()}};let k=!1,f;const m=new Map,D=(i,t)=>{const{distance:e,percent:o}=i.directiveSwipUpOptions,n=i.getBoundingClientRect().top,s=t*o/100/e,r=(t-n)/s;r<=e?i.style.transform=`translateY(${e-r}px)`:i.style.transform="translateY(0px)"},N=i=>{let t=window.innerHeight;window.addEventListener("scroll",()=>{m.forEach(e=>D(e,t))},{passive:!0}),f=new IntersectionObserver(e=>{t=window.innerHeight,e.forEach(o=>{const n=o.target;if(o.intersectionRatio<.1?m.delete(n):m.set(n,n),o.intersectionRatio===0){const{distance:s}=n.directiveSwipUpOptions;n.style.transform=`translateY(${s}px)`}})},{threshold:.1})},M={mounted(i,t,e){var o,n;a.Core.state.isMobileUA||(i.directiveSwipUpOptions={distance:((o=t.value)==null?void 0:o.distance)??100,percent:((n=t.value)==null?void 0:n.percent)??30},k||(N(),k=!0),f.observe(i))},unmounted(i,t,e){m.delete(i),f==null||f.unobserve(i)}},b=i=>{var t,e;if(!((e=(t=a.Core.$)==null?void 0:t.ui)!=null&&e.tooltip)){console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");return}return a.Core.$(i)},S=(i,t)=>{var o;const e=i.value??{};return e.content??=(o=t.props)==null?void 0:o.title,e.content=String(e.content).replace(/\r\n|\r|\n/g,"<br>"),e.position??={my:"bottom-18px",at:"top center"},e},H={mounted(i,t,e){var o;(o=b(i))==null||o.tooltip(S(t,e))},updated(i,t,e,o){var r;const n=S(t,e),s=(r=b(i))==null?void 0:r.tooltip("instance");s&&(s.options={...s.options,...n})},unmounted(i,t,e){var o;(o=b(i))==null||o.tooltip("destroy")}},_=u.defineAsyncComponent(()=>new Promise((i,t)=>v(["../.chunks/notice-BixWe-8g.amd"],i,t)));window.vd=console.log;const A={install:(i,t)=>{i.config.globalProperties.$core=a.Core,i.config.globalProperties.$vd=console.log;for(const e in t)a.Core.state[e]=t[e];t.widthForMobile&&(a.Core.widthForMobile=t.widthForMobile),t.themeName&&(a.Core.themeName=t.themeName),a.Core._setState(),t.topPopupOptions&&(d.TopPopupWorker.options=t.topPopupOptions),y.init(),h.TopDialogWorker.init(t.topDialogOptions),i.directive("top-data",L),i.directive("top-focus",O),i.directive("top-sticky",C),i.directive("top-swim-up",M),i.directive("top-tooltip",H),i.component("TopAvatar",a.TopAvatar),i.component("TopButton",a.TopButton),i.component("TopCheckbox",a.TopCheckbox),i.component("TopControlLabel",a.TopControlLabel),i.component("TopHint",a.TopHint),i.component("TopInput",a.TopInput),i.component("TopInputDate",a.TopInputDate),i.component("TopInputRange",a.TopInputRange),i.component("TopLoadbar",a.TopLoadbar),i.component("TopRadio",a.TopRadio),i.component("TopSelect",a.TopSelect),i.component("TopSwitcher",a.TopSwitcher),i.component("TopTextarea",a.TopTextarea),i.component("TopNotice",_),i.component("TopDialogs",h._sfc_main)}};class U{#e;#t;#o;#n;#p;#i=[];#s=[];#d=[];#a=[];constructor(t){var o;this.#t=t.store,this.#e=this.#t.$id,this.#o=t.options.Page,this.#n=t.options.user,this.#p=t.options.Api,this.#i=t.options.tpaNamesUrlHash||[],this.#s=t.options.tpaNamesStorage||[],this.#d=t.options.tpaNamesStorageLocal||[],this.#a=t.options.tpaNamesGuestLink||[],t.store.genGuestLink=(n,s)=>this.genGuestLink(n,s),(o=this.#n.guest_data)!=null&&o.data||(this.#l(),this.#l(!0),this.#g()),this.#T(),this.#b();const e=a.debounce(()=>{this.#f(),this.#m()});t.store.$subscribe(e)}async genGuestLink(t,e){var r;const o=this.#h();e=Object.assign(e,Object.fromEntries(o));const n=await this.#p.gen(t,"fetchColumn").call({},e);if(n!=null&&n.errors)return;await P.setClipboard(n.result);const s=(r=a.useI18n().Common)==null?void 0:r.Guest_link_copied_to_clipboard;a.Core.notice(s+': <a href="'+n.result+'" target="_blank">'+n.result+"</a>","info")}#h(){const t=new Map;return this.#a.forEach(e=>{const o=I.camelToSnakeCase(e);t.set(o,this.#t[e])}),t}#r(t){if(Object.isFrozen(this))throw"Please, use setOptions only inner commit function";t.forEach((e,o)=>{const n=this.#t[o];if(e!=null&&e!=null&&e.constructor&&e.constructor===n.constructor){if(o.indexOf("date")===0&&!Array.isArray(e)){if(typeof e=="string"&&!/\d\d\d\d-\d\d-\d\d/.test(e))return}this.#t[o]=e}})}#u(t){const e=new Map;return t.forEach((o,n)=>{o!==null&&(o=JSON.stringify(o),e.set(n,o))}),e}#c(t){const e=new Map;return t.forEach((o,n)=>{if(!(o==null||o==="false")){try{if(typeof o=="string"&&!/^\d\d\d\d-\d\d-\d\d$/.test(o)&&(o=JSON.parse(o)),o==null||o==="false")return}catch{}e.set(n,o)}}),e}#g(){let t;try{t=JSON.parse(E.getHash(this.#e))}catch{}if(!t)return;const e=new Map;this.#i.forEach(n=>{const s=t[n];s&&e.set(n,s)});const o=this.#c(e);this.#r(o)}#f(){const t=new Map;this.#i.forEach(n=>{const s=this.#t[n];t.set(n,s)});const e=Object.fromEntries(t),o=JSON.stringify(e);E.setHash(this.#e,o)}#l(t=!1){const e=new Map;let o="state:"+this.#e;t&&(o="state:"+this.#e+":"+location.pathname),this.#s.forEach(s=>{const r=localStorage.getItem(o+":"+s);e.set(s,r)});const n=this.#c(e);this.#r(n)}#m(t=!1){const e=new Map;let o=this.#s,n="state:"+this.#e;t&&(o=this.#d,n="state:"+this.#e+":"+location.pathname),o.forEach(r=>{const p=this.#t[r];e.set(r,p)});const s=this.#u(e);o.forEach(r=>{const p=s.get(r);localStorage.setItem(n+":"+r,p)})}#T(){var s,r,p;const t=(r=(s=this.#n)==null?void 0:s.guest_data)==null?void 0:r.data;if(!t)return;this.#n.id===-1&&(this.#n.positionsReverseDates=t.positionsReverseDates);const e=new Map;this.#a.forEach(l=>{const w=t[l];e.set(l,w)});const o=this.#c(e);this.#r(o);const n=$(".mod_guest_title");if(((p=this.#t.competitorsIds)==null?void 0:p.length)===1&&this.#o.page.data.competitors){let l=this.#o.page.data.competitors.filter(w=>w.id===t.competitorsIds[0]);l.length&&($("a",n).attr("href","http://"+l[0].url),$("a",n).text(l[0].name))}}#b(){this.#t.regionsIndexes&&u.watch(this.#t,t=>{if(!t.length)return;t.forEach((n,s)=>t[s]=n);const e=TplProjectSelectorRegion.genSearchersMap(),o=[];e.forEach(n=>{n.regions.forEach(s=>{s.index!==-1&&o.push(s.index)})}),this.#t.regionsIndexes=t.filter(n=>o.includes(n))},{immediate:!0}),this.#t.competitorsIds&&u.watch(this.#t,t=>{if(!t.length)return;t.forEach((o,n)=>o[n]=o);const e=[this.#o.page.data.project.id];this.#o.page.data.project.competitors.forEach(o=>{o.on>=0&&e.push(o.id)}),this.#t.competitorsIds=t.filter(o=>e.includes(o))})}}const F=i=>{var e,o,n,s;const t=i;!((e=t.options.tpaNamesUrlHash)!=null&&e.length)&&!((o=t.options.tpaNamesStorage)!=null&&o.length)&&!((n=t.options.tpaNamesStorageLocal)!=null&&n.length)&&!((s=t.options.tpaNamesGuestLink)!=null&&s.length)||new U(t)};c.Core=a.Core,c.i18nPlugin=a.i18n,c.useI18n=a.useI18n,c.useI18nLang=a.useI18nLang,c.useI18nSetLang=a.useI18nSetLang,c.TopDialogWorker=h.TopDialogWorker,c.useAsyncTopDialog=h.useAsyncTopDialog,c.useTopDialog=h.useTopDialog,c.corePlugin=A,c.piniaTPAPlugin=F,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=app.amd.js.map