@naniteninja/dashboard-components-lib 1.0.3 → 1.0.4

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 (309) hide show
  1. package/esm2022/lib/components/auto-delegation/animations.mjs +20 -0
  2. package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
  3. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
  4. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
  5. package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
  6. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
  7. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
  8. package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
  9. package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
  10. package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +120 -0
  11. package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +23 -0
  12. package/esm2022/lib/components/calendar/agenda/enums/agenda-item-type.enum.mjs +6 -0
  13. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
  14. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
  15. package/esm2022/lib/components/calendar/agenda/types/agenda-item.type.mjs +2 -0
  16. package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
  17. package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
  18. package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
  19. package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
  20. package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
  21. package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
  22. package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
  23. package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
  24. package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
  25. package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
  26. package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
  27. package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
  28. package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
  29. package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
  30. package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
  31. package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
  32. package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
  33. package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
  34. package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
  35. package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
  36. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
  37. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
  38. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
  39. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
  40. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
  41. package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
  42. package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
  43. package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
  44. package/esm2022/lib/components/chat/chat.component.mjs +308 -0
  45. package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
  46. package/esm2022/lib/components/chat/chat.service.mjs +63 -0
  47. package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
  48. package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
  49. package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
  50. package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
  51. package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
  52. package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
  53. package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
  54. package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
  55. package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
  56. package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
  57. package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
  58. package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
  59. package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
  60. package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
  61. package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
  62. package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
  63. package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
  64. package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
  65. package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
  66. package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
  67. package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
  68. package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
  69. package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
  70. package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
  71. package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
  72. package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
  73. package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
  74. package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
  75. package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
  76. package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
  77. package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
  78. package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
  79. package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
  80. package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
  81. package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
  82. package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
  83. package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
  84. package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
  85. package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
  86. package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
  87. package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
  88. package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
  89. package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
  90. package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
  91. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
  92. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
  93. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
  94. package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
  95. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
  96. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
  97. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
  98. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
  99. package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +173 -0
  100. package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
  101. package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
  102. package/esm2022/lib/components/lib-client-dashboard/interfaces/ads.interface.mjs +2 -0
  103. package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
  104. package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
  105. package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
  106. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
  107. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
  108. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
  109. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
  110. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
  111. package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
  112. package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
  113. package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
  114. package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
  115. package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
  116. package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
  117. package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
  118. package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
  119. package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
  120. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
  121. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
  122. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
  123. package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
  124. package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
  125. package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
  126. package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
  127. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
  128. package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
  129. package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
  130. package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
  131. package/esm2022/lib/enums/direction.enum.mjs +6 -0
  132. package/esm2022/lib/enums/form-field-type.mjs +30 -0
  133. package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
  134. package/esm2022/lib/enums/status-types.mjs +8 -0
  135. package/esm2022/lib/model/select-option-template.mjs +2 -0
  136. package/esm2022/lib/operations/operations.mjs +19 -0
  137. package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
  138. package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
  139. package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
  140. package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
  141. package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
  142. package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
  143. package/esm2022/lib/pipes/initials/initials.pipe.mjs +25 -0
  144. package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
  145. package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
  146. package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
  147. package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
  148. package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
  149. package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
  150. package/esm2022/lib/shared/shared.module.mjs +23 -0
  151. package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
  152. package/esm2022/public-api.mjs +123 -0
  153. package/fesm2022/naniteninja-dashboard-components-lib.mjs +202 -178
  154. package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -1
  155. package/index.d.ts +3 -1669
  156. package/lib/components/auto-delegation/animations.d.ts +1 -0
  157. package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
  158. package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
  159. package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
  160. package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
  161. package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
  162. package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
  163. package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
  164. package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
  165. package/lib/components/calendar/agenda/agenda.component.d.ts +27 -0
  166. package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
  167. package/lib/components/calendar/agenda/enums/agenda-item-type.enum.d.ts +4 -0
  168. package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
  169. package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
  170. package/lib/components/calendar/agenda/types/agenda-item.type.d.ts +7 -0
  171. package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
  172. package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
  173. package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
  174. package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
  175. package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
  176. package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
  177. package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
  178. package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
  179. package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
  180. package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
  181. package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
  182. package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
  183. package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
  184. package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
  185. package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
  186. package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
  187. package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
  188. package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
  189. package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
  190. package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
  191. package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
  192. package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
  193. package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
  194. package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
  195. package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
  196. package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
  197. package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
  198. package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
  199. package/lib/components/chat/chat.component.d.ts +70 -0
  200. package/lib/components/chat/chat.component.module.d.ts +22 -0
  201. package/lib/components/chat/chat.service.d.ts +15 -0
  202. package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
  203. package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
  204. package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
  205. package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
  206. package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
  207. package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
  208. package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
  209. package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
  210. package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
  211. package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
  212. package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
  213. package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
  214. package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
  215. package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
  216. package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
  217. package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
  218. package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
  219. package/lib/components/client-home/client-home.component.d.ts +44 -0
  220. package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
  221. package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
  222. package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
  223. package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
  224. package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
  225. package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
  226. package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
  227. package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
  228. package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
  229. package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
  230. package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
  231. package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
  232. package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
  233. package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
  234. package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
  235. package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
  236. package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
  237. package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
  238. package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
  239. package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
  240. package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
  241. package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
  242. package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
  243. package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
  244. package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
  245. package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
  246. package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
  247. package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
  248. package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
  249. package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
  250. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
  251. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
  252. package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
  253. package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
  254. package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +75 -0
  255. package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
  256. package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
  257. package/lib/components/lib-client-dashboard/interfaces/ads.interface.d.ts +14 -0
  258. package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
  259. package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
  260. package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
  261. package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
  262. package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
  263. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
  264. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
  265. package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
  266. package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
  267. package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
  268. package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
  269. package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
  270. package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
  271. package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
  272. package/lib/components/profile-card/profile-card.component.d.ts +11 -0
  273. package/lib/components/profile-card/profile-card.module.d.ts +9 -0
  274. package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
  275. package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
  276. package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
  277. package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
  278. package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
  279. package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
  280. package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
  281. package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
  282. package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
  283. package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
  284. package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
  285. package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
  286. package/lib/enums/direction.enum.d.ts +4 -0
  287. package/lib/enums/form-field-type.d.ts +28 -0
  288. package/lib/enums/local-storage-keys.enum.d.ts +3 -0
  289. package/lib/enums/status-types.d.ts +6 -0
  290. package/lib/model/select-option-template.d.ts +5 -0
  291. package/lib/operations/operations.d.ts +19 -0
  292. package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
  293. package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
  294. package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
  295. package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
  296. package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
  297. package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
  298. package/lib/pipes/initials/initials.pipe.d.ts +7 -0
  299. package/lib/pipes/round/round.pipe.d.ts +7 -0
  300. package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
  301. package/lib/services/abstract-cache.service.d.ts +9 -0
  302. package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
  303. package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
  304. package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
  305. package/lib/shared/shared.module.d.ts +13 -0
  306. package/naniteninja-dashboard-components-lib-1.0.4.tgz +0 -0
  307. package/package.json +29 -25
  308. package/public-api.d.ts +122 -0
  309. package/src/lib/shared-styles/common/theme.scss +3 -3
