@aakash58/chatbot 1.1.19 → 1.1.21

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 (351) hide show
  1. package/.editorconfig +17 -0
  2. package/.vscode/extensions.json +4 -0
  3. package/.vscode/launch.json +41 -0
  4. package/.vscode/settings.json +14 -0
  5. package/.vscode/tasks.json +60 -0
  6. package/README.md +298 -22
  7. package/angular.json +132 -0
  8. package/docs/PUBLISHING_GUIDE.md +104 -0
  9. package/package.json +75 -29
  10. package/projects/app-doohbot/public/assets/const/app-const.json +15 -0
  11. package/projects/app-doohbot/public/assets/const/doohclick_license.json +6 -0
  12. package/projects/app-doohbot/public/favicon.ico +0 -0
  13. package/projects/app-doohbot/src/app/app.config.ts +13 -0
  14. package/projects/app-doohbot/src/app/app.html +31 -0
  15. package/projects/app-doohbot/src/app/app.routes.ts +3 -0
  16. package/projects/app-doohbot/src/app/app.scss +279 -0
  17. package/projects/app-doohbot/src/app/app.spec.ts +23 -0
  18. package/projects/app-doohbot/src/app/app.ts +72 -0
  19. package/projects/app-doohbot/src/index.html +15 -0
  20. package/projects/app-doohbot/src/main.ts +6 -0
  21. package/projects/app-doohbot/src/styles.scss +15 -0
  22. package/projects/app-doohbot/tsconfig.app.json +15 -0
  23. package/projects/app-doohbot/tsconfig.spec.json +14 -0
  24. package/projects/doohbot/README.md +64 -0
  25. package/projects/doohbot/docs/README.md +140 -0
  26. package/projects/doohbot/ng-package.json +10 -0
  27. package/projects/doohbot/package.json +16 -0
  28. package/projects/doohbot/src/lib/app/chat/chat-ui-state.service.ts +194 -0
  29. package/projects/doohbot/src/lib/app/chat/chat.service.ts +547 -0
  30. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.html +27 -0
  31. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.scss +115 -0
  32. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.ts +35 -0
  33. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.html +3 -0
  34. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.scss +20 -0
  35. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.ts +12 -0
  36. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.html +34 -0
  37. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.scss +78 -0
  38. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.ts +52 -0
  39. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.html +77 -0
  40. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.scss +346 -0
  41. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.ts +188 -0
  42. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.html +146 -0
  43. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.scss +187 -0
  44. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.ts +256 -0
  45. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.html +17 -0
  46. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.scss +59 -0
  47. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.ts +28 -0
  48. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.html +138 -0
  49. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.scss +436 -0
  50. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.ts +106 -0
  51. package/projects/doohbot/src/lib/app/chat/model/chat-history.model.ts +57 -0
  52. package/projects/doohbot/src/lib/app/chat/model/chat-request.model.ts +17 -0
  53. package/projects/doohbot/src/lib/app/chat/model/chat-response.model.ts +9 -0
  54. package/projects/doohbot/src/lib/app/chat/model/chat-session.model.ts +14 -0
  55. package/{lib/app/chat/model/chat-stream-message.model.d.ts → projects/doohbot/src/lib/app/chat/model/chat-stream-message.model.ts} +6 -5
  56. package/projects/doohbot/src/lib/app/chat/model/chat-stream-response.model.ts +12 -0
  57. package/projects/doohbot/src/lib/app/chat/services/chat-api.service.ts +82 -0
  58. package/projects/doohbot/src/lib/app/chat/services/chat-audio.service.ts +44 -0
  59. package/projects/doohbot/src/lib/app/chat/services/chat-history.service.ts +303 -0
  60. package/projects/doohbot/src/lib/app/login/login-form.component.html +80 -0
  61. package/projects/doohbot/src/lib/app/login/login-form.component.scss +189 -0
  62. package/projects/doohbot/src/lib/app/login/login-form.component.ts +45 -0
  63. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.html +81 -0
  64. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.scss +179 -0
  65. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.ts +217 -0
  66. package/projects/doohbot/src/lib/app/personalization/personalization.service.ts +197 -0
  67. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.html +111 -0
  68. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.scss +218 -0
  69. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.ts +121 -0
  70. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.html +46 -0
  71. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.scss +138 -0
  72. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.ts +28 -0
  73. package/projects/doohbot/src/lib/app/personalization/sections/preferences/color-picker-dialog.component.ts +92 -0
  74. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.html +198 -0
  75. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.scss +107 -0
  76. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.ts +103 -0
  77. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.html +46 -0
  78. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.scss +131 -0
  79. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.ts +23 -0
  80. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.html +33 -0
  81. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.scss +61 -0
  82. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.ts +20 -0
  83. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.html +30 -0
  84. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.scss +59 -0
  85. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.ts +12 -0
  86. package/projects/doohbot/src/lib/constant/doohbot-constant.ts +40 -0
  87. package/projects/doohbot/src/lib/constant/html-entities.ts +8 -0
  88. package/projects/doohbot/src/lib/constant/utf8.ts +9 -0
  89. package/projects/doohbot/src/lib/core/app-const.ts +63 -0
  90. package/projects/doohbot/src/lib/core/auth/account-api.service.ts +53 -0
  91. package/projects/doohbot/src/lib/core/auth/auth.service.ts +478 -0
  92. package/projects/doohbot/src/lib/core/auth/models/auth-result.model.ts +4 -0
  93. package/projects/doohbot/src/lib/core/auth/models/federated-login-request.model.ts +5 -0
  94. package/projects/doohbot/src/lib/core/auth/models/login-request.model.ts +6 -0
  95. package/projects/doohbot/src/lib/core/auth/storage.service.ts +113 -0
  96. package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.directive.ts +123 -0
  97. package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.module.ts +9 -0
  98. package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.directive.ts +58 -0
  99. package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.module.ts +9 -0
  100. package/projects/doohbot/src/lib/core/directives/popout/popout.directive.ts +169 -0
  101. package/projects/doohbot/src/lib/core/directives/popout/popout.module.ts +9 -0
  102. package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.directive.ts +197 -0
  103. package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.module.ts +9 -0
  104. package/projects/doohbot/src/lib/core/enums/api-request-state.enum.ts +9 -0
  105. package/projects/doohbot/src/lib/core/environments/environment.prod.ts +14 -0
  106. package/projects/doohbot/src/lib/core/environments/environment.ts +14 -0
  107. package/projects/doohbot/src/lib/core/helpers/crypto-helper.service.ts +72 -0
  108. package/projects/doohbot/src/lib/core/http/http-stream.service.ts +105 -0
  109. package/projects/doohbot/src/lib/core/http/http.service.ts +148 -0
  110. package/projects/doohbot/src/lib/core/interceptors/auth.interceptor.ts +118 -0
  111. package/projects/doohbot/src/lib/core/interceptors/license.interceptor.ts +50 -0
  112. package/projects/doohbot/src/lib/core/models/api-config.model.ts +82 -0
  113. package/projects/doohbot/src/lib/core/models/api-request.model.ts +92 -0
  114. package/projects/doohbot/src/lib/core/models/api-response.model.ts +13 -0
  115. package/projects/doohbot/src/lib/core/models/doohbot-config.model.ts +109 -0
  116. package/{lib/core/models/license.model.d.ts → projects/doohbot/src/lib/core/models/license.model.ts} +27 -23
  117. package/projects/doohbot/src/lib/core/models/message.ts +18 -0
  118. package/projects/doohbot/src/lib/core/models/theme-config.model.ts +48 -0
  119. package/projects/doohbot/src/lib/core/services/core-config.service.ts +53 -0
  120. package/projects/doohbot/src/lib/core/services/doohbot-api.service.ts +207 -0
  121. package/projects/doohbot/src/lib/core/services/license.service.ts +171 -0
  122. package/projects/doohbot/src/lib/core/services/markdown.service.ts +73 -0
  123. package/projects/doohbot/src/lib/core/services/theme.service.ts +305 -0
  124. package/{lib/core/types/auth-mode.type.d.ts → projects/doohbot/src/lib/core/types/auth-mode.type.ts} +4 -4
  125. package/{lib/core/types/auth-status.type.d.ts → projects/doohbot/src/lib/core/types/auth-status.type.ts} +5 -4
  126. package/{lib/core/types/chat-stream.type.d.ts → projects/doohbot/src/lib/core/types/chat-stream.type.ts} +4 -4
  127. package/{lib/core/types/message-role.type.d.ts → projects/doohbot/src/lib/core/types/message-role.type.ts} +4 -4
  128. package/{lib/core/types/prompt-mode.type.d.ts → projects/doohbot/src/lib/core/types/prompt-mode.type.ts} +5 -4
  129. package/{lib/core/types/snackbar-error.type.d.ts → projects/doohbot/src/lib/core/types/snackbar-error.type.ts} +5 -4
  130. package/{lib/core/types/tenant-resolution-strategy.type.d.ts → projects/doohbot/src/lib/core/types/tenant-resolution-strategy.type.ts} +4 -4
  131. package/projects/doohbot/src/lib/core/utils/error-handler.util.ts +31 -0
  132. package/projects/doohbot/src/lib/core/utils/logger.service.ts +45 -0
  133. package/projects/doohbot/src/lib/doohbot-input.ts +19 -0
  134. package/projects/doohbot/src/lib/doohbot.component.html +34 -0
  135. package/projects/doohbot/src/lib/doohbot.component.scss +17 -0
  136. package/projects/doohbot/src/lib/doohbot.component.spec.ts +31 -0
  137. package/projects/doohbot/src/lib/doohbot.component.ts +545 -0
  138. package/projects/doohbot/src/lib/elements.ts +25 -0
  139. package/projects/doohbot/src/lib/predefined_messages.ts +14 -0
  140. package/projects/doohbot/src/lib/shared/chips/chips.component.html +9 -0
  141. package/projects/doohbot/src/lib/shared/chips/chips.component.scss +29 -0
  142. package/projects/doohbot/src/lib/shared/chips/chips.component.spec.ts +22 -0
  143. package/projects/doohbot/src/lib/shared/chips/chips.component.ts +20 -0
  144. package/projects/doohbot/src/lib/shared/dialog/dialog.component.html +29 -0
  145. package/projects/doohbot/src/lib/shared/dialog/dialog.component.scss +100 -0
  146. package/projects/doohbot/src/lib/shared/dialog/dialog.component.ts +42 -0
  147. package/projects/doohbot/src/lib/shared/dialog/dialog.service.ts +62 -0
  148. package/projects/doohbot/src/lib/shared/dialog/dialog.utils.ts +102 -0
  149. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.html +30 -0
  150. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.scss +53 -0
  151. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.spec.ts +22 -0
  152. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.ts +35 -0
  153. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.html +16 -0
  154. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.scss +45 -0
  155. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.ts +46 -0
  156. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.html +5 -0
  157. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.scss +0 -0
  158. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.spec.ts +22 -0
  159. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.ts +20 -0
  160. package/projects/doohbot/src/lib/shared/pipes/simple-markdown.pipe.ts +19 -0
  161. package/projects/doohbot/src/lib/shared/popout/popout.html +1 -0
  162. package/projects/doohbot/src/lib/shared/popout/popout.scss +0 -0
  163. package/projects/doohbot/src/lib/shared/popout/popout.spec.ts +23 -0
  164. package/projects/doohbot/src/lib/shared/popout/popout.ts +11 -0
  165. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.html +7 -0
  166. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.scss +125 -0
  167. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.spec.ts +21 -0
  168. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.ts +44 -0
  169. package/projects/doohbot/src/lib/shared/snackbar/snackbar.service.ts +54 -0
  170. package/{lib/shared/snackbar/snackbar.utils.d.ts → projects/doohbot/src/lib/shared/snackbar/snackbar.utils.ts} +49 -33
  171. package/projects/doohbot/src/lib/styles/_theme.scss +132 -0
  172. package/projects/doohbot/src/lib/styles/material-override.scss +302 -0
  173. package/projects/doohbot/src/lib/styles/utility.scss +588 -0
  174. package/projects/doohbot/src/public-api.ts +42 -0
  175. package/projects/doohbot/tsconfig.lib.json +15 -0
  176. package/projects/doohbot/tsconfig.lib.prod.json +11 -0
  177. package/projects/doohbot/tsconfig.spec.json +10 -0
  178. package/proxy.conf.json +8 -0
  179. package/publish.config.js +25 -0
  180. package/scripts/publishing/index.ts +67 -0
  181. package/scripts/publishing/pipeline/01-clean.ts +11 -0
  182. package/scripts/publishing/pipeline/02-validate-pre.ts +8 -0
  183. package/scripts/publishing/pipeline/03-build.ts +7 -0
  184. package/scripts/publishing/pipeline/04-validate-post.ts +8 -0
  185. package/scripts/publishing/pipeline/05-prepare-package.ts +29 -0
  186. package/scripts/publishing/pipeline/06-version.ts +23 -0
  187. package/scripts/publishing/pipeline/07-publish.ts +14 -0
  188. package/scripts/publishing/pipeline/08-cleanup.ts +5 -0
  189. package/scripts/publishing/types.ts +36 -0
  190. package/scripts/publishing/utils/command.ts +15 -0
  191. package/scripts/publishing/utils/config.ts +17 -0
  192. package/scripts/validate.ts +166 -0
  193. package/tsconfig.json +45 -0
  194. package/tsconfig.scripts.json +15 -0
  195. package/esm2022/aakash58-chatbot.mjs +0 -5
  196. package/esm2022/lib/app/chat/chat-ui-state.service.mjs +0 -170
  197. package/esm2022/lib/app/chat/chat.service.mjs +0 -445
  198. package/esm2022/lib/app/chat/components/chat-button/chat-button.component.mjs +0 -50
  199. package/esm2022/lib/app/chat/components/chat-footer/chat-footer.component.mjs +0 -12
  200. package/esm2022/lib/app/chat/components/chat-header/chat-header.component.mjs +0 -66
  201. package/esm2022/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.mjs +0 -186
  202. package/esm2022/lib/app/chat/components/chat-window/chat-window.component.mjs +0 -312
  203. package/esm2022/lib/app/chat/components/message-input/message-input.component.mjs +0 -36
  204. package/esm2022/lib/app/chat/components/message-list/message-list.component.mjs +0 -115
  205. package/esm2022/lib/app/chat/model/chat-history.model.mjs +0 -2
  206. package/esm2022/lib/app/chat/model/chat-request.model.mjs +0 -2
  207. package/esm2022/lib/app/chat/model/chat-response.model.mjs +0 -2
  208. package/esm2022/lib/app/chat/model/chat-session.model.mjs +0 -2
  209. package/esm2022/lib/app/chat/model/chat-stream-message.model.mjs +0 -2
  210. package/esm2022/lib/app/chat/model/chat-stream-response.model.mjs +0 -2
  211. package/esm2022/lib/app/chat/services/chat-api.service.mjs +0 -61
  212. package/esm2022/lib/app/chat/services/chat-audio.service.mjs +0 -50
  213. package/esm2022/lib/app/chat/services/chat-history.service.mjs +0 -252
  214. package/esm2022/lib/app/login/login-form.component.mjs +0 -46
  215. package/esm2022/lib/app/personalization/personalization-dialog.component.mjs +0 -194
  216. package/esm2022/lib/app/personalization/personalization.service.mjs +0 -149
  217. package/esm2022/lib/app/personalization/sections/account/account-section.component.mjs +0 -122
  218. package/esm2022/lib/app/personalization/sections/preferences/color-picker-dialog.component.mjs +0 -86
  219. package/esm2022/lib/app/personalization/sections/preferences/preferences-section.component.mjs +0 -115
  220. package/esm2022/lib/app/personalization/sections/profile/profile-section.component.mjs +0 -29
  221. package/esm2022/lib/app/personalization/sections/settings/setting-section.component.mjs +0 -30
  222. package/esm2022/lib/app/personalization/sections/terms/terms-section.component.mjs +0 -12
  223. package/esm2022/lib/constant/doohbot-constant.mjs +0 -28
  224. package/esm2022/lib/constant/html-entities.mjs +0 -9
  225. package/esm2022/lib/constant/utf8.mjs +0 -10
  226. package/esm2022/lib/core/app-const.mjs +0 -61
  227. package/esm2022/lib/core/auth/account-api.service.mjs +0 -40
  228. package/esm2022/lib/core/auth/auth.service.mjs +0 -391
  229. package/esm2022/lib/core/auth/models/auth-result.model.mjs +0 -3
  230. package/esm2022/lib/core/auth/models/federated-login-request.model.mjs +0 -6
  231. package/esm2022/lib/core/auth/models/login-request.model.mjs +0 -6
  232. package/esm2022/lib/core/auth/storage.service.mjs +0 -110
  233. package/esm2022/lib/core/directives/draggable/draggable-dialog.directive.mjs +0 -112
  234. package/esm2022/lib/core/directives/fullscreen/fullscreen.directive.mjs +0 -55
  235. package/esm2022/lib/core/directives/resizable/resizable-dialog.directive.mjs +0 -179
  236. package/esm2022/lib/core/environments/environment.mjs +0 -15
  237. package/esm2022/lib/core/environments/environment.prod.mjs +0 -15
  238. package/esm2022/lib/core/helpers/crypto-helper.service.mjs +0 -52
  239. package/esm2022/lib/core/http/http-stream.service.mjs +0 -97
  240. package/esm2022/lib/core/http/http.service.mjs +0 -103
  241. package/esm2022/lib/core/interceptors/auth.interceptor.mjs +0 -96
  242. package/esm2022/lib/core/interceptors/license.interceptor.mjs +0 -44
  243. package/esm2022/lib/core/models/api-config.model.mjs +0 -18
  244. package/esm2022/lib/core/models/api-request.model.mjs +0 -2
  245. package/esm2022/lib/core/models/api-response.model.mjs +0 -8
  246. package/esm2022/lib/core/models/doohbot-config.model.mjs +0 -18
  247. package/esm2022/lib/core/models/license.model.mjs +0 -2
  248. package/esm2022/lib/core/models/message.mjs +0 -2
  249. package/esm2022/lib/core/models/theme-config.model.mjs +0 -2
  250. package/esm2022/lib/core/services/core-config.service.mjs +0 -52
  251. package/esm2022/lib/core/services/license.service.mjs +0 -145
  252. package/esm2022/lib/core/services/markdown.service.mjs +0 -64
  253. package/esm2022/lib/core/services/theme.service.mjs +0 -248
  254. package/esm2022/lib/core/types/auth-mode.type.mjs +0 -2
  255. package/esm2022/lib/core/types/auth-status.type.mjs +0 -5
  256. package/esm2022/lib/core/types/chat-stream.type.mjs +0 -2
  257. package/esm2022/lib/core/types/message-role.type.mjs +0 -2
  258. package/esm2022/lib/core/types/prompt-mode.type.mjs +0 -5
  259. package/esm2022/lib/core/types/snackbar-error.type.mjs +0 -5
  260. package/esm2022/lib/core/types/tenant-resolution-strategy.type.mjs +0 -2
  261. package/esm2022/lib/core/utils/logger.service.mjs +0 -42
  262. package/esm2022/lib/doohbot-input.mjs +0 -20
  263. package/esm2022/lib/doohbot.component.mjs +0 -444
  264. package/esm2022/lib/predefined_messages.mjs +0 -15
  265. package/esm2022/lib/shared/chips/chips.component.mjs +0 -28
  266. package/esm2022/lib/shared/dialog/dialog.component.mjs +0 -36
  267. package/esm2022/lib/shared/dialog/dialog.service.mjs +0 -64
  268. package/esm2022/lib/shared/dialog/dialog.utils.mjs +0 -85
  269. package/esm2022/lib/shared/dropdown-menu/dropdown-menu.component.mjs +0 -29
  270. package/esm2022/lib/shared/input-dialog/input-dialog.component.mjs +0 -38
  271. package/esm2022/lib/shared/menu-item/menu-item.component.mjs +0 -24
  272. package/esm2022/lib/shared/pipes/simple-markdown.pipe.mjs +0 -27
  273. package/esm2022/lib/shared/snackbar/snackbar.component.mjs +0 -43
  274. package/esm2022/lib/shared/snackbar/snackbar.service.mjs +0 -46
  275. package/esm2022/lib/shared/snackbar/snackbar.utils.mjs +0 -43
  276. package/esm2022/public-api.mjs +0 -37
  277. package/fesm2022/aakash58-chatbot.mjs +0 -5193
  278. package/fesm2022/aakash58-chatbot.mjs.map +0 -1
  279. package/index.d.ts +0 -5
  280. package/lib/app/chat/chat-ui-state.service.d.ts +0 -96
  281. package/lib/app/chat/chat.service.d.ts +0 -88
  282. package/lib/app/chat/components/chat-button/chat-button.component.d.ts +0 -16
  283. package/lib/app/chat/components/chat-footer/chat-footer.component.d.ts +0 -5
  284. package/lib/app/chat/components/chat-header/chat-header.component.d.ts +0 -24
  285. package/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.d.ts +0 -49
  286. package/lib/app/chat/components/chat-window/chat-window.component.d.ts +0 -107
  287. package/lib/app/chat/components/message-input/message-input.component.d.ts +0 -12
  288. package/lib/app/chat/components/message-list/message-list.component.d.ts +0 -40
  289. package/lib/app/chat/model/chat-history.model.d.ts +0 -51
  290. package/lib/app/chat/model/chat-request.model.d.ts +0 -10
  291. package/lib/app/chat/model/chat-response.model.d.ts +0 -9
  292. package/lib/app/chat/model/chat-session.model.d.ts +0 -12
  293. package/lib/app/chat/model/chat-stream-response.model.d.ts +0 -10
  294. package/lib/app/chat/services/chat-api.service.d.ts +0 -30
  295. package/lib/app/chat/services/chat-audio.service.d.ts +0 -19
  296. package/lib/app/chat/services/chat-history.service.d.ts +0 -53
  297. package/lib/app/login/login-form.component.d.ts +0 -20
  298. package/lib/app/personalization/personalization-dialog.component.d.ts +0 -53
  299. package/lib/app/personalization/personalization.service.d.ts +0 -66
  300. package/lib/app/personalization/sections/account/account-section.component.d.ts +0 -30
  301. package/lib/app/personalization/sections/preferences/color-picker-dialog.component.d.ts +0 -17
  302. package/lib/app/personalization/sections/preferences/preferences-section.component.d.ts +0 -27
  303. package/lib/app/personalization/sections/profile/profile-section.component.d.ts +0 -17
  304. package/lib/app/personalization/sections/settings/setting-section.component.d.ts +0 -10
  305. package/lib/app/personalization/sections/terms/terms-section.component.d.ts +0 -5
  306. package/lib/constant/doohbot-constant.d.ts +0 -12
  307. package/lib/constant/html-entities.d.ts +0 -8
  308. package/lib/constant/utf8.d.ts +0 -9
  309. package/lib/core/app-const.d.ts +0 -11
  310. package/lib/core/auth/account-api.service.d.ts +0 -20
  311. package/lib/core/auth/auth.service.d.ts +0 -90
  312. package/lib/core/auth/models/auth-result.model.d.ts +0 -4
  313. package/lib/core/auth/models/federated-login-request.model.d.ts +0 -5
  314. package/lib/core/auth/models/login-request.model.d.ts +0 -6
  315. package/lib/core/auth/storage.service.d.ts +0 -21
  316. package/lib/core/directives/draggable/draggable-dialog.directive.d.ts +0 -23
  317. package/lib/core/directives/fullscreen/fullscreen.directive.d.ts +0 -14
  318. package/lib/core/directives/resizable/resizable-dialog.directive.d.ts +0 -30
  319. package/lib/core/environments/environment.d.ts +0 -7
  320. package/lib/core/environments/environment.prod.d.ts +0 -7
  321. package/lib/core/helpers/crypto-helper.service.d.ts +0 -12
  322. package/lib/core/http/http-stream.service.d.ts +0 -18
  323. package/lib/core/http/http.service.d.ts +0 -20
  324. package/lib/core/interceptors/auth.interceptor.d.ts +0 -18
  325. package/lib/core/interceptors/license.interceptor.d.ts +0 -11
  326. package/lib/core/models/api-config.model.d.ts +0 -58
  327. package/lib/core/models/api-request.model.d.ts +0 -77
  328. package/lib/core/models/api-response.model.d.ts +0 -6
  329. package/lib/core/models/doohbot-config.model.d.ts +0 -81
  330. package/lib/core/models/message.d.ts +0 -16
  331. package/lib/core/models/theme-config.model.d.ts +0 -28
  332. package/lib/core/services/core-config.service.d.ts +0 -23
  333. package/lib/core/services/license.service.d.ts +0 -33
  334. package/lib/core/services/markdown.service.d.ts +0 -8
  335. package/lib/core/services/theme.service.d.ts +0 -40
  336. package/lib/core/utils/logger.service.d.ts +0 -11
  337. package/lib/doohbot-input.d.ts +0 -19
  338. package/lib/doohbot.component.d.ts +0 -108
  339. package/lib/predefined_messages.d.ts +0 -2
  340. package/lib/shared/chips/chips.component.d.ts +0 -10
  341. package/lib/shared/dialog/dialog.component.d.ts +0 -19
  342. package/lib/shared/dialog/dialog.service.d.ts +0 -29
  343. package/lib/shared/dialog/dialog.utils.d.ts +0 -41
  344. package/lib/shared/dropdown-menu/dropdown-menu.component.d.ts +0 -11
  345. package/lib/shared/input-dialog/input-dialog.component.d.ts +0 -20
  346. package/lib/shared/menu-item/menu-item.component.d.ts +0 -9
  347. package/lib/shared/pipes/simple-markdown.pipe.d.ts +0 -10
  348. package/lib/shared/snackbar/snackbar.component.d.ts +0 -14
  349. package/lib/shared/snackbar/snackbar.service.d.ts +0 -19
  350. package/public-api.d.ts +0 -11
  351. /package/{src → projects/doohbot/src}/assets/bot.mp3 +0 -0
