barsa-novin-ray-core 2.2.73 → 2.2.75

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 (233) hide show
  1. package/fesm2022/barsa-novin-ray-core.mjs +630 -651
  2. package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
  3. package/lib/abstract-classes/field-base.d.ts +1 -1
  4. package/lib/abstract-classes/number-base.d.ts +1 -1
  5. package/lib/date-services/date-hijri.service.d.ts +1 -1
  6. package/lib/date-services/date.service.d.ts +1 -1
  7. package/lib/directives/base.directive.d.ts +1 -1
  8. package/lib/dynamic-component/base-view-item-props.d.ts +4 -4
  9. package/lib/resolvers/login-settings.resolver.d.ts +1 -1
  10. package/lib/resolvers/tile-group-breadcrumb.resolver.d.ts +1 -1
  11. package/lib/services/notification.service.d.ts +2 -2
  12. package/lib/services/portal.service.d.ts +1 -1
  13. package/package.json +3 -5
  14. package/esm2022/barsa-novin-ray-core.mjs +0 -5
  15. package/esm2022/lib/abstract-classes/application-base.mjs +0 -25
  16. package/esm2022/lib/abstract-classes/barsa-api.mjs +0 -43
  17. package/esm2022/lib/abstract-classes/base-column-props.mjs +0 -89
  18. package/esm2022/lib/abstract-classes/base.component.mjs +0 -60
  19. package/esm2022/lib/abstract-classes/field-base.mjs +0 -244
  20. package/esm2022/lib/abstract-classes/files-validation-helper.mjs +0 -75
  21. package/esm2022/lib/abstract-classes/form-base.mjs +0 -164
  22. package/esm2022/lib/abstract-classes/form-field-report-page.component.mjs +0 -54
  23. package/esm2022/lib/abstract-classes/form-page-base.mjs +0 -132
  24. package/esm2022/lib/abstract-classes/form-page.component.mjs +0 -53
  25. package/esm2022/lib/abstract-classes/form-props.base.mjs +0 -100
  26. package/esm2022/lib/abstract-classes/form-toolbar-base.mjs +0 -57
  27. package/esm2022/lib/abstract-classes/index.mjs +0 -25
  28. package/esm2022/lib/abstract-classes/layout-item-base.mjs +0 -49
  29. package/esm2022/lib/abstract-classes/layout-panel-base.mjs +0 -68
  30. package/esm2022/lib/abstract-classes/linear-list-helper.mjs +0 -135
  31. package/esm2022/lib/abstract-classes/models.mjs +0 -184
  32. package/esm2022/lib/abstract-classes/module-with-dynamic-components.mjs +0 -2
  33. package/esm2022/lib/abstract-classes/number-base.mjs +0 -201
  34. package/esm2022/lib/abstract-classes/page-base.mjs +0 -98
  35. package/esm2022/lib/abstract-classes/page-with-form-handler-base.mjs +0 -41
  36. package/esm2022/lib/abstract-classes/report-base.mjs +0 -266
  37. package/esm2022/lib/abstract-classes/report-item-base.mjs +0 -54
  38. package/esm2022/lib/abstract-classes/report-view-base.component.mjs +0 -450
  39. package/esm2022/lib/abstract-classes/system-base.mjs +0 -25
  40. package/esm2022/lib/abstract-classes/tile-props.mjs +0 -49
  41. package/esm2022/lib/auth-guard.mjs +0 -48
  42. package/esm2022/lib/barsa-novin-ray-core-routing.module.mjs +0 -311
  43. package/esm2022/lib/barsa-novin-ray-core.module.mjs +0 -522
  44. package/esm2022/lib/base-ulv-setting.component.mjs +0 -46
  45. package/esm2022/lib/base.module.mjs +0 -28
  46. package/esm2022/lib/button-loading/button-loading.component.mjs +0 -20
  47. package/esm2022/lib/constants.mjs +0 -963
  48. package/esm2022/lib/container.component.mjs +0 -100
  49. package/esm2022/lib/controllers/base-controller.mjs +0 -9
  50. package/esm2022/lib/controllers/base-view.mjs +0 -24
  51. package/esm2022/lib/controllers/index.mjs +0 -4
  52. package/esm2022/lib/controllers/models.mjs +0 -2
  53. package/esm2022/lib/custom-route-reuse-strategy.mjs +0 -32
  54. package/esm2022/lib/date-services/date-hijri.service.mjs +0 -146
  55. package/esm2022/lib/date-services/date-info.mjs +0 -2
  56. package/esm2022/lib/date-services/date-miladi.service.mjs +0 -124
  57. package/esm2022/lib/date-services/date-shamsi.service.mjs +0 -148
  58. package/esm2022/lib/date-services/date.service.mjs +0 -149
  59. package/esm2022/lib/date-services/index.mjs +0 -6
  60. package/esm2022/lib/device.mjs +0 -663
  61. package/esm2022/lib/directives/absolute-div-body.directive.mjs +0 -46
  62. package/esm2022/lib/directives/anchor-scroll.directive.mjs +0 -25
  63. package/esm2022/lib/directives/attr-rtl.directive.mjs +0 -36
  64. package/esm2022/lib/directives/base.directive.mjs +0 -55
  65. package/esm2022/lib/directives/body-click.directive.mjs +0 -36
  66. package/esm2022/lib/directives/column-resizer.directive.mjs +0 -40
  67. package/esm2022/lib/directives/copy.directive.mjs +0 -60
  68. package/esm2022/lib/directives/count-down.directive.mjs +0 -109
  69. package/esm2022/lib/directives/dynamic-command.directive.mjs +0 -43
  70. package/esm2022/lib/directives/dynamic-style.directive.mjs +0 -66
  71. package/esm2022/lib/directives/ellapsis-text.directive.mjs +0 -70
  72. package/esm2022/lib/directives/ellipsify.directive.mjs +0 -73
  73. package/esm2022/lib/directives/field-binding.directive.mjs +0 -18
  74. package/esm2022/lib/directives/fill-empty-space.mjs +0 -89
  75. package/esm2022/lib/directives/form-close.directive.mjs +0 -33
  76. package/esm2022/lib/directives/img-lazy.directive.mjs +0 -82
  77. package/esm2022/lib/directives/index.mjs +0 -42
  78. package/esm2022/lib/directives/intersection-observer.directive.mjs +0 -52
  79. package/esm2022/lib/directives/items-renderer.directive.mjs +0 -60
  80. package/esm2022/lib/directives/label-mandatory.directive.mjs +0 -49
  81. package/esm2022/lib/directives/load-external-files.directive.mjs +0 -38
  82. package/esm2022/lib/directives/mobile.directive.mjs +0 -30
  83. package/esm2022/lib/directives/nowraptext.directive.mjs +0 -27
  84. package/esm2022/lib/directives/numbers-only-input.directive.mjs +0 -27
  85. package/esm2022/lib/directives/placeHolder.directive.mjs +0 -16
  86. package/esm2022/lib/directives/prevent-default.directive.mjs +0 -21
  87. package/esm2022/lib/directives/print-files.directive.mjs +0 -39
  88. package/esm2022/lib/directives/render-ulv-paging.directive.mjs +0 -81
  89. package/esm2022/lib/directives/render-ulv-viewer.directive.mjs +0 -76
  90. package/esm2022/lib/directives/render-ulv.directive.mjs +0 -52
  91. package/esm2022/lib/directives/route-form-change.directive.mjs +0 -38
  92. package/esm2022/lib/directives/save-image.directive.mjs +0 -28
  93. package/esm2022/lib/directives/splide-slider.directive.mjs +0 -113
  94. package/esm2022/lib/directives/stop-propagation.directive.mjs +0 -21
  95. package/esm2022/lib/directives/table-resizer.directive.mjs +0 -236
  96. package/esm2022/lib/directives/ulv-command.directive.mjs +0 -43
  97. package/esm2022/lib/directives/until-inview.directive.mjs +0 -53
  98. package/esm2022/lib/directives/webotp.directive.mjs +0 -49
  99. package/esm2022/lib/directives/workflow-choice-command.directive.mjs +0 -61
  100. package/esm2022/lib/dynamic-component/base-dynamic.component.mjs +0 -97
  101. package/esm2022/lib/dynamic-component/base-form-toolbaritem-props.mjs +0 -53
  102. package/esm2022/lib/dynamic-component/base-item-content-props.mjs +0 -83
  103. package/esm2022/lib/dynamic-component/base-view-content-props.mjs +0 -27
  104. package/esm2022/lib/dynamic-component/base-view-item-props.mjs +0 -552
  105. package/esm2022/lib/dynamic-component/base-view-props.mjs +0 -163
  106. package/esm2022/lib/dynamic-component/dynamic-form-toolbar-item.component.mjs +0 -38
  107. package/esm2022/lib/dynamic-component/dynamic-form.component.mjs +0 -69
  108. package/esm2022/lib/dynamic-component/dynamic-item.component.mjs +0 -78
  109. package/esm2022/lib/dynamic-component/dynamic-layout.component.mjs +0 -64
  110. package/esm2022/lib/dynamic-component/index.mjs +0 -11
  111. package/esm2022/lib/empty-page/empty-page.component.mjs +0 -49
  112. package/esm2022/lib/empty-page-with-router-and-router-outlet/empty-page-with-router-and-router-outlet.component.mjs +0 -16
  113. package/esm2022/lib/field-ui/field-ui.component.mjs +0 -149
  114. package/esm2022/lib/form/form.component.mjs +0 -212
  115. package/esm2022/lib/form-new/form-new.component.mjs +0 -31
  116. package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page-routing.module.mjs +0 -54
  117. package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page.module.mjs +0 -29
  118. package/esm2022/lib/form-page-routing/constants.mjs +0 -9
  119. package/esm2022/lib/form-page-routing/index.mjs +0 -3
  120. package/esm2022/lib/from-intersection-observer.mjs +0 -53
  121. package/esm2022/lib/global-error-handler.mjs +0 -26
  122. package/esm2022/lib/injdection-tokens.mjs +0 -8
  123. package/esm2022/lib/modal-root.component.mjs +0 -34
  124. package/esm2022/lib/not-found/not-found.component.mjs +0 -16
  125. package/esm2022/lib/not-internet/not-internet.component.mjs +0 -21
  126. package/esm2022/lib/pipes/barsa-icon-dict.pipe.mjs +0 -20
  127. package/esm2022/lib/pipes/bbb-translate.pipe.mjs +0 -36
  128. package/esm2022/lib/pipes/can-upload.pipe.mjs +0 -27
  129. package/esm2022/lib/pipes/card-media-size.pipe.mjs +0 -21
  130. package/esm2022/lib/pipes/column-custom-component.pipe.mjs +0 -41
  131. package/esm2022/lib/pipes/column-customui.pipe.mjs +0 -33
  132. package/esm2022/lib/pipes/column-icon.pipe.mjs +0 -23
  133. package/esm2022/lib/pipes/column-value.pipe.mjs +0 -35
  134. package/esm2022/lib/pipes/column-valueof-parameters.pipe.mjs +0 -34
  135. package/esm2022/lib/pipes/combo-row-img.pipe.mjs +0 -17
  136. package/esm2022/lib/pipes/context-menu.pipe.mjs +0 -41
  137. package/esm2022/lib/pipes/control-ui.pipe.mjs +0 -32
  138. package/esm2022/lib/pipes/convert-to-style.pipe.mjs +0 -33
  139. package/esm2022/lib/pipes/date-time-to-caption.pipe.mjs +0 -35
  140. package/esm2022/lib/pipes/fileinfo-count.pipe.mjs +0 -21
  141. package/esm2022/lib/pipes/filter-columns-by-details.pipe.mjs +0 -23
  142. package/esm2022/lib/pipes/filter-inline-action-list.pipe.mjs +0 -19
  143. package/esm2022/lib/pipes/filter-string.pipe.mjs +0 -45
  144. package/esm2022/lib/pipes/filter-tab.pipe.mjs +0 -20
  145. package/esm2022/lib/pipes/filter-toolbar-control.pipe.mjs +0 -17
  146. package/esm2022/lib/pipes/filter-workflow-mobile.pipe.mjs +0 -25
  147. package/esm2022/lib/pipes/filter.pipe.mjs +0 -34
  148. package/esm2022/lib/pipes/find-column-by-db-name.pipe.mjs +0 -28
  149. package/esm2022/lib/pipes/find-preview-column.pipe.mjs +0 -20
  150. package/esm2022/lib/pipes/fiori-icon.pipe.mjs +0 -43
  151. package/esm2022/lib/pipes/groupby.pipe.mjs +0 -64
  152. package/esm2022/lib/pipes/header-facet-value.pipe.mjs +0 -23
  153. package/esm2022/lib/pipes/hide-accept-cancel-buttons.pipe.mjs +0 -24
  154. package/esm2022/lib/pipes/hide-columns-inmobile.pipe.mjs +0 -23
  155. package/esm2022/lib/pipes/index.mjs +0 -55
  156. package/esm2022/lib/pipes/isimage.pipe.mjs +0 -20
  157. package/esm2022/lib/pipes/list-count.pipe.mjs +0 -18
  158. package/esm2022/lib/pipes/merge-fields-to-columns.pipe.mjs +0 -43
  159. package/esm2022/lib/pipes/mo-info-ulv-data.pipe.mjs +0 -59
  160. package/esm2022/lib/pipes/mo-info-ulv-paging.pipe.mjs +0 -17
  161. package/esm2022/lib/pipes/mo-report-value-concat.pipe.mjs +0 -36
  162. package/esm2022/lib/pipes/mo-report-value.pipe.mjs +0 -18
  163. package/esm2022/lib/pipes/mo-value.pipe.mjs +0 -19
  164. package/esm2022/lib/pipes/multiple-groupby.pipe.mjs +0 -91
  165. package/esm2022/lib/pipes/numeral.pipe.mjs +0 -44
  166. package/esm2022/lib/pipes/picture-field-source.pipe.mjs +0 -23
  167. package/esm2022/lib/pipes/remove-newline.pipe.mjs +0 -21
  168. package/esm2022/lib/pipes/replace.pipe.mjs +0 -18
  169. package/esm2022/lib/pipes/reverse.pipe.mjs +0 -23
  170. package/esm2022/lib/pipes/rownumber.pipe.mjs +0 -26
  171. package/esm2022/lib/pipes/sanitize-text.pipe.mjs +0 -21
  172. package/esm2022/lib/pipes/seperator-fix.pipe.mjs +0 -24
  173. package/esm2022/lib/pipes/sort.pipe.mjs +0 -49
  174. package/esm2022/lib/pipes/string-to-number.pipe.mjs +0 -26
  175. package/esm2022/lib/pipes/th-image-icon.pipe.mjs +0 -22
  176. package/esm2022/lib/pipes/tlbButtons.pipe.mjs +0 -60
  177. package/esm2022/lib/pipes/toolbar-settings.pipe.mjs +0 -27
  178. package/esm2022/lib/pipes/total-summary.pipe.mjs +0 -17
  179. package/esm2022/lib/pipes/tree-item-isexpanded.pipe.mjs +0 -26
  180. package/esm2022/lib/pipes/visible-value.pipe.mjs +0 -19
  181. package/esm2022/lib/portal-page/portal-page.component.mjs +0 -24
  182. package/esm2022/lib/portal-page/portal-sidebar.component.mjs +0 -37
  183. package/esm2022/lib/redirect-home-guard.mjs +0 -51
  184. package/esm2022/lib/redirect-report-navigator-command/redirect-report-navigator-command.component.mjs +0 -12
  185. package/esm2022/lib/report-container/report-container.component.mjs +0 -63
  186. package/esm2022/lib/resizable-module/resizable.component.mjs +0 -31
  187. package/esm2022/lib/resizable-module/resizable.directive.mjs +0 -42
  188. package/esm2022/lib/resizable-module/resizable.module.mjs +0 -17
  189. package/esm2022/lib/resolvers/index.mjs +0 -7
  190. package/esm2022/lib/resolvers/login-settings.resolver.mjs +0 -18
  191. package/esm2022/lib/resolvers/portal-dynamic-page.resolver.mjs +0 -49
  192. package/esm2022/lib/resolvers/portal-form-page.resolver.mjs +0 -18
  193. package/esm2022/lib/resolvers/portal-page.resolver.mjs +0 -30
  194. package/esm2022/lib/resolvers/portal-report-page.resolver.mjs +0 -37
  195. package/esm2022/lib/resolvers/tile-group-breadcrumb.resolver.mjs +0 -30
  196. package/esm2022/lib/root-page/root-page.component.mjs +0 -21
  197. package/esm2022/lib/root-portal/root-portal.component.mjs +0 -236
  198. package/esm2022/lib/server-connection-error/server-connection-error.component.mjs +0 -19
  199. package/esm2022/lib/services/api.service.mjs +0 -63
  200. package/esm2022/lib/services/audio-recording.service.mjs +0 -95
  201. package/esm2022/lib/services/barsa-dialog.service.mjs +0 -80
  202. package/esm2022/lib/services/barsa-storage.service.mjs +0 -78
  203. package/esm2022/lib/services/breadcrumb.service.mjs +0 -64
  204. package/esm2022/lib/services/column.service.mjs +0 -20
  205. package/esm2022/lib/services/container.service.mjs +0 -69
  206. package/esm2022/lib/services/dynamic-component.service.mjs +0 -55
  207. package/esm2022/lib/services/form-panel.service.mjs +0 -394
  208. package/esm2022/lib/services/form.service.mjs +0 -14
  209. package/esm2022/lib/services/groupby.service.mjs +0 -21
  210. package/esm2022/lib/services/horizontal-layout.service.mjs +0 -16
  211. package/esm2022/lib/services/index.mjs +0 -32
  212. package/esm2022/lib/services/indexeddb.service.mjs +0 -34
  213. package/esm2022/lib/services/layout-main-content.service.mjs +0 -19
  214. package/esm2022/lib/services/layout.service.mjs +0 -42
  215. package/esm2022/lib/services/local-storage.service.mjs +0 -32
  216. package/esm2022/lib/services/log.service.mjs +0 -50
  217. package/esm2022/lib/services/network-status.service.mjs +0 -15
  218. package/esm2022/lib/services/notification-popup.service.mjs +0 -2
  219. package/esm2022/lib/services/notification-sw.service.mjs +0 -180
  220. package/esm2022/lib/services/notification.service.mjs +0 -189
  221. package/esm2022/lib/services/portal.service.mjs +0 -950
  222. package/esm2022/lib/services/prompt-update.service.mjs +0 -56
  223. package/esm2022/lib/services/routing.service.mjs +0 -60
  224. package/esm2022/lib/services/save-scoll-position.service.mjs +0 -29
  225. package/esm2022/lib/services/service-worker-communication.service.mjs +0 -120
  226. package/esm2022/lib/services/tabpage.service.mjs +0 -13
  227. package/esm2022/lib/services/toast.service.mjs +0 -2
  228. package/esm2022/lib/services/ui.service.mjs +0 -23
  229. package/esm2022/lib/services/ulvmain.service.mjs +0 -824
  230. package/esm2022/lib/services/upload.service.mjs +0 -166
  231. package/esm2022/lib/services/video-recording.service.mjs +0 -115
  232. package/esm2022/lib/unlimit-session/unlimit-session.component.mjs +0 -40
  233. package/esm2022/public-api.mjs +0 -42
