@thetradeengineorg1/snova-shell-module 0.0.260 → 0.0.261

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 (290) hide show
  1. package/README.md +24 -24
  2. package/bundles/thetradeengineorg1-snova-shell-module.umd.js +18874 -18874
  3. package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
  4. package/esm2015/lib/globaldependencies/components/avatar.component.js +33 -33
  5. package/esm2015/lib/globaldependencies/components/componentbase.js +538 -538
  6. package/esm2015/lib/globaldependencies/constants/feature-ids.js +449 -449
  7. package/esm2015/lib/globaldependencies/constants/localstorage-properties.js +38 -38
  8. package/esm2015/lib/globaldependencies/helpers/dom.helper.js +70 -70
  9. package/esm2015/lib/globaldependencies/helpers/fontawesome-icons.js +144 -144
  10. package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +37 -37
  11. package/esm2015/lib/globaldependencies/helpers/window.helper.js +32 -32
  12. package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +40 -40
  13. package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +36 -36
  14. package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +24 -24
  15. package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +24 -24
  16. package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +22 -22
  17. package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +24 -24
  18. package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +346 -346
  19. package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +23 -23
  20. package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +25 -25
  21. package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +27 -27
  22. package/esm2015/lib/shell-components/components/Payments/account.component.js +121 -121
  23. package/esm2015/lib/shell-components/components/Payments/company-information.js +558 -558
  24. package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +636 -636
  25. package/esm2015/lib/shell-components/components/Payments/document.component.js +129 -129
  26. package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +90 -90
  27. package/esm2015/lib/shell-components/components/Payments/product-service.component.js +438 -438
  28. package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +249 -249
  29. package/esm2015/lib/shell-components/components/Payments/transactions.component.js +172 -172
  30. package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +350 -350
  31. package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +102 -102
  32. package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +126 -126
  33. package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +502 -502
  34. package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +98 -98
  35. package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +87 -87
  36. package/esm2015/lib/shell-components/components/header-side/header-side.component.js +2342 -2342
  37. package/esm2015/lib/shell-components/components/header-top/header-top.component.js +489 -489
  38. package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +55 -55
  39. package/esm2015/lib/shell-components/components/menu/menu.component.js +3413 -3413
  40. package/esm2015/lib/shell-components/components/menu/searchTask.enum.js +10 -10
  41. package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +110 -110
  42. package/esm2015/lib/shell-components/components/notifications/notifications.component.js +534 -534
  43. package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +39 -39
  44. package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +148 -148
  45. package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +439 -439
  46. package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +75 -75
  47. package/esm2015/lib/shell-components/constants/api-urls.js +1052 -1052
  48. package/esm2015/lib/shell-components/constants/available-languages.js +25 -25
  49. package/esm2015/lib/shell-components/constants/channel-names.js +38 -38
  50. package/esm2015/lib/shell-components/constants/menu-categories.js +6 -6
  51. package/esm2015/lib/shell-components/constants/notification-routes.js +6 -6
  52. package/esm2015/lib/shell-components/constants/notification-type-ids.js +42 -42
  53. package/esm2015/lib/shell-components/enum/recentSearchType.enum.js +13 -13
  54. package/esm2015/lib/shell-components/models/AppMenuItemModel.js +3 -3
  55. package/esm2015/lib/shell-components/models/AppNotification.js +17 -17
  56. package/esm2015/lib/shell-components/models/AssetAssignedNotificationModel.js +12 -12
  57. package/esm2015/lib/shell-components/models/ChannelUpdateModel.js +3 -3
  58. package/esm2015/lib/shell-components/models/EmployeeStatusModel.js +3 -3
  59. package/esm2015/lib/shell-components/models/IAdjust-screen-options.js +2 -2
  60. package/esm2015/lib/shell-components/models/IBadge.js +2 -2
  61. package/esm2015/lib/shell-components/models/IChildItem.js +2 -2
  62. package/esm2015/lib/shell-components/models/ILayout-change-options.js +2 -2
  63. package/esm2015/lib/shell-components/models/IMenuItem.js +2 -2
  64. package/esm2015/lib/shell-components/models/IlayoutConf.js +2 -2
  65. package/esm2015/lib/shell-components/models/IntroModel.js +3 -3
  66. package/esm2015/lib/shell-components/models/MessageDetails.js +3 -3
  67. package/esm2015/lib/shell-components/models/MessageTypingDetails.js +3 -3
  68. package/esm2015/lib/shell-components/models/NewProjectCreatedNotificationModel.js +10 -10
  69. package/esm2015/lib/shell-components/models/NewProjectFeatureNotificationModel.js +10 -10
  70. package/esm2015/lib/shell-components/models/NotificationsOutPutModel.js +22 -22
  71. package/esm2015/lib/shell-components/models/ProjectSearchCriteriaInputModel.js +3 -3
  72. package/esm2015/lib/shell-components/models/RecentSearchModel.js +5 -5
  73. package/esm2015/lib/shell-components/models/ReportConfigAssignedNotification.js +11 -11
  74. package/esm2015/lib/shell-components/models/ReportSubmittedNotification.js +12 -12
  75. package/esm2015/lib/shell-components/models/RoleUpdatedNotification.js +9 -9
  76. package/esm2015/lib/shell-components/models/UserStoryAssignedNotification.js +13 -13
  77. package/esm2015/lib/shell-components/models/archiveUserStoryModel.js +10 -10
  78. package/esm2015/lib/shell-components/models/companieslist.model.js +3 -3
  79. package/esm2015/lib/shell-components/models/company-model.js +7 -7
  80. package/esm2015/lib/shell-components/models/company-payment-model.js +3 -3
  81. package/esm2015/lib/shell-components/models/dragedWidget.js +3 -3
  82. package/esm2015/lib/shell-components/models/employee-List.js +3 -3
  83. package/esm2015/lib/shell-components/models/employee.js +4 -4
  84. package/esm2015/lib/shell-components/models/entityRoleFeature.js +3 -3
  85. package/esm2015/lib/shell-components/models/export-configuration-model.js +3 -3
  86. package/esm2015/lib/shell-components/models/export-data.module.js +8 -8
  87. package/esm2015/lib/shell-components/models/goalApprovedNotificationModel.js +9 -9
  88. package/esm2015/lib/shell-components/models/import-configuration-model.js +3 -3
  89. package/esm2015/lib/shell-components/models/initialStatusofUsers.js +3 -3
  90. package/esm2015/lib/shell-components/models/invoiceOutput-model.js +3 -3
  91. package/esm2015/lib/shell-components/models/leaveApplicationNotifiction.js +9 -9
  92. package/esm2015/lib/shell-components/models/multiChartsScheduling.js +11 -11
  93. package/esm2015/lib/shell-components/models/parkUserStoryInputModel.js +10 -10
  94. package/esm2015/lib/shell-components/models/project.js +3 -3
  95. package/esm2015/lib/shell-components/models/recentSearchApiModel.js +3 -3
  96. package/esm2015/lib/shell-components/models/searchCriteriaInputModelBase.js +3 -3
  97. package/esm2015/lib/shell-components/models/shellModulesInfo.js +7 -7
  98. package/esm2015/lib/shell-components/models/softlabels-model.js +7 -7
  99. package/esm2015/lib/shell-components/models/sprintReplanRequestedModel.js +9 -9
  100. package/esm2015/lib/shell-components/models/sprintStartedNotificationModel.js +9 -9
  101. package/esm2015/lib/shell-components/models/store-model.js +3 -3
  102. package/esm2015/lib/shell-components/models/store-search-model.js +4 -4
  103. package/esm2015/lib/shell-components/models/themes.model.js +3 -3
  104. package/esm2015/lib/shell-components/models/timesheetenabledisable.js +4 -4
  105. package/esm2015/lib/shell-components/models/user.js +8 -8
  106. package/esm2015/lib/shell-components/models/userStory.js +3 -3
  107. package/esm2015/lib/shell-components/models/userStoryCommentNotificationModel.js +9 -9
  108. package/esm2015/lib/shell-components/models/userStoryUpdateNotificationModel.js +9 -9
  109. package/esm2015/lib/shell-components/models/userstory-custom-fields.model.js +3 -3
  110. package/esm2015/lib/shell-components/models/validation.model.js +2 -2
  111. package/esm2015/lib/shell-components/models/widgetlist.js +6 -6
  112. package/esm2015/lib/shell-components/models/workspaceList.js +3 -3
  113. package/esm2015/lib/shell-components/services/authentication.service.js +96 -96
  114. package/esm2015/lib/shell-components/services/chat.service.js +67 -67
  115. package/esm2015/lib/shell-components/services/common-used.service.js +263 -263
  116. package/esm2015/lib/shell-components/services/feature.service.js +101 -101
  117. package/esm2015/lib/shell-components/services/google-analytics.service.js +24 -24
  118. package/esm2015/lib/shell-components/services/layout.service.js +68 -68
  119. package/esm2015/lib/shell-components/services/payment.service.js +103 -103
  120. package/esm2015/lib/shell-components/services/recentSearch.service.js +90 -90
  121. package/esm2015/lib/shell-components/services/shell.modules.service.js +24 -24
  122. package/esm2015/lib/shell-components/services/signalr.service.js +113 -113
  123. package/esm2015/lib/shell-components/services/theme.service.js +161 -161
  124. package/esm2015/lib/shell-components/shell.module.js +450 -450
  125. package/esm2015/lib/shell-components/shell.routing.js +16 -16
  126. package/esm2015/lib/shell-components/store/actions/authentication.actions.js +260 -260
  127. package/esm2015/lib/shell-components/store/actions/chat.actions.js +248 -248
  128. package/esm2015/lib/shell-components/store/actions/menuitems.actions.js +39 -39
  129. package/esm2015/lib/shell-components/store/actions/notification-validator.action.js +19 -19
  130. package/esm2015/lib/shell-components/store/actions/notifications.actions.js +74 -74
  131. package/esm2015/lib/shell-components/store/effects/authentication.effects.js +503 -503
  132. package/esm2015/lib/shell-components/store/effects/chat.effects.js +139 -139
  133. package/esm2015/lib/shell-components/store/effects/index.js +13 -13
  134. package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +53 -53
  135. package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +56 -56
  136. package/esm2015/lib/shell-components/store/effects/notifications.effects.js +116 -116
  137. package/esm2015/lib/shell-components/store/reducers/authentication.reducers.js +86 -86
  138. package/esm2015/lib/shell-components/store/reducers/chat.reducers.js +68 -68
  139. package/esm2015/lib/shell-components/store/reducers/index.js +80 -80
  140. package/esm2015/lib/shell-components/store/reducers/menuitems.reducers.js +56 -56
  141. package/esm2015/lib/shell-components/store/reducers/notification-validator.reducers.js +13 -13
  142. package/esm2015/lib/shell-components/store/reducers/notifications.reducers.js +38 -38
  143. package/esm2015/public-api.js +92 -92
  144. package/esm2015/store/reducers/index.js +47 -47
  145. package/esm2015/thetradeengineorg1-snova-shell-module.js +4 -4
  146. package/fesm2015/thetradeengineorg1-snova-shell-module.js +16979 -16979
  147. package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
  148. package/lib/globaldependencies/components/avatar.component.d.ts +10 -10
  149. package/lib/globaldependencies/components/componentbase.d.ts +455 -455
  150. package/lib/globaldependencies/constants/feature-ids.d.ts +448 -448
  151. package/lib/globaldependencies/constants/localstorage-properties.d.ts +37 -37
  152. package/lib/globaldependencies/helpers/dom.helper.d.ts +7 -7
  153. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +1 -1
  154. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +9 -9
  155. package/lib/globaldependencies/helpers/window.helper.d.ts +12 -12
  156. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +11 -11
  157. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +8 -8
  158. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +8 -8
  159. package/lib/globaldependencies/pipes/orderby-pipe.d.ts +9 -9
  160. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +8 -8
  161. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +11 -11
  162. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +8 -8
  163. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +8 -8
  164. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +8 -8
  165. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +8 -8
  166. package/lib/shell-components/components/Payments/account.component.d.ts +14 -14
  167. package/lib/shell-components/components/Payments/company-information.d.ts +62 -62
  168. package/lib/shell-components/components/Payments/company-plans.component.d.ts +47 -47
  169. package/lib/shell-components/components/Payments/document.component.d.ts +20 -20
  170. package/lib/shell-components/components/Payments/payment-method.component.d.ts +15 -15
  171. package/lib/shell-components/components/Payments/product-service.component.d.ts +48 -48
  172. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +37 -37
  173. package/lib/shell-components/components/Payments/transactions.component.d.ts +28 -28
  174. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +67 -67
  175. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +32 -32
  176. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +32 -32
  177. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +60 -60
  178. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +33 -33
  179. package/lib/shell-components/components/feed-time/feed-time.component.d.ts +27 -27
  180. package/lib/shell-components/components/header-side/header-side.component.d.ts +220 -220
  181. package/lib/shell-components/components/header-top/header-top.component.d.ts +40 -40
  182. package/lib/shell-components/components/lives/lives-welcome-page.d.ts +14 -14
  183. package/lib/shell-components/components/menu/menu.component.d.ts +220 -220
  184. package/lib/shell-components/components/menu/searchTask.enum.d.ts +8 -8
  185. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +27 -27
  186. package/lib/shell-components/components/notifications/notifications.component.d.ts +53 -53
  187. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +10 -10
  188. package/lib/shell-components/components/sidenav/side-bar.component.d.ts +23 -23
  189. package/lib/shell-components/components/sidenav/sidenav.component.d.ts +17 -17
  190. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +25 -25
  191. package/lib/shell-components/constants/api-urls.d.ts +1051 -1051
  192. package/lib/shell-components/constants/available-languages.d.ts +7 -7
  193. package/lib/shell-components/constants/channel-names.d.ts +37 -37
  194. package/lib/shell-components/constants/menu-categories.d.ts +5 -5
  195. package/lib/shell-components/constants/notification-routes.d.ts +5 -5
  196. package/lib/shell-components/constants/notification-type-ids.d.ts +41 -41
  197. package/lib/shell-components/enum/recentSearchType.enum.d.ts +11 -11
  198. package/lib/shell-components/models/AppMenuItemModel.d.ts +12 -12
  199. package/lib/shell-components/models/AppNotification.d.ts +12 -12
  200. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +10 -10
  201. package/lib/shell-components/models/ChannelUpdateModel.d.ts +47 -47
  202. package/lib/shell-components/models/EmployeeStatusModel.d.ts +11 -11
  203. package/lib/shell-components/models/IAdjust-screen-options.d.ts +4 -4
  204. package/lib/shell-components/models/IBadge.d.ts +4 -4
  205. package/lib/shell-components/models/IChildItem.d.ts +7 -7
  206. package/lib/shell-components/models/ILayout-change-options.d.ts +4 -4
  207. package/lib/shell-components/models/IMenuItem.d.ts +14 -14
  208. package/lib/shell-components/models/IlayoutConf.d.ts +10 -10
  209. package/lib/shell-components/models/IntroModel.d.ts +3 -3
  210. package/lib/shell-components/models/MessageDetails.d.ts +55 -55
  211. package/lib/shell-components/models/MessageTypingDetails.d.ts +9 -9
  212. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +8 -8
  213. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +8 -8
  214. package/lib/shell-components/models/NotificationsOutPutModel.d.ts +41 -41
  215. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +10 -10
  216. package/lib/shell-components/models/RecentSearchModel.d.ts +14 -14
  217. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +9 -9
  218. package/lib/shell-components/models/ReportSubmittedNotification.d.ts +10 -10
  219. package/lib/shell-components/models/RoleUpdatedNotification.d.ts +7 -7
  220. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +8 -8
  221. package/lib/shell-components/models/archiveUserStoryModel.d.ts +7 -7
  222. package/lib/shell-components/models/companieslist.model.d.ts +8 -8
  223. package/lib/shell-components/models/company-model.d.ts +31 -31
  224. package/lib/shell-components/models/company-payment-model.d.ts +18 -18
  225. package/lib/shell-components/models/dragedWidget.d.ts +16 -16
  226. package/lib/shell-components/models/employee-List.d.ts +8 -8
  227. package/lib/shell-components/models/employee.d.ts +60 -60
  228. package/lib/shell-components/models/entityRoleFeature.d.ts +9 -9
  229. package/lib/shell-components/models/export-configuration-model.d.ts +8 -8
  230. package/lib/shell-components/models/export-data.module.d.ts +6 -6
  231. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +8 -8
  232. package/lib/shell-components/models/import-configuration-model.d.ts +3 -3
  233. package/lib/shell-components/models/initialStatusofUsers.d.ts +5 -5
  234. package/lib/shell-components/models/invoiceOutput-model.d.ts +9 -9
  235. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +7 -7
  236. package/lib/shell-components/models/multiChartsScheduling.d.ts +9 -9
  237. package/lib/shell-components/models/parkUserStoryInputModel.d.ts +7 -7
  238. package/lib/shell-components/models/project.d.ts +28 -28
  239. package/lib/shell-components/models/recentSearchApiModel.d.ts +6 -6
  240. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +10 -10
  241. package/lib/shell-components/models/shellModulesInfo.d.ts +16 -16
  242. package/lib/shell-components/models/softlabels-model.d.ts +66 -66
  243. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +7 -7
  244. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +7 -7
  245. package/lib/shell-components/models/store-model.d.ts +13 -13
  246. package/lib/shell-components/models/store-search-model.d.ts +7 -7
  247. package/lib/shell-components/models/themes.model.d.ts +9 -9
  248. package/lib/shell-components/models/timesheetenabledisable.d.ts +16 -16
  249. package/lib/shell-components/models/user.d.ts +40 -40
  250. package/lib/shell-components/models/userStory.d.ts +188 -188
  251. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +6 -6
  252. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +6 -6
  253. package/lib/shell-components/models/userstory-custom-fields.model.d.ts +6 -6
  254. package/lib/shell-components/models/validation.model.d.ts +5 -5
  255. package/lib/shell-components/models/widgetlist.d.ts +28 -28
  256. package/lib/shell-components/models/workspaceList.d.ts +19 -19
  257. package/lib/shell-components/services/authentication.service.d.ts +18 -18
  258. package/lib/shell-components/services/chat.service.d.ts +16 -16
  259. package/lib/shell-components/services/common-used.service.d.ts +45 -45
  260. package/lib/shell-components/services/feature.service.d.ts +19 -19
  261. package/lib/shell-components/services/google-analytics.service.d.ts +9 -9
  262. package/lib/shell-components/services/layout.service.d.ts +23 -23
  263. package/lib/shell-components/services/payment.service.d.ts +19 -19
  264. package/lib/shell-components/services/recentSearch.service.d.ts +16 -16
  265. package/lib/shell-components/services/shell.modules.service.d.ts +9 -9
  266. package/lib/shell-components/services/signalr.service.d.ts +25 -25
  267. package/lib/shell-components/services/theme.service.d.ts +14 -14
  268. package/lib/shell-components/shell.module.d.ts +119 -119
  269. package/lib/shell-components/shell.routing.d.ts +2 -2
  270. package/lib/shell-components/store/actions/authentication.actions.d.ts +327 -327
  271. package/lib/shell-components/store/actions/chat.actions.d.ts +399 -399
  272. package/lib/shell-components/store/actions/menuitems.actions.d.ts +51 -51
  273. package/lib/shell-components/store/actions/notification-validator.action.d.ts +25 -25
  274. package/lib/shell-components/store/actions/notifications.actions.d.ts +116 -116
  275. package/lib/shell-components/store/effects/authentication.effects.d.ts +54 -54
  276. package/lib/shell-components/store/effects/chat.effects.d.ts +30 -30
  277. package/lib/shell-components/store/effects/index.d.ts +1 -1
  278. package/lib/shell-components/store/effects/menuitems.effects.d.ts +17 -17
  279. package/lib/shell-components/store/effects/notification-validator.effects.d.ts +21 -21
  280. package/lib/shell-components/store/effects/notifications.effects.d.ts +23 -23
  281. package/lib/shell-components/store/reducers/authentication.reducers.d.ts +30 -30
  282. package/lib/shell-components/store/reducers/chat.reducers.d.ts +17 -17
  283. package/lib/shell-components/store/reducers/index.d.ts +59 -59
  284. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +11 -11
  285. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +5 -5
  286. package/lib/shell-components/store/reducers/notifications.reducers.d.ts +10 -10
  287. package/package.json +1 -1
  288. package/public-api.d.ts +82 -82
  289. package/store/reducers/index.d.ts +24 -24
  290. package/thetradeengineorg1-snova-shell-module.d.ts +5 -5
