@senior-gestao-relacionamento/angular-components 1.10.0 → 2.0.0-master-3920269d

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 (279) hide show
  1. package/README.md +15 -0
  2. package/esm2022/lib/angular-components.module.mjs +22 -0
  3. package/esm2022/lib/components/schedule/components/index.mjs +3 -0
  4. package/esm2022/lib/components/schedule/components/schedule-detail.component.mjs +162 -0
  5. package/esm2022/lib/components/schedule/components/schedule-form.component.mjs +780 -0
  6. package/esm2022/lib/components/schedule/index.mjs +6 -0
  7. package/esm2022/lib/components/schedule/models/index.mjs +2 -0
  8. package/esm2022/lib/components/schedule/models/schedule.enums.mjs +59 -0
  9. package/esm2022/lib/components/schedule/models/schedule.interface.mjs +2 -0
  10. package/esm2022/lib/components/schedule/services/index.mjs +3 -0
  11. package/esm2022/lib/components/schedule/services/schedule-type.service.mjs +20 -0
  12. package/esm2022/lib/components/schedule/services/schedule.service.mjs +69 -0
  13. package/esm2022/lib/services/current-collaborator/current-collaborator.service.mjs +70 -0
  14. package/esm2022/lib/services/current-collaborator/models/collaborator.model.mjs +2 -0
  15. package/esm2022/lib/services/storage/storage.service.mjs +130 -0
  16. package/esm2022/public-api.mjs +12 -0
  17. package/esm2022/senior-gestao-relacionamento-angular-components.mjs +5 -0
  18. package/fesm2022/senior-gestao-relacionamento-angular-components.mjs +1285 -0
  19. package/fesm2022/senior-gestao-relacionamento-angular-components.mjs.map +1 -0
  20. package/index.d.ts +5 -0
  21. package/lib/angular-components.module.d.ts +10 -0
  22. package/lib/components/schedule/components/index.d.ts +2 -0
  23. package/lib/components/schedule/components/schedule-detail.component.d.ts +38 -0
  24. package/lib/components/schedule/components/schedule-form.component.d.ts +98 -0
  25. package/lib/components/schedule/index.d.ts +4 -0
  26. package/lib/components/schedule/models/index.d.ts +2 -0
  27. package/lib/components/schedule/models/schedule.enums.d.ts +51 -0
  28. package/lib/components/schedule/models/schedule.interface.d.ts +66 -0
  29. package/lib/components/schedule/services/index.d.ts +2 -0
  30. package/lib/components/schedule/services/schedule-type.service.d.ts +11 -0
  31. package/lib/components/schedule/services/schedule.service.d.ts +87 -0
  32. package/lib/services/current-collaborator/current-collaborator.service.d.ts +32 -0
  33. package/lib/services/current-collaborator/models/collaborator.model.d.ts +53 -0
  34. package/lib/services/storage/storage.service.d.ts +44 -0
  35. package/package.json +39 -41
  36. package/public-api.d.ts +8 -4
  37. package/bundles/senior-gestao-relacionamento-angular-components.umd.js +0 -1586
  38. package/bundles/senior-gestao-relacionamento-angular-components.umd.js.map +0 -1
  39. package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js +0 -16
  40. package/bundles/senior-gestao-relacionamento-angular-components.umd.min.js.map +0 -1
  41. package/components/index.d.ts +0 -2
  42. package/components/refresh-websocket-alert/index.d.ts +0 -2
  43. package/components/refresh-websocket-alert/refresh-websocket-alert.component.d.ts +0 -14
  44. package/components/refresh-websocket-alert/refresh-websocket-alert.module.d.ts +0 -2
  45. package/components/reports/enums/format-enum.d.ts +0 -9
  46. package/components/reports/enums/index.d.ts +0 -2
  47. package/components/reports/enums/view-mode-enum.d.ts +0 -4
  48. package/components/reports/index.d.ts +0 -5
  49. package/components/reports/models/callback-event.d.ts +0 -4
  50. package/components/reports/models/generate-report-input-dto.d.ts +0 -11
  51. package/components/reports/models/generate-report-output-dto.d.ts +0 -3
  52. package/components/reports/models/index.d.ts +0 -7
  53. package/components/reports/models/parameter.d.ts +0 -4
  54. package/components/reports/models/report-dto.d.ts +0 -6
  55. package/components/reports/models/reports-options.d.ts +0 -14
  56. package/components/reports/models/response-list-report-dto.d.ts +0 -8
  57. package/components/reports/reports.component.d.ts +0 -41
  58. package/components/reports/reports.module.d.ts +0 -2
  59. package/components/reports/reports.service.d.ts +0 -16
  60. package/esm2015/components/index.js +0 -3
  61. package/esm2015/components/refresh-websocket-alert/index.js +0 -3
  62. package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.component.js +0 -57
  63. package/esm2015/components/refresh-websocket-alert/refresh-websocket-alert.module.js +0 -26
  64. package/esm2015/components/reports/enums/format-enum.js +0 -11
  65. package/esm2015/components/reports/enums/index.js +0 -3
  66. package/esm2015/components/reports/enums/view-mode-enum.js +0 -6
  67. package/esm2015/components/reports/index.js +0 -5
  68. package/esm2015/components/reports/models/callback-event.js +0 -1
  69. package/esm2015/components/reports/models/generate-report-input-dto.js +0 -1
  70. package/esm2015/components/reports/models/generate-report-output-dto.js +0 -1
  71. package/esm2015/components/reports/models/index.js +0 -1
  72. package/esm2015/components/reports/models/parameter.js +0 -1
  73. package/esm2015/components/reports/models/report-dto.js +0 -1
  74. package/esm2015/components/reports/models/reports-options.js +0 -1
  75. package/esm2015/components/reports/models/response-list-report-dto.js +0 -1
  76. package/esm2015/components/reports/reports.component.js +0 -202
  77. package/esm2015/components/reports/reports.module.js +0 -43
  78. package/esm2015/components/reports/reports.service.js +0 -73
  79. package/esm2015/locale/fallback.js +0 -16
  80. package/esm2015/public-api.js +0 -5
  81. package/esm2015/senior-gestao-relacionamento-angular-components.js +0 -9
  82. package/esm2015/services/current-collaborator/current-collaborator.module.js +0 -20
  83. package/esm2015/services/current-collaborator/current-collaborator.service.js +0 -60
  84. package/esm2015/services/current-collaborator/enums/index.js +0 -2
  85. package/esm2015/services/current-collaborator/enums/status-enum.js +0 -6
  86. package/esm2015/services/current-collaborator/index.js +0 -5
  87. package/esm2015/services/current-collaborator/models/branch-dto.js +0 -1
  88. package/esm2015/services/current-collaborator/models/branch.js +0 -23
  89. package/esm2015/services/current-collaborator/models/collaborator-branch-link-dto.js +0 -1
  90. package/esm2015/services/current-collaborator/models/collaborator-branch-link.js +0 -23
  91. package/esm2015/services/current-collaborator/models/collaborator-dto.js +0 -1
  92. package/esm2015/services/current-collaborator/models/collaborator.js +0 -42
  93. package/esm2015/services/current-collaborator/models/company-dto.js +0 -1
  94. package/esm2015/services/current-collaborator/models/company.js +0 -16
  95. package/esm2015/services/current-collaborator/models/index.js +0 -6
  96. package/esm2015/services/current-collaborator/models/job-title-dto.js +0 -1
  97. package/esm2015/services/current-collaborator/models/job-title.js +0 -16
  98. package/esm2015/services/current-tenant/current-tenant.module.js +0 -20
  99. package/esm2015/services/current-tenant/current-tenant.service.js +0 -67
  100. package/esm2015/services/current-tenant/index.js +0 -4
  101. package/esm2015/services/current-tenant/models/index.js +0 -2
  102. package/esm2015/services/current-tenant/models/modulo-dto.js +0 -1
  103. package/esm2015/services/current-tenant/models/modulo.js +0 -15
  104. package/esm2015/services/index.js +0 -9
  105. package/esm2015/services/resolvers/access-validation.resolve.js +0 -33
  106. package/esm2015/services/resolvers/index.js +0 -2
  107. package/esm2015/services/schedule-form-rules/enums/index.js +0 -6
  108. package/esm2015/services/schedule-form-rules/enums/month-enum.js +0 -16
  109. package/esm2015/services/schedule-form-rules/enums/ordinal-week-day-enum.js +0 -9
  110. package/esm2015/services/schedule-form-rules/enums/recurrence-enum.js +0 -8
  111. package/esm2015/services/schedule-form-rules/enums/repeat-when-enum.js +0 -6
  112. package/esm2015/services/schedule-form-rules/enums/week-day-enum.js +0 -11
  113. package/esm2015/services/schedule-form-rules/index.js +0 -4
  114. package/esm2015/services/schedule-form-rules/schedule-form-rules.module.js +0 -15
  115. package/esm2015/services/schedule-form-rules/schedule-form-rules.service.js +0 -105
  116. package/esm2015/services/standard-filters/index.js +0 -3
  117. package/esm2015/services/standard-filters/standard-filters.module.js +0 -14
  118. package/esm2015/services/standard-filters/standard-filters.service.js +0 -28
  119. package/esm2015/services/storage/com-senior-token-dto.js +0 -1
  120. package/esm2015/services/storage/index.js +0 -2
  121. package/esm2015/services/storage/storage.module.js +0 -17
  122. package/esm2015/services/storage/storage.service.js +0 -59
  123. package/esm2015/services/validators/date-validators.service.js +0 -9
  124. package/esm2015/services/validators/form-group-validators.service.js +0 -36
  125. package/esm2015/services/validators/index.js +0 -3
  126. package/esm2015/services/websocket/index.js +0 -4
  127. package/esm2015/services/websocket/models/event-dto.js +0 -1
  128. package/esm2015/services/websocket/models/event.js +0 -13
  129. package/esm2015/services/websocket/models/index.js +0 -3
  130. package/esm2015/services/websocket/models/topic-dto.js +0 -1
  131. package/esm2015/services/websocket/models/topic.js +0 -25
  132. package/esm2015/services/websocket/websocket.module.js +0 -18
  133. package/esm2015/services/websocket/websocket.service.js +0 -124
  134. package/esm2015/utils/index.js +0 -4
  135. package/esm2015/utils/string-converter.service.js +0 -7
  136. package/esm2015/utils/utils.js +0 -80
  137. package/esm2015/utils/value-changes.service.js +0 -7
  138. package/esm5/components/index.js +0 -3
  139. package/esm5/components/refresh-websocket-alert/index.js +0 -3
  140. package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.component.js +0 -59
  141. package/esm5/components/refresh-websocket-alert/refresh-websocket-alert.module.js +0 -29
  142. package/esm5/components/reports/enums/format-enum.js +0 -11
  143. package/esm5/components/reports/enums/index.js +0 -3
  144. package/esm5/components/reports/enums/view-mode-enum.js +0 -6
  145. package/esm5/components/reports/index.js +0 -5
  146. package/esm5/components/reports/models/callback-event.js +0 -1
  147. package/esm5/components/reports/models/generate-report-input-dto.js +0 -1
  148. package/esm5/components/reports/models/generate-report-output-dto.js +0 -1
  149. package/esm5/components/reports/models/index.js +0 -1
  150. package/esm5/components/reports/models/parameter.js +0 -1
  151. package/esm5/components/reports/models/report-dto.js +0 -1
  152. package/esm5/components/reports/models/reports-options.js +0 -1
  153. package/esm5/components/reports/models/response-list-report-dto.js +0 -1
  154. package/esm5/components/reports/reports.component.js +0 -208
  155. package/esm5/components/reports/reports.module.js +0 -46
  156. package/esm5/components/reports/reports.service.js +0 -75
  157. package/esm5/locale/fallback.js +0 -16
  158. package/esm5/public-api.js +0 -5
  159. package/esm5/senior-gestao-relacionamento-angular-components.js +0 -9
  160. package/esm5/services/current-collaborator/current-collaborator.module.js +0 -23
  161. package/esm5/services/current-collaborator/current-collaborator.service.js +0 -62
  162. package/esm5/services/current-collaborator/enums/index.js +0 -2
  163. package/esm5/services/current-collaborator/enums/status-enum.js +0 -6
  164. package/esm5/services/current-collaborator/index.js +0 -5
  165. package/esm5/services/current-collaborator/models/branch-dto.js +0 -1
  166. package/esm5/services/current-collaborator/models/branch.js +0 -28
  167. package/esm5/services/current-collaborator/models/collaborator-branch-link-dto.js +0 -1
  168. package/esm5/services/current-collaborator/models/collaborator-branch-link.js +0 -28
  169. package/esm5/services/current-collaborator/models/collaborator-dto.js +0 -1
  170. package/esm5/services/current-collaborator/models/collaborator.js +0 -45
  171. package/esm5/services/current-collaborator/models/company-dto.js +0 -1
  172. package/esm5/services/current-collaborator/models/company.js +0 -21
  173. package/esm5/services/current-collaborator/models/index.js +0 -6
  174. package/esm5/services/current-collaborator/models/job-title-dto.js +0 -1
  175. package/esm5/services/current-collaborator/models/job-title.js +0 -21
  176. package/esm5/services/current-tenant/current-tenant.module.js +0 -23
  177. package/esm5/services/current-tenant/current-tenant.service.js +0 -70
  178. package/esm5/services/current-tenant/index.js +0 -4
  179. package/esm5/services/current-tenant/models/index.js +0 -2
  180. package/esm5/services/current-tenant/models/modulo-dto.js +0 -1
  181. package/esm5/services/current-tenant/models/modulo.js +0 -20
  182. package/esm5/services/index.js +0 -9
  183. package/esm5/services/resolvers/access-validation.resolve.js +0 -35
  184. package/esm5/services/resolvers/index.js +0 -2
  185. package/esm5/services/schedule-form-rules/enums/index.js +0 -6
  186. package/esm5/services/schedule-form-rules/enums/month-enum.js +0 -16
  187. package/esm5/services/schedule-form-rules/enums/ordinal-week-day-enum.js +0 -9
  188. package/esm5/services/schedule-form-rules/enums/recurrence-enum.js +0 -8
  189. package/esm5/services/schedule-form-rules/enums/repeat-when-enum.js +0 -6
  190. package/esm5/services/schedule-form-rules/enums/week-day-enum.js +0 -11
  191. package/esm5/services/schedule-form-rules/index.js +0 -4
  192. package/esm5/services/schedule-form-rules/schedule-form-rules.module.js +0 -18
  193. package/esm5/services/schedule-form-rules/schedule-form-rules.service.js +0 -109
  194. package/esm5/services/standard-filters/index.js +0 -3
  195. package/esm5/services/standard-filters/standard-filters.module.js +0 -17
  196. package/esm5/services/standard-filters/standard-filters.service.js +0 -30
  197. package/esm5/services/storage/com-senior-token-dto.js +0 -1
  198. package/esm5/services/storage/index.js +0 -2
  199. package/esm5/services/storage/storage.module.js +0 -20
  200. package/esm5/services/storage/storage.service.js +0 -60
  201. package/esm5/services/validators/date-validators.service.js +0 -13
  202. package/esm5/services/validators/form-group-validators.service.js +0 -40
  203. package/esm5/services/validators/index.js +0 -3
  204. package/esm5/services/websocket/index.js +0 -4
  205. package/esm5/services/websocket/models/event-dto.js +0 -1
  206. package/esm5/services/websocket/models/event.js +0 -20
  207. package/esm5/services/websocket/models/index.js +0 -3
  208. package/esm5/services/websocket/models/topic-dto.js +0 -1
  209. package/esm5/services/websocket/models/topic.js +0 -29
  210. package/esm5/services/websocket/websocket.module.js +0 -21
  211. package/esm5/services/websocket/websocket.service.js +0 -131
  212. package/esm5/utils/index.js +0 -4
  213. package/esm5/utils/string-converter.service.js +0 -11
  214. package/esm5/utils/utils.js +0 -82
  215. package/esm5/utils/value-changes.service.js +0 -11
  216. package/fesm2015/senior-gestao-relacionamento-angular-components.js +0 -1271
  217. package/fesm2015/senior-gestao-relacionamento-angular-components.js.map +0 -1
  218. package/fesm5/senior-gestao-relacionamento-angular-components.js +0 -1363
  219. package/fesm5/senior-gestao-relacionamento-angular-components.js.map +0 -1
  220. package/locale/fallback.d.ts +0 -1
  221. package/scss/styles.scss +0 -190
  222. package/senior-gestao-relacionamento-angular-components.d.ts +0 -8
  223. package/senior-gestao-relacionamento-angular-components.metadata.json +0 -1
  224. package/services/current-collaborator/current-collaborator.module.d.ts +0 -2
  225. package/services/current-collaborator/current-collaborator.service.d.ts +0 -14
  226. package/services/current-collaborator/enums/index.d.ts +0 -1
  227. package/services/current-collaborator/enums/status-enum.d.ts +0 -4
  228. package/services/current-collaborator/index.d.ts +0 -4
  229. package/services/current-collaborator/models/branch-dto.d.ts +0 -7
  230. package/services/current-collaborator/models/branch.d.ts +0 -13
  231. package/services/current-collaborator/models/collaborator-branch-link-dto.d.ts +0 -4
  232. package/services/current-collaborator/models/collaborator-branch-link.d.ts +0 -9
  233. package/services/current-collaborator/models/collaborator-dto.d.ts +0 -14
  234. package/services/current-collaborator/models/collaborator.d.ts +0 -18
  235. package/services/current-collaborator/models/company-dto.d.ts +0 -6
  236. package/services/current-collaborator/models/company.d.ts +0 -11
  237. package/services/current-collaborator/models/index.d.ts +0 -10
  238. package/services/current-collaborator/models/job-title-dto.d.ts +0 -4
  239. package/services/current-collaborator/models/job-title.d.ts +0 -8
  240. package/services/current-tenant/current-tenant.module.d.ts +0 -2
  241. package/services/current-tenant/current-tenant.service.d.ts +0 -19
  242. package/services/current-tenant/index.d.ts +0 -3
  243. package/services/current-tenant/models/index.d.ts +0 -2
  244. package/services/current-tenant/models/modulo-dto.d.ts +0 -5
  245. package/services/current-tenant/models/modulo.d.ts +0 -8
  246. package/services/index.d.ts +0 -8
  247. package/services/resolvers/access-validation.resolve.d.ts +0 -9
  248. package/services/resolvers/index.d.ts +0 -1
  249. package/services/schedule-form-rules/enums/index.d.ts +0 -5
  250. package/services/schedule-form-rules/enums/month-enum.d.ts +0 -14
  251. package/services/schedule-form-rules/enums/ordinal-week-day-enum.d.ts +0 -7
  252. package/services/schedule-form-rules/enums/recurrence-enum.d.ts +0 -6
  253. package/services/schedule-form-rules/enums/repeat-when-enum.d.ts +0 -4
  254. package/services/schedule-form-rules/enums/week-day-enum.d.ts +0 -9
  255. package/services/schedule-form-rules/index.d.ts +0 -3
  256. package/services/schedule-form-rules/schedule-form-rules.module.d.ts +0 -2
  257. package/services/schedule-form-rules/schedule-form-rules.service.d.ts +0 -12
  258. package/services/standard-filters/index.d.ts +0 -2
  259. package/services/standard-filters/standard-filters.module.d.ts +0 -2
  260. package/services/standard-filters/standard-filters.service.d.ts +0 -7
  261. package/services/storage/com-senior-token-dto.d.ts +0 -14
  262. package/services/storage/index.d.ts +0 -1
  263. package/services/storage/storage.module.d.ts +0 -2
  264. package/services/storage/storage.service.d.ts +0 -17
  265. package/services/validators/date-validators.service.d.ts +0 -3
  266. package/services/validators/form-group-validators.service.d.ts +0 -5
  267. package/services/validators/index.d.ts +0 -2
  268. package/services/websocket/index.d.ts +0 -3
  269. package/services/websocket/models/event-dto.d.ts +0 -5
  270. package/services/websocket/models/event.d.ts +0 -8
  271. package/services/websocket/models/index.d.ts +0 -4
  272. package/services/websocket/models/topic-dto.d.ts +0 -6
  273. package/services/websocket/models/topic.d.ts +0 -10
  274. package/services/websocket/websocket.module.d.ts +0 -2
  275. package/services/websocket/websocket.service.d.ts +0 -22
  276. package/utils/index.d.ts +0 -3
  277. package/utils/string-converter.service.d.ts +0 -3
  278. package/utils/utils.d.ts +0 -12
  279. package/utils/value-changes.service.d.ts +0 -4
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # @senior-gestao-relacionamento/angular-components
2
+
3
+ Biblioteca de componentes reutilizáveis para aplicações Angular do CRM Senior Sistemas.
4
+
5
+ ## Instalação
6
+
7
+ ```bash
8
+ npm install @senior-gestao-relacionamento/angular-components
9
+ ```
10
+
11
+ ## Uso
12
+
13
+ ```typescript
14
+ import { AngularComponentsModule } from '@senior-gestao-relacionamento/angular-components';
15
+ ```
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Módulo principal da biblioteca @senior-gestao-relacionamento/angular-components
6
+ */
7
+ export class AngularComponentsModule {
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, imports: [CommonModule] });
10
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, imports: [CommonModule] });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularComponentsModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [],
16
+ imports: [
17
+ CommonModule
18
+ ],
19
+ exports: []
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2FuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRS9DOztHQUVHO0FBUUgsTUFBTSxPQUFPLHVCQUF1Qjt3R0FBdkIsdUJBQXVCO3lHQUF2Qix1QkFBdUIsWUFKaEMsWUFBWTt5R0FJSCx1QkFBdUIsWUFKaEMsWUFBWTs7NEZBSUgsdUJBQXVCO2tCQVBuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIE3Ds2R1bG8gcHJpbmNpcGFsIGRhIGJpYmxpb3RlY2EgQHNlbmlvci1nZXN0YW8tcmVsYWNpb25hbWVudG8vYW5ndWxhci1jb21wb25lbnRzXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { ScheduleFormComponent } from './schedule-form.component';
2
+ export { ScheduleDetailComponent } from './schedule-detail.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTY2hlZHVsZUZvcm1Db21wb25lbnQgfSBmcm9tICcuL3NjaGVkdWxlLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFNjaGVkdWxlRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi9zY2hlZHVsZS1kZXRhaWwuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,162 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ // PrimeNG
4
+ import { DialogModule } from 'primeng/dialog';
5
+ import { ButtonModule } from 'primeng/button';
6
+ import { TagModule } from 'primeng/tag';
7
+ import { DividerModule } from 'primeng/divider';
8
+ import { TooltipModule } from 'primeng/tooltip';
9
+ // Components AI
10
+ import { TranslatePipe } from '@seniorsistemas/components-ai';
11
+ import { SchedulePriority } from '../models/schedule.enums';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@seniorsistemas/components-ai";
14
+ import * as i2 from "@angular/common";
15
+ import * as i3 from "primeng/dialog";
16
+ import * as i4 from "primeng/api";
17
+ import * as i5 from "primeng/button";
18
+ import * as i6 from "primeng/tag";
19
+ import * as i7 from "primeng/divider";
20
+ export class ScheduleDetailComponent {
21
+ translationService;
22
+ visible = false;
23
+ schedule = null;
24
+ visibleChange = new EventEmitter();
25
+ onEdit = new EventEmitter();
26
+ onClose = new EventEmitter();
27
+ NOT_INFORMED = 'Não informado';
28
+ constructor(translationService) {
29
+ this.translationService = translationService;
30
+ }
31
+ get dialogHeader() {
32
+ return this.schedule?.name ?? 'Detalhes da Agenda';
33
+ }
34
+ closeDialog() {
35
+ this.visible = false;
36
+ this.visibleChange.emit(false);
37
+ this.onClose.emit();
38
+ }
39
+ editSchedule() {
40
+ if (this.schedule) {
41
+ this.onEdit.emit(this.schedule);
42
+ }
43
+ }
44
+ formatDate(date) {
45
+ if (!date) {
46
+ return this.NOT_INFORMED;
47
+ }
48
+ try {
49
+ const dateObj = new Date(date);
50
+ if (isNaN(dateObj.getTime())) {
51
+ return 'Data inválida';
52
+ }
53
+ return dateObj.toLocaleString('pt-BR', {
54
+ day: '2-digit',
55
+ month: '2-digit',
56
+ year: 'numeric',
57
+ hour: '2-digit',
58
+ minute: '2-digit'
59
+ });
60
+ }
61
+ catch {
62
+ return 'Data inválida';
63
+ }
64
+ }
65
+ getPriorityLabel(priority) {
66
+ if (!priority) {
67
+ return this.NOT_INFORMED;
68
+ }
69
+ const labels = {
70
+ [SchedulePriority.Low]: 'Baixa',
71
+ [SchedulePriority.Medium]: 'Média',
72
+ [SchedulePriority.High]: 'Alta',
73
+ [SchedulePriority.Critical]: 'Crítica'
74
+ };
75
+ return labels[priority] ?? priority;
76
+ }
77
+ getPrioritySeverity(priority) {
78
+ if (!priority) {
79
+ return 'info';
80
+ }
81
+ const severities = {
82
+ [SchedulePriority.Low]: 'info',
83
+ [SchedulePriority.Medium]: 'success',
84
+ [SchedulePriority.High]: 'warn',
85
+ [SchedulePriority.Critical]: 'danger'
86
+ };
87
+ return severities[priority] ?? 'info';
88
+ }
89
+ getRecurrenceLabel(recurrence) {
90
+ if (!recurrence) {
91
+ return 'Não se repete';
92
+ }
93
+ const labels = {
94
+ 'NONE': 'Não se repete',
95
+ 'DAILY': 'Diariamente',
96
+ 'WEEKLY': 'Semanalmente',
97
+ 'MONTHLY': 'Mensalmente',
98
+ 'YEARLY': 'Anualmente',
99
+ 'CUSTOM': 'Personalizado'
100
+ };
101
+ return labels[recurrence] ?? recurrence;
102
+ }
103
+ getOrganizerName() {
104
+ const organizer = this.schedule?.participants?.find((p) => p.organizer);
105
+ return organizer?.collaborator?.name ?? this.NOT_INFORMED;
106
+ }
107
+ getParticipantsCount() {
108
+ return this.schedule?.participants?.filter((p) => !p.organizer).length ?? 0;
109
+ }
110
+ getParticipantsList() {
111
+ const participants = this.schedule?.participants?.filter((p) => !p.organizer) ?? [];
112
+ if (participants.length === 0) {
113
+ return 'Nenhum participante';
114
+ }
115
+ return participants.map((p) => p.collaborator?.name ?? 'Sem nome').join(', ');
116
+ }
117
+ getConfirmationLabel(confirmation) {
118
+ if (!confirmation) {
119
+ return '';
120
+ }
121
+ if (confirmation === 'CONFIRMED') {
122
+ return this.translationService.translate('crmx.schedule.confirmed');
123
+ }
124
+ else if (confirmation === 'DECLINED') {
125
+ return this.translationService.translate('crmx.schedule.declined');
126
+ }
127
+ else {
128
+ return this.translationService.translate('crmx.schedule.pending');
129
+ }
130
+ }
131
+ getConfirmationSeverity(confirmation) {
132
+ if (confirmation === 'CONFIRMED') {
133
+ return 'success';
134
+ }
135
+ else if (confirmation === 'DECLINED') {
136
+ return 'danger';
137
+ }
138
+ else {
139
+ return 'warn';
140
+ }
141
+ }
142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleDetailComponent, deps: [{ token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component });
143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScheduleDetailComponent, isStandalone: true, selector: "s-schedule-detail", inputs: { visible: "visible", schedule: "schedule" }, outputs: { visibleChange: "visibleChange", onEdit: "onEdit", onClose: "onClose" }, ngImport: i0, template: "<p-dialog\n [(visible)]=\"visible\"\n [modal]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [styleClass]=\"'schedule-detail-dialog'\"\n [header]=\"dialogHeader\"\n (onHide)=\"closeDialog()\">\n \n <ng-template pTemplate=\"header\">\n <div class=\"dialog-header\">\n <h3>{{ dialogHeader }}</h3>\n <p-tag \n *ngIf=\"schedule?.priority\"\n [severity]=\"getPrioritySeverity(schedule?.priority)\"\n [value]=\"getPriorityLabel(schedule?.priority)\">\n </p-tag>\n </div>\n </ng-template>\n\n <div class=\"schedule-detail-content\" *ngIf=\"schedule\">\n \n <!-- Informa\u00E7\u00F5es B\u00E1sicas -->\n <div class=\"detail-section\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.basic_info' | translate }}</h4>\n \n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-calendar\"></i>\n {{ 'crmx.schedule.type' | translate }}:\n </span>\n <span class=\"detail-value\">{{ schedule.type?.name ?? ('crmx.schedule.not_informed' | translate) }}</span>\n </div>\n\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-clock\"></i>\n {{ 'crmx.schedule.when_occurs' | translate }}:\n </span>\n <span class=\"detail-value\">{{ formatDate(schedule.whenOccurs) }}</span>\n </div>\n\n <div class=\"detail-row\" *ngIf=\"schedule.duration\">\n <span class=\"detail-label\">\n <i class=\"pi pi-hourglass\"></i>\n {{ 'crmx.schedule.duration' | translate }}:\n </span>\n <span class=\"detail-value\">{{ schedule.duration }} {{ 'crmx.schedule.minutes' | translate }}</span>\n </div>\n\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-refresh\"></i>\n {{ 'crmx.schedule.recurrence' | translate }}:\n </span>\n <span class=\"detail-value\">{{ getRecurrenceLabel(schedule.recurrence) }}</span>\n </div>\n </div>\n\n <p-divider></p-divider>\n\n <!-- Descri\u00E7\u00E3o -->\n <div class=\"detail-section\" *ngIf=\"schedule.description\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.description' | translate }}</h4>\n <p class=\"description-text\">{{ schedule.description }}</p>\n </div>\n\n <p-divider *ngIf=\"schedule.description\"></p-divider>\n\n <!-- Participantes -->\n <div class=\"detail-section\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.participants' | translate }}</h4>\n \n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-user\"></i>\n {{ 'crmx.schedule.organizer' | translate }}:\n </span>\n <span class=\"detail-value\">{{ getOrganizerName() }}</span>\n </div>\n\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-users\"></i>\n {{ 'crmx.schedule.participants' | translate }} ({{ getParticipantsCount() }}):\n </span>\n </div>\n \n <div class=\"participants-list\" *ngIf=\"getParticipantsCount() > 0\">\n <div class=\"participant-item\" *ngFor=\"let participant of schedule.participants\">\n <ng-container *ngIf=\"!participant.organizer\">\n <i class=\"pi pi-user\"></i>\n <span>{{ participant.collaborator?.name ?? ('crmx.schedule.no_name' | translate) }}</span>\n <p-tag \n *ngIf=\"participant.confirmation\"\n [severity]=\"getConfirmationSeverity(participant.confirmation)\"\n [value]=\"getConfirmationLabel(participant.confirmation)\"\n styleClass=\"participant-status\">\n </p-tag>\n </ng-container>\n </div>\n </div>\n <p class=\"no-participants\" *ngIf=\"getParticipantsCount() === 0\">\n {{ 'crmx.schedule.no_participants_besides_organizer' | translate }}\n </p>\n </div>\n\n <p-divider></p-divider>\n\n <!-- Local -->\n <div class=\"detail-section\" *ngIf=\"schedule.location\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.location' | translate }}</h4>\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-map-marker\"></i>\n {{ 'crmx.schedule.address' | translate }}:\n </span>\n <span class=\"detail-value\">{{ schedule.location }}</span>\n </div>\n </div>\n\n <!-- Observa\u00E7\u00F5es -->\n <div class=\"detail-section\" *ngIf=\"schedule.observations\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.observations' | translate }}</h4>\n <p class=\"observations-text\">{{ schedule.observations }}</p>\n </div>\n\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"dialog-footer\">\n <button \n pButton \n type=\"button\" \n [label]=\"'crmx.schedule.close' | translate\" \n icon=\"pi pi-times\"\n class=\"p-button-text\"\n (click)=\"closeDialog()\">\n </button>\n <button \n pButton \n type=\"button\" \n [label]=\"'crmx.schedule.edit' | translate\" \n icon=\"pi pi-pencil\"\n (click)=\"editSchedule()\">\n </button>\n </div>\n </ng-template>\n\n</p-dialog>\n", styles: [".dialog-header{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.dialog-header h3{margin:0;font-size:1.25rem;font-weight:600;flex:1}.schedule-detail-content{padding:.5rem 0}.detail-section{margin-bottom:1rem}.detail-section .section-title{font-size:1rem;font-weight:600;margin:0 0 1rem;color:var(--text-color)}.detail-section .detail-row{display:flex;align-items:flex-start;margin-bottom:.75rem;gap:.5rem}.detail-section .detail-row .detail-label{display:flex;align-items:center;gap:.5rem;font-weight:500;color:var(--text-color-secondary);min-width:140px;flex-shrink:0}.detail-section .detail-row .detail-label i{font-size:.875rem}.detail-section .detail-row .detail-value{color:var(--text-color);flex:1}.detail-section .description-text,.detail-section .observations-text{color:var(--text-color);line-height:1.6;margin:0;white-space:pre-wrap}.detail-section .participants-list{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}.detail-section .participants-list .participant-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--surface-50);border-radius:4px}.detail-section .participants-list .participant-item i{color:var(--text-color-secondary);font-size:.875rem}.detail-section .participants-list .participant-item span{flex:1;color:var(--text-color)}.detail-section .participants-list .participant-item .participant-status{font-size:.75rem}.detail-section .no-participants{color:var(--text-color-secondary);font-style:italic;margin:.5rem 0 0}.dialog-footer{display:flex;justify-content:flex-end;gap:.5rem}::ng-deep .schedule-detail-dialog{width:600px}::ng-deep .p-dialog .p-dialog-header{padding:1.25rem}::ng-deep .p-dialog .p-dialog-content{padding:0 1.25rem 1.25rem}::ng-deep .p-dialog .p-dialog-footer{padding:1rem 1.25rem;border-top:1px solid var(--surface-border)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i6.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i7.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
144
+ }
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleDetailComponent, decorators: [{
146
+ type: Component,
147
+ args: [{ selector: 's-schedule-detail', standalone: true, imports: [
148
+ CommonModule, DialogModule, ButtonModule, TagModule,
149
+ DividerModule, TooltipModule, TranslatePipe
150
+ ], template: "<p-dialog\n [(visible)]=\"visible\"\n [modal]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [styleClass]=\"'schedule-detail-dialog'\"\n [header]=\"dialogHeader\"\n (onHide)=\"closeDialog()\">\n \n <ng-template pTemplate=\"header\">\n <div class=\"dialog-header\">\n <h3>{{ dialogHeader }}</h3>\n <p-tag \n *ngIf=\"schedule?.priority\"\n [severity]=\"getPrioritySeverity(schedule?.priority)\"\n [value]=\"getPriorityLabel(schedule?.priority)\">\n </p-tag>\n </div>\n </ng-template>\n\n <div class=\"schedule-detail-content\" *ngIf=\"schedule\">\n \n <!-- Informa\u00E7\u00F5es B\u00E1sicas -->\n <div class=\"detail-section\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.basic_info' | translate }}</h4>\n \n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-calendar\"></i>\n {{ 'crmx.schedule.type' | translate }}:\n </span>\n <span class=\"detail-value\">{{ schedule.type?.name ?? ('crmx.schedule.not_informed' | translate) }}</span>\n </div>\n\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-clock\"></i>\n {{ 'crmx.schedule.when_occurs' | translate }}:\n </span>\n <span class=\"detail-value\">{{ formatDate(schedule.whenOccurs) }}</span>\n </div>\n\n <div class=\"detail-row\" *ngIf=\"schedule.duration\">\n <span class=\"detail-label\">\n <i class=\"pi pi-hourglass\"></i>\n {{ 'crmx.schedule.duration' | translate }}:\n </span>\n <span class=\"detail-value\">{{ schedule.duration }} {{ 'crmx.schedule.minutes' | translate }}</span>\n </div>\n\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-refresh\"></i>\n {{ 'crmx.schedule.recurrence' | translate }}:\n </span>\n <span class=\"detail-value\">{{ getRecurrenceLabel(schedule.recurrence) }}</span>\n </div>\n </div>\n\n <p-divider></p-divider>\n\n <!-- Descri\u00E7\u00E3o -->\n <div class=\"detail-section\" *ngIf=\"schedule.description\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.description' | translate }}</h4>\n <p class=\"description-text\">{{ schedule.description }}</p>\n </div>\n\n <p-divider *ngIf=\"schedule.description\"></p-divider>\n\n <!-- Participantes -->\n <div class=\"detail-section\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.participants' | translate }}</h4>\n \n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-user\"></i>\n {{ 'crmx.schedule.organizer' | translate }}:\n </span>\n <span class=\"detail-value\">{{ getOrganizerName() }}</span>\n </div>\n\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-users\"></i>\n {{ 'crmx.schedule.participants' | translate }} ({{ getParticipantsCount() }}):\n </span>\n </div>\n \n <div class=\"participants-list\" *ngIf=\"getParticipantsCount() > 0\">\n <div class=\"participant-item\" *ngFor=\"let participant of schedule.participants\">\n <ng-container *ngIf=\"!participant.organizer\">\n <i class=\"pi pi-user\"></i>\n <span>{{ participant.collaborator?.name ?? ('crmx.schedule.no_name' | translate) }}</span>\n <p-tag \n *ngIf=\"participant.confirmation\"\n [severity]=\"getConfirmationSeverity(participant.confirmation)\"\n [value]=\"getConfirmationLabel(participant.confirmation)\"\n styleClass=\"participant-status\">\n </p-tag>\n </ng-container>\n </div>\n </div>\n <p class=\"no-participants\" *ngIf=\"getParticipantsCount() === 0\">\n {{ 'crmx.schedule.no_participants_besides_organizer' | translate }}\n </p>\n </div>\n\n <p-divider></p-divider>\n\n <!-- Local -->\n <div class=\"detail-section\" *ngIf=\"schedule.location\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.location' | translate }}</h4>\n <div class=\"detail-row\">\n <span class=\"detail-label\">\n <i class=\"pi pi-map-marker\"></i>\n {{ 'crmx.schedule.address' | translate }}:\n </span>\n <span class=\"detail-value\">{{ schedule.location }}</span>\n </div>\n </div>\n\n <!-- Observa\u00E7\u00F5es -->\n <div class=\"detail-section\" *ngIf=\"schedule.observations\">\n <h4 class=\"section-title\">{{ 'crmx.schedule.observations' | translate }}</h4>\n <p class=\"observations-text\">{{ schedule.observations }}</p>\n </div>\n\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"dialog-footer\">\n <button \n pButton \n type=\"button\" \n [label]=\"'crmx.schedule.close' | translate\" \n icon=\"pi pi-times\"\n class=\"p-button-text\"\n (click)=\"closeDialog()\">\n </button>\n <button \n pButton \n type=\"button\" \n [label]=\"'crmx.schedule.edit' | translate\" \n icon=\"pi pi-pencil\"\n (click)=\"editSchedule()\">\n </button>\n </div>\n </ng-template>\n\n</p-dialog>\n", styles: [".dialog-header{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.dialog-header h3{margin:0;font-size:1.25rem;font-weight:600;flex:1}.schedule-detail-content{padding:.5rem 0}.detail-section{margin-bottom:1rem}.detail-section .section-title{font-size:1rem;font-weight:600;margin:0 0 1rem;color:var(--text-color)}.detail-section .detail-row{display:flex;align-items:flex-start;margin-bottom:.75rem;gap:.5rem}.detail-section .detail-row .detail-label{display:flex;align-items:center;gap:.5rem;font-weight:500;color:var(--text-color-secondary);min-width:140px;flex-shrink:0}.detail-section .detail-row .detail-label i{font-size:.875rem}.detail-section .detail-row .detail-value{color:var(--text-color);flex:1}.detail-section .description-text,.detail-section .observations-text{color:var(--text-color);line-height:1.6;margin:0;white-space:pre-wrap}.detail-section .participants-list{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}.detail-section .participants-list .participant-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--surface-50);border-radius:4px}.detail-section .participants-list .participant-item i{color:var(--text-color-secondary);font-size:.875rem}.detail-section .participants-list .participant-item span{flex:1;color:var(--text-color)}.detail-section .participants-list .participant-item .participant-status{font-size:.75rem}.detail-section .no-participants{color:var(--text-color-secondary);font-style:italic;margin:.5rem 0 0}.dialog-footer{display:flex;justify-content:flex-end;gap:.5rem}::ng-deep .schedule-detail-dialog{width:600px}::ng-deep .p-dialog .p-dialog-header{padding:1.25rem}::ng-deep .p-dialog .p-dialog-content{padding:0 1.25rem 1.25rem}::ng-deep .p-dialog .p-dialog-footer{padding:1rem 1.25rem;border-top:1px solid var(--surface-border)}\n"] }]
151
+ }], ctorParameters: () => [{ type: i1.TranslationService }], propDecorators: { visible: [{
152
+ type: Input
153
+ }], schedule: [{
154
+ type: Input
155
+ }], visibleChange: [{
156
+ type: Output
157
+ }], onEdit: [{
158
+ type: Output
159
+ }], onClose: [{
160
+ type: Output
161
+ }] } });
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2NoZWR1bGUvY29tcG9uZW50cy9zY2hlZHVsZS1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9jb21wb25lbnRzL3NjaGVkdWxlLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBc0IsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQXNCNUQsTUFBTSxPQUFPLHVCQUF1QjtJQVVMO0lBVHBCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsUUFBUSxHQUFvQyxJQUFJLENBQUM7SUFFaEQsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7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QUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8vIFByaW1lTkdcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFRhZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFnJztcbmltcG9ydCB7IERpdmlkZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpdmlkZXInO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbi8vIENvbXBvbmVudHMgQUlcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSwgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9jb21wb25lbnRzLWFpJztcblxuLy8gTG9jYWxcbmltcG9ydCB7IFNjaGVkdWxlLCBTY2hlZHVsZVBhcnRpY2lwYW50IH0gZnJvbSAnLi4vbW9kZWxzL3NjaGVkdWxlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTY2hlZHVsZVByaW9yaXR5IH0gZnJvbSAnLi4vbW9kZWxzL3NjaGVkdWxlLmVudW1zJztcblxudHlwZSBQcmlvcml0eVNldmVyaXR5ID0gJ3N1Y2Nlc3MnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Rhbmdlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVXaXRoUGFydGljaXBhbnRzIGV4dGVuZHMgU2NoZWR1bGUge1xuICBwYXJ0aWNpcGFudHM/OiBTY2hlZHVsZVBhcnRpY2lwYW50W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIG9ic2VydmF0aW9ucz86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy1zY2hlZHVsZS1kZXRhaWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgVGFnTW9kdWxlLFxuICAgIERpdmlkZXJNb2R1bGUsIFRvb2x0aXBNb2R1bGUsIFRyYW5zbGF0ZVBpcGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjaGVkdWxlLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjaGVkdWxlLWRldGFpbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNjaGVkdWxlRGV0YWlsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzY2hlZHVsZTogU2NoZWR1bGVXaXRoUGFydGljaXBhbnRzIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBvbkVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFNjaGVkdWxlV2l0aFBhcnRpY2lwYW50cz4oKTtcbiAgQE91dHB1dCgpIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBOT1RfSU5GT1JNRUQgPSAnTsOjbyBpbmZvcm1hZG8nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UpIHt9XG5cbiAgZ2V0IGRpYWxvZ0hlYWRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNjaGVkdWxlPy5uYW1lID8/ICdEZXRhbGhlcyBkYSBBZ2VuZGEnO1xuICB9XG5cbiAgY2xvc2VEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBlZGl0U2NoZWR1bGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NoZWR1bGUpIHtcbiAgICAgIHRoaXMub25FZGl0LmVtaXQodGhpcy5zY2hlZHVsZSk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLk5PVF9JTkZPUk1FRDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgIGlmIChpc05hTihkYXRlT2JqLmdldFRpbWUoKSkpIHtcbiAgICAgICAgcmV0dXJuICdEYXRhIGludsOhbGlkYSc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZU9iai50b0xvY2FsZVN0cmluZygncHQtQlInLCB7XG4gICAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCdcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuICdEYXRhIGludsOhbGlkYSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJpb3JpdHlMYWJlbChwcmlvcml0eTogc3RyaW5nIHwgU2NoZWR1bGVQcmlvcml0eSB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFwcmlvcml0eSkge1xuICAgICAgcmV0dXJuIHRoaXMuTk9UX0lORk9STUVEO1xuICAgIH1cbiAgICBjb25zdCBsYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBbU2NoZWR1bGVQcmlvcml0eS5Mb3ddOiAnQmFpeGEnLFxuICAgICAgW1NjaGVkdWxlUHJpb3JpdHkuTWVkaXVtXTogJ03DqWRpYScsXG4gICAgICBbU2NoZWR1bGVQcmlvcml0eS5IaWdoXTogJ0FsdGEnLFxuICAgICAgW1NjaGVkdWxlUHJpb3JpdHkuQ3JpdGljYWxdOiAnQ3LDrXRpY2EnXG4gICAgfTtcbiAgICByZXR1cm4gbGFiZWxzW3ByaW9yaXR5XSA/PyBwcmlvcml0eTtcbiAgfVxuXG4gIGdldFByaW9yaXR5U2V2ZXJpdHkocHJpb3JpdHk6IHN0cmluZyB8IFNjaGVkdWxlUHJpb3JpdHkgfCB1bmRlZmluZWQpOiBQcmlvcml0eVNldmVyaXR5IHtcbiAgICBpZiAoIXByaW9yaXR5KSB7XG4gICAgICByZXR1cm4gJ2luZm8nO1xuICAgIH1cbiAgICBjb25zdCBzZXZlcml0aWVzOiBSZWNvcmQ8c3RyaW5nLCBQcmlvcml0eVNldmVyaXR5PiA9IHtcbiAgICAgIFtTY2hlZHVsZVByaW9yaXR5Lkxvd106ICdpbmZvJyxcbiAgICAgIFtTY2hlZHVsZVByaW9yaXR5Lk1lZGl1bV06ICdzdWNjZXNzJyxcbiAgICAgIFtTY2hlZHVsZVByaW9yaXR5LkhpZ2hdOiAnd2FybicsXG4gICAgICBbU2NoZWR1bGVQcmlvcml0eS5Dcml0aWNhbF06ICdkYW5nZXInXG4gICAgfTtcbiAgICByZXR1cm4gc2V2ZXJpdGllc1twcmlvcml0eV0gPz8gJ2luZm8nO1xuICB9XG5cbiAgZ2V0UmVjdXJyZW5jZUxhYmVsKHJlY3VycmVuY2U6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFyZWN1cnJlbmNlKSB7XG4gICAgICByZXR1cm4gJ07Do28gc2UgcmVwZXRlJztcbiAgICB9XG4gICAgY29uc3QgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ05PTkUnOiAnTsOjbyBzZSByZXBldGUnLFxuICAgICAgJ0RBSUxZJzogJ0RpYXJpYW1lbnRlJyxcbiAgICAgICdXRUVLTFknOiAnU2VtYW5hbG1lbnRlJyxcbiAgICAgICdNT05USExZJzogJ01lbnNhbG1lbnRlJyxcbiAgICAgICdZRUFSTFknOiAnQW51YWxtZW50ZScsXG4gICAgICAnQ1VTVE9NJzogJ1BlcnNvbmFsaXphZG8nXG4gICAgfTtcbiAgICByZXR1cm4gbGFiZWxzW3JlY3VycmVuY2VdID8/IHJlY3VycmVuY2U7XG4gIH1cblxuICBnZXRPcmdhbml6ZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3JnYW5pemVyID0gdGhpcy5zY2hlZHVsZT8ucGFydGljaXBhbnRzPy5maW5kKChwOiBTY2hlZHVsZVBhcnRpY2lwYW50KSA9PiBwLm9yZ2FuaXplcik7XG4gICAgcmV0dXJuIG9yZ2FuaXplcj8uY29sbGFib3JhdG9yPy5uYW1lID8/IHRoaXMuTk9UX0lORk9STUVEO1xuICB9XG5cbiAgZ2V0UGFydGljaXBhbnRzQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY2hlZHVsZT8ucGFydGljaXBhbnRzPy5maWx0ZXIoKHA6IFNjaGVkdWxlUGFydGljaXBhbnQpID0+ICFwLm9yZ2FuaXplcikubGVuZ3RoID8/IDA7XG4gIH1cblxuICBnZXRQYXJ0aWNpcGFudHNMaXN0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydGljaXBhbnRzID0gdGhpcy5zY2hlZHVsZT8ucGFydGljaXBhbnRzPy5maWx0ZXIoKHA6IFNjaGVkdWxlUGFydGljaXBhbnQpID0+ICFwLm9yZ2FuaXplcikgPz8gW107XG4gICAgaWYgKHBhcnRpY2lwYW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnTmVuaHVtIHBhcnRpY2lwYW50ZSc7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0aWNpcGFudHMubWFwKChwOiBTY2hlZHVsZVBhcnRpY2lwYW50KSA9PiBwLmNvbGxhYm9yYXRvcj8ubmFtZSA/PyAnU2VtIG5vbWUnKS5qb2luKCcsICcpO1xuICB9XG5cbiAgZ2V0Q29uZmlybWF0aW9uTGFiZWwoY29uZmlybWF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghY29uZmlybWF0aW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChjb25maXJtYXRpb24gPT09ICdDT05GSVJNRUQnKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKCdjcm14LnNjaGVkdWxlLmNvbmZpcm1lZCcpO1xuICAgIH0gZWxzZSBpZiAoY29uZmlybWF0aW9uID09PSAnREVDTElORUQnKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKCdjcm14LnNjaGVkdWxlLmRlY2xpbmVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2NybXguc2NoZWR1bGUucGVuZGluZycpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmZpcm1hdGlvblNldmVyaXR5KGNvbmZpcm1hdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkKTogJ3N1Y2Nlc3MnIHwgJ2RhbmdlcicgfCAnd2Fybicge1xuICAgIGlmIChjb25maXJtYXRpb24gPT09ICdDT05GSVJNRUQnKSB7XG4gICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgIH0gZWxzZSBpZiAoY29uZmlybWF0aW9uID09PSAnREVDTElORUQnKSB7XG4gICAgICByZXR1cm4gJ2Rhbmdlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnd2Fybic7XG4gICAgfVxuICB9XG59XG4iLCI8cC1kaWFsb2dcbiAgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcbiAgW21vZGFsXT1cInRydWVcIlxuICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgW3Jlc2l6YWJsZV09XCJmYWxzZVwiXG4gIFtzdHlsZUNsYXNzXT1cIidzY2hlZHVsZS1kZXRhaWwtZGlhbG9nJ1wiXG4gIFtoZWFkZXJdPVwiZGlhbG9nSGVhZGVyXCJcbiAgKG9uSGlkZSk9XCJjbG9zZURpYWxvZygpXCI+XG4gIFxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cbiAgICAgIDxoMz57eyBkaWFsb2dIZWFkZXIgfX08L2gzPlxuICAgICAgPHAtdGFnIFxuICAgICAgICAqbmdJZj1cInNjaGVkdWxlPy5wcmlvcml0eVwiXG4gICAgICAgIFtzZXZlcml0eV09XCJnZXRQcmlvcml0eVNldmVyaXR5KHNjaGVkdWxlPy5wcmlvcml0eSlcIlxuICAgICAgICBbdmFsdWVdPVwiZ2V0UHJpb3JpdHlMYWJlbChzY2hlZHVsZT8ucHJpb3JpdHkpXCI+XG4gICAgICA8L3AtdGFnPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxkaXYgY2xhc3M9XCJzY2hlZHVsZS1kZXRhaWwtY29udGVudFwiICpuZ0lmPVwic2NoZWR1bGVcIj5cbiAgICBcbiAgICA8IS0tIEluZm9ybWHDp8O1ZXMgQsOhc2ljYXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImRldGFpbC1zZWN0aW9uXCI+XG4gICAgICA8aDQgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+e3sgJ2NybXguc2NoZWR1bGUuYmFzaWNfaW5mbycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2FsZW5kYXJcIj48L2k+XG4gICAgICAgICAge3sgJ2NybXguc2NoZWR1bGUudHlwZScgfCB0cmFuc2xhdGUgfX06XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBzY2hlZHVsZS50eXBlPy5uYW1lID8/ICgnY3JteC5zY2hlZHVsZS5ub3RfaW5mb3JtZWQnIHwgdHJhbnNsYXRlKSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2xvY2tcIj48L2k+XG4gICAgICAgICAge3sgJ2NybXguc2NoZWR1bGUud2hlbl9vY2N1cnMnIHwgdHJhbnNsYXRlIH19OlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgZm9ybWF0RGF0ZShzY2hlZHVsZS53aGVuT2NjdXJzKSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiICpuZ0lmPVwic2NoZWR1bGUuZHVyYXRpb25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWhvdXJnbGFzc1wiPjwvaT5cbiAgICAgICAgICB7eyAnY3JteC5zY2hlZHVsZS5kdXJhdGlvbicgfCB0cmFuc2xhdGUgfX06XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBzY2hlZHVsZS5kdXJhdGlvbiB9fSB7eyAnY3JteC5zY2hlZHVsZS5taW51dGVzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktcmVmcmVzaFwiPjwvaT5cbiAgICAgICAgICB7eyAnY3JteC5zY2hlZHVsZS5yZWN1cnJlbmNlJyB8IHRyYW5zbGF0ZSB9fTpcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGdldFJlY3VycmVuY2VMYWJlbChzY2hlZHVsZS5yZWN1cnJlbmNlKSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHAtZGl2aWRlcj48L3AtZGl2aWRlcj5cblxuICAgIDwhLS0gRGVzY3Jpw6fDo28gLS0+XG4gICAgPGRpdiBjbGFzcz1cImRldGFpbC1zZWN0aW9uXCIgKm5nSWY9XCJzY2hlZHVsZS5kZXNjcmlwdGlvblwiPlxuICAgICAgPGg0IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPnt7ICdjcm14LnNjaGVkdWxlLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gICAgICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uLXRleHRcIj57eyBzY2hlZHVsZS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDxwLWRpdmlkZXIgKm5nSWY9XCJzY2hlZHVsZS5kZXNjcmlwdGlvblwiPjwvcC1kaXZpZGVyPlxuXG4gICAgPCEtLSBQYXJ0aWNpcGFudGVzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtc2VjdGlvblwiPlxuICAgICAgPGg0IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPnt7ICdjcm14LnNjaGVkdWxlLnBhcnRpY2lwYW50cycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXNlclwiPjwvaT5cbiAgICAgICAgICB7eyAnY3JteC5zY2hlZHVsZS5vcmdhbml6ZXInIHwgdHJhbnNsYXRlIH19OlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgZ2V0T3JnYW5pemVyTmFtZSgpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS11c2Vyc1wiPjwvaT5cbiAgICAgICAgICB7eyAnY3JteC5zY2hlZHVsZS5wYXJ0aWNpcGFudHMnIHwgdHJhbnNsYXRlIH19ICh7eyBnZXRQYXJ0aWNpcGFudHNDb3VudCgpIH19KTpcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgY2xhc3M9XCJwYXJ0aWNpcGFudHMtbGlzdFwiICpuZ0lmPVwiZ2V0UGFydGljaXBhbnRzQ291bnQoKSA+IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhcnRpY2lwYW50LWl0ZW1cIiAqbmdGb3I9XCJsZXQgcGFydGljaXBhbnQgb2Ygc2NoZWR1bGUucGFydGljaXBhbnRzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwYXJ0aWNpcGFudC5vcmdhbml6ZXJcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXNlclwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPnt7IHBhcnRpY2lwYW50LmNvbGxhYm9yYXRvcj8ubmFtZSA/PyAoJ2NybXguc2NoZWR1bGUubm9fbmFtZScgfCB0cmFuc2xhdGUpIH19PC9zcGFuPlxuICAgICAgICAgICAgPHAtdGFnIFxuICAgICAgICAgICAgICAqbmdJZj1cInBhcnRpY2lwYW50LmNvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJnZXRDb25maXJtYXRpb25TZXZlcml0eShwYXJ0aWNpcGFudC5jb25maXJtYXRpb24pXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldENvbmZpcm1hdGlvbkxhYmVsKHBhcnRpY2lwYW50LmNvbmZpcm1hdGlvbilcIlxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicGFydGljaXBhbnQtc3RhdHVzXCI+XG4gICAgICAgICAgICA8L3AtdGFnPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgY2xhc3M9XCJuby1wYXJ0aWNpcGFudHNcIiAqbmdJZj1cImdldFBhcnRpY2lwYW50c0NvdW50KCkgPT09IDBcIj5cbiAgICAgICAge3sgJ2NybXguc2NoZWR1bGUubm9fcGFydGljaXBhbnRzX2Jlc2lkZXNfb3JnYW5pemVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPHAtZGl2aWRlcj48L3AtZGl2aWRlcj5cblxuICAgIDwhLS0gTG9jYWwgLS0+XG4gICAgPGRpdiBjbGFzcz1cImRldGFpbC1zZWN0aW9uXCIgKm5nSWY9XCJzY2hlZHVsZS5sb2NhdGlvblwiPlxuICAgICAgPGg0IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPnt7ICdjcm14LnNjaGVkdWxlLmxvY2F0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktbWFwLW1hcmtlclwiPjwvaT5cbiAgICAgICAgICB7eyAnY3JteC5zY2hlZHVsZS5hZGRyZXNzJyB8IHRyYW5zbGF0ZSB9fTpcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHNjaGVkdWxlLmxvY2F0aW9uIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE9ic2VydmHDp8O1ZXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImRldGFpbC1zZWN0aW9uXCIgKm5nSWY9XCJzY2hlZHVsZS5vYnNlcnZhdGlvbnNcIj5cbiAgICAgIDxoNCBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj57eyAnY3JteC5zY2hlZHVsZS5vYnNlcnZhdGlvbnMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICAgIDxwIGNsYXNzPVwib2JzZXJ2YXRpb25zLXRleHRcIj57eyBzY2hlZHVsZS5vYnNlcnZhdGlvbnMgfX08L3A+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uIFxuICAgICAgICBwQnV0dG9uIFxuICAgICAgICB0eXBlPVwiYnV0dG9uXCIgXG4gICAgICAgIFtsYWJlbF09XCInY3JteC5zY2hlZHVsZS5jbG9zZScgfCB0cmFuc2xhdGVcIiBcbiAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcbiAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgICAgcEJ1dHRvbiBcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiIFxuICAgICAgICBbbGFiZWxdPVwiJ2NybXguc2NoZWR1bGUuZWRpdCcgfCB0cmFuc2xhdGVcIiBcbiAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiXG4gICAgICAgIChjbGljayk9XCJlZGl0U2NoZWR1bGUoKVwiPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvcC1kaWFsb2c+XG4iXX0=