@acorex/platform 18.0.6 → 18.0.8

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 (149) hide show
  1. package/auth/lib/auth.strategy.d.ts +1 -1
  2. package/auth/lib/session.service.d.ts +0 -1
  3. package/common/lib/data/data-provider.types.d.ts +1 -1
  4. package/common/lib/schema/entity/entity.class.d.ts +1 -0
  5. package/common/lib/schema/widgets/lookup/lookup-widget-column.component.d.ts +1 -1
  6. package/common/lib/schema/widgets/lookup/lookup-widget-edit.component.d.ts +3 -1
  7. package/common/lib/schema/widgets/phone/phone-widget-edit.component.d.ts +3 -1
  8. package/esm2022/auth/lib/auth.guard.mjs +4 -4
  9. package/esm2022/auth/lib/auth.strategy.mjs +1 -1
  10. package/esm2022/auth/lib/session.service.mjs +14 -15
  11. package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
  12. package/esm2022/common/lib/schema/entity/entity.class.mjs +1 -1
  13. package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-edit.component.mjs +2 -2
  14. package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-view.component.mjs +2 -2
  15. package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +1 -1
  16. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.mjs +2 -2
  17. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +2 -2
  18. package/esm2022/common/lib/schema/widgets/email/email-widget-edit.component.mjs +2 -2
  19. package/esm2022/common/lib/schema/widgets/file/file-widget-filter.component.mjs +2 -2
  20. package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-filter.component.mjs +2 -2
  21. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-column.component.mjs +3 -3
  22. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-edit.component.mjs +23 -19
  23. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +2 -2
  24. package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-edit.component.mjs +1 -1
  25. package/esm2022/common/lib/schema/widgets/phone/phone-widget-edit.component.mjs +8 -4
  26. package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-filter.component.mjs +2 -2
  27. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +56 -61
  28. package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +4 -2
  29. package/esm2022/layout/entity/lib/entity.module.mjs +16 -19
  30. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +62 -55
  31. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +83 -61
  32. package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +10 -8
  33. package/esm2022/layouts/lib/admin/admin.module.mjs +9 -2
  34. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +6 -3
  35. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +7 -5
  36. package/esm2022/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.mjs +91 -0
  37. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.mjs +4 -3
  38. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.mjs +4 -3
  39. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +4 -3
  40. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.mjs +1 -1
  41. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.mjs +4 -3
  42. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +18 -6
  43. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.mjs +9 -5
  44. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +6 -3
  45. package/esm2022/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.mjs +5 -3
  46. package/esm2022/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.mjs +77 -0
  47. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +8 -5
  48. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +29 -13
  49. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +17 -13
  50. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +13 -9
  51. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +8 -5
  52. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +8 -5
  53. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +2 -2
  54. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-edit.component.mjs +2 -2
  55. package/esm2022/widgets/lib/editors/link-widget/index.mjs +8 -0
  56. package/esm2022/widgets/lib/editors/link-widget/link-widget-column.component.mjs +19 -0
  57. package/esm2022/widgets/lib/editors/link-widget/link-widget-designer.component.mjs +19 -0
  58. package/esm2022/widgets/lib/editors/link-widget/link-widget-edit.component.mjs +391 -0
  59. package/esm2022/widgets/lib/editors/link-widget/link-widget-filter.component.mjs +20 -0
  60. package/esm2022/widgets/lib/editors/link-widget/link-widget-print.component.mjs +19 -0
  61. package/esm2022/widgets/lib/editors/link-widget/link-widget-view.component.mjs +120 -0
  62. package/esm2022/widgets/lib/editors/link-widget/link-widget.config.mjs +24 -0
  63. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-edit.component.mjs +10 -7
  64. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-edit.component.mjs +5 -3
  65. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-edit.component.mjs +2 -2
  66. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-edit.component.mjs +13 -3
  67. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-view.component.mjs +3 -3
  68. package/esm2022/widgets/lib/widgets.module.mjs +4 -1
  69. package/fesm2022/acorex-platform-auth.mjs +14 -15
  70. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  71. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-B8txzrTw.mjs → acorex-platform-common-avatar-widget-edit.component-BtnVjoMi.mjs} +2 -2
  72. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-B8txzrTw.mjs.map → acorex-platform-common-avatar-widget-edit.component-BtnVjoMi.mjs.map} +1 -1
  73. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-B3Ubyw3X.mjs → acorex-platform-common-avatar-widget-view.component-0-hGLYLK.mjs} +2 -2
  74. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-B3Ubyw3X.mjs.map → acorex-platform-common-avatar-widget-view.component-0-hGLYLK.mjs.map} +1 -1
  75. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CcJ5Vj4q.mjs → acorex-platform-common-boolean-widget-filter.component-CMkjO_x1.mjs} +2 -2
  76. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CcJ5Vj4q.mjs.map → acorex-platform-common-boolean-widget-filter.component-CMkjO_x1.mjs.map} +1 -1
  77. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DRsoJMVG.mjs → acorex-platform-common-dateTime-widget-edit.component-DdqtbOY1.mjs} +2 -2
  78. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DRsoJMVG.mjs.map → acorex-platform-common-dateTime-widget-edit.component-DdqtbOY1.mjs.map} +1 -1
  79. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-uB7iwji0.mjs → acorex-platform-common-dateTime-widget-filter.component-BjtIJkeC.mjs} +2 -2
  80. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-uB7iwji0.mjs.map → acorex-platform-common-dateTime-widget-filter.component-BjtIJkeC.mjs.map} +1 -1
  81. package/fesm2022/{acorex-platform-common-email-widget-edit.component-CY-Nu0xD.mjs → acorex-platform-common-email-widget-edit.component-CLl0gmdM.mjs} +2 -2
  82. package/fesm2022/{acorex-platform-common-email-widget-edit.component-CY-Nu0xD.mjs.map → acorex-platform-common-email-widget-edit.component-CLl0gmdM.mjs.map} +1 -1
  83. package/fesm2022/{acorex-platform-common-file-widget-filter.component-qL-PznYm.mjs → acorex-platform-common-file-widget-filter.component-DqYmxdx_.mjs} +2 -2
  84. package/fesm2022/{acorex-platform-common-file-widget-filter.component-qL-PznYm.mjs.map → acorex-platform-common-file-widget-filter.component-DqYmxdx_.mjs.map} +1 -1
  85. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Bvy3nmy6.mjs → acorex-platform-common-gallery-widget-filter.component-Btrq4HP9.mjs} +2 -2
  86. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Bvy3nmy6.mjs.map → acorex-platform-common-gallery-widget-filter.component-Btrq4HP9.mjs.map} +1 -1
  87. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs → acorex-platform-common-lookup-widget-column.component-CtvP7V_w.mjs} +3 -3
  88. package/fesm2022/acorex-platform-common-lookup-widget-column.component-CtvP7V_w.mjs.map +1 -0
  89. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CpzTuRyJ.mjs → acorex-platform-common-lookup-widget-edit.component-JjtWsg2g.mjs} +23 -19
  90. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-JjtWsg2g.mjs.map +1 -0
  91. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-i8oRoMWh.mjs → acorex-platform-common-lookup-widget-filter.component-B4C5JB_p.mjs} +2 -2
  92. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-i8oRoMWh.mjs.map → acorex-platform-common-lookup-widget-filter.component-B4C5JB_p.mjs.map} +1 -1
  93. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-WHM8ANuQ.mjs → acorex-platform-common-messenger-widget-edit.component-BjqtP0ls.mjs} +2 -2
  94. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-WHM8ANuQ.mjs.map → acorex-platform-common-messenger-widget-edit.component-BjqtP0ls.mjs.map} +1 -1
  95. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BdxXFoxc.mjs → acorex-platform-common-phone-widget-edit.component-Dj_tdhZw.mjs} +8 -4
  96. package/fesm2022/acorex-platform-common-phone-widget-edit.component-Dj_tdhZw.mjs.map +1 -0
  97. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-NDAFZhfE.mjs → acorex-platform-common-selection-list-widget-filter.component-hbxBcirf.mjs} +2 -2
  98. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-NDAFZhfE.mjs.map → acorex-platform-common-selection-list-widget-filter.component-hbxBcirf.mjs.map} +1 -1
  99. package/fesm2022/acorex-platform-common.mjs +15 -15
  100. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  101. package/fesm2022/acorex-platform-layout-entity.mjs +309 -289
  102. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  103. package/fesm2022/acorex-platform-layouts-entity-create-view.component-DgPPnU8S.mjs +110 -0
  104. package/fesm2022/acorex-platform-layouts-entity-create-view.component-DgPPnU8S.mjs.map +1 -0
  105. package/fesm2022/acorex-platform-layouts-entity-import-view.component-V50y5Jjs.mjs +93 -0
  106. package/fesm2022/acorex-platform-layouts-entity-import-view.component-V50y5Jjs.mjs.map +1 -0
  107. package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-C-dS2HFl.mjs → acorex-platform-layouts-entity-modify-view.component-Bwz4yVpK.mjs} +6 -3
  108. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bwz4yVpK.mjs.map +1 -0
  109. package/fesm2022/acorex-platform-layouts.mjs +130 -35
  110. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  111. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-qOxuoK6c.mjs +99 -0
  112. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-qOxuoK6c.mjs.map +1 -0
  113. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-DHmUvWx8.mjs → acorex-platform-themes-default-entity-master-modify-view.component-BJcpG94Q.mjs} +9 -6
  114. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BJcpG94Q.mjs.map +1 -0
  115. package/fesm2022/acorex-platform-themes-default.mjs +50 -31
  116. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  117. package/fesm2022/acorex-platform-widgets.mjs +628 -14
  118. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  119. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +7 -6
  120. package/layout/entity/lib/entity-master-single.viewmodel.d.ts +1 -0
  121. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +5 -4
  122. package/layout/entity/lib/workflows/create-entity.workflow.d.ts +1 -0
  123. package/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.d.ts +27 -0
  124. package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +2 -0
  125. package/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.d.ts +2 -1
  126. package/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.d.ts +1 -0
  127. package/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.d.ts +27 -0
  128. package/package.json +4 -1
  129. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +3 -0
  130. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +1 -1
  131. package/widgets/lib/editors/link-widget/index.d.ts +7 -0
  132. package/widgets/lib/editors/link-widget/link-widget-column.component.d.ts +6 -0
  133. package/widgets/lib/editors/link-widget/link-widget-designer.component.d.ts +6 -0
  134. package/widgets/lib/editors/link-widget/link-widget-edit.component.d.ts +45 -0
  135. package/widgets/lib/editors/link-widget/link-widget-filter.component.d.ts +6 -0
  136. package/widgets/lib/editors/link-widget/link-widget-print.component.d.ts +6 -0
  137. package/widgets/lib/editors/link-widget/link-widget-view.component.d.ts +13 -0
  138. package/widgets/lib/editors/link-widget/link-widget.config.d.ts +2 -0
  139. package/widgets/lib/editors/number-box-widget/number-box-widget-edit.component.d.ts +4 -1
  140. package/widgets/lib/editors/signature-pad-widget/signature-pad-widget-edit.component.d.ts +2 -0
  141. package/fesm2022/acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs.map +0 -1
  142. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CpzTuRyJ.mjs.map +0 -1
  143. package/fesm2022/acorex-platform-common-phone-widget-edit.component-BdxXFoxc.mjs.map +0 -1
  144. package/fesm2022/acorex-platform-layouts-entity-create-view.component-Bxkv579D.mjs +0 -107
  145. package/fesm2022/acorex-platform-layouts-entity-create-view.component-Bxkv579D.mjs.map +0 -1
  146. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-C-dS2HFl.mjs.map +0 -1
  147. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CTlj-QBs.mjs +0 -96
  148. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CTlj-QBs.mjs.map +0 -1
  149. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DHmUvWx8.mjs.map +0 -1