@@ -1,249 +1,249 @@
1
- import { Component, Inject } from "@angular/core";
2
- import { MAT_DIALOG_DATA } from "@angular/material/dialog";
3
- import { SPINNER } from 'ngx-ui-loader';
4
- import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
5
- import '../../../globaldependencies/helpers/fontawesome-icons';
6
- import { CompanyPaymentUpsertModel } from '../../models/company-payment-model';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/dialog";
9
- import * as i2 from "ngx-toastr";
10
- import * as i3 from "@angular/router";
11
- import * as i4 from "../../services/payment.service";
12
- import * as i5 from "@fortawesome/angular-fontawesome";
13
- import * as i6 from "@angular/material/card";
14
- import * as i7 from "@angular/flex-layout/flex";
15
- import * as i8 from "@angular/material/form-field";
16
- import * as i9 from "@angular/material/input";
17
- import * as i10 from "@angular/forms";
18
- import * as i11 from "@angular/common";
19
- import * as i12 from "@angular/material/button";
20
- import * as i13 from "@angular/material/select";
21
- import * as i14 from "@angular/material/core";
22
- function PurchaseMoreLicensesComponent_mat_form_field_17_Template(rf, ctx) { if (rf & 1) {
23
- const _r4 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "mat-form-field", 9);
25
- i0.ɵɵelementStart(1, "mat-select", 15);
26
- i0.ɵɵlistener("ngModelChange", function PurchaseMoreLicensesComponent_mat_form_field_17_Template_mat_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return ctx_r3.planInterval = $event; })("selectionChange", function PurchaseMoreLicensesComponent_mat_form_field_17_Template_mat_select_selectionChange_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.costCalculation(); });
27
- i0.ɵɵelementStart(2, "mat-option", 16);
28
- i0.ɵɵtext(3, "Monthly");
29
- i0.ɵɵelementEnd();
30
- i0.ɵɵelementStart(4, "mat-option", 17);
31
- i0.ɵɵtext(5, "Annually");
32
- i0.ɵɵelementEnd();
33
- i0.ɵɵelementEnd();
34
- i0.ɵɵelementEnd();
35
- } if (rf & 2) {
36
- const ctx_r0 = i0.ɵɵnextContext();
37
- i0.ɵɵadvance(1);
38
- i0.ɵɵproperty("ngModel", ctx_r0.planInterval)("disabled", ctx_r0.subscriptionType == "year");
39
- } }
40
- function PurchaseMoreLicensesComponent_mat_form_field_18_Template(rf, ctx) { if (rf & 1) {
41
- const _r7 = i0.ɵɵgetCurrentView();
42
- i0.ɵɵelementStart(0, "mat-form-field", 9);
43
- i0.ɵɵelementStart(1, "mat-select", 18);
44
- i0.ɵɵlistener("ngModelChange", function PurchaseMoreLicensesComponent_mat_form_field_18_Template_mat_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.planInterval = $event; })("selectionChange", function PurchaseMoreLicensesComponent_mat_form_field_18_Template_mat_select_selectionChange_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return ctx_r8.costCalculation(); });
45
- i0.ɵɵelementStart(2, "mat-option", 16);
46
- i0.ɵɵtext(3, "Monthly");
47
- i0.ɵɵelementEnd();
48
- i0.ɵɵelementStart(4, "mat-option", 17);
49
- i0.ɵɵtext(5, "Annually");
50
- i0.ɵɵelementEnd();
51
- i0.ɵɵelementEnd();
52
- i0.ɵɵelementEnd();
53
- } if (rf & 2) {
54
- const ctx_r1 = i0.ɵɵnextContext();
55
- i0.ɵɵadvance(1);
56
- i0.ɵɵproperty("ngModel", ctx_r1.planInterval);
57
- } }
58
- function PurchaseMoreLicensesComponent_i_22_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelement(0, "i", 19);
60
- } }
61
- export class PurchaseMoreLicensesComponent {
62
- constructor(data, dialogRef, toastr, router, paymentService) {
63
- this.data = data;
64
- this.dialogRef = dialogRef;
65
- this.toastr = toastr;
66
- this.router = router;
67
- this.paymentService = paymentService;
68
- this.handler = null;
69
- this.totalAmount = 0;
70
- this.isAnyOperationIsInprogress = false;
71
- this.isFromRoute = false;
72
- this.activeUsers = 0;
73
- this.companyMainLogo = "https://bviewstorage.blob.core.windows.net/6671cd0d-5b91-4044-bdcc-e1f201c086c5/projects/d72d1c2f-dfbe-4d48-9605-cd3b7e38ed17/Main-Logo-9277cc4b-0c1f-4093-a917-1a65e874b3c9.png";
74
- this.isDisable = false;
75
- this.isNewSub = false;
76
- this.spinnerType = SPINNER.pulse;
77
- if (data != undefined && data != null) {
78
- this.selectedPlanName = data.productName;
79
- this.subscriptionType = this.planInterval = data.subscriptionType;
80
- this.activeUsers = this.noOfPurchases = data.noOfPurchases;
81
- this.isNewSub = data.isSubscriberNew;
82
- this.costCalculation();
83
- }
84
- }
85
- ngOnInit() {
86
- }
87
- close() {
88
- this.dialogRef.close({ isReload: false });
89
- }
90
- costCalculation() {
91
- var purchases = Number(this.noOfPurchases);
92
- if (!isNaN(purchases) && this.activeUsers > purchases) {
93
- this.toastr.warning("No. of purchases should be more than previous one's");
94
- this.isDisable = true;
95
- return;
96
- }
97
- this.isDisable = false;
98
- if (this.noOfPurchases != undefined && this.noOfPurchases != null && this.noOfPurchases != ''
99
- && this.planInterval != undefined && this.planInterval != null && this.planInterval != '' && !isNaN(purchases)) {
100
- var perUser = 0;
101
- if (this.selectedPlanName == 'Standard')
102
- perUser = 3;
103
- else if (this.selectedPlanName == 'Premium')
104
- perUser = 5;
105
- else if (this.selectedPlanName == 'Enterprise')
106
- perUser = 10;
107
- else
108
- perUser = 0;
109
- var normalTotal = perUser * Number(this.noOfPurchases);
110
- if (this.planInterval == 'month') {
111
- this.totalAmount = normalTotal.toFixed(2);
112
- }
113
- else if (this.planInterval == 'year') {
114
- this.totalAmount = ((normalTotal - (normalTotal * 20 / 100)) * 12).toFixed(2);
115
- }
116
- else
117
- this.totalAmount = 0;
118
- }
119
- }
120
- pay() {
121
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
122
- var service = this.paymentService;
123
- var purchases = this.noOfPurchases;
124
- var totalAmt = this.totalAmount;
125
- var plan = this.selectedPlanName;
126
- var planInterval = this.planInterval;
127
- var tosters = this.toastr;
128
- var router = this.router;
129
- var dailogRef = this.dialogRef;
130
- this.isSucessPay = true;
131
- var isSucessPay = this.isSucessPay;
132
- var handler = window.StripeCheckout.configure({
133
- key: environment.stripeAPIKey,
134
- image: 'https://bviewstorage.blob.core.windows.net/4afeb444-e826-4f95-ac41-2175e36a0c16/hrm/0b2921a9-e930-4013-9047-670b5352f308/snovasys-72112b03-95dc-432c-aeef-c89fa13eae32.png',
135
- locale: 'auto',
136
- token: function (token) {
137
- if (token) {
138
- var companyPaymentUpsertModel = new CompanyPaymentUpsertModel();
139
- companyPaymentUpsertModel.CardHolderName = token.card.name;
140
- companyPaymentUpsertModel.CardHolderBillingAddress = token.card.name;
141
- companyPaymentUpsertModel.PlanName = plan;
142
- companyPaymentUpsertModel.SubscriptionType = planInterval;
143
- companyPaymentUpsertModel.TotalAmount = totalAmt;
144
- companyPaymentUpsertModel.NoOfPurchases = purchases;
145
- companyPaymentUpsertModel.Email = token.email;
146
- companyPaymentUpsertModel.StripeTokenId = token.id;
147
- companyPaymentUpsertModel.AddressOptions = token.card;
148
- service.upsertCompanyPayments(companyPaymentUpsertModel).subscribe((responseData) => {
149
- if (responseData.success == true) {
150
- tosters.success("Your subscription has been successfully completed");
151
- isSucessPay = false;
152
- router.navigate(['/shell/Accounts']);
153
- dailogRef.close({ isReload: true });
154
- }
155
- else {
156
- tosters.error(responseData.apiResponseMessages[0].message);
157
- isSucessPay = false;
158
- }
159
- });
160
- }
161
- }
162
- });
163
- this.isSucessPay = isSucessPay;
164
- var description = this.planInterval == 'month' ? 'Monthly subscription' : 'Annual subscription';
165
- handler.open({
166
- name: this.selectedPlanName,
167
- description: description,
168
- amount: this.totalAmount * 100,
169
- currency: 'GBP',
170
- billingAddress: "true",
171
- shippingAddress: "false",
172
- closed: () => { this.close2(); }
173
- });
174
- }
175
- close2() {
176
- this.isSucessPay = !this.isSucessPay;
177
- }
178
- }
179
- PurchaseMoreLicensesComponent.ɵfac = function PurchaseMoreLicensesComponent_Factory(t) { return new (t || PurchaseMoreLicensesComponent)(i0.ɵɵdirectiveInject(MAT_DIALOG_DATA), i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(i2.ToastrService), i0.ɵɵdirectiveInject(i3.Router), i0.ɵɵdirectiveInject(i4.PaymentService)); };
180
- PurchaseMoreLicensesComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PurchaseMoreLicensesComponent, selectors: [["app-purchase-licenses"]], decls: 23, vars: 7, consts: [[1, "custom-dialog"], ["mat-dialog-close", "", 1, "custom-close", 3, "click"], ["icon", "times", 1, "project-dialog"], ["mat-dialog-content", "", "id", "style-1", 1, "project-dialogContent"], [1, "text-center", "pb-1"], ["fxLayout", "column", 1, "login-page"], ["fxFlex", "50", "fxFlex.xs", "100"], ["fxLayout", "row", "fxLayout.xs", "column", "fxLayoutGap", "10px", "fxLayoutGap.xs", "0px"], ["fxFlex", "100", "fxFlex.xs", "100"], [1, "full-width"], ["matInput", "", "placeholder", "No.of purchases", "required", "", 3, "ngModel", "ngModelChange", "change"], ["class", "full-width", 4, "ngIf"], [1, "mt-1"], ["mat-raised-button", "", "color", "primary", 1, "full-width", "mb-1", "btn", "btn-block", 3, "disabled", "click"], ["class", "fa fa-spin fa-spinner", 4, "ngIf"], ["placeholder", "Select a subscription type", "required", "", 3, "ngModel", "disabled", "ngModelChange", "selectionChange"], ["value", "month"], ["value", "year"], ["placeholder", "Select a subscription type", "required", "", 3, "ngModel", "ngModelChange", "selectionChange"], [1, "fa", "fa-spin", "fa-spinner"]], template: function PurchaseMoreLicensesComponent_Template(rf, ctx) { if (rf & 1) {
181
- i0.ɵɵelementStart(0, "div", 0);
182
- i0.ɵɵelementStart(1, "div", 1);
183
- i0.ɵɵlistener("click", function PurchaseMoreLicensesComponent_Template_div_click_1_listener() { return ctx.close(); });
184
- i0.ɵɵelement(2, "fa-icon", 2);
185
- i0.ɵɵelementEnd();
186
- i0.ɵɵelementEnd();
187
- i0.ɵɵelementStart(3, "div", 3);
188
- i0.ɵɵelementStart(4, "mat-card-title");
189
- i0.ɵɵelementStart(5, "div", 4);
190
- i0.ɵɵtext(6, "Subscription");
191
- i0.ɵɵelementEnd();
192
- i0.ɵɵelementEnd();
193
- i0.ɵɵelementStart(7, "div", 5);
194
- i0.ɵɵelementStart(8, "div", 6);
195
- i0.ɵɵelementStart(9, "label");
196
- i0.ɵɵtext(10);
197
- i0.ɵɵelementEnd();
198
- i0.ɵɵelementEnd();
199
- i0.ɵɵelementStart(11, "div", 7);
200
- i0.ɵɵelementStart(12, "div", 8);
201
- i0.ɵɵelementStart(13, "mat-form-field", 9);
202
- i0.ɵɵelementStart(14, "input", 10);
203
- i0.ɵɵlistener("ngModelChange", function PurchaseMoreLicensesComponent_Template_input_ngModelChange_14_listener($event) { return ctx.noOfPurchases = $event; })("change", function PurchaseMoreLicensesComponent_Template_input_change_14_listener() { return ctx.costCalculation(); });
204
- i0.ɵɵelementEnd();
205
- i0.ɵɵelementEnd();
206
- i0.ɵɵelementEnd();
207
- i0.ɵɵelementEnd();
208
- i0.ɵɵelementStart(15, "div", 7);
209
- i0.ɵɵelementStart(16, "div", 8);
210
- i0.ɵɵtemplate(17, PurchaseMoreLicensesComponent_mat_form_field_17_Template, 6, 2, "mat-form-field", 11);
211
- i0.ɵɵtemplate(18, PurchaseMoreLicensesComponent_mat_form_field_18_Template, 6, 1, "mat-form-field", 11);
212
- i0.ɵɵelementEnd();
213
- i0.ɵɵelementEnd();
214
- i0.ɵɵelementEnd();
215
- i0.ɵɵelementStart(19, "div", 12);
216
- i0.ɵɵelementStart(20, "button", 13);
217
- i0.ɵɵlistener("click", function PurchaseMoreLicensesComponent_Template_button_click_20_listener() { return ctx.pay(); });
218
- i0.ɵɵtext(21);
219
- i0.ɵɵtemplate(22, PurchaseMoreLicensesComponent_i_22_Template, 1, 0, "i", 14);
220
- i0.ɵɵelementEnd();
221
- i0.ɵɵelementEnd();
222
- i0.ɵɵelementEnd();
223
- } if (rf & 2) {
224
- i0.ɵɵadvance(10);
225
- i0.ɵɵtextInterpolate1("Selected plan : ", ctx.selectedPlanName, " ");
226
- i0.ɵɵadvance(4);
227
- i0.ɵɵproperty("ngModel", ctx.noOfPurchases);
228
- i0.ɵɵadvance(3);
229
- i0.ɵɵproperty("ngIf", !ctx.isNewSub);
230
- i0.ɵɵadvance(1);
231
- i0.ɵɵproperty("ngIf", ctx.isNewSub);
232
- i0.ɵɵadvance(2);
233
- i0.ɵɵproperty("disabled", ctx.totalAmount == 0 || ctx.isDisable || ctx.isSucessPay);
234
- i0.ɵɵadvance(1);
235
- i0.ɵɵtextInterpolate1(" Pay $", ctx.totalAmount, " ");
236
- i0.ɵɵadvance(1);
237
- i0.ɵɵproperty("ngIf", ctx.isSucessPay);
238
- } }, directives: [i1.MatDialogClose, i5.FaIconComponent, i1.MatDialogContent, i6.MatCardTitle, i7.DefaultLayoutDirective, i7.DefaultFlexDirective, i7.DefaultLayoutGapDirective, i8.MatFormField, i9.MatInput, i10.DefaultValueAccessor, i10.RequiredValidator, i10.NgControlStatus, i10.NgModel, i11.NgIf, i12.MatButton, i13.MatSelect, i14.MatOption], encapsulation: 2 });
239
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PurchaseMoreLicensesComponent, [{
240
- type: Component,
241
- args: [{
242
- selector: "app-purchase-licenses",
243
- templateUrl: "./purchase-more-licenses.html"
244
- }]
245
- }], function () { return [{ type: undefined, decorators: [{
246
- type: Inject,
247
- args: [MAT_DIALOG_DATA]
248
- }] }, { type: i1.MatDialogRef }, { type: i2.ToastrService }, { type: i3.Router }, { type: i4.PaymentService }]; }, null); })();
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2UtbW9yZS1saWNlbnNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHVyY2hhc2UtbW9yZS1saWNlbnNlcy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHVyY2hhc2UtbW9yZS1saWNlbnNlcy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekUsT0FBTyxFQUFzQixPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDdkcsT0FBTyx1REFBdUQsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDaUJ2RSx5Q0FBcUQ7SUFDbkQsc0NBQ3dGO0lBRG5DLGdQQUEwQiw2TkFBQTtJQUU3RSxzQ0FBMEI7SUFBQSx1QkFBTztJQUFBLGlCQUFhO0lBQzlDLHNDQUF5QjtJQUFBLHdCQUFRO0lBQUEsaUJBQWE7SUFDaEQsaUJBQWE7SUFDZixpQkFBaUI7OztJQUxzQyxlQUEwQjtJQUExQiw2Q0FBMEIsK0NBQUE7Ozs7SUFNakYseUNBQW9EO0lBQ2xELHNDQUNpRDtJQURJLGdQQUEwQiw2TkFBQTtJQUU3RSxzQ0FBMEI7SUFBQSx1QkFBTztJQUFBLGlCQUFhO0lBQzlDLHND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QUEsNkJBQU87UUFBQSxhQUFxQztRQUFBLGlCQUFRO1FBQUEsaUJBQU07UUFDM0YsK0JBQWlGO1FBQy9FLCtCQUFrQztRQUNoQywwQ0FBbUM7UUFDakMsa0NBQ1c7UUFESyw4SkFBMkIsK0ZBQXlDLHFCQUFpQixJQUExRDtRQUEzQyxpQkFDVztRQUNiLGlCQUFpQjtRQUNuQixpQkFBTTtRQUNSLGlCQUFNO1FBQ04sK0JBQWlGO1FBQy9FLCtCQUFrQztRQUNoQyx1R0FNaUI7UUFDakIsdUdBTWlCO1FBQ25CLGlCQUFNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTtRQUNOLGdDQUFrQjtRQUNoQixtQ0FDMkQ7UUFEcUIsMkdBQVMsU0FBSyxJQUFDO1FBQ25DLGFBQzFEO1FBQUEsNkVBQXlEO1FBQzNELGlCQUFTO1FBQ1gsaUJBQU07UUFFUixpQkFBTTs7UUFuQ3NDLGdCQUFxQztRQUFyQyxvRUFBcUM7UUFJdkQsZUFBMkI7UUFBM0IsMkNBQTJCO1FBT1QsZUFBZTtRQUFmLG9DQUFlO1FBT2YsZUFBYztRQUFkLG1DQUFjO1FBWXBELGVBQXdEO1FBQXhELG1GQUF3RDtRQUFFLGVBQzFEO1FBRDBELHFEQUMxRDtRQUFrQyxlQUFpQjtRQUFqQixzQ0FBaUI7O3VGRDdCNUMsNkJBQTZCO2NBTHpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxXQUFXLEVBQUUsK0JBQStCO2FBQzdDOztzQkFrQmMsTUFBTTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgTmd4VWlMb2FkZXJTZXJ2aWNlLCBTUElOTkVSIH0gZnJvbSAnbmd4LXVpLWxvYWRlcic7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2xvY2Fsc3RvcmFnZS1wcm9wZXJ0aWVzJztcclxuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XHJcbmltcG9ydCB7IENvbXBhbnlQYXltZW50VXBzZXJ0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcGFueS1wYXltZW50LW1vZGVsJztcclxuaW1wb3J0IHsgUGF5bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXB1cmNoYXNlLWxpY2Vuc2VzXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9wdXJjaGFzZS1tb3JlLWxpY2Vuc2VzLmh0bWxcIlxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlTW9yZUxpY2Vuc2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgaGFuZGxlcjogYW55ID0gbnVsbDtcclxuICB0b3RhbEFtb3VudDogYW55ID0gMDtcclxuICBpc0FueU9wZXJhdGlvbklzSW5wcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRnJvbVJvdXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWN0aXZlVXNlcnM6IGFueSA9IDA7XHJcbiAgcGxhbkludGVydmFsOiBhbnk7XHJcbiAgbm9PZlB1cmNoYXNlczogYW55O1xyXG4gIHNlbGVjdGVkUGxhbk5hbWU6IGFueTtcclxuICBzdWJzY3JpcHRpb25UeXBlOiBzdHJpbmc7XHJcbiAgY29tcGFueU1haW5Mb2dvOiBhbnkgPSBcImh0dHBzOi8vYnZpZXdzdG9yYWdlLmJsb2IuY29yZS53aW5kb3dzLm5ldC82NjcxY2QwZC01YjkxLTQwNDQtYmRjYy1lMWYyMDFjMDg2YzUvcHJvamVjdHMvZDcyZDFjMmYtZGZiZS00ZDQ4LTk2MDUtY2QzYjdlMzhlZDE3L01haW4tTG9nby05Mjc3Y2M0Yi0wYzFmLTQwOTMtYTkxNy0xYTY1ZTg3NGIzYzkucG5nXCI7XHJcbiAgaXNEaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNOZXdTdWI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzcGlubmVyVHlwZSA9IFNQSU5ORVIucHVsc2U7XHJcbiAgaXNTdWNlc3NQYXk6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnlcclxuICAgICwgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFB1cmNoYXNlTW9yZUxpY2Vuc2VzQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlXHJcbiAgICAsIHB1YmxpYyByb3V0ZXI6IFJvdXRlclxyXG4gICAgLCBwcml2YXRlIHBheW1lbnRTZXJ2aWNlOiBQYXltZW50U2VydmljZSwpIHtcclxuICAgIGlmIChkYXRhICE9IHVuZGVmaW5lZCAmJiBkYXRhICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFBsYW5OYW1lID0gZGF0YS5wcm9kdWN0TmFtZTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25UeXBlID0gdGhpcy5wbGFuSW50ZXJ2YWwgPSBkYXRhLnN1YnNjcmlwdGlvblR5cGU7XHJcbiAgICAgIHRoaXMuYWN0aXZlVXNlcnMgPSB0aGlzLm5vT2ZQdXJjaGFzZXMgPSBkYXRhLm5vT2ZQdXJjaGFzZXM7XHJcbiAgICAgIHRoaXMuaXNOZXdTdWIgPSBkYXRhLmlzU3Vic2NyaWJlck5ldztcclxuICAgICAgdGhpcy5jb3N0Q2FsY3VsYXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBpc1JlbG9hZDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBjb3N0Q2FsY3VsYXRpb24oKSB7XHJcbiAgICB2YXIgcHVyY2hhc2VzID0gTnVtYmVyKHRoaXMubm9PZlB1cmNoYXNlcylcclxuICAgIGlmICghaXNOYU4ocHVyY2hhc2VzKSAmJiB0aGlzLmFjdGl2ZVVzZXJzID4gcHVyY2hhc2VzKSB7XHJcbiAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcoXCJOby4gb2YgcHVyY2hhc2VzIHNob3VsZCBiZSBtb3JlIHRoYW4gcHJldmlvdXMgb25lJ3NcIik7XHJcbiAgICAgIHRoaXMuaXNEaXNhYmxlID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0Rpc2FibGUgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLm5vT2ZQdXJjaGFzZXMgIT0gdW5kZWZpbmVkICYmIHRoaXMubm9PZlB1cmNoYXNlcyAhPSBudWxsICYmIHRoaXMubm9PZlB1cmNoYXNlcyAhPSAnJ1xyXG4gICAgICAmJiB0aGlzLnBsYW5JbnRlcnZhbCAhPSB1bmRlZmluZWQgJiYgdGhpcy5wbGFuSW50ZXJ2YWwgIT0gbnVsbCAmJiB0aGlzLnBsYW5JbnRlcnZhbCAhPSAnJyAmJiAhaXNOYU4ocHVyY2hhc2VzKSkge1xyXG4gICAgICB2YXIgcGVyVXNlciA9IDA7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUGxhbk5hbWUgPT0gJ1N0YW5kYXJkJylcclxuICAgICAgICBwZXJVc2VyID0gMztcclxuICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZFBsYW5OYW1lID09ICdQcmVtaXVtJylcclxuICAgICAgICBwZXJVc2VyID0gNTtcclxuICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZFBsYW5OYW1lID09ICdFbnRlcnByaXNlJylcclxuICAgICAgICBwZXJVc2VyID0gMTA7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBwZXJVc2VyID0gMDtcclxuXHJcbiAgICAgIHZhciBub3JtYWxUb3RhbCA9IHBlclVzZXIgKiBOdW1iZXIodGhpcy5ub09mUHVyY2hhc2VzKTtcclxuICAgICAgaWYgKHRoaXMucGxhbkludGVydmFsID09ICdtb250aCcpIHtcclxuICAgICAgICB0aGlzLnRvdGFsQW1vdW50ID0gbm9ybWFsVG90YWwudG9GaXhlZCgyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnBsYW5JbnRlcnZhbCA9PSAneWVhcicpIHtcclxuICAgICAgICB0aGlzLnRvdGFsQW1vdW50ID0gKChub3JtYWxUb3RhbCAtIChub3JtYWxUb3RhbCAqIDIwIC8gMTAwKSkgKiAxMikudG9GaXhlZCgyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy50b3RhbEFtb3VudCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBheSgpIHtcclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdmFyIHNlcnZpY2UgPSB0aGlzLnBheW1lbnRTZXJ2aWNlO1xyXG4gICAgdmFyIHB1cmNoYXNlcyA9IHRoaXMubm9PZlB1cmNoYXNlcztcclxuICAgIHZhciB0b3RhbEFtdCA9IHRoaXMudG90YWxBbW91bnQ7XHJcbiAgICB2YXIgcGxhbiA9IHRoaXMuc2VsZWN0ZWRQbGFuTmFtZTtcclxuICAgIHZhciBwbGFuSW50ZXJ2YWwgPSB0aGlzLnBsYW5JbnRlcnZhbDtcclxuICAgIHZhciB0b3N0ZXJzID0gdGhpcy50b2FzdHI7XHJcbiAgICB2YXIgcm91dGVyID0gdGhpcy5yb3V0ZXI7XHJcbiAgICB2YXIgZGFpbG9nUmVmID0gdGhpcy5kaWFsb2dSZWY7XHJcbiAgICB0aGlzLmlzU3VjZXNzUGF5ID0gdHJ1ZTtcclxuICAgIHZhciBpc1N1Y2Vzc1BheSA9IHRoaXMuaXNTdWNlc3NQYXk7XHJcbiAgICB2YXIgaGFuZGxlciA9ICg8YW55PndpbmRvdykuU3RyaXBlQ2hlY2tvdXQuY29uZmlndXJlKHtcclxuICAgICAga2V5OiBlbnZpcm9ubWVudC5zdHJpcGVBUElLZXksXHJcbiAgICAgIGltYWdlOiAnaHR0cHM6Ly9idmlld3N0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0LzRhZmViNDQ0LWU4MjYtNGY5NS1hYzQxLTIxNzVlMzZhMGMxNi9ocm0vMGIyOTIxYTktZTkzMC00MDEzLTkwNDctNjcwYjUzNTJmMzA4L3Nub3Zhc3lzLTcyMTEyYjAzLTk1ZGMtNDMyYy1hZWVmLWM4OWZhMTNlYWUzMi5wbmcnLFxyXG4gICAgICBsb2NhbGU6ICdhdXRvJyxcclxuICAgICAgdG9rZW46IGZ1bmN0aW9uICh0b2tlbjogYW55KSB7XHJcbiAgICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgICB2YXIgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbCA9IG5ldyBDb21wYW55UGF5bWVudFVwc2VydE1vZGVsKCk7XHJcbiAgICAgICAgICBjb21wYW55UGF5bWVudFVwc2VydE1vZGVsLkNhcmRIb2xkZXJOYW1lID0gdG9rZW4uY2FyZC5uYW1lO1xyXG4gICAgICAgICAgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbC5DYXJkSG9sZGVyQmlsbGluZ0FkZHJlc3MgPSB0b2tlbi5jYXJkLm5hbWU7XHJcbiAgICAgICAgICBjb21wYW55UGF5bWVudFVwc2VydE1vZGVsLlBsYW5OYW1lID0gcGxhbjtcclxuICAgICAgICAgIGNvbXBhbnlQYXltZW50VXBzZXJ0TW9kZWwuU3Vic2NyaXB0aW9uVHlwZSA9IHBsYW5JbnRlcnZhbDtcclxuICAgICAgICAgIGNvbXBhbnlQYXltZW50VXBzZXJ0TW9kZWwuVG90YWxBbW91bnQgPSB0b3RhbEFtdDtcclxuICAgICAgICAgIGNvbXBhbnlQYXltZW50VXBzZXJ0TW9kZWwuTm9PZlB1cmNoYXNlcyA9IHB1cmNoYXNlcztcclxuICAgICAgICAgIGNvbXBhbnlQYXltZW50VXBzZXJ0TW9kZWwuRW1haWwgPSB0b2tlbi5lbWFpbDtcclxuICAgICAgICAgIGNvbXBhbnlQYXltZW50VXBzZXJ0TW9kZWwuU3RyaXBlVG9rZW5JZCA9IHRva2VuLmlkO1xyXG4gICAgICAgICAgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbC5BZGRyZXNzT3B0aW9ucyA9IHRva2VuLmNhcmQ7XHJcbiAgICAgICAgICBzZXJ2aWNlLnVwc2VydENvbXBhbnlQYXltZW50cyhjb21wYW55UGF5bWVudFVwc2VydE1vZGVsKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZURhdGEuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdG9zdGVycy5zdWNjZXNzKFwiWW91ciBzdWJzY3JpcHRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZFwiKTtcclxuICAgICAgICAgICAgICBpc1N1Y2Vzc1BheSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZShbJy9zaGVsbC9BY2NvdW50cyddKTtcclxuICAgICAgICAgICAgICBkYWlsb2dSZWYuY2xvc2UoeyBpc1JlbG9hZDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0b3N0ZXJzLmVycm9yKHJlc3BvbnNlRGF0YS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIGlzU3VjZXNzUGF5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmlzU3VjZXNzUGF5ID0gaXNTdWNlc3NQYXk7XHJcbiAgICB2YXIgZGVzY3JpcHRpb24gPSB0aGlzLnBsYW5JbnRlcnZhbCA9PSAnbW9udGgnID8gJ01vbnRobHkgc3Vic2NyaXB0aW9uJyA6ICdBbm51YWwgc3Vic2NyaXB0aW9uJ1xyXG4gICAgaGFuZGxlci5vcGVuKHtcclxuICAgICAgbmFtZTogdGhpcy5zZWxlY3RlZFBsYW5OYW1lLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXHJcbiAgICAgIGFtb3VudDogdGhpcy50b3RhbEFtb3VudCAqIDEwMCxcclxuICAgICAgY3VycmVuY3k6ICdHQlAnLFxyXG4gICAgICBiaWxsaW5nQWRkcmVzczogXCJ0cnVlXCIsXHJcbiAgICAgIHNoaXBwaW5nQWRkcmVzczogXCJmYWxzZVwiLFxyXG4gICAgICBjbG9zZWQ6ICgpPT57dGhpcy5jbG9zZTIoKTt9IFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2xvc2UyKCl7XHJcbiAgICB0aGlzLmlzU3VjZXNzUGF5PSF0aGlzLmlzU3VjZXNzUGF5O1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJjdXN0b20tZGlhbG9nXCI+XHJcbiAgPGRpdiBjbGFzcz1cImN1c3RvbS1jbG9zZVwiIG1hdC1kaWFsb2ctY2xvc2UgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiIGNsYXNzPVwicHJvamVjdC1kaWFsb2dcIj48L2ZhLWljb24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJwcm9qZWN0LWRpYWxvZ0NvbnRlbnRcIiBpZD1cInN0eWxlLTFcIj5cclxuXHJcbiAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHBiLTFcIj5TdWJzY3JpcHRpb248L2Rpdj5cclxuICA8L21hdC1jYXJkLXRpdGxlPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9naW4tcGFnZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjUwXCIgZnhGbGV4LnhzPVwiMTAwXCI+PGxhYmVsPlNlbGVjdGVkIHBsYW4gOiB7e3NlbGVjdGVkUGxhbk5hbWV9fSA8L2xhYmVsPjwvZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0LnhzPVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhMYXlvdXRHYXAueHM9XCIwcHhcIj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeEZsZXgueHM9XCIxMDBcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJub09mUHVyY2hhc2VzXCIgcGxhY2Vob2xkZXI9XCJOby5vZiBwdXJjaGFzZXNcIiAoY2hhbmdlKT1cImNvc3RDYWxjdWxhdGlvbigpXCJcclxuICAgICAgICAgICAgcmVxdWlyZWQ+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dC54cz1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0R2FwLnhzPVwiMHB4XCI+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwXCIgZnhGbGV4LnhzPVwiMTAwXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiICpuZ0lmPVwiIWlzTmV3U3ViXCI+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIHN1YnNjcmlwdGlvbiB0eXBlXCIgWyhuZ01vZGVsKV09XCJwbGFuSW50ZXJ2YWxcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic3Vic2NyaXB0aW9uVHlwZSA9PSd5ZWFyJ1wiIChzZWxlY3Rpb25DaGFuZ2UpPVwiY29zdENhbGN1bGF0aW9uKClcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJtb250aFwiPk1vbnRobHk8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwieWVhclwiPkFubnVhbGx5PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiICpuZ0lmPVwiaXNOZXdTdWJcIj5cclxuICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IGEgc3Vic2NyaXB0aW9uIHR5cGVcIiBbKG5nTW9kZWwpXT1cInBsYW5JbnRlcnZhbFwiXHJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY29zdENhbGN1bGF0aW9uKClcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJtb250aFwiPk1vbnRobHk8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwieWVhclwiPkFubnVhbGx5PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm10LTFcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJmdWxsLXdpZHRoIG1iLTEgYnRuIGJ0bi1ibG9ja1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJwYXkoKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJ0b3RhbEFtb3VudCA9PSAwIHx8IGlzRGlzYWJsZSB8fGlzU3VjZXNzUGF5XCI+IFBheSAke3t0b3RhbEFtb3VudH19XHJcbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3BpbiBmYS1zcGlubmVyXCIgKm5nSWY9XCJpc1N1Y2Vzc1BheVwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPG5neC11aS1sb2FkZXIgZmdzU2l6ZT1cIjE4MFwiIFtmZ3NUeXBlXT1cInNwaW5uZXJUeXBlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9uZ3gtdWktbG9hZGVyPiAtLT5cclxuPC9kaXY+Il19
1
+ import { Component, Inject } from "@angular/core";
2
+ import { MAT_DIALOG_DATA } from "@angular/material/dialog";
3
+ import { SPINNER } from 'ngx-ui-loader';
4
+ import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
5
+ import '../../../globaldependencies/helpers/fontawesome-icons';
6
+ import { CompanyPaymentUpsertModel } from '../../models/company-payment-model';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/dialog";
9
+ import * as i2 from "ngx-toastr";
10
+ import * as i3 from "@angular/router";
11
+ import * as i4 from "../../services/payment.service";
12
+ import * as i5 from "@fortawesome/angular-fontawesome";
13
+ import * as i6 from "@angular/material/card";
14
+ import * as i7 from "@angular/flex-layout/flex";
15
+ import * as i8 from "@angular/material/form-field";
16
+ import * as i9 from "@angular/material/input";
17
+ import * as i10 from "@angular/forms";
18
+ import * as i11 from "@angular/common";
19
+ import * as i12 from "@angular/material/button";
20
+ import * as i13 from "@angular/material/select";
21
+ import * as i14 from "@angular/material/core";
22
+ function PurchaseMoreLicensesComponent_mat_form_field_17_Template(rf, ctx) { if (rf & 1) {
23
+ const _r4 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "mat-form-field", 9);
25
+ i0.ɵɵelementStart(1, "mat-select", 15);
26
+ i0.ɵɵlistener("ngModelChange", function PurchaseMoreLicensesComponent_mat_form_field_17_Template_mat_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return ctx_r3.planInterval = $event; })("selectionChange", function PurchaseMoreLicensesComponent_mat_form_field_17_Template_mat_select_selectionChange_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.costCalculation(); });
27
+ i0.ɵɵelementStart(2, "mat-option", 16);
28
+ i0.ɵɵtext(3, "Monthly");
29
+ i0.ɵɵelementEnd();
30
+ i0.ɵɵelementStart(4, "mat-option", 17);
31
+ i0.ɵɵtext(5, "Annually");
32
+ i0.ɵɵelementEnd();
33
+ i0.ɵɵelementEnd();
34
+ i0.ɵɵelementEnd();
35
+ } if (rf & 2) {
36
+ const ctx_r0 = i0.ɵɵnextContext();
37
+ i0.ɵɵadvance(1);
38
+ i0.ɵɵproperty("ngModel", ctx_r0.planInterval)("disabled", ctx_r0.subscriptionType == "year");
39
+ } }
40
+ function PurchaseMoreLicensesComponent_mat_form_field_18_Template(rf, ctx) { if (rf & 1) {
41
+ const _r7 = i0.ɵɵgetCurrentView();
42
+ i0.ɵɵelementStart(0, "mat-form-field", 9);
43
+ i0.ɵɵelementStart(1, "mat-select", 18);
44
+ i0.ɵɵlistener("ngModelChange", function PurchaseMoreLicensesComponent_mat_form_field_18_Template_mat_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.planInterval = $event; })("selectionChange", function PurchaseMoreLicensesComponent_mat_form_field_18_Template_mat_select_selectionChange_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return ctx_r8.costCalculation(); });
45
+ i0.ɵɵelementStart(2, "mat-option", 16);
46
+ i0.ɵɵtext(3, "Monthly");
47
+ i0.ɵɵelementEnd();
48
+ i0.ɵɵelementStart(4, "mat-option", 17);
49
+ i0.ɵɵtext(5, "Annually");
50
+ i0.ɵɵelementEnd();
51
+ i0.ɵɵelementEnd();
52
+ i0.ɵɵelementEnd();
53
+ } if (rf & 2) {
54
+ const ctx_r1 = i0.ɵɵnextContext();
55
+ i0.ɵɵadvance(1);
56
+ i0.ɵɵproperty("ngModel", ctx_r1.planInterval);
57
+ } }
58
+ function PurchaseMoreLicensesComponent_i_22_Template(rf, ctx) { if (rf & 1) {
59
+ i0.ɵɵelement(0, "i", 19);
60
+ } }
61
+ export class PurchaseMoreLicensesComponent {
62
+ constructor(data, dialogRef, toastr, router, paymentService) {
63
+ this.data = data;
64
+ this.dialogRef = dialogRef;
65
+ this.toastr = toastr;
66
+ this.router = router;
67
+ this.paymentService = paymentService;
68
+ this.handler = null;
69
+ this.totalAmount = 0;
70
+ this.isAnyOperationIsInprogress = false;
71
+ this.isFromRoute = false;
72
+ this.activeUsers = 0;
73
+ this.companyMainLogo = "https://bviewstorage.blob.core.windows.net/6671cd0d-5b91-4044-bdcc-e1f201c086c5/projects/d72d1c2f-dfbe-4d48-9605-cd3b7e38ed17/Main-Logo-9277cc4b-0c1f-4093-a917-1a65e874b3c9.png";
74
+ this.isDisable = false;
75
+ this.isNewSub = false;
76
+ this.spinnerType = SPINNER.pulse;
77
+ if (data != undefined && data != null) {
78
+ this.selectedPlanName = data.productName;
79
+ this.subscriptionType = this.planInterval = data.subscriptionType;
80
+ this.activeUsers = this.noOfPurchases = data.noOfPurchases;
81
+ this.isNewSub = data.isSubscriberNew;
82
+ this.costCalculation();
83
+ }
84
+ }
85
+ ngOnInit() {
86
+ }
87
+ close() {
88
+ this.dialogRef.close({ isReload: false });
89
+ }
90
+ costCalculation() {
91
+ var purchases = Number(this.noOfPurchases);
92
+ if (!isNaN(purchases) && this.activeUsers > purchases) {
93
+ this.toastr.warning("No. of purchases should be more than previous one's");
94
+ this.isDisable = true;
95
+ return;
96
+ }
97
+ this.isDisable = false;
98
+ if (this.noOfPurchases != undefined && this.noOfPurchases != null && this.noOfPurchases != ''
99
+ && this.planInterval != undefined && this.planInterval != null && this.planInterval != '' && !isNaN(purchases)) {
100
+ var perUser = 0;
101
+ if (this.selectedPlanName == 'Standard')
102
+ perUser = 3;
103
+ else if (this.selectedPlanName == 'Premium')
104
+ perUser = 5;
105
+ else if (this.selectedPlanName == 'Enterprise')
106
+ perUser = 10;
107
+ else
108
+ perUser = 0;
109
+ var normalTotal = perUser * Number(this.noOfPurchases);
110
+ if (this.planInterval == 'month') {
111
+ this.totalAmount = normalTotal.toFixed(2);
112
+ }
113
+ else if (this.planInterval == 'year') {
114
+ this.totalAmount = ((normalTotal - (normalTotal * 20 / 100)) * 12).toFixed(2);
115
+ }
116
+ else
117
+ this.totalAmount = 0;
118
+ }
119
+ }
120
+ pay() {
121
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
122
+ var service = this.paymentService;
123
+ var purchases = this.noOfPurchases;
124
+ var totalAmt = this.totalAmount;
125
+ var plan = this.selectedPlanName;
126
+ var planInterval = this.planInterval;
127
+ var tosters = this.toastr;
128
+ var router = this.router;
129
+ var dailogRef = this.dialogRef;
130
+ this.isSucessPay = true;
131
+ var isSucessPay = this.isSucessPay;
132
+ var handler = window.StripeCheckout.configure({
133
+ key: environment.stripeAPIKey,
134
+ image: 'https://bviewstorage.blob.core.windows.net/4afeb444-e826-4f95-ac41-2175e36a0c16/hrm/0b2921a9-e930-4013-9047-670b5352f308/snovasys-72112b03-95dc-432c-aeef-c89fa13eae32.png',
135
+ locale: 'auto',
136
+ token: function (token) {
137
+ if (token) {
138
+ var companyPaymentUpsertModel = new CompanyPaymentUpsertModel();
139
+ companyPaymentUpsertModel.CardHolderName = token.card.name;
140
+ companyPaymentUpsertModel.CardHolderBillingAddress = token.card.name;
141
+ companyPaymentUpsertModel.PlanName = plan;
142
+ companyPaymentUpsertModel.SubscriptionType = planInterval;
143
+ companyPaymentUpsertModel.TotalAmount = totalAmt;
144
+ companyPaymentUpsertModel.NoOfPurchases = purchases;
145
+ companyPaymentUpsertModel.Email = token.email;
146
+ companyPaymentUpsertModel.StripeTokenId = token.id;
147
+ companyPaymentUpsertModel.AddressOptions = token.card;
148
+ service.upsertCompanyPayments(companyPaymentUpsertModel).subscribe((responseData) => {
149
+ if (responseData.success == true) {
150
+ tosters.success("Your subscription has been successfully completed");
151
+ isSucessPay = false;
152
+ router.navigate(['/shell/Accounts']);
153
+ dailogRef.close({ isReload: true });
154
+ }
155
+ else {
156
+ tosters.error(responseData.apiResponseMessages[0].message);
157
+ isSucessPay = false;
158
+ }
159
+ });
160
+ }
161
+ }
162
+ });
163
+ this.isSucessPay = isSucessPay;
164
+ var description = this.planInterval == 'month' ? 'Monthly subscription' : 'Annual subscription';
165
+ handler.open({
166
+ name: this.selectedPlanName,
167
+ description: description,
168
+ amount: this.totalAmount * 100,
169
+ currency: 'GBP',
170
+ billingAddress: "true",
171
+ shippingAddress: "false",
172
+ closed: () => { this.close2(); }
173
+ });
174
+ }
175
+ close2() {
176
+ this.isSucessPay = !this.isSucessPay;
177
+ }
178
+ }
179
+ PurchaseMoreLicensesComponent.ɵfac = function PurchaseMoreLicensesComponent_Factory(t) { return new (t || PurchaseMoreLicensesComponent)(i0.ɵɵdirectiveInject(MAT_DIALOG_DATA), i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(i2.ToastrService), i0.ɵɵdirectiveInject(i3.Router), i0.ɵɵdirectiveInject(i4.PaymentService)); };
180
+ PurchaseMoreLicensesComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PurchaseMoreLicensesComponent, selectors: [["app-purchase-licenses"]], decls: 23, vars: 7, consts: [[1, "custom-dialog"], ["mat-dialog-close", "", 1, "custom-close", 3, "click"], ["icon", "times", 1, "project-dialog"], ["mat-dialog-content", "", "id", "style-1", 1, "project-dialogContent"], [1, "text-center", "pb-1"], ["fxLayout", "column", 1, "login-page"], ["fxFlex", "50", "fxFlex.xs", "100"], ["fxLayout", "row", "fxLayout.xs", "column", "fxLayoutGap", "10px", "fxLayoutGap.xs", "0px"], ["fxFlex", "100", "fxFlex.xs", "100"], [1, "full-width"], ["matInput", "", "placeholder", "No.of purchases", "required", "", 3, "ngModel", "ngModelChange", "change"], ["class", "full-width", 4, "ngIf"], [1, "mt-1"], ["mat-raised-button", "", "color", "primary", 1, "full-width", "mb-1", "btn", "btn-block", 3, "disabled", "click"], ["class", "fa fa-spin fa-spinner", 4, "ngIf"], ["placeholder", "Select a subscription type", "required", "", 3, "ngModel", "disabled", "ngModelChange", "selectionChange"], ["value", "month"], ["value", "year"], ["placeholder", "Select a subscription type", "required", "", 3, "ngModel", "ngModelChange", "selectionChange"], [1, "fa", "fa-spin", "fa-spinner"]], template: function PurchaseMoreLicensesComponent_Template(rf, ctx) { if (rf & 1) {
181
+ i0.ɵɵelementStart(0, "div", 0);
182
+ i0.ɵɵelementStart(1, "div", 1);
183
+ i0.ɵɵlistener("click", function PurchaseMoreLicensesComponent_Template_div_click_1_listener() { return ctx.close(); });
184
+ i0.ɵɵelement(2, "fa-icon", 2);
185
+ i0.ɵɵelementEnd();
186
+ i0.ɵɵelementEnd();
187
+ i0.ɵɵelementStart(3, "div", 3);
188
+ i0.ɵɵelementStart(4, "mat-card-title");
189
+ i0.ɵɵelementStart(5, "div", 4);
190
+ i0.ɵɵtext(6, "Subscription");
191
+ i0.ɵɵelementEnd();
192
+ i0.ɵɵelementEnd();
193
+ i0.ɵɵelementStart(7, "div", 5);
194
+ i0.ɵɵelementStart(8, "div", 6);
195
+ i0.ɵɵelementStart(9, "label");
196
+ i0.ɵɵtext(10);
197
+ i0.ɵɵelementEnd();
198
+ i0.ɵɵelementEnd();
199
+ i0.ɵɵelementStart(11, "div", 7);
200
+ i0.ɵɵelementStart(12, "div", 8);
201
+ i0.ɵɵelementStart(13, "mat-form-field", 9);
202
+ i0.ɵɵelementStart(14, "input", 10);
203
+ i0.ɵɵlistener("ngModelChange", function PurchaseMoreLicensesComponent_Template_input_ngModelChange_14_listener($event) { return ctx.noOfPurchases = $event; })("change", function PurchaseMoreLicensesComponent_Template_input_change_14_listener() { return ctx.costCalculation(); });
204
+ i0.ɵɵelementEnd();
205
+ i0.ɵɵelementEnd();
206
+ i0.ɵɵelementEnd();
207
+ i0.ɵɵelementEnd();
208
+ i0.ɵɵelementStart(15, "div", 7);
209
+ i0.ɵɵelementStart(16, "div", 8);
210
+ i0.ɵɵtemplate(17, PurchaseMoreLicensesComponent_mat_form_field_17_Template, 6, 2, "mat-form-field", 11);
211
+ i0.ɵɵtemplate(18, PurchaseMoreLicensesComponent_mat_form_field_18_Template, 6, 1, "mat-form-field", 11);
212
+ i0.ɵɵelementEnd();
213
+ i0.ɵɵelementEnd();
214
+ i0.ɵɵelementEnd();
215
+ i0.ɵɵelementStart(19, "div", 12);
216
+ i0.ɵɵelementStart(20, "button", 13);
217
+ i0.ɵɵlistener("click", function PurchaseMoreLicensesComponent_Template_button_click_20_listener() { return ctx.pay(); });
218
+ i0.ɵɵtext(21);
219
+ i0.ɵɵtemplate(22, PurchaseMoreLicensesComponent_i_22_Template, 1, 0, "i", 14);
220
+ i0.ɵɵelementEnd();
221
+ i0.ɵɵelementEnd();
222
+ i0.ɵɵelementEnd();
223
+ } if (rf & 2) {
224
+ i0.ɵɵadvance(10);
225
+ i0.ɵɵtextInterpolate1("Selected plan : ", ctx.selectedPlanName, " ");
226
+ i0.ɵɵadvance(4);
227
+ i0.ɵɵproperty("ngModel", ctx.noOfPurchases);
228
+ i0.ɵɵadvance(3);
229
+ i0.ɵɵproperty("ngIf", !ctx.isNewSub);
230
+ i0.ɵɵadvance(1);
231
+ i0.ɵɵproperty("ngIf", ctx.isNewSub);
232
+ i0.ɵɵadvance(2);
233
+ i0.ɵɵproperty("disabled", ctx.totalAmount == 0 || ctx.isDisable || ctx.isSucessPay);
234
+ i0.ɵɵadvance(1);
235
+ i0.ɵɵtextInterpolate1(" Pay $", ctx.totalAmount, " ");
236
+ i0.ɵɵadvance(1);
237
+ i0.ɵɵproperty("ngIf", ctx.isSucessPay);
238
+ } }, directives: [i1.MatDialogClose, i5.FaIconComponent, i1.MatDialogContent, i6.MatCardTitle, i7.DefaultLayoutDirective, i7.DefaultFlexDirective, i7.DefaultLayoutGapDirective, i8.MatFormField, i9.MatInput, i10.DefaultValueAccessor, i10.RequiredValidator, i10.NgControlStatus, i10.NgModel, i11.NgIf, i12.MatButton, i13.MatSelect, i14.MatOption], encapsulation: 2 });
239
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PurchaseMoreLicensesComponent, [{
240
+ type: Component,
241
+ args: [{
242
+ selector: "app-purchase-licenses",
243
+ templateUrl: "./purchase-more-licenses.html"
244
+ }]
245
+ }], function () { return [{ type: undefined, decorators: [{
246
+ type: Inject,
247
+ args: [MAT_DIALOG_DATA]
248
+ }] }, { type: i1.MatDialogRef }, { type: i2.ToastrService }, { type: i3.Router }, { type: i4.PaymentService }]; }, null); })();
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2UtbW9yZS1saWNlbnNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHVyY2hhc2UtbW9yZS1saWNlbnNlcy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHVyY2hhc2UtbW9yZS1saWNlbnNlcy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekUsT0FBTyxFQUFzQixPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDdkcsT0FBTyx1REFBdUQsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDaUJ2RSx5Q0FBcUQ7SUFDbkQsc0NBQ3dGO0lBRG5DLGdQQUEwQiw2TkFBQTtJQUU3RSxzQ0FBMEI7SUFBQSx1QkFBTztJQUFBLGlCQUFhO0lBQzlDLHNDQUF5QjtJQUFBLHdCQUFRO0lBQUEsaUJBQWE7SUFDaEQsaUJBQWE7SUFDZixpQkFBaUI7OztJQUxzQyxlQUEwQjtJQUExQiw2Q0FBMEIsK0NBQUE7Ozs7SUFNakYseUNBQW9EO0lBQ2xELHNDQUNpRDtJQURJLGdQQUEwQiw2TkFBQTtJQUU3RSxzQ0FBMEI7SUFBQSx1QkFBTztJQUFBLGlCQUFhO0lBQzlDLHND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QUEsNkJBQU87UUFBQSxhQUFxQztRQUFBLGlCQUFRO1FBQUEsaUJBQU07UUFDM0YsK0JBQWlGO1FBQy9FLCtCQUFrQztRQUNoQywwQ0FBbUM7UUFDakMsa0NBQ1c7UUFESyw4SkFBMkIsK0ZBQXlDLHFCQUFpQixJQUExRDtRQUEzQyxpQkFDVztRQUNiLGlCQUFpQjtRQUNuQixpQkFBTTtRQUNSLGlCQUFNO1FBQ04sK0JBQWlGO1FBQy9FLCtCQUFrQztRQUNoQyx1R0FNaUI7UUFDakIsdUdBTWlCO1FBQ25CLGlCQUFNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTtRQUNOLGdDQUFrQjtRQUNoQixtQ0FDMkQ7UUFEcUIsMkdBQVMsU0FBSyxJQUFDO1FBQ25DLGFBQzFEO1FBQUEsNkVBQXlEO1FBQzNELGlCQUFTO1FBQ1gsaUJBQU07UUFFUixpQkFBTTs7UUFuQ3NDLGdCQUFxQztRQUFyQyxvRUFBcUM7UUFJdkQsZUFBMkI7UUFBM0IsMkNBQTJCO1FBT1QsZUFBZTtRQUFmLG9DQUFlO1FBT2YsZUFBYztRQUFkLG1DQUFjO1FBWXBELGVBQXdEO1FBQXhELG1GQUF3RDtRQUFFLGVBQzFEO1FBRDBELHFEQUMxRDtRQUFrQyxlQUFpQjtRQUFqQixzQ0FBaUI7O3VGRDdCNUMsNkJBQTZCO2NBTHpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxXQUFXLEVBQUUsK0JBQStCO2FBQzdDOztzQkFrQmMsTUFBTTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IE5neFVpTG9hZGVyU2VydmljZSwgU1BJTk5FUiB9IGZyb20gJ25neC11aS1sb2FkZXInO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XG5pbXBvcnQgeyBDb21wYW55UGF5bWVudFVwc2VydE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBhbnktcGF5bWVudC1tb2RlbCc7XG5pbXBvcnQgeyBQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtcHVyY2hhc2UtbGljZW5zZXNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9wdXJjaGFzZS1tb3JlLWxpY2Vuc2VzLmh0bWxcIlxufSlcblxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlTW9yZUxpY2Vuc2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBoYW5kbGVyOiBhbnkgPSBudWxsO1xuICB0b3RhbEFtb3VudDogYW55ID0gMDtcbiAgaXNBbnlPcGVyYXRpb25Jc0lucHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNGcm9tUm91dGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWN0aXZlVXNlcnM6IGFueSA9IDA7XG4gIHBsYW5JbnRlcnZhbDogYW55O1xuICBub09mUHVyY2hhc2VzOiBhbnk7XG4gIHNlbGVjdGVkUGxhbk5hbWU6IGFueTtcbiAgc3Vic2NyaXB0aW9uVHlwZTogc3RyaW5nO1xuICBjb21wYW55TWFpbkxvZ286IGFueSA9IFwiaHR0cHM6Ly9idmlld3N0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0LzY2NzFjZDBkLTViOTEtNDA0NC1iZGNjLWUxZjIwMWMwODZjNS9wcm9qZWN0cy9kNzJkMWMyZi1kZmJlLTRkNDgtOTYwNS1jZDNiN2UzOGVkMTcvTWFpbi1Mb2dvLTkyNzdjYzRiLTBjMWYtNDA5My1hOTE3LTFhNjVlODc0YjNjOS5wbmdcIjtcbiAgaXNEaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTmV3U3ViOiBib29sZWFuID0gZmFsc2U7XG4gIHNwaW5uZXJUeXBlID0gU1BJTk5FUi5wdWxzZTtcbiAgaXNTdWNlc3NQYXk6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55XG4gICAgLCBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UHVyY2hhc2VNb3JlTGljZW5zZXNDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlXG4gICAgLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXJcbiAgICAsIHByaXZhdGUgcGF5bWVudFNlcnZpY2U6IFBheW1lbnRTZXJ2aWNlLCkge1xuICAgIGlmIChkYXRhICE9IHVuZGVmaW5lZCAmJiBkYXRhICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQbGFuTmFtZSA9IGRhdGEucHJvZHVjdE5hbWU7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblR5cGUgPSB0aGlzLnBsYW5JbnRlcnZhbCA9IGRhdGEuc3Vic2NyaXB0aW9uVHlwZTtcbiAgICAgIHRoaXMuYWN0aXZlVXNlcnMgPSB0aGlzLm5vT2ZQdXJjaGFzZXMgPSBkYXRhLm5vT2ZQdXJjaGFzZXM7XG4gICAgICB0aGlzLmlzTmV3U3ViID0gZGF0YS5pc1N1YnNjcmliZXJOZXc7XG4gICAgICB0aGlzLmNvc3RDYWxjdWxhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IGlzUmVsb2FkOiBmYWxzZSB9KTtcbiAgfVxuXG4gIGNvc3RDYWxjdWxhdGlvbigpIHtcbiAgICB2YXIgcHVyY2hhc2VzID0gTnVtYmVyKHRoaXMubm9PZlB1cmNoYXNlcylcbiAgICBpZiAoIWlzTmFOKHB1cmNoYXNlcykgJiYgdGhpcy5hY3RpdmVVc2VycyA+IHB1cmNoYXNlcykge1xuICAgICAgdGhpcy50b2FzdHIud2FybmluZyhcIk5vLiBvZiBwdXJjaGFzZXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBwcmV2aW91cyBvbmUnc1wiKTtcbiAgICAgIHRoaXMuaXNEaXNhYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0Rpc2FibGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5ub09mUHVyY2hhc2VzICE9IHVuZGVmaW5lZCAmJiB0aGlzLm5vT2ZQdXJjaGFzZXMgIT0gbnVsbCAmJiB0aGlzLm5vT2ZQdXJjaGFzZXMgIT0gJydcbiAgICAgICYmIHRoaXMucGxhbkludGVydmFsICE9IHVuZGVmaW5lZCAmJiB0aGlzLnBsYW5JbnRlcnZhbCAhPSBudWxsICYmIHRoaXMucGxhbkludGVydmFsICE9ICcnICYmICFpc05hTihwdXJjaGFzZXMpKSB7XG4gICAgICB2YXIgcGVyVXNlciA9IDA7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFBsYW5OYW1lID09ICdTdGFuZGFyZCcpXG4gICAgICAgIHBlclVzZXIgPSAzO1xuICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZFBsYW5OYW1lID09ICdQcmVtaXVtJylcbiAgICAgICAgcGVyVXNlciA9IDU7XG4gICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUGxhbk5hbWUgPT0gJ0VudGVycHJpc2UnKVxuICAgICAgICBwZXJVc2VyID0gMTA7XG4gICAgICBlbHNlXG4gICAgICAgIHBlclVzZXIgPSAwO1xuXG4gICAgICB2YXIgbm9ybWFsVG90YWwgPSBwZXJVc2VyICogTnVtYmVyKHRoaXMubm9PZlB1cmNoYXNlcyk7XG4gICAgICBpZiAodGhpcy5wbGFuSW50ZXJ2YWwgPT0gJ21vbnRoJykge1xuICAgICAgICB0aGlzLnRvdGFsQW1vdW50ID0gbm9ybWFsVG90YWwudG9GaXhlZCgyKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMucGxhbkludGVydmFsID09ICd5ZWFyJykge1xuICAgICAgICB0aGlzLnRvdGFsQW1vdW50ID0gKChub3JtYWxUb3RhbCAtIChub3JtYWxUb3RhbCAqIDIwIC8gMTAwKSkgKiAxMikudG9GaXhlZCgyKTtcbiAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy50b3RhbEFtb3VudCA9IDA7XG4gICAgfVxuICB9XG4gIHBheSgpIHtcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICB2YXIgc2VydmljZSA9IHRoaXMucGF5bWVudFNlcnZpY2U7XG4gICAgdmFyIHB1cmNoYXNlcyA9IHRoaXMubm9PZlB1cmNoYXNlcztcbiAgICB2YXIgdG90YWxBbXQgPSB0aGlzLnRvdGFsQW1vdW50O1xuICAgIHZhciBwbGFuID0gdGhpcy5zZWxlY3RlZFBsYW5OYW1lO1xuICAgIHZhciBwbGFuSW50ZXJ2YWwgPSB0aGlzLnBsYW5JbnRlcnZhbDtcbiAgICB2YXIgdG9zdGVycyA9IHRoaXMudG9hc3RyO1xuICAgIHZhciByb3V0ZXIgPSB0aGlzLnJvdXRlcjtcbiAgICB2YXIgZGFpbG9nUmVmID0gdGhpcy5kaWFsb2dSZWY7XG4gICAgdGhpcy5pc1N1Y2Vzc1BheSA9IHRydWU7XG4gICAgdmFyIGlzU3VjZXNzUGF5ID0gdGhpcy5pc1N1Y2Vzc1BheTtcbiAgICB2YXIgaGFuZGxlciA9ICg8YW55PndpbmRvdykuU3RyaXBlQ2hlY2tvdXQuY29uZmlndXJlKHtcbiAgICAgIGtleTogZW52aXJvbm1lbnQuc3RyaXBlQVBJS2V5LFxuICAgICAgaW1hZ2U6ICdodHRwczovL2J2aWV3c3RvcmFnZS5ibG9iLmNvcmUud2luZG93cy5uZXQvNGFmZWI0NDQtZTgyNi00Zjk1LWFjNDEtMjE3NWUzNmEwYzE2L2hybS8wYjI5MjFhOS1lOTMwLTQwMTMtOTA0Ny02NzBiNTM1MmYzMDgvc25vdmFzeXMtNzIxMTJiMDMtOTVkYy00MzJjLWFlZWYtYzg5ZmExM2VhZTMyLnBuZycsXG4gICAgICBsb2NhbGU6ICdhdXRvJyxcbiAgICAgIHRva2VuOiBmdW5jdGlvbiAodG9rZW46IGFueSkge1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICB2YXIgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbCA9IG5ldyBDb21wYW55UGF5bWVudFVwc2VydE1vZGVsKCk7XG4gICAgICAgICAgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbC5DYXJkSG9sZGVyTmFtZSA9IHRva2VuLmNhcmQubmFtZTtcbiAgICAgICAgICBjb21wYW55UGF5bWVudFVwc2VydE1vZGVsLkNhcmRIb2xkZXJCaWxsaW5nQWRkcmVzcyA9IHRva2VuLmNhcmQubmFtZTtcbiAgICAgICAgICBjb21wYW55UGF5bWVudFVwc2VydE1vZGVsLlBsYW5OYW1lID0gcGxhbjtcbiAgICAgICAgICBjb21wYW55UGF5bWVudFVwc2VydE1vZGVsLlN1YnNjcmlwdGlvblR5cGUgPSBwbGFuSW50ZXJ2YWw7XG4gICAgICAgICAgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbC5Ub3RhbEFtb3VudCA9IHRvdGFsQW10O1xuICAgICAgICAgIGNvbXBhbnlQYXltZW50VXBzZXJ0TW9kZWwuTm9PZlB1cmNoYXNlcyA9IHB1cmNoYXNlcztcbiAgICAgICAgICBjb21wYW55UGF5bWVudFVwc2VydE1vZGVsLkVtYWlsID0gdG9rZW4uZW1haWw7XG4gICAgICAgICAgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbC5TdHJpcGVUb2tlbklkID0gdG9rZW4uaWQ7XG4gICAgICAgICAgY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbC5BZGRyZXNzT3B0aW9ucyA9IHRva2VuLmNhcmQ7XG4gICAgICAgICAgc2VydmljZS51cHNlcnRDb21wYW55UGF5bWVudHMoY29tcGFueVBheW1lbnRVcHNlcnRNb2RlbCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IHRydWUpIHtcbiAgICAgICAgICAgICAgdG9zdGVycy5zdWNjZXNzKFwiWW91ciBzdWJzY3JpcHRpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZFwiKTtcbiAgICAgICAgICAgICAgaXNTdWNlc3NQYXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlKFsnL3NoZWxsL0FjY291bnRzJ10pO1xuICAgICAgICAgICAgICBkYWlsb2dSZWYuY2xvc2UoeyBpc1JlbG9hZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICB0b3N0ZXJzLmVycm9yKHJlc3BvbnNlRGF0YS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICBpc1N1Y2Vzc1BheSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5pc1N1Y2Vzc1BheSA9IGlzU3VjZXNzUGF5O1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IHRoaXMucGxhbkludGVydmFsID09ICdtb250aCcgPyAnTW9udGhseSBzdWJzY3JpcHRpb24nIDogJ0FubnVhbCBzdWJzY3JpcHRpb24nXG4gICAgaGFuZGxlci5vcGVuKHtcbiAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRQbGFuTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIGFtb3VudDogdGhpcy50b3RhbEFtb3VudCAqIDEwMCxcbiAgICAgIGN1cnJlbmN5OiAnR0JQJyxcbiAgICAgIGJpbGxpbmdBZGRyZXNzOiBcInRydWVcIixcbiAgICAgIHNoaXBwaW5nQWRkcmVzczogXCJmYWxzZVwiLFxuICAgICAgY2xvc2VkOiAoKT0+e3RoaXMuY2xvc2UyKCk7fSBcbiAgICB9KTtcblxuICB9XG5cbiAgY2xvc2UyKCl7XG4gICAgdGhpcy5pc1N1Y2Vzc1BheT0hdGhpcy5pc1N1Y2Vzc1BheTtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJjdXN0b20tZGlhbG9nXCI+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tY2xvc2VcIiBtYXQtZGlhbG9nLWNsb3NlIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgPGZhLWljb24gaWNvbj1cInRpbWVzXCIgY2xhc3M9XCJwcm9qZWN0LWRpYWxvZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJwcm9qZWN0LWRpYWxvZ0NvbnRlbnRcIiBpZD1cInN0eWxlLTFcIj5cblxuICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHBiLTFcIj5TdWJzY3JpcHRpb248L2Rpdj5cbiAgPC9tYXQtY2FyZC10aXRsZT5cblxuICA8ZGl2IGNsYXNzPVwibG9naW4tcGFnZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gICAgPGRpdiBmeEZsZXg9XCI1MFwiIGZ4RmxleC54cz1cIjEwMFwiPjxsYWJlbD5TZWxlY3RlZCBwbGFuIDoge3tzZWxlY3RlZFBsYW5OYW1lfX0gPC9sYWJlbD48L2Rpdj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXQueHM9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEdhcC54cz1cIjBweFwiPlxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeEZsZXgueHM9XCIxMDBcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cIm5vT2ZQdXJjaGFzZXNcIiBwbGFjZWhvbGRlcj1cIk5vLm9mIHB1cmNoYXNlc1wiIChjaGFuZ2UpPVwiY29zdENhbGN1bGF0aW9uKClcIlxuICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXQueHM9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEdhcC54cz1cIjBweFwiPlxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeEZsZXgueHM9XCIxMDBcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiICpuZ0lmPVwiIWlzTmV3U3ViXCI+XG4gICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYSBzdWJzY3JpcHRpb24gdHlwZVwiIFsobmdNb2RlbCldPVwicGxhbkludGVydmFsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJzY3JpcHRpb25UeXBlID09J3llYXInXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJjb3N0Q2FsY3VsYXRpb24oKVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJtb250aFwiPk1vbnRobHk8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cInllYXJcIj5Bbm51YWxseTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIiAqbmdJZj1cImlzTmV3U3ViXCI+XG4gICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYSBzdWJzY3JpcHRpb24gdHlwZVwiIFsobmdNb2RlbCldPVwicGxhbkludGVydmFsXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY29zdENhbGN1bGF0aW9uKClcIiByZXF1aXJlZD5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwibW9udGhcIj5Nb250aGx5PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJ5ZWFyXCI+QW5udWFsbHk8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJmdWxsLXdpZHRoIG1iLTEgYnRuIGJ0bi1ibG9ja1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJwYXkoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwidG90YWxBbW91bnQgPT0gMCB8fCBpc0Rpc2FibGUgfHxpc1N1Y2Vzc1BheVwiPiBQYXkgJHt7dG90YWxBbW91bnR9fVxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zcGluIGZhLXNwaW5uZXJcIiAqbmdJZj1cImlzU3VjZXNzUGF5XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPCEtLSA8bmd4LXVpLWxvYWRlciBmZ3NTaXplPVwiMTgwXCIgW2Znc1R5cGVdPVwic3Bpbm5lclR5cGVcIiBjb2xvcj1cInByaW1hcnlcIj48L25neC11aS1sb2FkZXI+IC0tPlxuPC9kaXY+Il19