@dignite-ng/expand.cms 0.0.1

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 (242) hide show
  1. package/README.md +24 -0
  2. package/config/cms-config.module.d.ts +8 -0
  3. package/config/enums/index.d.ts +1 -0
  4. package/config/enums/route-names.d.ts +8 -0
  5. package/config/index.d.ts +5 -0
  6. package/config/providers/index.d.ts +1 -0
  7. package/config/providers/route.provider.d.ts +8 -0
  8. package/config/public-api.d.ts +3 -0
  9. package/esm2022/config/cms-config.module.mjs +19 -0
  10. package/esm2022/config/dignite-ng-expand.cms-config.mjs +5 -0
  11. package/esm2022/config/enums/index.mjs +2 -0
  12. package/esm2022/config/enums/route-names.mjs +2 -0
  13. package/esm2022/config/providers/index.mjs +2 -0
  14. package/esm2022/config/providers/route.provider.mjs +85 -0
  15. package/esm2022/config/public-api.mjs +4 -0
  16. package/esm2022/dignite-ng-expand.cms.mjs +5 -0
  17. package/esm2022/lib/cms-routing.module.mjs +96 -0
  18. package/esm2022/lib/cms.module.mjs +141 -0
  19. package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +227 -0
  20. package/esm2022/lib/components/admin/entries/create-or-update-entry-input-base.mjs +43 -0
  21. package/esm2022/lib/components/admin/entries/create.component.mjs +100 -0
  22. package/esm2022/lib/components/admin/entries/edit.component.mjs +110 -0
  23. package/esm2022/lib/components/admin/entries/entries.component.mjs +187 -0
  24. package/esm2022/lib/components/admin/entries/index.mjs +5 -0
  25. package/esm2022/lib/components/admin/fields/create-field.component.mjs +66 -0
  26. package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +116 -0
  27. package/esm2022/lib/components/admin/fields/create-or-update-field-input-base.mjs +25 -0
  28. package/esm2022/lib/components/admin/fields/edit-field.component.mjs +100 -0
  29. package/esm2022/lib/components/admin/fields/field-group.component.mjs +124 -0
  30. package/esm2022/lib/components/admin/fields/fields.component.mjs +108 -0
  31. package/esm2022/lib/components/admin/fields/index.mjs +7 -0
  32. package/esm2022/lib/components/admin/index.mjs +5 -0
  33. package/esm2022/lib/components/admin/sections/create-or-update-sections-input-base.mjs +27 -0
  34. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.mjs +71 -0
  35. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +403 -0
  36. package/esm2022/lib/components/admin/sections/entry-types/index.mjs +3 -0
  37. package/esm2022/lib/components/admin/sections/index.mjs +4 -0
  38. package/esm2022/lib/components/admin/sections/sections.component.mjs +305 -0
  39. package/esm2022/lib/components/admin/sites/create-or-update-sites-input-base.mjs +23 -0
  40. package/esm2022/lib/components/admin/sites/index.mjs +3 -0
  41. package/esm2022/lib/components/admin/sites/sites.component.mjs +286 -0
  42. package/esm2022/lib/components/dynamic-form/entry/entry-config.component.mjs +124 -0
  43. package/esm2022/lib/components/dynamic-form/entry/entry-config.mjs +18 -0
  44. package/esm2022/lib/components/dynamic-form/entry/entry-control.component.mjs +114 -0
  45. package/esm2022/lib/components/dynamic-form/entry/index.mjs +4 -0
  46. package/esm2022/lib/components/dynamic-form/form-control-group.mjs +30 -0
  47. package/esm2022/lib/components/dynamic-form/index.mjs +5 -0
  48. package/esm2022/lib/components/dynamic-form/matrix/index.mjs +4 -0
  49. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +229 -0
  50. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.mjs +64 -0
  51. package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +104 -0
  52. package/esm2022/lib/components/dynamic-form/table/index.mjs +4 -0
  53. package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +172 -0
  54. package/esm2022/lib/components/dynamic-form/table/table-config.mjs +38 -0
  55. package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +101 -0
  56. package/esm2022/lib/components/index.mjs +3 -0
  57. package/esm2022/lib/constants/index.mjs +2 -0
  58. package/esm2022/lib/constants/styles.mjs +25 -0
  59. package/esm2022/lib/enums/ecms-component.mjs +13 -0
  60. package/esm2022/lib/enums/index.mjs +2 -0
  61. package/esm2022/lib/proxy/admin/dynamic-forms/form-admin.service.mjs +24 -0
  62. package/esm2022/lib/proxy/admin/dynamic-forms/index.mjs +3 -0
  63. package/esm2022/lib/proxy/admin/dynamic-forms/models.mjs +2 -0
  64. package/esm2022/lib/proxy/admin/entries/entry-admin.service.mjs +67 -0
  65. package/esm2022/lib/proxy/admin/entries/index.mjs +3 -0
  66. package/esm2022/lib/proxy/admin/entries/models.mjs +2 -0
  67. package/esm2022/lib/proxy/admin/fields/field-admin.service.mjs +47 -0
  68. package/esm2022/lib/proxy/admin/fields/field-group-admin.service.mjs +43 -0
  69. package/esm2022/lib/proxy/admin/fields/index.mjs +4 -0
  70. package/esm2022/lib/proxy/admin/fields/models.mjs +2 -0
  71. package/esm2022/lib/proxy/admin/index.mjs +7 -0
  72. package/esm2022/lib/proxy/admin/sections/entry-type-admin.service.mjs +43 -0
  73. package/esm2022/lib/proxy/admin/sections/index.mjs +4 -0
  74. package/esm2022/lib/proxy/admin/sections/models.mjs +2 -0
  75. package/esm2022/lib/proxy/admin/sections/section-admin.service.mjs +53 -0
  76. package/esm2022/lib/proxy/admin/sites/index.mjs +3 -0
  77. package/esm2022/lib/proxy/admin/sites/models.mjs +2 -0
  78. package/esm2022/lib/proxy/admin/sites/site-admin.service.mjs +51 -0
  79. package/esm2022/lib/proxy/dignite/abp/data/index.mjs +2 -0
  80. package/esm2022/lib/proxy/dignite/abp/data/models.mjs +2 -0
  81. package/esm2022/lib/proxy/dignite/abp/index.mjs +3 -0
  82. package/esm2022/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.mjs +48 -0
  83. package/esm2022/lib/proxy/dignite/file-explorer/directories/index.mjs +3 -0
  84. package/esm2022/lib/proxy/dignite/file-explorer/directories/models.mjs +2 -0
  85. package/esm2022/lib/proxy/dignite/file-explorer/files/file-descriptor.service.mjs +60 -0
  86. package/esm2022/lib/proxy/dignite/file-explorer/files/index.mjs +3 -0
  87. package/esm2022/lib/proxy/dignite/file-explorer/files/models.mjs +2 -0
  88. package/esm2022/lib/proxy/dignite/file-explorer/index.mjs +4 -0
  89. package/esm2022/lib/proxy/dignite/index.mjs +4 -0
  90. package/esm2022/lib/proxy/entries/entry-status.enum.mjs +8 -0
  91. package/esm2022/lib/proxy/entries/index.mjs +2 -0
  92. package/esm2022/lib/proxy/fields/index.mjs +2 -0
  93. package/esm2022/lib/proxy/fields/models.mjs +2 -0
  94. package/esm2022/lib/proxy/index.mjs +10 -0
  95. package/esm2022/lib/proxy/microsoft/asp-net-core/index.mjs +3 -0
  96. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/index.mjs +2 -0
  97. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/models.mjs +2 -0
  98. package/esm2022/lib/proxy/microsoft/extensions/index.mjs +3 -0
  99. package/esm2022/lib/proxy/microsoft/extensions/primitives/index.mjs +2 -0
  100. package/esm2022/lib/proxy/microsoft/extensions/primitives/models.mjs +2 -0
  101. package/esm2022/lib/proxy/microsoft/index.mjs +5 -0
  102. package/esm2022/lib/proxy/microsoft/net/http/headers/index.mjs +2 -0
  103. package/esm2022/lib/proxy/microsoft/net/http/headers/models.mjs +2 -0
  104. package/esm2022/lib/proxy/microsoft/net/http/index.mjs +3 -0
  105. package/esm2022/lib/proxy/microsoft/net/index.mjs +3 -0
  106. package/esm2022/lib/proxy/sections/index.mjs +3 -0
  107. package/esm2022/lib/proxy/sections/models.mjs +2 -0
  108. package/esm2022/lib/proxy/sections/section-type.enum.mjs +9 -0
  109. package/esm2022/lib/proxy/sites/index.mjs +2 -0
  110. package/esm2022/lib/proxy/sites/models.mjs +2 -0
  111. package/esm2022/lib/proxy/volo/abp/content/index.mjs +2 -0
  112. package/esm2022/lib/proxy/volo/abp/content/models.mjs +2 -0
  113. package/esm2022/lib/proxy/volo/abp/index.mjs +3 -0
  114. package/esm2022/lib/proxy/volo/cms-kit/index.mjs +3 -0
  115. package/esm2022/lib/proxy/volo/cms-kit/users/index.mjs +2 -0
  116. package/esm2022/lib/proxy/volo/cms-kit/users/models.mjs +2 -0
  117. package/esm2022/lib/proxy/volo/index.mjs +4 -0
  118. package/esm2022/lib/services/appent-content.mjs +15 -0
  119. package/esm2022/lib/services/cms-api.service.mjs +75 -0
  120. package/esm2022/lib/services/cms.service.mjs +23 -0
  121. package/esm2022/lib/services/field-abstracts.service.mjs +44 -0
  122. package/esm2022/lib/services/index.mjs +4 -0
  123. package/esm2022/lib/toolbar/index.mjs +3 -0
  124. package/esm2022/lib/toolbar/toolbar-btn-default-action.mjs +160 -0
  125. package/esm2022/lib/toolbar/toolbar-config.mjs +81 -0
  126. package/esm2022/public-api.mjs +12 -0
  127. package/fesm2022/dignite-ng-expand.cms-config.mjs +108 -0
  128. package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -0
  129. package/fesm2022/dignite-ng-expand.cms.mjs +4267 -0
  130. package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -0
  131. package/index.d.ts +5 -0
  132. package/lib/cms-routing.module.d.ts +7 -0
  133. package/lib/cms.module.d.ts +38 -0
  134. package/lib/components/admin/entries/create-or-edit-entries.component.d.ts +79 -0
  135. package/lib/components/admin/entries/create-or-update-entry-input-base.d.ts +23 -0
  136. package/lib/components/admin/entries/create.component.d.ts +39 -0
  137. package/lib/components/admin/entries/edit.component.d.ts +43 -0
  138. package/lib/components/admin/entries/entries.component.d.ts +61 -0
  139. package/lib/components/admin/entries/index.d.ts +4 -0
  140. package/lib/components/admin/fields/create-field.component.d.ts +25 -0
  141. package/lib/components/admin/fields/create-or-edit-field.component.d.ts +33 -0
  142. package/lib/components/admin/fields/create-or-update-field-input-base.d.ts +15 -0
  143. package/lib/components/admin/fields/edit-field.component.d.ts +36 -0
  144. package/lib/components/admin/fields/field-group.component.d.ts +51 -0
  145. package/lib/components/admin/fields/fields.component.d.ts +33 -0
  146. package/lib/components/admin/fields/index.d.ts +6 -0
  147. package/lib/components/admin/index.d.ts +4 -0
  148. package/lib/components/admin/sections/create-or-update-sections-input-base.d.ts +17 -0
  149. package/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.d.ts +37 -0
  150. package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +130 -0
  151. package/lib/components/admin/sections/entry-types/index.d.ts +2 -0
  152. package/lib/components/admin/sections/index.d.ts +3 -0
  153. package/lib/components/admin/sections/sections.component.d.ts +82 -0
  154. package/lib/components/admin/sites/create-or-update-sites-input-base.d.ts +12 -0
  155. package/lib/components/admin/sites/index.d.ts +2 -0
  156. package/lib/components/admin/sites/sites.component.d.ts +72 -0
  157. package/lib/components/dynamic-form/entry/entry-config.component.d.ts +39 -0
  158. package/lib/components/dynamic-form/entry/entry-config.d.ts +9 -0
  159. package/lib/components/dynamic-form/entry/entry-control.component.d.ts +36 -0
  160. package/lib/components/dynamic-form/entry/index.d.ts +3 -0
  161. package/lib/components/dynamic-form/form-control-group.d.ts +4 -0
  162. package/lib/components/dynamic-form/index.d.ts +4 -0
  163. package/lib/components/dynamic-form/matrix/index.d.ts +3 -0
  164. package/lib/components/dynamic-form/matrix/matrix-config.component.d.ts +73 -0
  165. package/lib/components/dynamic-form/matrix/matrix-config.d.ts +30 -0
  166. package/lib/components/dynamic-form/matrix/matrix-control.component.d.ts +36 -0
  167. package/lib/components/dynamic-form/table/index.d.ts +3 -0
  168. package/lib/components/dynamic-form/table/table-config.component.d.ts +59 -0
  169. package/lib/components/dynamic-form/table/table-config.d.ts +18 -0
  170. package/lib/components/dynamic-form/table/table-control.component.d.ts +32 -0
  171. package/lib/components/index.d.ts +2 -0
  172. package/lib/constants/index.d.ts +1 -0
  173. package/lib/constants/styles.d.ts +2 -0
  174. package/lib/enums/ecms-component.d.ts +11 -0
  175. package/lib/enums/index.d.ts +1 -0
  176. package/lib/proxy/admin/dynamic-forms/form-admin.service.d.ts +12 -0
  177. package/lib/proxy/admin/dynamic-forms/index.d.ts +2 -0
  178. package/lib/proxy/admin/dynamic-forms/models.d.ts +4 -0
  179. package/lib/proxy/admin/entries/entry-admin.service.d.ts +21 -0
  180. package/lib/proxy/admin/entries/index.d.ts +2 -0
  181. package/lib/proxy/admin/entries/models.d.ts +60 -0
  182. package/lib/proxy/admin/fields/field-admin.service.d.ts +17 -0
  183. package/lib/proxy/admin/fields/field-group-admin.service.d.ts +16 -0
  184. package/lib/proxy/admin/fields/index.d.ts +3 -0
  185. package/lib/proxy/admin/fields/models.d.ts +34 -0
  186. package/lib/proxy/admin/index.d.ts +6 -0
  187. package/lib/proxy/admin/sections/entry-type-admin.service.d.ts +15 -0
  188. package/lib/proxy/admin/sections/index.d.ts +3 -0
  189. package/lib/proxy/admin/sections/models.d.ts +74 -0
  190. package/lib/proxy/admin/sections/section-admin.service.d.ts +18 -0
  191. package/lib/proxy/admin/sites/index.d.ts +2 -0
  192. package/lib/proxy/admin/sites/models.d.ts +30 -0
  193. package/lib/proxy/admin/sites/site-admin.service.d.ts +18 -0
  194. package/lib/proxy/dignite/abp/data/index.d.ts +1 -0
  195. package/lib/proxy/dignite/abp/data/models.d.ts +3 -0
  196. package/lib/proxy/dignite/abp/index.d.ts +2 -0
  197. package/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.d.ts +17 -0
  198. package/lib/proxy/dignite/file-explorer/directories/index.d.ts +2 -0
  199. package/lib/proxy/dignite/file-explorer/directories/models.d.ts +29 -0
  200. package/lib/proxy/dignite/file-explorer/files/file-descriptor.service.d.ts +20 -0
  201. package/lib/proxy/dignite/file-explorer/files/index.d.ts +2 -0
  202. package/lib/proxy/dignite/file-explorer/files/models.d.ts +50 -0
  203. package/lib/proxy/dignite/file-explorer/index.d.ts +3 -0
  204. package/lib/proxy/dignite/index.d.ts +3 -0
  205. package/lib/proxy/entries/entry-status.enum.d.ts +5 -0
  206. package/lib/proxy/entries/index.d.ts +1 -0
  207. package/lib/proxy/fields/index.d.ts +1 -0
  208. package/lib/proxy/fields/models.d.ts +8 -0
  209. package/lib/proxy/index.d.ts +9 -0
  210. package/lib/proxy/microsoft/asp-net-core/index.d.ts +2 -0
  211. package/lib/proxy/microsoft/asp-net-core/mvc/index.d.ts +1 -0
  212. package/lib/proxy/microsoft/asp-net-core/mvc/models.d.ts +10 -0
  213. package/lib/proxy/microsoft/extensions/index.d.ts +2 -0
  214. package/lib/proxy/microsoft/extensions/primitives/index.d.ts +1 -0
  215. package/lib/proxy/microsoft/extensions/primitives/models.d.ts +8 -0
  216. package/lib/proxy/microsoft/index.d.ts +4 -0
  217. package/lib/proxy/microsoft/net/http/headers/index.d.ts +1 -0
  218. package/lib/proxy/microsoft/net/http/headers/models.d.ts +6 -0
  219. package/lib/proxy/microsoft/net/http/index.d.ts +2 -0
  220. package/lib/proxy/microsoft/net/index.d.ts +2 -0
  221. package/lib/proxy/sections/index.d.ts +2 -0
  222. package/lib/proxy/sections/models.d.ts +12 -0
  223. package/lib/proxy/sections/section-type.enum.d.ts +6 -0
  224. package/lib/proxy/sites/index.d.ts +1 -0
  225. package/lib/proxy/sites/models.d.ts +4 -0
  226. package/lib/proxy/volo/abp/content/index.d.ts +1 -0
  227. package/lib/proxy/volo/abp/content/models.d.ts +5 -0
  228. package/lib/proxy/volo/abp/index.d.ts +2 -0
  229. package/lib/proxy/volo/cms-kit/index.d.ts +2 -0
  230. package/lib/proxy/volo/cms-kit/users/index.d.ts +1 -0
  231. package/lib/proxy/volo/cms-kit/users/models.d.ts +7 -0
  232. package/lib/proxy/volo/index.d.ts +3 -0
  233. package/lib/services/appent-content.d.ts +1 -0
  234. package/lib/services/cms-api.service.d.ts +16 -0
  235. package/lib/services/cms.service.d.ts +10 -0
  236. package/lib/services/field-abstracts.service.d.ts +20 -0
  237. package/lib/services/index.d.ts +3 -0
  238. package/lib/toolbar/index.d.ts +2 -0
  239. package/lib/toolbar/toolbar-btn-default-action.d.ts +19 -0
  240. package/lib/toolbar/toolbar-config.d.ts +57 -0
  241. package/package.json +41 -0
  242. package/public-api.d.ts +8 -0
