@dignite-ng/expand.cms 2.0.0-rc.1 → 2.0.0-rc.3
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.
- package/config/enums/route-names.d.ts +1 -2
- package/esm2022/config/cms-config.module.mjs +3 -2
- package/esm2022/config/enums/route-names.mjs +1 -2
- package/esm2022/config/providers/route.provider.mjs +1 -15
- package/esm2022/lib/cms-routing.module.mjs +1 -1
- package/esm2022/lib/cms.module.mjs +7 -14
- package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +5 -3
- package/esm2022/lib/components/admin/entries/create.component.mjs +7 -7
- package/esm2022/lib/components/admin/entries/edit.component.mjs +7 -7
- package/esm2022/lib/components/admin/entries/entries.component.mjs +13 -9
- package/esm2022/lib/components/admin/fields/create-field.component.mjs +2 -2
- package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +2 -2
- package/esm2022/lib/components/admin/fields/edit-field.component.mjs +2 -2
- package/esm2022/lib/components/admin/fields/field-group.component.mjs +2 -2
- package/esm2022/lib/components/admin/fields/fields.component.mjs +3 -2
- package/esm2022/lib/components/admin/sections/create-or-edit-sections-modal.component.mjs +5 -3
- package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +3 -3
- package/esm2022/lib/components/admin/sections/sections.component.mjs +4 -3
- package/esm2022/lib/components/dynamic-form/entry/entry-config.component.mjs +9 -6
- package/esm2022/lib/components/dynamic-form/entry/entry-control.component.mjs +9 -5
- package/esm2022/lib/components/dynamic-form/form-control-group.mjs +2 -2
- package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +5 -3
- package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +5 -3
- package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +5 -3
- package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +6 -4
- package/esm2022/lib/proxy/dignite/abp/regionalization-management/index.mjs +3 -0
- package/esm2022/lib/proxy/dignite/abp/regionalization-management/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/abp/regionalization-management/regionalization.service.mjs +27 -0
- package/esm2022/lib/proxy/dignite/cms/admin/dynamic-forms/form-admin.service.mjs +22 -0
- package/esm2022/lib/proxy/dignite/cms/admin/dynamic-forms/index.mjs +3 -0
- package/esm2022/lib/proxy/dignite/cms/admin/dynamic-forms/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/cms/admin/entries/entry-admin.service.mjs +70 -0
- package/esm2022/lib/proxy/dignite/cms/admin/entries/index.mjs +3 -0
- package/esm2022/lib/proxy/dignite/cms/admin/entries/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/cms/admin/fields/field-admin.service.mjs +45 -0
- package/esm2022/lib/proxy/dignite/cms/admin/fields/field-group-admin.service.mjs +41 -0
- package/esm2022/lib/proxy/dignite/cms/admin/fields/index.mjs +4 -0
- package/esm2022/lib/proxy/dignite/cms/admin/fields/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/cms/admin/sections/entry-type-admin.service.mjs +41 -0
- package/esm2022/lib/proxy/dignite/cms/admin/sections/index.mjs +4 -0
- package/esm2022/lib/proxy/dignite/cms/admin/sections/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/cms/admin/sections/section-admin.service.mjs +51 -0
- package/esm2022/lib/proxy/dignite/cms/entries/entry-status.enum.mjs +8 -0
- package/esm2022/lib/proxy/dignite/cms/entries/index.mjs +2 -0
- package/esm2022/lib/proxy/dignite/cms/fields/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/cms/sections/index.mjs +3 -0
- package/esm2022/lib/proxy/dignite/cms/sections/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/cms/sections/section-type.enum.mjs +9 -0
- package/esm2022/lib/services/cms-api.service.mjs +1 -1
- package/esm2022/lib/services/field-abstracts.service.mjs +3 -3
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/dignite-ng-expand.cms-config.mjs +4 -283
- package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -1
- package/fesm2022/dignite-ng-expand.cms.mjs +123 -118
- package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
- package/lib/cms.module.d.ts +7 -9
- package/lib/components/admin/entries/entries.component.d.ts +4 -4
- package/lib/components/admin/fields/create-field.component.d.ts +1 -1
- package/lib/components/admin/fields/create-or-edit-field.component.d.ts +1 -1
- package/lib/components/admin/fields/edit-field.component.d.ts +1 -1
- package/lib/components/admin/fields/field-group.component.d.ts +1 -1
- package/lib/components/admin/fields/fields.component.d.ts +1 -1
- package/lib/components/admin/sections/create-or-edit-sections-modal.component.d.ts +1 -1
- package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +2 -2
- package/lib/components/admin/sections/sections.component.d.ts +2 -2
- package/lib/components/dynamic-form/entry/entry-config.component.d.ts +3 -2
- package/lib/components/dynamic-form/entry/entry-control.component.d.ts +1 -0
- package/lib/components/dynamic-form/form-control-group.d.ts +1 -1
- package/lib/components/dynamic-form/matrix/matrix-config.component.d.ts +1 -0
- package/lib/components/dynamic-form/matrix/matrix-control.component.d.ts +1 -0
- package/lib/components/dynamic-form/table/table-config.component.d.ts +1 -0
- package/lib/components/dynamic-form/table/table-control.component.d.ts +1 -0
- package/lib/proxy/dignite/abp/regionalization-management/index.d.ts +2 -0
- package/lib/proxy/dignite/abp/regionalization-management/models.d.ts +8 -0
- package/lib/proxy/dignite/abp/regionalization-management/regionalization.service.d.ts +12 -0
- package/lib/proxy/{admin → dignite/cms/admin}/entries/models.d.ts +2 -2
- package/lib/proxy/{admin → dignite/cms/admin}/fields/models.d.ts +2 -2
- package/lib/proxy/{fields → dignite/cms/fields}/models.d.ts +1 -1
- package/lib/proxy/{sections → dignite/cms/sections}/models.d.ts +2 -2
- package/lib/services/field-abstracts.service.d.ts +2 -3
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/config/components/domains/domains.component.d.ts +0 -31
- package/config/components/site-language/site-language.component.d.ts +0 -30
- package/config/proxy/admin/domains/domain-admin.service.d.ts +0 -13
- package/config/proxy/admin/domains/index.d.ts +0 -2
- package/config/proxy/admin/domains/models.d.ts +0 -7
- package/config/proxy/dignite/cms/admin/sites/index.d.ts +0 -2
- package/config/proxy/dignite/cms/admin/sites/models.d.ts +0 -4
- package/config/proxy/dignite/cms/admin/sites/site-admin.service.d.ts +0 -13
- package/config/proxy/dignite/cms/sites/models.d.ts +0 -4
- package/esm2022/config/components/domains/domains.component.mjs +0 -118
- package/esm2022/config/components/site-language/site-language.component.mjs +0 -113
- package/esm2022/config/proxy/admin/domains/domain-admin.service.mjs +0 -32
- package/esm2022/config/proxy/admin/domains/index.mjs +0 -3
- package/esm2022/config/proxy/admin/domains/models.mjs +0 -2
- package/esm2022/config/proxy/dignite/cms/admin/sites/index.mjs +0 -3
- package/esm2022/config/proxy/dignite/cms/admin/sites/models.mjs +0 -2
- package/esm2022/config/proxy/dignite/cms/admin/sites/site-admin.service.mjs +0 -27
- package/esm2022/config/proxy/dignite/cms/sites/models.mjs +0 -2
- package/esm2022/lib/proxy/admin/dynamic-forms/form-admin.service.mjs +0 -22
- package/esm2022/lib/proxy/admin/dynamic-forms/index.mjs +0 -3
- package/esm2022/lib/proxy/admin/dynamic-forms/models.mjs +0 -2
- package/esm2022/lib/proxy/admin/entries/entry-admin.service.mjs +0 -70
- package/esm2022/lib/proxy/admin/entries/index.mjs +0 -3
- package/esm2022/lib/proxy/admin/entries/models.mjs +0 -2
- package/esm2022/lib/proxy/admin/fields/field-admin.service.mjs +0 -45
- package/esm2022/lib/proxy/admin/fields/field-group-admin.service.mjs +0 -41
- package/esm2022/lib/proxy/admin/fields/index.mjs +0 -4
- package/esm2022/lib/proxy/admin/fields/models.mjs +0 -2
- package/esm2022/lib/proxy/admin/sections/entry-type-admin.service.mjs +0 -41
- package/esm2022/lib/proxy/admin/sections/index.mjs +0 -4
- package/esm2022/lib/proxy/admin/sections/models.mjs +0 -2
- package/esm2022/lib/proxy/admin/sections/section-admin.service.mjs +0 -51
- package/esm2022/lib/proxy/admin/settings/index.mjs +0 -2
- package/esm2022/lib/proxy/admin/settings/site-settings-admin.service.mjs +0 -31
- package/esm2022/lib/proxy/entries/entry-status.enum.mjs +0 -8
- package/esm2022/lib/proxy/entries/index.mjs +0 -2
- package/esm2022/lib/proxy/fields/models.mjs +0 -2
- package/esm2022/lib/proxy/sections/index.mjs +0 -3
- package/esm2022/lib/proxy/sections/models.mjs +0 -2
- package/esm2022/lib/proxy/sections/section-type.enum.mjs +0 -9
- package/esm2022/lib/proxy/settings/models.mjs +0 -2
- package/lib/proxy/admin/settings/index.d.ts +0 -1
- package/lib/proxy/admin/settings/site-settings-admin.service.d.ts +0 -13
- package/lib/proxy/settings/models.d.ts +0 -5
- /package/lib/proxy/{admin → dignite/cms/admin}/dynamic-forms/form-admin.service.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/dynamic-forms/index.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/dynamic-forms/models.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/entries/entry-admin.service.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/entries/index.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/fields/field-admin.service.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/fields/field-group-admin.service.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/fields/index.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/sections/entry-type-admin.service.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/sections/index.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/sections/models.d.ts +0 -0
- /package/lib/proxy/{admin → dignite/cms/admin}/sections/section-admin.service.d.ts +0 -0
- /package/lib/proxy/{entries → dignite/cms/entries}/entry-status.enum.d.ts +0 -0
- /package/lib/proxy/{entries → dignite/cms/entries}/index.d.ts +0 -0
- /package/lib/proxy/{sections → dignite/cms/sections}/index.d.ts +0 -0
- /package/lib/proxy/{sections → dignite/cms/sections}/section-type.enum.d.ts +0 -0
package/lib/cms.module.d.ts
CHANGED
|
@@ -20,18 +20,16 @@ import * as i17 from "./components/dynamic-form/entry/entry-control.component";
|
|
|
20
20
|
import * as i18 from "./components/admin/sections/create-or-edit-sections-modal.component";
|
|
21
21
|
import * as i19 from "@abp/ng.core";
|
|
22
22
|
import * as i20 from "@abp/ng.theme.shared";
|
|
23
|
-
import * as i21 from "
|
|
24
|
-
import * as i22 from "
|
|
25
|
-
import * as i23 from "@ng
|
|
26
|
-
import * as i24 from "
|
|
27
|
-
import * as i25 from "ng-
|
|
28
|
-
import * as i26 from "@
|
|
29
|
-
import * as i27 from "@abp/ng.components/extensible";
|
|
30
|
-
import * as i28 from "@dignite-ng/expand.core";
|
|
23
|
+
import * as i21 from "./cms-routing.module";
|
|
24
|
+
import * as i22 from "@ng-bootstrap/ng-bootstrap";
|
|
25
|
+
import * as i23 from "@abp/ng.components/page";
|
|
26
|
+
import * as i24 from "ng-zorro-antd/select";
|
|
27
|
+
import * as i25 from "@dignite-ng/expand.dynamic-form";
|
|
28
|
+
import * as i26 from "@abp/ng.components/extensible";
|
|
31
29
|
export declare class CmsModule {
|
|
32
30
|
static forChild(options?: any): ModuleWithProviders<CmsModule>;
|
|
33
31
|
static forLazy(options?: any): NgModuleFactory<CmsModule>;
|
|
34
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<CmsModule, never>;
|
|
35
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<CmsModule, [typeof i1.EntriesComponent, typeof i2.FieldsComponent, typeof i3.SectionsComponent, typeof i4.FieldGroupComponent, typeof i5.CreateFieldComponent, typeof i6.EditFieldComponent, typeof i7.CreateOrEditFieldComponent, typeof i8.CreateOrEditComponent, typeof i9.CreateComponent, typeof i10.EditComponent, typeof i11.CreateOrEditEntriesComponent, typeof i12.TableConfigComponent, typeof i13.TableControlComponent, typeof i14.MatrixConfigComponent, typeof i15.MatrixControlComponent, typeof i16.EntryConfigComponent, typeof i17.EntryControlComponent, typeof i18.CreateOrEditSectionsModalComponent], [typeof i19.CoreModule, typeof i20.ThemeSharedModule, typeof i21.
|
|
33
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CmsModule, [typeof i1.EntriesComponent, typeof i2.FieldsComponent, typeof i3.SectionsComponent, typeof i4.FieldGroupComponent, typeof i5.CreateFieldComponent, typeof i6.EditFieldComponent, typeof i7.CreateOrEditFieldComponent, typeof i8.CreateOrEditComponent, typeof i9.CreateComponent, typeof i10.EditComponent, typeof i11.CreateOrEditEntriesComponent, typeof i12.TableConfigComponent, typeof i13.TableControlComponent, typeof i14.MatrixConfigComponent, typeof i15.MatrixControlComponent, typeof i16.EntryConfigComponent, typeof i17.EntryControlComponent, typeof i18.CreateOrEditSectionsModalComponent], [typeof i19.CoreModule, typeof i20.ThemeSharedModule, typeof i21.CmsRoutingModule, typeof i22.NgbNavModule, typeof i22.NgbAccordionModule, typeof i22.NgbDropdownModule, typeof i23.PageModule, typeof i24.NzSelectModule, typeof i25.DynamicFormModule, typeof i25.DynamicFormModule, typeof i26.ExtensibleModule], [typeof i12.TableConfigComponent, typeof i13.TableControlComponent, typeof i14.MatrixConfigComponent, typeof i15.MatrixControlComponent, typeof i16.EntryConfigComponent, typeof i17.EntryControlComponent]>;
|
|
36
34
|
static ɵinj: i0.ɵɵInjectorDeclaration<CmsModule>;
|
|
37
35
|
}
|
|
@@ -4,8 +4,8 @@ import { OnInit } from "@angular/core";
|
|
|
4
4
|
import { FormGroup } from "@angular/forms";
|
|
5
5
|
import { Router } from "@angular/router";
|
|
6
6
|
import { ColumnMode } from "@swimlane/ngx-datatable";
|
|
7
|
-
import { EntryAdminService, EntryDto, GetEntriesInput } from "../../../proxy/admin/entries";
|
|
8
|
-
import { SectionAdminService } from "../../../proxy/admin/sections";
|
|
7
|
+
import { EntryAdminService, EntryDto, GetEntriesInput } from "../../../proxy/dignite/cms/admin/entries";
|
|
8
|
+
import { SectionAdminService } from "../../../proxy/dignite/cms/admin/sections";
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class EntriesComponent implements OnInit {
|
|
11
11
|
private _EntryAdminService;
|
|
@@ -29,7 +29,7 @@ export declare class EntriesComponent implements OnInit {
|
|
|
29
29
|
/**版块下的条目类型列表 */
|
|
30
30
|
entryTypeList: any[any];
|
|
31
31
|
/**状态编码 */
|
|
32
|
-
_entryStatusOptions: ABP.Option<typeof import("../../../proxy/entries").EntryStatus>[];
|
|
32
|
+
_entryStatusOptions: ABP.Option<typeof import("../../../proxy/dignite/cms/entries").EntryStatus>[];
|
|
33
33
|
/**获取页面数据 */
|
|
34
34
|
getPageDate(): Promise<void>;
|
|
35
35
|
/**切换板块 */
|
|
@@ -41,7 +41,7 @@ export declare class EntriesComponent implements OnInit {
|
|
|
41
41
|
/**获取版块下的条目类型 */
|
|
42
42
|
getSectionOfEntryType(): void;
|
|
43
43
|
private config;
|
|
44
|
-
private
|
|
44
|
+
private _RegionalizationService;
|
|
45
45
|
/**获取版块下的语言列表 */
|
|
46
46
|
getSectionLanguagesList(): Promise<unknown>;
|
|
47
47
|
/**站点设置语言 */
|
|
@@ -3,8 +3,8 @@ import { ToasterService } from '@abp/ng.theme.shared';
|
|
|
3
3
|
import { Location } from '@angular/common';
|
|
4
4
|
import { ElementRef } from '@angular/core';
|
|
5
5
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
6
|
-
import { FieldAdminService } from '../../../proxy/admin/fields';
|
|
7
6
|
import { CmsApiService } from '../../../services';
|
|
7
|
+
import { FieldAdminService } from '../../../proxy/dignite/cms/admin/fields';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare class CreateFieldComponent {
|
|
10
10
|
private fb;
|
|
@@ -3,8 +3,8 @@ import { FieldAbstractsService } from '../../../services/field-abstracts.service
|
|
|
3
3
|
import { AbstractControl, FormGroup, ValidationErrors } from '@angular/forms';
|
|
4
4
|
import { CmsApiService } from '../../../services/cms-api.service';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
|
-
import { FieldAdminService } from '../../../proxy/admin/fields';
|
|
7
6
|
import { LocalizationService } from '@abp/ng.core';
|
|
7
|
+
import { FieldAdminService } from '../../../proxy/dignite/cms/admin/fields';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare class CreateOrEditFieldComponent {
|
|
10
10
|
_FieldAbstractsService: FieldAbstractsService;
|
|
@@ -4,8 +4,8 @@ import { Location } from '@angular/common';
|
|
|
4
4
|
import { OnInit, ElementRef } from '@angular/core';
|
|
5
5
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
6
6
|
import { ActivatedRoute } from '@angular/router';
|
|
7
|
-
import { FieldAdminService } from '../../../proxy/admin/fields';
|
|
8
7
|
import { FieldAbstractsService, CmsApiService } from '../../../services';
|
|
8
|
+
import { FieldAdminService } from '../../../proxy/dignite/cms/admin/fields';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class EditFieldComponent implements OnInit {
|
|
11
11
|
private fb;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
2
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
3
|
-
import { FieldGroupAdminService } from '../../../proxy/admin/fields';
|
|
4
3
|
import { ConfirmationService, ToasterService } from '@abp/ng.theme.shared';
|
|
5
4
|
import { FieldAbstractsService } from '../../../services/field-abstracts.service';
|
|
6
5
|
import { LocalizationService } from '@abp/ng.core';
|
|
6
|
+
import { FieldGroupAdminService } from '../../../proxy/dignite/cms/admin/fields';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class FieldGroupComponent implements OnInit {
|
|
9
9
|
private fb;
|
|
@@ -3,7 +3,7 @@ import { ToasterService, ConfirmationService } from "@abp/ng.theme.shared";
|
|
|
3
3
|
import { OnInit } from "@angular/core";
|
|
4
4
|
import { Router } from "@angular/router";
|
|
5
5
|
import { ColumnMode } from "@swimlane/ngx-datatable";
|
|
6
|
-
import { FieldAdminService, FieldDto, GetFieldsInput } from "../../../proxy/admin/fields";
|
|
6
|
+
import { FieldAdminService, FieldDto, GetFieldsInput } from "../../../proxy/dignite/cms/admin/fields";
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class FieldsComponent implements OnInit {
|
|
9
9
|
readonly list: ListService;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
2
|
import { AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';
|
|
3
|
-
import { SectionType } from '../../../proxy/sections';
|
|
4
3
|
import { Observable } from 'rxjs';
|
|
4
|
+
import { SectionType } from '../../../proxy/dignite/cms/sections';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class CreateOrEditSectionsModalComponent {
|
|
7
7
|
private _LocalizationService;
|
|
@@ -3,10 +3,10 @@ import { ToasterService } from '@abp/ng.theme.shared';
|
|
|
3
3
|
import { ElementRef, OnInit } from '@angular/core';
|
|
4
4
|
import { FormGroup, FormArray } from '@angular/forms';
|
|
5
5
|
import { ActivatedRoute } from '@angular/router';
|
|
6
|
-
import { FieldGroupAdminService, FieldAdminService } from '../../../../proxy/admin/fields';
|
|
7
|
-
import { EntryTypeAdminService } from '../../../../proxy/admin/sections';
|
|
8
6
|
import { CmsApiService } from '../../../../services';
|
|
9
7
|
import { Location } from '@angular/common';
|
|
8
|
+
import { FieldAdminService, FieldGroupAdminService } from '../../../../proxy/dignite/cms/admin/fields';
|
|
9
|
+
import { EntryTypeAdminService } from '../../../../proxy/dignite/cms/admin/sections';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export declare class CreateOrEditComponent implements OnInit {
|
|
12
12
|
private toaster;
|
|
@@ -2,10 +2,10 @@ import { ABP, ListService, LocalizationService, PagedResultDto } from '@abp/ng.c
|
|
|
2
2
|
import { OnInit } from '@angular/core';
|
|
3
3
|
import { ToasterService, ConfirmationService } from '@abp/ng.theme.shared';
|
|
4
4
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
5
|
-
import { SectionAdminService, EntryTypeAdminService, GetSectionsInput, SectionDto } from '../../../proxy/admin/sections';
|
|
6
5
|
import { CmsApiService } from '../../../services';
|
|
7
6
|
import { ColumnMode } from '@swimlane/ngx-datatable';
|
|
8
|
-
import {
|
|
7
|
+
import { EntryTypeAdminService, GetSectionsInput, SectionAdminService, SectionDto } from '../../../proxy/dignite/cms/admin/sections';
|
|
8
|
+
import { SectionType } from '../../../proxy/dignite/cms/sections';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class SectionsComponent implements OnInit {
|
|
11
11
|
readonly list: ListService;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AfterContentInit, ElementRef } from '@angular/core';
|
|
2
2
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
3
|
-
import { SectionAdminService } from '../../../proxy/admin/sections';
|
|
3
|
+
import { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class EntryConfigComponent implements AfterContentInit {
|
|
6
6
|
private fb;
|
|
@@ -27,7 +27,8 @@ export declare class EntryConfigComponent implements AfterContentInit {
|
|
|
27
27
|
/**站点下的版块 */
|
|
28
28
|
SiteOfSectionList: any[any];
|
|
29
29
|
ngAfterContentInit(): void;
|
|
30
|
-
|
|
30
|
+
private cdr;
|
|
31
|
+
dataLoaded(): Promise<void>;
|
|
31
32
|
AfterInit(): Promise<unknown>;
|
|
32
33
|
/**获取站点列表 */
|
|
33
34
|
/**获取站点下的版块 */
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RegionalizationDto, UpdateRegionalizationInput } from './models';
|
|
2
|
+
import { RestService, Rest } from '@abp/ng.core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class RegionalizationService {
|
|
5
|
+
private restService;
|
|
6
|
+
apiName: string;
|
|
7
|
+
get: (config?: Partial<Rest.Config>) => import("rxjs").Observable<RegionalizationDto>;
|
|
8
|
+
update: (input: UpdateRegionalizationInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<RegionalizationDto>;
|
|
9
|
+
constructor(restService: RestService);
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RegionalizationService, never>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RegionalizationService>;
|
|
12
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { CustomizableObject } from '
|
|
1
|
+
import type { CustomizableObject } from '../../../abp/data/models';
|
|
2
2
|
import type { ExtensibleAuditedEntityDto, PagedAndSortedResultRequestDto } from '@abp/ng.core';
|
|
3
3
|
import type { EntryStatus } from '../../entries/entry-status.enum';
|
|
4
|
-
import type { CmsUserDto } from '
|
|
4
|
+
import type { CmsUserDto } from '../../../../volo/cms-kit/users/models';
|
|
5
5
|
export interface CreateEntryInput extends CreateOrUpdateEntryInputBase {
|
|
6
6
|
initialVersionId?: string;
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FieldDtoen } from '../../fields/models';
|
|
2
2
|
import type { EntityDto, PagedAndSortedResultRequestDto } from '@abp/ng.core';
|
|
3
3
|
export interface CreateFieldInput extends CreateOrUpdateFieldInputBase {
|
|
4
4
|
}
|
|
@@ -13,7 +13,7 @@ export interface CreateOrUpdateFieldInputBase {
|
|
|
13
13
|
formControlName: string;
|
|
14
14
|
formConfiguration: Record<string, object>;
|
|
15
15
|
}
|
|
16
|
-
export interface FieldDto extends
|
|
16
|
+
export interface FieldDto extends FieldDtoen {
|
|
17
17
|
groupId?: string;
|
|
18
18
|
groupName?: string;
|
|
19
19
|
creationTime?: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FieldDtoen } from '../fields/models';
|
|
2
2
|
export interface EntryFieldDto {
|
|
3
3
|
fieldId?: string;
|
|
4
|
-
field:
|
|
4
|
+
field: FieldDtoen;
|
|
5
5
|
displayName?: string;
|
|
6
6
|
required: boolean;
|
|
7
7
|
showOnList: boolean;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { FieldGroupAdminService } from '../proxy/admin/fields
|
|
2
|
-
import {
|
|
3
|
-
import { FormAdminService } from '../proxy/admin/dynamic-forms';
|
|
1
|
+
import { FieldGroupAdminService, FieldGroupDto } from '../proxy/dignite/cms/admin/fields';
|
|
2
|
+
import { FormAdminService } from '../proxy/dignite/cms/admin/dynamic-forms';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class FieldAbstractsService {
|
|
6
5
|
private _FieldGroupAdminService;
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { AbstractControl, FormGroup, ValidationErrors } from '@angular/forms';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class DomainsComponent implements OnInit {
|
|
6
|
-
private toaster;
|
|
7
|
-
private _DomainAdminService;
|
|
8
|
-
private _LocalizationService;
|
|
9
|
-
private _ValidatorsService;
|
|
10
|
-
/**表单验证状态
|
|
11
|
-
* {
|
|
12
|
-
* title:true,
|
|
13
|
-
* }
|
|
14
|
-
*/
|
|
15
|
-
formValidation: any;
|
|
16
|
-
/**表单实体 */
|
|
17
|
-
newEntity: FormGroup | undefined;
|
|
18
|
-
/**domain详情 */
|
|
19
|
-
domainInfo: any;
|
|
20
|
-
get domainNameInput(): AbstractControl<any, any>;
|
|
21
|
-
ngOnInit(): Promise<void>;
|
|
22
|
-
/**用于获取已绑定的域名 */
|
|
23
|
-
getDomainsBound(): Promise<unknown>;
|
|
24
|
-
repetitionAsyncValidator(): (ctrl: AbstractControl) => Promise<ValidationErrors | null> | Observable<ValidationErrors | null>;
|
|
25
|
-
isSubmit: boolean;
|
|
26
|
-
/**保存 */
|
|
27
|
-
SaveSubmit(): void;
|
|
28
|
-
reset(): void;
|
|
29
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DomainsComponent, never>;
|
|
30
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DomainsComponent, "cms-domains", never, {}, {}, never, never, true, never>;
|
|
31
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import { eCmsRouteNames } from '../../enums';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class SiteLanguageComponent implements OnInit {
|
|
6
|
-
private fb;
|
|
7
|
-
private toaster;
|
|
8
|
-
private _LocalizationService;
|
|
9
|
-
private configState;
|
|
10
|
-
private _SiteAdminService;
|
|
11
|
-
eCmsRouteNames: typeof eCmsRouteNames;
|
|
12
|
-
/**表单实体 */
|
|
13
|
-
newEntity: FormGroup | undefined;
|
|
14
|
-
/**系统语言 */
|
|
15
|
-
languagesSystem: any[];
|
|
16
|
-
ngOnInit(): Promise<void>;
|
|
17
|
-
/**获取配置的默认语言与选中语言 */
|
|
18
|
-
getSiteLanguageSettings(): Promise<unknown>;
|
|
19
|
-
/**语言改变 */
|
|
20
|
-
setLanguagesChange(event: any, item: any): void;
|
|
21
|
-
/**设置默认语言 */
|
|
22
|
-
setDefault(items: any): void;
|
|
23
|
-
/**设置表单中的语言 */
|
|
24
|
-
setFromLangguages(): void;
|
|
25
|
-
isSubmit: boolean;
|
|
26
|
-
/**保存 */
|
|
27
|
-
SaveSubmit(): void;
|
|
28
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SiteLanguageComponent, never>;
|
|
29
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SiteLanguageComponent, "app-site-language", never, {}, {}, never, never, true, never>;
|
|
30
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { DomainDto, UpdateDomainInput } from './models';
|
|
2
|
-
import { RestService, Rest } from '@abp/ng.core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class DomainAdminService {
|
|
5
|
-
private restService;
|
|
6
|
-
apiName: string;
|
|
7
|
-
getBound: (config?: Partial<Rest.Config>) => import("rxjs").Observable<DomainDto>;
|
|
8
|
-
nameExists: (domainName: string, config?: Partial<Rest.Config>) => import("rxjs").Observable<boolean>;
|
|
9
|
-
update: (input: UpdateDomainInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<DomainDto>;
|
|
10
|
-
constructor(restService: RestService);
|
|
11
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DomainAdminService, never>;
|
|
12
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<DomainAdminService>;
|
|
13
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { UpdateSiteInput } from './models';
|
|
2
|
-
import { RestService, Rest } from '@abp/ng.core';
|
|
3
|
-
import type { SiteDto } from '../../sites/models';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class SiteAdminService {
|
|
6
|
-
private restService;
|
|
7
|
-
apiName: string;
|
|
8
|
-
get: (config?: Partial<Rest.Config>) => import("rxjs").Observable<SiteDto>;
|
|
9
|
-
update: (input: UpdateSiteInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<void>;
|
|
10
|
-
constructor(restService: RestService);
|
|
11
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SiteAdminService, never>;
|
|
12
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SiteAdminService>;
|
|
13
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { Component, inject } from '@angular/core';
|
|
2
|
-
import { FormControl, FormGroup, FormsModule, } from '@angular/forms';
|
|
3
|
-
import { finalize } from 'rxjs';
|
|
4
|
-
import { CoreModule, LocalizationService } from '@abp/ng.core';
|
|
5
|
-
import { ThemeSharedModule, ToasterService } from '@abp/ng.theme.shared';
|
|
6
|
-
import { DomainAdminService } from '../../proxy/admin/domains';
|
|
7
|
-
import { ValidatorsService } from '@dignite-ng/expand.core';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/common";
|
|
10
|
-
import * as i2 from "@angular/forms";
|
|
11
|
-
import * as i3 from "@abp/ng.core";
|
|
12
|
-
import * as i4 from "@ngx-validate/core";
|
|
13
|
-
import * as i5 from "@abp/ng.theme.shared";
|
|
14
|
-
// import { ValidatorsService } from '@dignite-ng/expand.core';
|
|
15
|
-
export class DomainsComponent {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.toaster = inject(ToasterService);
|
|
18
|
-
this._DomainAdminService = inject(DomainAdminService);
|
|
19
|
-
this._LocalizationService = inject(LocalizationService);
|
|
20
|
-
this._ValidatorsService = inject(ValidatorsService);
|
|
21
|
-
/**表单验证状态
|
|
22
|
-
* {
|
|
23
|
-
* title:true,
|
|
24
|
-
* }
|
|
25
|
-
*/
|
|
26
|
-
this.formValidation = '';
|
|
27
|
-
/**domain详情 */
|
|
28
|
-
this.domainInfo = '';
|
|
29
|
-
this.isSubmit = false;
|
|
30
|
-
}
|
|
31
|
-
get domainNameInput() {
|
|
32
|
-
return this.newEntity.get('domainName');
|
|
33
|
-
}
|
|
34
|
-
async ngOnInit() {
|
|
35
|
-
//Called after the constructor, initializing input properties, and the first call to ngOnChanges.
|
|
36
|
-
//Add 'implements OnInit' to the class.
|
|
37
|
-
this.newEntity = new FormGroup({
|
|
38
|
-
domainName: new FormControl('', {
|
|
39
|
-
asyncValidators: this.repetitionAsyncValidator(),
|
|
40
|
-
updateOn: 'change',
|
|
41
|
-
}),
|
|
42
|
-
});
|
|
43
|
-
await this.getDomainsBound();
|
|
44
|
-
}
|
|
45
|
-
/**用于获取已绑定的域名 */
|
|
46
|
-
getDomainsBound() {
|
|
47
|
-
return new Promise((resolve, rejects) => {
|
|
48
|
-
this._DomainAdminService.getBound().subscribe(res => {
|
|
49
|
-
this.domainNameInput.patchValue(res?.domainName || '');
|
|
50
|
-
this.domainInfo = res;
|
|
51
|
-
resolve(res);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
//检验域名是否已经绑定
|
|
56
|
-
repetitionAsyncValidator() {
|
|
57
|
-
return (ctrl) => {
|
|
58
|
-
return new Promise(resolve => {
|
|
59
|
-
let domainNameInput = this.domainNameInput.value;
|
|
60
|
-
if (!domainNameInput) {
|
|
61
|
-
resolve(null);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (this.domainInfo?.domainName === domainNameInput) {
|
|
65
|
-
resolve(null);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
var patt = /^(?!-)[A-Za-z0-9-]{1,63}(?<!-)\.[A-Za-z]{2,6}$/;
|
|
69
|
-
if (!patt.test(domainNameInput)) {
|
|
70
|
-
resolve({
|
|
71
|
-
repetition: this._LocalizationService.instant(`AbpValidation::ThisFieldMustMatchTheRegularExpression{0}`, patt.toString()),
|
|
72
|
-
});
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
this._DomainAdminService.nameExists(domainNameInput).subscribe(res => {
|
|
76
|
-
if (res) {
|
|
77
|
-
resolve({
|
|
78
|
-
repetition: this._LocalizationService.instant(`Cms::DomainName{0}AlreadyExist`, ctrl.value),
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
resolve(null);
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
/**保存 */
|
|
89
|
-
SaveSubmit() {
|
|
90
|
-
this.formValidation = this._ValidatorsService.getFormValidationStatus(this.newEntity);
|
|
91
|
-
if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms'))
|
|
92
|
-
return;
|
|
93
|
-
if (this.isSubmit)
|
|
94
|
-
return;
|
|
95
|
-
this.isSubmit = true;
|
|
96
|
-
let input = this.newEntity.value;
|
|
97
|
-
this._DomainAdminService
|
|
98
|
-
.update(input)
|
|
99
|
-
.pipe(finalize(() => {
|
|
100
|
-
this.reset();
|
|
101
|
-
}))
|
|
102
|
-
.subscribe(async (res) => {
|
|
103
|
-
this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));
|
|
104
|
-
await this.getDomainsBound();
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
reset() {
|
|
108
|
-
this.isSubmit = false;
|
|
109
|
-
this.formValidation = '';
|
|
110
|
-
}
|
|
111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: DomainsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: DomainsComponent, isStandalone: true, selector: "cms-domains", ngImport: i0, template: "<form [formGroup]=\"newEntity\" (keydown.enter)=\"$event.preventDefault()\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"SaveSubmit()\">\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{'Cms::Domain'|abpLocalization}}</h2>\n <abp-button buttonClass=\"btn btn-sm btn-primary\" iconClass=\"fa fa-save\" buttonType=\"submit\" [loading]=\"isSubmit\"\n [disabled]=\"isSubmit\">{{'AbpUi::Save'|abpLocalization}}</abp-button>\n </div>\n <hr class=\"my-3\" />\n <div class=\"mb-3\">\n <input type=\"text\" class=\"form-control\" formControlName=\"domainName\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"domainNameInput.errors?.repetition\">\n {{domainNameInput.errors?.repetition}}\n </div>\n <!-- <small class=\"form-text text-muted d-block\">\u6B64\u5904\u586B\u5199\u60A8\u7F51\u7AD9\u7684\u57DF\u540D\uFF0C\u7528\u4E8E\u8DF3\u8F6C\u524D\u53F0\u9875\u9762\u7B49\u64CD\u4F5C</small> -->\n </div>\n <hr class=\"my-3\" />\n</form>", styles: [""], dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }, { kind: "ngmodule", type: ThemeSharedModule }, { kind: "directive", type: i4.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i4.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i5.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
113
|
-
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: DomainsComponent, decorators: [{
|
|
115
|
-
type: Component,
|
|
116
|
-
args: [{ selector: 'cms-domains', standalone: true, imports: [CoreModule, ThemeSharedModule, FormsModule], template: "<form [formGroup]=\"newEntity\" (keydown.enter)=\"$event.preventDefault()\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"SaveSubmit()\">\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{'Cms::Domain'|abpLocalization}}</h2>\n <abp-button buttonClass=\"btn btn-sm btn-primary\" iconClass=\"fa fa-save\" buttonType=\"submit\" [loading]=\"isSubmit\"\n [disabled]=\"isSubmit\">{{'AbpUi::Save'|abpLocalization}}</abp-button>\n </div>\n <hr class=\"my-3\" />\n <div class=\"mb-3\">\n <input type=\"text\" class=\"form-control\" formControlName=\"domainName\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"domainNameInput.errors?.repetition\">\n {{domainNameInput.errors?.repetition}}\n </div>\n <!-- <small class=\"form-text text-muted d-block\">\u6B64\u5904\u586B\u5199\u60A8\u7F51\u7AD9\u7684\u57DF\u540D\uFF0C\u7528\u4E8E\u8DF3\u8F6C\u524D\u53F0\u9875\u9762\u7B49\u64CD\u4F5C</small> -->\n </div>\n <hr class=\"my-3\" />\n</form>" }]
|
|
117
|
-
}] });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWlucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvY29uZmlnL3NyYy9jb21wb25lbnRzL2RvbWFpbnMvZG9tYWlucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvY29uZmlnL3NyYy9jb21wb25lbnRzL2RvbWFpbnMvZG9tYWlucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEdBRVosTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsUUFBUSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBQzVELCtEQUErRDtBQVMvRCxNQUFNLE9BQU8sZ0JBQWdCO0lBUDdCO1FBUVUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqQyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqRCx5QkFBb0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuRCx1QkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2RDs7OztXQUlHO1FBQ0gsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFLekIsY0FBYztRQUNkLGVBQVUs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QUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQzVFLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBRWpDLElBQUksQ0FBQyxtQkFBbUI7YUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNiLElBQUksQ0FDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQTlHVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQix1RUN0QjdCLHFpQ0FnQk8seURESUssVUFBVSxzbkNBQUUsaUJBQWlCLHVpQkFBRSxXQUFXOzsyRkFFekMsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGFBQWEsY0FHWCxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmluYWxpemUsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgRG9tYWluQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJveHkvYWRtaW4vZG9tYWlucyc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzU2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbi8vIGltcG9ydCB7IFZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtZG9tYWlucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb21haW5zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9tYWlucy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgVGhlbWVTaGFyZWRNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9tYWluc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgdG9hc3RlciA9IGluamVjdChUb2FzdGVyU2VydmljZSk7XG4gIHByaXZhdGUgX0RvbWFpbkFkbWluU2VydmljZSA9IGluamVjdChEb21haW5BZG1pblNlcnZpY2UpO1xuICBwcml2YXRlIF9Mb2NhbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIF9WYWxpZGF0b3JzU2VydmljZSA9IGluamVjdChWYWxpZGF0b3JzU2VydmljZSk7XG4gIC8qKuihqOWNlemqjOivgeeKtuaAgVxuICAgKiB7XG4gICAqICB0aXRsZTp0cnVlLFxuICAgKiB9XG4gICAqL1xuICBmb3JtVmFsaWRhdGlvbjogYW55ID0gJyc7XG5cbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIG5ld0VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuXG4gIC8qKmRvbWFpbuivpuaDhSAqL1xuICBkb21haW5JbmZvOiBhbnkgPSAnJztcbiAgZ2V0IGRvbWFpbk5hbWVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZXdFbnRpdHkuZ2V0KCdkb21haW5OYW1lJyk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvL0NhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0b3IsIGluaXRpYWxpemluZyBpbnB1dCBwcm9wZXJ0aWVzLCBhbmQgdGhlIGZpcnN0IGNhbGwgdG8gbmdPbkNoYW5nZXMuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgT25Jbml0JyB0byB0aGUgY2xhc3MuXG4gICAgdGhpcy5uZXdFbnRpdHkgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGRvbWFpbk5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMucmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCksXG4gICAgICAgIHVwZGF0ZU9uOiAnY2hhbmdlJyxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuZ2V0RG9tYWluc0JvdW5kKCk7XG4gIH1cblxuICAvKirnlKjkuo7ojrflj5blt7Lnu5HlrprnmoTln5/lkI0gKi9cbiAgZ2V0RG9tYWluc0JvdW5kKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fRG9tYWluQWRtaW5TZXJ2aWNlLmdldEJvdW5kKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuZG9tYWluTmFtZUlucHV0LnBhdGNoVmFsdWUocmVzPy5kb21haW5OYW1lIHx8ICcnKTtcbiAgICAgICAgdGhpcy5kb21haW5JbmZvID0gcmVzO1xuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8v5qOA6aqM5Z+f5ZCN5piv5ZCm5bey57uP57uR5a6aXG4gIHJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY3RybDogQWJzdHJhY3RDb250cm9sXG4gICAgKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgIGxldCBkb21haW5OYW1lSW5wdXQgPSB0aGlzLmRvbWFpbk5hbWVJbnB1dC52YWx1ZTtcbiAgICAgICAgaWYgKCFkb21haW5OYW1lSW5wdXQpIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kb21haW5JbmZvPy5kb21haW5OYW1lID09PSBkb21haW5OYW1lSW5wdXQpIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGF0dCA9IC9eKD8hLSlbQS1aYS16MC05LV17MSw2M30oPzwhLSlcXC5bQS1aYS16XXsyLDZ9JC87XG4gICAgICAgIGlmICghcGF0dC50ZXN0KGRvbWFpbk5hbWVJbnB1dCkpIHtcbiAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgIHJlcGV0aXRpb246IHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgYEFicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RNYXRjaFRoZVJlZ3VsYXJFeHByZXNzaW9uezB9YCxcbiAgICAgICAgICAgICAgcGF0dC50b1N0cmluZygpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9Eb21haW5BZG1pblNlcnZpY2UubmFtZUV4aXN0cyhkb21haW5OYW1lSW5wdXQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgYENtczo6RG9tYWluTmFtZXswfUFscmVhZHlFeGlzdGAsXG4gICAgICAgICAgICAgICAgY3RybC52YWx1ZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICBpc1N1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKuS/neWtmCAqL1xuICBTYXZlU3VibWl0KCkge1xuICAgIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLm5ld0VudGl0eSk7XG4gICAgaWYgKHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmlzQ2hlY2tGb3JtKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmlzU3VibWl0KSByZXR1cm47XG4gICAgdGhpcy5pc1N1Ym1pdCA9IHRydWU7XG4gICAgbGV0IGlucHV0ID0gdGhpcy5uZXdFbnRpdHkudmFsdWU7XG5cbiAgICB0aGlzLl9Eb21haW5BZG1pblNlcnZpY2VcbiAgICAgIC51cGRhdGUoaW5wdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgcmVzID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0RG9tYWluc0JvdW5kKCk7XG4gICAgICB9KTtcbiAgfVxuICByZXNldCgpIHtcbiAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbiA9ICcnO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIm5ld0VudGl0eVwiIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCJcbiAgICAoc3VibWl0KT1cIlNhdmVTdWJtaXQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgIDxoMj57eydDbXM6OkRvbWFpbid8YWJwTG9jYWxpemF0aW9ufX08L2gyPlxuICAgICAgICA8YWJwLWJ1dHRvbiBidXR0b25DbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBpY29uQ2xhc3M9XCJmYSBmYS1zYXZlXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIFtsb2FkaW5nXT1cImlzU3VibWl0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1N1Ym1pdFwiPnt7J0FicFVpOjpTYXZlJ3xhYnBMb2NhbGl6YXRpb259fTwvYWJwLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8aHIgY2xhc3M9XCJteS0zXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRvbWFpbk5hbWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImRvbWFpbk5hbWVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb25cIj5cbiAgICAgICAgICAgIHt7ZG9tYWluTmFtZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxzbWFsbCBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LW11dGVkIGQtYmxvY2tcIj7mraTlpITloavlhpnmgqjnvZHnq5nnmoTln5/lkI3vvIznlKjkuo7ot7PovazliY3lj7DpobXpnaLnrYnmk43kvZw8L3NtYWxsPiAtLT5cbiAgICA8L2Rpdj5cbiAgICA8aHIgY2xhc3M9XCJteS0zXCIgLz5cbjwvZm9ybT4iXX0=
|