@memberjunction/ng-conversations 2.104.0

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 (226) hide show
  1. package/README.md +197 -0
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
  12. package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
  14. package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
  15. package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
  16. package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
  17. package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
  18. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
  19. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
  20. package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
  21. package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
  22. package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
  23. package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
  24. package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
  25. package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
  26. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
  27. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
  28. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
  29. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
  30. package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
  31. package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
  32. package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
  33. package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
  34. package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
  35. package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
  36. package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
  37. package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
  38. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
  39. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
  40. package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
  41. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
  42. package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
  43. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
  44. package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
  45. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
  46. package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
  47. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
  48. package/dist/lib/components/collection/collection-tree.component.js +482 -0
  49. package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
  50. package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
  51. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
  52. package/dist/lib/components/collection/collection-view.component.js +254 -0
  53. package/dist/lib/components/collection/collection-view.component.js.map +1 -0
  54. package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
  55. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
  56. package/dist/lib/components/collection/collections-full-view.component.js +578 -0
  57. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
  58. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
  59. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
  60. package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
  61. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
  62. package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
  63. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
  64. package/dist/lib/components/conversation/conversation-list.component.js +255 -0
  65. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
  66. package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
  67. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
  68. package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
  69. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
  70. package/dist/lib/components/export/export-modal.component.d.ts +37 -0
  71. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
  72. package/dist/lib/components/export/export-modal.component.js +414 -0
  73. package/dist/lib/components/export/export-modal.component.js.map +1 -0
  74. package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
  75. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
  76. package/dist/lib/components/library/library-full-view.component.js +270 -0
  77. package/dist/lib/components/library/library-full-view.component.js.map +1 -0
  78. package/dist/lib/components/members/members-modal.component.d.ts +42 -0
  79. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
  80. package/dist/lib/components/members/members-modal.component.js +352 -0
  81. package/dist/lib/components/members/members-modal.component.js.map +1 -0
  82. package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
  83. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
  84. package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
  85. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
  86. package/dist/lib/components/message/message-input.component.d.ts +137 -0
  87. package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
  88. package/dist/lib/components/message/message-input.component.js +1159 -0
  89. package/dist/lib/components/message/message-input.component.js.map +1 -0
  90. package/dist/lib/components/message/message-item.component.d.ts +140 -0
  91. package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
  92. package/dist/lib/components/message/message-item.component.js +817 -0
  93. package/dist/lib/components/message/message-item.component.js.map +1 -0
  94. package/dist/lib/components/message/message-list.component.d.ts +77 -0
  95. package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
  96. package/dist/lib/components/message/message-list.component.js +316 -0
  97. package/dist/lib/components/message/message-list.component.js.map +1 -0
  98. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
  99. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
  100. package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
  101. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
  102. package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
  103. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
  104. package/dist/lib/components/notification/activity-indicator.component.js +56 -0
  105. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
  106. package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
  107. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
  108. package/dist/lib/components/notification/notification-badge.component.js +160 -0
  109. package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
  110. package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
  111. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
  112. package/dist/lib/components/project/project-form-modal.component.js +357 -0
  113. package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
  114. package/dist/lib/components/project/project-selector.component.d.ts +36 -0
  115. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
  116. package/dist/lib/components/project/project-selector.component.js +317 -0
  117. package/dist/lib/components/project/project-selector.component.js.map +1 -0
  118. package/dist/lib/components/search/search-panel.component.d.ts +120 -0
  119. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
  120. package/dist/lib/components/search/search-panel.component.js +714 -0
  121. package/dist/lib/components/search/search-panel.component.js.map +1 -0
  122. package/dist/lib/components/share/share-modal.component.d.ts +46 -0
  123. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
  124. package/dist/lib/components/share/share-modal.component.js +431 -0
  125. package/dist/lib/components/share/share-modal.component.js.map +1 -0
  126. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
  127. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
  128. package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
  129. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
  130. package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
  131. package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
  132. package/dist/lib/components/task/task-form-modal.component.js +329 -0
  133. package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
  134. package/dist/lib/components/task/task-item.component.d.ts +22 -0
  135. package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
  136. package/dist/lib/components/task/task-item.component.js +234 -0
  137. package/dist/lib/components/task/task-item.component.js.map +1 -0
  138. package/dist/lib/components/task/task-list.component.d.ts +32 -0
  139. package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
  140. package/dist/lib/components/task/task-list.component.js +290 -0
  141. package/dist/lib/components/task/task-list.component.js.map +1 -0
  142. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
  143. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
  144. package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
  145. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
  146. package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
  147. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
  148. package/dist/lib/components/thread/thread-panel.component.js +325 -0
  149. package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
  150. package/dist/lib/components/toast/toast.component.d.ts +26 -0
  151. package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
  152. package/dist/lib/components/toast/toast.component.js +108 -0
  153. package/dist/lib/components/toast/toast.component.js.map +1 -0
  154. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
  155. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
  156. package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
  157. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
  158. package/dist/lib/conversations.module.d.ts +62 -0
  159. package/dist/lib/conversations.module.d.ts.map +1 -0
  160. package/dist/lib/conversations.module.js +248 -0
  161. package/dist/lib/conversations.module.js.map +1 -0
  162. package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
  163. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
  164. package/dist/lib/directives/search-shortcut.directive.js +39 -0
  165. package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
  166. package/dist/lib/models/conversation-state.model.d.ts +72 -0
  167. package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
  168. package/dist/lib/models/conversation-state.model.js +2 -0
  169. package/dist/lib/models/conversation-state.model.js.map +1 -0
  170. package/dist/lib/models/notification.model.d.ts +89 -0
  171. package/dist/lib/models/notification.model.d.ts.map +1 -0
  172. package/dist/lib/models/notification.model.js +11 -0
  173. package/dist/lib/models/notification.model.js.map +1 -0
  174. package/dist/lib/services/active-tasks.service.d.ts +65 -0
  175. package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
  176. package/dist/lib/services/active-tasks.service.js +95 -0
  177. package/dist/lib/services/active-tasks.service.js.map +1 -0
  178. package/dist/lib/services/agent-state.service.d.ts +78 -0
  179. package/dist/lib/services/agent-state.service.d.ts.map +1 -0
  180. package/dist/lib/services/agent-state.service.js +213 -0
  181. package/dist/lib/services/agent-state.service.js.map +1 -0
  182. package/dist/lib/services/artifact-state.service.d.ts +114 -0
  183. package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
  184. package/dist/lib/services/artifact-state.service.js +288 -0
  185. package/dist/lib/services/artifact-state.service.js.map +1 -0
  186. package/dist/lib/services/conversation-agent.service.d.ts +79 -0
  187. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
  188. package/dist/lib/services/conversation-agent.service.js +259 -0
  189. package/dist/lib/services/conversation-agent.service.js.map +1 -0
  190. package/dist/lib/services/conversation-state.service.d.ts +122 -0
  191. package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
  192. package/dist/lib/services/conversation-state.service.js +255 -0
  193. package/dist/lib/services/conversation-state.service.js.map +1 -0
  194. package/dist/lib/services/dialog.service.d.ts +54 -0
  195. package/dist/lib/services/dialog.service.d.ts.map +1 -0
  196. package/dist/lib/services/dialog.service.js +157 -0
  197. package/dist/lib/services/dialog.service.js.map +1 -0
  198. package/dist/lib/services/export.service.d.ts +25 -0
  199. package/dist/lib/services/export.service.d.ts.map +1 -0
  200. package/dist/lib/services/export.service.js +237 -0
  201. package/dist/lib/services/export.service.js.map +1 -0
  202. package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
  203. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
  204. package/dist/lib/services/mention-autocomplete.service.js +160 -0
  205. package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
  206. package/dist/lib/services/mention-parser.service.d.ts +46 -0
  207. package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
  208. package/dist/lib/services/mention-parser.service.js +156 -0
  209. package/dist/lib/services/mention-parser.service.js.map +1 -0
  210. package/dist/lib/services/notification.service.d.ts +108 -0
  211. package/dist/lib/services/notification.service.d.ts.map +1 -0
  212. package/dist/lib/services/notification.service.js +431 -0
  213. package/dist/lib/services/notification.service.js.map +1 -0
  214. package/dist/lib/services/search.service.d.ts +144 -0
  215. package/dist/lib/services/search.service.d.ts.map +1 -0
  216. package/dist/lib/services/search.service.js +370 -0
  217. package/dist/lib/services/search.service.js.map +1 -0
  218. package/dist/lib/services/toast.service.d.ts +46 -0
  219. package/dist/lib/services/toast.service.d.ts.map +1 -0
  220. package/dist/lib/services/toast.service.js +76 -0
  221. package/dist/lib/services/toast.service.js.map +1 -0
  222. package/dist/public-api.d.ts +42 -0
  223. package/dist/public-api.d.ts.map +1 -0
  224. package/dist/public-api.js +49 -0
  225. package/dist/public-api.js.map +1 -0
  226. package/package.json +54 -0