@@ -1,189 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { BarsaApi } from '../abstract-classes/barsa-api';
4
- import { NOTIFICATAION_POPUP_SERVER } from '../injdection-tokens';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./log.service";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "../pipes/bbb-translate.pipe";
9
- import * as i4 from "@angular/platform-browser";
10
- import * as i5 from "./notification-sw.service";
11
- import * as i6 from "./portal.service";
12
- export class NotificationService {
13
- constructor(_popupService, _logService, _lowerCase, _bbbTranslate, _domSanitizer, _serviceWorkerNotification, _portalService, _ngZone) {
14
- this._popupService = _popupService;
15
- this._logService = _logService;
16
- this._lowerCase = _lowerCase;
17
- this._bbbTranslate = _bbbTranslate;
18
- this._domSanitizer = _domSanitizer;
19
- this._serviceWorkerNotification = _serviceWorkerNotification;
20
- this._portalService = _portalService;
21
- this._ngZone = _ngZone;
22
- this._notifications$ = new BehaviorSubject([]);
23
- this._notificationUnreadCount$ = new BehaviorSubject(0);
24
- this._notificationLoading$ = new BehaviorSubject(false);
25
- this._notifiationCountLoaded$ = new BehaviorSubject(false);
26
- this.pageCount = 1;
27
- this.pageIndex = 0;
28
- this._portalService.userPortalSettings$.pipe().subscribe((userPortalSettings) => {
29
- this.userNotificationSettings = userPortalSettings['UserNotificationSetting'];
30
- });
31
- }
32
- get notificationCountLoaded$() {
33
- return this._notifiationCountLoaded$.asObservable();
34
- }
35
- get notificationUnreadCount$() {
36
- return this._notificationUnreadCount$.asObservable();
37
- }
38
- get notifications$() {
39
- return this._notifications$.asObservable().pipe();
40
- }
41
- get notificationLoading$() {
42
- return this._notificationLoading$.asObservable();
43
- }
44
- ShowNotificationRelatedMo(e) {
45
- const ee = {
46
- ...e,
47
- afterReady: (e2) => {
48
- BarsaApi.Bw.RunBlMethodAsync({
49
- Parameters: [e.tag],
50
- Method: 'Barsa_SetReadRadifCartableByTag',
51
- FailFn: (err) => {
52
- this._logService.error(err);
53
- }
54
- });
55
- }
56
- };
57
- this._portalService.ShowForm(ee);
58
- }
59
- handleTopic(eventTopic, content, ownerKey) {
60
- if (eventTopic === 'RefreshNotificationUnreadCount') {
61
- setTimeout(() => {
62
- this.LoadUnreadNotificationCount();
63
- }, 1000);
64
- }
65
- }
66
- addNotification(msg, title, type, image, mo, uiOptions, otherOptions) {
67
- this._ngZone.run(() => {
68
- if (otherOptions) {
69
- const { MoId, TypeDefId } = otherOptions;
70
- let newNotification = {
71
- $Caption: title,
72
- Id: MoId,
73
- $TypeDefId: TypeDefId,
74
- Title: title,
75
- Unread: true,
76
- Icon: image,
77
- Image: '',
78
- Content: msg,
79
- Tag: '',
80
- Priority: 0,
81
- Subject: '',
82
- $SafeContent: this._domSanitizer.bypassSecurityTrustHtml(msg),
83
- CreationDate: new Date(),
84
- CreationDate$Caption: this._bbbTranslate.transform('DateR_Today')
85
- };
86
- const parsedMo = mo ? BarsaApi.Ext.decode(mo) : null;
87
- newNotification = this._prepareProperties(newNotification, parsedMo, msg);
88
- if (parsedMo) {
89
- const molist = this._notifications$.getValue();
90
- this._notifications$.next([newNotification, ...molist]);
91
- }
92
- this.showNotification(newNotification, parsedMo, uiOptions, otherOptions);
93
- }
94
- });
95
- }
96
- LoadUnreadNotificationCount() {
97
- BarsaApi.Bw.RunBlMethodAsync({
98
- Parameters: [BarsaApi.LoginFormData.PortalId],
99
- Method: 'GetShellbarNotificationUnreadCountByPortalId',
100
- SuccessFn: (e) => {
101
- this._notifiationCountLoaded$.next(true);
102
- this._notificationUnreadCount$.next(e);
103
- },
104
- FailFn: (e) => {
105
- this._logService.error(e);
106
- }
107
- });
108
- }
109
- get SupportNotifications() {
110
- return typeof Notification !== 'undefined' && this._serviceWorkerNotification.isEnabled;
111
- }
112
- showNotification(notificationItem, mo, uiOptions, otherOptions) {
113
- if (notificationItem.Title && notificationItem.Title.startsWith('[') && notificationItem.Title.endsWith(']')) {
114
- return;
115
- }
116
- if (notificationItem.Title && notificationItem.Title.startsWith('{') && notificationItem.Title.endsWith('}')) {
117
- return;
118
- }
119
- if (mo && !mo.ShowPopup) {
120
- return;
121
- }
122
- if (!this.SupportNotifications) {
123
- this._logService.warn(`InApp Notification is not supported.`);
124
- uiOptions = uiOptions ?? {};
125
- uiOptions.NotificationItem = notificationItem;
126
- this._popupNotify(notificationItem, mo, uiOptions, otherOptions);
127
- return;
128
- }
129
- this._inAppNotify(notificationItem);
130
- }
131
- notificationLoading(loading) {
132
- this._notificationLoading$.next(loading);
133
- }
134
- _setNotificationLoading(molist, loading = true) {
135
- const molistCurr = this._notifications$.getValue();
136
- const moIds = molist.map((c) => c.Id);
137
- const molistWithLoadingProperty = molistCurr.map((c) => ({
138
- ...c,
139
- $NotificatoinLoading: moIds.indexOf(c.Id) !== -1 ? loading : c.$NotificatoinLoading
140
- }));
141
- this._notifications$.next([...molistWithLoadingProperty]);
142
- return moIds;
143
- }
144
- _popupNotify(notificationItem, mo, uiOptions, otherOptions) {
145
- this._popupService.popupNotify(notificationItem.$SafeContent, notificationItem.Title, notificationItem.Subject, notificationItem.Image, mo, uiOptions, otherOptions);
146
- }
147
- _prepareProperties(notificationItem, mo, content) {
148
- if (!mo) {
149
- return notificationItem;
150
- }
151
- return {
152
- ...notificationItem,
153
- ...mo,
154
- UiActions: !mo.UiActions ? [] : JSON.parse(mo.UiActions),
155
- CreationDate: mo.IMessage.CreationDate,
156
- CreationDate$Caption: mo.IMessage.CreationDate$Caption,
157
- CreatorUser: mo.IMessage.CreatorUser,
158
- CreatorUser$Caption: mo.IMessage.CreatorUser$Caption,
159
- Icon: `${BarsaApi.Bw.Origin()}${notificationItem.Icon}`,
160
- $SafeContent: this._domSanitizer.bypassSecurityTrustHtml(content)
161
- };
162
- }
163
- _inAppNotify(notificationItem) {
164
- Notification.requestPermission((result) => {
165
- const lang = BarsaApi.LoginFormData.Culture;
166
- const isRtl = BarsaApi.LoginFormData.CulturesRtl[lang];
167
- if (result === 'granted') {
168
- this._serviceWorkerNotification.showNotification({
169
- notificationItem,
170
- isRtl,
171
- lang
172
- });
173
- }
174
- else {
175
- // TODO:permission denied
176
- this._logService.error('notification permission denied.');
177
- }
178
- });
179
- }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationService, deps: [{ token: NOTIFICATAION_POPUP_SERVER }, { token: i1.LogService }, { token: i2.LowerCasePipe }, { token: i3.BbbTranslatePipe }, { token: i4.DomSanitizer }, { token: i5.ServiceWorkerNotificationService }, { token: i6.PortalService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
181
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationService }); }
182
- }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationService, decorators: [{
184
- type: Injectable
185
- }], ctorParameters: () => [{ type: undefined, decorators: [{
186
- type: Inject,
187
- args: [NOTIFICATAION_POPUP_SERVER]
188
- }] }, { type: i1.LogService }, { type: i2.LowerCasePipe }, { type: i3.BbbTranslatePipe }, { type: i4.DomSanitizer }, { type: i5.ServiceWorkerNotificationService }, { type: i6.PortalService }, { type: i0.NgZone }] });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVFsRSxNQUFNLE9BQU8sbUJBQW1CO0lBUTVCLFlBQ2tELGFBQXVDLEVBQzdFLFdBQXVCLEVBQ3ZCLFVBQXlCLEVBQ3pCLGFBQStCLEVBQy9CLGFBQTJCLEVBQzNCLDBCQUE0RCxFQUM1RCxjQUE2QixFQUM3QixPQUFlO1FBUHVCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUM3RSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWtDO1FBQzVELG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFmbkIsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsRUFBRSxDQUFDLENBQUM7UUFDakUsOEJBQXlCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUQsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxD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bUJBQW1CO2tCQUQvQixVQUFVOzswQkFVRixNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBCYXJzYUFwaSB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvYmFyc2EtYXBpJztcclxuaW1wb3J0IHsgTWV0YW9iamVjdERhdGFNb2RlbCwgTW9Gb3JSZXBvcnRNb2RlbCwgTm90aWZpY2F0aW9uSXRlbSwgTm90aWZ5T3B0aW9ucyB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvbW9kZWxzJztcclxuaW1wb3J0IHsgTk9USUZJQ0FUQUlPTl9QT1BVUF9TRVJWRVIgfSBmcm9tICcuLi9pbmpkZWN0aW9uLXRva2Vucyc7XHJcbmltcG9ydCB7IEJiYlRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9waXBlcy9iYmItdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi9sb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblBvcHVwU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXN3LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnLi9wb3J0YWwuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcclxuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvblVucmVhZENvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbkxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIF9ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcGFnZUNvdW50ID0gMTtcclxuICAgIHBhZ2VJbmRleCA9IDA7XHJcbiAgICB1c2VyTm90aWZpY2F0aW9uU2V0dGluZ3M6IFVzZXJOb3RpZmljYXRpb25TZXR0aW5nO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChOT1RJRklDQVRBSU9OX1BPUFVQX1NFUlZFUikgcHJvdGVjdGVkIF9wb3B1cFNlcnZpY2U6IE5vdGlmaWNhdGlvblBvcHVwU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9sb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2xvd2VyQ2FzZTogTG93ZXJDYXNlUGlwZSxcclxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGU6IEJiYlRyYW5zbGF0ZVBpcGUsXHJcbiAgICAgICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBfc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbjogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS51c2VyUG9ydGFsU2V0dGluZ3MkLnBpcGUoKS5zdWJzY3JpYmUoKHVzZXJQb3J0YWxTZXR0aW5ncykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyA9IDxVc2VyTm90aWZpY2F0aW9uU2V0dGluZz51c2VyUG9ydGFsU2V0dGluZ3NbJ1VzZXJOb3RpZmljYXRpb25TZXR0aW5nJ107XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXQgbm90aWZpY2F0aW9uQ291bnRMb2FkZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmlhdGlvbkNvdW50TG9hZGVkJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIGdldCBub3RpZmljYXRpb25VbnJlYWRDb3VudCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uVW5yZWFkQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBub3RpZmljYXRpb25zJCgpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zJC5hc09ic2VydmFibGUoKS5waXBlKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgbm90aWZpY2F0aW9uTG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIFNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZTogeyB0YWc6IHN0cmluZzsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IG5hbWE6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWUgPSB7XHJcbiAgICAgICAgICAgIC4uLmUsXHJcbiAgICAgICAgICAgIGFmdGVyUmVhZHk6IChlMjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcclxuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbZS50YWddLFxyXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0JhcnNhX1NldFJlYWRSYWRpZkNhcnRhYmxlQnlUYWcnLFxyXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UuU2hvd0Zvcm0oZWUpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGhhbmRsZVRvcGljKGV2ZW50VG9waWMsIGNvbnRlbnQsIG93bmVyS2V5KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50VG9waWMgPT09ICdSZWZyZXNoTm90aWZpY2F0aW9uVW5yZWFkQ291bnQnKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuTG9hZFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sMTAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGROb3RpZmljYXRpb24oXHJcbiAgICAgICAgbXNnOiBzdHJpbmcsXHJcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcclxuICAgICAgICB0eXBlOiBzdHJpbmcsXHJcbiAgICAgICAgaW1hZ2U6IHN0cmluZyxcclxuICAgICAgICBtbyxcclxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXHJcbiAgICAgICAgb3RoZXJPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKG90aGVyT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBNb0lkLCBUeXBlRGVmSWQgfSA9IG90aGVyT3B0aW9ucztcclxuICAgICAgICAgICAgICAgIGxldCBuZXdOb3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJENhcHRpb246IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIElkOiBNb0lkLFxyXG4gICAgICAgICAgICAgICAgICAgICRUeXBlRGVmSWQ6IFR5cGVEZWZJZCxcclxuICAgICAgICAgICAgICAgICAgICBUaXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIEljb246IGltYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgIEltYWdlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBDb250ZW50OiBtc2csXHJcbiAgICAgICAgICAgICAgICAgICAgVGFnOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBQcmlvcml0eTogMCxcclxuICAgICAgICAgICAgICAgICAgICBTdWJqZWN0OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAkU2FmZUNvbnRlbnQ6IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChtc2cpLFxyXG4gICAgICAgICAgICAgICAgICAgIENyZWF0aW9uRGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogdGhpcy5fYmJiVHJhbnNsYXRlLnRyYW5zZm9ybSgnRGF0ZVJfVG9kYXknKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZE1vID0gbW8gPyBCYXJzYUFwaS5FeHQuZGVjb2RlKG1vKSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICBuZXdOb3RpZmljYXRpb24gPSB0aGlzLl9wcmVwYXJlUHJvcGVydGllcyhuZXdOb3RpZmljYXRpb24sIHBhcnNlZE1vLCBtc2cpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRNbykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vbGlzdCA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbbmV3Tm90aWZpY2F0aW9uLCAuLi5tb2xpc3RdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbihuZXdOb3RpZmljYXRpb24sIHBhcnNlZE1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgTG9hZFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xyXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Qb3J0YWxJZF0sXHJcbiAgICAgICAgICAgIE1ldGhvZDogJ0dldFNoZWxsYmFyTm90aWZpY2F0aW9uVW5yZWFkQ291bnRCeVBvcnRhbElkJyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmlhdGlvbkNvdW50TG9hZGVkJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uVW5yZWFkQ291bnQkLm5leHQoZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgU3VwcG9ydE5vdGlmaWNhdGlvbnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBOb3RpZmljYXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24uaXNFbmFibGVkO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNob3dOb3RpZmljYXRpb24oXHJcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcclxuICAgICAgICBtbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwsXHJcbiAgICAgICAgdWlPcHRpb25zOiBOb3RpZnlPcHRpb25zLFxyXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKG5vdGlmaWNhdGlvbkl0ZW0uVGl0bGUgJiYgbm90aWZpY2F0aW9uSXRlbS5UaXRsZS5zdGFydHNXaXRoKCdbJykgJiYgbm90aWZpY2F0aW9uSXRlbS5UaXRsZS5lbmRzV2l0aCgnXScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vdGlmaWNhdGlvbkl0ZW0uVGl0bGUgJiYgbm90aWZpY2F0aW9uSXRlbS5UaXRsZS5zdGFydHNXaXRoKCd7JykgJiYgbm90aWZpY2F0aW9uSXRlbS5UaXRsZS5lbmRzV2l0aCgnfScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1vICYmICFtby5TaG93UG9wdXApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuU3VwcG9ydE5vdGlmaWNhdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS53YXJuKGBJbkFwcCBOb3RpZmljYXRpb24gaXMgbm90IHN1cHBvcnRlZC5gKTtcclxuICAgICAgICAgICAgdWlPcHRpb25zID0gdWlPcHRpb25zID8/IHt9O1xyXG4gICAgICAgICAgICB1aU9wdGlvbnMuTm90aWZpY2F0aW9uSXRlbSA9IG5vdGlmaWNhdGlvbkl0ZW07XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW0sIG1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbkxvYWRpbmcobG9hZGluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLm5leHQobG9hZGluZyk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZ1tdIHtcclxuICAgICAgICBjb25zdCBtb2xpc3RDdXJyID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBjb25zdCBtb0lkcyA9IG1vbGlzdC5tYXAoKGMpID0+IGMuSWQpO1xyXG4gICAgICAgIGNvbnN0IG1vbGlzdFdpdGhMb2FkaW5nUHJvcGVydHkgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcclxuICAgICAgICAgICAgLi4uYyxcclxuICAgICAgICAgICAgJE5vdGlmaWNhdG9pbkxvYWRpbmc6IG1vSWRzLmluZGV4T2YoYy5JZCkgIT09IC0xID8gbG9hZGluZyA6IGMuJE5vdGlmaWNhdG9pbkxvYWRpbmdcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbLi4ubW9saXN0V2l0aExvYWRpbmdQcm9wZXJ0eV0pO1xyXG4gICAgICAgIHJldHVybiBtb0lkcztcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3BvcHVwTm90aWZ5KFxyXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxyXG4gICAgICAgIHVpT3B0aW9uczogTm90aWZ5T3B0aW9ucyxcclxuICAgICAgICBvdGhlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT5cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3BvcHVwU2VydmljZS5wb3B1cE5vdGlmeShcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS4kU2FmZUNvbnRlbnQsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uVGl0bGUsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uU3ViamVjdCxcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS5JbWFnZSxcclxuICAgICAgICAgICAgbW8sXHJcbiAgICAgICAgICAgIHVpT3B0aW9ucyxcclxuICAgICAgICAgICAgb3RoZXJPcHRpb25zXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3ByZXBhcmVQcm9wZXJ0aWVzKFxyXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICAgICAgY29udGVudDogc3RyaW5nXHJcbiAgICApOiBOb3RpZmljYXRpb25JdGVtIHtcclxuICAgICAgICBpZiAoIW1vKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBub3RpZmljYXRpb25JdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5ub3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgICAgICAuLi5tbyxcclxuICAgICAgICAgICAgVWlBY3Rpb25zOiAhbW8uVWlBY3Rpb25zID8gW10gOiBKU09OLnBhcnNlKG1vLlVpQWN0aW9ucyksXHJcbiAgICAgICAgICAgIENyZWF0aW9uRGF0ZTogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlLFxyXG4gICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlJENhcHRpb24sXHJcbiAgICAgICAgICAgIENyZWF0b3JVc2VyOiBtby5JTWVzc2FnZS5DcmVhdG9yVXNlcixcclxuICAgICAgICAgICAgQ3JlYXRvclVzZXIkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRvclVzZXIkQ2FwdGlvbixcclxuICAgICAgICAgICAgSWNvbjogYCR7QmFyc2FBcGkuQncuT3JpZ2luKCl9JHtub3RpZmljYXRpb25JdGVtLkljb259YCxcclxuICAgICAgICAgICAgJFNhZmVDb250ZW50OiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGVudClcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfaW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmU7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzUnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlc1J0bFtsYW5nXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdncmFudGVkJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzUnRsLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhbmdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzpwZXJtaXNzaW9uIGRlbmllZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcignbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZGVuaWVkLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBVc2VyTm90aWZpY2F0aW9uU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgRGlzYWJsZUNhcnRhYmxlR3JvdXBzOiBNb0ZvclJlcG9ydE1vZGVsO1xyXG4gICAgRW5hYmxlOiBib29sZWFuO1xyXG59XHJcbiJdfQ==