@wavemaker/app-ng-runtime 11.4.0-next.28701 → 11.4.0-rc.5342

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 (92) hide show
  1. app-ng-runtime/build-task/basic/tree/tree.build.d.ts +1 -2
  2. app-ng-runtime/build-task/bundles/index.umd.js +7 -9
  3. app-ng-runtime/build-task/bundles/index.umd.js.map +1 -1
  4. app-ng-runtime/build-task/esm2015/basic/tree/tree.build.js +3 -4
  5. app-ng-runtime/build-task/esm2015/navigation/popover/popover.build.js +3 -3
  6. app-ng-runtime/build-task/fesm2015/index.js +7 -9
  7. app-ng-runtime/build-task/fesm2015/index.js.map +1 -1
  8. app-ng-runtime/components/base/bundles/index.umd.js +7 -4
  9. app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
  10. app-ng-runtime/components/base/esm2015/utils/widget-utils.js +7 -4
  11. app-ng-runtime/components/base/esm2015/widgets/common/dialog/dialog.service.js +3 -3
  12. app-ng-runtime/components/base/fesm2015/index.js +8 -5
  13. app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
  14. app-ng-runtime/components/base/utils/widget-utils.d.ts +1 -1
  15. app-ng-runtime/components/basic/tree/bundles/index.umd.js +280 -256
  16. app-ng-runtime/components/basic/tree/bundles/index.umd.js.map +1 -1
  17. app-ng-runtime/components/basic/tree/esm2015/public_api.js +2 -2
  18. app-ng-runtime/components/basic/tree/esm2015/tree.component.js +322 -0
  19. app-ng-runtime/components/basic/tree/esm2015/tree.module.js +3 -3
  20. app-ng-runtime/components/basic/tree/fesm2015/index.js +260 -248
  21. app-ng-runtime/components/basic/tree/fesm2015/index.js.map +1 -1
  22. app-ng-runtime/components/basic/tree/index.metadata.json +1 -1
  23. app-ng-runtime/components/basic/tree/public_api.d.ts +1 -1
  24. app-ng-runtime/components/basic/tree/tree.component.d.ts +34 -0
  25. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +39 -23
  26. app-ng-runtime/components/containers/tabs/bundles/index.umd.js.map +1 -1
  27. app-ng-runtime/components/containers/tabs/esm2015/tab-pane/tab-pane.component.js +8 -1
  28. app-ng-runtime/components/containers/tabs/esm2015/tabs.animator.js +33 -13
  29. app-ng-runtime/components/containers/tabs/fesm2015/index.js +40 -13
  30. app-ng-runtime/components/containers/tabs/fesm2015/index.js.map +1 -1
  31. app-ng-runtime/components/containers/tabs/tabs.animator.d.ts +5 -1
  32. app-ng-runtime/components/data/list/bundles/index.umd.js +51 -42
  33. app-ng-runtime/components/data/list/bundles/index.umd.js.map +1 -1
  34. app-ng-runtime/components/data/list/esm2015/list.component.js +51 -42
  35. app-ng-runtime/components/data/list/fesm2015/index.js +50 -41
  36. app-ng-runtime/components/data/list/fesm2015/index.js.map +1 -1
  37. app-ng-runtime/components/data/list/index.metadata.json +1 -1
  38. app-ng-runtime/components/data/pagination/bundles/index.umd.js +21 -4
  39. app-ng-runtime/components/data/pagination/bundles/index.umd.js.map +1 -1
  40. app-ng-runtime/components/data/pagination/esm2015/pagination.component.js +22 -5
  41. app-ng-runtime/components/data/pagination/fesm2015/index.js +21 -4
  42. app-ng-runtime/components/data/pagination/fesm2015/index.js.map +1 -1
  43. app-ng-runtime/components/data/pagination/index.metadata.json +1 -1
  44. app-ng-runtime/components/data/pagination/pagination.component.d.ts +1 -0
  45. app-ng-runtime/components/data/table/bundles/index.umd.js +7 -0
  46. app-ng-runtime/components/data/table/bundles/index.umd.js.map +1 -1
  47. app-ng-runtime/components/data/table/esm2015/table.component.js +8 -1
  48. app-ng-runtime/components/data/table/fesm2015/index.js +7 -0
  49. app-ng-runtime/components/data/table/fesm2015/index.js.map +1 -1
  50. app-ng-runtime/components/data/table/index.metadata.json +1 -1
  51. app-ng-runtime/components/dialogs/default/base-dialog.d.ts +1 -0
  52. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +13 -4
  53. app-ng-runtime/components/dialogs/default/bundles/index.umd.js.map +1 -1
  54. app-ng-runtime/components/dialogs/default/esm2015/base-dialog.js +14 -6
  55. app-ng-runtime/components/dialogs/default/fesm2015/index.js +13 -5
  56. app-ng-runtime/components/dialogs/default/fesm2015/index.js.map +1 -1
  57. app-ng-runtime/components/dialogs/default/index.metadata.json +1 -1
  58. app-ng-runtime/components/input/epoch/bundles/index.umd.js +66 -29
  59. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  60. app-ng-runtime/components/input/epoch/date-time/date-time-picker.component.d.ts +1 -0
  61. app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +43 -25
  62. app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +3 -3
  63. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time-picker.component.js +31 -11
  64. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time.component.js +2 -2
  65. app-ng-runtime/components/input/epoch/fesm2015/index.js +75 -37
  66. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  67. app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
  68. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +3 -4
  69. app-ng-runtime/components/navigation/popover/bundles/index.umd.js.map +1 -1
  70. app-ng-runtime/components/navigation/popover/esm2015/popover.component.js +5 -6
  71. app-ng-runtime/components/navigation/popover/fesm2015/index.js +4 -5
  72. app-ng-runtime/components/navigation/popover/fesm2015/index.js.map +1 -1
  73. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +24 -6
  74. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js.map +1 -1
  75. app-ng-runtime/mobile/components/page/default/esm2015/page.directive.js +20 -3
  76. app-ng-runtime/mobile/components/page/default/fesm2015/index.js +19 -2
  77. app-ng-runtime/mobile/components/page/default/fesm2015/index.js.map +1 -1
  78. app-ng-runtime/mobile/components/page/default/index.metadata.json +1 -1
  79. app-ng-runtime/mobile/components/page/default/page.directive.d.ts +4 -1
  80. app-ng-runtime/package.json +1 -1
  81. app-ng-runtime/scripts/datatable/datatable.js +23 -23
  82. app-ng-runtime/scripts/tree-keyboard-navigation/keyboard-navigation.js +251 -0
  83. app-ng-runtime/variables/bundles/index.umd.js +14 -4
  84. app-ng-runtime/variables/bundles/index.umd.js.map +1 -1
  85. app-ng-runtime/variables/esm2015/manager/action/notification-action.manager.js +5 -6
  86. app-ng-runtime/variables/esm2015/service/variables.service.js +8 -1
  87. app-ng-runtime/variables/fesm2015/index.js +11 -5
  88. app-ng-runtime/variables/fesm2015/index.js.map +1 -1
  89. app-ng-runtime/variables/index.metadata.json +1 -1
  90. app-ng-runtime/variables/service/variables.service.d.ts +4 -0
  91. app-ng-runtime/components/basic/tree/esm2015/tree.directive.js +0 -310
  92. app-ng-runtime/components/basic/tree/tree.directive.d.ts +0 -35
@@ -1,7 +1,7 @@
1
1
  import { Injector, Injectable } from '@angular/core';
2
2
  import { NavigationEnd, Router } from '@angular/router';
3
3
  import { BsModalService, ModalOptions } from 'ngx-bootstrap/modal';
4
- import { AbstractDialogService, findRootContainer, generateGUId, isMobileApp } from '@wm/core';
4
+ import { AbstractDialogService, findRootContainer, generateGUId, isMobile, isMobileApp } from '@wm/core';
5
5
  import { BaseComponent } from '@wm/components/base';