@@ -1,15 +0,0 @@
1
- export const PredefinedMessages = [
2
- 'How do I create a new DOOH proposal in Doohclick?',
3
- 'Can the buyer see internal notes I add in Doohclick?',
4
- // 'What happens after a buyer approves a proposal?',
5
- // 'Why would an SR hide the pipeline value in a proposal?',
6
- // 'Are additional services like ad formatting included in the base campaign cost?',
7
- 'How to create a proposal?',
8
- ];
9
- export const SuggestedMessages = [
10
- 'Hi! How can I help?',
11
- 'Check your activity?',
12
- 'Need account help?',
13
- 'Quick tips to start.',
14
- ];
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGVmaW5lZF9tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9wcmVkZWZpbmVkX21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLG1EQUFtRDtJQUNuRCxzREFBc0Q7SUFDdEQscURBQXFEO0lBQ3JELDREQUE0RDtJQUM1RCxvRkFBb0Y7SUFDcEYsMkJBQTJCO0NBQzVCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixzQkFBc0I7Q0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBQcmVkZWZpbmVkTWVzc2FnZXMgPSBbXHJcbiAgJ0hvdyBkbyBJIGNyZWF0ZSBhIG5ldyBET09IIHByb3Bvc2FsIGluIERvb2hjbGljaz8nLFxyXG4gICdDYW4gdGhlIGJ1eWVyIHNlZSBpbnRlcm5hbCBub3RlcyBJIGFkZCBpbiBEb29oY2xpY2s/JyxcclxuICAvLyAnV2hhdCBoYXBwZW5zIGFmdGVyIGEgYnV5ZXIgYXBwcm92ZXMgYSBwcm9wb3NhbD8nLFxyXG4gIC8vICdXaHkgd291bGQgYW4gU1IgaGlkZSB0aGUgcGlwZWxpbmUgdmFsdWUgaW4gYSBwcm9wb3NhbD8nLFxyXG4gIC8vICdBcmUgYWRkaXRpb25hbCBzZXJ2aWNlcyBsaWtlIGFkIGZvcm1hdHRpbmcgaW5jbHVkZWQgaW4gdGhlIGJhc2UgY2FtcGFpZ24gY29zdD8nLFxyXG4gICdIb3cgdG8gY3JlYXRlIGEgcHJvcG9zYWw/JyxcclxuXTtcclxuZXhwb3J0IGNvbnN0IFN1Z2dlc3RlZE1lc3NhZ2VzID0gW1xyXG4gICdIaSEgSG93IGNhbiBJIGhlbHA/JyxcclxuICAnQ2hlY2sgeW91ciBhY3Rpdml0eT8nLFxyXG4gICdOZWVkIGFjY291bnQgaGVscD8nLFxyXG4gICdRdWljayB0aXBzIHRvIHN0YXJ0LicsXHJcbl07XHJcbiJdfQ==
@@ -1,28 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- export class Chips {
5
- constructor() {
6
- this.messages = []; // messages array
7
- this.disabled = false;
8
- this.chipClick = new EventEmitter(); // emit clicked chip
9
- }
10
- onChipClick(msg) {
11
- if (this.disabled)
12
- return;
13
- this.chipClick.emit(msg);
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Chips, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: Chips, isStandalone: true, selector: "app-chips", inputs: { messages: "messages", disabled: "disabled" }, outputs: { chipClick: "chipClick" }, ngImport: i0, template: "@if (messages.length > 0) {\r\n <div class=\"predefined-chips\">\r\n @for (msg of messages; track msg) {\r\n <button class=\"chip\" (click)=\"onChipClick(msg)\">\r\n {{ msg }}\r\n </button>\r\n }\r\n </div>\r\n}\r\n", styles: [".predefined-chips{display:flex;flex-wrap:wrap;gap:8px;padding:10px;font:var(--font-family)}.chip{background-color:rgba(var(--primary-color),.2);border:1px solid var(--primary-color);border-radius:16px;padding:6px 12px;cursor:pointer;font-size:.9rem;font:var(--font-family);transition:background-color .3s ease;color:var(--text-color)}.chip:hover,.chip.active{background-color:var(--primary-color);color:var(--white)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Chips, decorators: [{
19
- type: Component,
20
- args: [{ selector: 'app-chips', standalone: true, imports: [CommonModule], template: "@if (messages.length > 0) {\r\n <div class=\"predefined-chips\">\r\n @for (msg of messages; track msg) {\r\n <button class=\"chip\" (click)=\"onChipClick(msg)\">\r\n {{ msg }}\r\n </button>\r\n }\r\n </div>\r\n}\r\n", styles: [".predefined-chips{display:flex;flex-wrap:wrap;gap:8px;padding:10px;font:var(--font-family)}.chip{background-color:rgba(var(--primary-color),.2);border:1px solid var(--primary-color);border-radius:16px;padding:6px 12px;cursor:pointer;font-size:.9rem;font:var(--font-family);transition:background-color .3s ease;color:var(--text-color)}.chip:hover,.chip.active{background-color:var(--primary-color);color:var(--white)}\n"] }]
21
- }], propDecorators: { messages: [{
22
- type: Input
23
- }], disabled: [{
24
- type: Input
25
- }], chipClick: [{
26
- type: Output
27
- }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL3NoYXJlZC9jaGlwcy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL2NoaXBzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVMvQyxNQUFNLE9BQU8sS0FBSztJQVBsQjtRQVFXLGFBQVEsR0FBYSxFQUFFLENBQUMsQ0FBQyxpQkFBaUI7UUFDMUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQyxDQUFDLG9CQUFvQjtLQU12RTtJQUpDLFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7K0dBUlUsS0FBSzttR0FBTCxLQUFLLGtLQ1ZsQixrUEFTQSwyZERIWSxZQUFZOzs0RkFJWCxLQUFLO2tCQVBqQixTQUFTOytCQUNFLFdBQVcsY0FDVCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBS2QsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2hpcHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hpcHMge1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdOyAvLyBtZXNzYWdlcyBhcnJheVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGNoaXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpOyAvLyBlbWl0IGNsaWNrZWQgY2hpcFxyXG5cclxuICBvbkNoaXBDbGljayhtc2c6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMuY2hpcENsaWNrLmVtaXQobXNnKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChtZXNzYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgPGRpdiBjbGFzcz1cInByZWRlZmluZWQtY2hpcHNcIj5cclxuICAgIEBmb3IgKG1zZyBvZiBtZXNzYWdlczsgdHJhY2sgbXNnKSB7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjaGlwXCIgKGNsaWNrKT1cIm9uQ2hpcENsaWNrKG1zZylcIj5cclxuICAgICAgICB7eyBtc2cgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19
@@ -1,36 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/dialog";
8
- import * as i2 from "@angular/material/button";
9
- import * as i3 from "@angular/material/icon";
10
- export class DialogComponent {
11
- constructor(dialogRef, data) {
12
- this.dialogRef = dialogRef;
13
- this.data = data;
14
- // Set defaults
15
- this.data.confirmText = this.data.confirmText || 'Confirm';
16
- this.data.cancelText = this.data.cancelText || 'Cancel';
17
- this.data.confirmButtonColor = this.data.confirmButtonColor || 'warn';
18
- this.data.icon = this.data.icon || 'warning';
19
- }
20
- onCancel() {
21
- this.dialogRef.close(false);
22
- }
23
- onConfirm() {
24
- this.dialogRef.close(true);
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DialogComponent, isStandalone: true, selector: "app-dialog", ngImport: i0, template: "<div class=\"dialog-container\">\r\n <div class=\"dialog-header\">\r\n <mat-icon class=\"dialog-icon\" [class.warn-icon]=\"data.confirmButtonColor === 'warn'\">\r\n {{ data.icon }}\r\n </mat-icon>\r\n <h2 mat-dialog-title>{{ data.title }}</h2>\r\n </div>\r\n\r\n <mat-dialog-content>\r\n <p class=\"dialog-message\">{{ data.message }}</p>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-button class=\"cancel-btn\" (click)=\"onCancel()\" type=\"button\">\r\n {{ data.cancelText }}\r\n </button>\r\n <button\r\n mat-raised-button\r\n class=\"confirm-btn\"\r\n [class.warn-btn]=\"data.confirmButtonColor === 'warn'\"\r\n [class.primary-btn]=\"data.confirmButtonColor === 'primary'\"\r\n [class.accent-btn]=\"data.confirmButtonColor === 'accent'\"\r\n (click)=\"onConfirm()\"\r\n type=\"button\"\r\n >\r\n {{ data.confirmText }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>\r\n", styles: [".dialog-container{padding:0;min-width:320px;max-width:500px}.dialog-container .dialog-header{display:flex;align-items:center;gap:12px;padding:24px 24px 16px;margin-bottom:0}.dialog-container .dialog-header .dialog-icon{font-size:32px;width:32px;height:32px;color:var(--primary-color)}.dialog-container .dialog-header .dialog-icon.warn-icon{color:var(--red)}.dialog-container .dialog-header h2{margin:0;font-size:20px;font-weight:600;color:var(--secondary-text-color)}.dialog-container mat-dialog-content{padding:0 24px 24px;margin:0}.dialog-container mat-dialog-content .dialog-message{margin:0;font-size:14px;line-height:1.6;color:var(--text-color)}.dialog-container mat-dialog-actions{padding:12px 24px 24px;margin:0;gap:12px}.dialog-container mat-dialog-actions .cancel-btn{color:var(--secondary-text-color, var(--grey));transition:all .2s ease}.dialog-container mat-dialog-actions .cancel-btn:hover{background-color:var(--hover-bg)}.dialog-container mat-dialog-actions .confirm-btn{font-weight:500;transition:all .2s ease}.dialog-container mat-dialog-actions .confirm-btn.warn-btn{background-color:var(--red);color:var(--white)}.dialog-container mat-dialog-actions .confirm-btn.warn-btn:hover{background-color:var(--red)}.dialog-container mat-dialog-actions .confirm-btn.primary-btn{background-color:var(--primary-color);color:var(--white)}.dialog-container mat-dialog-actions .confirm-btn.primary-btn:hover{background-color:var(--primary-color)}.dialog-container mat-dialog-actions .confirm-btn.accent-btn{background-color:var(--light-red);color:var(--white)}.dialog-container mat-dialog-actions .confirm-btn.accent-btn:hover{background-color:var(--light-red)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, decorators: [{
30
- type: Component,
31
- args: [{ selector: 'app-dialog', standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule], template: "<div class=\"dialog-container\">\r\n <div class=\"dialog-header\">\r\n <mat-icon class=\"dialog-icon\" [class.warn-icon]=\"data.confirmButtonColor === 'warn'\">\r\n {{ data.icon }}\r\n </mat-icon>\r\n <h2 mat-dialog-title>{{ data.title }}</h2>\r\n </div>\r\n\r\n <mat-dialog-content>\r\n <p class=\"dialog-message\">{{ data.message }}</p>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-button class=\"cancel-btn\" (click)=\"onCancel()\" type=\"button\">\r\n {{ data.cancelText }}\r\n </button>\r\n <button\r\n mat-raised-button\r\n class=\"confirm-btn\"\r\n [class.warn-btn]=\"data.confirmButtonColor === 'warn'\"\r\n [class.primary-btn]=\"data.confirmButtonColor === 'primary'\"\r\n [class.accent-btn]=\"data.confirmButtonColor === 'accent'\"\r\n (click)=\"onConfirm()\"\r\n type=\"button\"\r\n >\r\n {{ data.confirmText }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>\r\n", styles: [".dialog-container{padding:0;min-width:320px;max-width:500px}.dialog-container .dialog-header{display:flex;align-items:center;gap:12px;padding:24px 24px 16px;margin-bottom:0}.dialog-container .dialog-header .dialog-icon{font-size:32px;width:32px;height:32px;color:var(--primary-color)}.dialog-container .dialog-header .dialog-icon.warn-icon{color:var(--red)}.dialog-container .dialog-header h2{margin:0;font-size:20px;font-weight:600;color:var(--secondary-text-color)}.dialog-container mat-dialog-content{padding:0 24px 24px;margin:0}.dialog-container mat-dialog-content .dialog-message{margin:0;font-size:14px;line-height:1.6;color:var(--text-color)}.dialog-container mat-dialog-actions{padding:12px 24px 24px;margin:0;gap:12px}.dialog-container mat-dialog-actions .cancel-btn{color:var(--secondary-text-color, var(--grey));transition:all .2s ease}.dialog-container mat-dialog-actions .cancel-btn:hover{background-color:var(--hover-bg)}.dialog-container mat-dialog-actions .confirm-btn{font-weight:500;transition:all .2s ease}.dialog-container mat-dialog-actions .confirm-btn.warn-btn{background-color:var(--red);color:var(--white)}.dialog-container mat-dialog-actions .confirm-btn.warn-btn:hover{background-color:var(--red)}.dialog-container mat-dialog-actions .confirm-btn.primary-btn{background-color:var(--primary-color);color:var(--white)}.dialog-container mat-dialog-actions .confirm-btn.primary-btn:hover{background-color:var(--primary-color)}.dialog-container mat-dialog-actions .confirm-btn.accent-btn{background-color:var(--light-red);color:var(--white)}.dialog-container mat-dialog-actions .confirm-btn.accent-btn:hover{background-color:var(--light-red)}\n"] }]
32
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
33
- type: Inject,
34
- args: [MAT_DIALOG_DATA]
35
- }] }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9zaGFyZWQvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBa0J2RCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUNTLFNBQXdDLEVBQ2YsSUFBZ0I7UUFEekMsY0FBUyxHQUFULFNBQVMsQ0FBK0I7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRWhELGVBQWU7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxNQUFNLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQWxCVSxlQUFlLDhDQUdoQixlQUFlO21HQUhkLGVBQWUsc0VDdEI1Qix5K0JBNkJBLDRyRERYWSxZQUFZLDhCQUFFLGVBQWUseWJBQUUsZUFBZSwyTkFBRSxhQUFhOzs0RkFJNUQsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDOzswQkFPckUsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nRGF0YSB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICBjb25maXJtQnV0dG9uQ29sb3I/OiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJztcclxuICBpY29uPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kaWFsb2cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBEaWFsb2dEYXRhLFxyXG4gICkge1xyXG4gICAgLy8gU2V0IGRlZmF1bHRzXHJcbiAgICB0aGlzLmRhdGEuY29uZmlybVRleHQgPSB0aGlzLmRhdGEuY29uZmlybVRleHQgfHwgJ0NvbmZpcm0nO1xyXG4gICAgdGhpcy5kYXRhLmNhbmNlbFRleHQgPSB0aGlzLmRhdGEuY2FuY2VsVGV4dCB8fCAnQ2FuY2VsJztcclxuICAgIHRoaXMuZGF0YS5jb25maXJtQnV0dG9uQ29sb3IgPSB0aGlzLmRhdGEuY29uZmlybUJ1dHRvbkNvbG9yIHx8ICd3YXJuJztcclxuICAgIHRoaXMuZGF0YS5pY29uID0gdGhpcy5kYXRhLmljb24gfHwgJ3dhcm5pbmcnO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBvbkNvbmZpcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwiZGlhbG9nLWljb25cIiBbY2xhc3Mud2Fybi1pY29uXT1cImRhdGEuY29uZmlybUJ1dHRvbkNvbG9yID09PSAnd2FybidcIj5cclxuICAgICAge3sgZGF0YS5pY29uIH19XHJcbiAgICA8L21hdC1pY29uPlxyXG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3sgZGF0YS50aXRsZSB9fTwvaDI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8cCBjbGFzcz1cImRpYWxvZy1tZXNzYWdlXCI+e3sgZGF0YS5tZXNzYWdlIH19PC9wPlxyXG4gIDwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJjYW5jZWwtYnRuXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgIHt7IGRhdGEuY2FuY2VsVGV4dCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiY29uZmlybS1idG5cIlxyXG4gICAgICBbY2xhc3Mud2Fybi1idG5dPVwiZGF0YS5jb25maXJtQnV0dG9uQ29sb3IgPT09ICd3YXJuJ1wiXHJcbiAgICAgIFtjbGFzcy5wcmltYXJ5LWJ0bl09XCJkYXRhLmNvbmZpcm1CdXR0b25Db2xvciA9PT0gJ3ByaW1hcnknXCJcclxuICAgICAgW2NsYXNzLmFjY2VudC1idG5dPVwiZGF0YS5jb25maXJtQnV0dG9uQ29sb3IgPT09ICdhY2NlbnQnXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGRhdGEuY29uZmlybVRleHQgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48L2Rpdj5cclxuIl19
@@ -1,64 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { DialogComponent } from './dialog.component';
3
- import { InputDialogComponent } from '../input-dialog/input-dialog.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/dialog";
6
- export class DialogService {
7
- constructor(dialog) {
8
- this.dialog = dialog;
9
- }
10
- /**
11
- * Opens a confirmation dialog with customizable options
12
- * @param data Configuration for the dialog
13
- * @returns Observable that emits true if confirmed, false if cancelled
14
- */
15
- open(data) {
16
- const dialogRef = this.dialog.open(DialogComponent, {
17
- width: '400px',
18
- data: data,
19
- disableClose: false,
20
- autoFocus: true,
21
- restoreFocus: true,
22
- });
23
- return dialogRef.afterClosed();
24
- }
25
- /**
26
- * Convenience method for delete confirmation dialogs
27
- * @param itemName Name of the item being deleted
28
- * @returns Observable that emits true if confirmed, false if cancelled
29
- */
30
- confirmDelete(itemName = 'this item') {
31
- return this.open({
32
- title: 'Confirm Delete',
33
- message: `Are you sure you want to delete ${itemName}? This action cannot be undone.`,
34
- confirmText: 'Delete',
35
- cancelText: 'Cancel',
36
- confirmButtonColor: 'warn',
37
- icon: 'delete_forever',
38
- });
39
- }
40
- /**
41
- * Opens a dialog with an input field
42
- * @param data Configuration for the input dialog
43
- * @returns Observable that emits the input value if confirmed, null if cancelled
44
- */
45
- openInput(data) {
46
- const dialogRef = this.dialog.open(InputDialogComponent, {
47
- width: '400px',
48
- data: data,
49
- disableClose: false,
50
- autoFocus: true,
51
- restoreFocus: true,
52
- });
53
- return dialogRef.afterClosed();
54
- }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
56
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogService, providedIn: 'root' }); }
57
- }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogService, decorators: [{
59
- type: Injectable,
60
- args: [{
61
- providedIn: 'root',
62
- }]
63
- }], ctorParameters: () => [{ type: i1.MatDialog }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL2RpYWxvZy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sd0NBQXdDLENBQUM7OztBQUsvRixNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO0lBQUksQ0FBQztJQUUxQzs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLElBQWdCO1FBQ25CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNsRCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsWUFBWSxFQUFFLEtBQUs7WUFDbkIsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxXQUFtQixXQUFXO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztZQUNmLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsT0FBTyxFQUFFLG1DQUFtQyxRQUFRLGlDQUFpQztZQUNyRixXQUFXLEVBQUUsUUFBUTtZQUNyQixVQUFVLEVBQUUsUUFBUTtZQUNwQixrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLElBQUksRUFBRSxnQkFBZ0I7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsSUFBcUI7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFlBQVksRUFBRSxLQUFLO1lBQ25CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzsrR0FuRFUsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50LCBEaWFsb2dEYXRhIH0gZnJvbSAnLi9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXREaWFsb2dDb21wb25lbnQsIElucHV0RGlhbG9nRGF0YSB9IGZyb20gJy4uL2lucHV0LWRpYWxvZy9pbnB1dC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbnMgYSBjb25maXJtYXRpb24gZGlhbG9nIHdpdGggY3VzdG9taXphYmxlIG9wdGlvbnNcclxuICAgKiBAcGFyYW0gZGF0YSBDb25maWd1cmF0aW9uIGZvciB0aGUgZGlhbG9nXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRydWUgaWYgY29uZmlybWVkLCBmYWxzZSBpZiBjYW5jZWxsZWRcclxuICAgKi9cclxuICBvcGVuKGRhdGE6IERpYWxvZ0RhdGEpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxyXG4gICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZGVsZXRlIGNvbmZpcm1hdGlvbiBkaWFsb2dzXHJcbiAgICogQHBhcmFtIGl0ZW1OYW1lIE5hbWUgb2YgdGhlIGl0ZW0gYmVpbmcgZGVsZXRlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0cnVlIGlmIGNvbmZpcm1lZCwgZmFsc2UgaWYgY2FuY2VsbGVkXHJcbiAgICovXHJcbiAgY29uZmlybURlbGV0ZShpdGVtTmFtZTogc3RyaW5nID0gJ3RoaXMgaXRlbScpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLm9wZW4oe1xyXG4gICAgICB0aXRsZTogJ0NvbmZpcm0gRGVsZXRlJyxcclxuICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgJHtpdGVtTmFtZX0/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuYCxcclxuICAgICAgY29uZmlybVRleHQ6ICdEZWxldGUnLFxyXG4gICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgIGljb246ICdkZWxldGVfZm9yZXZlcicsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGEgZGlhbG9nIHdpdGggYW4gaW5wdXQgZmllbGRcclxuICAgKiBAcGFyYW0gZGF0YSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW5wdXQgZGlhbG9nXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpbnB1dCB2YWx1ZSBpZiBjb25maXJtZWQsIG51bGwgaWYgY2FuY2VsbGVkXHJcbiAgICovXHJcbiAgb3BlbklucHV0KGRhdGE6IElucHV0RGlhbG9nRGF0YSk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihJbnB1dERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQwMHB4JyxcclxuICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgYXV0b0ZvY3VzOiB0cnVlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IHRydWUsXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,85 +0,0 @@
1
- /**
2
- * Utility class for common dialog operations
3
- * Provides reusable dialog configurations for consistency across the application
4
- */
5
- export class DialogUtils {
6
- /**
7
- * Show a logout confirmation dialog
8
- * @param dialogService The DialogService instance
9
- * @returns Observable that emits true if confirmed, false if cancelled
10
- */
11
- static confirmLogout(dialogService) {
12
- return dialogService.open({
13
- title: 'Logout',
14
- message: 'Are you sure you want to logout?',
15
- confirmText: 'Logout',
16
- cancelText: 'Cancel',
17
- icon: 'logout',
18
- confirmButtonColor: 'warn',
19
- });
20
- }
21
- /**
22
- * Show a reset confirmation dialog
23
- * @param dialogService The DialogService instance
24
- * @param itemName Optional name of what is being reset (default: 'preferences')
25
- * @returns Observable that emits true if confirmed, false if cancelled
26
- */
27
- static confirmReset(dialogService, itemName = 'preferences') {
28
- return dialogService.open({
29
- title: 'Reset to Defaults',
30
- message: `Are you sure you want to reset ${itemName} to default settings? This action cannot be undone.`,
31
- confirmText: 'Reset',
32
- cancelText: 'Cancel',
33
- icon: 'restart_alt',
34
- confirmButtonColor: 'warn',
35
- });
36
- }
37
- /**
38
- * Show a delete confirmation dialog
39
- * @param dialogService The DialogService instance
40
- * @param itemName Name of the item being deleted
41
- * @returns Observable that emits true if confirmed, false if cancelled
42
- */
43
- static confirmDelete(dialogService, itemName = 'this item') {
44
- return dialogService.open({
45
- title: 'Confirm Delete',
46
- message: `Are you sure you want to delete ${itemName}? This action cannot be undone.`,
47
- confirmText: 'Delete',
48
- cancelText: 'Cancel',
49
- confirmButtonColor: 'warn',
50
- icon: 'delete_forever',
51
- });
52
- }
53
- /**
54
- * Show a clear all confirmation dialog
55
- * @param dialogService The DialogService instance
56
- * @param itemName Name of what is being cleared (e.g., 'chat history', 'all sessions')
57
- * @returns Observable that emits true if confirmed, false if cancelled
58
- */
59
- static confirmClearAll(dialogService, itemName = 'all items') {
60
- return dialogService.open({
61
- title: 'Clear All',
62
- message: `Are you sure you want to clear ${itemName}? This action cannot be undone.`,
63
- confirmText: 'Clear All',
64
- cancelText: 'Cancel',
65
- confirmButtonColor: 'warn',
66
- icon: 'delete_sweep',
67
- });
68
- }
69
- /**
70
- * Show a discard changes confirmation dialog
71
- * @param dialogService The DialogService instance
72
- * @returns Observable that emits true if confirmed, false if cancelled
73
- */
74
- static confirmDiscardChanges(dialogService) {
75
- return dialogService.open({
76
- title: 'Discard Changes',
77
- message: 'You have unsaved changes. Are you sure you want to discard them?',
78
- confirmText: 'Discard',
79
- cancelText: 'Keep Editing',
80
- confirmButtonColor: 'warn',
81
- icon: 'warning',
82
- });
83
- }
84
- }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL3NoYXJlZC9kaWFsb2cvZGlhbG9nLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3BCOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQTRCO1FBQzdDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQztZQUN0QixLQUFLLEVBQUUsUUFBUTtZQUNmLE9BQU8sRUFBRSxrQ0FBa0M7WUFDM0MsV0FBVyxFQUFFLFFBQVE7WUFDckIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxrQkFBa0IsRUFBRSxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQ2YsYUFBNEIsRUFDNUIsV0FBbUIsYUFBYTtRQUVoQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixPQUFPLEVBQUUsa0NBQWtDLFFBQVEscURBQXFEO1lBQ3hHLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLElBQUksRUFBRSxhQUFhO1lBQ25CLGtCQUFrQixFQUFFLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FDaEIsYUFBNEIsRUFDNUIsV0FBbUIsV0FBVztRQUU5QixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixPQUFPLEVBQUUsbUNBQW1DLFFBQVEsaUNBQWlDO1lBQ3JGLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLGtCQUFrQixFQUFFLE1BQU07WUFDMUIsSUFBSSxFQUFFLGdCQUFnQjtTQUN6QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUNsQixhQUE0QixFQUM1QixXQUFtQixXQUFXO1FBRTlCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQztZQUN0QixLQUFLLEVBQUUsV0FBVztZQUNsQixPQUFPLEVBQUUsa0NBQWtDLFFBQVEsaUNBQWlDO1lBQ3BGLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLGtCQUFrQixFQUFFLE1BQU07WUFDMUIsSUFBSSxFQUFFLGNBQWM7U0FDdkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsYUFBNEI7UUFDckQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsT0FBTyxFQUFFLGtFQUFrRTtZQUMzRSxXQUFXLEVBQUUsU0FBUztZQUN0QixVQUFVLEVBQUUsY0FBYztZQUMxQixrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGNvbW1vbiBkaWFsb2cgb3BlcmF0aW9uc1xyXG4gKiBQcm92aWRlcyByZXVzYWJsZSBkaWFsb2cgY29uZmlndXJhdGlvbnMgZm9yIGNvbnNpc3RlbmN5IGFjcm9zcyB0aGUgYXBwbGljYXRpb25cclxuICovXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dVdGlscyB7XHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBsb2dvdXQgY29uZmlybWF0aW9uIGRpYWxvZ1xyXG4gICAgICogQHBhcmFtIGRpYWxvZ1NlcnZpY2UgVGhlIERpYWxvZ1NlcnZpY2UgaW5zdGFuY2VcclxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0cnVlIGlmIGNvbmZpcm1lZCwgZmFsc2UgaWYgY2FuY2VsbGVkXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjb25maXJtTG9nb3V0KGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdMb2dvdXQnLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxvZ291dD8nLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0xvZ291dCcsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgICBpY29uOiAnbG9nb3V0JyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgcmVzZXQgY29uZmlybWF0aW9uIGRpYWxvZ1xyXG4gICAgICogQHBhcmFtIGRpYWxvZ1NlcnZpY2UgVGhlIERpYWxvZ1NlcnZpY2UgaW5zdGFuY2VcclxuICAgICAqIEBwYXJhbSBpdGVtTmFtZSBPcHRpb25hbCBuYW1lIG9mIHdoYXQgaXMgYmVpbmcgcmVzZXQgKGRlZmF1bHQ6ICdwcmVmZXJlbmNlcycpXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdHJ1ZSBpZiBjb25maXJtZWQsIGZhbHNlIGlmIGNhbmNlbGxlZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY29uZmlybVJlc2V0KFxyXG4gICAgICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgaXRlbU5hbWU6IHN0cmluZyA9ICdwcmVmZXJlbmNlcydcclxuICAgICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiBkaWFsb2dTZXJ2aWNlLm9wZW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ1Jlc2V0IHRvIERlZmF1bHRzJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCAke2l0ZW1OYW1lfSB0byBkZWZhdWx0IHNldHRpbmdzPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnUmVzZXQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgaWNvbjogJ3Jlc3RhcnRfYWx0JyxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGVsZXRlIGNvbmZpcm1hdGlvbiBkaWFsb2dcclxuICAgICAqIEBwYXJhbSBkaWFsb2dTZXJ2aWNlIFRoZSBEaWFsb2dTZXJ2aWNlIGluc3RhbmNlXHJcbiAgICAgKiBAcGFyYW0gaXRlbU5hbWUgTmFtZSBvZiB0aGUgaXRlbSBiZWluZyBkZWxldGVkXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdHJ1ZSBpZiBjb25maXJtZWQsIGZhbHNlIGlmIGNhbmNlbGxlZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY29uZmlybURlbGV0ZShcclxuICAgICAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgIGl0ZW1OYW1lOiBzdHJpbmcgPSAndGhpcyBpdGVtJ1xyXG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIGRpYWxvZ1NlcnZpY2Uub3Blbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybSBEZWxldGUnLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAke2l0ZW1OYW1lfT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5gLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0RlbGV0ZScsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgICAgaWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBjbGVhciBhbGwgY29uZmlybWF0aW9uIGRpYWxvZ1xyXG4gICAgICogQHBhcmFtIGRpYWxvZ1NlcnZpY2UgVGhlIERpYWxvZ1NlcnZpY2UgaW5zdGFuY2VcclxuICAgICAqIEBwYXJhbSBpdGVtTmFtZSBOYW1lIG9mIHdoYXQgaXMgYmVpbmcgY2xlYXJlZCAoZS5nLiwgJ2NoYXQgaGlzdG9yeScsICdhbGwgc2Vzc2lvbnMnKVxyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRydWUgaWYgY29uZmlybWVkLCBmYWxzZSBpZiBjYW5jZWxsZWRcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNvbmZpcm1DbGVhckFsbChcclxuICAgICAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgIGl0ZW1OYW1lOiBzdHJpbmcgPSAnYWxsIGl0ZW1zJ1xyXG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIGRpYWxvZ1NlcnZpY2Uub3Blbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnQ2xlYXIgQWxsJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbGVhciAke2l0ZW1OYW1lfT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5gLFxyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogJ0NsZWFyIEFsbCcsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgICAgaWNvbjogJ2RlbGV0ZV9zd2VlcCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGlzY2FyZCBjaGFuZ2VzIGNvbmZpcm1hdGlvbiBkaWFsb2dcclxuICAgICAqIEBwYXJhbSBkaWFsb2dTZXJ2aWNlIFRoZSBEaWFsb2dTZXJ2aWNlIGluc3RhbmNlXHJcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdHJ1ZSBpZiBjb25maXJtZWQsIGZhbHNlIGlmIGNhbmNlbGxlZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY29uZmlybURpc2NhcmRDaGFuZ2VzKGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gZGlhbG9nU2VydmljZS5vcGVuKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdEaXNjYXJkIENoYW5nZXMnLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGlzY2FyZCB0aGVtPycsXHJcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0OiAnRGlzY2FyZCcsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLZWVwIEVkaXRpbmcnLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuIl19
@@ -1,29 +0,0 @@
1
- import { Component, ContentChildren, ViewChild, } from '@angular/core';
2
- import { MenuItem } from '../menu-item/menu-item.component';
3
- import * as i0 from "@angular/core";
4
- export class DropdownMenu {
5
- ngAfterContentInit() {
6
- // Subscribe to all menu item selections
7
- this.menuItems.forEach((item) => {
8
- item.selected.subscribe(() => {
9
- this.close();
10
- });
11
- });
12
- }
13
- close() {
14
- this.detailsRef.nativeElement.open = false;
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMenu, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DropdownMenu, isStandalone: true, selector: "app-dropdown-menu", queries: [{ propertyName: "menuItems", predicate: MenuItem }], viewQueries: [{ propertyName: "detailsRef", first: true, predicate: ["details"], descendants: true }], ngImport: i0, template: "<details class=\"dropdown-menu\" #details>\r\n <summary role=\"button\" class=\"dropdown-trigger\">\r\n <ng-content select=\"[trigger]\"></ng-content>\r\n </summary>\r\n <ul class=\"dropdown-list\">\r\n <ng-content></ng-content>\r\n </ul>\r\n</details>\r\n\r\n<!-- ussage example:\r\n<app-dropdown-menu>\r\n <span trigger>\u2630 Menu</span>\r\n\r\n <app-menu-item href=\"/profile\" (selected)=\"doSomething('profile')\">\r\n My Profile\r\n </app-menu-item>\r\n \r\n <app-menu-item href=\"/settings\" (selected)=\"doSomething('settings')\">\r\n Settings\r\n </app-menu-item>\r\n \r\n <app-menu-item href=\"#\" (selected)=\"logout()\">\r\n Logout\r\n </app-menu-item>\r\n</app-dropdown-menu> -->\r\n\r\n<!-- \r\n Note: The above usage example is commented out to avoid rendering issues.\r\n It demonstrates how to use the DropdownMenu component with MenuItem components as options.\r\n-->\r\n", styles: [".dropdown-menu{position:relative;display:inline-block;margin:0;padding:0}.dropdown-menu summary{list-style:none;cursor:pointer;outline:none}.dropdown-menu summary::-webkit-details-marker{display:none}.dropdown-list{position:absolute;top:100%;left:0;margin:8px 0 0;padding:8px 0;width:180px;background:var(--background-color);border-radius:6px;box-shadow:var(--border-shadow-color);z-index:1000;list-style:none}.dropdown-list:before{content:\"\";position:absolute;top:-6px;left:16px;width:0;height:0;border:6px solid transparent;border-bottom-color:var(--background-color)}.dropdown-list li a{display:block;padding:8px 16px;color:var(--primary-color);text-decoration:none}.dropdown-list li a:hover{background:var(--red);color:var(--secondary-color)}\n"] }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMenu, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'app-dropdown-menu', standalone: true, imports: [], template: "<details class=\"dropdown-menu\" #details>\r\n <summary role=\"button\" class=\"dropdown-trigger\">\r\n <ng-content select=\"[trigger]\"></ng-content>\r\n </summary>\r\n <ul class=\"dropdown-list\">\r\n <ng-content></ng-content>\r\n </ul>\r\n</details>\r\n\r\n<!-- ussage example:\r\n<app-dropdown-menu>\r\n <span trigger>\u2630 Menu</span>\r\n\r\n <app-menu-item href=\"/profile\" (selected)=\"doSomething('profile')\">\r\n My Profile\r\n </app-menu-item>\r\n \r\n <app-menu-item href=\"/settings\" (selected)=\"doSomething('settings')\">\r\n Settings\r\n </app-menu-item>\r\n \r\n <app-menu-item href=\"#\" (selected)=\"logout()\">\r\n Logout\r\n </app-menu-item>\r\n</app-dropdown-menu> -->\r\n\r\n<!-- \r\n Note: The above usage example is commented out to avoid rendering issues.\r\n It demonstrates how to use the DropdownMenu component with MenuItem components as options.\r\n-->\r\n", styles: [".dropdown-menu{position:relative;display:inline-block;margin:0;padding:0}.dropdown-menu summary{list-style:none;cursor:pointer;outline:none}.dropdown-menu summary::-webkit-details-marker{display:none}.dropdown-list{position:absolute;top:100%;left:0;margin:8px 0 0;padding:8px 0;width:180px;background:var(--background-color);border-radius:6px;box-shadow:var(--border-shadow-color);z-index:1000;list-style:none}.dropdown-list:before{content:\"\";position:absolute;top:-6px;left:16px;width:0;height:0;border:6px solid transparent;border-bottom-color:var(--background-color)}.dropdown-list li a{display:block;padding:8px 16px;color:var(--primary-color);text-decoration:none}.dropdown-list li a:hover{background:var(--red);color:var(--secondary-color)}\n"] }]
22
- }], propDecorators: { detailsRef: [{
23
- type: ViewChild,
24
- args: ['details']
25
- }], menuItems: [{
26
- type: ContentChildren,
27
- args: [MenuItem]
28
- }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFHZixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQVM1RCxNQUFNLE9BQU8sWUFBWTtJQUt2QixrQkFBa0I7UUFDaEIsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQzdDLENBQUM7K0dBaEJVLFlBQVk7bUdBQVosWUFBWSx1R0FHTixRQUFRLG9JQ3BCM0IsMDVCQThCQTs7NEZEYmEsWUFBWTtrQkFQeEIsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLEVBQUU7OEJBS1csVUFBVTtzQkFBL0IsU0FBUzt1QkFBQyxTQUFTO2dCQUVPLFNBQVM7c0JBQW5DLGVBQWU7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kcm9wZG93bi1tZW51JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1lbnUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuICBAVmlld0NoaWxkKCdkZXRhaWxzJykgZGV0YWlsc1JlZiE6IEVsZW1lbnRSZWY8SFRNTERldGFpbHNFbGVtZW50PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihNZW51SXRlbSkgbWVudUl0ZW1zITogUXVlcnlMaXN0PE1lbnVJdGVtPjtcclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgLy8gU3Vic2NyaWJlIHRvIGFsbCBtZW51IGl0ZW0gc2VsZWN0aW9uc1xyXG4gICAgdGhpcy5tZW51SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnNlbGVjdGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRldGFpbHNSZWYubmF0aXZlRWxlbWVudC5vcGVuID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkZXRhaWxzIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiICNkZXRhaWxzPlxyXG4gIDxzdW1tYXJ5IHJvbGU9XCJidXR0b25cIiBjbGFzcz1cImRyb3Bkb3duLXRyaWdnZXJcIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0cmlnZ2VyXVwiPjwvbmctY29udGVudD5cclxuICA8L3N1bW1hcnk+XHJcbiAgPHVsIGNsYXNzPVwiZHJvcGRvd24tbGlzdFwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvdWw+XHJcbjwvZGV0YWlscz5cclxuXHJcbjwhLS0gdXNzYWdlIGV4YW1wbGU6XHJcbjxhcHAtZHJvcGRvd24tbWVudT5cclxuICA8c3BhbiB0cmlnZ2VyPuKYsCBNZW51PC9zcGFuPlxyXG5cclxuICA8YXBwLW1lbnUtaXRlbSBocmVmPVwiL3Byb2ZpbGVcIiAoc2VsZWN0ZWQpPVwiZG9Tb21ldGhpbmcoJ3Byb2ZpbGUnKVwiPlxyXG4gICAgTXkgUHJvZmlsZVxyXG4gIDwvYXBwLW1lbnUtaXRlbT5cclxuICBcclxuICA8YXBwLW1lbnUtaXRlbSBocmVmPVwiL3NldHRpbmdzXCIgKHNlbGVjdGVkKT1cImRvU29tZXRoaW5nKCdzZXR0aW5ncycpXCI+XHJcbiAgICBTZXR0aW5nc1xyXG4gIDwvYXBwLW1lbnUtaXRlbT5cclxuICBcclxuICA8YXBwLW1lbnUtaXRlbSBocmVmPVwiI1wiIChzZWxlY3RlZCk9XCJsb2dvdXQoKVwiPlxyXG4gICAgTG9nb3V0XHJcbiAgPC9hcHAtbWVudS1pdGVtPlxyXG48L2FwcC1kcm9wZG93bi1tZW51PiAtLT5cclxuXHJcbjwhLS0gXHJcbiAgTm90ZTogVGhlIGFib3ZlIHVzYWdlIGV4YW1wbGUgaXMgY29tbWVudGVkIG91dCB0byBhdm9pZCByZW5kZXJpbmcgaXNzdWVzLlxyXG4gIEl0IGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIHRoZSBEcm9wZG93bk1lbnUgY29tcG9uZW50IHdpdGggTWVudUl0ZW0gY29tcG9uZW50cyBhcyBvcHRpb25zLlxyXG4tLT5cclxuIl19
@@ -1,38 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { FormsModule } from '@angular/forms';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/dialog";
8
- import * as i2 from "@angular/material/button";
9
- import * as i3 from "@angular/forms";
10
- export class InputDialogComponent {
11
- constructor(dialogRef, data) {
12
- this.dialogRef = dialogRef;
13
- this.data = data;
14
- this.value = data.initialValue;
15
- // Set defaults
16
- this.data.confirmText = this.data.confirmText || 'Save';
17
- this.data.cancelText = this.data.cancelText || 'Cancel';
18
- this.data.placeholder = this.data.placeholder || 'Enter value...';
19
- }
20
- onCancel() {
21
- this.dialogRef.close(null);
22
- }
23
- onConfirm() {
24
- if (this.value && this.value.trim()) {
25
- this.dialogRef.close(this.value.trim());
26
- }
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputDialogComponent, isStandalone: true, selector: "app-input-dialog", ngImport: i0, template: "<div class=\"dialog-container\">\r\n <h2 mat-dialog-title>{{ data.title }}</h2>\r\n <mat-dialog-content>\r\n <p class=\"dialog-message\">{{ data.message }}</p>\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"dialog-input\" [(ngModel)]=\"value\" [placeholder]=\"data.placeholder\"\r\n (keyup.enter)=\"onConfirm()\" focus=\"true\" />\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-button class=\"cancel-btn\" (click)=\"onCancel()\">{{ data.cancelText }}</button>\r\n <button mat-flat-button color=\"primary\" class=\"confirm-btn\" [disabled]=\"!value.trim()\" (click)=\"onConfirm()\">\r\n {{ data.confirmText }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>", styles: [".dialog-container{padding:8px}.dialog-message{color:var(--secondary-text-color);margin-bottom:20px;font-size:14px}.input-group{margin-bottom:20px}.dialog-input{width:100%;padding:12px 16px;border:1px solid var(--border-color);border-radius:8px;background:var(--input-bg);color:var(--text-color);font-size:14px;font-family:inherit;transition:all .2s;box-sizing:border-box}.dialog-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #2196f31a;background:#fff}.cancel-btn{border-radius:8px;font-weight:500}.confirm-btn{border-radius:8px;font-weight:500;margin-left:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputDialogComponent, decorators: [{
32
- type: Component,
33
- args: [{ selector: 'app-input-dialog', standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, FormsModule], template: "<div class=\"dialog-container\">\r\n <h2 mat-dialog-title>{{ data.title }}</h2>\r\n <mat-dialog-content>\r\n <p class=\"dialog-message\">{{ data.message }}</p>\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"dialog-input\" [(ngModel)]=\"value\" [placeholder]=\"data.placeholder\"\r\n (keyup.enter)=\"onConfirm()\" focus=\"true\" />\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-button class=\"cancel-btn\" (click)=\"onCancel()\">{{ data.cancelText }}</button>\r\n <button mat-flat-button color=\"primary\" class=\"confirm-btn\" [disabled]=\"!value.trim()\" (click)=\"onConfirm()\">\r\n {{ data.confirmText }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>", styles: [".dialog-container{padding:8px}.dialog-message{color:var(--secondary-text-color);margin-bottom:20px;font-size:14px}.input-group{margin-bottom:20px}.dialog-input{width:100%;padding:12px 16px;border:1px solid var(--border-color);border-radius:8px;background:var(--input-bg);color:var(--text-color);font-size:14px;font-family:inherit;transition:all .2s;box-sizing:border-box}.dialog-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #2196f31a;background:#fff}.cancel-btn{border-radius:8px;font-weight:500}.confirm-btn{border-radius:8px;font-weight:500;margin-left:8px}\n"] }]
34
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
35
- type: Inject,
36
- args: [MAT_DIALOG_DATA]
37
- }] }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9zaGFyZWQvaW5wdXQtZGlhbG9nL2lucHV0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL2lucHV0LWRpYWxvZy9pbnB1dC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBa0I3QyxNQUFNLE9BQU8sb0JBQW9CO0lBRzdCLFlBQ1csU0FBNkMsRUFDcEIsSUFBcUI7UUFEOUMsY0FBUyxHQUFULFNBQVMsQ0FBb0M7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFFckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQy9CLGVBQWU7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLGdCQUFnQixDQUFDO0lBQ3RFLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDOytHQXRCUSxvQkFBb0IsOENBS2pCLGVBQWU7bUdBTGxCLG9CQUFvQiw0RUN0QmpDLGl6QkFlTSw2b0JER1EsWUFBWSw4QkFBRSxlQUFlLHliQUFFLGVBQWUsMk5BQUUsV0FBVzs7NEZBSTVELG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDOzswQkFTakUsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnB1dERpYWxvZ0RhdGEge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGluaXRpYWxWYWx1ZTogc3RyaW5nO1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICBjb25maXJtVGV4dD86IHN0cmluZztcclxuICAgIGNhbmNlbFRleHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtZGlhbG9nJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RGlhbG9nQ29tcG9uZW50IHtcclxuICAgIHB1YmxpYyB2YWx1ZTogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxJbnB1dERpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBJbnB1dERpYWxvZ0RhdGEsXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gZGF0YS5pbml0aWFsVmFsdWU7XHJcbiAgICAgICAgLy8gU2V0IGRlZmF1bHRzXHJcbiAgICAgICAgdGhpcy5kYXRhLmNvbmZpcm1UZXh0ID0gdGhpcy5kYXRhLmNvbmZpcm1UZXh0IHx8ICdTYXZlJztcclxuICAgICAgICB0aGlzLmRhdGEuY2FuY2VsVGV4dCA9IHRoaXMuZGF0YS5jYW5jZWxUZXh0IHx8ICdDYW5jZWwnO1xyXG4gICAgICAgIHRoaXMuZGF0YS5wbGFjZWhvbGRlciA9IHRoaXMuZGF0YS5wbGFjZWhvbGRlciB8fCAnRW50ZXIgdmFsdWUuLi4nO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ29uZmlybSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLnRyaW0oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGFpbmVyXCI+XHJcbiAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT57eyBkYXRhLnRpdGxlIH19PC9oMj5cclxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkaWFsb2ctbWVzc2FnZVwiPnt7IGRhdGEubWVzc2FnZSB9fTwvcD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJkaWFsb2ctaW5wdXRcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uQ29uZmlybSgpXCIgZm9jdXM9XCJ0cnVlXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idG5cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPnt7IGRhdGEuY2FuY2VsVGV4dCB9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiY29uZmlybS1idG5cIiBbZGlzYWJsZWRdPVwiIXZhbHVlLnRyaW0oKVwiIChjbGljayk9XCJvbkNvbmZpcm0oKVwiPlxyXG4gICAgICAgICAgICB7eyBkYXRhLmNvbmZpcm1UZXh0IH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9kaXY+Il19
@@ -1,24 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class MenuItem {
4
- constructor() {
5
- this.href = '#';
6
- this.selected = new EventEmitter();
7
- }
8
- onClick(event) {
9
- // Optional: prevent default if used for actions, not navigation
10
- // event.preventDefault();
11
- this.selected.emit();
12
- }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuItem, isStandalone: true, selector: "app-menu-item", inputs: { href: "href" }, outputs: { selected: "selected" }, ngImport: i0, template: "<li>\r\n <a [href]=\"href\" (click)=\"onClick($event)\">\r\n <ng-content></ng-content>\r\n </a>\r\n</li>\r\n", styles: [""] }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuItem, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'app-menu-item', standalone: true, imports: [], template: "<li>\r\n <a [href]=\"href\" (click)=\"onClick($event)\">\r\n <ng-content></ng-content>\r\n </a>\r\n</li>\r\n" }]
19
- }], propDecorators: { href: [{
20
- type: Input
21
- }], selected: [{
22
- type: Output
23
- }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9zaGFyZWQvbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTdkUsTUFBTSxPQUFPLFFBQVE7SUFQckI7UUFRVyxTQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ1YsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FRL0M7SUFOQyxPQUFPLENBQUMsS0FBWTtRQUNsQixnRUFBZ0U7UUFDaEUsMEJBQTBCO1FBRTFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzsrR0FUVSxRQUFRO21HQUFSLFFBQVEsc0lDVHJCLG1IQUtBOzs0RkRJYSxRQUFRO2tCQVBwQixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsRUFBRTs4QkFLRixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tZW51LWl0ZW0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL21lbnUtaXRlbS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51SXRlbSB7XHJcbiAgQElucHV0KCkgaHJlZiA9ICcjJztcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAvLyBPcHRpb25hbDogcHJldmVudCBkZWZhdWx0IGlmIHVzZWQgZm9yIGFjdGlvbnMsIG5vdCBuYXZpZ2F0aW9uXHJcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bGk+XHJcbiAgPGEgW2hyZWZdPVwiaHJlZlwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L2E+XHJcbjwvbGk+XHJcbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { Pipe, inject } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
- import { MarkdownService } from '../../core/services/markdown.service';
4
- import * as i0 from "@angular/core";
5
- export class MarkdownPipe {
6
- constructor() {
7
- this.markdownService = inject(MarkdownService);
8
- this.sanitizer = inject(DomSanitizer);
9
- }
10
- transform(value) {
11
- if (!value)
12
- return '';
13
- const html = this.markdownService.convert(value);
14
- return this.sanitizer.bypassSecurityTrustHtml(html);
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
17
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPipe, isStandalone: true, name: "Markdown" }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPipe, decorators: [{
20
- type: Pipe,
21
- args: [{
22
- name: 'Markdown',
23
- standalone: true,
24
- pure: true,
25
- }]
26
- }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLW1hcmtkb3duLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL3BpcGVzL3NpbXBsZS1tYXJrZG93bi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQU92RSxNQUFNLE9BQU8sWUFBWTtJQUx6QjtRQU1VLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0FPMUM7SUFMQyxTQUFTLENBQUMsS0FBZ0M7UUFDeEMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzsrR0FSVSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBTHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbWFya2Rvd24uc2VydmljZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ01hcmtkb3duJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHB1cmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXJrZG93blBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBwcml2YXRlIG1hcmtkb3duU2VydmljZSA9IGluamVjdChNYXJrZG93blNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuICAgIGNvbnN0IGh0bWwgPSB0aGlzLm1hcmtkb3duU2VydmljZS5jb252ZXJ0KHZhbHVlKTtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,43 +0,0 @@
1
- import { Component, inject } from '@angular/core';
2
- import { MatIconModule } from '@angular/material/icon';
3
- import { CommonModule } from '@angular/common';
4
- import { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/icon";
7
- import * as i2 from "@angular/common";
8
- export class SnackBar {
9
- constructor() {
10
- this.snackBarRef = inject(MatSnackBarRef);
11
- this.data = inject(MAT_SNACK_BAR_DATA);
12
- this.message = null;
13
- this.type = 'error';
14
- }
15
- ngOnInit() {
16
- this.message = this.data.message;
17
- this.type = this.data.type || 'error';
18
- }
19
- close() {
20
- this.snackBarRef.dismiss();
21
- }
22
- get icon() {
23
- switch (this.type) {
24
- case 'success':
25
- return 'check_circle';
26
- case 'error':
27
- return 'error';
28
- case 'warn':
29
- return 'warning';
30
- case 'info':
31
- return 'info';
32
- default:
33
- return 'info';
34
- }
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SnackBar, isStandalone: true, selector: "app-snackbar", ngImport: i0, template: "<div class=\"snackbar-message\" [ngClass]=\"'type-' + type\">\r\n <div class=\"error-content\">\r\n <mat-icon class=\"alert-icon\">{{ icon }}</mat-icon>\r\n <span class=\"error-text\">{{ message }}</span>\r\n </div>\r\n <mat-icon class=\"close-icon\" (click)=\"close()\">close</mat-icon>\r\n</div>\r\n", styles: [".snackbar-message{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;border-radius:6px;color:var(--white);font-size:12px;box-shadow:var(--border-shadow-color);font-family:var(--font-family);width:100%;max-width:360px;box-sizing:border-box;background-color:var(--background-color);border:1px solid transparent}.snackbar-message.type-error{background-color:color-mix(in srgb,var(--red),var(--white) 60%);border-color:var(--red)}.snackbar-message.type-error .alert-icon{color:var(--red)}.snackbar-message.type-error .close-icon:hover{background-color:var(--red)}.snackbar-message.type-success{background-color:color-mix(in srgb,var(--green),var(--white) 60%);border-color:var(--green)}.snackbar-message.type-success .alert-icon{color:var(--green)}.snackbar-message.type-success .close-icon:hover{background-color:var(--green)}.snackbar-message.type-warn{background-color:color-mix(in srgb,var(--orange),var(--white) 60%);border-color:var(--orange)}.snackbar-message.type-warn .alert-icon{color:var(--orange)}.snackbar-message.type-warn .close-icon:hover{background-color:var(--orange)}.snackbar-message.type-info{background-color:color-mix(in srgb,var(--blue),var(--white) 60%);border-color:var(--blue)}.snackbar-message.type-info .alert-icon{color:var(--blue)}.snackbar-message.type-info .close-icon:hover{background-color:var(--blue)}.error-content{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.alert-icon{font-size:18px;flex-shrink:0;display:flex;align-items:center}.error-text{flex:1;text-align:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--black)}.close-icon{color:var(--black);cursor:pointer;font-size:18px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.7;flex-shrink:0}.close-icon:hover{opacity:1;background-color:var(--red)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackBar, decorators: [{
40
- type: Component,
41
- args: [{ selector: 'app-snackbar', standalone: true, imports: [MatIconModule, CommonModule], template: "<div class=\"snackbar-message\" [ngClass]=\"'type-' + type\">\r\n <div class=\"error-content\">\r\n <mat-icon class=\"alert-icon\">{{ icon }}</mat-icon>\r\n <span class=\"error-text\">{{ message }}</span>\r\n </div>\r\n <mat-icon class=\"close-icon\" (click)=\"close()\">close</mat-icon>\r\n</div>\r\n", styles: [".snackbar-message{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;border-radius:6px;color:var(--white);font-size:12px;box-shadow:var(--border-shadow-color);font-family:var(--font-family);width:100%;max-width:360px;box-sizing:border-box;background-color:var(--background-color);border:1px solid transparent}.snackbar-message.type-error{background-color:color-mix(in srgb,var(--red),var(--white) 60%);border-color:var(--red)}.snackbar-message.type-error .alert-icon{color:var(--red)}.snackbar-message.type-error .close-icon:hover{background-color:var(--red)}.snackbar-message.type-success{background-color:color-mix(in srgb,var(--green),var(--white) 60%);border-color:var(--green)}.snackbar-message.type-success .alert-icon{color:var(--green)}.snackbar-message.type-success .close-icon:hover{background-color:var(--green)}.snackbar-message.type-warn{background-color:color-mix(in srgb,var(--orange),var(--white) 60%);border-color:var(--orange)}.snackbar-message.type-warn .alert-icon{color:var(--orange)}.snackbar-message.type-warn .close-icon:hover{background-color:var(--orange)}.snackbar-message.type-info{background-color:color-mix(in srgb,var(--blue),var(--white) 60%);border-color:var(--blue)}.snackbar-message.type-info .alert-icon{color:var(--blue)}.snackbar-message.type-info .close-icon:hover{background-color:var(--blue)}.error-content{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.alert-icon{font-size:18px;flex-shrink:0;display:flex;align-items:center}.error-text{flex:1;text-align:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--black)}.close-icon{color:var(--black);cursor:pointer;font-size:18px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.7;flex-shrink:0}.close-icon:hover{opacity:1;background-color:var(--red)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"] }]
42
- }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL3NoYXJlZC9zbmFja2Jhci9zbmFja2Jhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBVWpGLE1BQU0sT0FBTyxRQUFRO0lBUHJCO1FBUVUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRW5DLFlBQU8sR0FBa0IsSUFBSSxDQUFDO1FBQzlCLFNBQUksR0FBa0IsT0FBTyxDQUFDO0tBeUJ0QztJQXZCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxPQUFPO2dCQUNWLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssTUFBTTtnQkFDVCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDSCxDQUFDOytHQTdCVSxRQUFRO21HQUFSLFFBQVEsd0VDYnJCLHdUQU9BLHcrRERJWSxhQUFhLG1MQUFFLFlBQVk7OzRGQUUxQixRQUFRO2tCQVBwQixTQUFTOytCQUNFLGNBQWMsY0FHWixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1BVF9TTkFDS19CQVJfREFUQSwgTWF0U25hY2tCYXJSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBTbmFja0JhckVycm9yIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9zbmFja2Jhci1lcnJvci50eXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNuYWNrYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc25hY2tiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NuYWNrYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0SWNvbk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNuYWNrQmFyIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIHNuYWNrQmFyUmVmID0gaW5qZWN0KE1hdFNuYWNrQmFyUmVmKTtcclxuICBwcml2YXRlIGRhdGEgPSBpbmplY3QoTUFUX1NOQUNLX0JBUl9EQVRBKTtcclxuXHJcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyB0eXBlOiBTbmFja0JhckVycm9yID0gJ2Vycm9yJztcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLmRhdGEubWVzc2FnZTtcclxuICAgIHRoaXMudHlwZSA9IHRoaXMuZGF0YS50eXBlIHx8ICdlcnJvcic7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuc25hY2tCYXJSZWYuZGlzbWlzcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGljb24oKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxyXG4gICAgICAgIHJldHVybiAnY2hlY2tfY2lyY2xlJztcclxuICAgICAgY2FzZSAnZXJyb3InOlxyXG4gICAgICAgIHJldHVybiAnZXJyb3InO1xyXG4gICAgICBjYXNlICd3YXJuJzpcclxuICAgICAgICByZXR1cm4gJ3dhcm5pbmcnO1xyXG4gICAgICBjYXNlICdpbmZvJzpcclxuICAgICAgICByZXR1cm4gJ2luZm8nO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnaW5mbyc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbmFja2Jhci1tZXNzYWdlXCIgW25nQ2xhc3NdPVwiJ3R5cGUtJyArIHR5cGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiZXJyb3ItY29udGVudFwiPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwiYWxlcnQtaWNvblwiPnt7IGljb24gfX08L21hdC1pY29uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJlcnJvci10ZXh0XCI+e3sgbWVzc2FnZSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWljb24gY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlKClcIj5jbG9zZTwvbWF0LWljb24+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,46 +0,0 @@
1
- import { inject, Injectable } from '@angular/core';
2
- import { MatSnackBar } from '@angular/material/snack-bar';
3
- import { SnackBar } from './snackbar.component';
4
- import { SnackbarUtils } from './snackbar.utils';
5
- import * as i0 from "@angular/core";
6
- export class SnackbarService {
7
- constructor() {
8
- this.snackBar = inject(MatSnackBar);
9
- SnackbarUtils.init(this);
10
- }
11
- // Generic show method
12
- show(message, duration, type) {
13
- this.snackBar.openFromComponent(SnackBar, {
14
- duration: duration,
15
- data: { message, type },
16
- horizontalPosition: 'end',
17
- verticalPosition: 'bottom',
18
- panelClass: [`snackbar-${type}`]
19
- });
20
- }
21
- // Convenience methods
22
- success(message, duration = 3000) {
23
- this.show(message, duration, 'success');
24
- }
25
- warn(message, duration = 5000) {
26
- this.show(message, duration, 'warn');
27
- }
28
- error(message, duration = 5000) {
29
- this.show(message, duration, 'error');
30
- }
31
- info(message, duration = 4000) {
32
- this.show(message, duration, 'info');
33
- }
34
- clear() {
35
- this.snackBar.dismiss();
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, providedIn: 'root' }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, decorators: [{
41
- type: Injectable,
42
- args: [{
43
- providedIn: 'root',
44
- }]
45
- }], ctorParameters: () => [] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9zaGFyZWQvc25hY2tiYXIvc25hY2tiYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFXakQsTUFBTSxPQUFPLGVBQWU7SUFHMUI7UUFGUSxhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBR3JDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELHNCQUFzQjtJQUNkLElBQUksQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxJQUFtQjtRQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtZQUN4QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO1lBQ3ZCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsZ0JBQWdCLEVBQUUsUUFBUTtZQUMxQixVQUFVLEVBQUUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsT0FBTyxDQUFDLE9BQWUsRUFBRSxXQUFtQixJQUFJO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxXQUFtQixJQUFJO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxXQUFtQixJQUFJO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxXQUFtQixJQUFJO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0FyQ1UsZUFBZTttSEFBZixlQUFlLGNBRmQsTUFBTTs7NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBTbmFja0JhckVycm9yIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9zbmFja2Jhci1lcnJvci50eXBlJztcclxuaW1wb3J0IHsgU25hY2tCYXIgfSBmcm9tICcuL3NuYWNrYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNuYWNrYmFyVXRpbHMgfSBmcm9tICcuL3NuYWNrYmFyLnV0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU25hY2tiYXJDb25maWcge1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBkdXJhdGlvbj86IG51bWJlcjtcclxuICB0eXBlOiBTbmFja0JhckVycm9yO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU25hY2tiYXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHNuYWNrQmFyID0gaW5qZWN0KE1hdFNuYWNrQmFyKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBTbmFja2JhclV0aWxzLmluaXQodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvLyBHZW5lcmljIHNob3cgbWV0aG9kXHJcbiAgcHJpdmF0ZSBzaG93KG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb246IG51bWJlciwgdHlwZTogU25hY2tCYXJFcnJvcikge1xyXG4gICAgdGhpcy5zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChTbmFja0Jhciwge1xyXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgIGRhdGE6IHsgbWVzc2FnZSwgdHlwZSB9LFxyXG4gICAgICBob3Jpem9udGFsUG9zaXRpb246ICdlbmQnLFxyXG4gICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgICAgcGFuZWxDbGFzczogW2BzbmFja2Jhci0ke3R5cGV9YF1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29udmVuaWVuY2UgbWV0aG9kc1xyXG4gIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gMzAwMCkge1xyXG4gICAgdGhpcy5zaG93KG1lc3NhZ2UsIGR1cmF0aW9uLCAnc3VjY2VzcycpO1xyXG4gIH1cclxuXHJcbiAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwKSB7XHJcbiAgICB0aGlzLnNob3cobWVzc2FnZSwgZHVyYXRpb24sICd3YXJuJyk7XHJcbiAgfVxyXG5cclxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwKSB7XHJcbiAgICB0aGlzLnNob3cobWVzc2FnZSwgZHVyYXRpb24sICdlcnJvcicpO1xyXG4gIH1cclxuXHJcbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA0MDAwKSB7XHJcbiAgICB0aGlzLnNob3cobWVzc2FnZSwgZHVyYXRpb24sICdpbmZvJyk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMuc25hY2tCYXIuZGlzbWlzcygpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,43 +0,0 @@
1
- /**
2
- * Utility class for common snackbar operations
3
- * Provides reusable snackbar configurations for consistency across the application
4
- */
5
- export class SnackbarUtils {
6
- static { this.service = null; }
7
- /**
8
- * Initialize the utility with a SnackbarService instance
9
- * @param service The SnackbarService instance
10
- */
11
- static init(service) {
12
- this.service = service;
13
- }
14
- /**
15
- * Show a success snackbar
16
- * @param message The message to show
17
- */
18
- static success(message) {
19
- this.service?.success(message);
20
- }
21
- /**
22
- * Show an error snackbar
23
- * @param message The message to show
24
- */
25
- static error(message) {
26
- this.service?.error(message);
27
- }
28
- /**
29
- * Show a warning snackbar
30
- * @param message The message to show
31
- */
32
- static warn(message) {
33
- this.service?.warn(message);
34
- }
35
- /**
36
- * Show an info snackbar
37
- * @param message The message to show
38
- */
39
- static info(message) {
40
- this.service?.info(message);
41
- }
42
- }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvc2hhcmVkL3NuYWNrYmFyL3NuYWNrYmFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO2FBQ1AsWUFBTyxHQUEyQixJQUFJLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUF3QjtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQWU7UUFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBZTtRQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFlO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuL3NuYWNrYmFyLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGNvbW1vbiBzbmFja2JhciBvcGVyYXRpb25zXHJcbiAqIFByb3ZpZGVzIHJldXNhYmxlIHNuYWNrYmFyIGNvbmZpZ3VyYXRpb25zIGZvciBjb25zaXN0ZW5jeSBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU25hY2tiYXJVdGlscyB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBzZXJ2aWNlOiBTbmFja2JhclNlcnZpY2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemUgdGhlIHV0aWxpdHkgd2l0aCBhIFNuYWNrYmFyU2VydmljZSBpbnN0YW5jZVxyXG4gICAgICogQHBhcmFtIHNlcnZpY2UgVGhlIFNuYWNrYmFyU2VydmljZSBpbnN0YW5jZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaW5pdChzZXJ2aWNlOiBTbmFja2JhclNlcnZpY2UpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UgPSBzZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhIHN1Y2Nlc3Mgc25hY2tiYXJcclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIHNob3dcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlPy5zdWNjZXNzKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhbiBlcnJvciBzbmFja2JhclxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gc2hvd1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlPy5lcnJvcihtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSB3YXJuaW5nIHNuYWNrYmFyXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBzaG93XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VydmljZT8ud2FybihtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYW4gaW5mbyBzbmFja2JhclxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gc2hvd1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaW5mbyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2U/LmluZm8obWVzc2FnZSk7XHJcbiAgICB9XHJcbn1cclxuIl19