@@ -0,0 +1,357 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Metadata } from '@memberjunction/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@progress/kendo-angular-dialog";
6
+ import * as i3 from "@progress/kendo-angular-buttons";
7
+ import * as i4 from "@progress/kendo-angular-inputs";
8
+ function ProjectFormModalComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
9
+ i0.ɵɵelementStart(0, "div", 5);
10
+ i0.ɵɵtext(1, "Project name is required");
11
+ i0.ɵɵelementEnd();
12
+ } }
13
+ function ProjectFormModalComponent_For_17_Template(rf, ctx) { if (rf & 1) {
14
+ const _r1 = i0.ɵɵgetCurrentView();
15
+ i0.ɵɵelementStart(0, "button", 21);
16
+ i0.ɵɵlistener("click", function ProjectFormModalComponent_For_17_Template_button_click_0_listener() { const color_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectColor(color_r2)); });
17
+ i0.ɵɵelementEnd();
18
+ } if (rf & 2) {
19
+ const color_r2 = ctx.$implicit;
20
+ const ctx_r2 = i0.ɵɵnextContext();
21
+ i0.ɵɵstyleProp("background-color", color_r2);
22
+ i0.ɵɵclassProp("selected", ctx_r2.formData.color === color_r2);
23
+ i0.ɵɵproperty("title", color_r2);
24
+ } }
25
+ function ProjectFormModalComponent_For_34_Template(rf, ctx) { if (rf & 1) {
26
+ const _r4 = i0.ɵɵgetCurrentView();
27
+ i0.ɵɵelementStart(0, "button", 22);
28
+ i0.ɵɵlistener("click", function ProjectFormModalComponent_For_34_Template_button_click_0_listener() { const icon_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectIcon(icon_r5)); });
29
+ i0.ɵɵelement(1, "i");
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ const icon_r5 = ctx.$implicit;
33
+ const ctx_r2 = i0.ɵɵnextContext();
34
+ i0.ɵɵclassProp("selected", ctx_r2.formData.icon === icon_r5);
35
+ i0.ɵɵproperty("title", icon_r5);
36
+ i0.ɵɵadvance();
37
+ i0.ɵɵclassMapInterpolate1("fa-solid ", icon_r5, "");
38
+ } }
39
+ const DEFAULT_PROJECT_COLORS = [
40
+ '#0076B6', // MJ Blue
41
+ '#F44336', // Red
42
+ '#E91E63', // Pink
43
+ '#9C27B0', // Purple
44
+ '#673AB7', // Deep Purple
45
+ '#3F51B5', // Indigo
46
+ '#2196F3', // Blue
47
+ '#03A9F4', // Light Blue
48
+ '#00BCD4', // Cyan
49
+ '#009688', // Teal
50
+ '#4CAF50', // Green
51
+ '#8BC34A', // Light Green
52
+ '#CDDC39', // Lime
53
+ '#FFEB3B', // Yellow
54
+ '#FFC107', // Amber
55
+ '#FF9800', // Orange
56
+ '#FF5722', // Deep Orange
57
+ '#795548', // Brown
58
+ '#607D8B', // Blue Grey
59
+ '#9E9E9E' // Grey
60
+ ];
61
+ const DEFAULT_PROJECT_ICONS = [
62
+ 'fa-folder',
63
+ 'fa-folder-open',
64
+ 'fa-briefcase',
65
+ 'fa-project-diagram',
66
+ 'fa-chart-line',
67
+ 'fa-tasks',
68
+ 'fa-clipboard-list',
69
+ 'fa-bullseye',
70
+ 'fa-rocket',
71
+ 'fa-lightbulb',
72
+ 'fa-brain',
73
+ 'fa-cogs',
74
+ 'fa-code',
75
+ 'fa-database',
76
+ 'fa-server',
77
+ 'fa-cloud',
78
+ 'fa-mobile-alt',
79
+ 'fa-desktop',
80
+ 'fa-globe',
81
+ 'fa-users'
82
+ ];
83
+ export class ProjectFormModalComponent {
84
+ cdr;
85
+ dialogRef;
86
+ project = null;
87
+ environmentId;
88
+ currentUser;
89
+ projectSaved = new EventEmitter();
90
+ formData = {
91
+ name: '',
92
+ description: '',
93
+ color: '#0076B6',
94
+ icon: 'fa-folder'
95
+ };
96
+ showNameError = false;
97
+ isEditMode = false;
98
+ availableColors = DEFAULT_PROJECT_COLORS;
99
+ availableIcons = DEFAULT_PROJECT_ICONS;
100
+ constructor(cdr) {
101
+ this.cdr = cdr;
102
+ }
103
+ ngOnInit() {
104
+ this.isEditMode = this.project != null;
105
+ if (this.project) {
106
+ this.loadProjectData();
107
+ }
108
+ }
109
+ loadProjectData() {
110
+ if (!this.project)
111
+ return;
112
+ this.formData = {
113
+ name: this.project.Name || '',
114
+ description: this.project.Description || '',
115
+ color: this.project.Color || '#0076B6',
116
+ icon: this.project.Icon || 'fa-folder'
117
+ };
118
+ }
119
+ selectColor(color) {
120
+ this.formData.color = color;
121
+ this.cdr.detectChanges();
122
+ }
123
+ selectIcon(icon) {
124
+ this.formData.icon = icon;
125
+ this.cdr.detectChanges();
126
+ }
127
+ async onSave() {
128
+ // Validate
129
+ if (!this.formData.name.trim()) {
130
+ this.showNameError = true;
131
+ this.cdr.detectChanges();
132
+ return;
133
+ }
134
+ this.showNameError = false;
135
+ try {
136
+ const md = new Metadata();
137
+ const project = this.project || await md.GetEntityObject('MJ: Projects', this.currentUser);
138
+ project.Name = this.formData.name.trim();
139
+ project.Description = this.formData.description.trim() || null;
140
+ project.Color = this.formData.color;
141
+ project.Icon = this.formData.icon;
142
+ if (!this.isEditMode) {
143
+ project.EnvironmentID = this.environmentId;
144
+ project.IsArchived = false;
145
+ }
146
+ const saved = await project.Save();
147
+ if (saved) {
148
+ this.projectSaved.emit(project);
149
+ this.dialogRef.close();
150
+ }
151
+ else {
152
+ throw new Error('Failed to save project');
153
+ }
154
+ }
155
+ catch (error) {
156
+ console.error('Error saving project:', error);
157
+ alert('Failed to save project. Please try again.');
158
+ }
159
+ }
160
+ onCancel() {
161
+ this.dialogRef.close();
162
+ }
163
+ static ɵfac = function ProjectFormModalComponent_Factory(t) { return new (t || ProjectFormModalComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
164
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectFormModalComponent, selectors: [["mj-project-form-modal"]], inputs: { dialogRef: "dialogRef", project: "project", environmentId: "environmentId", currentUser: "currentUser" }, outputs: { projectSaved: "projectSaved" }, decls: 40, vars: 16, consts: [[3, "close", "title", "width", "minWidth"], [1, "project-form"], [1, "form-field"], ["for", "projectName", 1, "required"], ["id", "projectName", "kendoTextBox", "", "placeholder", "Enter project name", "autofocus", "", 1, "k-textbox", "full-width", 3, "ngModelChange", "keydown.enter", "ngModel"], [1, "error-message"], ["for", "projectDescription"], ["id", "projectDescription", "kendoTextArea", "", "placeholder", "Enter project description (optional)", "rows", "3", 1, "k-textarea", "full-width", 3, "ngModelChange", "ngModel"], [1, "color-picker-section"], [1, "color-palette"], ["type", "button", 1, "color-swatch", 3, "selected", "backgroundColor", "title"], [1, "custom-color-input"], ["for", "customColor"], ["id", "customColor", "type", "color", 1, "custom-color-picker", 3, "ngModelChange", "ngModel"], [1, "color-value"], [1, "icon-selector-section"], [1, "selected-icon-preview"], [1, "icon-grid"], ["type", "button", 1, "icon-option", 3, "selected", "title"], ["kendoButton", "", 3, "click"], ["kendoButton", "", 3, "click", "themeColor"], ["type", "button", 1, "color-swatch", 3, "click", "title"], ["type", "button", 1, "icon-option", 3, "click", "title"]], template: function ProjectFormModalComponent_Template(rf, ctx) { if (rf & 1) {
165
+ i0.ɵɵelementStart(0, "kendo-dialog", 0);
166
+ i0.ɵɵlistener("close", function ProjectFormModalComponent_Template_kendo_dialog_close_0_listener() { return ctx.onCancel(); });
167
+ i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "label", 3);
168
+ i0.ɵɵtext(4, " Project Name ");
169
+ i0.ɵɵelementEnd();
170
+ i0.ɵɵelementStart(5, "input", 4);
171
+ i0.ɵɵtwoWayListener("ngModelChange", function ProjectFormModalComponent_Template_input_ngModelChange_5_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.formData.name, $event) || (ctx.formData.name = $event); return $event; });
172
+ i0.ɵɵlistener("keydown.enter", function ProjectFormModalComponent_Template_input_keydown_enter_5_listener() { return ctx.onSave(); });
173
+ i0.ɵɵelementEnd();
174
+ i0.ɵɵtemplate(6, ProjectFormModalComponent_Conditional_6_Template, 2, 0, "div", 5);
175
+ i0.ɵɵelementEnd();
176
+ i0.ɵɵelementStart(7, "div", 2)(8, "label", 6);
177
+ i0.ɵɵtext(9, " Description ");
178
+ i0.ɵɵelementEnd();
179
+ i0.ɵɵelementStart(10, "textarea", 7);
180
+ i0.ɵɵtwoWayListener("ngModelChange", function ProjectFormModalComponent_Template_textarea_ngModelChange_10_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.formData.description, $event) || (ctx.formData.description = $event); return $event; });
181
+ i0.ɵɵelementEnd()();
182
+ i0.ɵɵelementStart(11, "div", 2)(12, "label");
183
+ i0.ɵɵtext(13, "Color");
184
+ i0.ɵɵelementEnd();
185
+ i0.ɵɵelementStart(14, "div", 8)(15, "div", 9);
186
+ i0.ɵɵrepeaterCreate(16, ProjectFormModalComponent_For_17_Template, 1, 5, "button", 10, i0.ɵɵrepeaterTrackByIdentity);
187
+ i0.ɵɵelementEnd();
188
+ i0.ɵɵelementStart(18, "div", 11)(19, "label", 12);
189
+ i0.ɵɵtext(20, "Custom:");
190
+ i0.ɵɵelementEnd();
191
+ i0.ɵɵelementStart(21, "input", 13);
192
+ i0.ɵɵtwoWayListener("ngModelChange", function ProjectFormModalComponent_Template_input_ngModelChange_21_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.formData.color, $event) || (ctx.formData.color = $event); return $event; });
193
+ i0.ɵɵelementEnd();
194
+ i0.ɵɵelementStart(22, "span", 14);
195
+ i0.ɵɵtext(23);
196
+ i0.ɵɵelementEnd()()()();
197
+ i0.ɵɵelementStart(24, "div", 2)(25, "label");
198
+ i0.ɵɵtext(26, "Icon");
199
+ i0.ɵɵelementEnd();
200
+ i0.ɵɵelementStart(27, "div", 15)(28, "div", 16);
201
+ i0.ɵɵelement(29, "i");
202
+ i0.ɵɵelementStart(30, "span");
203
+ i0.ɵɵtext(31);
204
+ i0.ɵɵelementEnd()();
205
+ i0.ɵɵelementStart(32, "div", 17);
206
+ i0.ɵɵrepeaterCreate(33, ProjectFormModalComponent_For_34_Template, 2, 6, "button", 18, i0.ɵɵrepeaterTrackByIdentity);
207
+ i0.ɵɵelementEnd()()()();
208
+ i0.ɵɵelementStart(35, "kendo-dialog-actions")(36, "button", 19);
209
+ i0.ɵɵlistener("click", function ProjectFormModalComponent_Template_button_click_36_listener() { return ctx.onCancel(); });
210
+ i0.ɵɵtext(37, "Cancel");
211
+ i0.ɵɵelementEnd();
212
+ i0.ɵɵelementStart(38, "button", 20);
213
+ i0.ɵɵlistener("click", function ProjectFormModalComponent_Template_button_click_38_listener() { return ctx.onSave(); });
214
+ i0.ɵɵtext(39);
215
+ i0.ɵɵelementEnd()()();
216
+ } if (rf & 2) {
217
+ i0.ɵɵproperty("title", ctx.isEditMode ? "Edit Project" : "New Project")("width", 600)("minWidth", 400);
218
+ i0.ɵɵadvance(5);
219
+ i0.ɵɵtwoWayProperty("ngModel", ctx.formData.name);
220
+ i0.ɵɵadvance();
221
+ i0.ɵɵconditional(ctx.showNameError ? 6 : -1);
222
+ i0.ɵɵadvance(4);
223
+ i0.ɵɵtwoWayProperty("ngModel", ctx.formData.description);
224
+ i0.ɵɵadvance(6);
225
+ i0.ɵɵrepeater(ctx.availableColors);
226
+ i0.ɵɵadvance(5);
227
+ i0.ɵɵtwoWayProperty("ngModel", ctx.formData.color);
228
+ i0.ɵɵadvance(2);
229
+ i0.ɵɵtextInterpolate(ctx.formData.color);
230
+ i0.ɵɵadvance(6);
231
+ i0.ɵɵclassMapInterpolate1("fa-solid ", ctx.formData.icon, "");
232
+ i0.ɵɵstyleProp("color", ctx.formData.color);
233
+ i0.ɵɵadvance(2);
234
+ i0.ɵɵtextInterpolate(ctx.formData.icon);
235
+ i0.ɵɵadvance(2);
236
+ i0.ɵɵrepeater(ctx.availableIcons);
237
+ i0.ɵɵadvance(5);
238
+ i0.ɵɵproperty("themeColor", "primary");
239
+ i0.ɵɵadvance();
240
+ i0.ɵɵtextInterpolate1(" ", ctx.isEditMode ? "Save" : "Create", " ");
241
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.DialogComponent, i2.DialogActionsComponent, i3.ButtonComponent, i4.TextAreaDirective, i4.TextBoxDirective], styles: [".project-form[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .form-field[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .form-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n font-size: 14px;\n color: #333;\n }\n\n .form-field[_ngcontent-%COMP%] label.required[_ngcontent-%COMP%]::after {\n content: '*';\n color: #F44336;\n margin-left: 4px;\n }\n\n .full-width[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .error-message[_ngcontent-%COMP%] {\n color: #F44336;\n font-size: 12px;\n margin-top: 4px;\n }\n\n \n\n .color-picker-section[_ngcontent-%COMP%] {\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n padding: 12px;\n background: #F9F9F9;\n }\n\n .color-palette[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n gap: 8px;\n margin-bottom: 12px;\n }\n\n .color-swatch[_ngcontent-%COMP%] {\n width: 100%;\n aspect-ratio: 1;\n border: 2px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n transition: all 150ms ease;\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n }\n\n .color-swatch[_ngcontent-%COMP%]:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 6px rgba(0,0,0,0.2);\n }\n\n .color-swatch.selected[_ngcontent-%COMP%] {\n border-color: #0076B6;\n box-shadow: 0 0 0 2px #fff, 0 0 0 4px #0076B6;\n }\n\n .custom-color-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding-top: 12px;\n border-top: 1px solid #D9D9D9;\n }\n\n .custom-color-input[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n }\n\n .custom-color-picker[_ngcontent-%COMP%] {\n width: 50px;\n height: 32px;\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n cursor: pointer;\n }\n\n .color-value[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 13px;\n color: #666;\n }\n\n \n\n .icon-selector-section[_ngcontent-%COMP%] {\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n padding: 12px;\n background: #F9F9F9;\n }\n\n .selected-icon-preview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: white;\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n margin-bottom: 12px;\n }\n\n .selected-icon-preview[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n }\n\n .selected-icon-preview[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 13px;\n color: #666;\n }\n\n .icon-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n padding: 4px;\n }\n\n .icon-option[_ngcontent-%COMP%] {\n aspect-ratio: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid #D9D9D9;\n background: white;\n border-radius: 4px;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .icon-option[_ngcontent-%COMP%]:hover {\n background: #F0F0F0;\n border-color: #0076B6;\n transform: scale(1.05);\n }\n\n .icon-option.selected[_ngcontent-%COMP%] {\n background: #E3F2FD;\n border-color: #0076B6;\n border-width: 2px;\n }\n\n .icon-option[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #333;\n }\n\n \n\n .icon-grid[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n }\n\n .icon-grid[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: #F0F0F0;\n border-radius: 4px;\n }\n\n .icon-grid[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #D9D9D9;\n border-radius: 4px;\n }\n\n .icon-grid[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #BFBFBF;\n }"] });
242
+ }
243
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectFormModalComponent, [{
244
+ type: Component,
245
+ args: [{ selector: 'mj-project-form-modal', template: `
246
+ <kendo-dialog
247
+ [title]="isEditMode ? 'Edit Project' : 'New Project'"
248
+ [width]="600"
249
+ [minWidth]="400"
250
+ (close)="onCancel()">
251
+
252
+ <div class="project-form">
253
+ <!-- Name Input -->
254
+ <div class="form-field">
255
+ <label for="projectName" class="required">
256
+ Project Name
257
+ </label>
258
+ <input
259
+ id="projectName"
260
+ kendoTextBox
261
+ [(ngModel)]="formData.name"
262
+ placeholder="Enter project name"
263
+ class="k-textbox full-width"
264
+ (keydown.enter)="onSave()"
265
+ autofocus />
266
+ @if (showNameError) {
267
+ <div class="error-message">Project name is required</div>
268
+ }
269
+ </div>
270
+
271
+ <!-- Description Textarea -->
272
+ <div class="form-field">
273
+ <label for="projectDescription">
274
+ Description
275
+ </label>
276
+ <textarea
277
+ id="projectDescription"
278
+ kendoTextArea
279
+ [(ngModel)]="formData.description"
280
+ placeholder="Enter project description (optional)"
281
+ class="k-textarea full-width"
282
+ rows="3"></textarea>
283
+ </div>
284
+
285
+ <!-- Color Picker -->
286
+ <div class="form-field">
287
+ <label>Color</label>
288
+ <div class="color-picker-section">
289
+ <div class="color-palette">
290
+ @for (color of availableColors; track color) {
291
+ <button
292
+ type="button"
293
+ class="color-swatch"
294
+ [class.selected]="formData.color === color"
295
+ [style.backgroundColor]="color"
296
+ (click)="selectColor(color)"
297
+ [title]="color">
298
+ </button>
299
+ }
300
+ </div>
301
+ <div class="custom-color-input">
302
+ <label for="customColor">Custom:</label>
303
+ <input
304
+ id="customColor"
305
+ type="color"
306
+ [(ngModel)]="formData.color"
307
+ class="custom-color-picker" />
308
+ <span class="color-value">{{ formData.color }}</span>
309
+ </div>
310
+ </div>
311
+ </div>
312
+
313
+ <!-- Icon Selector -->
314
+ <div class="form-field">
315
+ <label>Icon</label>
316
+ <div class="icon-selector-section">
317
+ <div class="selected-icon-preview">
318
+ <i class="fa-solid {{ formData.icon }}" [style.color]="formData.color"></i>
319
+ <span>{{ formData.icon }}</span>
320
+ </div>
321
+ <div class="icon-grid">
322
+ @for (icon of availableIcons; track icon) {
323
+ <button
324
+ type="button"
325
+ class="icon-option"
326
+ [class.selected]="formData.icon === icon"
327
+ (click)="selectIcon(icon)"
328
+ [title]="icon">
329
+ <i class="fa-solid {{ icon }}"></i>
330
+ </button>
331
+ }
332
+ </div>
333
+ </div>
334
+ </div>
335
+ </div>
336
+
337
+ <kendo-dialog-actions>
338
+ <button kendoButton (click)="onCancel()">Cancel</button>
339
+ <button kendoButton [themeColor]="'primary'" (click)="onSave()">
340
+ {{ isEditMode ? 'Save' : 'Create' }}
341
+ </button>
342
+ </kendo-dialog-actions>
343
+ </kendo-dialog>
344
+ `, styles: ["\n .project-form {\n padding: 16px;\n }\n\n .form-field {\n margin-bottom: 20px;\n }\n\n .form-field label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n font-size: 14px;\n color: #333;\n }\n\n .form-field label.required::after {\n content: '*';\n color: #F44336;\n margin-left: 4px;\n }\n\n .full-width {\n width: 100%;\n }\n\n .error-message {\n color: #F44336;\n font-size: 12px;\n margin-top: 4px;\n }\n\n /* Color Picker Styles */\n .color-picker-section {\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n padding: 12px;\n background: #F9F9F9;\n }\n\n .color-palette {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n gap: 8px;\n margin-bottom: 12px;\n }\n\n .color-swatch {\n width: 100%;\n aspect-ratio: 1;\n border: 2px solid transparent;\n border-radius: 4px;\n cursor: pointer;\n transition: all 150ms ease;\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n }\n\n .color-swatch:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 6px rgba(0,0,0,0.2);\n }\n\n .color-swatch.selected {\n border-color: #0076B6;\n box-shadow: 0 0 0 2px #fff, 0 0 0 4px #0076B6;\n }\n\n .custom-color-input {\n display: flex;\n align-items: center;\n gap: 8px;\n padding-top: 12px;\n border-top: 1px solid #D9D9D9;\n }\n\n .custom-color-input label {\n margin: 0;\n font-size: 13px;\n }\n\n .custom-color-picker {\n width: 50px;\n height: 32px;\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n cursor: pointer;\n }\n\n .color-value {\n font-family: monospace;\n font-size: 13px;\n color: #666;\n }\n\n /* Icon Selector Styles */\n .icon-selector-section {\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n padding: 12px;\n background: #F9F9F9;\n }\n\n .selected-icon-preview {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: white;\n border: 1px solid #D9D9D9;\n border-radius: 4px;\n margin-bottom: 12px;\n }\n\n .selected-icon-preview i {\n font-size: 24px;\n }\n\n .selected-icon-preview span {\n font-family: monospace;\n font-size: 13px;\n color: #666;\n }\n\n .icon-grid {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n gap: 6px;\n max-height: 200px;\n overflow-y: auto;\n padding: 4px;\n }\n\n .icon-option {\n aspect-ratio: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid #D9D9D9;\n background: white;\n border-radius: 4px;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .icon-option:hover {\n background: #F0F0F0;\n border-color: #0076B6;\n transform: scale(1.05);\n }\n\n .icon-option.selected {\n background: #E3F2FD;\n border-color: #0076B6;\n border-width: 2px;\n }\n\n .icon-option i {\n font-size: 18px;\n color: #333;\n }\n\n /* Scrollbar Styles */\n .icon-grid::-webkit-scrollbar {\n width: 8px;\n }\n\n .icon-grid::-webkit-scrollbar-track {\n background: #F0F0F0;\n border-radius: 4px;\n }\n\n .icon-grid::-webkit-scrollbar-thumb {\n background: #D9D9D9;\n border-radius: 4px;\n }\n\n .icon-grid::-webkit-scrollbar-thumb:hover {\n background: #BFBFBF;\n }\n "] }]
345
+ }], () => [{ type: i0.ChangeDetectorRef }], { dialogRef: [{
346
+ type: Input
347
+ }], project: [{
348
+ type: Input
349
+ }], environmentId: [{
350
+ type: Input
351
+ }], currentUser: [{
352
+ type: Input
353
+ }], projectSaved: [{
354
+ type: Output
355
+ }] }); })();
356
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProjectFormModalComponent, { className: "ProjectFormModalComponent", filePath: "src/lib/components/project/project-form-modal.component.ts", lineNumber: 343 }); })();
357
+ //# sourceMappingURL=project-form-modal.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/project/project-form-modal.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { EventEmitter, OnInit, ViewContainerRef } from '@angular/core';
2
+ import { ProjectEntity } from '@memberjunction/core-entities';
3
+ import { UserInfo } from '@memberjunction/core';
4
+ import { DialogService as KendoDialogService } from '@progress/kendo-angular-dialog';
5
+ import { DialogService } from '../../services/dialog.service';
6
+ import * as i0 from "@angular/core";
7
+ export interface ProjectWithStats extends ProjectEntity {
8
+ conversationCount?: number;
9
+ }
10
+ export declare class ProjectSelectorComponent implements OnInit {
11
+ private dialogService;
12
+ private kendoDialogService;
13
+ private viewContainerRef;
14
+ environmentId: string;
15
+ currentUser: UserInfo;
16
+ selectedProjectId: string | null;
17
+ disabled: boolean;
18
+ showStats: boolean;
19
+ projectSelected: EventEmitter<ProjectEntity | null>;
20
+ projectCreated: EventEmitter<ProjectEntity>;
21
+ projectUpdated: EventEmitter<ProjectEntity>;
22
+ projectDeleted: EventEmitter<string>;
23
+ projectsWithStats: ProjectWithStats[];
24
+ selectedProject: ProjectEntity | null;
25
+ constructor(dialogService: DialogService, kendoDialogService: KendoDialogService, viewContainerRef: ViewContainerRef);
26
+ ngOnInit(): void;
27
+ private loadProjects;
28
+ private calculateConversationCounts;
29
+ onProjectChange(project: ProjectEntity | null): void;
30
+ onCreateProject(): void;
31
+ onEditProject(): void;
32
+ onDeleteProject(): Promise<void>;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProjectSelectorComponent, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProjectSelectorComponent, "mj-project-selector", never, { "environmentId": { "alias": "environmentId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "selectedProjectId": { "alias": "selectedProjectId"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showStats": { "alias": "showStats"; "required": false; }; }, { "projectSelected": "projectSelected"; "projectCreated": "projectCreated"; "projectUpdated": "projectUpdated"; "projectDeleted": "projectDeleted"; }, never, never, false, never>;
35
+ }
36
+ //# sourceMappingURL=project-selector.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-selector.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/project/project-selector.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,aAAa,EAAsB,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;;AAG9D,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBA2Ga,wBAAyB,YAAW,MAAM;IAgBnD,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gBAAgB;IAjBjB,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,QAAQ,EAAE,OAAO,CAAS;IAC1B,SAAS,EAAE,OAAO,CAAQ;IAEzB,eAAe,qCAA4C;IAC3D,cAAc,8BAAqC;IACnD,cAAc,8BAAqC;IACnD,cAAc,uBAA8B;IAE/C,iBAAiB,EAAE,gBAAgB,EAAE,CAAM;IAC3C,eAAe,EAAE,aAAa,GAAG,IAAI,CAAQ;gBAG1C,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB;IAG5C,QAAQ;YAIM,YAAY;IA0C1B,OAAO,CAAC,2BAA2B;IAYnC,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAKpD,eAAe,IAAI,IAAI;IAoBvB,aAAa,IAAI,IAAI;IAuBf,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;yCA/H3B,wBAAwB;2CAAxB,wBAAwB;CAwKpC"}