@@ -0,0 +1,286 @@
1
+ /* eslint-disable @angular-eslint/use-lifecycle-interface */
2
+ import { LIST_QUERY_DEBOUNCE_TIME, ListService } from '@abp/ng.core';
3
+ import { Component, ViewChild } from '@angular/core';
4
+ import { FormControl, Validators } from '@angular/forms';
5
+ import { ColumnMode } from "@swimlane/ngx-datatable";
6
+ import { finalize } from 'rxjs/operators';
7
+ import { CreateOrUpdateSitesInputBase } from './create-or-update-sites-input-base';
8
+ import { EXTENSIONS_IDENTIFIER } from '@abp/ng.theme.shared/extensions';
9
+ import { ECmsComponent } from '../../../enums';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@abp/ng.core";
12
+ import * as i2 from "../../../proxy/admin/sites";
13
+ import * as i3 from "@abp/ng.theme.shared";
14
+ import * as i4 from "@angular/forms";
15
+ import * as i5 from "../../../services/cms-api.service";
16
+ import * as i6 from "@angular/common";
17
+ import * as i7 from "@swimlane/ngx-datatable";
18
+ import * as i8 from "@ngx-validate/core";
19
+ import * as i9 from "@ng-bootstrap/ng-bootstrap";
20
+ import * as i10 from "@abp/ng.components/page";
21
+ class SitesComponent {
22
+ list;
23
+ _SiteAdminService;
24
+ toaster;
25
+ confirmation;
26
+ fb;
27
+ configState;
28
+ _LocalizationService;
29
+ _CmsApiService;
30
+ constructor(list, _SiteAdminService, toaster, confirmation, fb, configState, _LocalizationService, _CmsApiService) {
31
+ this.list = list;
32
+ this._SiteAdminService = _SiteAdminService;
33
+ this.toaster = toaster;
34
+ this.confirmation = confirmation;
35
+ this.fb = fb;
36
+ this.configState = configState;
37
+ this._LocalizationService = _LocalizationService;
38
+ this._CmsApiService = _CmsApiService;
39
+ }
40
+ /**创建站点模态框状态 */
41
+ createSitesOpen = false;
42
+ /**用于确定模态的繁忙状态是否为真 */
43
+ modalBusy = false;
44
+ /**创建站点表单 */
45
+ createOrEditForm;
46
+ get languagesInput() {
47
+ return this.createOrEditForm.get('languages').value;
48
+ }
49
+ /**语言列表 */
50
+ languages;
51
+ /**站点给定的表单值 */
52
+ selected;
53
+ /**表单控件模板-动态赋值表单控件 */
54
+ createModalSubmit;
55
+ ColumnMode = ColumnMode;
56
+ data = {
57
+ items: [],
58
+ totalCount: 0,
59
+ };
60
+ filters = {};
61
+ ngOnInit() {
62
+ this.hookToQuery();
63
+ }
64
+ hookToQuery() {
65
+ const getData = (query) => this._SiteAdminService.getList({
66
+ ...query,
67
+ ...this.filters,
68
+ });
69
+ const setData = (list) => (this.data = list);
70
+ this.list.hookToQuery(getData).subscribe(setData);
71
+ }
72
+ /**删除字段 */
73
+ deletefield(row) {
74
+ this.confirmation.warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`)).subscribe((status) => {
75
+ if (status == 'confirm') {
76
+ this._SiteAdminService.delete(row.id).pipe(finalize(() => {
77
+ })).subscribe(res => {
78
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
79
+ this.list.get();
80
+ });
81
+ }
82
+ });
83
+ }
84
+ /**创建站点模态框状态改变 */
85
+ createGroupVisibleChange(event) {
86
+ if (!event) {
87
+ // console.log(event, '创建站点模态框状态改变关闭');
88
+ this.selected = '';
89
+ return;
90
+ }
91
+ }
92
+ /**选择语言改变 */
93
+ languagesChange(event) {
94
+ let checked = event.target.checked;
95
+ let value = event.target.value;
96
+ this.languages.forEach(el => {
97
+ el.ischecked = el.cultureName === value ? checked : el.ischecked;
98
+ });
99
+ this.setFromLangguages();
100
+ }
101
+ /**设置默认语言 */
102
+ setDefault(items) {
103
+ this.languages.forEach(el => {
104
+ el.isDefault = el.cultureName === items.cultureName;
105
+ });
106
+ this.setFromLangguages();
107
+ }
108
+ /**设置表单中的语言 */
109
+ setFromLangguages() {
110
+ let languagesSelect = this.languages.filter(el => el.ischecked == true);
111
+ this.createOrEditForm.patchValue({
112
+ languages: languagesSelect
113
+ });
114
+ if (languagesSelect.length == 0) {
115
+ this.languages.forEach(el => {
116
+ el.isDefault = false;
117
+ });
118
+ }
119
+ }
120
+ /**表单保存提交 */
121
+ createOrEditSave() {
122
+ if (this.selected) {
123
+ return this.EditSave();
124
+ }
125
+ this.createSave();
126
+ }
127
+ /**创建站点保存 */
128
+ createSave() {
129
+ let input = this.createOrEditForm.value;
130
+ this.modalBusy = true;
131
+ if (!this.createOrEditForm.valid)
132
+ return;
133
+ this._SiteAdminService.create(input).pipe(finalize(() => {
134
+ this.modalBusy = false;
135
+ this.createSitesOpen = false;
136
+ })).subscribe(res => {
137
+ this.toaster.success(this._LocalizationService.instant(`CmsKit::SavedSuccessfully`));
138
+ this.list.get();
139
+ });
140
+ }
141
+ /**编辑站点保存 */
142
+ EditSave() {
143
+ let input = this.createOrEditForm.value;
144
+ this.modalBusy = true;
145
+ this._SiteAdminService.update(this.selected.id, input).pipe(finalize(() => {
146
+ this.modalBusy = false;
147
+ this.createSitesOpen = false;
148
+ })).subscribe(res => {
149
+ this.toaster.success(this._LocalizationService.instant(`CmsKit::SavedSuccessfully`));
150
+ this.list.get();
151
+ });
152
+ }
153
+ /**创建站点按钮 */
154
+ createSitesBtn() {
155
+ this.createSitesOpen = true;
156
+ this.createOrEditForm = this.fb.group(new CreateOrUpdateSitesInputBase());
157
+ this.setAsyncValidatorsFn();
158
+ this.languages = this.configState.getDeep('localization.languages');
159
+ this.languages.forEach((el, index) => {
160
+ el.isDefault = index === 0;
161
+ el.ischecked = index === 0;
162
+ });
163
+ this.setFromLangguages();
164
+ }
165
+ /**编辑站点按钮 */
166
+ EditSitesBtn(rows) {
167
+ this.createSitesOpen = true;
168
+ this.languages = this.configState.getDeep('localization.languages');
169
+ this._SiteAdminService.get(rows.id).subscribe(res => {
170
+ this.selected = rows;
171
+ this.createOrEditForm = this.fb.group(new CreateOrUpdateSitesInputBase());
172
+ this.createOrEditForm.patchValue(rows);
173
+ this.setAsyncValidatorsFn();
174
+ // 更新语言和默认状态
175
+ this.updateLanguages(res.languages);
176
+ // 设置表单语言
177
+ this.setFromLangguages();
178
+ });
179
+ }
180
+ /**设置字段控件异步验证 */
181
+ setAsyncValidatorsFn() {
182
+ this.createOrEditForm.setControl('name', new FormControl(this.nameInput.value || '', {
183
+ validators: Validators.required,
184
+ asyncValidators: this.nameRepetitionAsyncValidator(),
185
+ updateOn: 'blur'
186
+ }));
187
+ }
188
+ /**更新语言和默认状态 */
189
+ updateLanguages(siteLanguages) {
190
+ this.languages.forEach(language => {
191
+ const siteLanguage = siteLanguages.find(sl => sl.cultureName === language.cultureName);
192
+ if (siteLanguage) {
193
+ language.ischecked = true;
194
+ language.isDefault = siteLanguage.isDefault;
195
+ }
196
+ });
197
+ }
198
+ get nameInput() {
199
+ return this.createOrEditForm.get('name');
200
+ }
201
+ get hostInput() {
202
+ return this.createOrEditForm.get('host');
203
+ }
204
+ /**字段标签input失去标点生成字段名字 */
205
+ disPlayNameInputBlur(event) {
206
+ let value = event.target.value;
207
+ let pinyin = this._CmsApiService.chineseToPinyin(value);
208
+ let nameInput = this.nameInput;
209
+ if (nameInput.value)
210
+ return;
211
+ nameInput.patchValue(pinyin);
212
+ }
213
+ /**name定义自定义异步验证 */
214
+ nameRepetitionAsyncValidator() {
215
+ return (ctrl) => {
216
+ return new Promise(resolve => {
217
+ let subslug = this.createOrEditForm?.get('name').value;
218
+ if (subslug == this.selected?.name) {
219
+ resolve(null);
220
+ return;
221
+ }
222
+ this._SiteAdminService.nameExists(subslug).subscribe(res => {
223
+ if (res) {
224
+ resolve({ repetition: this._LocalizationService.instant(`Cms::SiteName{0}AlreadyExist`, ctrl.value) });
225
+ }
226
+ else {
227
+ resolve(null);
228
+ }
229
+ });
230
+ });
231
+ };
232
+ }
233
+ /**host定义自定义异步验证 */
234
+ hostRepetitionAsyncValidator() {
235
+ return (ctrl) => {
236
+ return new Promise(resolve => {
237
+ let subslug = this.createOrEditForm?.get('host').value;
238
+ if (subslug == this.selected?.host || subslug == 'https://') {
239
+ resolve(null);
240
+ return;
241
+ }
242
+ this._SiteAdminService.hostExists(subslug).subscribe(res => {
243
+ if (res) {
244
+ resolve({ repetition: this._LocalizationService.instant(`Cms::SiteHost{0}AlreadyExist`, ctrl.value) });
245
+ }
246
+ else {
247
+ resolve(null);
248
+ }
249
+ });
250
+ });
251
+ };
252
+ }
253
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SitesComponent, deps: [{ token: i1.ListService }, { token: i2.SiteAdminService }, { token: i3.ToasterService }, { token: i3.ConfirmationService }, { token: i4.FormBuilder }, { token: i1.ConfigStateService }, { token: i1.LocalizationService }, { token: i5.CmsApiService }], target: i0.ɵɵFactoryTarget.Component });
254
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SitesComponent, selector: "cms-sites", providers: [
255
+ // [Required]
256
+ ListService,
257
+ // [Optional]
258
+ // Provide this token if you want a different debounce time.
259
+ // Default is 300. Cannot be 0. Any value below 100 is not recommended.
260
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
261
+ {
262
+ provide: EXTENSIONS_IDENTIFIER,
263
+ useValue: ECmsComponent.Sites,
264
+ },
265
+ ], viewQueries: [{ propertyName: "createModalSubmit", first: true, predicate: ["createModalSubmit"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Cms::Sites' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"sites-page\">\n <div class=\"card mb-0\">\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" />\n <button class=\"btn btn-outline-primary px-2\" type=\"button\" id=\"button-addon2\" (click)=\"list.get()\">\n <i class=\"fa fa-search\"></i>\n </button>\n </div>\n </div>\n <div class=\"card-body p-0\">\n <div class=\"table-responsive table-fixed-header\">\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\"\n [columnMode]=\"'force'\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\"\n [scrollbarV]=\"true\" [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\">\n <ngx-datatable-column [name]=\"'Cms::DisplayName' | abpLocalization\" prop=\"displayName\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Name' | abpLocalization\" prop=\"name\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsActive' | abpLocalization\" prop=\"isActive\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Host' | abpLocalization\" prop=\"host\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::CreationTime' | abpLocalization\" prop=\"creationTime\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'yyyy-MM-dd hh-mm-ss' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-outline-primary btn-sm\" ngbDropdownToggle>\n {{'AbpUi::Actions' | abpLocalization}}\n </button>\n <div ngbDropdownMenu>\n <button ngbDropdownItem\n (click)=\"EditSitesBtn(row)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click)=\"deletefield(row)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n </div>\n </div>\n\n\n </div>\n\n\n\n</abp-page>\n\n\n<!-- <dignite-page [title]=\"'Cms::Sites' | abpLocalization\" [back]=\"false\" [class]=\"'sites-page'\">\n <ng-template #pageHeader>\n <button type=\"button\" class=\"btn btn-primary btn-sm ms-2\" (click.stop)=\"createSitesBtn()\">\n <i class=\"fa fa-plus pe-1\" aria-hidden=\"true\"></i>{{'Cms::New' | abpLocalization}}\n </button>\n </ng-template>\n <ng-template #pageBody>\n \n </ng-template>\n</dignite-page> -->\n\n<abp-modal [(visible)]=\"createSitesOpen\" [busy]=\"modalBusy\" (visibleChange)=\"createGroupVisibleChange($event)\">\n <ng-template #abpHeader>\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"createOrEditForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"createOrEditForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #createModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" />\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\n {{nameInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Host' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"host\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"hostInput.errors?.repetition\">\n {{hostInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\n id=\"flexRadioDefault1\" />\n <label class=\"form-check-label\" for=\"flexRadioDefault1\"> {{'Cms::IsActive' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Languages' | abpLocalization}}</label>\n <ul class=\"list-group list-group-flush\">\n <ng-container *ngFor=\"let item of languages; let i = index\">\n <li class=\"list-group-item d-flex justify-content-between align-items-center\">\n <div>\n <input class=\"form-check-input me-1\" type=\"checkbox\" [value]=\"item.cultureName\"\n id=\"firstRadio{{ i }}\" [checked]=\"item.ischecked\"\n (change)=\"languagesChange($event);!item.ischecked\" />\n <label class=\"form-check-label\" for=\"firstRadio{{ i }}\">{{ item.displayName\n }}</label>\n </div>\n <ng-container *ngIf=\"item.ischecked\">\n <div class=\"text-primary\" *ngIf=\"item.isDefault\">{{'Cms::Default' | abpLocalization}}\n </div>\n <div (click.stop)=\"setDefault(item)\" *ngIf=\"!item.isDefault\">\n {{'Cms::SetDefault' | abpLocalization}}</div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"createModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .sites-page .dignite_page{background:transparent}::ng-deep .sites-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .sites-page .card-header{height:57px}::ng-deep .sites-page .card-header input{height:34px}::ng-deep .sites-page .container-height{height:calc(100vh - 180px)}::ng-deep .sites-modal-form .form-control{padding:.4rem 1.25rem}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i1.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i7.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i7.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i7.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i8.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i8.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i9.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i9.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i9.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i9.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i10.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] });
266
+ }
267
+ export { SitesComponent };
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SitesComponent, decorators: [{
269
+ type: Component,
270
+ args: [{ selector: 'cms-sites', providers: [
271
+ // [Required]
272
+ ListService,
273
+ // [Optional]
274
+ // Provide this token if you want a different debounce time.
275
+ // Default is 300. Cannot be 0. Any value below 100 is not recommended.
276
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
277
+ {
278
+ provide: EXTENSIONS_IDENTIFIER,
279
+ useValue: ECmsComponent.Sites,
280
+ },
281
+ ], template: "<abp-page [title]=\"'Cms::Sites' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"sites-page\">\n <div class=\"card mb-0\">\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" />\n <button class=\"btn btn-outline-primary px-2\" type=\"button\" id=\"button-addon2\" (click)=\"list.get()\">\n <i class=\"fa fa-search\"></i>\n </button>\n </div>\n </div>\n <div class=\"card-body p-0\">\n <div class=\"table-responsive table-fixed-header\">\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\"\n [columnMode]=\"'force'\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\"\n [scrollbarV]=\"true\" [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\">\n <ngx-datatable-column [name]=\"'Cms::DisplayName' | abpLocalization\" prop=\"displayName\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Name' | abpLocalization\" prop=\"name\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsActive' | abpLocalization\" prop=\"isActive\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Host' | abpLocalization\" prop=\"host\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::CreationTime' | abpLocalization\" prop=\"creationTime\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'yyyy-MM-dd hh-mm-ss' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-outline-primary btn-sm\" ngbDropdownToggle>\n {{'AbpUi::Actions' | abpLocalization}}\n </button>\n <div ngbDropdownMenu>\n <button ngbDropdownItem\n (click)=\"EditSitesBtn(row)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click)=\"deletefield(row)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n </div>\n </div>\n\n\n </div>\n\n\n\n</abp-page>\n\n\n<!-- <dignite-page [title]=\"'Cms::Sites' | abpLocalization\" [back]=\"false\" [class]=\"'sites-page'\">\n <ng-template #pageHeader>\n <button type=\"button\" class=\"btn btn-primary btn-sm ms-2\" (click.stop)=\"createSitesBtn()\">\n <i class=\"fa fa-plus pe-1\" aria-hidden=\"true\"></i>{{'Cms::New' | abpLocalization}}\n </button>\n </ng-template>\n <ng-template #pageBody>\n \n </ng-template>\n</dignite-page> -->\n\n<abp-modal [(visible)]=\"createSitesOpen\" [busy]=\"modalBusy\" (visibleChange)=\"createGroupVisibleChange($event)\">\n <ng-template #abpHeader>\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"createOrEditForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"createOrEditForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #createModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" />\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\n {{nameInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Host' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"host\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"hostInput.errors?.repetition\">\n {{hostInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\n id=\"flexRadioDefault1\" />\n <label class=\"form-check-label\" for=\"flexRadioDefault1\"> {{'Cms::IsActive' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Languages' | abpLocalization}}</label>\n <ul class=\"list-group list-group-flush\">\n <ng-container *ngFor=\"let item of languages; let i = index\">\n <li class=\"list-group-item d-flex justify-content-between align-items-center\">\n <div>\n <input class=\"form-check-input me-1\" type=\"checkbox\" [value]=\"item.cultureName\"\n id=\"firstRadio{{ i }}\" [checked]=\"item.ischecked\"\n (change)=\"languagesChange($event);!item.ischecked\" />\n <label class=\"form-check-label\" for=\"firstRadio{{ i }}\">{{ item.displayName\n }}</label>\n </div>\n <ng-container *ngIf=\"item.ischecked\">\n <div class=\"text-primary\" *ngIf=\"item.isDefault\">{{'Cms::Default' | abpLocalization}}\n </div>\n <div (click.stop)=\"setDefault(item)\" *ngIf=\"!item.isDefault\">\n {{'Cms::SetDefault' | abpLocalization}}</div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"createModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .sites-page .dignite_page{background:transparent}::ng-deep .sites-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .sites-page .card-header{height:57px}::ng-deep .sites-page .card-header input{height:34px}::ng-deep .sites-page .container-height{height:calc(100vh - 180px)}::ng-deep .sites-modal-form .form-control{padding:.4rem 1.25rem}\n"] }]
282
+ }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.SiteAdminService }, { type: i3.ToasterService }, { type: i3.ConfirmationService }, { type: i4.FormBuilder }, { type: i1.ConfigStateService }, { type: i1.LocalizationService }, { type: i5.CmsApiService }]; }, propDecorators: { createModalSubmit: [{
283
+ type: ViewChild,
284
+ args: ['createModalSubmit', { static: false }]
285
+ }] } });
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9zaXRlcy9zaXRlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL3NpdGVzL3NpdGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCxPQUFPLEVBQTJCLHdCQUF3QixFQUFFLFdBQVcsRUFBdUMsTUFBTSxjQUFjLENBQUM7QUFFbkksT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQXdDLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBZ0MsV0FBVyxFQUF1QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1SCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSS9DLE1BaUJhLGNBQWM7SUFFUDtJQUNSO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUlYsWUFDa0IsSUFBaUIsRUFDekIsaUJBQW1DLEVBQ25DLE9BQXVCLEVBQ3ZCLFlBQWlDLEVBQ2pDLEVBQWUsRUFDZixXQUErQixFQUMvQixvQkFBeUMsRUFDekMsY0FBNkI7UUFQckIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUN6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLFlBQU8sR0FB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O1NBQ0Ysa0pDN0JILDJoU0F1Slk7O1NEeEhDLGNBQWM7NEZBQWQsY0FBYztrQkFqQjFCLFNBQVM7K0JBQ0UsV0FBVyxhQUdWO3dCQUNQLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLDREQUE0RDt3QkFDNUQsdUVBQXVFO3dCQUN2RSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO3dCQUN0RDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLEtBQUs7eUJBQzlCO3FCQUNGO3lUQXNDa0QsaUJBQWlCO3NCQUFuRSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZSAqL1xuaW1wb3J0IHsgQUJQLCBDb25maWdTdGF0ZVNlcnZpY2UsIExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgTGlzdFNlcnZpY2UsIExvY2FsaXphdGlvblNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlLCBDb25maXJtYXRpb24gfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHZXRTaXRlc0lucHV0LCBTaXRlRHRvLCBTaXRlQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvYWRtaW4vc2l0ZXMnO1xuaW1wb3J0IHsgQ29sdW1uTW9kZSB9IGZyb20gXCJAc3dpbWxhbmUvbmd4LWRhdGF0YWJsZVwiO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDcmVhdGVPclVwZGF0ZVNpdGVzSW5wdXRCYXNlIH0gZnJvbSAnLi9jcmVhdGUtb3ItdXBkYXRlLXNpdGVzLWlucHV0LWJhc2UnO1xuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBFQ21zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgQ21zQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Ntcy1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1zaXRlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaXRlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpdGVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgICAgLy8gW1JlcXVpcmVkXVxuICAgICAgTGlzdFNlcnZpY2UsXG4gICAgICAvLyBbT3B0aW9uYWxdXG4gICAgICAvLyBQcm92aWRlIHRoaXMgdG9rZW4gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgZGVib3VuY2UgdGltZS5cbiAgICAgIC8vIERlZmF1bHQgaXMgMzAwLiBDYW5ub3QgYmUgMC4gQW55IHZhbHVlIGJlbG93IDEwMCBpcyBub3QgcmVjb21tZW5kZWQuXG4gICAgICB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwMCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfSURFTlRJRklFUixcbiAgICAgIHVzZVZhbHVlOiBFQ21zQ29tcG9uZW50LlNpdGVzLFxuICAgIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2l0ZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfU2l0ZUFkbWluU2VydmljZTogU2l0ZUFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIF9Mb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgX0Ntc0FwaVNlcnZpY2U6IENtc0FwaVNlcnZpY2UsXG4gICkge1xuICB9XG5cblxuXG5cblxuICAvKirliJvlu7rnq5nngrnmqKHmgIHmoYbnirbmgIEgKi9cbiAgY3JlYXRlU2l0ZXNPcGVuOiBib29sZWFuID0gZmFsc2VcblxuICAvKirnlKjkuo7noa7lrprmqKHmgIHnmoTnuYHlv5nnirbmgIHmmK/lkKbkuLrnnJ8gKi9cbiAgbW9kYWxCdXN5OiBib29sZWFuID0gZmFsc2VcbiAgLyoq5Yib5bu656uZ54K56KGo5Y2VICovXG4gIGNyZWF0ZU9yRWRpdEZvcm06IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcblxuICBnZXQgbGFuZ3VhZ2VzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT3JFZGl0Rm9ybS5nZXQoJ2xhbmd1YWdlcycpLnZhbHVlXG4gIH1cblxuICAvKiror63oqIDliJfooaggKi9cbiAgbGFuZ3VhZ2VzOiBhbnlbXVxuXG4gIC8qKuermeeCuee7meWumueahOihqOWNleWAvCAqL1xuICBzZWxlY3RlZDogYW55XG5cbiAgLyoq6KGo5Y2V5o6n5Lu25qih5p2/LeWKqOaAgei1i+WAvOihqOWNleaOp+S7tiAqL1xuICBAVmlld0NoaWxkKCdjcmVhdGVNb2RhbFN1Ym1pdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjcmVhdGVNb2RhbFN1Ym1pdDogRWxlbWVudFJlZjtcblxuXG4gIENvbHVtbk1vZGUgPSBDb2x1bW5Nb2RlO1xuICBkYXRhOiBQYWdlZFJlc3VsdER0bzxTaXRlRHRvPiA9IHtcbiAgICBpdGVtczogW10sXG4gICAgdG90YWxDb3VudDogMCxcbiAgfTtcblxuICBmaWx0ZXJzID0ge30gYXMgR2V0U2l0ZXNJbnB1dDtcblxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ob29rVG9RdWVyeSgpXG4gIH1cblxuICBob29rVG9RdWVyeSgpIHtcbiAgICBjb25zdCBnZXREYXRhID0gKHF1ZXJ5OiBBQlAuUGFnZVF1ZXJ5UGFyYW1zKSA9PiB0aGlzLl9TaXRlQWRtaW5TZXJ2aWNlLmdldExpc3Qoe1xuICAgICAgLi4ucXVlcnksXG4gICAgICAuLi50aGlzLmZpbHRlcnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZXREYXRhID0gKGxpc3Q6IFBhZ2VkUmVzdWx0RHRvPFNpdGVEdG8+KSA9PiAodGhpcy5kYXRhID0gbGlzdCk7XG4gICAgdGhpcy5saXN0Lmhvb2tUb1F1ZXJ5KGdldERhdGEpLnN1YnNjcmliZShzZXREYXRhKTtcbiAgfVxuXG5cbiAgLyoq5Yig6Zmk5a2X5q61ICovXG4gIGRlbGV0ZWZpZWxkKHJvdzogYW55KSB7XG4gICAgdGhpcy5jb25maXJtYXRpb24ud2FybihcbiAgICAgIHJvdy5kaXNwbGF5TmFtZSxcbiAgICAgIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6Okl0ZW1XaWxsQmVEZWxldGVkTWVzc2FnZWApLFxuICAgICkuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcbiAgICAgIGlmIChzdGF0dXMgPT0gJ2NvbmZpcm0nKSB7XG4gICAgICAgIHRoaXMuX1NpdGVBZG1pblNlcnZpY2UuZGVsZXRlKHJvdy5pZCkucGlwZShmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIH0pKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTdWNjZXNzZnVsbHlEZWxldGVkYCkpO1xuICAgICAgICAgIHRoaXMubGlzdC5nZXQoKVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuICAvKirliJvlu7rnq5nngrnmqKHmgIHmoYbnirbmgIHmlLnlj5ggKi9cbiAgY3JlYXRlR3JvdXBWaXNpYmxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgLy8gY29uc29sZS5sb2coZXZlbnQsICfliJvlu7rnq5nngrnmqKHmgIHmoYbnirbmgIHmlLnlj5jlhbPpl60nKTtcblxuICAgICAgdGhpcy5zZWxlY3RlZCA9ICcnXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICAvKirpgInmi6nor63oqIDmlLnlj5ggKi9cbiAgbGFuZ3VhZ2VzQ2hhbmdlKGV2ZW50KSB7XG4gICAgbGV0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZFxuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgIHRoaXMubGFuZ3VhZ2VzLmZvckVhY2goZWwgPT4ge1xuICAgICAgZWwuaXNjaGVja2VkID0gZWwuY3VsdHVyZU5hbWUgPT09IHZhbHVlID8gY2hlY2tlZCA6IGVsLmlzY2hlY2tlZDtcbiAgICB9KVxuICAgIHRoaXMuc2V0RnJvbUxhbmdndWFnZXMoKVxuICB9XG4gIC8qKuiuvue9rum7mOiupOivreiogCAqL1xuICBzZXREZWZhdWx0KGl0ZW1zKSB7XG4gICAgdGhpcy5sYW5ndWFnZXMuZm9yRWFjaChlbCA9PiB7XG4gICAgICBlbC5pc0RlZmF1bHQgPSBlbC5jdWx0dXJlTmFtZSA9PT0gaXRlbXMuY3VsdHVyZU5hbWU7XG4gICAgfSlcbiAgICB0aGlzLnNldEZyb21MYW5nZ3VhZ2VzKClcbiAgfVxuICAvKirorr7nva7ooajljZXkuK3nmoTor63oqIAgKi9cbiAgc2V0RnJvbUxhbmdndWFnZXMoKSB7XG4gICAgbGV0IGxhbmd1YWdlc1NlbGVjdCA9IHRoaXMubGFuZ3VhZ2VzLmZpbHRlcihlbCA9PiBlbC5pc2NoZWNrZWQgPT0gdHJ1ZSlcbiAgICB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBsYW5ndWFnZXM6IGxhbmd1YWdlc1NlbGVjdFxuICAgIH0pXG4gICAgaWYgKGxhbmd1YWdlc1NlbGVjdC5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5sYW5ndWFnZXMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIGVsLmlzRGVmYXVsdCA9IGZhbHNlXG4gICAgICB9KVxuICAgIH1cbiAgfVxuICAvKirooajljZXkv53lrZjmj5DkuqQgKi9cbiAgY3JlYXRlT3JFZGl0U2F2ZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuRWRpdFNhdmUoKVxuICAgIH1cbiAgICB0aGlzLmNyZWF0ZVNhdmUoKVxuICB9XG5cbiAgLyoq5Yib5bu656uZ54K55L+d5a2YICovXG4gIGNyZWF0ZVNhdmUoKSB7XG4gICAgbGV0IGlucHV0ID0gdGhpcy5jcmVhdGVPckVkaXRGb3JtLnZhbHVlXG4gICAgdGhpcy5tb2RhbEJ1c3kgPSB0cnVlXG4gICAgaWYgKCF0aGlzLmNyZWF0ZU9yRWRpdEZvcm0udmFsaWQpIHJldHVyblxuICAgIHRoaXMuX1NpdGVBZG1pblNlcnZpY2UuY3JlYXRlKGlucHV0KS5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgIHRoaXMubW9kYWxCdXN5ID0gZmFsc2VcbiAgICAgIHRoaXMuY3JlYXRlU2l0ZXNPcGVuID0gZmFsc2VcbiAgICB9KSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYENtc0tpdDo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XG4gICAgICB0aGlzLmxpc3QuZ2V0KClcbiAgICB9KVxuICB9XG4gIC8qKue8lui+keermeeCueS/neWtmCAqL1xuICBFZGl0U2F2ZSgpIHtcbiAgICBsZXQgaW5wdXQgPSB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0udmFsdWVcbiAgICB0aGlzLm1vZGFsQnVzeSA9IHRydWVcbiAgICB0aGlzLl9TaXRlQWRtaW5TZXJ2aWNlLnVwZGF0ZSh0aGlzLnNlbGVjdGVkLmlkLCBpbnB1dCkucGlwZShmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICB0aGlzLm1vZGFsQnVzeSA9IGZhbHNlXG4gICAgICB0aGlzLmNyZWF0ZVNpdGVzT3BlbiA9IGZhbHNlXG4gICAgfSkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBDbXNLaXQ6OlNhdmVkU3VjY2Vzc2Z1bGx5YCkpO1xuICAgICAgdGhpcy5saXN0LmdldCgpXG4gICAgfSlcbiAgfVxuXG5cblxuICAvKirliJvlu7rnq5nngrnmjInpkq4gKi9cbiAgY3JlYXRlU2l0ZXNCdG4oKSB7XG4gICAgdGhpcy5jcmVhdGVTaXRlc09wZW4gPSB0cnVlXG4gICAgdGhpcy5jcmVhdGVPckVkaXRGb3JtID0gdGhpcy5mYi5ncm91cChuZXcgQ3JlYXRlT3JVcGRhdGVTaXRlc0lucHV0QmFzZSgpKVxuICAgIHRoaXMuc2V0QXN5bmNWYWxpZGF0b3JzRm4oKVxuICAgIHRoaXMubGFuZ3VhZ2VzID0gdGhpcy5jb25maWdTdGF0ZS5nZXREZWVwKCdsb2NhbGl6YXRpb24ubGFuZ3VhZ2VzJylcbiAgICB0aGlzLmxhbmd1YWdlcy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgIGVsLmlzRGVmYXVsdCA9IGluZGV4ID09PSAwXG4gICAgICBlbC5pc2NoZWNrZWQgPSBpbmRleCA9PT0gMFxuICAgIH0pXG4gICAgdGhpcy5zZXRGcm9tTGFuZ2d1YWdlcygpXG4gIH1cblxuXG5cbiAgLyoq57yW6L6R56uZ54K55oyJ6ZKuICovXG4gIEVkaXRTaXRlc0J0bihyb3dzKSB7XG4gICAgdGhpcy5jcmVhdGVTaXRlc09wZW4gPSB0cnVlXG4gICAgdGhpcy5sYW5ndWFnZXMgPSB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAoJ2xvY2FsaXphdGlvbi5sYW5ndWFnZXMnKVxuICAgIHRoaXMuX1NpdGVBZG1pblNlcnZpY2UuZ2V0KHJvd3MuaWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHJvd3NcbiAgICAgIHRoaXMuY3JlYXRlT3JFZGl0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3IENyZWF0ZU9yVXBkYXRlU2l0ZXNJbnB1dEJhc2UoKSlcbiAgICAgIHRoaXMuY3JlYXRlT3JFZGl0Rm9ybS5wYXRjaFZhbHVlKHJvd3MpXG4gICAgICB0aGlzLnNldEFzeW5jVmFsaWRhdG9yc0ZuKClcbiAgICAgIC8vIOabtOaWsOivreiogOWSjOm7mOiupOeKtuaAgSAgXG4gICAgICB0aGlzLnVwZGF0ZUxhbmd1YWdlcyhyZXMubGFuZ3VhZ2VzKTtcbiAgICAgIC8vIOiuvue9ruihqOWNleivreiogCAgXG4gICAgICB0aGlzLnNldEZyb21MYW5nZ3VhZ2VzKClcbiAgICB9KVxuICB9XG5cbiAgLyoq6K6+572u5a2X5q615o6n5Lu25byC5q2l6aqM6K+BICovXG4gIHNldEFzeW5jVmFsaWRhdG9yc0ZuKCkge1xuICAgIHRoaXMuY3JlYXRlT3JFZGl0Rm9ybS5zZXRDb250cm9sKCduYW1lJywgbmV3IEZvcm1Db250cm9sKHRoaXMubmFtZUlucHV0LnZhbHVlIHx8ICcnLCB7XG4gICAgICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgYXN5bmNWYWxpZGF0b3JzOiB0aGlzLm5hbWVSZXBldGl0aW9uQXN5bmNWYWxpZGF0b3IoKSxcbiAgICAgIHVwZGF0ZU9uOiAnYmx1cidcbiAgICB9KSlcbiAgfVxuXG5cblxuICAvKirmm7TmlrDor63oqIDlkozpu5jorqTnirbmgIEgKi9cbiAgdXBkYXRlTGFuZ3VhZ2VzKHNpdGVMYW5ndWFnZXMpIHtcbiAgICB0aGlzLmxhbmd1YWdlcy5mb3JFYWNoKGxhbmd1YWdlID0+IHtcbiAgICAgIGNvbnN0IHNpdGVMYW5ndWFnZSA9IHNpdGVMYW5ndWFnZXMuZmluZChzbCA9PiBzbC5jdWx0dXJlTmFtZSA9PT0gbGFuZ3VhZ2UuY3VsdHVyZU5hbWUpO1xuICAgICAgaWYgKHNpdGVMYW5ndWFnZSkge1xuICAgICAgICBsYW5ndWFnZS5pc2NoZWNrZWQgPSB0cnVlO1xuICAgICAgICBsYW5ndWFnZS5pc0RlZmF1bHQgPSBzaXRlTGFuZ3VhZ2UuaXNEZWZhdWx0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBnZXQgbmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0uZ2V0KCduYW1lJylcbiAgfVxuICBnZXQgaG9zdElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0uZ2V0KCdob3N0JylcbiAgfVxuXG4gIC8qKuWtl+auteagh+etvmlucHV05aSx5Y675qCH54K555Sf5oiQ5a2X5q615ZCN5a2XICovXG4gIGRpc1BsYXlOYW1lSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgbGV0IHBpbnlpbiA9IHRoaXMuX0Ntc0FwaVNlcnZpY2UuY2hpbmVzZVRvUGlueWluKHZhbHVlKVxuICAgIGxldCBuYW1lSW5wdXQgPSB0aGlzLm5hbWVJbnB1dFxuICAgIGlmIChuYW1lSW5wdXQudmFsdWUpIHJldHVyblxuICAgIG5hbWVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbilcbiAgfVxuXG4gIC8qKm5hbWXlrprkuYnoh6rlrprkuYnlvILmraXpqozor4EgKi9cbiAgbmFtZVJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpIHtcbiAgICByZXR1cm4gKGN0cmw6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBsZXQgc3Vic2x1ZyA9IHRoaXMuY3JlYXRlT3JFZGl0Rm9ybT8uZ2V0KCduYW1lJykudmFsdWVcbiAgICAgICAgaWYgKHN1YnNsdWcgPT0gdGhpcy5zZWxlY3RlZD8ubmFtZSkge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fU2l0ZUFkbWluU2VydmljZS5uYW1lRXhpc3RzKHN1YnNsdWcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHJlc29sdmUoeyByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYENtczo6U2l0ZU5hbWV7MH1BbHJlYWR5RXhpc3RgLCBjdHJsLnZhbHVlKSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG4gIC8qKmhvc3TlrprkuYnoh6rlrprkuYnlvILmraXpqozor4EgKi9cbiAgaG9zdFJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpIHtcbiAgICByZXR1cm4gKGN0cmw6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBsZXQgc3Vic2x1ZyA9IHRoaXMuY3JlYXRlT3JFZGl0Rm9ybT8uZ2V0KCdob3N0JykudmFsdWVcbiAgICAgICAgaWYgKHN1YnNsdWcgPT0gdGhpcy5zZWxlY3RlZD8uaG9zdCB8fCBzdWJzbHVnID09ICdodHRwczovLycpIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX1NpdGVBZG1pblNlcnZpY2UuaG9zdEV4aXN0cyhzdWJzbHVnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICByZXNvbHZlKHsgcmVwZXRpdGlvbjogdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBDbXM6OlNpdGVIb3N0ezB9QWxyZWFkeUV4aXN0YCwgY3RybC52YWx1ZSkgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG59XG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6OlNpdGVzJyB8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2l0ZXMtcGFnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcHgtMiBweS1zbS0yIGJvcmRlci1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWJwVWk6OlNlYXJjaCcgfCBhYnBMb2NhbGl6YXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcHgtMlwiIHR5cGU9XCJidXR0b25cIiBpZD1cImJ1dHRvbi1hZGRvbjJcIiAoY2xpY2spPVwibGlzdC5nZXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHRhYmxlLWZpeGVkLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZSBjbGFzcz1cIm1hdGVyaWFsIGNvbnRhaW5lci1oZWlnaHRcIiBbcm93c109XCJkYXRhLml0ZW1zXCIgW2xpc3RdPVwibGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uTW9kZV09XCInZm9yY2UnXCIgW2hlYWRlckhlaWdodF09XCI1MFwiIFtmb290ZXJIZWlnaHRdPVwiNTBcIiByb3dIZWlnaHQ9XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JvbGxiYXJWXT1cInRydWVcIiBbdmlydHVhbGl6YXRpb25dPVwiZmFsc2VcIiBbZXh0ZXJuYWxQYWdpbmddPVwidHJ1ZVwiIFtjb3VudF09XCJkYXRhLnRvdGFsQ291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjpEaXNwbGF5TmFtZScgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwiZGlzcGxheU5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWx1ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6Ok5hbWUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWx1ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OklzQWN0aXZlJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJpc0FjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiICpuZ0lmPVwidmFsdWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzIHRleHQtZGFuZ2VyXCIgKm5nSWY9XCIhdmFsdWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6SG9zdCcgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwiaG9zdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6Q3JlYXRpb25UaW1lJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJjcmVhdGlvblRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWx1ZSB8IGRhdGUgOiAneXl5eS1NTS1kZCBoaC1tbS1zcycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbc29ydGFibGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXNtXCIgbmdiRHJvcGRvd25Ub2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIkVkaXRTaXRlc0J0bihyb3cpXCI+e3snQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlZmllbGQocm93KVwiPnt7J0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICA8L2Rpdj5cblxuXG5cbjwvYWJwLXBhZ2U+XG5cblxuPCEtLSA8ZGlnbml0ZS1wYWdlIFt0aXRsZV09XCInQ21zOjpTaXRlcycgfCBhYnBMb2NhbGl6YXRpb25cIiBbYmFja109XCJmYWxzZVwiIFtjbGFzc109XCInc2l0ZXMtcGFnZSdcIj5cbiAgICA8bmctdGVtcGxhdGUgI3BhZ2VIZWFkZXI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtcy0yXCIgKGNsaWNrLnN0b3ApPVwiY3JlYXRlU2l0ZXNCdG4oKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIHBlLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+e3snQ21zOjpOZXcnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3BhZ2VCb2R5PlxuICAgICAgICBcbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaWduaXRlLXBhZ2U+IC0tPlxuXG48YWJwLW1vZGFsIFsodmlzaWJsZSldPVwiY3JlYXRlU2l0ZXNPcGVuXCIgW2J1c3ldPVwibW9kYWxCdXN5XCIgKHZpc2libGVDaGFuZ2UpPVwiY3JlYXRlR3JvdXBWaXNpYmxlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICAgICAgPGgzPnt7c2VsZWN0ZWQ/KCdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24pOignQ21zOjpOZXcnIHwgYWJwTG9jYWxpemF0aW9uKX19PC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJSZWY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVPckVkaXRGb3JtOyBlbHNlIGxvYWRlclJlZlwiPlxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJzaXRlcy1tb2RhbC1mb3JtXCIgI215Rm9ybT1cIm5nRm9ybVwiIFtmb3JtR3JvdXBdPVwiY3JlYXRlT3JFZGl0Rm9ybVwiXG4gICAgICAgICAgICAgICAgKG5nU3VibWl0KT1cImNyZWF0ZU9yRWRpdFNhdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICNjcmVhdGVNb2RhbFN1Ym1pdCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpEaXNwbGF5TmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiZGlzUGxheU5hbWVJbnB1dEJsdXIoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlciBpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJuYW1lSW5wdXQuZXJyb3JzPy5yZXBldGl0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e25hbWVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb259fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpIb3N0JyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJob3N0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImhvc3RJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aG9zdElucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmxleFJhZGlvRGVmYXVsdDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhSYWRpb0RlZmF1bHQxXCI+IHt7J0Ntczo6SXNBY3RpdmUnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6Okxhbmd1YWdlcycgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYW5ndWFnZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0xXCIgdHlwZT1cImNoZWNrYm94XCIgW3ZhbHVlXT1cIml0ZW0uY3VsdHVyZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmlyc3RSYWRpb3t7IGkgfX1cIiBbY2hlY2tlZF09XCJpdGVtLmlzY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsYW5ndWFnZXNDaGFuZ2UoJGV2ZW50KTshaXRlbS5pc2NoZWNrZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZpcnN0UmFkaW97eyBpIH19XCI+e3sgaXRlbS5kaXNwbGF5TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmlzY2hlY2tlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeVwiICpuZ0lmPVwiaXRlbS5pc0RlZmF1bHRcIj57eydDbXM6OkRlZmF1bHQnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2suc3RvcCk9XCJzZXREZWZhdWx0KGl0ZW0pXCIgKm5nSWY9XCIhaXRlbS5pc0RlZmF1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6OlNldERlZmF1bHQnIHwgYWJwTG9jYWxpemF0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+e3snQWJwVWk6OkNsb3NlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVNb2RhbFN1Ym1pdC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIj57eydBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYWJwLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9hYnAtbW9kYWw+Il19
@@ -0,0 +1,124 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { EntryConfig } from './entry-config';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "../../../proxy/admin/sites";
7
+ import * as i3 from "../../../proxy/admin/sections";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "@abp/ng.core";
10
+ import * as i6 from "@ngx-validate/core";
11
+ class EntryConfigComponent {
12
+ fb;
13
+ _SiteAdminService;
14
+ _SectionAdminService;
15
+ constructor(fb, _SiteAdminService, _SectionAdminService) {
16
+ this.fb = fb;
17
+ this._SiteAdminService = _SiteAdminService;
18
+ this._SectionAdminService = _SectionAdminService;
19
+ }
20
+ /**表单控件类型 */
21
+ _type;
22
+ set type(v) {
23
+ if (v == this._type)
24
+ return;
25
+ this._type = v;
26
+ // if (v) this.dataLoaded(1)
27
+ }
28
+ /**表单实体 */
29
+ _Entity;
30
+ set Entity(v) {
31
+ this._Entity = v;
32
+ // if (v) this.dataLoaded(2)
33
+ }
34
+ /**选择的表单信息 */
35
+ _selected;
36
+ set selected(v) {
37
+ this._selected = v;
38
+ // if (v) this.dataLoaded(3)
39
+ }
40
+ get formConfiguration() {
41
+ return this._Entity.get('formConfiguration');
42
+ }
43
+ submitclick;
44
+ /**站点列表 */
45
+ siteList = [];
46
+ /**选择的站点id */
47
+ // siteId: string = ''
48
+ siteId = new FormControl('');
49
+ /**站点下的版块 */
50
+ SiteOfSectionList = [];
51
+ ngAfterContentInit() {
52
+ //Called after ngOnInit when the component's or directive's content has been initialized.
53
+ //Add 'implements AfterContentInit' to the class.
54
+ // console.log(this._Entity, 'ngAfterContentInit', this._type, 2222222);
55
+ this.dataLoaded(2);
56
+ }
57
+ async dataLoaded(val) {
58
+ if (this._Entity && this._type) {
59
+ await this.AfterInit();
60
+ this.submitclick.nativeElement.click();
61
+ }
62
+ }
63
+ AfterInit() {
64
+ return new Promise(async (resolve, rejects) => {
65
+ this._Entity.setControl('formConfiguration', this.fb.group(new EntryConfig()));
66
+ await this.getsiteList();
67
+ await this.getSiteOfSectionList();
68
+ if (this._selected) {
69
+ this.formConfiguration.patchValue({
70
+ ...this._selected.formConfiguration
71
+ });
72
+ }
73
+ resolve(true);
74
+ });
75
+ }
76
+ /**获取站点列表 */
77
+ getsiteList() {
78
+ return new Promise((resolve, rejects) => {
79
+ this._SiteAdminService.getList({}).subscribe(res => {
80
+ this.siteList = res.items;
81
+ this.siteId = res.items[0]?.id || '';
82
+ resolve(res.items);
83
+ });
84
+ });
85
+ }
86
+ /**获取站点下的版块 */
87
+ getSiteOfSectionList() {
88
+ return new Promise((resolve, rejects) => {
89
+ this._SectionAdminService.getList({
90
+ maxResultCount: 1000,
91
+ siteId: this.siteId
92
+ }).subscribe(res => {
93
+ this.SiteOfSectionList = res.items;
94
+ this.formConfiguration.patchValue({
95
+ 'Entry.SectionId': res.items[0]?.id || ''
96
+ });
97
+ // this.filters.sectionId = res.items[0]?.id || ''
98
+ // this.getSectionOfEntryType()
99
+ resolve(res.items);
100
+ });
101
+ });
102
+ }
103
+ /**切换站点 */
104
+ async siteIdChange() {
105
+ await this.getSiteOfSectionList();
106
+ }
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SiteAdminService }, { token: i3.SectionAdminService }], target: i0.ɵɵFactoryTarget.Component });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EntryConfigComponent, selector: "cms-entry-config", inputs: { type: "type", Entity: "Entity", selected: "selected" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sites' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"siteId\" (change)=\"siteIdChange()\">\n <ng-container *ngFor=\"let item of siteList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n</div>\n<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n \n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" formControlName=\"Entry.SectionId\">\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Entry.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'Cms::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Entry.Placeholder\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i6.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i6.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] });
109
+ }
110
+ export { EntryConfigComponent };
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryConfigComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'cms-entry-config', template: "<div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sites' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"siteId\" (change)=\"siteIdChange()\">\n <ng-container *ngFor=\"let item of siteList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n</div>\n<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n \n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" formControlName=\"Entry.SectionId\">\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Entry.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'Cms::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Entry.Placeholder\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>" }]
114
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SiteAdminService }, { type: i3.SectionAdminService }]; }, propDecorators: { type: [{
115
+ type: Input
116
+ }], Entity: [{
117
+ type: Input
118
+ }], selected: [{
119
+ type: Input
120
+ }], submitclick: [{
121
+ type: ViewChild,
122
+ args: ['submitclick', { static: true }]
123
+ }] } });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2VudHJ5L2VudHJ5LWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9lbnRyeS9lbnRyeS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQWUsV0FBVyxFQUF5QixNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFHN0MsTUFLYSxvQkFBb0I7SUFFckI7SUFDQTtJQUNBO0lBSFYsWUFDVSxFQUFlLEVBQ2YsaUJBQW1DLEVBQ25DLG9CQUF5QztRQUZ6QyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2Ysc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO0lBRW5ELENBQUM7SUFDRCxZQUFZO0lBQ1osS0FBSyxDQUFLO0lBQ1YsSUFDVyxJQUFJLENBQUMsQ0FBTTtRQUNwQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU07UUFFM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDZCw0QkFBNEI7SUFDOUIsQ0FBQztJQUNELFVBQVU7SUFDVixPQUFPLENBQXVCO0lBQzlCLElBQ1csTUFBTSxDQUFDLENBQVk7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsNEJBQTRCO0lBQzlCLENBQUM7SUFD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LENBQUMsRUFBRSxFQUFFLElBQUksRUFBRTtpQkFDMUMsQ0FBQyxDQUFBO2dCQUNGLGtEQUFrRDtnQkFDbEQsK0JBQStCO2dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BCLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsVUFBVTtJQUNWLEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7SUFDbkMsQ0FBQzt3R0F2R1Usb0JBQW9COzRGQUFwQixvQkFBb0Isb1BDVmpDLHVwREFtQ087O1NEekJNLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjttS0FjakIsSUFBSTtzQkFEZCxLQUFLO2dCQVVLLE1BQU07c0JBRGhCLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkFRc0MsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudHJ5Q29uZmlnIH0gZnJvbSAnLi9lbnRyeS1jb25maWcnO1xuaW1wb3J0IHsgU2l0ZUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL3NpdGVzJztcbmltcG9ydCB7IFNlY3Rpb25BZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9hZG1pbi9zZWN0aW9ucyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtZW50cnktY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudHJ5LWNvbmZpZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VudHJ5LWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEVudHJ5Q29uZmlnQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfU2l0ZUFkbWluU2VydmljZTogU2l0ZUFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIF9TZWN0aW9uQWRtaW5TZXJ2aWNlOiBTZWN0aW9uQWRtaW5TZXJ2aWNlLFxuICApIHtcbiAgfVxuICAvKirooajljZXmjqfku7bnsbvlnosgKi9cbiAgX3R5cGU6IGFueVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHR5cGUodjogYW55KSB7XG4gICAgaWYgKHYgPT0gdGhpcy5fdHlwZSkgcmV0dXJuXG5cbiAgICB0aGlzLl90eXBlID0gdlxuICAgIC8vIGlmICh2KSB0aGlzLmRhdGFMb2FkZWQoMSlcbiAgfVxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX0VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgRW50aXR5KHY6IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuX0VudGl0eSA9IHY7XG4gICAgLy8gaWYgKHYpIHRoaXMuZGF0YUxvYWRlZCgyKVxuICB9XG4gIC8qKumAieaLqeeahOihqOWNleS/oeaBryAqL1xuICBfc2VsZWN0ZWQ6IGFueVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gdlxuICAgIC8vIGlmICh2KSB0aGlzLmRhdGFMb2FkZWQoMylcbiAgfVxuICBnZXQgZm9ybUNvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX0VudGl0eS5nZXQoJ2Zvcm1Db25maWd1cmF0aW9uJykgYXMgRm9ybUdyb3VwXG4gIH1cbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcblxuICAvKirnq5nngrnliJfooaggKi9cbiAgc2l0ZUxpc3Q6IGFueVthbnldID0gW11cblxuICAvKirpgInmi6nnmoTnq5nngrlpZCAqL1xuICAvLyBzaXRlSWQ6IHN0cmluZyA9ICcnXG4gIHNpdGVJZDogYW55ID0gbmV3IEZvcm1Db250cm9sKCcnKVxuICAvKirnq5nngrnkuIvnmoTniYjlnZcgKi9cbiAgU2l0ZU9mU2VjdGlvbkxpc3Q6IGFueVthbnldID0gW11cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgYWZ0ZXIgbmdPbkluaXQgd2hlbiB0aGUgY29tcG9uZW50J3Mgb3IgZGlyZWN0aXZlJ3MgY29udGVudCBoYXMgYmVlbiBpbml0aWFsaXplZC5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0JyB0byB0aGUgY2xhc3MuXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5fRW50aXR5LCAnbmdBZnRlckNvbnRlbnRJbml0JywgdGhpcy5fdHlwZSwgMjIyMjIyMik7XG4gICAgdGhpcy5kYXRhTG9hZGVkKDIpXG4gIH1cblxuICBhc3luYyBkYXRhTG9hZGVkKHZhbCkge1xuICAgIGlmICh0aGlzLl9FbnRpdHkgJiYgdGhpcy5fdHlwZSkge1xuICAgICAgYXdhaXQgdGhpcy5BZnRlckluaXQoKVxuICAgICAgdGhpcy5zdWJtaXRjbGljay5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgQWZ0ZXJJbml0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fRW50aXR5LnNldENvbnRyb2woJ2Zvcm1Db25maWd1cmF0aW9uJywgdGhpcy5mYi5ncm91cChuZXcgRW50cnlDb25maWcoKSkpXG4gICAgICBhd2FpdCB0aGlzLmdldHNpdGVMaXN0KClcbiAgICAgIGF3YWl0IHRoaXMuZ2V0U2l0ZU9mU2VjdGlvbkxpc3QoKVxuICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgLi4udGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb25cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICB9XG5cbiAgLyoq6I635Y+W56uZ54K55YiX6KGoICovXG4gIGdldHNpdGVMaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fU2l0ZUFkbWluU2VydmljZS5nZXRMaXN0KHt9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5zaXRlTGlzdCA9IHJlcy5pdGVtc1xuICAgICAgICB0aGlzLnNpdGVJZCA9IHJlcy5pdGVtc1swXT8uaWQgfHwgJydcbiAgICAgICAgcmVzb2x2ZShyZXMuaXRlbXMpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbiAgLyoq6I635Y+W56uZ54K55LiL55qE54mI5Z2XICovXG4gIGdldFNpdGVPZlNlY3Rpb25MaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5nZXRMaXN0KHtcbiAgICAgICAgbWF4UmVzdWx0Q291bnQ6IDEwMDAsXG4gICAgICAgIHNpdGVJZDogdGhpcy5zaXRlSWRcbiAgICAgIH0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLlNpdGVPZlNlY3Rpb25MaXN0ID0gcmVzLml0ZW1zXG4gICAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgJ0VudHJ5LlNlY3Rpb25JZCc6IHJlcy5pdGVtc1swXT8uaWQgfHwgJydcbiAgICAgICAgfSlcbiAgICAgICAgLy8gdGhpcy5maWx0ZXJzLnNlY3Rpb25JZCA9IHJlcy5pdGVtc1swXT8uaWQgfHwgJydcbiAgICAgICAgLy8gdGhpcy5nZXRTZWN0aW9uT2ZFbnRyeVR5cGUoKVxuICAgICAgICByZXNvbHZlKHJlcy5pdGVtcylcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKuWIh+aNouermeeCuSAqL1xuICBhc3luYyBzaXRlSWRDaGFuZ2UoKSB7XG4gICAgYXdhaXQgdGhpcy5nZXRTaXRlT2ZTZWN0aW9uTGlzdCgpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6U2l0ZXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjb2wtYXV0b1wiICBbKG5nTW9kZWwpXT1cInNpdGVJZFwiIChjaGFuZ2UpPVwic2l0ZUlkQ2hhbmdlKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzaXRlTGlzdFwiPlxuICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFwiPnt7aXRlbS5kaXNwbGF5TmFtZX19PC9vcHRpb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc2VsZWN0PlxuPC9kaXY+XG48Zm9ybSBbZm9ybUdyb3VwXT1cIl9FbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJmb3JtQ29uZmlndXJhdGlvblwiPlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlNlY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjb2wtYXV0b1wiIGZvcm1Db250cm9sTmFtZT1cIkVudHJ5LlNlY3Rpb25JZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgU2l0ZU9mU2VjdGlvbkxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFwiPnt7aXRlbS5kaXNwbGF5TmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cIkVudHJ5Lk11bHRpcGxlXCIgaWQ9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydDbXM6Ok11bHRpcGxlJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlBsYWNlaG9sZGVyJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiRW50cnkuUGxhY2Vob2xkZXJcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChhYnBJbml0KT1cInN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiXG4gICAgICAgICAgICAjc3VibWl0Y2xpY2s+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Zvcm0+Il19
@@ -0,0 +1,18 @@
1
+ export class EntryConfig {
2
+ /**多选 */
3
+ 'Entry.Multiple' = [false, []];
4
+ /**占位符 */
5
+ 'Entry.Placeholder' = ['', []];
6
+ /**版块id */
7
+ 'Entry.SectionId' = ['', []];
8
+ constructor(data) {
9
+ if (data) {
10
+ for (const key in data) {
11
+ if (data.hasOwnProperty(key)) {
12
+ this[key] = data[key];
13
+ }
14
+ }
15
+ }
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vZW50cnkvZW50cnktY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxXQUFXO0lBR3BCLFFBQVE7SUFDUixnQkFBZ0IsR0FBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxTQUFTO0lBQ1QsbUJBQW1CLEdBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsVUFBVTtJQUNWLGlCQUFpQixHQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRWxDLFlBQVksSUFBa0I7UUFDMUIsSUFBSSxJQUFJLEVBQUU7WUFDTixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QjthQUNKO1NBQ0o7SUFHTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVudHJ5Q29uZmlnIHtcclxuXHJcblxyXG4gICAgLyoq5aSa6YCJICovXHJcbiAgICAnRW50cnkuTXVsdGlwbGUnOiBhbnkgPSBbZmFsc2UsIFtdXTtcclxuICAgIC8qKuWNoOS9jeespiAqL1xyXG4gICAgJ0VudHJ5LlBsYWNlaG9sZGVyJzogYW55ID0gWycnLCBbXV07XHJcbiAgICAvKirniYjlnZdpZCAqL1xyXG4gICAgJ0VudHJ5LlNlY3Rpb25JZCc6IGFueSA9IFsnJywgW11dO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBFbnRyeUNvbmZpZykge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxufSJdfQ==