@mediusinc/mng-commons 4.1.0 → 5.0.0-rc.0-c31d5206
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/assets/i18n/en.json +13 -66
- package/assets/i18n/sl.json +12 -67
- package/data-api/README.md +3 -0
- package/data-api/class-dto/README.md +3 -0
- package/data-api/class-dto/helpers/tableview-crud-create.d.ts +40 -0
- package/data-api/class-dto/index.d.ts +7 -0
- package/data-api/class-dto/models/query-result.model.d.ts +13 -0
- package/data-api/class-dto/obsolete/README.md +3 -0
- package/data-api/class-dto/obsolete/helpers/query-param-convert.d.ts +23 -0
- package/data-api/class-dto/obsolete/helpers/tableview-crud-create.d.ts +22 -0
- package/data-api/class-dto/obsolete/index.d.ts +14 -0
- package/data-api/class-dto/obsolete/models/builders/query-param.builder.d.ts +36 -0
- package/{lib/api → data-api/class-dto/obsolete}/models/filter-param.model.d.ts +1 -1
- package/{lib/api → data-api/class-dto/obsolete}/models/query-param.model.d.ts +1 -1
- package/{lib/api → data-api/class-dto/obsolete}/models/query-result.model.d.ts +1 -1
- package/data-api/class-dto/obsolete/provide.d.ts +9 -0
- package/data-api/class-dto/obsolete/services/api.abstract.service.d.ts +36 -0
- package/{lib/api → data-api/class-dto/obsolete}/services/crud-api.abstract.service.d.ts +20 -5
- package/data-api/class-dto/obsolete/services/get-all-api.abstract.service.d.ts +30 -0
- package/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.d.ts +28 -0
- package/data-api/class-dto/obsolete/utils/query-param-map.util.d.ts +22 -0
- package/{lib/api/utils/object-serializer.util.d.ts → data-api/class-dto/serder/object-serializer.d.ts} +1 -1
- package/{lib/api → data-api/class-dto}/services/api.abstract.service.d.ts +2 -4
- package/data-api/class-dto/services/crud-api.abstract.service.d.ts +25 -0
- package/data-api/class-dto/services/get-all-api.abstract.service.d.ts +14 -0
- package/data-api/class-dto/tableview/tableview-crud.data-provider.d.ts +17 -0
- package/data-api/helpers/get-all-params.d.ts +69 -0
- package/data-api/helpers/tableview-get-all-params-create.d.ts +14 -0
- package/data-api/index.d.ts +5 -0
- package/data-api/models/request-params.model.d.ts +61 -0
- package/data-api/rxjs/map-to-data-list.operator.d.ts +9 -0
- package/data-api/types/extract-get-all-params.type.d.ts +14 -0
- package/esm2022/data-api/class-dto/helpers/tableview-crud-create.mjs +40 -0
- package/esm2022/data-api/class-dto/index.mjs +13 -0
- package/esm2022/data-api/class-dto/mediusinc-mng-commons-data-api-class-dto.mjs +5 -0
- package/esm2022/data-api/class-dto/models/query-result.model.mjs +24 -0
- package/esm2022/data-api/class-dto/obsolete/helpers/query-param-convert.mjs +103 -0
- package/esm2022/data-api/class-dto/obsolete/helpers/tableview-crud-create.mjs +21 -0
- package/esm2022/data-api/class-dto/obsolete/index.mjs +21 -0
- package/esm2022/data-api/class-dto/obsolete/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +5 -0
- package/esm2022/data-api/class-dto/obsolete/models/builders/query-param.builder.mjs +83 -0
- package/esm2022/data-api/class-dto/obsolete/models/filter-match-type.model.mjs +27 -0
- package/esm2022/data-api/class-dto/obsolete/models/filter-param.model.mjs +33 -0
- package/esm2022/data-api/class-dto/obsolete/models/query-mode.model.mjs +18 -0
- package/esm2022/data-api/class-dto/obsolete/models/query-param.model.mjs +68 -0
- package/esm2022/data-api/class-dto/obsolete/models/query-result.model.mjs +24 -0
- package/esm2022/data-api/class-dto/obsolete/provide.mjs +40 -0
- package/esm2022/data-api/class-dto/obsolete/services/api.abstract.service.mjs +70 -0
- package/esm2022/data-api/class-dto/obsolete/services/crud-api.abstract.service.mjs +83 -0
- package/esm2022/data-api/class-dto/obsolete/services/get-all-api.abstract.service.mjs +38 -0
- package/esm2022/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.mjs +51 -0
- package/esm2022/data-api/class-dto/obsolete/utils/query-param-map.util.mjs +57 -0
- package/esm2022/data-api/class-dto/serder/object-serializer.mjs +184 -0
- package/esm2022/data-api/class-dto/services/api.abstract.service.mjs +55 -0
- package/esm2022/data-api/class-dto/services/crud-api.abstract.service.mjs +82 -0
- package/esm2022/data-api/class-dto/services/get-all-api.abstract.service.mjs +49 -0
- package/esm2022/data-api/class-dto/tableview/tableview-crud.data-provider.mjs +49 -0
- package/esm2022/data-api/helpers/get-all-params.mjs +180 -0
- package/esm2022/data-api/helpers/tableview-get-all-params-create.mjs +18 -0
- package/esm2022/data-api/index.mjs +10 -0
- package/esm2022/data-api/mediusinc-mng-commons-data-api.mjs +5 -0
- package/esm2022/data-api/models/request-params.model.mjs +2 -0
- package/esm2022/data-api/rxjs/map-to-data-list.operator.mjs +19 -0
- package/esm2022/data-api/types/extract-get-all-params.type.mjs +2 -0
- package/esm2022/index.mjs +3 -6
- package/esm2022/lib/components/action/action.component.mjs +4 -5
- package/esm2022/lib/components/action/editor/injector-context/action-editor-injector-context.component.mjs +2 -2
- package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -4
- package/esm2022/lib/components/action/route/action-route.component.mjs +1 -2
- package/esm2022/lib/components/action/table/action-table.component.mjs +4 -6
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +29 -17
- package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +3 -7
- package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +20 -18
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +2 -2
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +23 -12
- package/esm2022/lib/components/table/column-filter-full/column-filter-full.component.mjs +162 -33
- package/esm2022/lib/components/table/column-value/column-value.component.mjs +3 -3
- package/esm2022/lib/components/table/models/table.event.mjs +1 -1
- package/esm2022/lib/components/table/models/table.interface.mjs +1 -1
- package/esm2022/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.mjs +4 -4
- package/esm2022/lib/components/table/table.component.mjs +117 -191
- package/esm2022/lib/components/tableview/actions/tableview-default-actions.mjs +215 -0
- package/esm2022/lib/components/tableview/builders/tableview-builder.mjs +162 -0
- package/esm2022/lib/components/tableview/helpers/tableview-create.mjs +24 -0
- package/esm2022/lib/components/tableview/index.mjs +5 -2
- package/esm2022/lib/components/tableview/models/tableview.model.mjs +2 -0
- package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +7 -39
- package/esm2022/lib/components/tableview/tableview.component.mjs +4 -4
- package/esm2022/lib/data-providers/editor.data-provider.mjs +13 -13
- package/esm2022/lib/data-providers/index.mjs +1 -2
- package/esm2022/lib/data-providers/lookup.data-provider.mjs +1 -1
- package/esm2022/lib/data-providers/table.data-provider.mjs +4 -5
- package/esm2022/lib/data-providers/tableview.data-provider.mjs +1 -1
- package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +1 -1
- package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +10 -6
- package/esm2022/lib/descriptors/action/action.descriptor.mjs +2 -3
- package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +13 -17
- package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +12 -17
- package/esm2022/lib/descriptors/editor/field.descriptor.mjs +5 -8
- package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +1 -1
- package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +28 -52
- package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +40 -23
- package/esm2022/lib/descriptors/model/enum.descriptor.mjs +31 -0
- package/esm2022/lib/descriptors/model/index.mjs +3 -1
- package/esm2022/lib/descriptors/model/model.descriptor.mjs +10 -1
- package/esm2022/lib/descriptors/model/type.descriptor.mjs +11 -0
- package/esm2022/lib/descriptors/table/column.descriptor.mjs +12 -107
- package/esm2022/lib/descriptors/table/index.mjs +2 -1
- package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +1 -1
- package/esm2022/lib/descriptors/table/internal/table.model.mjs +1 -1
- package/esm2022/lib/descriptors/table/sort.descriptor.mjs +45 -0
- package/esm2022/lib/descriptors/table/table.descriptor.mjs +208 -57
- package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +1 -1
- package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +114 -17
- package/esm2022/lib/descriptors/types/filter.type.mjs +1 -19
- package/esm2022/lib/descriptors/types/table.type.mjs +1 -5
- package/esm2022/lib/error/error.handler.mjs +1 -1
- package/esm2022/lib/helpers/data-provider-executors.mjs +80 -0
- package/esm2022/lib/models/data-list.model.mjs +2 -0
- package/esm2022/lib/models/filter-match.model.mjs +105 -0
- package/esm2022/lib/models/index.mjs +3 -1
- package/esm2022/lib/models/view-container.model.mjs +1 -1
- package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
- package/esm2022/lib/provide.mjs +101 -0
- package/esm2022/lib/registry/type.registry.mjs +3 -10
- package/esm2022/lib/router/models/router.model.mjs +1 -1
- package/esm2022/lib/router/tableview-route-builder.mjs +1 -1
- package/esm2022/lib/services/action/action-executor.service.mjs +54 -32
- package/esm2022/lib/services/commons.service.mjs +1 -37
- package/esm2022/lib/services/data-provider-executor.service.mjs +52 -0
- package/esm2022/lib/services/index.mjs +2 -1
- package/esm2022/lib/services/view/view-container.service.mjs +1 -1
- package/esm2022/lib/types/action-descriptor.types.mjs +1 -1
- package/esm2022/lib/types/type.model.mjs +1 -1
- package/esm2022/lib/utils/data-list-params.util.mjs +416 -0
- package/esm2022/lib/utils/date.util.mjs +8 -2
- package/esm2022/lib/utils/enum.util.mjs +2 -1
- package/esm2022/lib/utils/error.util.mjs +3 -3
- package/esm2022/lib/utils/export.util.mjs +1 -1
- package/esm2022/lib/utils/index.mjs +2 -2
- package/esm2022/lib/utils/route.util.mjs +1 -2
- package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +698 -0
- package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs +480 -0
- package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-data-api.mjs +224 -0
- package/fesm2022/mediusinc-mng-commons-data-api.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons.mjs +2634 -2549
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/index.d.ts +2 -4
- package/lib/components/action/action.component.d.ts +13 -13
- package/lib/components/action/models/action-execution.model.d.ts +47 -46
- package/lib/components/action/table/action-table.component.d.ts +15 -16
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +1 -1
- package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +3 -5
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +10 -10
- package/lib/components/table/column-filter-full/column-filter-full.component.d.ts +25 -9
- package/lib/components/table/models/table.event.d.ts +2 -2
- package/lib/components/table/models/table.interface.d.ts +4 -1
- package/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.d.ts +2 -2
- package/lib/components/table/table.component.d.ts +19 -18
- package/lib/components/tableview/actions/tableview-default-actions.d.ts +36 -0
- package/lib/components/tableview/builders/tableview-builder.d.ts +115 -0
- package/lib/components/tableview/helpers/tableview-create.d.ts +16 -0
- package/lib/components/tableview/index.d.ts +4 -1
- package/lib/components/tableview/models/tableview.model.d.ts +8 -0
- package/lib/components/tableview/route/tableview-route.component.d.ts +5 -14
- package/lib/components/tableview/tableview.component.d.ts +12 -12
- package/lib/data-providers/editor.data-provider.d.ts +12 -12
- package/lib/data-providers/index.d.ts +0 -1
- package/lib/data-providers/lookup.data-provider.d.ts +2 -2
- package/lib/data-providers/table.data-provider.d.ts +25 -25
- package/lib/data-providers/tableview.data-provider.d.ts +18 -18
- package/lib/descriptors/action/action-confirmation.descriptor.d.ts +1 -1
- package/lib/descriptors/action/action-editor.descriptor.d.ts +20 -17
- package/lib/descriptors/editor/editor.descriptor.d.ts +8 -12
- package/lib/descriptors/editor/field-base.descriptor.d.ts +3 -3
- package/lib/descriptors/editor/field-lookup.descriptor.d.ts +11 -11
- package/lib/descriptors/editor/field-many.descriptor.d.ts +4 -4
- package/lib/descriptors/editor/field.descriptor.d.ts +2 -2
- package/lib/descriptors/editor/internal/editor-fields.model.d.ts +6 -5
- package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +15 -14
- package/lib/descriptors/filter/filter.descriptor.d.ts +17 -18
- package/lib/descriptors/model/enum.descriptor.d.ts +14 -0
- package/lib/descriptors/model/index.d.ts +2 -0
- package/lib/descriptors/model/model.descriptor.d.ts +9 -0
- package/lib/descriptors/model/type.descriptor.d.ts +5 -0
- package/lib/descriptors/table/column.descriptor.d.ts +10 -24
- package/lib/descriptors/table/index.d.ts +1 -0
- package/lib/descriptors/table/internal/table-columns.model.d.ts +36 -5
- package/lib/descriptors/table/internal/table.model.d.ts +5 -2
- package/lib/descriptors/table/sort.descriptor.d.ts +17 -0
- package/lib/descriptors/table/table.descriptor.d.ts +57 -33
- package/lib/descriptors/tableview/internal/tableview.model.d.ts +3 -3
- package/lib/descriptors/tableview/tableview.descriptor.d.ts +49 -19
- package/lib/descriptors/types/filter.type.d.ts +0 -17
- package/lib/descriptors/types/table.type.d.ts +0 -3
- package/lib/error/error.handler.d.ts +1 -1
- package/lib/helpers/data-provider-executors.d.ts +19 -0
- package/lib/models/data-list.model.d.ts +27 -0
- package/lib/models/filter-match.model.d.ts +36 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/view-container.model.d.ts +2 -2
- package/lib/pipes/enum.pipe.d.ts +2 -2
- package/lib/provide.d.ts +10 -0
- package/lib/router/models/router.model.d.ts +1 -1
- package/lib/router/tableview-route-builder.d.ts +1 -2
- package/lib/services/action/action-executor.service.d.ts +18 -16
- package/lib/services/data-provider-executor.service.d.ts +60 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/view/view-container.service.d.ts +11 -11
- package/lib/types/action-descriptor.types.d.ts +2 -2
- package/lib/types/type.model.d.ts +1 -3
- package/lib/utils/data-list-params.util.d.ts +84 -0
- package/lib/utils/date.util.d.ts +3 -1
- package/lib/utils/enum.util.d.ts +4 -3
- package/lib/utils/export.util.d.ts +1 -1
- package/lib/utils/index.d.ts +1 -1
- package/openapi/angular/modelEnum.mustache +0 -3
- package/package.json +20 -2
- package/esm2022/lib/api/models/builders/query-param.builder.mjs +0 -59
- package/esm2022/lib/api/models/filter-match-type.model.mjs +0 -27
- package/esm2022/lib/api/models/filter-param.model.mjs +0 -33
- package/esm2022/lib/api/models/index.mjs +0 -7
- package/esm2022/lib/api/models/query-mode.model.mjs +0 -18
- package/esm2022/lib/api/models/query-param.model.mjs +0 -68
- package/esm2022/lib/api/models/query-result.model.mjs +0 -35
- package/esm2022/lib/api/services/api.abstract.service.mjs +0 -58
- package/esm2022/lib/api/services/crud-api.abstract.service.mjs +0 -75
- package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +0 -30
- package/esm2022/lib/api/services/index.mjs +0 -4
- package/esm2022/lib/api/utils/index.mjs +0 -3
- package/esm2022/lib/api/utils/medius-rest.util.mjs +0 -293
- package/esm2022/lib/api/utils/object-serializer.util.mjs +0 -185
- package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +0 -158
- package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +0 -32
- package/esm2022/lib/provide-commons.mjs +0 -88
- package/esm2022/lib/utils/action-data-provider.util.mjs +0 -171
- package/lib/api/models/builders/query-param.builder.d.ts +0 -13
- package/lib/api/models/index.d.ts +0 -6
- package/lib/api/services/get-all-api.abstract.service.d.ts +0 -14
- package/lib/api/services/index.d.ts +0 -3
- package/lib/api/utils/index.d.ts +0 -2
- package/lib/api/utils/medius-rest.util.d.ts +0 -32
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +0 -35
- package/lib/data-providers/tableview-crud.data-provider.d.ts +0 -12
- package/lib/provide-commons.d.ts +0 -3
- package/lib/utils/action-data-provider.util.d.ts +0 -35
- package/templates/tableview-route.component.html +0 -5
- /package/{lib/api → data-api/class-dto/obsolete}/models/filter-match-type.model.d.ts +0 -0
- /package/{lib/api → data-api/class-dto/obsolete}/models/query-mode.model.d.ts +0 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { ActivatedRoute } from '@angular/router';
|
|
2
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
+
import { of, tap } from 'rxjs';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { ActionButtonDescriptor, ActionDeleteDescriptorInst, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorEditDescriptorInst, ActionLinkDescriptor } from '../../../descriptors/action';
|
|
6
|
+
import { ActionPositionEnum } from '../../../descriptors/types';
|
|
7
|
+
import { MngInternalError } from '../../../models';
|
|
8
|
+
import { DataProviderExecutor } from '../../../services';
|
|
9
|
+
import { ButtonStyleRoundedEnum } from '../../../styles';
|
|
10
|
+
import { StyleLevelEnum, StyleSizeEnum } from '../../../styles/models';
|
|
11
|
+
import { DataListParamsUtil, ExportUtils, FileUtil } from '../../../utils';
|
|
12
|
+
import { MngDataLanguageDropdownComponent } from '../../action';
|
|
13
|
+
import { TableviewActionDefaultCategories } from '../../action/models';
|
|
14
|
+
export var TableviewDefaultActionsEnum;
|
|
15
|
+
(function (TableviewDefaultActionsEnum) {
|
|
16
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Details"] = 0] = "Details";
|
|
17
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Add"] = 1] = "Add";
|
|
18
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Edit"] = 2] = "Edit";
|
|
19
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["EditOnDetails"] = 3] = "EditOnDetails";
|
|
20
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Delete"] = 4] = "Delete";
|
|
21
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["DeleteOnDetails"] = 5] = "DeleteOnDetails";
|
|
22
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Refresh"] = 6] = "Refresh";
|
|
23
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Export"] = 7] = "Export";
|
|
24
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["ExportJson"] = 8] = "ExportJson";
|
|
25
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["ExportCsv"] = 9] = "ExportCsv";
|
|
26
|
+
TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["LocalizationLanguageSelect"] = 10] = "LocalizationLanguageSelect";
|
|
27
|
+
})(TableviewDefaultActionsEnum || (TableviewDefaultActionsEnum = {}));
|
|
28
|
+
export class TableviewDefaultActions {
|
|
29
|
+
static { this.DEFAULT_ACTIONS = [
|
|
30
|
+
TableviewDefaultActionsEnum.Details,
|
|
31
|
+
TableviewDefaultActionsEnum.Add,
|
|
32
|
+
TableviewDefaultActionsEnum.Edit,
|
|
33
|
+
TableviewDefaultActionsEnum.EditOnDetails,
|
|
34
|
+
TableviewDefaultActionsEnum.Delete,
|
|
35
|
+
TableviewDefaultActionsEnum.DeleteOnDetails,
|
|
36
|
+
TableviewDefaultActionsEnum.Refresh,
|
|
37
|
+
TableviewDefaultActionsEnum.Export,
|
|
38
|
+
TableviewDefaultActionsEnum.ExportJson,
|
|
39
|
+
TableviewDefaultActionsEnum.ExportCsv,
|
|
40
|
+
TableviewDefaultActionsEnum.LocalizationLanguageSelect
|
|
41
|
+
]; }
|
|
42
|
+
static getDefaultActions() {
|
|
43
|
+
return [...TableviewDefaultActions.DEFAULT_ACTIONS];
|
|
44
|
+
}
|
|
45
|
+
static createActions(tableview, injector, defaultActions, defaultActionsOverrides) {
|
|
46
|
+
return (defaultActions ?? TableviewDefaultActions.getDefaultActions())
|
|
47
|
+
.map(t => TableviewDefaultActions.createAction(t, tableview, injector, defaultActions, defaultActionsOverrides))
|
|
48
|
+
.filter(e => e != null);
|
|
49
|
+
}
|
|
50
|
+
static createAction(type, tableview, injector, defaultActions, defaultActionsOverrides) {
|
|
51
|
+
if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {
|
|
52
|
+
return defaultActionsOverrides[type];
|
|
53
|
+
}
|
|
54
|
+
switch (type) {
|
|
55
|
+
// table row actions
|
|
56
|
+
case TableviewDefaultActionsEnum.Details:
|
|
57
|
+
return TableviewDefaultActions.details(tableview.detailsEditor, injector);
|
|
58
|
+
case TableviewDefaultActionsEnum.Edit:
|
|
59
|
+
return TableviewDefaultActions.edit(tableview.editEditor, injector);
|
|
60
|
+
case TableviewDefaultActionsEnum.Delete:
|
|
61
|
+
return TableviewDefaultActions.delete(tableview.model, injector);
|
|
62
|
+
// table toolbar actions
|
|
63
|
+
case TableviewDefaultActionsEnum.Add:
|
|
64
|
+
return TableviewDefaultActions.add(tableview.addEditor, injector);
|
|
65
|
+
case TableviewDefaultActionsEnum.LocalizationLanguageSelect:
|
|
66
|
+
return TableviewDefaultActions.LocalizationLanguageSelect(tableview);
|
|
67
|
+
case TableviewDefaultActionsEnum.Refresh:
|
|
68
|
+
return TableviewDefaultActions.refresh(tableview.model);
|
|
69
|
+
case TableviewDefaultActionsEnum.Export:
|
|
70
|
+
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)
|
|
71
|
+
? TableviewDefaultActions.export(tableview, injector, defaultActions)
|
|
72
|
+
: null;
|
|
73
|
+
//details actions
|
|
74
|
+
case TableviewDefaultActionsEnum.EditOnDetails:
|
|
75
|
+
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit)
|
|
76
|
+
? TableviewDefaultActions.editOnDetails(tableview.model, TableviewDefaultActions.edit(tableview.editEditor, injector), injector)
|
|
77
|
+
: null;
|
|
78
|
+
case TableviewDefaultActionsEnum.DeleteOnDetails:
|
|
79
|
+
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete)
|
|
80
|
+
? TableviewDefaultActions.deleteOnDetails(tableview.model, injector)
|
|
81
|
+
: null;
|
|
82
|
+
// subactions
|
|
83
|
+
case TableviewDefaultActionsEnum.ExportJson:
|
|
84
|
+
case TableviewDefaultActionsEnum.ExportCsv:
|
|
85
|
+
return null;
|
|
86
|
+
default:
|
|
87
|
+
throw new MngInternalError(`Tableview default action of type ${type} not supported`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
static getRouteData(injector) {
|
|
91
|
+
return injector.get(ActivatedRoute).snapshot.data;
|
|
92
|
+
}
|
|
93
|
+
static details(descriptor, injector) {
|
|
94
|
+
const routeData = TableviewDefaultActions.getRouteData(injector);
|
|
95
|
+
return !routeData.tableviewActions || routeData.tableviewActions.hasDetails ? ActionEditorDetailsDescriptor.create(descriptor) : null;
|
|
96
|
+
}
|
|
97
|
+
static add(descriptor, injector) {
|
|
98
|
+
const routeData = TableviewDefaultActions.getRouteData(injector);
|
|
99
|
+
return !routeData.tableviewActions || routeData.tableviewActions.hasAdd ? ActionEditorAddDescriptor.create(descriptor) : null;
|
|
100
|
+
}
|
|
101
|
+
static edit(descriptor, injector) {
|
|
102
|
+
const routeData = TableviewDefaultActions.getRouteData(injector);
|
|
103
|
+
return !routeData.tableviewActions || routeData.tableviewActions.hasEdit ? ActionEditorEditDescriptor.create(descriptor) : null;
|
|
104
|
+
}
|
|
105
|
+
static editOnDetails(descriptor, editDescriptor, injector) {
|
|
106
|
+
const routeData = TableviewDefaultActions.getRouteData(injector);
|
|
107
|
+
if (routeData.tableviewActions && !routeData.tableviewActions.hasEdit) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
const action = editDescriptor ? ActionLinkDescriptor.fromAction(editDescriptor) : ActionLinkDescriptor.fromModel(descriptor, ActionEditorEditDescriptorInst.ACTION_NAME);
|
|
111
|
+
action
|
|
112
|
+
.withTableviewCategory(TableviewActionDefaultCategories.EDIT)
|
|
113
|
+
.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])
|
|
114
|
+
.withPosition(ActionPositionEnum.FooterLeft)
|
|
115
|
+
.withRouterLink('./edit');
|
|
116
|
+
action.button.styleClass.withActionLevel(StyleLevelEnum.Secondary);
|
|
117
|
+
action.button.styleClass.withSize(StyleSizeEnum.Normal);
|
|
118
|
+
action.button.styleClass.withRoundedButton(ButtonStyleRoundedEnum.DEFAULT);
|
|
119
|
+
action.button.withLabel();
|
|
120
|
+
if (!editDescriptor)
|
|
121
|
+
action.button.withIcon('pi pi-pencil');
|
|
122
|
+
return action;
|
|
123
|
+
}
|
|
124
|
+
static deleteOnDetails(model, injector) {
|
|
125
|
+
const action = this.delete(model, injector);
|
|
126
|
+
const dataProviderExecutor = injector.get(DataProviderExecutor);
|
|
127
|
+
if (action) {
|
|
128
|
+
action
|
|
129
|
+
.withTableviewCategory(TableviewActionDefaultCategories.DELETE)
|
|
130
|
+
.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])
|
|
131
|
+
.withPosition(ActionPositionEnum.FooterLeft)
|
|
132
|
+
.withRunFunction(ctx => dataProviderExecutor.runDeleteOrFail(ctx).pipe(tap(() => {
|
|
133
|
+
ctx.viewContainer?.reloadTable({});
|
|
134
|
+
ctx.viewContainer?.closeEditor();
|
|
135
|
+
})));
|
|
136
|
+
action.button.withLabel(undefined);
|
|
137
|
+
action.button.styleClass.withSize(StyleSizeEnum.Normal);
|
|
138
|
+
return action;
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
static delete(descriptor, injector) {
|
|
143
|
+
const routeData = TableviewDefaultActions.getRouteData(injector);
|
|
144
|
+
return !routeData.tableviewActions || routeData.tableviewActions.hasDelete ? new ActionDeleteDescriptorInst(descriptor) : null;
|
|
145
|
+
}
|
|
146
|
+
static export(descriptor, injector, defaultActions) {
|
|
147
|
+
const exportAction = ActionDescriptor.fromModel(descriptor.model, 'export')
|
|
148
|
+
.withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-download'))
|
|
149
|
+
.withSubactionsAsMenu();
|
|
150
|
+
const subactions = [];
|
|
151
|
+
if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))
|
|
152
|
+
subactions.push(this.exportJson(descriptor, injector));
|
|
153
|
+
if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv))
|
|
154
|
+
subactions.push(this.exportCsv(descriptor, injector));
|
|
155
|
+
exportAction.withSubactions(...subactions);
|
|
156
|
+
return exportAction;
|
|
157
|
+
}
|
|
158
|
+
static exportJson(descriptor, injector) {
|
|
159
|
+
const dataProviderExecutor = injector.get(DataProviderExecutor);
|
|
160
|
+
return ActionDescriptor.fromModel(descriptor.model, 'exportJson')
|
|
161
|
+
.withRunFunction(ctx => {
|
|
162
|
+
const params = ctx.parameters.dataListParams ? DataListParamsUtil.copy(ctx.parameters.dataListParams) : {};
|
|
163
|
+
params.offset = 0;
|
|
164
|
+
params.limit = 500;
|
|
165
|
+
ctx.parameters.withDataListParams(params);
|
|
166
|
+
return dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {
|
|
167
|
+
const blob = new Blob([JSON.stringify(res.data, undefined, 4)], { type: 'application/json;charset=utf-8' });
|
|
168
|
+
const typeName = ctx.instance.action.model?.typeName ?? '';
|
|
169
|
+
FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);
|
|
170
|
+
return undefined;
|
|
171
|
+
}));
|
|
172
|
+
})
|
|
173
|
+
.withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-code'))
|
|
174
|
+
.withPosition(ActionPositionEnum.ToolbarRight);
|
|
175
|
+
}
|
|
176
|
+
static exportCsv(descriptor, injector) {
|
|
177
|
+
const dataProviderExecutor = injector.get(DataProviderExecutor);
|
|
178
|
+
return ActionDescriptor.fromModel(descriptor.model, 'exportCsv')
|
|
179
|
+
.withRunFunction(ctx => {
|
|
180
|
+
const params = ctx.parameters.dataListParams ? DataListParamsUtil.copy(ctx.parameters.dataListParams) : {};
|
|
181
|
+
params.offset = 0;
|
|
182
|
+
params.limit = 500;
|
|
183
|
+
ctx.parameters.withDataListParams(params);
|
|
184
|
+
return dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {
|
|
185
|
+
if (!res.data) {
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
const blob = new Blob([ExportUtils.prepareDataForExport(res.data, ',', descriptor, ctx.injector.get(TranslateService))], { type: 'text/csv;charset=utf-8' });
|
|
189
|
+
const typeName = ctx.instance.action.model?.typeName ?? '';
|
|
190
|
+
FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);
|
|
191
|
+
return undefined;
|
|
192
|
+
}));
|
|
193
|
+
})
|
|
194
|
+
.withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-file'))
|
|
195
|
+
.withPosition(ActionPositionEnum.ToolbarRight);
|
|
196
|
+
}
|
|
197
|
+
static refresh(descriptor) {
|
|
198
|
+
const action = ActionDescriptor.fromModel(descriptor, 'refresh')
|
|
199
|
+
.withPosition(ActionPositionEnum.ToolbarRight)
|
|
200
|
+
.withTableviewCategory(TableviewActionDefaultCategories.READ)
|
|
201
|
+
.withRunNotificationSuccess(undefined, undefined, false)
|
|
202
|
+
.withRunFunction(ctx => {
|
|
203
|
+
ctx.viewContainer?.reloadTable({});
|
|
204
|
+
return of(null);
|
|
205
|
+
});
|
|
206
|
+
action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);
|
|
207
|
+
return action;
|
|
208
|
+
}
|
|
209
|
+
static LocalizationLanguageSelect(descriptor) {
|
|
210
|
+
return descriptor.isLocalized()
|
|
211
|
+
? ActionDescriptor.fromModel(descriptor.model, 'translator').withPosition(ActionPositionEnum.ToolbarLeft).withComponent(MngDataLanguageDropdownComponent)
|
|
212
|
+
: null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvYWN0aW9ucy90YWJsZXZpZXctZGVmYXVsdC1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsRUFBRSxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUNILHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBRWhCLHlCQUF5QixFQUV6Qiw2QkFBNkIsRUFFN0IsMEJBQTBCLEVBQzFCLDhCQUE4QixFQUM5QixvQkFBb0IsRUFFdkIsTUFBTSw2QkFBNkIsQ0FBQztBQUlyQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXJFLE1B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SSxDQUFDO0lBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7b2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IsXG4gICAgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uRGVzY3JpcHRvcixcbiAgICBBY3Rpb25EZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JBZGREZXNjcmlwdG9yLFxuICAgIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0LFxuICAgIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLFxuICAgIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvcixcbiAgICBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uTGlua0Rlc2NyaXB0b3IsXG4gICAgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0XG59IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy9lZGl0b3InO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL21vZGVsJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldyc7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdHlwZXMnO1xuaW1wb3J0IHtNbmdJbnRlcm5hbEVycm9yfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdSb3V0ZXJEYXRhfSBmcm9tICcuLi8uLi8uLi9yb3V0ZXIvbW9kZWxzJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7QnV0dG9uU3R5bGVSb3VuZGVkRW51bX0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzJztcbmltcG9ydCB7U3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW19IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9tb2RlbHMnO1xuaW1wb3J0IHtEYXRhTGlzdFBhcmFtc1V0aWwsIEV4cG9ydFV0aWxzLCBGaWxlVXRpbH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNbmdEYXRhTGFuZ3VhZ2VEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnLi4vLi4vYWN0aW9uJztcbmltcG9ydCB7VGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uLy4uL2FjdGlvbi9tb2RlbHMnO1xuXG5leHBvcnQgZW51bSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0ge1xuICAgIERldGFpbHMsXG4gICAgQWRkLFxuICAgIEVkaXQsXG4gICAgRWRpdE9uRGV0YWlscyxcbiAgICBEZWxldGUsXG4gICAgRGVsZXRlT25EZXRhaWxzLFxuICAgIFJlZnJlc2gsXG4gICAgRXhwb3J0LFxuICAgIEV4cG9ydEpzb24sXG4gICAgRXhwb3J0Q3N2LFxuICAgIExvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucyB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BQ1RJT05TID0gW1xuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlscyxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXQsXG4gICAgICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0T25EZXRhaWxzLFxuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlT25EZXRhaWxzLFxuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaCxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24sXG4gICAgICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YsXG4gICAgICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuICAgIF07XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldERlZmF1bHRBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gWy4uLlRhYmxldmlld0RlZmF1bHRBY3Rpb25zLkRFRkFVTFRfQUNUSU9OU107XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVBY3Rpb25zKFxuICAgICAgICB0YWJsZXZpZXc6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBhbnk+LFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10sXG4gICAgICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj5cbiAgICApOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiB7XG4gICAgICAgIHJldHVybiAoZGVmYXVsdEFjdGlvbnMgPz8gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZ2V0RGVmYXVsdEFjdGlvbnMoKSlcbiAgICAgICAgICAgIC5tYXAodCA9PiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5jcmVhdGVBY3Rpb24odCwgdGFibGV2aWV3LCBpbmplY3RvciwgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzKSlcbiAgICAgICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlQWN0aW9uKFxuICAgICAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgICAgIHRhYmxldmlldzogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXSxcbiAgICAgICAgZGVmYXVsdEFjdGlvbnNPdmVycmlkZXM/OiBSZWNvcmQ8bnVtYmVyLCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PlxuICAgICk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICAgICAgaWYgKGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzICE9IG51bGwgJiYgZGVmYXVsdEFjdGlvbnNPdmVycmlkZXNbdHlwZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzW3R5cGVdO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAvLyB0YWJsZSByb3cgYWN0aW9uc1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZGV0YWlscyh0YWJsZXZpZXcuZGV0YWlsc0VkaXRvciwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZWRpdCh0YWJsZXZpZXcuZWRpdEVkaXRvciwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlOlxuICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5kZWxldGUodGFibGV2aWV3Lm1vZGVsLCBpbmplY3Rvcik7XG4gICAgICAgICAgICAvLyB0YWJsZSB0b29sYmFyIGFjdGlvbnNcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuYWRkKHRhYmxldmlldy5hZGRFZGl0b3IsIGluamVjdG9yKTtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdCh0YWJsZXZpZXcpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMucmVmcmVzaCh0YWJsZXZpZXcubW9kZWwpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0OlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KVxuICAgICAgICAgICAgICAgICAgICA/IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zLmV4cG9ydCh0YWJsZXZpZXcsIGluamVjdG9yLCBkZWZhdWx0QWN0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgLy9kZXRhaWxzIGFjdGlvbnNcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXQpXG4gICAgICAgICAgICAgICAgICAgID8gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZWRpdE9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zLmVkaXQodGFibGV2aWV3LmVkaXRFZGl0b3IsIGluamVjdG9yKSwgaW5qZWN0b3IpXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZU9uRGV0YWlsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKVxuICAgICAgICAgICAgICAgICAgICA/IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zLmRlbGV0ZU9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIGluamVjdG9yKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAvLyBzdWJhY3Rpb25zXG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uOlxuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcihgVGFibGV2aWV3IGRlZmF1bHQgYWN0aW9uIG9mIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRSb3V0ZURhdGEoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpLnNuYXBzaG90LmRhdGEgYXMgTW5nUm91dGVyRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRldGFpbHM8TW9kZWw+KGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPiwgaW5qZWN0b3I6IEluamVjdG9yKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICByZXR1cm4gIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0RldGFpbHMgPyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvci5jcmVhdGUoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkPE1vZGVsPihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbD4sIGluamVjdG9yOiBJbmplY3Rvcik6IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICByZXR1cm4gIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0FkZCA/IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IuY3JlYXRlKGRlc2NyaXB0b3IpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGVkaXQ8TW9kZWw+KGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPiwgaW5qZWN0b3I6IEluamVjdG9yKTogQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICByZXR1cm4gIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQgPyBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvci5jcmVhdGUoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZWRpdE9uRGV0YWlsczxNb2RlbD4oXG4gICAgICAgIGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgICAgIGVkaXREZXNjcmlwdG9yOiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKTogQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICBpZiAocm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMgJiYgIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aW9uID0gZWRpdERlc2NyaXB0b3IgPyBBY3Rpb25MaW5rRGVzY3JpcHRvci5mcm9tQWN0aW9uKGVkaXREZXNjcmlwdG9yKSA6IEFjdGlvbkxpbmtEZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3QuQUNUSU9OX05BTUUpO1xuXG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgICAgIC53aXRoUm91dGVyTGluaygnLi9lZGl0Jyk7XG4gICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcbiAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhSb3VuZGVkQnV0dG9uKEJ1dHRvblN0eWxlUm91bmRlZEVudW0uREVGQVVMVCk7XG4gICAgICAgIGFjdGlvbi5idXR0b24ud2l0aExhYmVsKCk7XG4gICAgICAgIGlmICghZWRpdERlc2NyaXB0b3IpIGFjdGlvbi5idXR0b24ud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuXG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkZWxldGVPbkRldGFpbHM8TW9kZWw+KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBpbmplY3RvcjogSW5qZWN0b3IpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5kZWxldGUobW9kZWwsIGluamVjdG9yKTtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBpbmplY3Rvci5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXJFeGVjdXRvci5ydW5EZWxldGVPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5jbG9zZUVkaXRvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcblxuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGVsZXRlPE1vZGVsPihkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBpbmplY3RvcjogSW5qZWN0b3IpOiBBY3Rpb25EZWxldGVEZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICAgICAgcmV0dXJuICFyb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUgPyBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3QoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXhwb3J0PE1vZGVsPihcbiAgICAgICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW11cbiAgICApOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZXhwb3J0QWN0aW9uID0gQWN0aW9uRGVzY3JpcHRvci5mcm9tTW9kZWwoZGVzY3JpcHRvci5tb2RlbCwgJ2V4cG9ydCcpXG4gICAgICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZG93bmxvYWQnKSlcbiAgICAgICAgICAgIC53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuXG4gICAgICAgIGNvbnN0IHN1YmFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPltdID0gW107XG5cbiAgICAgICAgaWYgKGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pKSBzdWJhY3Rpb25zLnB1c2godGhpcy5leHBvcnRKc29uKGRlc2NyaXB0b3IsIGluamVjdG9yKSk7XG4gICAgICAgIGlmIChkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpKSBzdWJhY3Rpb25zLnB1c2godGhpcy5leHBvcnRDc3YoZGVzY3JpcHRvciwgaW5qZWN0b3IpKTtcblxuICAgICAgICBleHBvcnRBY3Rpb24ud2l0aFN1YmFjdGlvbnMoLi4uc3ViYWN0aW9ucyk7XG4gICAgICAgIHJldHVybiBleHBvcnRBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHBvcnRKc29uPE1vZGVsPihkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sIGluamVjdG9yOiBJbmplY3Rvcik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gaW5qZWN0b3IuZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICAgICAgcmV0dXJuIEFjdGlvbkRlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IubW9kZWwsICdleHBvcnRKc29uJylcbiAgICAgICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IERhdGFMaXN0UGFyYW1zVXRpbC5jb3B5KGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHBhcmFtcy5saW1pdCA9IDUwMDtcbiAgICAgICAgICAgICAgICBjdHgucGFyYW1ldGVycy53aXRoRGF0YUxpc3RQYXJhbXMocGFyYW1zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHJlcy5kYXRhLCB1bmRlZmluZWQsIDQpXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVV0aWwuc2F2ZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uanNvbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1jb2RlJykpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXhwb3J0Q3N2PE1vZGVsPihkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sIGluamVjdG9yOiBJbmplY3Rvcik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gaW5qZWN0b3IuZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICAgICAgcmV0dXJuIEFjdGlvbkRlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IubW9kZWwsICdleHBvcnRDc3YnKVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gRGF0YUxpc3RQYXJhbXNVdGlsLmNvcHkoY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMpIDoge307XG4gICAgICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgICAgIGN0eC5wYXJhbWV0ZXJzLndpdGhEYXRhTGlzdFBhcmFtcyhwYXJhbXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvci5ydW5HZXRBbGxPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtFeHBvcnRVdGlscy5wcmVwYXJlRGF0YUZvckV4cG9ydChyZXMuZGF0YSwgJywnLCBkZXNjcmlwdG9yLCBjdHguaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpKV0sIHt0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gY3R4Lmluc3RhbmNlLmFjdGlvbi5tb2RlbD8udHlwZU5hbWUgPz8gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBGaWxlVXRpbC5zYXZlQXMoYmxvYiwgYCR7dHlwZU5hbWUgPyB0eXBlTmFtZSArICdfJyA6ICcnfSR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5hY3Rpb25OYW1lfS5jc3ZgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZmlsZScpKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlZnJlc2g8TW9kZWw+KGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gQWN0aW9uRGVzY3JpcHRvci5mcm9tTW9kZWwoZGVzY3JpcHRvciwgJ3JlZnJlc2gnKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEKVxuICAgICAgICAgICAgLndpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1yZWZyZXNoJykuc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIExvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0PE1vZGVsPihkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQoKVxuICAgICAgICAgICAgPyBBY3Rpb25EZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLm1vZGVsLCAndHJhbnNsYXRvcicpLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpLndpdGhDb21wb25lbnQoTW5nRGF0YUxhbmd1YWdlRHJvcGRvd25Db21wb25lbnQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { TableviewDefaultActions } from '../actions/tableview-default-actions';
|
|
2
|
+
/**
|
|
3
|
+
* The `TableviewBuilder` class is used to build a tableview configuration.
|
|
4
|
+
* It allows you to set various options such as the descriptor, data provider,
|
|
5
|
+
* default actions, and custom actions for the tableview.
|
|
6
|
+
*
|
|
7
|
+
* @typeparam Model - The main model type.
|
|
8
|
+
* @typeparam Service - The API service type.
|
|
9
|
+
* @typeparam Descriptor - The descriptor type.
|
|
10
|
+
* @typeparam DataProvider - The data provider type.
|
|
11
|
+
* @typeparam Sorts - The sort type representing available sort keys.
|
|
12
|
+
* @typeparam Filters - The filter type representing available filter keys.
|
|
13
|
+
*/
|
|
14
|
+
export class TableviewBuilder {
|
|
15
|
+
constructor(_descriptor, _dataProvider, injector) {
|
|
16
|
+
this._descriptor = _descriptor;
|
|
17
|
+
this._dataProvider = _dataProvider;
|
|
18
|
+
this.injector = injector;
|
|
19
|
+
this.defaultActions = TableviewDefaultActions.getDefaultActions().map(a => ({ type: a, descriptor: undefined }));
|
|
20
|
+
this._customActions = [];
|
|
21
|
+
}
|
|
22
|
+
prepareSetterParams() {
|
|
23
|
+
return { descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sets a descriptor instead of the default one.
|
|
27
|
+
*
|
|
28
|
+
* @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
|
|
29
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
30
|
+
*/
|
|
31
|
+
withDescriptor(fn) {
|
|
32
|
+
this._descriptor = fn(this.prepareSetterParams());
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Adjusts the descriptor using the provided adjust function.
|
|
37
|
+
*
|
|
38
|
+
* @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.
|
|
39
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
40
|
+
*/
|
|
41
|
+
withAdjustDescriptor(adjustFn) {
|
|
42
|
+
adjustFn(this._descriptor);
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Sets the data provider for the TvBuilder instance
|
|
47
|
+
*
|
|
48
|
+
* @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
|
|
49
|
+
* * @returns {this} - Returns the current instance of the builder.
|
|
50
|
+
*/
|
|
51
|
+
withDataProvider(fn) {
|
|
52
|
+
this._dataProvider = fn(this.prepareSetterParams());
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Adjusts the data provider using the provided adjust function.
|
|
57
|
+
*
|
|
58
|
+
* @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.
|
|
59
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
60
|
+
*/
|
|
61
|
+
withAdjustDataProvider(adjustFn) {
|
|
62
|
+
adjustFn(this._dataProvider);
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Adjusts the data provider and/or descriptor using the provided adjust function.
|
|
67
|
+
*
|
|
68
|
+
* @param {(params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
|
|
69
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
70
|
+
*/
|
|
71
|
+
withAdjust(adjustFn) {
|
|
72
|
+
adjustFn(this.prepareSetterParams());
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Removes all the default tableview actions.
|
|
77
|
+
*
|
|
78
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
79
|
+
*/
|
|
80
|
+
withNoDefaultActions() {
|
|
81
|
+
this.defaultActions.forEach(a => (a.descriptor = null));
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Adds the default actions specified in parameters.
|
|
86
|
+
*
|
|
87
|
+
* @param {TableviewDefaultActionsEnum[]} types - The default actions to add.
|
|
88
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
89
|
+
*/
|
|
90
|
+
withDefaultActions(...types) {
|
|
91
|
+
types.forEach(type => {
|
|
92
|
+
const action = this.defaultActions.find(a => a.type === type);
|
|
93
|
+
if (action?.descriptor === null) {
|
|
94
|
+
action.descriptor = undefined;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Removes the default actions specified in parameters.
|
|
101
|
+
*
|
|
102
|
+
* @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.
|
|
103
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
104
|
+
*/
|
|
105
|
+
withoutDefaultActions(...types) {
|
|
106
|
+
types.forEach(type => {
|
|
107
|
+
const action = this.defaultActions.find(a => a.type === type);
|
|
108
|
+
if (action) {
|
|
109
|
+
action.descriptor = null;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Overrides the default action.
|
|
116
|
+
*
|
|
117
|
+
* @param {TableviewDefaultActionsEnum} type - The default actions to override.
|
|
118
|
+
* @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
|
|
119
|
+
* @typeParam ActionService - The service type (same as build `Service` by default).
|
|
120
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
121
|
+
*/
|
|
122
|
+
withDefaultActionOverride(type, fn) {
|
|
123
|
+
const action = this.defaultActions.find(a => a.type === type);
|
|
124
|
+
if (action) {
|
|
125
|
+
action.descriptor = fn(this.prepareSetterParams()) ?? null;
|
|
126
|
+
}
|
|
127
|
+
return this;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Adds a custom action.
|
|
131
|
+
*
|
|
132
|
+
* @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
|
|
133
|
+
* @typeParam ActionService - The service type (same as build `Service` by default).
|
|
134
|
+
* @returns {this} - Returns the current instance of the builder.
|
|
135
|
+
*/
|
|
136
|
+
withAction(fn) {
|
|
137
|
+
const action = fn(this.prepareSetterParams());
|
|
138
|
+
if (action) {
|
|
139
|
+
this._customActions.push(action);
|
|
140
|
+
}
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Builds and returns an instance of ITableview.
|
|
145
|
+
* DO NOT CALL this within tableview create callback function!
|
|
146
|
+
*
|
|
147
|
+
* @return {ITableview<Model, Service, Sorts, Filters, Descriptor, DataProvider>} - The built ITableview instance.
|
|
148
|
+
*/
|
|
149
|
+
build() {
|
|
150
|
+
return {
|
|
151
|
+
actions: TableviewDefaultActions.createActions(this._descriptor, this.injector, this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type), this.defaultActions
|
|
152
|
+
.filter(a => a.descriptor != null)
|
|
153
|
+
.reduce((acc, a) => ({
|
|
154
|
+
...acc,
|
|
155
|
+
[a.type]: a.descriptor
|
|
156
|
+
}), {})).concat(this._customActions),
|
|
157
|
+
dataProvider: this._dataProvider,
|
|
158
|
+
descriptor: this._descriptor
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L2J1aWxkZXJzL3RhYmxldmlldy1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyx1QkFBdUIsRUFBOEIsTUFBTSxzQ0FBc0MsQ0FBQztBQWUxRzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFXekIsWUFDWSxXQUF1QixFQUN2QixhQUEyQixFQUNsQixRQUFrQjtRQUYzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTi9CLG1CQUFjLEdBQW9CLHVCQUF1QixDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNsSCxtQkFBYyxHQUFrQyxFQUFFLENBQUM7SUFNakUsQ0FBQztJQUVJLG1CQUFtQjtRQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsRUFBNkQ7UUFDeEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxRQUEwQztRQUMzRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcs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RUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUN2RSxJQUFJLENBQUMsY0FBYztpQkFDZCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztpQkFDakMsTUFBTSxDQUNILENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDVCxHQUFHLEdBQUc7Z0JBQ04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVc7YUFDMUIsQ0FBQyxFQUN5QyxFQUFFLENBQ2hELENBQ1IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQy9CLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtJRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGV2aWV3JztcbmltcG9ydCB7TnVsbGFibGV9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnMsIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bX0gZnJvbSAnLi4vYWN0aW9ucy90YWJsZXZpZXctZGVmYXVsdC1hY3Rpb25zJztcbmltcG9ydCB7SVRhYmxldmlld30gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiA9IHtkZXNjcmlwdG9yOiBEZXNjcmlwdG9yOyBkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcjsgaW5qZWN0b3I6IEluamVjdG9yfTtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiA9IChcbiAgICBwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuKSA9PiBOdWxsYWJsZTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZT4+O1xuZXhwb3J0IHR5cGUgVHZCdWlsZGVyRGVzY3JpcHRvclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0gKHBhcmFtczogVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KSA9PiBEZXNjcmlwdG9yO1xuZXhwb3J0IHR5cGUgVHZCdWlsZGVyRGF0YVByb3ZpZGVyU2V0dGVyRm5UeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4gPSAocGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pID0+IERhdGFQcm92aWRlcjtcblxudHlwZSBEZWZhdWx0QWN0aW9uID0ge1xuICAgIHR5cGU6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bTtcbiAgICBkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueT4gfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBUaGUgYFRhYmxldmlld0J1aWxkZXJgIGNsYXNzIGlzIHVzZWQgdG8gYnVpbGQgYSB0YWJsZXZpZXcgY29uZmlndXJhdGlvbi5cbiAqIEl0IGFsbG93cyB5b3UgdG8gc2V0IHZhcmlvdXMgb3B0aW9ucyBzdWNoIGFzIHRoZSBkZXNjcmlwdG9yLCBkYXRhIHByb3ZpZGVyLFxuICogZGVmYXVsdCBhY3Rpb25zLCBhbmQgY3VzdG9tIGFjdGlvbnMgZm9yIHRoZSB0YWJsZXZpZXcuXG4gKlxuICogQHR5cGVwYXJhbSBNb2RlbCAtIFRoZSBtYWluIG1vZGVsIHR5cGUuXG4gKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBUaGUgQVBJIHNlcnZpY2UgdHlwZS5cbiAqIEB0eXBlcGFyYW0gRGVzY3JpcHRvciAtIFRoZSBkZXNjcmlwdG9yIHR5cGUuXG4gKiBAdHlwZXBhcmFtIERhdGFQcm92aWRlciAtIFRoZSBkYXRhIHByb3ZpZGVyIHR5cGUuXG4gKiBAdHlwZXBhcmFtIFNvcnRzIC0gVGhlIHNvcnQgdHlwZSByZXByZXNlbnRpbmcgYXZhaWxhYmxlIHNvcnQga2V5cy5cbiAqIEB0eXBlcGFyYW0gRmlsdGVycyAtIFRoZSBmaWx0ZXIgdHlwZSByZXByZXNlbnRpbmcgYXZhaWxhYmxlIGZpbHRlciBrZXlzLlxuICovXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3QnVpbGRlcjxcbiAgICBNb2RlbCxcbiAgICBTZXJ2aWNlLFxuICAgIERlc2NyaXB0b3IgZXh0ZW5kcyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LFxuICAgIERhdGFQcm92aWRlciBleHRlbmRzIElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+LFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsXG4+IHtcbiAgICBwcml2YXRlIGRlZmF1bHRBY3Rpb25zOiBEZWZhdWx0QWN0aW9uW10gPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXREZWZhdWx0QWN0aW9ucygpLm1hcChhID0+ICh7dHlwZTogYSwgZGVzY3JpcHRvcjogdW5kZWZpbmVkfSkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgICAgICAgcHJpdmF0ZSBfZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7fVxuXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2V0dGVyUGFyYW1zKCk6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiB7XG4gICAgICAgIHJldHVybiB7ZGVzY3JpcHRvcjogdGhpcy5fZGVzY3JpcHRvciwgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsIGluamVjdG9yOiB0aGlzLmluamVjdG9yfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgZGVzY3JpcHRvciBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VHZCdWlsZGVyRGVzY3JpcHRvclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBkZXNjcmlwdG9yLiBJdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aERlc2NyaXB0b3IoZm46IFR2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXNjcmlwdG9yID0gZm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGp1c3RzIHRoZSBkZXNjcmlwdG9yIHVzaW5nIHRoZSBwcm92aWRlZCBhZGp1c3QgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSA9PiB2b2lkfSBhZGp1c3RGbiAtIFRoZSBmdW5jdGlvbiB1c2VkIHRvIGFkanVzdCB0aGUgZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgRGVzY3JpcHRvcmAuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWRqdXN0RGVzY3JpcHRvcihhZGp1c3RGbjogKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpID0+IHZvaWQpOiB0aGlzIHtcbiAgICAgICAgYWRqdXN0Rm4odGhpcy5fZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSBUdkJ1aWxkZXIgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VHZCdWlsZGVyRGF0YVByb3ZpZGVyU2V0dGVyRm5UeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGRhdGEgcHJvdmlkZXIuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEYXRhUHJvdmlkZXIoZm46IFR2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRqdXN0cyB0aGUgZGF0YSBwcm92aWRlciB1c2luZyB0aGUgcHJvdmlkZWQgYWRqdXN0IGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXIpID0+IHZvaWR9IGFkanVzdEZuIC0gVGhlIGZ1bmN0aW9uIHVzZWQgdG8gYWRqdXN0IHRoZSBkYXRhIHByb3ZpZGVyLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBEYXRhUHJvdmlkZXJgLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFkanVzdERhdGFQcm92aWRlcihhZGp1c3RGbjogKGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgICAgIGFkanVzdEZuKHRoaXMuX2RhdGFQcm92aWRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkanVzdHMgdGhlIGRhdGEgcHJvdmlkZXIgYW5kL29yIGRlc2NyaXB0b3IgdXNpbmcgdGhlIHByb3ZpZGVkIGFkanVzdCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KHBhcmFtczogVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KSA9PiB2b2lkfSBhZGp1c3RGbiAtIFRoZSBmdW5jdGlvbiB1c2VkIHRvIGFkanVzdCB0aGUgZGF0YSBwcm92aWRlci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhBZGp1c3QoYWRqdXN0Rm46IChwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICBhZGp1c3RGbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHRoZSBkZWZhdWx0IHRhYmxldmlldyBhY3Rpb25zLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoTm9EZWZhdWx0QWN0aW9ucygpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0QWN0aW9ucy5mb3JFYWNoKGEgPT4gKGEuZGVzY3JpcHRvciA9IG51bGwpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZGVmYXVsdCBhY3Rpb25zIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXX0gdHlwZXMgLSBUaGUgZGVmYXVsdCBhY3Rpb25zIHRvIGFkZC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZWZhdWx0QWN0aW9ucyguLi50eXBlczogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10pOiB0aGlzIHtcbiAgICAgICAgdHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnMuZmluZChhID0+IGEudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgICBpZiAoYWN0aW9uPy5kZXNjcmlwdG9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgc3BlY2lmaWVkIGluIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1RhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdfSB0eXBlcyAtIFRoZSBkZWZhdWx0IGFjdGlvbnMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aG91dERlZmF1bHRBY3Rpb25zKC4uLnR5cGVzOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXSk6IHRoaXMge1xuICAgICAgICB0eXBlcy5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9ucy5maW5kKGEgPT4gYS50eXBlID09PSB0eXBlKTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24uZGVzY3JpcHRvciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgYWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW19IHR5cGUgLSBUaGUgZGVmYXVsdCBhY3Rpb25zIHRvIG92ZXJyaWRlLlxuICAgICAqIEBwYXJhbSB7VHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPE1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAdHlwZVBhcmFtIEFjdGlvblNlcnZpY2UgLSBUaGUgc2VydmljZSB0eXBlIChzYW1lIGFzIGJ1aWxkIGBTZXJ2aWNlYCBieSBkZWZhdWx0KS5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZWZhdWx0QWN0aW9uT3ZlcnJpZGU8QWN0aW9uU2VydmljZSA9IFNlcnZpY2U+KHR5cGU6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSwgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zLmZpbmQoYSA9PiBhLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb24uZGVzY3JpcHRvciA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKSA/PyBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbjxBY3Rpb25TZXJ2aWNlID0gU2VydmljZT4oZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBJVGFibGV2aWV3LlxuICAgICAqIERPIE5PVCBDQUxMIHRoaXMgd2l0aGluIHRhYmxldmlldyBjcmVhdGUgY2FsbGJhY2sgZnVuY3Rpb24hXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtJVGFibGV2aWV3PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gLSBUaGUgYnVpbHQgSVRhYmxldmlldyBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBidWlsZCgpIHtcbiAgICAgICAgcmV0dXJuIDxJVGFibGV2aWV3PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPj57XG4gICAgICAgICAgICBhY3Rpb25zOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5jcmVhdGVBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRBY3Rpb25zLmZpbHRlcihhID0+IGEuZGVzY3JpcHRvciAhPT0gbnVsbCkubWFwKGEgPT4gYS50eXBlKSxcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoYSA9PiBhLmRlc2NyaXB0b3IgIT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY2MsIGEpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthLnR5cGVdOiBhLmRlc2NyaXB0b3IhXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxSZWNvcmQ8bnVtYmVyLCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+Pj57fVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLmNvbmNhdCh0aGlzLl9jdXN0b21BY3Rpb25zKSxcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5fZGF0YVByb3ZpZGVyLFxuICAgICAgICAgICAgZGVzY3JpcHRvcjogdGhpcy5fZGVzY3JpcHRvclxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Injector, inject } from '@angular/core';
|
|
2
|
+
import { TableviewDataProvider } from '../../../data-providers';
|
|
3
|
+
import { TableviewDescriptor } from '../../../descriptors/tableview';
|
|
4
|
+
import { TableviewBuilder } from '../builders/tableview-builder';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a tableview with the given model, service.
|
|
7
|
+
*
|
|
8
|
+
* @param {ModelDescriptor<Model>} model - The model descriptor.
|
|
9
|
+
* @param {ServiceClassType<Service>} service - The class type of the service.
|
|
10
|
+
* @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.
|
|
11
|
+
*
|
|
12
|
+
* @returns A tableview instance with descriptor, data provider and actions.
|
|
13
|
+
*/
|
|
14
|
+
export function tableview(model, service, buildFn) {
|
|
15
|
+
const builder = new TableviewBuilder(TableviewDescriptor.fromModel(model), TableviewDataProvider.fromService(service), inject(Injector));
|
|
16
|
+
buildFn?.(builder);
|
|
17
|
+
return builder.build();
|
|
18
|
+
}
|
|
19
|
+
export function tableviewWithSortAndFilter(model, service, sorts, filters, buildFn) {
|
|
20
|
+
const builder = new TableviewBuilder(TableviewDescriptor.fromModel(model), TableviewDataProvider.fromService(service), inject(Injector));
|
|
21
|
+
buildFn?.(builder);
|
|
22
|
+
return builder.build();
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBNEIsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RixPQUFPLEVBQUMsbUJBQW1CLEVBQTBCLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFL0Q7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUNyQixLQUE2QixFQUM3QixPQUFrQyxFQUNsQyxPQUVTO0lBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDaEMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxXQUFXLENBQWlDLE9BQU8sQ0FBQyxFQUMxRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQ25CLENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxLQUE2QixFQUM3QixPQUFrQyxFQUNsQyxLQUE0QixFQUM1QixPQUFnQyxFQUNoQyxPQUVTO0lBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDaEMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxXQUFXLENBQWlDLE9BQU8sQ0FBQyxFQUMxRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQ25CLENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUYWJsZXZpZXdEYXRhUHJvdmlkZXIsIFRhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uLy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvbW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9yLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGV2aWV3JztcbmltcG9ydCB7U2VydmljZUNsYXNzVHlwZX0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtUYWJsZXZpZXdCdWlsZGVyfSBmcm9tICcuLi9idWlsZGVycy90YWJsZXZpZXctYnVpbGRlcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRhYmxldmlldyB3aXRoIHRoZSBnaXZlbiBtb2RlbCwgc2VydmljZS5cbiAqXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IG1vZGVsIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IHNlcnZpY2UgLSBUaGUgY2xhc3MgdHlwZSBvZiB0aGUgc2VydmljZS5cbiAqIEBwYXJhbSB7KGJ1aWxkZXI6IFRhYmxldmlld0J1aWxkZXIpID0+IHZvaWR9IFtidWlsZEZuXSAtIFRoZSBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHRhYmxldmlldyB1c2luZyB0aGUgcHJlcGFyZWQgYnVpbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHRhYmxldmlldyBpbnN0YW5jZSB3aXRoIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIgYW5kIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXc8TW9kZWwsIFNlcnZpY2UsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgc2VydmljZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPixcbiAgICBidWlsZEZuPzogKFxuICAgICAgICBidWlsZGVyOiBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPlxuICAgICkgPT4gdm9pZFxuKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPihcbiAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tTW9kZWwobW9kZWwpLFxuICAgICAgICBUYWJsZXZpZXdEYXRhUHJvdmlkZXIuZnJvbVNlcnZpY2U8U2VydmljZSwgTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihzZXJ2aWNlKSxcbiAgICAgICAgaW5qZWN0KEluamVjdG9yKVxuICAgICk7XG4gICAgYnVpbGRGbj8uKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdXaXRoU29ydEFuZEZpbHRlcjxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIHNlcnZpY2U6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4sXG4gICAgc29ydHM6IFR5cGVEZXNjcmlwdG9yPFNvcnRzPixcbiAgICBmaWx0ZXJzOiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPixcbiAgICBidWlsZEZuPzogKFxuICAgICAgICBidWlsZGVyOiBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPlxuICAgICkgPT4gdm9pZFxuKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPihcbiAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tTW9kZWwobW9kZWwpLFxuICAgICAgICBUYWJsZXZpZXdEYXRhUHJvdmlkZXIuZnJvbVNlcnZpY2U8U2VydmljZSwgTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihzZXJ2aWNlKSxcbiAgICAgICAgaW5qZWN0KEluamVjdG9yKVxuICAgICk7XG4gICAgYnVpbGRGbj8uKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59XG4iXX0=
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
export * from './actions/tableview-default-actions';
|
|
2
|
+
export * from './builders/tableview-builder';
|
|
1
3
|
export * from './tableview.component';
|
|
2
|
-
export * from './route/tableview-route.abstract.component';
|
|
3
4
|
export * from './route/tableview-route.component';
|
|
4
|
-
|
|
5
|
+
export * from './models/tableview.model';
|
|
6
|
+
export * from './helpers/tableview-create';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVycy90YWJsZXZpZXctYnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZS90YWJsZXZpZXctcm91dGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3RhYmxldmlldy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvdGFibGV2aWV3LWNyZWF0ZSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RhYmxldmlldy9tb2RlbHMvdGFibGV2aWV3Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lUYWJsZXZpZXdEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZXZpZXc8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBEZXNjcmlwdG9yID0gVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICBEYXRhUHJvdmlkZXIgPSBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz5cbj4ge1xuICAgIGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7XG4gICAgZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXI7XG4gICAgYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+W107XG59XG4iXX0=
|
|
@@ -1,47 +1,15 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { TableviewDescriptorInst } from '../../../descriptors/tableview';
|
|
3
2
|
import { MngTableviewComponent } from '../tableview.component';
|
|
4
|
-
import { AMngTableviewRouteComponent } from './tableview-route.abstract.component';
|
|
5
3
|
import * as i0 from "@angular/core";
|
|
6
|
-
export class MngTableviewRouteComponent
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return this.descriptorInit;
|
|
10
|
-
}
|
|
11
|
-
if (this.routeData?.tableview?.descriptor) {
|
|
12
|
-
throw Error('Tableview requires a descriptor.');
|
|
13
|
-
}
|
|
14
|
-
return this.routeData.tableview.descriptor;
|
|
15
|
-
}
|
|
16
|
-
createTableviewDataProvider() {
|
|
17
|
-
if (this.dataProviderInit) {
|
|
18
|
-
return this.dataProviderInit;
|
|
19
|
-
}
|
|
20
|
-
if (this.routeData?.tableview?.dataProvider) {
|
|
21
|
-
throw Error('Tableview requires a data provider.');
|
|
22
|
-
}
|
|
23
|
-
return this.routeData.tableview.dataProvider;
|
|
24
|
-
}
|
|
25
|
-
createActionDescriptors() {
|
|
26
|
-
if (this.actionsInit) {
|
|
27
|
-
return this.actionsInit;
|
|
28
|
-
}
|
|
29
|
-
return this.routeData?.tableview?.actions ?? super.createActionDescriptors();
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MngTableviewRouteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: MngTableviewRouteComponent, isStandalone: true, selector: "mng-tableview-route", inputs: { descriptorInit: ["descriptor", "descriptorInit"], dataProviderInit: ["dataProvider", "dataProviderInit"], actionsInit: ["actions", "actionsInit"] }, usesInheritance: true, ngImport: i0, template: "<div class=\"grid\">\n <div class=\"col-12\">\n <mng-tableview [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"> </mng-tableview>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: MngTableviewComponent, selector: "mng-tableview", inputs: ["descriptor", "dataProvider", "actions"] }] }); }
|
|
4
|
+
export class MngTableviewRouteComponent {
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MngTableviewRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: MngTableviewRouteComponent, isStandalone: true, selector: "mng-tableview-route", inputs: { tableview: "tableview" }, ngImport: i0, template: "<mng-tableview [descriptor]=\"tableview.descriptor\" [dataProvider]=\"tableview.dataProvider\" [actions]=\"tableview.actions\"> </mng-tableview>\n", dependencies: [{ kind: "component", type: MngTableviewComponent, selector: "mng-tableview", inputs: ["descriptor", "dataProvider", "actions"] }] }); }
|
|
33
7
|
}
|
|
34
8
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MngTableviewRouteComponent, decorators: [{
|
|
35
9
|
type: Component,
|
|
36
|
-
args: [{ standalone: true, selector: 'mng-tableview-route', imports: [MngTableviewComponent], template: "<
|
|
37
|
-
}], propDecorators: {
|
|
10
|
+
args: [{ standalone: true, selector: 'mng-tableview-route', imports: [MngTableviewComponent], template: "<mng-tableview [descriptor]=\"tableview.descriptor\" [dataProvider]=\"tableview.dataProvider\" [actions]=\"tableview.actions\"> </mng-tableview>\n" }]
|
|
11
|
+
}], propDecorators: { tableview: [{
|
|
38
12
|
type: Input,
|
|
39
|
-
args: [
|
|
40
|
-
}], dataProviderInit: [{
|
|
41
|
-
type: Input,
|
|
42
|
-
args: ['dataProvider']
|
|
43
|
-
}], actionsInit: [{
|
|
44
|
-
type: Input,
|
|
45
|
-
args: ['actions']
|
|
13
|
+
args: [{ required: true }]
|
|
46
14
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQVE3RCxNQUFNLE9BQU8sMEJBQTBCOzhHQUExQiwwQkFBMEI7a0dBQTFCLDBCQUEwQixtSENYdkMsb0pBQ0EsNENET2MscUJBQXFCOzsyRkFHdEIsMEJBQTBCO2tCQU50QyxTQUFTO2lDQUNNLElBQUksWUFDTixxQkFBcUIsV0FDdEIsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFJQSxTQUFTO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7SVRhYmxldmlld30gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy5tb2RlbCc7XG5pbXBvcnQge01uZ1RhYmxldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vdGFibGV2aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdGFibGV2aWV3LXJvdXRlJyxcbiAgICBpbXBvcnRzOiBbTW5nVGFibGV2aWV3Q29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxJdGVtLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBTb3J0cyA9IGtleW9mIEl0ZW0sIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBJdGVtPiB7XG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyB0YWJsZXZpZXchOiBJVGFibGV2aWV3PEl0ZW0sIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPjtcbn1cbiIsIjxtbmctdGFibGV2aWV3IFtkZXNjcmlwdG9yXT1cInRhYmxldmlldy5kZXNjcmlwdG9yXCIgW2RhdGFQcm92aWRlcl09XCJ0YWJsZXZpZXcuZGF0YVByb3ZpZGVyXCIgW2FjdGlvbnNdPVwidGFibGV2aWV3LmFjdGlvbnNcIj4gPC9tbmctdGFibGV2aWV3PlxuIl19
|