6
6
  import { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';
7
7
  let eventsRegistered = false;
@@ -50,19 +50,27 @@ export class BaseDialog extends BaseComponent {
50
50
  this.bsModal = inj.get(BsModalService);
51
51
  const router = inj.get(Router);
52
52
  const subscriptions = [
53
- this.bsModal.onShown.subscribe(() => {
53
+ this.bsModal.onShown.subscribe(({ id }) => {
54
54
  const ref = this.dialogService.getLastOpenedDialog();
55
- if (ref === this) {
55
+ if (ref === this && !this.dialogId) {
56
56
  // Always get the reference of last pushed dialog in the array for calling onOpen callback
57
57
  invokeOpenedCallback(ref);
58
+ this.dialogId = id;
58
59
  }
59
60
  }),
60
61
  this.bsModal.onShow.subscribe(() => {
61
62
  focusTrapObj.activeElement = document.activeElement;
62
63
  }),
63
64
  this.bsModal.onHidden.subscribe((closeReason) => {
64
- const ref = closeReason === 'esc' || closeReason === 'backdrop-click' ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();
65
+ let ref = this.dialogService.getDialogRefFromClosedDialogs();
66
+ if (this.dialogId && (closeReason === null || closeReason === void 0 ? void 0 : closeReason.id) === this.dialogId) {
67
+ ref = this;
68
+ }
69
+ else if (closeReason === 'esc' || closeReason === 'backdrop-click') {
70
+ ref = this.dialogService.getLastOpenedDialog();
71
+ }
65
72
  if (ref === this) {
73
+ this.dialogId = null;
66
74
  // remove the dialog reference from opened dialogs and closed dialogs
67
75
  this.dialogService.removeFromOpenedDialogs(ref);
68
76
  this.dialogService.removeFromClosedDialogs(ref);
@@ -111,7 +119,7 @@ export class BaseDialog extends BaseComponent {
111
119
  this.modalOptions.ariaLabelledBy = this.titleId;
112
120
  this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
113
121
  // Fix for [WMS-23948]: Focus moving out of active Dialog widget
114
- if (this.dialogService.getOpenedDialogs().length === 1 && isMobileApp()) {
122
+ if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile() || isMobileApp())) {
115
123
  const parentSelector = $('body > app-root')[0];
116
124
  parentSelector.setAttribute('aria-hidden', 'true');
117
125
  }
@@ -171,4 +179,4 @@ BaseDialog.ctorParameters = () => [
171
179
  { type: ModalOptions }
172
180
  ];
173
181
  export { ɵ0, ɵ1 };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGlhbG9ncy9kZWZhdWx0L3NyYy9iYXNlLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUEwQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQWMsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSS9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBZ0IsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUUzRyxPQUFPLEVBQUUsYUFBYSxFQUEwQixNQUFNLHFCQUFxQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUl4RSxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUU3QixJQUFJLFlBQVksR0FBRztJQUNmLGFBQWEsRUFBRSxJQUFJO0NBQ3RCLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDakMsSUFBSSxHQUFHLEVBQUU7UUFDTCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLDJGQUEyRjtZQUMzRixJQUFJLElBQUksRUFBRTtnQkFDTixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQzthQUM3RDtZQUNELEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsRUFBQyxNQUFNLEVBQUUsRUFBQyxJQUFJLEVB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QUM7YUFDekU7U0FDSjtRQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OztZQXJKSixVQUFVOzs7WUExREYsUUFBUTs7WUFFb0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBYnN0cmFjdERpYWxvZ1NlcnZpY2UsIGNsb3NlUG9wb3ZlciwgZmluZFJvb3RDb250YWluZXIsIGdlbmVyYXRlR1VJZCwgaXNNb2JpbGVBcHB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgSURpYWxvZywgSVdpZGdldENvbmZpZyB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgY3JlYXRlRm9jdXNUcmFwIH0gZnJvbSAnQHdhdmVtYWtlci9mb2N1cy10cmFwL2Rpc3QvZm9jdXMtdHJhcCc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxubGV0IGV2ZW50c1JlZ2lzdGVyZWQgPSBmYWxzZTtcblxubGV0IGZvY3VzVHJhcE9iaiA9IHtcbiAgICBhY3RpdmVFbGVtZW50OiBudWxsXG59O1xuXG5jb25zdCBpbnZva2VPcGVuZWRDYWxsYmFjayA9IChyZWYpID0+IHtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm9vdCA9IGZpbmRSb290Q29udGFpbmVyKHJlZi4kZWxlbWVudCk7XG4gICAgICAgICAgICAvLyBpZiBwYWdlIHN0eWxlcyBoYXZlIHRvIGJlIGFwcGxpZWQgdG8gZGlhbG9nIHRoZW4gZGlhbG9nIGhhcyB0byBiZSBjaGlsZCBvZiBwYWdlIGVsZW1lbnQuXG4gICAgICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgICAgICAgICQoJ2JvZHkgPiBtb2RhbC1jb250YWluZXIgPiBkaXYnKS53cmFwKCc8JyArIHJvb3QgKyAnLz4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZi5pbnZva2VFdmVudENhbGxiYWNrKCdvcGVuZWQnLCB7JGV2ZW50OiB7dHlwZTogJ29wZW5lZCd9fSk7XG4gICAgICAgICAgICAvLyBmb2N1c1RyYXBPYmogd2lsbCBjcmVhdGUgZm9jdXMgdHJhcCBmb3IgdGhlIHJlc3BlY3RpdmUgZGlhbG9nIGFjY29yZGluZyB0byB0aGUgdGl0bGVJZCBhc3NpZ25lZCB0byB0aGVtIHdoaWNoIGlzIHVuaXF1ZS5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9ICQoJ1thcmlhLWxhYmVsbGVkYnk9ICcgKyByZWYudGl0bGVJZCArICddJylbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IGtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHMgPSBbY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICAgICAgJ2EsIGJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGRldGFpbHMsIGlmcmFtZSwgZW1iZWQsIG9iamVjdCwgc3VtbWFyeSBkaWFsb2csIGF1ZGlvW2NvbnRyb2xzXSwgdmlkZW9bY29udHJvbHNdLCBbY29udGVudGVkaXRhYmxlXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuICAgICAgICAgICAgICApXS5maWx0ZXIoZWwgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAhZWxbMF0uaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpICYmICFlbFswXS5oYXNBdHRyaWJ1dGUoJ2hpZGRlbicpKVxuICAgICAgICAgICAgICB9KVswXTtcblxuICAgICAgICAgICAgJChrZXlib2FyZEZvY3VzYWJsZUVsZW1lbnRzWzBdKS5mb2N1cygpO1xuXG4gICAgICAgICAgICBmb2N1c1RyYXBPYmpbcmVmLnRpdGxlSWRdID0gY3JlYXRlRm9jdXNUcmFwKGNvbnRhaW5lciwge1xuICAgICAgICAgICAgICAgIG9uQWN0aXZhdGU6ICgpID0+IGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKSxcbiAgICAgICAgICAgICAgICBvbkRlYWN0aXZhdGU6ICgpID0+IGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKSxcbiAgICAgICAgICAgICAgICBhbGxvd091dHNpZGVDbGljazogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZXRSZXR1cm5Gb2N1czogZm9jdXNUcmFwT2JqLmFjdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvY3VzVHJhcE9ialtyZWYudGl0bGVJZF0uYWN0aXZhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuY29uc3QgaW52b2tlQ2xvc2VkQ2FsbGJhY2sgPSAocmVmKSA9PiB7XG4gICAgaWYgKHJlZikge1xuICAgICAgICByZWYuaW52b2tlRXZlbnRDYWxsYmFjaygnY2xvc2UnKTtcbiAgICAgICAgcmVmLmRpYWxvZ1JlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZURpYWxvZyBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBJRGlhbG9nLCBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2U7XG5cbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogQnNNb2RhbFJlZjtcbiAgICBwdWJsaWMgdGl0bGVJZDpzdHJpbmcgPSAnd21kaWFsb2ctJyArIGdlbmVyYXRlR1VJZCgpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICB3aWRnZXRDb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgIHByb3RlY3RlZCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9uc1xuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIHdpZGdldENvbmZpZyk7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluai5nZXQoQWJzdHJhY3REaWFsb2dTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5ic01vZGFsID0gaW5qLmdldChCc01vZGFsU2VydmljZSk7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9IGluai5nZXQoUm91dGVyKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vblNob3duLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldExhc3RPcGVuZWREaWFsb2coKTtcbiAgICAgICAgICAgICAgICBpZiAocmVmID09PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBnZXQgdGhlIHJlZmVyZW5jZSBvZiBsYXN0IHB1c2hlZCBkaWFsb2cgaW4gdGhlIGFycmF5IGZvciBjYWxsaW5nIG9uT3BlbiBjYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICBpbnZva2VPcGVuZWRDYWxsYmFjayhyZWYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uU2hvdy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvY3VzVHJhcE9iai5hY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uSGlkZGVuLnN1YnNjcmliZSgoY2xvc2VSZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWYgPSBjbG9zZVJlYXNvbiA9PT0gJ2VzYycgfHwgY2xvc2VSZWFzb24gPT09ICdiYWNrZHJvcC1jbGljaycgPyB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0TGFzdE9wZW5lZERpYWxvZygpIDogdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ1JlZkZyb21DbG9zZWREaWFsb2dzKCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZiA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgdGhlIGRpYWxvZyByZWZlcmVuY2UgZnJvbSBvcGVuZWQgZGlhbG9ncyBhbmQgY2xvc2VkIGRpYWxvZ3NcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21PcGVuZWREaWFsb2dzKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVGcm9tQ2xvc2VkRGlhbG9ncyhyZWYpO1xuICAgICAgICAgICAgICAgICAgICBpbnZva2VDbG9zZWRDYWxsYmFjayhyZWYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVmLmNsb3NlQ2FsbEJhY2tGbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmLmNsb3NlQ2FsbEJhY2tGbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLmJzTW9kYWwub25IaWRlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gIFdpbGwgZGUtYWN0aXZhdGUgZm9jdXMgdHJhcCBmb3IgdGhlIHJlc3BlY3RpdmUgZGlhbG9nIHdoZW4gdGhleSBhcmUgY2xvc2VkLlxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXREaWFsb2dSZWZGcm9tQ2xvc2VkRGlhbG9ncygpO1xuICAgICAgICAgICAgICAgIGlmIChyZWYgJiYgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzVHJhcE9ialtyZWYudGl0bGVJZF0uZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHsvLyByZW1vdmUgdGhlIGRpYWxvZyByZWZlcmVuY2UgZnJvbSBvcGVuZWQgZGlhbG9ncyBhbmQgY2xvc2VkIGRpYWxvZ3NcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVGcm9tT3BlbmVkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVGcm9tQ2xvc2VkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBkaWFsb2dcbiAgICAgKiBTdWJzY3JpYmUgdG8gdGhlIG9uU2hvd24gZXZlbnQgZW1pdHRlciBvZiBic01vZGFsIGFuZCB0cmlnZ2VyIG9uLW9wZW5lZCBldmVudCBjYWxsYmFja1xuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuKGluaXRTdGF0ZT86IGFueSkge1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcG9wb3ZlcnMgaW4gdGhlIHBhZ2UgdG8gYXZvaWQgdGhlIG92ZXJsYXAgd2l0aCBkaWFsb2dcbiAgICAgICAgLy8gY2xvc2VQb3BvdmVyKHRoaXMuJGVsZW1lbnQpOyBDb21tZW50aW5nIHRoaXMgbGluZSBiZWNhdXNlIGl0IGlzIGNhdXNpbmcgcmVncmVzc2lvbihpZiB3ZSBoYXZlIGRpYWxvZyBpbnNpZGUgcG9wb3ZlciBhcyBwYXJ0YWlsIGNvbnRlbnQsIHRoZW4gdGhlIGRpYWxvZyBjbG9zZSBpcyBub3Qgd29ya2luZyBiZWNhdXNlIG9uIGNsb3NpbmcgdGhlIHBvcG92ZXIgdGhlIHBhcnRpYWwgZ2V0IGRlc3Ryb3llZC4pXG5cbiAgICAgICAgLy8gZG8gbm90IG9wZW4gdGhlIGRpYWxvZyBhZ2FpbiBpZiBpdCBpcyBhbHJlYWR5IG9wZW5lZFxuICAgICAgICBjb25zdCBkdXBsaWNhdGVEaWFsb2dDaGVjayA9IChvcGVuZWREaWFsb2cpID0+IHtcbiAgICAgICAgICAgcmV0dXJuIG9wZW5lZERpYWxvZyA9PT0gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5kaWFsb2dTZXJ2aWNlLmdldE9wZW5lZERpYWxvZ3MoKS5zb21lKGR1cGxpY2F0ZURpYWxvZ0NoZWNrKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZFRvT3BlbmVkRGlhbG9ncyh0aGlzKTtcblxuICAgICAgICAvLyBleHRlbmQgdGhlIGNvbnRleHQgd2l0aCB0aGUgaW5pdFN0YXRlXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5jb250ZXh0LCBpbml0U3RhdGUpO1xuICAgICAgICB0aGlzLm1vZGFsT3B0aW9ucy5hcmlhTGFiZWxsZWRCeSA9IHRoaXMudGl0bGVJZDtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmJzTW9kYWwuc2hvdyh0aGlzLmdldFRlbXBsYXRlUmVmKCksIHRoaXMubW9kYWxPcHRpb25zKTtcbiAgICAgICAgLy8gRml4IGZvciBbV01TLTIzOTQ4XTogRm9jdXMgbW92aW5nIG91dCBvZiBhY3RpdmUgRGlhbG9nIHdpZGdldFxuICAgICAgICBpZiAodGhpcy5kaWFsb2dTZXJ2aWNlLmdldE9wZW5lZERpYWxvZ3MoKS5sZW5ndGggPT09IDEgJiYgaXNNb2JpbGVBcHAoKSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50U2VsZWN0b3IgPSAkKCdib2R5ID4gYXBwLXJvb3QnKVswXTtcbiAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xvc2VzIHRoZSBkaWFsb2dcbiAgICAgKiBpbnZva2VzIHRoZSBvbi1jbG9zZSBldmVudCBjYWxsYmFja1xuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwb3BvdmVycyBpbiB0aGUgcGFnZSB0byBhdm9pZCB0aGUgb3ZlcmxhcCB3aXRoIGRpYWxvZ1xuICAgICAgICAvLyBjbG9zZVBvcG92ZXIodGhpcy4kZWxlbWVudCk7IENvbW1lbnRpbmcgdGhpcyBsaW5lIGJlY2F1c2UgaXQgaXMgY2F1c2luZyByZWdyZXNzaW9uKGlmIHdlIGhhdmUgZGlhbG9nIGluc2lkZSBwb3BvdmVyIGFzIHBhcnRhaWwgY29udGVudCwgdGhlbiB0aGUgZGlhbG9nIGNsb3NlIGlzIG5vdCB3b3JraW5nIGJlY2F1c2Ugb24gY2xvc2luZyB0aGUgcG9wb3ZlciB0aGUgcGFydGlhbCBnZXQgZGVzdHJveWVkLilcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkVG9DbG9zZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgdGhlIGRpYWxvZyB3aXRoIHRoZSBkaWFsb2cgc2VydmljZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2Vzc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWdpc3RlcihzY29wZSkge1xuICAgICAgICAvLyBhZGQgc2NvcGUgYWxvbmcgd2l0aCBuYW1lIGluIHRoZSBkaWFsb2dSZWZzQ29sbGVjdGlvbiBNYXAgd2hpbGUgcmVnaXN0ZXJpbmcgZGlhbG9nXG4gICAgICAgIC8vIFNvIHRoYXQgMiBkaWFsb2dzIGhhdmluZyBzYW1lIG5hbWUgb24gZGlmZmVyZW50IHBhZ2VzIHdvbid0IGJlIG92ZXJyaWRkZW4uXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZWdpc3Rlcih0aGlzLm5hbWUsIHRoaXMsIHNjb3BlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZSBSZWdpc3RlciB0aGUgZGlhbG9nIHdpdGggdGhlIGRpYWxvZyBzZXJ2aWNlIGFmdGVyIGRpYWxvZyBkZXN0cnVjdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBkZVJlZ2lzdGVyKHNjb3BlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kZVJlZ2lzdGVyKHRoaXMubmFtZSwgc2NvcGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHN1YmNsYXNzZXMgb2YgQmFzZURpYWxvZyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlIHByb3BlciB0ZW1wbGF0ZSBlbGVtZW50IHJlZlxuICAgICAqIGJzTW9kYWwgd2lsbCB1c2UgdGhpcyByZWZlbmNlIHRvIG9wZW4gdGhlIGRpYWxvZ1xuICAgICAqIEByZXR1cm5zIHtUZW1wbGF0ZVJlZjxhbnk+fVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUZW1wbGF0ZVJlZigpOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHJvdGVjdGVkIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIC8vIGlnbm9yZSB0aGUgY2xhc3MgYXR0cmlidXRlLlxuICAgICAgICAvLyBQcmV2ZW50IHRoZSBmcmFtZXdvcmsgZnJvbSBzZXR0aW5nIHRoZSBjbGFzcyBvbiB0aGUgaG9zdCBlbGVtZW50LlxuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8IGtleSA9PT0gJ25hbWUnIHx8IGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2FuaW1hdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmNsYXNzID0gdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MucmVwbGFjZSgnIGFuaW1hdGVkICcgKyBvdiwgJycpO1xuICAgICAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MgPSB0aGlzLm1vZGFsT3B0aW9ucy5jbGFzcyArICcgYW5pbWF0ZWQgJyArIG52O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRlUmVnaXN0ZXIodGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGlhbG9ncy9kZWZhdWx0L3NyYy9iYXNlLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUEwQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQWMsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSS9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBZ0IsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFckgsT0FBTyxFQUFFLGFBQWEsRUFBMEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHeEUsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFFN0IsSUFBSSxZQUFZLEdBQUc7SUFDZixhQUFhLEVBQUUsSUFBSTtDQUN0QixDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ2pDLElBQUksR0FBRyxFQUFFO1FBQ0wsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QywyRkFBMkY7WUFDM0YsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDN0Q7WUFDRCxHQUFHLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUMsTUFBTSxFQUFFLEVB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QUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7WUFDekQsT0FBTztTQUNWO2FBQU0sSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLElBQUksRUFBRSxFQUFFO2dCQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7YUFDekU7U0FDSjtRQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OztZQTdKSixVQUFVOzs7WUF6REYsUUFBUTs7WUFFb0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBYnN0cmFjdERpYWxvZ1NlcnZpY2UsIGNsb3NlUG9wb3ZlciwgZmluZFJvb3RDb250YWluZXIsIGdlbmVyYXRlR1VJZCwgaXNNb2JpbGUsIGlzTW9iaWxlQXBwfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIElEaWFsb2csIElXaWRnZXRDb25maWcgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IGNyZWF0ZUZvY3VzVHJhcCB9IGZyb20gJ0B3YXZlbWFrZXIvZm9jdXMtdHJhcC9kaXN0L2ZvY3VzLXRyYXAnO1xuZGVjbGFyZSBjb25zdCBfO1xuXG5sZXQgZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXG5sZXQgZm9jdXNUcmFwT2JqID0ge1xuICAgIGFjdGl2ZUVsZW1lbnQ6IG51bGxcbn07XG5cbmNvbnN0IGludm9rZU9wZW5lZENhbGxiYWNrID0gKHJlZikgPT4ge1xuICAgIGlmIChyZWYpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb290ID0gZmluZFJvb3RDb250YWluZXIocmVmLiRlbGVtZW50KTtcbiAgICAgICAgICAgIC8vIGlmIHBhZ2Ugc3R5bGVzIGhhdmUgdG8gYmUgYXBwbGllZCB0byBkaWFsb2cgdGhlbiBkaWFsb2cgaGFzIHRvIGJlIGNoaWxkIG9mIHBhZ2UgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgICAgICAgJCgnYm9keSA+IG1vZGFsLWNvbnRhaW5lciA+IGRpdicpLndyYXAoJzwnICsgcm9vdCArICcvPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmLmludm9rZUV2ZW50Q2FsbGJhY2soJ29wZW5lZCcsIHskZXZlbnQ6IHt0eXBlOiAnb3BlbmVkJ319KTtcbiAgICAgICAgICAgIC8vIGZvY3VzVHJhcE9iaiB3aWxsIGNyZWF0ZSBmb2N1cyB0cmFwIGZvciB0aGUgcmVzcGVjdGl2ZSBkaWFsb2cgYWNjb3JkaW5nIHRvIHRoZSB0aXRsZUlkIGFzc2lnbmVkIHRvIHRoZW0gd2hpY2ggaXMgdW5pcXVlLlxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gJCgnW2FyaWEtbGFiZWxsZWRieT0gJyArIHJlZi50aXRsZUlkICsgJ10nKVswXTtcblxuICAgICAgICAgICAgY29uc3Qga2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50cyA9IFtjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAnYSwgYnV0dG9uLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgZGV0YWlscywgaWZyYW1lLCBlbWJlZCwgb2JqZWN0LCBzdW1tYXJ5IGRpYWxvZywgYXVkaW9bY29udHJvbHNdLCB2aWRlb1tjb250cm9sc10sIFtjb250ZW50ZWRpdGFibGVdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknXG4gICAgICAgICAgICAgICldLmZpbHRlcihlbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICFlbFswXS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgIWVsWzBdLmhhc0F0dHJpYnV0ZSgnaGlkZGVuJykpXG4gICAgICAgICAgICAgIH0pWzBdO1xuXG4gICAgICAgICAgICAkKGtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNbMF0pLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIGZvY3VzVHJhcE9ialtyZWYudGl0bGVJZF0gPSBjcmVhdGVGb2N1c1RyYXAoY29udGFpbmVyLCB7XG4gICAgICAgICAgICAgICAgb25BY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIG9uRGVhY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNldFJldHVybkZvY3VzOiBmb2N1c1RyYXBPYmouYWN0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXS5hY3RpdmF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5jb25zdCBpbnZva2VDbG9zZWRDYWxsYmFjayA9IChyZWYpID0+IHtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5pbnZva2VFdmVudENhbGxiYWNrKCdjbG9zZScpO1xuICAgICAgICByZWYuZGlhbG9nUmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRGlhbG9nIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElEaWFsb2csIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBBYnN0cmFjdERpYWxvZ1NlcnZpY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBic01vZGFsOiBCc01vZGFsU2VydmljZTtcblxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBCc01vZGFsUmVmO1xuICAgIHByaXZhdGUgZGlhbG9nSWQ6IG51bWJlcjtcbiAgICBwdWJsaWMgdGl0bGVJZDpzdHJpbmcgPSAnd21kaWFsb2ctJyArIGdlbmVyYXRlR1VJZCgpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICB3aWRnZXRDb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgIHByb3RlY3RlZCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9uc1xuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIHdpZGdldENvbmZpZyk7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluai5nZXQoQWJzdHJhY3REaWFsb2dTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5ic01vZGFsID0gaW5qLmdldChCc01vZGFsU2VydmljZSk7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9IGluai5nZXQoUm91dGVyKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vblNob3duLnN1YnNjcmliZSgoe2lkfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRMYXN0T3BlbmVkRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZiA9PT0gdGhpcyAmJiAhdGhpcy5kaWFsb2dJZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgZ2V0IHRoZSByZWZlcmVuY2Ugb2YgbGFzdCBwdXNoZWQgZGlhbG9nIGluIHRoZSBhcnJheSBmb3IgY2FsbGluZyBvbk9wZW4gY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlT3BlbmVkQ2FsbGJhY2socmVmKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJZCA9IGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uU2hvdy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvY3VzVHJhcE9iai5hY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uSGlkZGVuLnN1YnNjcmliZSgoY2xvc2VSZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ1JlZkZyb21DbG9zZWREaWFsb2dzKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nSWQgJiYgY2xvc2VSZWFzb24/LmlkID09PSB0aGlzLmRpYWxvZ0lkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjbG9zZVJlYXNvbiA9PT0gJ2VzYycgfHwgY2xvc2VSZWFzb24gPT09ICdiYWNrZHJvcC1jbGljaycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldExhc3RPcGVuZWREaWFsb2coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlZiA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0lkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBkaWFsb2cgcmVmZXJlbmNlIGZyb20gb3BlbmVkIGRpYWxvZ3MgYW5kIGNsb3NlZCBkaWFsb2dzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVGcm9tT3BlbmVkRGlhbG9ncyhyZWYpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRnJvbUNsb3NlZERpYWxvZ3MocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlQ2xvc2VkQ2FsbGJhY2socmVmKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZi5jbG9zZUNhbGxCYWNrRm4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZi5jbG9zZUNhbGxCYWNrRm4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uSGlkZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vICBXaWxsIGRlLWFjdGl2YXRlIGZvY3VzIHRyYXAgZm9yIHRoZSByZXNwZWN0aXZlIGRpYWxvZyB3aGVuIHRoZXkgYXJlIGNsb3NlZC5cbiAgICAgICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0RGlhbG9nUmVmRnJvbUNsb3NlZERpYWxvZ3MoKTtcbiAgICAgICAgICAgICAgICBpZiAocmVmICYmIGZvY3VzVHJhcE9ialtyZWYudGl0bGVJZF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBmb2N1c1RyYXBPYmpbcmVmLnRpdGxlSWRdLmRlYWN0aXZhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiB7Ly8gcmVtb3ZlIHRoZSBkaWFsb2cgcmVmZXJlbmNlIGZyb20gb3BlbmVkIGRpYWxvZ3MgYW5kIGNsb3NlZCBkaWFsb2dzXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRnJvbU9wZW5lZERpYWxvZ3ModGhpcyk7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRnJvbUNsb3NlZERpYWxvZ3ModGhpcyk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyB0aGUgZGlhbG9nXG4gICAgICogU3Vic2NyaWJlIHRvIHRoZSBvblNob3duIGV2ZW50IGVtaXR0ZXIgb2YgYnNNb2RhbCBhbmQgdHJpZ2dlciBvbi1vcGVuZWQgZXZlbnQgY2FsbGJhY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgb3Blbihpbml0U3RhdGU/OiBhbnkpIHtcblxuICAgICAgICAvLyByZW1vdmUgdGhlIHBvcG92ZXJzIGluIHRoZSBwYWdlIHRvIGF2b2lkIHRoZSBvdmVybGFwIHdpdGggZGlhbG9nXG4gICAgICAgIC8vIGNsb3NlUG9wb3Zlcih0aGlzLiRlbGVtZW50KTsgQ29tbWVudGluZyB0aGlzIGxpbmUgYmVjYXVzZSBpdCBpcyBjYXVzaW5nIHJlZ3Jlc3Npb24oaWYgd2UgaGF2ZSBkaWFsb2cgaW5zaWRlIHBvcG92ZXIgYXMgcGFydGFpbCBjb250ZW50LCB0aGVuIHRoZSBkaWFsb2cgY2xvc2UgaXMgbm90IHdvcmtpbmcgYmVjYXVzZSBvbiBjbG9zaW5nIHRoZSBwb3BvdmVyIHRoZSBwYXJ0aWFsIGdldCBkZXN0cm95ZWQuKVxuXG4gICAgICAgIC8vIGRvIG5vdCBvcGVuIHRoZSBkaWFsb2cgYWdhaW4gaWYgaXQgaXMgYWxyZWFkeSBvcGVuZWRcbiAgICAgICAgY29uc3QgZHVwbGljYXRlRGlhbG9nQ2hlY2sgPSAob3BlbmVkRGlhbG9nKSA9PiB7XG4gICAgICAgICAgIHJldHVybiBvcGVuZWREaWFsb2cgPT09IHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nU2VydmljZS5nZXRPcGVuZWREaWFsb2dzKCkuc29tZShkdXBsaWNhdGVEaWFsb2dDaGVjaykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGRUb09wZW5lZERpYWxvZ3ModGhpcyk7XG5cbiAgICAgICAgLy8gZXh0ZW5kIHRoZSBjb250ZXh0IHdpdGggdGhlIGluaXRTdGF0ZVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udGV4dCwgaW5pdFN0YXRlKTtcbiAgICAgICAgdGhpcy5tb2RhbE9wdGlvbnMuYXJpYUxhYmVsbGVkQnkgPSB0aGlzLnRpdGxlSWQ7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5ic01vZGFsLnNob3codGhpcy5nZXRUZW1wbGF0ZVJlZigpLCB0aGlzLm1vZGFsT3B0aW9ucyk7XG4gICAgICAgIC8vIEZpeCBmb3IgW1dNUy0yMzk0OF06IEZvY3VzIG1vdmluZyBvdXQgb2YgYWN0aXZlIERpYWxvZyB3aWRnZXRcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nU2VydmljZS5nZXRPcGVuZWREaWFsb2dzKCkubGVuZ3RoID09PSAxICYmIChpc01vYmlsZSgpIHx8IGlzTW9iaWxlQXBwKCkpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRTZWxlY3RvciA9ICQoJ2JvZHkgPiBhcHAtcm9vdCcpWzBdO1xuICAgICAgICAgICAgcGFyZW50U2VsZWN0b3Iuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbG9zZXMgdGhlIGRpYWxvZ1xuICAgICAqIGludm9rZXMgdGhlIG9uLWNsb3NlIGV2ZW50IGNhbGxiYWNrXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICAvLyByZW1vdmUgdGhlIHBvcG92ZXJzIGluIHRoZSBwYWdlIHRvIGF2b2lkIHRoZSBvdmVybGFwIHdpdGggZGlhbG9nXG4gICAgICAgIC8vIGNsb3NlUG9wb3Zlcih0aGlzLiRlbGVtZW50KTsgQ29tbWVudGluZyB0aGlzIGxpbmUgYmVjYXVzZSBpdCBpcyBjYXVzaW5nIHJlZ3Jlc3Npb24oaWYgd2UgaGF2ZSBkaWFsb2cgaW5zaWRlIHBvcG92ZXIgYXMgcGFydGFpbCBjb250ZW50LCB0aGVuIHRoZSBkaWFsb2cgY2xvc2UgaXMgbm90IHdvcmtpbmcgYmVjYXVzZSBvbiBjbG9zaW5nIHRoZSBwb3BvdmVyIHRoZSBwYXJ0aWFsIGdldCBkZXN0cm95ZWQuKVxuICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGRUb0Nsb3NlZERpYWxvZ3ModGhpcyk7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciB0aGUgZGlhbG9nIHdpdGggdGhlIGRpYWxvZyBzZXJ2aWNlIGZvciBwcm9ncmFtbWF0aWMgYWNjZXNzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlZ2lzdGVyKHNjb3BlKSB7XG4gICAgICAgIC8vIGFkZCBzY29wZSBhbG9uZyB3aXRoIG5hbWUgaW4gdGhlIGRpYWxvZ1JlZnNDb2xsZWN0aW9uIE1hcCB3aGlsZSByZWdpc3RlcmluZyBkaWFsb2dcbiAgICAgICAgLy8gU28gdGhhdCAyIGRpYWxvZ3MgaGF2aW5nIHNhbWUgbmFtZSBvbiBkaWZmZXJlbnQgcGFnZXMgd29uJ3QgYmUgb3ZlcnJpZGRlbi5cbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMubmFtZSwgdGhpcywgc2NvcGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlIFJlZ2lzdGVyIHRoZSBkaWFsb2cgd2l0aCB0aGUgZGlhbG9nIHNlcnZpY2UgYWZ0ZXIgZGlhbG9nIGRlc3RydWN0aW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGRlUmVnaXN0ZXIoc2NvcGUpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmRlUmVnaXN0ZXIodGhpcy5uYW1lLCBzY29wZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc3ViY2xhc3NlcyBvZiBCYXNlRGlhbG9nIG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHVybiB0aGUgcHJvcGVyIHRlbXBsYXRlIGVsZW1lbnQgcmVmXG4gICAgICogYnNNb2RhbCB3aWxsIHVzZSB0aGlzIHJlZmVuY2UgdG8gb3BlbiB0aGUgZGlhbG9nXG4gICAgICogQHJldHVybnMge1RlbXBsYXRlUmVmPGFueT59XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRlbXBsYXRlUmVmKCk6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcm90ZWN0ZWQgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgLy8gaWdub3JlIHRoZSBjbGFzcyBhdHRyaWJ1dGUuXG4gICAgICAgIC8vIFByZXZlbnQgdGhlIGZyYW1ld29yayBmcm9tIHNldHRpbmcgdGhlIGNsYXNzIG9uIHRoZSBob3N0IGVsZW1lbnQuXG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwga2V5ID09PSAnbmFtZScgfHwga2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYW5pbWF0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MgPSB0aGlzLm1vZGFsT3B0aW9ucy5jbGFzcy5yZXBsYWNlKCcgYW5pbWF0ZWQgJyArIG92LCAnJyk7XG4gICAgICAgICAgICBpZiAobnYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsT3B0aW9ucy5jbGFzcyA9IHRoaXMubW9kYWxPcHRpb25zLmNsYXNzICsgJyBhbmltYXRlZCAnICsgbnY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuZGVSZWdpc3Rlcih0aGlzLnZpZXdQYXJlbnQpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Directive, ElementRef, Inject, Renderer2, HostBinding, Injector, Injectable, Component, Input, NgModule } from '@angular/core';
2
2
  import { BsModalService, ModalOptions, ModalModule } from 'ngx-bootstrap/modal';
3
- import { addClass, setCSS, setAttr, findRootContainer, generateGUId, AbstractDialogService, isMobileApp, toBoolean } from '@wm/core';
3
+ import { addClass, setCSS, setAttr, findRootContainer, generateGUId, AbstractDialogService, isMobile, isMobileApp, toBoolean } from '@wm/core';
4
4
  import { DialogRef, register, PROP_STRING, PROP_BOOLEAN, BaseComponent, provideAsWidgetRef, WmComponentsModule } from '@wm/components/base';
5
5
  import { Router, NavigationEnd } from '@angular/router';
6
6
  import { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';
@@ -136,19 +136,27 @@ class BaseDialog extends BaseComponent {
136
136
  this.bsModal = inj.get(BsModalService);
137
137
  const router = inj.get(Router);
138
138
  const subscriptions = [
139
- this.bsModal.onShown.subscribe(() => {
139
+ this.bsModal.onShown.subscribe(({ id }) => {
140
140
  const ref = this.dialogService.getLastOpenedDialog();
141
- if (ref === this) {
141
+ if (ref === this && !this.dialogId) {
142
142
  // Always get the reference of last pushed dialog in the array for calling onOpen callback
143
143
  invokeOpenedCallback(ref);
144
+ this.dialogId = id;
144
145
  }
145
146
  }),
146
147
  this.bsModal.onShow.subscribe(() => {
147
148
  focusTrapObj.activeElement = document.activeElement;
148
149
  }),
149
150
  this.bsModal.onHidden.subscribe((closeReason) => {
150
- const ref = closeReason === 'esc' || closeReason === 'backdrop-click' ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();
151
+ let ref = this.dialogService.getDialogRefFromClosedDialogs();
152
+ if (this.dialogId && (closeReason === null || closeReason === void 0 ? void 0 : closeReason.id) === this.dialogId) {
153
+ ref = this;
154
+ }
155
+ else if (closeReason === 'esc' || closeReason === 'backdrop-click') {
156
+ ref = this.dialogService.getLastOpenedDialog();
157
+ }
151
158
  if (ref === this) {
159
+ this.dialogId = null;
152
160
  // remove the dialog reference from opened dialogs and closed dialogs
153
161
  this.dialogService.removeFromOpenedDialogs(ref);
154
162
  this.dialogService.removeFromClosedDialogs(ref);
@@ -197,7 +205,7 @@ class BaseDialog extends BaseComponent {
197
205
  this.modalOptions.ariaLabelledBy = this.titleId;
198
206
  this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
199
207
  // Fix for [WMS-23948]: Focus moving out of active Dialog widget
200
- if (this.dialogService.getOpenedDialogs().length === 1 && isMobileApp()) {
208
+ if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile() || isMobileApp())) {
201
209
  const parentSelector = $('body > app-root')[0];
202
210
  parentSelector.setAttribute('aria-hidden', 'true');
203
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/dialogs/default/src/dialog-body/dialog-body.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.props.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/base-dialog.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog.module.ts","../../../../../projects/components/widgets/dialogs/default/src/index.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Inject, Renderer2 } from '@angular/core';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { addClass, setAttr, setCSS } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-dialog-body modal-body';\n\n@Directive({\n selector: 'div[wmDialogBody]',\n})\nexport class DialogBodyDirective {\n @HostBinding('style.height') height;\n constructor(\n elRef: ElementRef,\n @Inject(DialogRef) private dialogRef,\n bsModal: BsModalService,\n private renderer: Renderer2\n ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n\n const subscription = bsModal.onShown.subscribe(() => {\n const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];\n let dialogRootContainer = $('body.wm-app')[0];\n // To identify the microfrontend, if body tag doesn't have wm-app class then app loading as micro-frontend\n if(!dialogRootContainer) {\n const dialogBackrop = $('body > .modal-backdrop')[0];\n const parentContainer = $('body > modal-container')[0];\n dialogRootContainer = $('.wm-app')[0];\n if(dialogRootContainer && parentContainer ){\n if(dialogBackrop){\n this.renderer.appendChild(dialogRootContainer, dialogBackrop);\n }\n this.renderer.appendChild(dialogRootContainer, parentContainer);\n \n }\n }\n const width = this.dialogRef.width;\n const height = this.dialogRef.height;\n if(height){\n setTimeout(e=>{\n setCSS($(elRef.nativeElement)[0], 'height', height);\n });\n } \n if (dialogRoot) {\n if (width) {\n setCSS(dialogRoot, 'width', width);\n }\n setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);\n setAttr(dialogRoot, 'name', this.dialogRef.name);\n\n }\n subscription.unsubscribe();\n });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-dialogfooter',\n new Map([\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ])\n );\n};\n","import { Directive, Injector } from '@angular/core';\n\nimport { BaseComponent, IWidgetConfig, provideAsWidgetRef } from '@wm/components/base';\nimport { registerProps } from './dialog-footer.props';\n\nconst WIDGET_INFO: IWidgetConfig = {\n widgetType: 'wm-dialogfooter',\n hostClass: 'app-dialog-footer modal-footer'\n};\n\n@Directive({\n selector: 'div[wmDialogFooter]',\n providers: [\n provideAsWidgetRef(DialogFooterDirective)\n ]\n})\nexport class DialogFooterDirective extends BaseComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector) {\n super(inj, WIDGET_INFO);\n }\n}\n","import { Injector, OnDestroy, TemplateRef, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\n\nimport { Subscription } from 'rxjs';\n\nimport {AbstractDialogService, closePopover, findRootContainer, generateGUId, isMobileApp} from '@wm/core';\n\nimport { BaseComponent, IDialog, IWidgetConfig } from '@wm/components/base';\nimport { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';\n\ndeclare const _;\n\nlet eventsRegistered = false;\n\nlet focusTrapObj = {\n activeElement: null\n};\n\nconst invokeOpenedCallback = (ref) => {\n if (ref) {\n setTimeout(() => {\n const root = findRootContainer(ref.$element);\n // if page styles have to be applied to dialog then dialog has to be child of page element.\n if (root) {\n $('body > modal-container > div').wrap('<' + root + '/>');\n }\n ref.invokeEventCallback('opened', {$event: {type: 'opened'}});\n // focusTrapObj will create focus trap for the respective dialog according to the titleId assigned to them which is unique.\n const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];\n\n const keyboardFocusableElements = [container.querySelectorAll(\n 'a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => {\n return (\n !el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'))\n })[0];\n\n $(keyboardFocusableElements[0]).focus();\n\n focusTrapObj[ref.titleId] = createFocusTrap(container, {\n onActivate: () => container.classList.add('is-active'),\n onDeactivate: () => container.classList.remove('is-active'),\n allowOutsideClick: true,\n setReturnFocus: focusTrapObj.activeElement,\n });\n focusTrapObj[ref.titleId].activate();\n });\n }\n};\n\nconst invokeClosedCallback = (ref) => {\n if (ref) {\n ref.invokeEventCallback('close');\n ref.dialogRef = undefined;\n }\n};\n\n@Injectable()\nexport abstract class BaseDialog extends BaseComponent implements IDialog, OnDestroy {\n\n public name: string;\n\n private readonly dialogService: AbstractDialogService;\n private readonly bsModal: BsModalService;\n\n private dialogRef: BsModalRef;\n public titleId:string = 'wmdialog-' + generateGUId();\n\n protected constructor(\n inj: Injector,\n widgetConfig: IWidgetConfig,\n protected modalOptions: ModalOptions\n ) {\n super(inj, widgetConfig);\n this.dialogService = inj.get(AbstractDialogService);\n this.bsModal = inj.get(BsModalService);\n const router = inj.get(Router);\n\n const subscriptions: Subscription[] = [\n this.bsModal.onShown.subscribe(() => {\n const ref = this.dialogService.getLastOpenedDialog();\n if (ref === this) {\n // Always get the reference of last pushed dialog in the array for calling onOpen callback\n invokeOpenedCallback(ref);\n }\n }),\n this.bsModal.onShow.subscribe(() => {\n focusTrapObj.activeElement = document.activeElement;\n }),\n this.bsModal.onHidden.subscribe((closeReason) => {\n const ref = closeReason === 'esc' || closeReason === 'backdrop-click' ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();\n if (ref === this) {\n // remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(ref);\n this.dialogService.removeFromClosedDialogs(ref);\n invokeClosedCallback(ref);\n if (ref.closeCallBackFn) {\n ref.closeCallBackFn();\n }\n }\n }),\n this.bsModal.onHide.subscribe(() => {\n // Will de-activate focus trap for the respective dialog when they are closed.\n const ref = this.dialogService.getDialogRefFromClosedDialogs();\n if (ref && focusTrapObj[ref.titleId] !== undefined) {\n focusTrapObj[ref.titleId].deactivate();\n }\n }),\n router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.close();\n }\n })\n ];\n this.registerDestroyListener(() => {// remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(this);\n this.dialogService.removeFromClosedDialogs(this);\n subscriptions.forEach(s => s.unsubscribe());\n });\n }\n\n /**\n * Opens the dialog\n * Subscribe to the onShown event emitter of bsModal and trigger on-opened event callback\n */\n public open(initState?: any) {\n\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n\n // do not open the dialog again if it is already opened\n const duplicateDialogCheck = (openedDialog) => {\n return openedDialog === this;\n };\n\n if (this.dialogService.getOpenedDialogs().some(duplicateDialogCheck)) {\n return;\n }\n\n this.dialogService.addToOpenedDialogs(this);\n\n // extend the context with the initState\n Object.assign(this.context, initState);\n this.modalOptions.ariaLabelledBy = this.titleId;\n this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);\n // Fix for [WMS-23948]: Focus moving out of active Dialog widget\n if (this.dialogService.getOpenedDialogs().length === 1 && isMobileApp()) {\n const parentSelector = $('body > app-root')[0];\n parentSelector.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * closes the dialog\n * invokes the on-close event callback\n */\n public close() {\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n if (this.dialogRef) {\n this.dialogService.addToClosedDialogs(this);\n this.dialogRef.hide();\n }\n }\n\n /**\n * Register the dialog with the dialog service for programmatic access\n */\n protected register(scope) {\n // add scope along with name in the dialogRefsCollection Map while registering dialog\n // So that 2 dialogs having same name on different pages won't be overridden.\n this.dialogService.register(this.name, this, scope);\n }\n\n /**\n * De Register the dialog with the dialog service after dialog destruction\n */\n protected deRegister(scope) {\n this.dialogService.deRegister(this.name, scope);\n }\n\n /**\n * subclasses of BaseDialog must implement this method to return the proper template element ref\n * bsModal will use this refence to open the dialog\n * @returns {TemplateRef<any>}\n */\n protected abstract getTemplateRef(): TemplateRef<any>;\n\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n // ignore the class attribute.\n // Prevent the framework from setting the class on the host element.\n if (key === 'class' || key === 'name' || key === 'tabindex') {\n return;\n } else if (key === 'animation') {\n this.modalOptions.class = this.modalOptions.class.replace(' animated ' + ov, '');\n if (nv) {\n this.modalOptions.class = this.modalOptions.class + ' animated ' + nv;\n }\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n public ngOnDestroy() {\n this.close();\n this.deRegister(this.viewParent);\n super.ngOnDestroy();\n }\n}\n","import { Component, ElementRef, Inject, Input } from '@angular/core';\n\nimport { addClass, toBoolean } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\nimport { BaseDialog } from '../base-dialog';\n\nconst DEFAULT_CLS = 'app-dialog-header modal-header';\nconst DEFAULT_ICON_DIMENSIONS = '21px';\n\n@Component({\n selector: 'div[wmDialogHeader]',\n templateUrl: './dialog-header.component.html'\n})\nexport class DialogHeaderComponent {\n\n @Input() public iconwidth = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconheight = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconmargin: string;\n @Input() public iconclass: string;\n @Input() public iconurl: string;\n @Input() public closable = true;\n @Input() public heading: string;\n @Input() public subheading: string;\n @Input() public titleid:string;\n\n public get isClosable() {\n return toBoolean(this.closable);\n }\n\n constructor(elRef: ElementRef, @Inject(DialogRef) private dialogRef: BaseDialog) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n }\n\n public closeDialog() {\n this.dialogRef.close();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DialogBodyDirective } from './dialog-body/dialog-body.directive';\nimport { DialogFooterDirective } from './dialog-footer/dialog-footer.directive';\nimport { DialogHeaderComponent } from './dialog-header/dialog-header.component';\n\nconst components = [\n DialogBodyDirective,\n DialogFooterDirective,\n DialogHeaderComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ModalModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class DialogModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵa} from './dialog-footer/dialog-footer.props';"],"names":["DEFAULT_CLS"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/dialogs/default/src/dialog-body/dialog-body.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.props.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/base-dialog.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog.module.ts","../../../../../projects/components/widgets/dialogs/default/src/index.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Inject, Renderer2 } from '@angular/core';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { addClass, setAttr, setCSS } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-dialog-body modal-body';\n\n@Directive({\n selector: 'div[wmDialogBody]',\n})\nexport class DialogBodyDirective {\n @HostBinding('style.height') height;\n constructor(\n elRef: ElementRef,\n @Inject(DialogRef) private dialogRef,\n bsModal: BsModalService,\n private renderer: Renderer2\n ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n\n const subscription = bsModal.onShown.subscribe(() => {\n const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];\n let dialogRootContainer = $('body.wm-app')[0];\n // To identify the microfrontend, if body tag doesn't have wm-app class then app loading as micro-frontend\n if(!dialogRootContainer) {\n const dialogBackrop = $('body > .modal-backdrop')[0];\n const parentContainer = $('body > modal-container')[0];\n dialogRootContainer = $('.wm-app')[0];\n if(dialogRootContainer && parentContainer ){\n if(dialogBackrop){\n this.renderer.appendChild(dialogRootContainer, dialogBackrop);\n }\n this.renderer.appendChild(dialogRootContainer, parentContainer);\n \n }\n }\n const width = this.dialogRef.width;\n const height = this.dialogRef.height;\n if(height){\n setTimeout(e=>{\n setCSS($(elRef.nativeElement)[0], 'height', height);\n });\n } \n if (dialogRoot) {\n if (width) {\n setCSS(dialogRoot, 'width', width);\n }\n setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);\n setAttr(dialogRoot, 'name', this.dialogRef.name);\n\n }\n subscription.unsubscribe();\n });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-dialogfooter',\n new Map([\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ])\n );\n};\n","import { Directive, Injector } from '@angular/core';\n\nimport { BaseComponent, IWidgetConfig, provideAsWidgetRef } from '@wm/components/base';\nimport { registerProps } from './dialog-footer.props';\n\nconst WIDGET_INFO: IWidgetConfig = {\n widgetType: 'wm-dialogfooter',\n hostClass: 'app-dialog-footer modal-footer'\n};\n\n@Directive({\n selector: 'div[wmDialogFooter]',\n providers: [\n provideAsWidgetRef(DialogFooterDirective)\n ]\n})\nexport class DialogFooterDirective extends BaseComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector) {\n super(inj, WIDGET_INFO);\n }\n}\n","import { Injector, OnDestroy, TemplateRef, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\n\nimport { Subscription } from 'rxjs';\n\nimport {AbstractDialogService, closePopover, findRootContainer, generateGUId, isMobile, isMobileApp} from '@wm/core';\n\nimport { BaseComponent, IDialog, IWidgetConfig } from '@wm/components/base';\nimport { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';\ndeclare const _;\n\nlet eventsRegistered = false;\n\nlet focusTrapObj = {\n activeElement: null\n};\n\nconst invokeOpenedCallback = (ref) => {\n if (ref) {\n setTimeout(() => {\n const root = findRootContainer(ref.$element);\n // if page styles have to be applied to dialog then dialog has to be child of page element.\n if (root) {\n $('body > modal-container > div').wrap('<' + root + '/>');\n }\n ref.invokeEventCallback('opened', {$event: {type: 'opened'}});\n // focusTrapObj will create focus trap for the respective dialog according to the titleId assigned to them which is unique.\n const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];\n\n const keyboardFocusableElements = [container.querySelectorAll(\n 'a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => {\n return (\n !el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'))\n })[0];\n\n $(keyboardFocusableElements[0]).focus();\n\n focusTrapObj[ref.titleId] = createFocusTrap(container, {\n onActivate: () => container.classList.add('is-active'),\n onDeactivate: () => container.classList.remove('is-active'),\n allowOutsideClick: true,\n setReturnFocus: focusTrapObj.activeElement,\n });\n focusTrapObj[ref.titleId].activate();\n });\n }\n};\n\nconst invokeClosedCallback = (ref) => {\n if (ref) {\n ref.invokeEventCallback('close');\n ref.dialogRef = undefined;\n }\n};\n\n@Injectable()\nexport abstract class BaseDialog extends BaseComponent implements IDialog, OnDestroy {\n\n public name: string;\n\n private readonly dialogService: AbstractDialogService;\n private readonly bsModal: BsModalService;\n\n private dialogRef: BsModalRef;\n private dialogId: number;\n public titleId:string = 'wmdialog-' + generateGUId();\n\n protected constructor(\n inj: Injector,\n widgetConfig: IWidgetConfig,\n protected modalOptions: ModalOptions\n ) {\n super(inj, widgetConfig);\n this.dialogService = inj.get(AbstractDialogService);\n this.bsModal = inj.get(BsModalService);\n const router = inj.get(Router);\n\n const subscriptions: Subscription[] = [\n this.bsModal.onShown.subscribe(({id}) => {\n const ref = this.dialogService.getLastOpenedDialog();\n if (ref === this && !this.dialogId) {\n // Always get the reference of last pushed dialog in the array for calling onOpen callback\n invokeOpenedCallback(ref);\n this.dialogId = id;\n }\n }),\n this.bsModal.onShow.subscribe(() => {\n focusTrapObj.activeElement = document.activeElement;\n }),\n this.bsModal.onHidden.subscribe((closeReason) => {\n let ref = this.dialogService.getDialogRefFromClosedDialogs();\n if (this.dialogId && closeReason?.id === this.dialogId) {\n ref = this;\n } else if (closeReason === 'esc' || closeReason === 'backdrop-click') {\n ref = this.dialogService.getLastOpenedDialog();\n }\n if (ref === this) {\n this.dialogId = null;\n // remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(ref);\n this.dialogService.removeFromClosedDialogs(ref);\n invokeClosedCallback(ref);\n if (ref.closeCallBackFn) {\n ref.closeCallBackFn();\n }\n }\n }),\n this.bsModal.onHide.subscribe(() => {\n // Will de-activate focus trap for the respective dialog when they are closed.\n const ref = this.dialogService.getDialogRefFromClosedDialogs();\n if (ref && focusTrapObj[ref.titleId] !== undefined) {\n focusTrapObj[ref.titleId].deactivate();\n }\n }),\n router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.close();\n }\n })\n ];\n this.registerDestroyListener(() => {// remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(this);\n this.dialogService.removeFromClosedDialogs(this);\n subscriptions.forEach(s => s.unsubscribe());\n });\n }\n\n /**\n * Opens the dialog\n * Subscribe to the onShown event emitter of bsModal and trigger on-opened event callback\n */\n public open(initState?: any) {\n\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n\n // do not open the dialog again if it is already opened\n const duplicateDialogCheck = (openedDialog) => {\n return openedDialog === this;\n };\n\n if (this.dialogService.getOpenedDialogs().some(duplicateDialogCheck)) {\n return;\n }\n\n this.dialogService.addToOpenedDialogs(this);\n\n // extend the context with the initState\n Object.assign(this.context, initState);\n this.modalOptions.ariaLabelledBy = this.titleId;\n this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);\n // Fix for [WMS-23948]: Focus moving out of active Dialog widget\n if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile() || isMobileApp())) {\n const parentSelector = $('body > app-root')[0];\n parentSelector.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * closes the dialog\n * invokes the on-close event callback\n */\n public close() {\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n if (this.dialogRef) {\n this.dialogService.addToClosedDialogs(this);\n this.dialogRef.hide();\n }\n }\n\n /**\n * Register the dialog with the dialog service for programmatic access\n */\n protected register(scope) {\n // add scope along with name in the dialogRefsCollection Map while registering dialog\n // So that 2 dialogs having same name on different pages won't be overridden.\n this.dialogService.register(this.name, this, scope);\n }\n\n /**\n * De Register the dialog with the dialog service after dialog destruction\n */\n protected deRegister(scope) {\n this.dialogService.deRegister(this.name, scope);\n }\n\n /**\n * subclasses of BaseDialog must implement this method to return the proper template element ref\n * bsModal will use this refence to open the dialog\n * @returns {TemplateRef<any>}\n */\n protected abstract getTemplateRef(): TemplateRef<any>;\n\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n // ignore the class attribute.\n // Prevent the framework from setting the class on the host element.\n if (key === 'class' || key === 'name' || key === 'tabindex') {\n return;\n } else if (key === 'animation') {\n this.modalOptions.class = this.modalOptions.class.replace(' animated ' + ov, '');\n if (nv) {\n this.modalOptions.class = this.modalOptions.class + ' animated ' + nv;\n }\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n public ngOnDestroy() {\n this.close();\n this.deRegister(this.viewParent);\n super.ngOnDestroy();\n }\n}\n","import { Component, ElementRef, Inject, Input } from '@angular/core';\n\nimport { addClass, toBoolean } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\nimport { BaseDialog } from '../base-dialog';\n\nconst DEFAULT_CLS = 'app-dialog-header modal-header';\nconst DEFAULT_ICON_DIMENSIONS = '21px';\n\n@Component({\n selector: 'div[wmDialogHeader]',\n templateUrl: './dialog-header.component.html'\n})\nexport class DialogHeaderComponent {\n\n @Input() public iconwidth = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconheight = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconmargin: string;\n @Input() public iconclass: string;\n @Input() public iconurl: string;\n @Input() public closable = true;\n @Input() public heading: string;\n @Input() public subheading: string;\n @Input() public titleid:string;\n\n public get isClosable() {\n return toBoolean(this.closable);\n }\n\n constructor(elRef: ElementRef, @Inject(DialogRef) private dialogRef: BaseDialog) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n }\n\n public closeDialog() {\n this.dialogRef.close();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DialogBodyDirective } from './dialog-body/dialog-body.directive';\nimport { DialogFooterDirective } from './dialog-footer/dialog-footer.directive';\nimport { DialogHeaderComponent } from './dialog-header/dialog-header.component';\n\nconst components = [\n DialogBodyDirective,\n DialogFooterDirective,\n DialogHeaderComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ModalModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class DialogModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵa} from './dialog-footer/dialog-footer.props';"],"names":["DEFAULT_CLS"],"mappings":"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"}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"DialogBodyDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"div[wmDialogBody]"}]}],"members":{"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":16,"character":5},"arguments":["style.height"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":19,"character":16}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":18,"character":15},null,{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":20,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":21,"character":27}]}]}},"DialogFooterDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":16,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":10,"character":1},"arguments":[{"selector":"div[wmDialogFooter]","providers":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@wm/components/base","name":"provideAsWidgetRef","line":13,"character":8},"arguments":[{"__symbolic":"reference","name":"DialogFooterDirective"}]}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":21}]}]},"statics":{"initializeProps":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵa"}}}},"DialogHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"div[wmDialogHeader]","template":"<button *ngIf=\"isClosable\" aria-label=\"Close\" class=\"app-dialog-close close\" (click)=\"closeDialog();\" title=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n</button>\n<h4 class=\"app-dialog-title modal-title\">\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\" *ngIf=\"iconclass && !iconurl\"></i>\n <img data-identifier=\"img\" [src]=\"iconurl | image\" *ngIf=\"iconurl\" [ngStyle]=\"{width:iconwidth, height:iconheight, margin:iconmargin}\"/>\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n <span class=\"dialog-sub-heading\" *ngIf=\"subheading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n</h4>\n"}]}],"members":{"iconwidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"iconheight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":5}}]}],"iconmargin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":5}}]}],"iconclass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":5}}]}],"iconurl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":5}}]}],"closable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":5}}]}],"heading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":5}}]}],"subheading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":5}}]}],"titleid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":36},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":30,"character":43}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":23},{"__symbolic":"reference","name":"BaseDialog"}]}],"closeDialog":[{"__symbolic":"method"}]}},"BaseDialog":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":59,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":58,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":70,"character":13},{"__symbolic":"reference","module":"@wm/components/base","name":"IWidgetConfig","line":71,"character":22},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalOptions","line":72,"character":32}]}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"deRegister":[{"__symbolic":"method"}],"getTemplateRef":[{"__symbolic":"method"}],"onPropertyChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"DialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":8},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":19,"character":8},{"__symbolic":"reference","module":"@wm/components/base","name":"WmComponentsModule","line":20,"character":8}],"declarations":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"exports":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"entryComponents":[]}]}],"members":{}},"ɵa":{"__symbolic":"error","message":"Lambda not supported","line":2,"character":29,"module":"./dialog-footer/dialog-footer.props"}},"origins":{"DialogBodyDirective":"./dialog-body/dialog-body.directive","DialogFooterDirective":"./dialog-footer/dialog-footer.directive","DialogHeaderComponent":"./dialog-header/dialog-header.component","BaseDialog":"./base-dialog","DialogModule":"./dialog.module","ɵa":"./dialog-footer/dialog-footer.props"},"importAs":"@wm/components/dialogs"}
1
+ {"__symbolic":"module","version":4,"metadata":{"DialogBodyDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"div[wmDialogBody]"}]}],"members":{"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":16,"character":5},"arguments":["style.height"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":19,"character":16}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":18,"character":15},null,{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":20,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":21,"character":27}]}]}},"DialogFooterDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":16,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":10,"character":1},"arguments":[{"selector":"div[wmDialogFooter]","providers":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@wm/components/base","name":"provideAsWidgetRef","line":13,"character":8},"arguments":[{"__symbolic":"reference","name":"DialogFooterDirective"}]}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":21}]}]},"statics":{"initializeProps":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵa"}}}},"DialogHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"div[wmDialogHeader]","template":"<button *ngIf=\"isClosable\" aria-label=\"Close\" class=\"app-dialog-close close\" (click)=\"closeDialog();\" title=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n</button>\n<h4 class=\"app-dialog-title modal-title\">\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\" *ngIf=\"iconclass && !iconurl\"></i>\n <img data-identifier=\"img\" [src]=\"iconurl | image\" *ngIf=\"iconurl\" [ngStyle]=\"{width:iconwidth, height:iconheight, margin:iconmargin}\"/>\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n <span class=\"dialog-sub-heading\" *ngIf=\"subheading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n</h4>\n"}]}],"members":{"iconwidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"iconheight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":5}}]}],"iconmargin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":5}}]}],"iconclass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":5}}]}],"iconurl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":5}}]}],"closable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":5}}]}],"heading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":5}}]}],"subheading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":5}}]}],"titleid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":36},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":30,"character":43}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":23},{"__symbolic":"reference","name":"BaseDialog"}]}],"closeDialog":[{"__symbolic":"method"}]}},"BaseDialog":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":58,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":57,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":70,"character":13},{"__symbolic":"reference","module":"@wm/components/base","name":"IWidgetConfig","line":71,"character":22},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalOptions","line":72,"character":32}]}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"deRegister":[{"__symbolic":"method"}],"getTemplateRef":[{"__symbolic":"method"}],"onPropertyChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"DialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":8},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":19,"character":8},{"__symbolic":"reference","module":"@wm/components/base","name":"WmComponentsModule","line":20,"character":8}],"declarations":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"exports":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"entryComponents":[]}]}],"members":{}},"ɵa":{"__symbolic":"error","message":"Lambda not supported","line":2,"character":29,"module":"./dialog-footer/dialog-footer.props"}},"origins":{"DialogBodyDirective":"./dialog-body/dialog-body.directive","DialogFooterDirective":"./dialog-footer/dialog-footer.directive","DialogHeaderComponent":"./dialog-header/dialog-header.component","BaseDialog":"./base-dialog","DialogModule":"./dialog.module","ɵa":"./dialog-footer/dialog-footer.props"},"importAs":"@wm/components/dialogs"}