@@ -0,0 +1,235 @@
1
+ import { ChangeDetectionStrategy, Component, inject, Input, ViewChild } from '@angular/core';
2
+ import * as d3 from 'd3';
3
+ import { SharedModule } from '../../shared/shared.module';
4
+ import { InitialsPipe } from '../../pipes/initials/initials.pipe';
5
+ import { AlertStatusFields } from '../lib-client-dashboard/enums/alert-status-fields.enum';
6
+ import { circleData, defsF, defsLG, defsRG } from './lookup/svg-config.lookup';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../shared/shared/alert-popup/alert-popup.component";
9
+ export class SpiderChartComponent {
10
+ constructor(cdr) {
11
+ this.cdr = cdr;
12
+ this.datasets = [];
13
+ this.polygon_colors = [];
14
+ this.showChartInfo = true;
15
+ this.alertStatusFields = AlertStatusFields;
16
+ this.titleAlertPopup = '';
17
+ this.descriptionAlertPopup = '';
18
+ this.isAlertPopupClosing = false;
19
+ this.timeStateAlertPopup = 0;
20
+ this.defsRG = [];
21
+ this.defsF = [];
22
+ this.defsLG = [];
23
+ this.circleData = [];
24
+ this.initialsPipe = inject(InitialsPipe);
25
+ }
26
+ ngOnChanges(changes) {
27
+ if ((changes['datasets'] || changes['config']) && this.svg) {
28
+ if (this.datasets.length && this.config) {
29
+ this.createRadarChart();
30
+ }
31
+ else if (changes['config']?.currentValue?.['fullScreen'] !== changes['config']?.previousValue?.['fullScreen']) {
32
+ this.createRadarChart();
33
+ }
34
+ }
35
+ }
36
+ ngAfterViewInit() {
37
+ this.defsRG = defsRG;
38
+ this.defsF = defsF;
39
+ this.defsLG = defsLG;
40
+ this.circleData = circleData;
41
+ this.initializeChart();
42
+ }
43
+ ngOnDestroy() {
44
+ if (this.svg) {
45
+ this.svg.remove();
46
+ this.svg = null;
47
+ }
48
+ }
49
+ onClosedAlert(data) {
50
+ console.log(data);
51
+ }
52
+ initializeChart() {
53
+ this.svg = this.createSvgObject();
54
+ const defsGroup = this.svg.append('g');
55
+ this.defsLG.forEach((defData) => {
56
+ this.createDefsAndLinearGradient(defsGroup, defData);
57
+ });
58
+ this.defsF.forEach((defData) => {
59
+ this.createDefsAndFilter(defsGroup, defData);
60
+ });
61
+ this.defsRG.forEach((defData) => {
62
+ this.createDefsAndRadialGradient(defsGroup, defData);
63
+ });
64
+ const circleGroup = this.svg.append('g');
65
+ this.createCircle(circleGroup, this.circleData);
66
+ if (!this.config)
67
+ return;
68
+ this.createRadarChart();
69
+ }
70
+ createSvgObject() {
71
+ return d3.select(this.d3Chart?.nativeElement).append('svg').attr('class', 'svg').attr('height', 300).attr('width', 300);
72
+ }
73
+ createLine(group, data, MaxValue, angleSlice, rScale) {
74
+ group.selectAll('line').remove();
75
+ return group
76
+ .selectAll('line')
77
+ .data(data)
78
+ .enter()
79
+ .append('g')
80
+ .append('line')
81
+ .attr('class', 'line')
82
+ .attr('class', 'line-group')
83
+ .attr('x1', 0)
84
+ .attr('y1', 0)
85
+ .attr('x2', (_d, i) => rScale(MaxValue * 1.4) * Math.cos(angleSlice * i + 0.01 - Math.PI / 2))
86
+ .attr('y2', (_d, i) => rScale(MaxValue * 1.4) * Math.sin(angleSlice * i + 0.01 - Math.PI / 2))
87
+ .attr('stroke', 'url(#needleRadiant)')
88
+ .attr('transform', 'translate(150,150)');
89
+ }
90
+ createCircle(group, data) {
91
+ data?.forEach((datum) => {
92
+ const g = group.append('circle');
93
+ Object.keys(datum).forEach((key) => {
94
+ g.attr(key, datum[key]);
95
+ });
96
+ });
97
+ return group;
98
+ }
99
+ createText(group, data, rScale, MaxValue, angleSlice) {
100
+ const toolTip = d3.select('#tooltip');
101
+ group.selectAll('text').remove();
102
+ const isFullScreenActive = this.config.fullScreen;
103
+ // TODO left based on position of modal
104
+ const left = isFullScreenActive ? 0 : 0;
105
+ const top = isFullScreenActive ? -80 : -220;
106
+ return group
107
+ .selectAll('text')
108
+ .data(data)
109
+ .enter()
110
+ .append('text')
111
+ .text((d) => this.initialsPipe.transform(d.text))
112
+ .attr('x', (_d, i) => {
113
+ const x2 = rScale(MaxValue * 1.2) * Math.cos(angleSlice * i + 0.1 - Math.PI / 2);
114
+ return x2;
115
+ })
116
+ .attr('y', (_d, i) => {
117
+ const y2 = rScale(MaxValue * 1.2) * Math.sin(angleSlice * i + 0.1 - Math.PI / 2);
118
+ return y2;
119
+ })
120
+ .attr('dy', '0.35em')
121
+ .attr('transform', 'translate(150,150)')
122
+ .style('fill', '#FE3C72')
123
+ .style('text-shadow', '1px 2px 1px #000')
124
+ .attr('class', 'line-label')
125
+ .on('pointerdown', (event, d) => {
126
+ const { titleAlertPopup, descriptionAlertPopup } = d;
127
+ this.titleAlertPopup = titleAlertPopup;
128
+ this.descriptionAlertPopup = descriptionAlertPopup;
129
+ this.isAlertPopupClosing = false;
130
+ this.timeStateAlertPopup = new Date().getTime();
131
+ this.numberAlertPopup = Math.floor(Math.random() * 10);
132
+ this.cdr.detectChanges();
133
+ toolTip
134
+ .style('display', 'block')
135
+ .style('left', event.pageX + left + 'px')
136
+ .style('top', event.pageY + top < 0 ? 0 : event.pageY + top + 'px');
137
+ })
138
+ .on('pointerup', (event, d) => { });
139
+ }
140
+ createPolygons(group, datasets, rScale, angleSlice) {
141
+ group.selectAll('polygon').remove();
142
+ group.selectAll('.radarCircle').remove();
143
+ const polygonPoints = (data) => {
144
+ const points = data?.keys?.map((key, i) => {
145
+ const r = rScale(data?.values[key] ?? 1 * 1);
146
+ const x = r * Math.cos(angleSlice * i + 0.01 - Math.PI / 2);
147
+ const y = r * Math.sin(angleSlice * i + 0.01 - Math.PI / 2);
148
+ return `${x},${y}`;
149
+ });
150
+ return points.join(' ');
151
+ };
152
+ group
153
+ .selectAll('polygon')
154
+ .data(datasets)
155
+ .enter()
156
+ .append('polygon')
157
+ .attr('points', (d) => polygonPoints(d ?? {}))
158
+ .attr('stroke', (_, i) => _.polygon_color?.value)
159
+ .attr('transform', 'translate(150,150)')
160
+ .attr('fill', (_, i) => `url(${this.polygon_colors?.[i]?.label})`);
161
+ datasets.forEach((data, j) => {
162
+ const allValuesAreZero = data.keys.every((key) => data.values[key] === 0);
163
+ if (!allValuesAreZero) {
164
+ group
165
+ .append('g')
166
+ .selectAll('circle')
167
+ .data(data.keys)
168
+ .enter()
169
+ .append('circle')
170
+ .attr('class', 'radarCircle')
171
+ .attr('r', 3)
172
+ .attr('cx', (key, i) => rScale(data.values[key] ?? 0) * Math.cos(angleSlice * i - Math.PI / 2))
173
+ .attr('cy', (key, i) => rScale(data.values[key] ?? 0) * Math.sin(angleSlice * i - Math.PI / 2))
174
+ .style('fill', 'white')
175
+ .style('stroke', () => this.polygon_colors?.[j]?.value) // Using stroke colors from the strokeColors array
176
+ .attr('transform', 'translate(150,150)')
177
+ .attr('filter', 'blur(1px)')
178
+ .style('stroke-width', 2)
179
+ .style('fill-opacity', 0.8);
180
+ }
181
+ });
182
+ }
183
+ createDefsAndLinearGradient(group, data) {
184
+ const defs = group.append('defs').append('linearGradient').attr('id', data.id).attr('x1', data.x1).attr('y1', data.y1).attr('x2', data.x2).attr('y2', data.y2);
185
+ data.stopTags.forEach((elem) => {
186
+ defs.append('stop').attr('offset', elem.offset).attr('style', elem.style);
187
+ });
188
+ }
189
+ createDefsAndFilter(group, data) {
190
+ const defs = group.append('defs').append('filter').attr('id', data.id).attr('x', data.x).attr('y', data.y).attr('height', data.height).attr('width', data.width);
191
+ data.feGaussianTags.forEach((elem) => {
192
+ defs.append('feGaussianBlur').attr('in', elem.in).attr('stdDeviation', elem.stdDeviation);
193
+ });
194
+ }
195
+ createDefsAndRadialGradient(group, data) {
196
+ const defs = group.append('defs').append('radialGradient').attr('id', data.id).attr('cx', data.cy).attr('cy', data.cx).attr('r', data.r);
197
+ data.stopTags.forEach((elem) => {
198
+ defs.append('stop').attr('offset', elem.offset).attr('style', elem.style);
199
+ });
200
+ }
201
+ createRadarChart() {
202
+ const { maxValue, datasets, attributes } = this.config;
203
+ const allAxis = [...new Set(attributes)].map((i) => i);
204
+ const total = allAxis.length;
205
+ const angleSlice = (Math.PI * 2) / total;
206
+ let MaxValue = datasets.length > 0
207
+ ? Math.max(...datasets.reduce((a, i) => {
208
+ return [...a, ...Object.values(i.values)];
209
+ }, []))
210
+ : maxValue;
211
+ MaxValue = MaxValue > 0 ? MaxValue : 25;
212
+ const rScale = d3.scaleLinear().range([0, 100]).domain([0, MaxValue]);
213
+ this.createLine(this.svg, allAxis, MaxValue, angleSlice, rScale);
214
+ this.createText(this.svg, allAxis, rScale, MaxValue, angleSlice);
215
+ this.createPolygons(this.svg, datasets, rScale, angleSlice);
216
+ }
217
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SpiderChartComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
218
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SpiderChartComponent, isStandalone: true, selector: "lib-spider-chart", inputs: { datasets: "datasets", config: "config", polygon_colors: "polygon_colors", showChartInfo: "showChartInfo" }, viewQueries: [{ propertyName: "d3Chart", first: true, predicate: ["D3Chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"tooltip\">\n <lib-alert-popup [title]=\"titleAlertPopup\" [description]=\"descriptionAlertPopup\" [timeState]=\"timeStateAlertPopup\" [number]=\"numberAlertPopup\"></lib-alert-popup>\n</div>\n\n<div class=\"container\">\n <div class=\"d3-container\">\n <div class=\"d3-chart\" #D3Chart></div>\n @if (showChartInfo) {\n <div class=\"chartInfo\">\n @if (datasets.length > 0) {\n <div class=\"datachart\">\n @for (dataset of datasets; let j = $index; track dataset) {\n <div class=\"legend-item\">\n <div [style.border]=\"'5px solid ' + polygon_colors?.[j]?.value\" [style.boxShadow]=\"'0px 0px 12px ' + polygon_colors?.[j]?.value\" class=\"legend-color\"></div>\n {{ dataset.title }}\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".align-chart{display:flex;justify-content:center;align-items:center}.d3-container{width:100%;position:relative;min-height:300px;display:flex;align-items:center;transition:all .5s ease}.d3-chart{width:100%;height:clamp(300px,30vh,400px);display:flex;justify-content:center;align-items:center;transition:all .5s ease}.chartInfo{margin-top:20px}.datachart{display:flex;flex-wrap:wrap;gap:10px}.legend-item{display:flex;align-items:center;gap:8px;font-size:14px;padding:4px}.legend-color{width:15px;height:15px;border-radius:50%;background-color:#fff}#tooltip{position:absolute;display:none;z-index:1000}\n"], dependencies: [{ kind: "ngmodule", type: SharedModule }, { kind: "component", type: i1.AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
219
+ }
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SpiderChartComponent, decorators: [{
221
+ type: Component,
222
+ args: [{ selector: 'lib-spider-chart', standalone: true, imports: [SharedModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"tooltip\">\n <lib-alert-popup [title]=\"titleAlertPopup\" [description]=\"descriptionAlertPopup\" [timeState]=\"timeStateAlertPopup\" [number]=\"numberAlertPopup\"></lib-alert-popup>\n</div>\n\n<div class=\"container\">\n <div class=\"d3-container\">\n <div class=\"d3-chart\" #D3Chart></div>\n @if (showChartInfo) {\n <div class=\"chartInfo\">\n @if (datasets.length > 0) {\n <div class=\"datachart\">\n @for (dataset of datasets; let j = $index; track dataset) {\n <div class=\"legend-item\">\n <div [style.border]=\"'5px solid ' + polygon_colors?.[j]?.value\" [style.boxShadow]=\"'0px 0px 12px ' + polygon_colors?.[j]?.value\" class=\"legend-color\"></div>\n {{ dataset.title }}\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".align-chart{display:flex;justify-content:center;align-items:center}.d3-container{width:100%;position:relative;min-height:300px;display:flex;align-items:center;transition:all .5s ease}.d3-chart{width:100%;height:clamp(300px,30vh,400px);display:flex;justify-content:center;align-items:center;transition:all .5s ease}.chartInfo{margin-top:20px}.datachart{display:flex;flex-wrap:wrap;gap:10px}.legend-item{display:flex;align-items:center;gap:8px;font-size:14px;padding:4px}.legend-color{width:15px;height:15px;border-radius:50%;background-color:#fff}#tooltip{position:absolute;display:none;z-index:1000}\n"] }]
223
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { d3Chart: [{
224
+ type: ViewChild,
225
+ args: ['D3Chart']
226
+ }], datasets: [{
227
+ type: Input
228
+ }], config: [{
229
+ type: Input
230
+ }], polygon_colors: [{
231
+ type: Input
232
+ }], showChartInfo: [{
233
+ type: Input
234
+ }] } });
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpZGVyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc3BpZGVyLWNoYXJ0L3NwaWRlci1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NwaWRlci1jaGFydC9zcGlkZXItY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQXVDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBUzNGLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBVS9FLE1BQU0sT0FBTyxvQkFBb0I7SUFxQi9CLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkJqQyxhQUFRLEdBQWUsRUFBRSxDQUFDO1FBRTFCLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUNyQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUVoQyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUN0QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQiwwQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDM0Isd0JBQW1C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QUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQzsrR0E1UFUsb0JBQW9CO21HQUFwQixvQkFBb0IsMlRDdkJqQyxtM0JBdUJBLG1wQkRIWSxZQUFZOzs0RkFHWCxvQkFBb0I7a0JBUmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNO3NGQUd6QixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ1gsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEluaXRpYWxzUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2luaXRpYWxzL2luaXRpYWxzLnBpcGUnO1xuaW1wb3J0IHsgQWxlcnRTdGF0dXNGaWVsZHMgfSBmcm9tICcuLi9saWItY2xpZW50LWRhc2hib2FyZC9lbnVtcy9hbGVydC1zdGF0dXMtZmllbGRzLmVudW0nO1xuaW1wb3J0IHsgSUNpcmNsZURhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMvY2hhcnQtZGF0YS1jaXJjbGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElEZWZzRiB9IGZyb20gJy4vaW50ZXJmYWNlcy9jaGFydC1kYXRhLWRlZnMtZi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURlZnNMRyB9IGZyb20gJy4vaW50ZXJmYWNlcy9jaGFydC1kYXRhLWRlZnMtbGcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElEZWZzUkcgfSBmcm9tICcuL2ludGVyZmFjZXMvY2hhcnQtZGF0YS1kZWZzLXJnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJU3BpZGVyQ2hhcnRDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRGF0YXNldCB9IGZyb20gJy4vaW50ZXJmYWNlcy9kYXRhc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUG9seWdvbkNvbG9yIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvbHlnb24tY29sb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7IElTcGlkZXJDaGFydEF0dHJpYnV0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9zcGlkZXItY2hhcnQtYXR0cmlidXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjaXJjbGVEYXRhLCBkZWZzRiwgZGVmc0xHLCBkZWZzUkcgfSBmcm9tICcuL2xvb2t1cC9zdmctY29uZmlnLmxvb2t1cCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zcGlkZXItY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3BpZGVyLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3NwaWRlci1jaGFydC5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtTaGFyZWRNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU3BpZGVyQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ0QzQ2hhcnQnKSBkM0NoYXJ0OiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSBkYXRhc2V0czogSURhdGFzZXRbXSA9IFtdO1xuICBASW5wdXQoKSBjb25maWc6IElTcGlkZXJDaGFydENvbmZpZztcbiAgQElucHV0KCkgcG9seWdvbl9jb2xvcnM6IElQb2x5Z29uQ29sb3JbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Q2hhcnRJbmZvOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgYWxlcnRTdGF0dXNGaWVsZHMgPSBBbGVydFN0YXR1c0ZpZWxkcztcbiAgcHVibGljIHRpdGxlQWxlcnRQb3B1cCA9ICcnO1xuICBwdWJsaWMgZGVzY3JpcHRpb25BbGVydFBvcHVwID0gJyc7XG4gIHB1YmxpYyBpc0FsZXJ0UG9wdXBDbG9zaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0aW1lU3RhdGVBbGVydFBvcHVwID0gMDtcbiAgcHVibGljIG51bWJlckFsZXJ0UG9wdXA6IG51bWJlcjtcblxuICBwdWJsaWMgc3ZnOiBkMy5TZWxlY3Rpb248U1ZHU1ZHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+O1xuICBwdWJsaWMgZGVmc1JHOiBJRGVmc1JHW10gPSBbXTtcbiAgcHVibGljIGRlZnNGOiBJRGVmc0ZbXSA9IFtdO1xuICBwdWJsaWMgZGVmc0xHOiBJRGVmc0xHW10gPSBbXTtcbiAgcHVibGljIGNpcmNsZURhdGE6IElDaXJjbGVEYXRhW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IGluaXRpYWxzUGlwZTogSW5pdGlhbHNQaXBlID0gaW5qZWN0KEluaXRpYWxzUGlwZSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoKGNoYW5nZXNbJ2RhdGFzZXRzJ10gfHwgY2hhbmdlc1snY29uZmlnJ10pICYmIHRoaXMuc3ZnKSB7XG4gICAgICBpZiAodGhpcy5kYXRhc2V0cy5sZW5ndGggJiYgdGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVSYWRhckNoYXJ0KCk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ2NvbmZpZyddPy5jdXJyZW50VmFsdWU/LlsnZnVsbFNjcmVlbiddICE9PSBjaGFuZ2VzWydjb25maWcnXT8ucHJldmlvdXNWYWx1ZT8uWydmdWxsU2NyZWVuJ10pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVSYWRhckNoYXJ0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGVmc1JHID0gZGVmc1JHO1xuICAgIHRoaXMuZGVmc0YgPSBkZWZzRjtcbiAgICB0aGlzLmRlZnNMRyA9IGRlZnNMRztcbiAgICB0aGlzLmNpcmNsZURhdGEgPSBjaXJjbGVEYXRhO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNoYXJ0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdmcpIHtcbiAgICAgIHRoaXMuc3ZnLnJlbW92ZSgpO1xuICAgICAgdGhpcy5zdmcgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlZEFsZXJ0KGRhdGE6IHsgZXZlbnQ6IGJvb2xlYW47IGZpZWxkOiBBbGVydFN0YXR1c0ZpZWxkcyB9KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDaGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnN2ZyA9IHRoaXMuY3JlYXRlU3ZnT2JqZWN0KCk7XG4gICAgY29uc3QgZGVmc0dyb3VwID0gdGhpcy5zdmcuYXBwZW5kKCdnJyk7XG5cbiAgICB0aGlzLmRlZnNMRy5mb3JFYWNoKChkZWZEYXRhKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZURlZnNBbmRMaW5lYXJHcmFkaWVudChkZWZzR3JvdXAsIGRlZkRhdGEpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kZWZzRi5mb3JFYWNoKChkZWZEYXRhKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZURlZnNBbmRGaWx0ZXIoZGVmc0dyb3VwLCBkZWZEYXRhKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVmc1JHLmZvckVhY2goKGRlZkRhdGEpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlRGVmc0FuZFJhZGlhbEdyYWRpZW50KGRlZnNHcm91cCwgZGVmRGF0YSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaXJjbGVHcm91cCA9IHRoaXMuc3ZnLmFwcGVuZCgnZycpO1xuICAgIHRoaXMuY3JlYXRlQ2lyY2xlKGNpcmNsZUdyb3VwLCB0aGlzLmNpcmNsZURhdGEpO1xuICAgIGlmICghdGhpcy5jb25maWcpIHJldHVybjtcbiAgICB0aGlzLmNyZWF0ZVJhZGFyQ2hhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3ZnT2JqZWN0KCk6IGQzLlNlbGVjdGlvbjxTVkdTVkdFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4ge1xuICAgIHJldHVybiBkMy5zZWxlY3QodGhpcy5kM0NoYXJ0Py5uYXRpdmVFbGVtZW50KS5hcHBlbmQoJ3N2ZycpLmF0dHIoJ2NsYXNzJywgJ3N2ZycpLmF0dHIoJ2hlaWdodCcsIDMwMCkuYXR0cignd2lkdGgnLCAzMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMaW5lKFxuICAgIGdyb3VwOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgICBkYXRhOiBJU3BpZGVyQ2hhcnRBdHRyaWJ1dGVbXSxcbiAgICBNYXhWYWx1ZTogbnVtYmVyLFxuICAgIGFuZ2xlU2xpY2U6IG51bWJlcixcbiAgICByU2NhbGU6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgKTogdm9pZCB7XG4gICAgZ3JvdXAuc2VsZWN0QWxsKCdsaW5lJykucmVtb3ZlKCk7XG4gICAgcmV0dXJuIGdyb3VwXG4gICAgICAuc2VsZWN0QWxsKCdsaW5lJylcbiAgICAgIC5kYXRhKGRhdGEpXG4gICAgICAuZW50ZXIoKVxuICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAuYXBwZW5kKCdsaW5lJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5lJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5lLWdyb3VwJylcbiAgICAgIC5hdHRyKCd4MScsIDApXG4gICAgICAuYXR0cigneTEnLCAwKVxuICAgICAgLmF0dHIoJ3gyJywgKF9kLCBpKSA9PiByU2NhbGUoTWF4VmFsdWUgKiAxLjQpICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgKyAwLjAxIC0gTWF0aC5QSSAvIDIpKVxuICAgICAgLmF0dHIoJ3kyJywgKF9kLCBpKSA9PiByU2NhbGUoTWF4VmFsdWUgKiAxLjQpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgKyAwLjAxIC0gTWF0aC5QSSAvIDIpKVxuICAgICAgLmF0dHIoJ3N0cm9rZScsICd1cmwoI25lZWRsZVJhZGlhbnQpJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDE1MCwxNTApJyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNpcmNsZShncm91cDogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sIGRhdGE6IElDaXJjbGVEYXRhW10pOiB2b2lkIHtcbiAgICBkYXRhPy5mb3JFYWNoKChkYXR1bSkgPT4ge1xuICAgICAgY29uc3QgZyA9IGdyb3VwLmFwcGVuZCgnY2lyY2xlJyk7XG4gICAgICBPYmplY3Qua2V5cyhkYXR1bSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGcuYXR0cihrZXksIGRhdHVtW2tleV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUZXh0KFxuICAgIGdyb3VwOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgICBkYXRhOiBJU3BpZGVyQ2hhcnRBdHRyaWJ1dGVbXSxcbiAgICByU2NhbGU6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgICBNYXhWYWx1ZTogbnVtYmVyLFxuICAgIGFuZ2xlU2xpY2U6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgdG9vbFRpcCA9IGQzLnNlbGVjdCgnI3Rvb2x0aXAnKTtcbiAgICBncm91cC5zZWxlY3RBbGwoJ3RleHQnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IGlzRnVsbFNjcmVlbkFjdGl2ZTogYm9vbGVhbiA9IHRoaXMuY29uZmlnLmZ1bGxTY3JlZW47XG5cbiAgICAvLyBUT0RPIGxlZnQgYmFzZWQgb24gcG9zaXRpb24gb2YgbW9kYWxcbiAgICBjb25zdCBsZWZ0ID0gaXNGdWxsU2NyZWVuQWN0aXZlID8gMCA6IDA7XG4gICAgY29uc3QgdG9wID0gaXNGdWxsU2NyZWVuQWN0aXZlID8gLTgwIDogLTIyMDtcbiAgICByZXR1cm4gZ3JvdXBcbiAgICAgIC5zZWxlY3RBbGwoJ3RleHQnKVxuICAgICAgLmRhdGEoZGF0YSlcbiAgICAgIC5lbnRlcigpXG4gICAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAgIC50ZXh0KChkKSA9PiB0aGlzLmluaXRpYWxzUGlwZS50cmFuc2Zvcm0oZC50ZXh0KSlcbiAgICAgIC5hdHRyKCd4JywgKF9kLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IHgyID0gclNjYWxlKE1heFZhbHVlICogMS4yKSAqIE1hdGguY29zKGFuZ2xlU2xpY2UgKiBpICsgMC4xIC0gTWF0aC5QSSAvIDIpO1xuICAgICAgICByZXR1cm4geDI7XG4gICAgICB9KVxuICAgICAgLmF0dHIoJ3knLCAoX2QsIGkpID0+IHtcbiAgICAgICAgY29uc3QgeTIgPSByU2NhbGUoTWF4VmFsdWUgKiAxLjIpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgKyAwLjEgLSBNYXRoLlBJIC8gMik7XG4gICAgICAgIHJldHVybiB5MjtcbiAgICAgIH0pXG4gICAgICAuYXR0cignZHknLCAnMC4zNWVtJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDE1MCwxNTApJylcbiAgICAgIC5zdHlsZSgnZmlsbCcsICcjRkUzQzcyJylcbiAgICAgIC5zdHlsZSgndGV4dC1zaGFkb3cnLCAnMXB4IDJweCAxcHggIzAwMCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGluZS1sYWJlbCcpXG4gICAgICAub24oJ3BvaW50ZXJkb3duJywgKGV2ZW50LCBkOiBJU3BpZGVyQ2hhcnRBdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgY29uc3QgeyB0aXRsZUFsZXJ0UG9wdXAsIGRlc2NyaXB0aW9uQWxlcnRQb3B1cCB9ID0gZDtcbiAgICAgICAgdGhpcy50aXRsZUFsZXJ0UG9wdXAgPSB0aXRsZUFsZXJ0UG9wdXA7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb25BbGVydFBvcHVwID0gZGVzY3JpcHRpb25BbGVydFBvcHVwO1xuICAgICAgICB0aGlzLmlzQWxlcnRQb3B1cENsb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aW1lU3RhdGVBbGVydFBvcHVwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHRoaXMubnVtYmVyQWxlcnRQb3B1cCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0b29sVGlwXG4gICAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ2Jsb2NrJylcbiAgICAgICAgICAuc3R5bGUoJ2xlZnQnLCBldmVudC5wYWdlWCArIGxlZnQgKyAncHgnKVxuICAgICAgICAgIC5zdHlsZSgndG9wJywgZXZlbnQucGFnZVkgKyB0b3AgPCAwID8gMCA6IGV2ZW50LnBhZ2VZICsgdG9wICsgJ3B4Jyk7XG4gICAgICB9KVxuICAgICAgLm9uKCdwb2ludGVydXAnLCAoZXZlbnQsIGQ6IElTcGlkZXJDaGFydEF0dHJpYnV0ZSkgPT4ge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQb2x5Z29ucyhncm91cDogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sIGRhdGFzZXRzOiBJRGF0YXNldFtdLCByU2NhbGU6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPiwgYW5nbGVTbGljZTogbnVtYmVyKTogdm9pZCB7XG4gICAgZ3JvdXAuc2VsZWN0QWxsKCdwb2x5Z29uJykucmVtb3ZlKCk7XG4gICAgZ3JvdXAuc2VsZWN0QWxsKCcucmFkYXJDaXJjbGUnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IHBvbHlnb25Qb2ludHMgPSAoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgcG9pbnRzID0gZGF0YT8ua2V5cz8ubWFwKChrZXksIGkpID0+IHtcbiAgICAgICAgY29uc3QgciA9IHJTY2FsZShkYXRhPy52YWx1ZXNba2V5XSA/PyAxICogMSk7XG4gICAgICAgIGNvbnN0IHggPSByICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgKyAwLjAxIC0gTWF0aC5QSSAvIDIpO1xuICAgICAgICBjb25zdCB5ID0gciAqIE1hdGguc2luKGFuZ2xlU2xpY2UgKiBpICsgMC4wMSAtIE1hdGguUEkgLyAyKTtcbiAgICAgICAgcmV0dXJuIGAke3h9LCR7eX1gO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcG9pbnRzLmpvaW4oJyAnKTtcbiAgICB9O1xuICAgIGdyb3VwXG4gICAgICAuc2VsZWN0QWxsKCdwb2x5Z29uJylcbiAgICAgIC5kYXRhKGRhdGFzZXRzKVxuICAgICAgLmVudGVyKClcbiAgICAgIC5hcHBlbmQoJ3BvbHlnb24nKVxuICAgICAgLmF0dHIoJ3BvaW50cycsIChkKSA9PiBwb2x5Z29uUG9pbnRzKGQgPz8ge30pKVxuICAgICAgLmF0dHIoJ3N0cm9rZScsIChfLCBpKSA9PiBfLnBvbHlnb25fY29sb3I/LnZhbHVlKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMTUwLDE1MCknKVxuXG4gICAgICAuYXR0cignZmlsbCcsIChfLCBpKSA9PiBgdXJsKCR7dGhpcy5wb2x5Z29uX2NvbG9ycz8uW2ldPy5sYWJlbH0pYCk7XG4gICAgZGF0YXNldHMuZm9yRWFjaCgoZGF0YSwgaikgPT4ge1xuICAgICAgY29uc3QgYWxsVmFsdWVzQXJlWmVybyA9IGRhdGEua2V5cy5ldmVyeSgoa2V5KSA9PiBkYXRhLnZhbHVlc1trZXldID09PSAwKTtcbiAgICAgIGlmICghYWxsVmFsdWVzQXJlWmVybykge1xuICAgICAgICBncm91cFxuICAgICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAgIC5zZWxlY3RBbGwoJ2NpcmNsZScpXG4gICAgICAgICAgLmRhdGEoZGF0YS5rZXlzKVxuICAgICAgICAgIC5lbnRlcigpXG4gICAgICAgICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAgICAgICAuYXR0cignY2xhc3MnLCAncmFkYXJDaXJjbGUnKVxuICAgICAgICAgIC5hdHRyKCdyJywgMylcbiAgICAgICAgICAuYXR0cignY3gnLCAoa2V5LCBpKSA9PiByU2NhbGUoZGF0YS52YWx1ZXNba2V5XSA/PyAwKSAqIE1hdGguY29zKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgICAgICAgIC5hdHRyKCdjeScsIChrZXksIGkpID0+IHJTY2FsZShkYXRhLnZhbHVlc1trZXldID8/IDApICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgICAgICAgLnN0eWxlKCdmaWxsJywgJ3doaXRlJylcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsICgpID0+IHRoaXMucG9seWdvbl9jb2xvcnM/LltqXT8udmFsdWUpIC8vIFVzaW5nIHN0cm9rZSBjb2xvcnMgZnJvbSB0aGUgc3Ryb2tlQ29sb3JzIGFycmF5XG4gICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMTUwLDE1MCknKVxuICAgICAgICAgIC5hdHRyKCdmaWx0ZXInLCAnYmx1cigxcHgpJylcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIDIpXG4gICAgICAgICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCAwLjgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZzQW5kTGluZWFyR3JhZGllbnQoZ3JvdXA6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LCBkYXRhOiBJRGVmc0xHKTogdm9pZCB7XG4gICAgY29uc3QgZGVmcyA9IGdyb3VwLmFwcGVuZCgnZGVmcycpLmFwcGVuZCgnbGluZWFyR3JhZGllbnQnKS5hdHRyKCdpZCcsIGRhdGEuaWQpLmF0dHIoJ3gxJywgZGF0YS54MSkuYXR0cigneTEnLCBkYXRhLnkxKS5hdHRyKCd4MicsIGRhdGEueDIpLmF0dHIoJ3kyJywgZGF0YS55Mik7XG5cbiAgICBkYXRhLnN0b3BUYWdzLmZvckVhY2goKGVsZW0pID0+IHtcbiAgICAgIGRlZnMuYXBwZW5kKCdzdG9wJykuYXR0cignb2Zmc2V0JywgZWxlbS5vZmZzZXQpLmF0dHIoJ3N0eWxlJywgZWxlbS5zdHlsZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURlZnNBbmRGaWx0ZXIoZ3JvdXA6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LCBkYXRhOiBJRGVmc0YpOiB2b2lkIHtcbiAgICBjb25zdCBkZWZzID0gZ3JvdXAuYXBwZW5kKCdkZWZzJykuYXBwZW5kKCdmaWx0ZXInKS5hdHRyKCdpZCcsIGRhdGEuaWQpLmF0dHIoJ3gnLCBkYXRhLngpLmF0dHIoJ3knLCBkYXRhLnkpLmF0dHIoJ2hlaWdodCcsIGRhdGEuaGVpZ2h0KS5hdHRyKCd3aWR0aCcsIGRhdGEud2lkdGgpO1xuXG4gICAgZGF0YS5mZUdhdXNzaWFuVGFncy5mb3JFYWNoKChlbGVtKSA9PiB7XG4gICAgICBkZWZzLmFwcGVuZCgnZmVHYXVzc2lhbkJsdXInKS5hdHRyKCdpbicsIGVsZW0uaW4pLmF0dHIoJ3N0ZERldmlhdGlvbicsIGVsZW0uc3RkRGV2aWF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVmc0FuZFJhZGlhbEdyYWRpZW50KGdyb3VwOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPiwgZGF0YTogSURlZnNSRyk6IHZvaWQge1xuICAgIGNvbnN0IGRlZnMgPSBncm91cC5hcHBlbmQoJ2RlZnMnKS5hcHBlbmQoJ3JhZGlhbEdyYWRpZW50JykuYXR0cignaWQnLCBkYXRhLmlkKS5hdHRyKCdjeCcsIGRhdGEuY3kpLmF0dHIoJ2N5JywgZGF0YS5jeCkuYXR0cigncicsIGRhdGEucik7XG5cbiAgICBkYXRhLnN0b3BUYWdzLmZvckVhY2goKGVsZW0pID0+IHtcbiAgICAgIGRlZnMuYXBwZW5kKCdzdG9wJykuYXR0cignb2Zmc2V0JywgZWxlbS5vZmZzZXQpLmF0dHIoJ3N0eWxlJywgZWxlbS5zdHlsZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJhZGFyQ2hhcnQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBtYXhWYWx1ZSwgZGF0YXNldHMsIGF0dHJpYnV0ZXMgfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IGFsbEF4aXMgPSBbLi4ubmV3IFNldChhdHRyaWJ1dGVzKV0ubWFwKChpKSA9PiBpKTtcbiAgICBjb25zdCB0b3RhbCA9IGFsbEF4aXMubGVuZ3RoO1xuICAgIGNvbnN0IGFuZ2xlU2xpY2UgPSAoTWF0aC5QSSAqIDIpIC8gdG90YWw7XG4gICAgbGV0IE1heFZhbHVlID1cbiAgICAgIGRhdGFzZXRzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBNYXRoLm1heChcbiAgICAgICAgICAgIC4uLmRhdGFzZXRzLnJlZHVjZSgoYSwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gWy4uLmEsIC4uLk9iamVjdC52YWx1ZXMoaS52YWx1ZXMpXTtcbiAgICAgICAgICAgIH0sIFtdKSxcbiAgICAgICAgICApXG4gICAgICAgIDogbWF4VmFsdWU7XG4gICAgTWF4VmFsdWUgPSBNYXhWYWx1ZSA+IDAgPyBNYXhWYWx1ZSA6IDI1O1xuXG4gICAgY29uc3QgclNjYWxlID0gZDMuc2NhbGVMaW5lYXIoKS5yYW5nZShbMCwgMTAwXSkuZG9tYWluKFswLCBNYXhWYWx1ZV0pO1xuXG4gICAgdGhpcy5jcmVhdGVMaW5lKHRoaXMuc3ZnLCBhbGxBeGlzLCBNYXhWYWx1ZSwgYW5nbGVTbGljZSwgclNjYWxlKTtcbiAgICB0aGlzLmNyZWF0ZVRleHQodGhpcy5zdmcsIGFsbEF4aXMsIHJTY2FsZSwgTWF4VmFsdWUsIGFuZ2xlU2xpY2UpO1xuICAgIHRoaXMuY3JlYXRlUG9seWdvbnModGhpcy5zdmcsIGRhdGFzZXRzLCByU2NhbGUsIGFuZ2xlU2xpY2UpO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwidG9vbHRpcFwiPlxuICA8bGliLWFsZXJ0LXBvcHVwIFt0aXRsZV09XCJ0aXRsZUFsZXJ0UG9wdXBcIiBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25BbGVydFBvcHVwXCIgW3RpbWVTdGF0ZV09XCJ0aW1lU3RhdGVBbGVydFBvcHVwXCIgW251bWJlcl09XCJudW1iZXJBbGVydFBvcHVwXCI+PC9saWItYWxlcnQtcG9wdXA+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZDMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImQzLWNoYXJ0XCIgI0QzQ2hhcnQ+PC9kaXY+XG4gICAgQGlmIChzaG93Q2hhcnRJbmZvKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hhcnRJbmZvXCI+XG4gICAgICAgIEBpZiAoZGF0YXNldHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhY2hhcnRcIj5cbiAgICAgICAgICAgIEBmb3IgKGRhdGFzZXQgb2YgZGF0YXNldHM7IGxldCBqID0gJGluZGV4OyB0cmFjayBkYXRhc2V0KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLmJvcmRlcl09XCInNXB4IHNvbGlkICcgKyBwb2x5Z29uX2NvbG9ycz8uW2pdPy52YWx1ZVwiIFtzdHlsZS5ib3hTaGFkb3ddPVwiJzBweCAwcHggMTJweCAnICsgcG9seWdvbl9jb2xvcnM/LltqXT8udmFsdWVcIiBjbGFzcz1cImxlZ2VuZC1jb2xvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIHt7IGRhdGFzZXQudGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export var Direction;
2
+ (function (Direction) {
3
+ Direction["horizontal"] = "horizontal";
4
+ Direction["vertical"] = "vertical";
5
+ })(Direction || (Direction = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9lbnVtcy9kaXJlY3Rpb24uZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLHNDQUF5QixDQUFBO0lBQ3pCLGtDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIERpcmVjdGlvbiB7XG4gIGhvcml6b250YWwgPSAnaG9yaXpvbnRhbCcsXG4gIHZlcnRpY2FsID0gJ3ZlcnRpY2FsJyxcbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ export var FormFieldType;
2
+ (function (FormFieldType) {
3
+ FormFieldType["date"] = "date";
4
+ FormFieldType["text"] = "text";
5
+ FormFieldType["textarea"] = "textarea";
6
+ FormFieldType["typeahead"] = "typeahead";
7
+ FormFieldType["multiselect"] = "multiselect";
8
+ FormFieldType["select"] = "select";
9
+ FormFieldType["checkbox"] = "checkbox";
10
+ FormFieldType["toggle"] = "toggle";
11
+ FormFieldType["radio"] = "radio";
12
+ FormFieldType["textlist"] = "textlist";
13
+ FormFieldType["number"] = "number";
14
+ FormFieldType["message"] = "message";
15
+ FormFieldType["time"] = "time";
16
+ FormFieldType["multifield"] = "multifield";
17
+ FormFieldType["action"] = "action";
18
+ FormFieldType["currency"] = "currency";
19
+ FormFieldType["banner"] = "banner";
20
+ FormFieldType["percentage"] = "percentage";
21
+ FormFieldType["multiselectdropdown"] = "multiselectdropdown";
22
+ FormFieldType["hyperlink"] = "hyperlink";
23
+ FormFieldType["injectable"] = "injectable";
24
+ FormFieldType["datetime"] = "datetime";
25
+ FormFieldType["rating"] = "rating";
26
+ FormFieldType["incrementer"] = "incrementer";
27
+ FormFieldType["range"] = "range";
28
+ FormFieldType["password"] = "password";
29
+ })(FormFieldType || (FormFieldType = {}));
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvZW51bXMvZm9ybS1maWVsZC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBMkJYO0FBM0JELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2IsOEJBQWEsQ0FBQTtJQUNiLHNDQUFxQixDQUFBO0lBQ3JCLHdDQUF1QixDQUFBO0lBQ3ZCLDRDQUEyQixDQUFBO0lBQzNCLGtDQUFpQixDQUFBO0lBQ2pCLHNDQUFxQixDQUFBO0lBQ3JCLGtDQUFpQixDQUFBO0lBQ2pCLGdDQUFlLENBQUE7SUFDZixzQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBaUIsQ0FBQTtJQUNqQixvQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBYSxDQUFBO0lBQ2IsMENBQXlCLENBQUE7SUFDekIsa0NBQWlCLENBQUE7SUFDakIsc0NBQXFCLENBQUE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsMENBQXlCLENBQUE7SUFDekIsNERBQTJDLENBQUE7SUFDM0Msd0NBQXVCLENBQUE7SUFDdkIsMENBQXlCLENBQUE7SUFDekIsc0NBQXFCLENBQUE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsNENBQTJCLENBQUE7SUFDM0IsZ0NBQWUsQ0FBQTtJQUNmLHNDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUEzQlcsYUFBYSxLQUFiLGFBQWEsUUEyQnhCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRm9ybUZpZWxkVHlwZSB7XHJcbiAgZGF0ZSA9ICdkYXRlJyxcclxuICB0ZXh0ID0gJ3RleHQnLFxyXG4gIHRleHRhcmVhID0gJ3RleHRhcmVhJyxcclxuICB0eXBlYWhlYWQgPSAndHlwZWFoZWFkJyxcclxuICBtdWx0aXNlbGVjdCA9ICdtdWx0aXNlbGVjdCcsXHJcbiAgc2VsZWN0ID0gJ3NlbGVjdCcsXHJcbiAgY2hlY2tib3ggPSAnY2hlY2tib3gnLFxyXG4gIHRvZ2dsZSA9ICd0b2dnbGUnLFxyXG4gIHJhZGlvID0gJ3JhZGlvJyxcclxuICB0ZXh0bGlzdCA9ICd0ZXh0bGlzdCcsXHJcbiAgbnVtYmVyID0gJ251bWJlcicsXHJcbiAgbWVzc2FnZSA9ICdtZXNzYWdlJyxcclxuICB0aW1lID0gJ3RpbWUnLFxyXG4gIG11bHRpZmllbGQgPSAnbXVsdGlmaWVsZCcsXHJcbiAgYWN0aW9uID0gJ2FjdGlvbicsXHJcbiAgY3VycmVuY3kgPSAnY3VycmVuY3knLFxyXG4gIGJhbm5lciA9ICdiYW5uZXInLFxyXG4gIHBlcmNlbnRhZ2UgPSAncGVyY2VudGFnZScsXHJcbiAgbXVsdGlzZWxlY3Rkcm9wZG93biA9ICdtdWx0aXNlbGVjdGRyb3Bkb3duJyxcclxuICBoeXBlcmxpbmsgPSAnaHlwZXJsaW5rJyxcclxuICBpbmplY3RhYmxlID0gJ2luamVjdGFibGUnLFxyXG4gIGRhdGV0aW1lID0gJ2RhdGV0aW1lJyxcclxuICByYXRpbmcgPSAncmF0aW5nJyxcclxuICBpbmNyZW1lbnRlciA9ICdpbmNyZW1lbnRlcicsXHJcbiAgcmFuZ2UgPSAncmFuZ2UnLFxyXG4gIHBhc3N3b3JkID0gJ3Bhc3N3b3JkJyxcclxufVxyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export var LocalStorageKeys;
2
+ (function (LocalStorageKeys) {
3
+ LocalStorageKeys["LongPressForSendImmediately"] = "longPressForSendImmediately";
4
+ })(LocalStorageKeys || (LocalStorageKeys = {}));
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1rZXlzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9lbnVtcy9sb2NhbC1zdG9yYWdlLWtleXMuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxnQkFFWDtBQUZELFdBQVksZ0JBQWdCO0lBQzFCLCtFQUEyRCxDQUFBO0FBQzdELENBQUMsRUFGVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRTNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTG9jYWxTdG9yYWdlS2V5cyB7XG4gIExvbmdQcmVzc0ZvclNlbmRJbW1lZGlhdGVseSA9ICdsb25nUHJlc3NGb3JTZW5kSW1tZWRpYXRlbHknLFxufVxuIl19
@@ -0,0 +1,8 @@
1
+ export var StatusTypes;
2
+ (function (StatusTypes) {
3
+ StatusTypes["Info"] = "info";
4
+ StatusTypes["Warning"] = "warning";
5
+ StatusTypes["Error"] = "error";
6
+ StatusTypes["Success"] = "success";
7
+ })(StatusTypes || (StatusTypes = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvZW51bXMvc3RhdHVzLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDckIsNEJBQWEsQ0FBQTtJQUNiLGtDQUFtQixDQUFBO0lBQ25CLDhCQUFlLENBQUE7SUFDZixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsV0FBVyxLQUFYLFdBQVcsUUFLdEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTdGF0dXNUeXBlcyB7XHJcbiAgSW5mbyA9ICdpbmZvJyxcclxuICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxyXG4gIEVycm9yID0gJ2Vycm9yJyxcclxuICBTdWNjZXNzID0gJ3N1Y2Nlc3MnLFxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL21vZGVsL3NlbGVjdC1vcHRpb24tdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAbmFuaXRlbmluamEvaW9uaWMtbGliJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb25XaXRoVGVtcGxhdGU8VD4gZXh0ZW5kcyBTZWxlY3RPcHRpb248VD4ge1xuICBhZGRPblRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xufVxuIl19
@@ -0,0 +1,19 @@
1
+ /**
2
+ * operations.ts - Contains common operations utility functions.
3
+ *
4
+ * @file This file exports utility functions for common operations.
5
+ */
6
+ /**
7
+ * Generates a random string of the specified length.
8
+ *
9
+ * @param {number} [length=10] - The length of the random string to generate. Default is 10.
10
+ * @return {string} A randomly generated string.
11
+ */
12
+ function randomString(length = 10) {
13
+ return Array.from({ length }, () => Math.random().toString(36).charAt(2)).join('');
14
+ }
15
+ /**
16
+ * Collection of common operations utility functions.
17
+ */
18
+ export const CommonOperations = { randomString };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL29wZXJhdGlvbnMvb3BlcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxTQUFpQixFQUFFO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG9wZXJhdGlvbnMudHMgLSBDb250YWlucyBjb21tb24gb3BlcmF0aW9ucyB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqXG4gKiBAZmlsZSBUaGlzIGZpbGUgZXhwb3J0cyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgY29tbW9uIG9wZXJhdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByYW5kb20gc3RyaW5nIG9mIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTEwXSAtIFRoZSBsZW5ndGggb2YgdGhlIHJhbmRvbSBzdHJpbmcgdG8gZ2VuZXJhdGUuIERlZmF1bHQgaXMgMTAuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEEgcmFuZG9tbHkgZ2VuZXJhdGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gcmFuZG9tU3RyaW5nKGxlbmd0aDogbnVtYmVyID0gMTApOiBzdHJpbmcge1xuICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aCB9LCAoKSA9PiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5jaGFyQXQoMikpLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgY29tbW9uIG9wZXJhdGlvbnMgdXRpbGl0eSBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBDb21tb25PcGVyYXRpb25zID0geyByYW5kb21TdHJpbmcgfTtcbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ArraySortPipe {
4
+ transform(array, field, type = 'ASC') {
5
+ if (!Array.isArray(array)) {
6
+ return null;
7
+ }
8
+ switch (type.toUpperCase()) {
9
+ case 'ASC': {
10
+ array.sort((a, b) => {
11
+ if (a[field] < b[field]) {
12
+ return -1;
13
+ }
14
+ else if (a[field] > b[field]) {
15
+ return 1;
16
+ }
17
+ else {
18
+ return 0;
19
+ }
20
+ });
21
+ break;
22
+ }
23
+ case 'DSC': {
24
+ array.sort((a, b) => {
25
+ if (a[field] > b[field]) {
26
+ return -1;
27
+ }
28
+ else if (a[field] < b[field]) {
29
+ return 1;
30
+ }
31
+ else {
32
+ return 0;
33
+ }
34
+ });
35
+ break;
36
+ }
37
+ }
38
+ return array;
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArraySortPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
41
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ArraySortPipe, name: "sort" }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArraySortPipe, decorators: [{
44
+ type: Pipe,
45
+ args: [{
46
+ name: 'sort',
47
+ }]
48
+ }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuc29ydC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvcGlwZXMvYXJyYXktc29ydC9hcnJheS5zb3J0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsS0FBYSxFQUFFLE9BQWUsS0FBSztRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDM0IsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN4QixPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUNaLENBQUM7eUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQy9CLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN4QixPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUNaLENBQUM7eUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQy9CLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0FoQ1UsYUFBYTs2R0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUh6QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxNQUFNO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdzb3J0Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlTb3J0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oYXJyYXk6IGFueSwgZmllbGQ6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ0FTQycpOiBhbnlbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHN3aXRjaCAodHlwZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdBU0MnOiB7XG4gICAgICAgIGFycmF5LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGFbZmllbGRdIDwgYltmaWVsZF0pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGFbZmllbGRdID4gYltmaWVsZF0pIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RTQyc6IHtcbiAgICAgICAgYXJyYXkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoYVtmaWVsZF0gPiBiW2ZpZWxkXSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYVtmaWVsZF0gPCBiW2ZpZWxkXSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CountNonEmptyFieldsPipe {
4
+ transform(records) {
5
+ return Object.values(records).filter(Boolean).length;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CountNonEmptyFieldsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: CountNonEmptyFieldsPipe, name: "countNonEmptyFields" }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CountNonEmptyFieldsPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'countNonEmptyFields',
14
+ pure: true,
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnQtbm9uLWVtcHR5LWZpZWxkcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvcGlwZXMvY291bnQtbm9uLWVtcHR5LWZpZWxkcy9jb3VudC1ub24tZW1wdHktZmllbGRzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsU0FBUyxDQUFDLE9BQXNDO1FBQzlDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZELENBQUM7K0dBSFUsdUJBQXVCOzZHQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NvdW50Tm9uRW1wdHlGaWVsZHMnLFxuICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDb3VudE5vbkVtcHR5RmllbGRzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0ocmVjb3JkczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4pOiBudW1iZXIge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJlY29yZHMpLmZpbHRlcihCb29sZWFuKS5sZW5ndGg7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Pipe } from '@angular/core';
2
+ import moment from 'moment';
3
+ import * as i0 from "@angular/core";
4
+ export class DateLocalizationPipe {
5
+ transform(value, dateFormat) {
6
+ if (moment.isMoment(value)) {
7
+ return value.format(dateFormat).toString();
8
+ }
9
+ else {
10
+ let parsedDate = moment(value, moment.ISO_8601, true);
11
+ if (!parsedDate.isValid()) {
12
+ // If the value is entered manually by user then parse the value based on the date format
13
+ parsedDate = moment(value, dateFormat, false);
14
+ }
15
+ if (parsedDate.isValid()) {
16
+ return parsedDate.format(dateFormat).toString();
17
+ }
18
+ return null;
19
+ }
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateLocalizationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
22
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DateLocalizationPipe, name: "dateLocalization" }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateLocalizationPipe, decorators: [{
25
+ type: Pipe,
26
+ args: [{
27
+ name: 'dateLocalization',
28
+ pure: true,
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1sb2NhbGl6YXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL3BpcGVzL2RhdGUtbG9jYWxpemF0aW9uL2RhdGUtbG9jYWxpemF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOztBQU01QixNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFNBQVMsQ0FBQyxLQUE2QixFQUFFLFVBQWtCO1FBQ3pELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQzFCLHlGQUF5RjtnQkFDekYsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUM7WUFDRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN6QixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEQsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7K0dBZlUsb0JBQW9COzZHQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2RhdGVMb2NhbGl6YXRpb24nLFxuICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlTG9jYWxpemF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyB8IG1vbWVudC5Nb21lbnQsIGRhdGVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKG1vbWVudC5pc01vbWVudCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5mb3JtYXQoZGF0ZUZvcm1hdCkudG9TdHJpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhcnNlZERhdGUgPSBtb21lbnQodmFsdWUsIG1vbWVudC5JU09fODYwMSwgdHJ1ZSk7XG4gICAgICBpZiAoIXBhcnNlZERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBlbnRlcmVkIG1hbnVhbGx5IGJ5IHVzZXIgdGhlbiBwYXJzZSB0aGUgdmFsdWUgYmFzZWQgb24gdGhlIGRhdGUgZm9ybWF0XG4gICAgICAgIHBhcnNlZERhdGUgPSBtb21lbnQodmFsdWUsIGRhdGVGb3JtYXQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJzZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkRGF0ZS5mb3JtYXQoZGF0ZUZvcm1hdCkudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { Injectable, Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ngx-translate/core";
4
+ export class FallbackTranslatePipe {
5
+ constructor(translate) {
6
+ this.translate = translate;
7
+ }
8
+ transform(key, fallback) {
9
+ const translated = this.translate.instant(key);
10
+ return translated === key ? fallback : translated;
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FallbackTranslatePipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
13
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FallbackTranslatePipe, isStandalone: true, name: "fallbackTranslate" }); }
14
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FallbackTranslatePipe, providedIn: 'root' }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FallbackTranslatePipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{
19
+ name: 'fallbackTranslate',
20
+ standalone: true,
21
+ }]
22
+ }, {
23
+ type: Injectable,
24
+ args: [{
25
+ providedIn: 'root',
26
+ }]
27
+ }], ctorParameters: () => [{ type: i1.TranslateService }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stdHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9waXBlcy9mYWxsYmFjay10cmFuc2xhdGUvZmFsbGJhY2stdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFVaEUsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFbkQsU0FBUyxDQUFDLEdBQVcsRUFBRSxRQUFnQjtRQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxPQUFPLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ3BELENBQUM7K0dBTlUscUJBQXFCOzZHQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBUGpDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOztrQkFDQSxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZmFsbGJhY2tUcmFuc2xhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGYWxsYmFja1RyYW5zbGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgdHJhbnNmb3JtKGtleTogc3RyaW5nLCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXkpO1xuICAgIHJldHVybiB0cmFuc2xhdGVkID09PSBrZXkgPyBmYWxsYmFjayA6IHRyYW5zbGF0ZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,59 @@
1
+ import { formatNumber } from '@angular/common';
2
+ import { Pipe } from '@angular/core';
3
+ import moment from 'moment';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../date-localization/date-localization.pipe";
6
+ import * as i2 from "@angular/common";
7
+ export class GetDisplayValuePipe {
8
+ constructor(dateLocalizationPipe, currencyPipe) {
9
+ this.dateLocalizationPipe = dateLocalizationPipe;
10
+ this.currencyPipe = currencyPipe;
11
+ }
12
+ transform(data, column, dateFormat, corporateCurrency = 'USD') {
13
+ if ((typeof data != 'boolean' && !data && data !== 0) || !column) {
14
+ return '';
15
+ }
16
+ if (column.controlType === 'SingleSelect' || column.controlType === 'MultiSelect') {
17
+ if (Array.isArray(data)) {
18
+ return data.map((value) => column.values?.find((col) => col.Key === value)?.Value)?.join(', ') ?? '';
19
+ }
20
+ return column.values?.find((col) => col.Key === data)?.Value;
21
+ }
22
+ if (column.controlType === 'AutoComplete' || column.controlType === 'AutoCompleteMulti' || column.controlType === 'MultiField') {
23
+ if (Array.isArray(data)) {
24
+ return data?.map((kv) => kv?.Value)?.join(', ') ?? '';
25
+ }
26
+ return data?.Value;
27
+ }
28
+ if (column.controlType === 'Date') {
29
+ if (moment.isMoment(data)) {
30
+ return this.dateLocalizationPipe.transform(data, dateFormat);
31
+ }
32
+ else {
33
+ return this.dateLocalizationPipe.transform(data?.toString() ?? '', dateFormat);
34
+ }
35
+ }
36
+ if (column.controlType === 'Percent') {
37
+ return `${formatNumber(data, 'en-US', '1.0-0')}%`;
38
+ }
39
+ if (column.controlType === 'Currency') {
40
+ return this.currencyPipe.transform(Math.round(data), corporateCurrency, 'symbol', '1.0-0');
41
+ }
42
+ if (column.controlType === 'Boolean') {
43
+ return data ? 'Yes' : 'No';
44
+ }
45
+ if (data.en)
46
+ return data.en;
47
+ return data.toString();
48
+ }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GetDisplayValuePipe, deps: [{ token: i1.DateLocalizationPipe }, { token: i2.CurrencyPipe }], target: i0.ɵɵFactoryTarget.Pipe }); }
50
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: GetDisplayValuePipe, name: "getDisplayValue" }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GetDisplayValuePipe, decorators: [{
53
+ type: Pipe,
54
+ args: [{
55
+ name: 'getDisplayValue',
56
+ pure: true,
57
+ }]
58
+ }], ctorParameters: () => [{ type: i1.DateLocalizationPipe }, { type: i2.CurrencyPipe }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWRpc3BsYXktdmFsdWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL3BpcGVzL2dldC1kaXNwbGF5LXZhbHVlL2dldC1kaXNwbGF5LXZhbHVlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7QUFRNUIsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLG9CQUEwQyxFQUMxQyxZQUEwQjtRQUQxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQ2pDLENBQUM7SUFFSixTQUFTLENBQUMsSUFBUyxFQUFFLE1BQWtCLEVBQUUsVUFBa0IsRUFBRSxvQkFBNEIsS0FBSztRQUM1RixJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pFLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxjQUFjLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNsRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZHLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUMvRCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLGNBQWMsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxXQUFXLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDL0gsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEQsQ0FBQztZQUNELE9BQU8sSUFBSSxFQUFFLEtBQUssQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0FoRFUsbUJBQW1COzZHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIGZvcm1hdE51bWJlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBHcmlkQ29sdW1uIH0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XG5pbXBvcnQgeyBEYXRlTG9jYWxpemF0aW9uUGlwZSB9IGZyb20gJy4uL2RhdGUtbG9jYWxpemF0aW9uL2RhdGUtbG9jYWxpemF0aW9uLnBpcGUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdnZXREaXNwbGF5VmFsdWUnLFxuICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBHZXREaXNwbGF5VmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZUxvY2FsaXphdGlvblBpcGU6IERhdGVMb2NhbGl6YXRpb25QaXBlLFxuICAgIHByaXZhdGUgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGUsXG4gICkge31cblxuICB0cmFuc2Zvcm0oZGF0YTogYW55LCBjb2x1bW46IEdyaWRDb2x1bW4sIGRhdGVGb3JtYXQ6IHN0cmluZywgY29ycG9yYXRlQ3VycmVuY3k6IHN0cmluZyA9ICdVU0QnKTogc3RyaW5nIHtcbiAgICBpZiAoKHR5cGVvZiBkYXRhICE9ICdib29sZWFuJyAmJiAhZGF0YSAmJiBkYXRhICE9PSAwKSB8fCAhY29sdW1uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi5jb250cm9sVHlwZSA9PT0gJ1NpbmdsZVNlbGVjdCcgfHwgY29sdW1uLmNvbnRyb2xUeXBlID09PSAnTXVsdGlTZWxlY3QnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICByZXR1cm4gZGF0YS5tYXAoKHZhbHVlKSA9PiBjb2x1bW4udmFsdWVzPy5maW5kKChjb2wpID0+IGNvbC5LZXkgPT09IHZhbHVlKT8uVmFsdWUpPy5qb2luKCcsICcpID8/ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbHVtbi52YWx1ZXM/LmZpbmQoKGNvbCkgPT4gY29sLktleSA9PT0gZGF0YSk/LlZhbHVlO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT09ICdBdXRvQ29tcGxldGUnIHx8IGNvbHVtbi5jb250cm9sVHlwZSA9PT0gJ0F1dG9Db21wbGV0ZU11bHRpJyB8fCBjb2x1bW4uY29udHJvbFR5cGUgPT09ICdNdWx0aUZpZWxkJykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE/Lm1hcCgoa3YpID0+IGt2Py5WYWx1ZSk/LmpvaW4oJywgJykgPz8gJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YT8uVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi5jb250cm9sVHlwZSA9PT0gJ0RhdGUnKSB7XG4gICAgICBpZiAobW9tZW50LmlzTW9tZW50KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVMb2NhbGl6YXRpb25QaXBlLnRyYW5zZm9ybShkYXRhLCBkYXRlRm9ybWF0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVMb2NhbGl6YXRpb25QaXBlLnRyYW5zZm9ybShkYXRhPy50b1N0cmluZygpID8/ICcnLCBkYXRlRm9ybWF0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLmNvbnRyb2xUeXBlID09PSAnUGVyY2VudCcpIHtcbiAgICAgIHJldHVybiBgJHtmb3JtYXROdW1iZXIoZGF0YSwgJ2VuLVVTJywgJzEuMC0wJyl9JWA7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi5jb250cm9sVHlwZSA9PT0gJ0N1cnJlbmN5Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShNYXRoLnJvdW5kKGRhdGEpLCBjb3Jwb3JhdGVDdXJyZW5jeSwgJ3N5bWJvbCcsICcxLjAtMCcpO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT09ICdCb29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAnWWVzJyA6ICdObyc7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZW4pIHJldHVybiBkYXRhLmVuO1xuXG4gICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19