@@ -1,21 +1,22 @@
1
+ import { AXButtonModule } from '@acorex/components/button';
2
+ import { AXDecoratorModule } from '@acorex/components/decorators';
3
+ import { AXFormModule } from '@acorex/components/form';
4
+ import { AXLoadingModule } from '@acorex/components/loading';
5
+ import { AXPopupService } from '@acorex/components/popup';
1
6
  import { AXSelectBoxModule } from '@acorex/components/select-box';
7
+ import { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';
8
+ import { AXFormatService } from '@acorex/core/format';
9
+ import { AXTranslationService } from '@acorex/core/translation';
10
+ import { AXValidationModule } from '@acorex/core/validation';
2
11
  import { AXPLayoutBuilderService, AXPWidgetBase } from '@acorex/platform/layout/builder';
3
12
  import { CommonModule } from '@angular/common';
4
- import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, Injector, signal, ViewChild } from '@angular/core';
13
+ import { ChangeDetectionStrategy, Component, DestroyRef, Injector, ViewChild, computed, inject, signal } from '@angular/core';
14
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
15
  import { FormsModule } from '@angular/forms';
16
+ import { get } from 'lodash-es';
6
17
  import { AXP_ENTITY_DEFINITION_LOADER } from '../../entity.config';
7
- import { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';
8
- import { AXDecoratorModule } from '@acorex/components/decorators';
9
- import { AXButtonModule } from '@acorex/components/button';
10
- import { AXFormatService } from '@acorex/core/format';
11
- import { AXPopupService } from '@acorex/components/popup';
12
18
  import { AXPLookupWidgetSelectorComponent } from './lookup-widget-selector.component';
13
19
  import { AXPLookupWidgetSelectorViewModel } from './lookup-widget-selector.viewmodel';
14
- import { AXLoadingModule } from '@acorex/components/loading';
15
- import { get } from 'lodash-es';
16
- import { AXValidationModule } from '@acorex/core/validation';
17
- import { AXFormModule } from '@acorex/components/form';
18
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
19
20
  import * as i0 from "@angular/core";
20
21
  import * as i1 from "@angular/forms";
21
22
  import * as i2 from "@acorex/components/text-box";
@@ -26,7 +27,7 @@ import * as i6 from "@acorex/components/form";
26
27
  export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
27
28
  constructor() {
28
29
  super(...arguments);
29
- this.textField = "title";
30
+ this.textField = 'title';
30
31
  this.validationRules = [];
31
32
  this.injector = inject(Injector);
32
33
  this.loader = inject(AXP_ENTITY_DEFINITION_LOADER);
@@ -34,14 +35,15 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
34
35
  this.popupService = inject(AXPopupService);
35
36
  this.builderService = inject(AXPLayoutBuilderService);
36
37
  this.destroyRef = inject(DestroyRef);
37
- this.displayText = signal("");
38
+ this.translateService = inject(AXTranslationService);
39
+ this.displayText = signal('');
38
40
  this.selectedItem = signal(null);
39
41
  this.searchTerm = signal(null);
40
42
  this.isLoading = signal(false);
41
43
  this.isOpen = signal(false);
42
44
  this.vm = signal(null);
43
45
  this.placeholder = computed(() => {
44
- return 'Search on ' + this.vm()?.inlineFiltersPlaceholders().join(', ');
46
+ return this.translateService.translateSync('widget.lookup.search') + this.vm()?.inlineFiltersPlaceholders().join(', ');
45
47
  });
46
48
  }
47
49
  async ngOnInit() {
@@ -52,18 +54,15 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
52
54
  //
53
55
  this.vm.set(new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef, this.filter));
54
56
  //
55
- this.textField = this.entityDef?.formats.lookup ?? this.entityDef?.properties.find(c => c.name != 'id')?.name ?? "title";
57
+ this.textField = this.entityDef?.formats.lookup ?? this.entityDef?.properties.find((c) => c.name != 'id')?.name ?? 'title';
56
58
  const value = this.getValue();
57
59
  if (typeof value == 'object')
58
- this.displayText.set(this.formatService.format(this.textField, "string", value));
60
+ this.displayText.set(this.formatService.format(this.textField, 'string', value));
59
61
  else if (value != null) {
60
62
  await this.findByValue();
61
63
  }
62
64
  //
63
- this.builderService
64
- .onChanged
65
- .pipe(takeUntilDestroyed(this.destroyRef))
66
- .subscribe(async (c) => {
65
+ this.builderService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(async (c) => {
67
66
  if (c.path == this.path) {
68
67
  if (this.getValue())
69
68
  await this.findByValue();
@@ -82,14 +81,16 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
82
81
  }
83
82
  showSelector() {
84
83
  this.isOpen.set(true);
85
- this.popupService.open(AXPLookupWidgetSelectorComponent, {
84
+ this.popupService
85
+ .open(AXPLookupWidgetSelectorComponent, {
86
86
  title: `${this.entityDef?.formats.plural} Lookup`,
87
87
  size: (this.vm()?.columns().length ?? 0) > 3 ? 'lg' : 'md',
88
88
  data: {
89
89
  vm: new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef, this.filter),
90
- searchTerm: this.searchTerm() == this.displayText() ? null : this.searchTerm()
91
- }
92
- }).then((e) => {
90
+ searchTerm: this.searchTerm() == this.displayText() ? null : this.searchTerm(),
91
+ },
92
+ })
93
+ .then((e) => {
93
94
  this.isOpen.set(false);
94
95
  this.textbox.focus();
95
96
  if (e.data?.items) {
@@ -118,7 +119,7 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
118
119
  async handleKeyDown(e) {
119
120
  const keyEvent = e.nativeEvent;
120
121
  const value = this.searchTerm()?.trim();
121
- if ((keyEvent.code == "Enter" || keyEvent.code == "NumpadEnter") && value) {
122
+ if ((keyEvent.code == 'Enter' || keyEvent.code == 'NumpadEnter') && value) {
122
123
  this.isLoading.set(true);
123
124
  const result = await this.vm()?.find(value);
124
125
  if (result?.total == 1) {
@@ -134,7 +135,7 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
134
135
  this.searchTerm.set(null);
135
136
  this.displayText.set('');
136
137
  this.selectedItem.set(item);
137
- const text = this.formatService.format(this.textField, "string", item);
138
+ const text = this.formatService.format(this.textField, 'string', item);
138
139
  this.displayText.set(text);
139
140
  this.setValue(item.id);
140
141
  if (this.expose) {
@@ -142,8 +143,8 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
142
143
  this.builderService.setValue(this.expose, item);
143
144
  }
144
145
  else if (Array.isArray(this.expose)) {
145
- this.expose.forEach(i => {
146
- if (typeof i == "string") {
146
+ this.expose.forEach((i) => {
147
+ if (typeof i == 'string') {
147
148
  this.builderService.setValue(i, item);
148
149
  }
149
150
  else {
@@ -165,23 +166,26 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetBase {
165
166
  }
166
167
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPLookupWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
167
168
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPLookupWidgetEditComponent, isStandalone: true, selector: "ng-component", inputs: { entity: "entity", conditions: "conditions", expose: "expose" }, viewQueries: [{ propertyName: "textbox", first: true, predicate: AXTextBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
168
- <ax-text-box [ngModel]="displayText()" (onValueChanged)="handleValueChange($event)" [placeholder]="placeholder()" (onKeyUp)="handleKeyDown($event)" (onBlur)="handleOnBlur($event)">
169
+ <ax-text-box
170
+ [ngModel]="displayText()"
171
+ (onValueChanged)="handleValueChange($event)"
172
+ [placeholder]="placeholder()"
173
+ (onKeyUp)="handleKeyDown($event)"
174
+ (onBlur)="handleOnBlur($event)"
175
+ >
169
176
  @for (validation of validationRules; track $index) {
170
- <ax-validation-rule [rule]="validation.rule" [message]="validation.options?.message" [options]="validation.options"></ax-validation-rule>
177
+ <ax-validation-rule [rule]="validation.rule" [message]="validation.options?.message" [options]="validation.options"></ax-validation-rule>
171
178
  }
172
179
  <ax-clear-button (click)="handleClearClick()"></ax-clear-button>
173
180
 
174
181
  <ax-suffix>
175
- <ax-button color="ghost" look="twotone" [disabled]="isLoading()" (onClick)="handleOnClick($event)">
176
- @if(isLoading())
177
- {
178
- <ax-loading></ax-loading>
179
- }
180
- @else {
181
- <ax-icon icon="far fa-search">
182
- </ax-icon>
183
- }
184
- </ax-button>
182
+ <ax-button color="ghost" look="twotone" [disabled]="isLoading()" (onClick)="handleOnClick($event)">
183
+ @if(isLoading()) {
184
+ <ax-loading></ax-loading>
185
+ } @else {
186
+ <ax-icon icon="far fa-search"> </ax-icon>
187
+ }
188
+ </ax-button>
185
189
  </ax-suffix>
186
190
  </ax-text-box>
187
191
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i5.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -190,23 +194,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
190
194
  type: Component,
191
195
  args: [{
192
196
  template: `
193
- <ax-text-box [ngModel]="displayText()" (onValueChanged)="handleValueChange($event)" [placeholder]="placeholder()" (onKeyUp)="handleKeyDown($event)" (onBlur)="handleOnBlur($event)">
197
+ <ax-text-box
198
+ [ngModel]="displayText()"
199
+ (onValueChanged)="handleValueChange($event)"
200
+ [placeholder]="placeholder()"
201
+ (onKeyUp)="handleKeyDown($event)"
202
+ (onBlur)="handleOnBlur($event)"
203
+ >
194
204
  @for (validation of validationRules; track $index) {
195
- <ax-validation-rule [rule]="validation.rule" [message]="validation.options?.message" [options]="validation.options"></ax-validation-rule>
205
+ <ax-validation-rule [rule]="validation.rule" [message]="validation.options?.message" [options]="validation.options"></ax-validation-rule>
196
206
  }
197
207
  <ax-clear-button (click)="handleClearClick()"></ax-clear-button>
198
208
 
199
209
  <ax-suffix>
200
- <ax-button color="ghost" look="twotone" [disabled]="isLoading()" (onClick)="handleOnClick($event)">
201
- @if(isLoading())
202
- {
203
- <ax-loading></ax-loading>
204
- }
205
- @else {
206
- <ax-icon icon="far fa-search">
207
- </ax-icon>
208
- }
209
- </ax-button>
210
+ <ax-button color="ghost" look="twotone" [disabled]="isLoading()" (onClick)="handleOnClick($event)">
211
+ @if(isLoading()) {
212
+ <ax-loading></ax-loading>
213
+ } @else {
214
+ <ax-icon icon="far fa-search"> </ax-icon>
215
+ }
216
+ </ax-button>
210
217
  </ax-suffix>
211
218
  </ax-text-box>
212
219
  `,
@@ -221,12 +228,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
221
228
  AXDecoratorModule,
222
229
  AXLoadingModule,
223
230
  AXValidationModule,
224
- AXFormModule
231
+ AXFormModule,
225
232
  ],
226
- inputs: ["entity", "conditions", "expose"]
233
+ inputs: ['entity', 'conditions', 'expose'],
227
234
  }]
228
235
  }], propDecorators: { textbox: [{
229
236
  type: ViewChild,
230
237
  args: [AXTextBoxComponent]
231
238
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL3dpZGdldHMvbG9va3VwLXdpZGdldC9sb29rdXAtd2lkZ2V0LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFjLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRGLE9BQU8sRUFB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cmNlLCBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24sIEFYRXZlbnQsIEFYRm9jdXNFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUFdpZGdldEJhc2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3Rvciwgc2lnbmFsLCB2aWV3Q2hpbGQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWFBfRU5USVRZX0RFRklOSVRJT05fTE9BREVSIH0gZnJvbSAnLi4vLi4vZW50aXR5LmNvbmZpZyc7XG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQsIEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYUG9wdXBTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rdXAtd2lkZ2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCB9IGZyb20gJy4vbG9va3VwLXdpZGdldC1zZWxlY3Rvci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBRdWVyeUZpbHRlciwgQVhQVmFsaWRhdGlvblJ1bGVzIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgZ2V0LCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGF4LXRleHQtYm94IFtuZ01vZGVsXT1cImRpc3BsYXlUZXh0KClcIiAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIiAob25LZXlVcCk9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIiAob25CbHVyKT1cImhhbmRsZU9uQmx1cigkZXZlbnQpXCI+XG4gICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25SdWxlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBbcnVsZV09XCJ2YWxpZGF0aW9uLnJ1bGVcIiBbbWVzc2FnZV09XCJ2YWxpZGF0aW9uLm9wdGlvbnM/Lm1lc3NhZ2VcIiBbb3B0aW9uc109XCJ2YWxpZGF0aW9uLm9wdGlvbnNcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgIH1cbiAgICAgIDxheC1jbGVhci1idXR0b24gKGNsaWNrKT1cImhhbmRsZUNsZWFyQ2xpY2soKVwiPjwvYXgtY2xlYXItYnV0dG9uPlxuXG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgIDxheC1idXR0b24gY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgQGlmKGlzTG9hZGluZygpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+ICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhciBmYS1zZWFyY2hcIj5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgPC9heC10ZXh0LWJveD5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhTZWxlY3RCb3hNb2R1bGUsXG4gICAgQVhUZXh0Qm94TW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFZhbGlkYXRpb25Nb2R1bGUsXG4gICAgQVhGb3JtTW9kdWxlXG4gIF0sXG4gIGlucHV0czogW1wiZW50aXR5XCIsIFwiY29uZGl0aW9uc1wiLCBcImV4cG9zZVwiXVxufSlcbmV4cG9ydCBjbGFzcyBBWFBMb29rdXBXaWRnZXRFZGl0Q29tcG9uZW50IGV4dGVuZHMgQVhQV2lkZ2V0QmFzZTxhbnk+IHtcblxuICBwcm90ZWN0ZWQgdGV4dEZpZWxkID0gXCJ0aXRsZVwiO1xuICBwcm90ZWN0ZWQgZXhwb3NlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIGZpbHRlcjogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uIHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvblJ1bGVzOiBBWFBWYWxpZGF0aW9uUnVsZXMgPSBbXTtcblxuICBwcm90ZWN0ZWQgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgbG9hZGVyID0gaW5qZWN0KEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIpO1xuICBwcm90ZWN0ZWQgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZGVyU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBlbnRpdHlEZWY6IEFYUEVudGl0eSB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIGNvbmRpdGlvbnM/OiBBWFBRdWVyeUZpbHRlcltdO1xuXG4gIHByb3RlY3RlZCBkaXNwbGF5VGV4dCA9IHNpZ25hbChcIlwiKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbSA9IHNpZ25hbDxhbnkgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQpXG4gIHRleHRib3g6IEFYVGV4dEJveENvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgdm0gPSBzaWduYWw8QVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICdTZWFyY2ggb24gJyArIHRoaXMudm0oKT8uaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycygpLmpvaW4oJywgJylcbiAgfSlcblxuXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgLy9cbiAgICBjb25zdCBbbW9kdWxlLCBlbnRpdHldID0gdGhpcy5lbnRpdHkuc3BsaXQoJy4nKTtcbiAgICB0aGlzLmVudGl0eURlZiA9IGF3YWl0IHRoaXMubG9hZGVyLmdldChtb2R1bGUsIGVudGl0eSk7XG4gICAgLy9cbiAgICB0aGlzLnZtLnNldChuZXcgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgdGhpcy5lbnRpdHlEZWYhLCB0aGlzLmZpbHRlcikpO1xuICAgIC8vXG4gICAgdGhpcy50ZXh0RmllbGQgPSB0aGlzLmVudGl0eURlZj8uZm9ybWF0cy5sb29rdXAgPz8gdGhpcy5lbnRpdHlEZWY/LnByb3BlcnRpZXMuZmluZChjID0+IGMubmFtZSAhPSAnaWQnKT8ubmFtZSA/PyBcInRpdGxlXCI7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKClcbiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKVxuICAgICAgdGhpcy5kaXNwbGF5VGV4dC5zZXQodGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLnRleHRGaWVsZCwgXCJzdHJpbmdcIiwgdmFsdWUpKVxuICAgIGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmluZEJ5VmFsdWUoKTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlXG4gICAgICAub25DaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgYyA9PiB7XG4gICAgICAgIGlmIChjLnBhdGggPT0gdGhpcy5wYXRoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0VmFsdWUoKSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZmluZEJ5VmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZEJ5VmFsdWUoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIGNvbnN0IGJ5S2V5ID0gdGhpcy5lbnRpdHlEZWY/LnF1ZXJpZXMuYnlLZXk/LmV4ZWN1dGUgYXMgRnVuY3Rpb247XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IGJ5S2V5KHRoaXMuZ2V0VmFsdWUoKSk7XG4gICAgdGhpcy5zZXRJdGVtcyhpdGVtKTtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cblxuICBoYW5kbGVPbkNsaWNrKGU6IEFYQ2xpY2tFdmVudCkge1xuICAgIHRoaXMuc2hvd1NlbGVjdG9yKCk7XG4gIH1cblxuXG4gIHByaXZhdGUgc2hvd1NlbGVjdG9yKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKVxuICAgIHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgIHRpdGxlOiBgJHt0aGlzLmVudGl0eURlZj8uZm9ybWF0cy5wbHVyYWx9IExvb2t1cGAsXG4gICAgICBzaXplOiAodGhpcy52bSgpPy5jb2x1bW5zKCkubGVuZ3RoID8/IDApID4gMyA/ICdsZycgOiAnbWQnLFxuICAgICAgZGF0YToge1xuICAgICAgICB2bTogbmV3IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yVmlld01vZGVsKHRoaXMuaW5qZWN0b3IsIHRoaXMuZW50aXR5RGVmISwgdGhpcy5maWx0ZXIpLFxuICAgICAgICBzZWFyY2hUZXJtOiB0aGlzLnNlYXJjaFRlcm0oKSA9PSB0aGlzLmRpc3BsYXlUZXh0KCkgPyBudWxsIDogdGhpcy5zZWFyY2hUZXJtKClcbiAgICAgIH1cbiAgICB9KS50aGVuKChlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSlcbiAgICAgIHRoaXMudGV4dGJveC5mb2N1cygpO1xuICAgICAgaWYgKGUuZGF0YT8uaXRlbXMpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtcyhlLmRhdGE/Lml0ZW1zWzBdKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVZhbHVlQ2hhbmdlKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KGUudmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9uQmx1cihlOiBBWEZvY3VzRXZlbnQpIHtcbiAgICBjb25zdCBjb20gPSAoZS5jb21wb25lbnQgYXMgQVhUZXh0Qm94Q29tcG9uZW50KTtcbiAgICBjb25zdCBpbnB1dCA9IChjb21bJ2lucHV0J10gYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKCkpIHtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLmRpc3BsYXlUZXh0KCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgICAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVLZXlEb3duKGU6IEFYSHRtbEV2ZW50KSB7XG4gICAgY29uc3Qga2V5RXZlbnQgPSBlLm5hdGl2ZUV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlYXJjaFRlcm0oKT8udHJpbSgpO1xuICAgIGlmICgoa2V5RXZlbnQuY29kZSA9PSBcIkVudGVyXCIgfHwga2V5RXZlbnQuY29kZSA9PSBcIk51bXBhZEVudGVyXCIpICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnZtKCk/LmZpbmQodmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdD8udG90YWwgPT0gMSkge1xuICAgICAgICB0aGlzLnNldEl0ZW1zKHJlc3VsdC5pdGVtc1swXSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93U2VsZWN0b3IoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtcyhpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KG51bGwpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQoaXRlbSk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy50ZXh0RmllbGQsIFwic3RyaW5nXCIsIGl0ZW0pO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KHRleHQpO1xuICAgIHRoaXMuc2V0VmFsdWUoaXRlbS5pZCk7XG4gICAgaWYgKHRoaXMuZXhwb3NlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZXhwb3NlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uuc2V0VmFsdWUodGhpcy5leHBvc2UsIGl0ZW0pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4cG9zZSkpIHtcbiAgICAgICAgKHRoaXMuZXhwb3NlIGFzIGFueVtdKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGksIGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldChpdGVtLCBpLnNvdXJjZSk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGkudGFyZ2V0LCBrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xlYXJDbGljaygpIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICB0aGlzLmRpc3BsYXlUZXh0LnNldCgnJyk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0uc2V0KG51bGwpO1xuICB9XG59Il19
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL3dpZGdldHMvbG9va3VwLXdpZGdldC9sb29rdXAtd2lkZ2V0LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUs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TUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUM7aUJBQzNDOzhCQXlCQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ2xpY2tFdmVudCwgQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uLCBBWEZvY3VzRXZlbnQsIEFYSHRtbEV2ZW50LCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYUG9wdXBTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50LCBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBBWFBFbnRpdHksIEFYUFF1ZXJ5RmlsdGVyLCBBWFBWYWxpZGF0aW9uUnVsZXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSwgQVhQV2lkZ2V0QmFzZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUiB9IGZyb20gJy4uLy4uL2VudGl0eS5jb25maWcnO1xuaW1wb3J0IHsgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2xvb2t1cC13aWRnZXQtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yVmlld01vZGVsIH0gZnJvbSAnLi9sb29rdXAtd2lkZ2V0LXNlbGVjdG9yLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIDxheC10ZXh0LWJveFxuICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVRleHQoKVwiXG4gICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAob25LZXlVcCk9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgICAgKG9uQmx1cik9XCJoYW5kbGVPbkJsdXIoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgQGZvciAodmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9uUnVsZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBbcnVsZV09XCJ2YWxpZGF0aW9uLnJ1bGVcIiBbbWVzc2FnZV09XCJ2YWxpZGF0aW9uLm9wdGlvbnM/Lm1lc3NhZ2VcIiBbb3B0aW9uc109XCJ2YWxpZGF0aW9uLm9wdGlvbnNcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgIH1cbiAgICAgIDxheC1jbGVhci1idXR0b24gKGNsaWNrKT1cImhhbmRsZUNsZWFyQ2xpY2soKVwiPjwvYXgtY2xlYXItYnV0dG9uPlxuXG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtYnV0dG9uIGNvbG9yPVwiZ2hvc3RcIiBsb29rPVwidHdvdG9uZVwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZihpc0xvYWRpbmcoKSkge1xuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmFyIGZhLXNlYXJjaFwiPiA8L2F4LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtdGV4dC1ib3g+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYU2VsZWN0Qm94TW9kdWxlLFxuICAgIEFYVGV4dEJveE1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgXSxcbiAgaW5wdXRzOiBbJ2VudGl0eScsICdjb25kaXRpb25zJywgJ2V4cG9zZSddLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMb29rdXBXaWRnZXRFZGl0Q29tcG9uZW50IGV4dGVuZHMgQVhQV2lkZ2V0QmFzZTxhbnk+IHtcbiAgcHJvdGVjdGVkIHRleHRGaWVsZCA9ICd0aXRsZSc7XG4gIHByb3RlY3RlZCBleHBvc2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGVudGl0eTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZmlsdGVyOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24gfCBudWxsO1xuXG4gIHByb3RlY3RlZCB2YWxpZGF0aW9uUnVsZXM6IEFYUFZhbGlkYXRpb25SdWxlcyA9IFtdO1xuXG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCBsb2FkZXIgPSBpbmplY3QoQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUik7XG4gIHByb3RlY3RlZCBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByb3RlY3RlZCBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0eURlZjogQVhQRW50aXR5IHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgY29uZGl0aW9ucz86IEFYUFF1ZXJ5RmlsdGVyW107XG5cbiAgcHJvdGVjdGVkIGRpc3BsYXlUZXh0ID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbSA9IHNpZ25hbDxhbnkgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQpXG4gIHRleHRib3g6IEFYVGV4dEJveENvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgdm0gPSBzaWduYWw8QVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCd3aWRnZXQubG9va3VwLnNlYXJjaCcpICsgdGhpcy52bSgpPy5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKTtcbiAgfSk7XG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvL1xuICAgIGNvbnN0IFttb2R1bGUsIGVudGl0eV0gPSB0aGlzLmVudGl0eS5zcGxpdCgnLicpO1xuICAgIHRoaXMuZW50aXR5RGVmID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0KG1vZHVsZSwgZW50aXR5KTtcbiAgICAvL1xuICAgIHRoaXMudm0uc2V0KG5ldyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCB0aGlzLmVudGl0eURlZiEsIHRoaXMuZmlsdGVyKSk7XG4gICAgLy9cbiAgICB0aGlzLnRleHRGaWVsZCA9IHRoaXMuZW50aXR5RGVmPy5mb3JtYXRzLmxvb2t1cCA/PyB0aGlzLmVudGl0eURlZj8ucHJvcGVydGllcy5maW5kKChjKSA9PiBjLm5hbWUgIT0gJ2lkJyk/Lm5hbWUgPz8gJ3RpdGxlJztcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB0aGlzLmRpc3BsYXlUZXh0LnNldCh0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMudGV4dEZpZWxkLCAnc3RyaW5nJywgdmFsdWUpKTtcbiAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBhd2FpdCB0aGlzLmZpbmRCeVZhbHVlKCk7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vbkNoYW5nZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKGFzeW5jIChjKSA9PiB7XG4gICAgICBpZiAoYy5wYXRoID09IHRoaXMucGF0aCkge1xuICAgICAgICBpZiAodGhpcy5nZXRWYWx1ZSgpKSBhd2FpdCB0aGlzLmZpbmRCeVZhbHVlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRCeVZhbHVlKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICBjb25zdCBieUtleSA9IHRoaXMuZW50aXR5RGVmPy5xdWVyaWVzLmJ5S2V5Py5leGVjdXRlIGFzIEZ1bmN0aW9uO1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBieUtleSh0aGlzLmdldFZhbHVlKCkpO1xuICAgIHRoaXMuc2V0SXRlbXMoaXRlbSk7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2soZTogQVhDbGlja0V2ZW50KSB7XG4gICAgdGhpcy5zaG93U2VsZWN0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NlbGVjdG9yKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLnBvcHVwU2VydmljZVxuICAgICAgLm9wZW4oQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IGAke3RoaXMuZW50aXR5RGVmPy5mb3JtYXRzLnBsdXJhbH0gTG9va3VwYCxcbiAgICAgICAgc2l6ZTogKHRoaXMudm0oKT8uY29sdW1ucygpLmxlbmd0aCA/PyAwKSA+IDMgPyAnbGcnIDogJ21kJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHZtOiBuZXcgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgdGhpcy5lbnRpdHlEZWYhLCB0aGlzLmZpbHRlciksXG4gICAgICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXJtKCkgPT0gdGhpcy5kaXNwbGF5VGV4dCgpID8gbnVsbCA6IHRoaXMuc2VhcmNoVGVybSgpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy50ZXh0Ym94LmZvY3VzKCk7XG4gICAgICAgIGlmIChlLmRhdGE/Lml0ZW1zKSB7XG4gICAgICAgICAgdGhpcy5zZXRJdGVtcyhlLmRhdGE/Lml0ZW1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVmFsdWVDaGFuZ2UoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoZS52YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT25CbHVyKGU6IEFYRm9jdXNFdmVudCkge1xuICAgIGNvbnN0IGNvbSA9IGUuY29tcG9uZW50IGFzIEFYVGV4dEJveENvbXBvbmVudDtcbiAgICBjb25zdCBpbnB1dCA9IChjb21bJ2lucHV0J10gYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKCkpIHtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLmRpc3BsYXlUZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgIHRoaXMuc2VhcmNoVGVybS5zZXQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUtleURvd24oZTogQVhIdG1sRXZlbnQpIHtcbiAgICBjb25zdCBrZXlFdmVudCA9IGUubmF0aXZlRXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VhcmNoVGVybSgpPy50cmltKCk7XG4gICAgaWYgKChrZXlFdmVudC5jb2RlID09ICdFbnRlcicgfHwga2V5RXZlbnQuY29kZSA9PSAnTnVtcGFkRW50ZXInKSAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52bSgpPy5maW5kKHZhbHVlKTtcbiAgICAgIGlmIChyZXN1bHQ/LnRvdGFsID09IDEpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtcyhyZXN1bHQuaXRlbXNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93U2VsZWN0b3IoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtcyhpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KG51bGwpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQoaXRlbSk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy50ZXh0RmllbGQsICdzdHJpbmcnLCBpdGVtKTtcbiAgICB0aGlzLmRpc3BsYXlUZXh0LnNldCh0ZXh0KTtcbiAgICB0aGlzLnNldFZhbHVlKGl0ZW0uaWQpO1xuICAgIGlmICh0aGlzLmV4cG9zZSkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmV4cG9zZSA9PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKHRoaXMuZXhwb3NlLCBpdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4cG9zZSkpIHtcbiAgICAgICAgKHRoaXMuZXhwb3NlIGFzIGFueVtdKS5mb3JFYWNoKChpKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBpID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGksIGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBnZXQoaXRlbSwgaS5zb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYWx1ZShpLnRhcmdldCwga2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGVhckNsaWNrKCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQobnVsbCk7XG4gIH1cbn1cbiJdfQ==
@@ -3,19 +3,22 @@ import { AXDataTableModule } from '@acorex/components/data-table';
3
3
  import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { ChangeDetectionStrategy, Component } from '@angular/core';
6
+ import { AXButtonModule } from '@acorex/components/button';
6
7
  import { AXDecoratorModule } from '@acorex/components/decorators';
7
- import { AXSearchBoxModule } from '@acorex/components/search-box';
8
- import { AXBasePageComponent } from '@acorex/components/page';
9
8
  import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
10
9
  import { AXFormModule } from '@acorex/components/form';
11
- import { AXButtonModule } from '@acorex/components/button';
10
+ import { AXBasePageComponent } from '@acorex/components/page';
11
+ import { AXSearchBoxModule } from '@acorex/components/search-box';
12
+ import { AXTranslationModule } from '@acorex/core/translation';
12
13
  import * as i0 from "@angular/core";
13
- import * as i1 from "@acorex/components/common";
14
- import * as i2 from "@acorex/components/button";
15
- import * as i3 from "@acorex/components/decorators";
16
- import * as i4 from "@acorex/components/data-table";
17
- import * as i5 from "@acorex/components/search-box";
18
- import * as i6 from "@acorex/platform/layout/builder";
14
+ import * as i1 from "@angular/common";
15
+ import * as i2 from "@acorex/components/common";
16
+ import * as i3 from "@acorex/components/button";
17
+ import * as i4 from "@acorex/components/decorators";
18
+ import * as i5 from "@acorex/components/data-table";
19
+ import * as i6 from "@acorex/components/search-box";
20
+ import * as i7 from "@acorex/platform/layout/builder";
21
+ import * as i8 from "@acorex/core/translation";
19
22
  export class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {
20
23
  // protected override ngOnInit(): void {
21
24
  // super.ngOnInit();
@@ -57,79 +60,97 @@ export class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {
57
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPLookupWidgetSelectorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
58
61
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPLookupWidgetSelectorComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
59
62
  <div class="ax-p-4 ax-flex ax-flex-col ax-gap-4 ax-overflow-hidden">
60
- @if(vm.hasInlineFilters())
61
- {
62
- <div class="ax-w-full" >
63
- <ax-search-box [placeholder]="'Search on '+vm.inlineFiltersPlaceholders().join(', ')" [value]="searchTerm"
64
- (onValueChanged)="handleChangeSearchValue($event)" [axAutoFocus]="true"><ax-clear-button></ax-clear-button></ax-search-box>
63
+ @if(vm.hasInlineFilters()) {
64
+ <div class="ax-w-full">
65
+ <ax-search-box
66
+ [placeholder]="('widget.lookup.search' | translate) + vm.inlineFiltersPlaceholders().join(', ')"
67
+ [value]="searchTerm"
68
+ (onValueChanged)="handleChangeSearchValue($event)"
69
+ [axAutoFocus]="true"
70
+ ><ax-clear-button></ax-clear-button
71
+ ></ax-search-box>
65
72
  </div>
66
73
  }
67
- <ax-data-table #grid [showFooter]="false" class="ax-h-[50vh]" [paging]="true" [fetchDataMode]="'manual'"
68
- [loading]="{ enabled: true, animation: true }" [dataSource]="vm.dataSource"
69
- (selectedRowsChange)="handleSelectedRowsChange($event)" (onRowClick)="handleRowClick($event)" (onRowDbClick)="handleRowDbClick($event)">
74
+ <ax-data-table
75
+ #grid
76
+ [showFooter]="false"
77
+ class="ax-h-[50vh]"
78
+ [paging]="true"
79
+ [fetchDataMode]="'manual'"
80
+ [loading]="{ enabled: true, animation: true }"
81
+ [dataSource]="vm.dataSource"
82
+ (selectedRowsChange)="handleSelectedRowsChange($event)"
83
+ (onRowClick)="handleRowClick($event)"
84
+ (onRowDbClick)="handleRowDbClick($event)"
85
+ >
70
86
  <!-- <ax-select-column fixed="start" [width]="'50px'"></ax-select-column> -->
71
- @for(col of vm.columns();track col.name) {
72
- @if(col.visible)
73
- {
87
+ @for(col of vm.columns();track col.name) { @if(col.visible) {
74
88
  <axp-widget-column-renderer [caption]="col.title" [node]="col.node()"></axp-widget-column-renderer>
75
- }
76
- }
89
+ } }
77
90
  </ax-data-table>
78
91
  </div>
79
- <ax-footer>
80
- <ax-suffix>
81
- <ax-button look="solid" color="ghost" text="Close" (onClick)="handleCloseClick()"> </ax-button>
82
- <ax-button look="solid" color="primary" text="Select" (onClick)="handleSelectClick()" [disabled]="focusedRow==null"> </ax-button>
83
- @if(!vm.canCreate())
84
- {
85
- <ax-button look="solid" color="primary" text="Create New" (onClick)="handleCreateNewClick()">
92
+ <ax-footer>
93
+ <ax-suffix>
94
+ <ax-button look="solid" color="ghost" text="Close" (onClick)="handleCloseClick()"> </ax-button>
95
+ <ax-button look="solid" color="primary" text="Select" (onClick)="handleSelectClick()" [disabled]="focusedRow == null"> </ax-button>
96
+ @if(!vm.canCreate()) {
97
+ <ax-button look="solid" color="primary" [text]="'Create-New' | translate | async" (onClick)="handleCreateNewClick()">
86
98
  <ax-prefix>
87
- <ax-icon icon="fa-solid fa-add"></ax-icon>
99
+ <ax-icon icon="fa-solid fa-add"></ax-icon>
88
100
  </ax-prefix>
89
101
  </ax-button>
90
- }
91
- </ax-suffix>
92
- </ax-footer>
93
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i1.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i4.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i5.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i6.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "node", "footerTemplate", "cellTemplate", "headerTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
102
+ }
103
+ </ax-suffix>
104
+ </ax-footer>
105
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i2.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i5.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i7.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "node", "footerTemplate", "cellTemplate", "headerTemplate"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
106
  }
95
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPLookupWidgetSelectorComponent, decorators: [{
96
108
  type: Component,
97
109
  args: [{
98
110
  template: `
99
111
  <div class="ax-p-4 ax-flex ax-flex-col ax-gap-4 ax-overflow-hidden">
100
- @if(vm.hasInlineFilters())
101
- {
102
- <div class="ax-w-full" >
103
- <ax-search-box [placeholder]="'Search on '+vm.inlineFiltersPlaceholders().join(', ')" [value]="searchTerm"
104
- (onValueChanged)="handleChangeSearchValue($event)" [axAutoFocus]="true"><ax-clear-button></ax-clear-button></ax-search-box>
112
+ @if(vm.hasInlineFilters()) {
113
+ <div class="ax-w-full">
114
+ <ax-search-box
115
+ [placeholder]="('widget.lookup.search' | translate) + vm.inlineFiltersPlaceholders().join(', ')"
116
+ [value]="searchTerm"
117
+ (onValueChanged)="handleChangeSearchValue($event)"
118
+ [axAutoFocus]="true"
119
+ ><ax-clear-button></ax-clear-button
120
+ ></ax-search-box>
105
121
  </div>
106
122
  }
107
- <ax-data-table #grid [showFooter]="false" class="ax-h-[50vh]" [paging]="true" [fetchDataMode]="'manual'"
108
- [loading]="{ enabled: true, animation: true }" [dataSource]="vm.dataSource"
109
- (selectedRowsChange)="handleSelectedRowsChange($event)" (onRowClick)="handleRowClick($event)" (onRowDbClick)="handleRowDbClick($event)">
123
+ <ax-data-table
124
+ #grid
125
+ [showFooter]="false"
126
+ class="ax-h-[50vh]"
127
+ [paging]="true"
128
+ [fetchDataMode]="'manual'"
129
+ [loading]="{ enabled: true, animation: true }"
130
+ [dataSource]="vm.dataSource"
131
+ (selectedRowsChange)="handleSelectedRowsChange($event)"
132
+ (onRowClick)="handleRowClick($event)"
133
+ (onRowDbClick)="handleRowDbClick($event)"
134
+ >
110
135
  <!-- <ax-select-column fixed="start" [width]="'50px'"></ax-select-column> -->
111
- @for(col of vm.columns();track col.name) {
112
- @if(col.visible)
113
- {
136
+ @for(col of vm.columns();track col.name) { @if(col.visible) {
114
137
  <axp-widget-column-renderer [caption]="col.title" [node]="col.node()"></axp-widget-column-renderer>
115
- }
116
- }
138
+ } }
117
139
  </ax-data-table>
118
140
  </div>
119
- <ax-footer>
120
- <ax-suffix>
121
- <ax-button look="solid" color="ghost" text="Close" (onClick)="handleCloseClick()"> </ax-button>
122
- <ax-button look="solid" color="primary" text="Select" (onClick)="handleSelectClick()" [disabled]="focusedRow==null"> </ax-button>
123
- @if(!vm.canCreate())
124
- {
125
- <ax-button look="solid" color="primary" text="Create New" (onClick)="handleCreateNewClick()">
141
+ <ax-footer>
142
+ <ax-suffix>
143
+ <ax-button look="solid" color="ghost" text="Close" (onClick)="handleCloseClick()"> </ax-button>
144
+ <ax-button look="solid" color="primary" text="Select" (onClick)="handleSelectClick()" [disabled]="focusedRow == null"> </ax-button>
145
+ @if(!vm.canCreate()) {
146
+ <ax-button look="solid" color="primary" [text]="'Create-New' | translate | async" (onClick)="handleCreateNewClick()">
126
147
  <ax-prefix>
127
- <ax-icon icon="fa-solid fa-add"></ax-icon>
148
+ <ax-icon icon="fa-solid fa-add"></ax-icon>
128
149
  </ax-prefix>
129
150
  </ax-button>
130
- }
131
- </ax-suffix>
132
- </ax-footer>
151
+ }
152
+ </ax-suffix>
153
+ </ax-footer>
133
154
  `,
134
155
  standalone: true,
135
156
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -142,9 +163,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
142
163
  AXDropdownButtonModule,
143
164
  AXDataTableModule,
144
165
  AXSearchBoxModule,
145
- AXPLayoutBuilderModule
166
+ AXPLayoutBuilderModule,
167
+ AXTranslationModule,
146
168
  ],
147
- inputs: []
169
+ inputs: [],
148
170
  }]
149
171
  }] });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9lbnRpdHkvc3JjL2xpYi93aWRnZXRzL2xvb2t1cC13aWRnZXQvbG9va3VwLXdpZGdldC1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQThDLE1BQU0sK0JBQStCLENBQUM7QUFDOUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFzRDNELE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxtQkFBbUI7SUFRdkUsd0NBQXdDO0lBQ3hDLHNCQUFzQjtJQUV0QixJQUFJO0lBRU0sZUFBZTtRQUN2QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxDQUFDO2FBQ0ksQ0FBQztZQUNKLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVTLGdCQUFnQixDQUFDLENBQXdCO1FBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFUyxjQUFjLENBQUMsQ0FBc0I7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFUyxLQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBZTtRQUN0RCxrQ0FBa0M7SUFDcEMsQ0FBQztJQUVELHVCQUF1QixDQUFDLENBQXNCO1FBQzVDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsb0JBQW9CO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFUyxpQkFBaUI7UUFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUMsQ0FBQztJQUNILENBQUM7OEdBckRVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLCtGQW5EakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNULDJEQUlDLFlBQVksOEJBQ1osY0FBYywySkFDZCxjQUFjLGlYQUNkLFlBQVksOEJBQ1osaUJBQWlCLHVjQUNqQixzQkFBc0IsOEJBQ3RCLGlCQUFpQixpYkFDakIsaUJBQWlCLDJYQUNqQixzQkFBc0I7OzJGQUliLGdDQUFnQztrQkFwRDVDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3FCQUN2QjtvQkFDRCxNQUFNLEVBQUUsRUFBRTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbW9uTW9kdWxlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZU1vZHVsZSwgQVhEYXRhVGFibGVSb3dDbGljaywgQVhEYXRhVGFibGVSb3dEYkNsaWNrIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYQmFzZVBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCB9IGZyb20gJy4vbG9va3VwLXdpZGdldC1zZWxlY3Rvci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3cnO1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00ICBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIEBpZih2bS5oYXNJbmxpbmVGaWx0ZXJzKCkpXG4gICAgICB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtdy1mdWxsXCIgPlxuICAgICAgICA8YXgtc2VhcmNoLWJveCBbcGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBvbiAnK3ZtLmlubGluZUZpbHRlcnNQbGFjZWhvbGRlcnMoKS5qb2luKCcsICcpXCIgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJoYW5kbGVDaGFuZ2VTZWFyY2hWYWx1ZSgkZXZlbnQpXCIgW2F4QXV0b0ZvY3VzXT1cInRydWVcIj48YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPjwvYXgtc2VhcmNoLWJveD5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGF4LWRhdGEtdGFibGUgI2dyaWQgW3Nob3dGb290ZXJdPVwiZmFsc2VcIiBjbGFzcz1cImF4LWgtWzUwdmhdXCIgW3BhZ2luZ109XCJ0cnVlXCIgW2ZldGNoRGF0YU1vZGVdPVwiJ21hbnVhbCdcIlxuICAgICAgICBbbG9hZGluZ109XCJ7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9XCIgW2RhdGFTb3VyY2VdPVwidm0uZGF0YVNvdXJjZVwiIFxuICAgICAgICAoc2VsZWN0ZWRSb3dzQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZSgkZXZlbnQpXCIgKG9uUm93Q2xpY2spPVwiaGFuZGxlUm93Q2xpY2soJGV2ZW50KVwiIChvblJvd0RiQ2xpY2spPVwiaGFuZGxlUm93RGJDbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDwhLS0gPGF4LXNlbGVjdC1jb2x1bW4gZml4ZWQ9XCJzdGFydFwiIFt3aWR0aF09XCInNTBweCdcIj48L2F4LXNlbGVjdC1jb2x1bW4+IC0tPlxuICAgICAgICBAZm9yKGNvbCBvZiB2bS5jb2x1bW5zKCk7dHJhY2sgY29sLm5hbWUpIHtcbiAgICAgICAgQGlmKGNvbC52aXNpYmxlKVxuICAgICAgICB7XG4gICAgICAgIDxheHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlciBbY2FwdGlvbl09XCJjb2wudGl0bGVcIiBbbm9kZV09XCJjb2wubm9kZSgpXCI+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2F4LWRhdGEtdGFibGU+XG4gICAgPC9kaXY+XG4gICAgIDxheC1mb290ZXI+XG4gICAgIDxheC1zdWZmaXg+XG4gICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwiZ2hvc3RcIiB0ZXh0PVwiQ2xvc2VcIiAob25DbGljayk9XCJoYW5kbGVDbG9zZUNsaWNrKClcIj4gPC9heC1idXR0b24+XG4gICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJTZWxlY3RcIiAob25DbGljayk9XCJoYW5kbGVTZWxlY3RDbGljaygpXCIgW2Rpc2FibGVkXT1cImZvY3VzZWRSb3c9PW51bGxcIj4gPC9heC1idXR0b24+XG4gICAgICBAaWYoIXZtLmNhbkNyZWF0ZSgpKVxuICAgICAge1xuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJDcmVhdGUgTmV3XCIgKG9uQ2xpY2spPVwiaGFuZGxlQ3JlYXRlTmV3Q2xpY2soKVwiPiBcbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtYWRkXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2F4LXN1ZmZpeD5cbiAgICAgPC9heC1mb290ZXI+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYRGF0YVRhYmxlTW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGVcbiAgXSxcbiAgaW5wdXRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvckNvbXBvbmVudCBleHRlbmRzIEFYQmFzZVBhZ2VDb21wb25lbnQge1xuXG5cbiAgcHJvdGVjdGVkIHZtOiBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbDtcbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm06IHN0cmluZztcbiAgcHJvdGVjdGVkIGZvY3VzZWRSb3c6IGFueTtcblxuXG4gIC8vIHByb3RlY3RlZCBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgLy8gICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gIC8vIH1cblxuICBwcm90ZWN0ZWQgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnNlYXJjaFRlcm0pIHtcbiAgICAgIHRoaXMudm0uYXBwbHlJbmxpbmVGaWx0ZXIodGhpcy5zZWFyY2hUZXJtKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnZtLmFwcGx5RmlsdGVyQW5kU29ydCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dEYkNsaWNrKGU6IEFYRGF0YVRhYmxlUm93RGJDbGljaykge1xuICAgIHRoaXMuY2xvc2UoeyBpdGVtczogW2UuZGF0YV0gfSlcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dDbGljayhlOiBBWERhdGFUYWJsZVJvd0NsaWNrKSB7XG4gICAgdGhpcy5mb2N1c2VkUm93ID0gZS5kYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZShyb3dzOiB1bmtub3duW10pIHtcbiAgICAvL3RoaXMudm0uc2VsZWN0ZWRJdGVtcy5zZXQocm93cyk7XG4gIH1cblxuICBoYW5kbGVDaGFuZ2VTZWFyY2hWYWx1ZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMudm0uYXBwbHlJbmxpbmVGaWx0ZXIoZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNyZWF0ZU5ld0NsaWNrKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICBhd2FpdCB0aGlzLnZtLmNyZWF0ZSgpXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xvc2VDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlU2VsZWN0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuZm9jdXNlZFJvdykge1xuICAgICAgdGhpcy5jbG9zZSh7IGl0ZW1zOiBbdGhpcy5mb2N1c2VkUm93XSB9KVxuICAgIH1cbiAgfVxufSJdfQ==
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9lbnRpdHkvc3JjL2xpYi93aWRnZXRzL2xvb2t1cC13aWRnZXQvbG9va3VwLXdpZGdldC1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQThDLE1BQU0sK0JBQStCLENBQUM7QUFDOUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQWdFL0QsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG1CQUFtQjtJQUt2RSx3Q0FBd0M7SUFDeEMsc0JBQXNCO0lBRXRCLElBQUk7SUFFTSxlQUFlO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsQ0FBd0I7UUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxDQUFzQjtRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVTLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFlO1FBQ3RELGtDQUFrQztJQUNwQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsQ0FBc0I7UUFDNUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxvQkFBb0I7UUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQzs4R0FqRFUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsK0ZBN0RqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1QsMkRBSUMsWUFBWSxtRkFDWixjQUFjLDJKQUNkLGNBQWMsaVhBQ2QsWUFBWSw4QkFDWixpQkFBaUIsdWNBQ2pCLHNCQUFzQiw4QkFDdEIsaUJBQWlCLGliQUNqQixpQkFBaUIsMlhBQ2pCLHNCQUFzQix5TkFDdEIsbUJBQW1COzsyRkFJVixnQ0FBZ0M7a0JBOUQ1QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1Q7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxNQUFNLEVBQUUsRUFBRTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbW9uTW9kdWxlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZU1vZHVsZSwgQVhEYXRhVGFibGVSb3dDbGljaywgQVhEYXRhVGFibGVSb3dEYkNsaWNrIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCB9IGZyb20gJy4vbG9va3VwLXdpZGdldC1zZWxlY3Rvci52aWV3bW9kZWwnO1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00ICBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIEBpZih2bS5oYXNJbmxpbmVGaWx0ZXJzKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC13LWZ1bGxcIj5cbiAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCd3aWRnZXQubG9va3VwLnNlYXJjaCcgfCB0cmFuc2xhdGUpICsgdm0uaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycygpLmpvaW4oJywgJylcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgW2F4QXV0b0ZvY3VzXT1cInRydWVcIlxuICAgICAgICAgID48YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uXG4gICAgICAgID48L2F4LXNlYXJjaC1ib3g+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxheC1kYXRhLXRhYmxlXG4gICAgICAgICNncmlkXG4gICAgICAgIFtzaG93Rm9vdGVyXT1cImZhbHNlXCJcbiAgICAgICAgY2xhc3M9XCJheC1oLVs1MHZoXVwiXG4gICAgICAgIFtwYWdpbmddPVwidHJ1ZVwiXG4gICAgICAgIFtmZXRjaERhdGFNb2RlXT1cIidtYW51YWwnXCJcbiAgICAgICAgW2xvYWRpbmddPVwieyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVwiXG4gICAgICAgIFtkYXRhU291cmNlXT1cInZtLmRhdGFTb3VyY2VcIlxuICAgICAgICAoc2VsZWN0ZWRSb3dzQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uUm93Q2xpY2spPVwiaGFuZGxlUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChvblJvd0RiQ2xpY2spPVwiaGFuZGxlUm93RGJDbGljaygkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSA8YXgtc2VsZWN0LWNvbHVtbiBmaXhlZD1cInN0YXJ0XCIgW3dpZHRoXT1cIic1MHB4J1wiPjwvYXgtc2VsZWN0LWNvbHVtbj4gLS0+XG4gICAgICAgIEBmb3IoY29sIG9mIHZtLmNvbHVtbnMoKTt0cmFjayBjb2wubmFtZSkgeyBAaWYoY29sLnZpc2libGUpIHtcbiAgICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyIFtjYXB0aW9uXT1cImNvbC50aXRsZVwiIFtub2RlXT1cImNvbC5ub2RlKClcIj48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgICAgICB9IH1cbiAgICAgIDwvYXgtZGF0YS10YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8YXgtZm9vdGVyPlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cImdob3N0XCIgdGV4dD1cIkNsb3NlXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2VDbGljaygpXCI+IDwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJTZWxlY3RcIiAob25DbGljayk9XCJoYW5kbGVTZWxlY3RDbGljaygpXCIgW2Rpc2FibGVkXT1cImZvY3VzZWRSb3cgPT0gbnVsbFwiPiA8L2F4LWJ1dHRvbj5cbiAgICAgICAgQGlmKCF2bS5jYW5DcmVhdGUoKSkge1xuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cIidDcmVhdGUtTmV3JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ3JlYXRlTmV3Q2xpY2soKVwiPlxuICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtYWRkXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgPC9heC1mb290ZXI+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYRGF0YVRhYmxlTW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgXSxcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHZtOiBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbDtcbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm06IHN0cmluZztcbiAgcHJvdGVjdGVkIGZvY3VzZWRSb3c6IGFueTtcblxuICAvLyBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gIC8vICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAvLyB9XG5cbiAgcHJvdGVjdGVkIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLnZtLmFwcGx5SW5saW5lRmlsdGVyKHRoaXMuc2VhcmNoVGVybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudm0uYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RiQ2xpY2soZTogQVhEYXRhVGFibGVSb3dEYkNsaWNrKSB7XG4gICAgdGhpcy5jbG9zZSh7IGl0ZW1zOiBbZS5kYXRhXSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dDbGljayhlOiBBWERhdGFUYWJsZVJvd0NsaWNrKSB7XG4gICAgdGhpcy5mb2N1c2VkUm93ID0gZS5kYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZShyb3dzOiB1bmtub3duW10pIHtcbiAgICAvL3RoaXMudm0uc2VsZWN0ZWRJdGVtcy5zZXQocm93cyk7XG4gIH1cblxuICBoYW5kbGVDaGFuZ2VTZWFyY2hWYWx1ZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMudm0uYXBwbHlJbmxpbmVGaWx0ZXIoZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNyZWF0ZU5ld0NsaWNrKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICBhd2FpdCB0aGlzLnZtLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlQ2xpY2soKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVNlbGVjdENsaWNrKCkge1xuICAgIGlmICh0aGlzLmZvY3VzZWRSb3cpIHtcbiAgICAgIHRoaXMuY2xvc2UoeyBpdGVtczogW3RoaXMuZm9jdXNlZFJvd10gfSk7XG4gICAgfVxuICB9XG59XG4iXX0=