@mediusinc/mng-commons 6.2.0-rc.0 → 7.0.0-rc.0
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/core/index.d.ts +1743 -84
- package/fesm2022/mediusinc-mng-commons-core.mjs +104 -87
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +97 -97
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model-class.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api-class.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-Dvenjj9n.mjs +30 -0
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-Dvenjj9n.mjs.map +1 -0
- package/fesm2022/{mediusinc-mng-commons-table-mediusinc-mng-commons-table-8TdW6NCC.mjs → mediusinc-mng-commons-table-mediusinc-mng-commons-table-DFcdSUCN.mjs} +183 -186
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-DFcdSUCN.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +3 -3
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +305 -289
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/filter/index.d.ts +398 -5
- package/form/api/index.d.ts +134 -7
- package/form/index.d.ts +301 -6
- package/index.d.ts +11 -1
- package/model/class/index.d.ts +25 -4
- package/model/index.d.ts +71 -5
- package/package.json +10 -10
- package/table/api/class/index.d.ts +77 -5
- package/table/api/index.d.ts +1161 -14
- package/table/index.d.ts +545 -17
- package/tableview/api/class/index.d.ts +141 -10
- package/tableview/api/index.d.ts +2542 -63
- package/tableview/index.d.ts +1274 -54
- package/version-info.json +5 -5
- package/core/action/action-data.model.d.ts +0 -3
- package/core/action/action-parameters.model.d.ts +0 -44
- package/core/components/notification/notification-wrapper.component.d.ts +0 -14
- package/core/data-list/data-list-params-helpers.d.ts +0 -93
- package/core/data-list/data-list.model.d.ts +0 -28
- package/core/data-list/filter-match.model.d.ts +0 -36
- package/core/data-list/filter-metadata.model.d.ts +0 -20
- package/core/data-providers/base.data-provider.d.ts +0 -17
- package/core/data-providers/lookup.data-provider.d.ts +0 -10
- package/core/descriptors/action.descriptor.d.ts +0 -12
- package/core/descriptors/column.descriptor.d.ts +0 -3
- package/core/descriptors/editor.descriptor.d.ts +0 -11
- package/core/descriptors/enum.descriptor.d.ts +0 -6
- package/core/descriptors/filter.descriptor.d.ts +0 -3
- package/core/descriptors/lookup.descriptor.d.ts +0 -12
- package/core/descriptors/model.descriptor.d.ts +0 -5
- package/core/descriptors/table.descriptor.d.ts +0 -11
- package/core/descriptors/tableview.descriptor.d.ts +0 -11
- package/core/directives/component.directive.d.ts +0 -18
- package/core/directives/rerender.directive.d.ts +0 -9
- package/core/directives/template.directive.d.ts +0 -8
- package/core/enum/enum-helpers.d.ts +0 -54
- package/core/enum/enum.model.d.ts +0 -8
- package/core/error/error-handler.d.ts +0 -6
- package/core/error/error-helpers.d.ts +0 -136
- package/core/error/error.model.d.ts +0 -53
- package/core/helpers/coercion.d.ts +0 -10
- package/core/helpers/date.d.ts +0 -14
- package/core/helpers/notification.d.ts +0 -18
- package/core/helpers/number.d.ts +0 -5
- package/core/helpers/object.d.ts +0 -27
- package/core/helpers/route.d.ts +0 -34
- package/core/helpers/string.d.ts +0 -7
- package/core/helpers/templates.d.ts +0 -3
- package/core/helpers/type-helpers.d.ts +0 -37
- package/core/i18n/i18n-common.d.ts +0 -6
- package/core/i18n/i18n-error.d.ts +0 -3
- package/core/i18n/i18n-type.d.ts +0 -11
- package/core/log/log-publisher-console.service.d.ts +0 -4
- package/core/log/log.model.d.ts +0 -40
- package/core/log/logger.service.d.ts +0 -33
- package/core/models/class-attribute.model.d.ts +0 -6
- package/core/models/class-service.model.d.ts +0 -7
- package/core/models/getter.model.d.ts +0 -2
- package/core/models/i18n.model.d.ts +0 -1
- package/core/models/menu.model.d.ts +0 -42
- package/core/models/user.model.d.ts +0 -8
- package/core/models/version.model.d.ts +0 -31
- package/core/pipes/boolean.pipe.d.ts +0 -7
- package/core/pipes/class-map.pipe.d.ts +0 -7
- package/core/pipes/enum.pipe.d.ts +0 -8
- package/core/pipes/enumerate-async.pipe.d.ts +0 -9
- package/core/pipes/enumerate.pipe.d.ts +0 -16
- package/core/pipes/getter.pipe.d.ts +0 -8
- package/core/pipes/i18n-property.pipe.d.ts +0 -8
- package/core/pipes/json-path.pipe.d.ts +0 -13
- package/core/pipes/parametrize.pipe.d.ts +0 -16
- package/core/pipes/template.pipe.d.ts +0 -8
- package/core/provide.d.ts +0 -13
- package/core/reactivity/effect.d.ts +0 -16
- package/core/reflect/type-enum-decorator.d.ts +0 -2
- package/core/reflect/type-enum-metadata.d.ts +0 -32
- package/core/registry/registry.model.d.ts +0 -8
- package/core/registry/type-registry.d.ts +0 -27
- package/core/router/route-builder.d.ts +0 -187
- package/core/router/router.model.d.ts +0 -13
- package/core/router/routes-builder.d.ts +0 -33
- package/core/rxjs/map-data-list-result-operator.d.ts +0 -9
- package/core/security/permission-helpers.d.ts +0 -3
- package/core/security/permission.guard.d.ts +0 -2
- package/core/security/permission.service.d.ts +0 -25
- package/core/security/permissions.model.d.ts +0 -82
- package/core/services/commons-configuration.service.d.ts +0 -81
- package/core/services/commons-init.service.d.ts +0 -30
- package/core/services/commons-router.service.d.ts +0 -37
- package/core/services/commons-storage.service.d.ts +0 -12
- package/core/services/commons.service.d.ts +0 -47
- package/core/services/providers/commons-init.provider.d.ts +0 -4
- package/core/services/tokens/browser-storage.token.d.ts +0 -2
- package/core/services/tokens/commons-init.token.d.ts +0 -3
- package/core/services/tokens/log-publisher.token.d.ts +0 -3
- package/core/services/tokens/module-config.token.d.ts +0 -28
- package/core/styles/style-constants.d.ts +0 -11
- package/core/styles/style.model.d.ts +0 -18
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-CCyGSxaD.mjs +0 -30
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-CCyGSxaD.mjs.map +0 -1
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-8TdW6NCC.mjs.map +0 -1
- package/filter/descriptors/filter-generic.descriptor.d.ts +0 -14
- package/filter/descriptors/filter-lookup.descriptor.d.ts +0 -97
- package/filter/descriptors/filter.descriptor.d.ts +0 -264
- package/filter/models/filter-generic-property.model.d.ts +0 -7
- package/filter/models/filter.model.d.ts +0 -16
- package/form/api/data-providers/lookup-data-provider.factory.d.ts +0 -19
- package/form/api/data-providers/lookup.data-provider.d.ts +0 -7
- package/form/api/descriptors/action-button.descriptor.d.ts +0 -23
- package/form/api/descriptors/button-style.builder.d.ts +0 -54
- package/form/api/models/button.model.d.ts +0 -19
- package/form/api/models/empty-value.model.d.ts +0 -7
- package/form/api/models/trim.model.d.ts +0 -1
- package/form/components/autocomplete/autocomplete.component.d.ts +0 -99
- package/form/components/date-range/date-range.component.d.ts +0 -37
- package/form/components/dropdown/dropdown.component.d.ts +0 -89
- package/form/components/number-range/number-range.component.d.ts +0 -35
- package/form/directives/input-empty-value.directive.d.ts +0 -40
- package/form/directives/input-trim.directive.d.ts +0 -9
- package/model/class/data-providers/base-from-class-data-provider.factory.d.ts +0 -3
- package/model/class/descriptors/model-class.descriptor.d.ts +0 -12
- package/model/class/descriptors/type-class.descriptor.d.ts +0 -3
- package/model/class/helpers/model.d.ts +0 -4
- package/model/data-providers/base-from-type-data-provider.factory.d.ts +0 -15
- package/model/descriptors/enum.descriptor.d.ts +0 -13
- package/model/descriptors/model.descriptor.d.ts +0 -25
- package/model/descriptors/type.descriptor.d.ts +0 -3
- package/model/helpers/i18n.d.ts +0 -13
- package/provide.d.ts +0 -7
- package/table/api/class/class-table-attribute-converter.d.ts +0 -15
- package/table/api/class/class-table-attribute.model.d.ts +0 -8
- package/table/api/class/class-table-data-provider.factory.d.ts +0 -4
- package/table/api/class/class-table-descriptor-helpers.d.ts +0 -42
- package/table/api/class/class-table-descriptor.factory.d.ts +0 -11
- package/table/api/data-providers/table-data-provider.factory.d.ts +0 -19
- package/table/api/data-providers/table.data-provider.d.ts +0 -27
- package/table/api/descriptors/column.descriptor.d.ts +0 -269
- package/table/api/descriptors/sort.descriptor.d.ts +0 -39
- package/table/api/descriptors/table-descriptor.factory.d.ts +0 -12
- package/table/api/descriptors/table.descriptor.d.ts +0 -672
- package/table/api/helpers/column-converter.d.ts +0 -7
- package/table/api/helpers/table-data-provider-descriptor-convert.d.ts +0 -20
- package/table/api/models/column-value.model.d.ts +0 -7
- package/table/api/models/column.model.d.ts +0 -18
- package/table/api/models/row-expandable-component.model.d.ts +0 -4
- package/table/api/models/table-columns.model.d.ts +0 -42
- package/table/api/models/table-event.model.d.ts +0 -18
- package/table/api/models/table.model.d.ts +0 -22
- package/table/components/column-filter/column-filter.component.d.ts +0 -81
- package/table/components/column-toggle/column-toggle.component.d.ts +0 -12
- package/table/components/column-value/column-value.component.d.ts +0 -33
- package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +0 -20
- package/table/components/filter/filter-form/filter-form.component.d.ts +0 -56
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +0 -54
- package/table/components/table/table.component.d.ts +0 -83
- package/table/helpers/filters.d.ts +0 -37
- package/table/helpers/notification.d.ts +0 -13
- package/table/helpers/table-layout-prefs.d.ts +0 -7
- package/table/helpers/table.d.ts +0 -6
- package/table/models/column-preferences.model.d.ts +0 -12
- package/table/models/filter.model.d.ts +0 -36
- package/table/pipes/filter-value.pipe.d.ts +0 -19
- package/table/pipes/locale-default-row-class.pipe.d.ts +0 -10
- package/table/pipes/table-column-filter-class.pipe.d.ts +0 -8
- package/table/provide.d.ts +0 -15
- package/table/services/table-data.service.d.ts +0 -37
- package/table/services/table-feature-config.token.d.ts +0 -7
- package/table/services/table-metadata.service.d.ts +0 -31
- package/table/services/table-preferences.service.d.ts +0 -25
- package/tableview/action/components/action/action.component.d.ts +0 -63
- package/tableview/action/components/editor/action-editor.component.d.ts +0 -32
- package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +0 -79
- package/tableview/action/components/localization/data-language-dropdown.component.d.ts +0 -19
- package/tableview/action/components/route/action-route.component.d.ts +0 -26
- package/tableview/action/components/table/action-table.component.d.ts +0 -50
- package/tableview/action/guards/unsaved-changes.guard.d.ts +0 -3
- package/tableview/action/helpers/action-execution.d.ts +0 -7
- package/tableview/action/helpers/i18n.d.ts +0 -47
- package/tableview/action/helpers/inject.d.ts +0 -39
- package/tableview/action/helpers/notification.d.ts +0 -40
- package/tableview/action/helpers/styles.d.ts +0 -5
- package/tableview/action/models/action-editor-dialog-data.model.d.ts +0 -11
- package/tableview/action/models/can-component-deactivate.model.d.ts +0 -4
- package/tableview/action/models/execution/action-context.model.d.ts +0 -43
- package/tableview/action/models/execution/action-instance.model.d.ts +0 -56
- package/tableview/action/services/action-error-mapper.service.d.ts +0 -18
- package/tableview/action/services/action-executor.service.d.ts +0 -174
- package/tableview/action/services/component-action-executor.service.d.ts +0 -9
- package/tableview/action/services/data-provider-executor.service.d.ts +0 -23
- package/tableview/action/services/navigation.service.d.ts +0 -15
- package/tableview/action/services/providers/provide-action-executor.d.ts +0 -2
- package/tableview/action/services/providers/provide-view-container.d.ts +0 -2
- package/tableview/action/services/root-action-executor.service.d.ts +0 -9
- package/tableview/action/services/tokens/action-editor.token.d.ts +0 -2
- package/tableview/action/services/view-container.service.d.ts +0 -25
- package/tableview/api/action/descriptors/action-descriptor.factory.d.ts +0 -25
- package/tableview/api/action/descriptors/action-editor-descriptor.factory.d.ts +0 -24
- package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +0 -105
- package/tableview/api/action/descriptors/action-link-descriptor.factory.d.ts +0 -23
- package/tableview/api/action/descriptors/action-link.descriptor.d.ts +0 -27
- package/tableview/api/action/descriptors/action.descriptor.d.ts +0 -118
- package/tableview/api/action/descriptors/editor-action-descriptor.factory.d.ts +0 -21
- package/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.d.ts +0 -21
- package/tableview/api/action/descriptors/table-action-descriptor.factory.d.ts +0 -36
- package/tableview/api/action/descriptors/table-action-editor-descriptor.factory.d.ts +0 -40
- package/tableview/api/action/helpers/data-provider-executors.d.ts +0 -23
- package/tableview/api/action/models/action-component.model.d.ts +0 -12
- package/tableview/api/action/models/action-confirmation.model.d.ts +0 -16
- package/tableview/api/action/models/action-descriptor.types.d.ts +0 -10
- package/tableview/api/action/models/action-editor.model.d.ts +0 -4
- package/tableview/api/action/models/action-error.model.d.ts +0 -14
- package/tableview/api/action/models/action.type.d.ts +0 -21
- package/tableview/api/action/models/execution/action-context-validation.model.d.ts +0 -11
- package/tableview/api/action/models/execution/action-context.model.d.ts +0 -25
- package/tableview/api/action/models/execution/action-execution-error.model.d.ts +0 -4
- package/tableview/api/action/models/execution/action-instance-state.model.d.ts +0 -30
- package/tableview/api/action/models/execution/action-instance.model.d.ts +0 -32
- package/tableview/api/action/models/execution/view-container.model.d.ts +0 -22
- package/tableview/api/action/models/tableview-action-default-categories.model.d.ts +0 -10
- package/tableview/api/action/services/data-provider-executor.service.d.ts +0 -39
- package/tableview/api/action/services/tokens/data-language-dropdown.token.d.ts +0 -2
- package/tableview/api/class/editor/class-editor-attribute-converter.d.ts +0 -21
- package/tableview/api/class/editor/class-editor-attribute.model.d.ts +0 -7
- package/tableview/api/class/editor/class-editor-data-provider.factory.d.ts +0 -4
- package/tableview/api/class/editor/class-editor-descriptor-helpers.d.ts +0 -40
- package/tableview/api/class/editor/class-editor-descriptor.factory.d.ts +0 -11
- package/tableview/api/class/tableview/class-tableview-attribute-converter.d.ts +0 -8
- package/tableview/api/class/tableview/class-tableview-attribute.model.d.ts +0 -3
- package/tableview/api/class/tableview/class-tableview-data-provider.factory.d.ts +0 -4
- package/tableview/api/class/tableview/class-tableview-descriptor-helpers.d.ts +0 -41
- package/tableview/api/class/tableview/class-tableview-descriptor.factory.d.ts +0 -12
- package/tableview/api/editor/data-providers/editor-data-provider.factory.d.ts +0 -19
- package/tableview/api/editor/data-providers/editor.data-provider.d.ts +0 -119
- package/tableview/api/editor/descriptors/editor-descriptor.factory.d.ts +0 -11
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +0 -254
- package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +0 -21
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +0 -147
- package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +0 -58
- package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +0 -80
- package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +0 -56
- package/tableview/api/editor/descriptors/field-validation.descriptor.d.ts +0 -16
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +0 -239
- package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +0 -25
- package/tableview/api/editor/models/editor-fields.model.d.ts +0 -42
- package/tableview/api/editor/models/editor.model.d.ts +0 -7
- package/tableview/api/editor/models/field-action-context.model.d.ts +0 -26
- package/tableview/api/editor/models/field-image-preview.model.d.ts +0 -4
- package/tableview/api/editor/models/field-validation.model.d.ts +0 -26
- package/tableview/api/editor/models/field.model.d.ts +0 -56
- package/tableview/api/editor/models/form-editor.event.d.ts +0 -74
- package/tableview/api/editor/models/form-editor.interface.d.ts +0 -53
- package/tableview/api/editor/models/formly-custom-field.model.d.ts +0 -30
- package/tableview/api/editor/models/formly-field.model.d.ts +0 -42
- package/tableview/api/editor/models/formly-options.model.d.ts +0 -15
- package/tableview/api/editor/models/radio.model.d.ts +0 -6
- package/tableview/api/tableview/data-providers/tableview-data-provider.factory.d.ts +0 -24
- package/tableview/api/tableview/data-providers/tableview.data-provider.d.ts +0 -33
- package/tableview/api/tableview/descriptors/tableview-descriptor.factory.d.ts +0 -23
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +0 -153
- package/tableview/api/tableview/helpers/files-export.d.ts +0 -4
- package/tableview/api/tableview/helpers/tableview-create.d.ts +0 -29
- package/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.d.ts +0 -20
- package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +0 -93
- package/tableview/api/tableview/helpers/tableview-input-builder.d.ts +0 -192
- package/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.d.ts +0 -9
- package/tableview/api/tableview/models/tableview-descriptor-helper.type.d.ts +0 -2
- package/tableview/api/tableview/models/tableview-input.model.d.ts +0 -8
- package/tableview/api/tableview/models/tableview-route.model.d.ts +0 -20
- package/tableview/editor/components/editor/auto-save-status/auto-save-status.component.d.ts +0 -10
- package/tableview/editor/components/editor/form-editor.component.d.ts +0 -117
- package/tableview/editor/components/formly/constants.d.ts +0 -1
- package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +0 -15
- package/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +0 -11
- package/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +0 -10
- package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +0 -24
- package/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +0 -10
- package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +0 -12
- package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +0 -33
- package/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.d.ts +0 -10
- package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -36
- package/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -22
- package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +0 -37
- package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +0 -10
- package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +0 -11
- package/tableview/editor/components/formly/fields/formly-group-type.abstract.component.d.ts +0 -7
- package/tableview/editor/components/formly/fields/formly-type.abstract.component.d.ts +0 -20
- package/tableview/editor/components/formly/pipes/formly-field-label.pipe.d.ts +0 -8
- package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +0 -18
- package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +0 -16
- package/tableview/editor/helpers/editor-autosave.d.ts +0 -17
- package/tableview/editor/helpers/editor-field.d.ts +0 -2
- package/tableview/editor/helpers/editor-formly.d.ts +0 -11
- package/tableview/editor/helpers/editor-validators.d.ts +0 -7
- package/tableview/editor/helpers/field-create.d.ts +0 -9
- package/tableview/editor/helpers/formly-config.d.ts +0 -18
- package/tableview/editor/helpers/notification.d.ts +0 -4
- package/tableview/editor/models/editor-auto-save-preview.model.d.ts +0 -10
- package/tableview/editor/models/formly-config.model.d.ts +0 -14
- package/tableview/editor/models/formly.model.d.ts +0 -23
- package/tableview/editor/services/form-editor.service.d.ts +0 -39
- package/tableview/editor/services/formly-config.provider.d.ts +0 -5
- package/tableview/provide.d.ts +0 -15
- package/tableview/tableview/components/route/tableview-route.component.d.ts +0 -7
- package/tableview/tableview/components/tableview/tableview.component.d.ts +0 -29
- package/tableview/tableview/router/tableview-route-builder.d.ts +0 -43
- package/tableview/tableview/services/tableview-feature-config.token.d.ts +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-tableview-api.mjs","sources":["../../tableview/api/src/action/models/action.type.ts","../../tableview/api/src/action/descriptors/action.descriptor.ts","../../tableview/api/src/action/descriptors/action-descriptor.factory.ts","../../tableview/api/src/editor/data-providers/editor.data-provider.ts","../../tableview/api/src/action/descriptors/action-editor.descriptor.ts","../../tableview/api/src/action/descriptors/action-editor-descriptor.factory.ts","../../tableview/api/src/action/descriptors/action-link.descriptor.ts","../../tableview/api/src/action/descriptors/action-link-descriptor.factory.ts","../../tableview/api/src/action/descriptors/editor-action-descriptor.factory.ts","../../tableview/api/src/action/descriptors/editor-action-editor-descriptor.factory.ts","../../tableview/api/src/action/descriptors/table-action-descriptor.factory.ts","../../tableview/api/src/action/descriptors/table-action-editor-descriptor.factory.ts","../../tableview/api/src/action/models/action-error.model.ts","../../tableview/api/src/action/helpers/data-provider-executors.ts","../../tableview/api/src/action/models/execution/action-instance-state.model.ts","../../tableview/api/src/action/models/tableview-action-default-categories.model.ts","../../tableview/api/src/action/services/tokens/data-language-dropdown.token.ts","../../tableview/api/src/action/services/data-provider-executor.service.ts","../../tableview/api/src/editor/data-providers/editor-data-provider.factory.ts","../../tableview/api/src/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.ts","../../tableview/api/src/editor/models/editor.model.ts","../../tableview/api/src/editor/models/field.model.ts","../../tableview/api/src/editor/descriptors/field-validation.descriptor.ts","../../tableview/api/src/editor/descriptors/field-base.descriptor.ts","../../tableview/api/src/editor/descriptors/field-action.descriptor.ts","../../tableview/api/src/editor/descriptors/field-group.descriptor.ts","../../tableview/api/src/editor/descriptors/field-lookup.descriptor.ts","../../tableview/api/src/editor/descriptors/field-many.descriptor.ts","../../tableview/api/src/editor/descriptors/field.descriptor.ts","../../tableview/api/src/editor/descriptors/editor.descriptor.ts","../../tableview/api/src/editor/descriptors/editor-descriptor.factory.ts","../../tableview/api/src/editor/models/form-editor.event.ts","../../tableview/api/src/editor/models/formly-custom-field.model.ts","../../tableview/api/src/tableview/data-providers/tableview.data-provider.ts","../../tableview/api/src/tableview/data-providers/tableview-data-provider.factory.ts","../../tableview/api/src/tableview/descriptors/tableview.descriptor.ts","../../tableview/api/src/tableview/descriptors/tableview-descriptor.factory.ts","../../tableview/api/src/tableview/helpers/files-export.ts","../../tableview/api/src/tableview/helpers/tableview-default-actions.ts","../../tableview/api/src/tableview/helpers/tableview-input-builder.ts","../../tableview/api/src/tableview/helpers/tableview-create.ts","../../tableview/api/src/tableview/helpers/tableview-data-provider-descriptor-convert.ts","../../tableview/api/src/index.ts","../../tableview/api/src/mediusinc-mng-commons-tableview-api.ts"],"sourcesContent":["export enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick,\n FooterLeft,\n FooterRight\n}\n\nexport enum ActionActivationTriggerEnum {\n OnClick, // action is triggered for activation on click\n OnRoute // action is triggered for activation by route url\n}\n\nexport enum ActionTypeEnum {\n Direct, // action is directly activated and executed\n Editor // editor providing middle step for activation\n}\n\nexport enum ActionEditorSubmitTypeEnum {\n Submit,\n Cancel\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nimport {of} from 'rxjs';\n\nimport {\n APermissions,\n ClassType,\n CommonsInternalError,\n DataProviderInst,\n IActionDescriptor,\n IDataProvider,\n LoggerService,\n ServiceClassType,\n StyleLevelEnum,\n findReflectTypeName\n} from '@mediusinc/mng-commons/core';\nimport {IActionButtonDescriptor} from '@mediusinc/mng-commons/form/api';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {IActionComponent} from '../models/action-component.model';\nimport {ActionConfirmation} from '../models/action-confirmation.model';\nimport {ActionNotificationType, ActionRunFnType, ActionValidationFnType} from '../models/action-descriptor.types';\nimport {ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum} from '../models/action.type';\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport type ActionDescriptorCreateOptsProviderType<Item, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IDataProvider<Item, Service>;\n};\n\nexport type ActionDescriptorCreateOptsParentType = {\n parentModel?: ModelDescriptor<any>;\n parentProperty?: string;\n};\n\nexport type ActionDescriptorConstructorOptsType<Item, Service> = ActionDescriptorCreateOptsParentType &\n ActionDescriptorCreateOptsProviderType<Item, Service> & {\n model?: ModelDescriptor<Item>;\n };\n\ntype AfterRunActionType<RunReturnItem> = ActionDescriptorInst<any, any, RunReturnItem, any, undefined>;\ntype OnErrorActionType<RunInputItem> = ActionDescriptorInst<any, any, RunInputItem, any, undefined>;\n\nexport class ActionDescriptorInst<Item, Service = any, RunInputItem = Item, RunReturnItem = Item, ValidationInputItem = RunInputItem> implements IActionDescriptor<Item, Service> {\n protected readonly _model?: ModelDescriptor<Item>;\n protected readonly _actionName: string;\n protected readonly _actionNameLong: string;\n protected readonly _parentModel?: ModelDescriptor<any>;\n protected readonly _parentProperty?: string;\n\n protected readonly _dataProvider?: IDataProvider<Item, Service>;\n\n protected _i18nModelActionBaseKey?: string;\n\n protected _type: ActionTypeEnum = ActionTypeEnum.Direct;\n protected _activationTrigger: ActionActivationTriggerEnum = ActionActivationTriggerEnum.OnClick;\n protected _position: ActionPositionEnum = ActionPositionEnum.ToolbarRight;\n protected _level: StyleLevelEnum = StyleLevelEnum.Default;\n private _positionTableviewCategories?: string[];\n protected _tableviewCategory?: string;\n\n protected _routeUrl: string | null = null;\n\n protected _runFunction?: ActionRunFnType<Item, Service, RunInputItem, RunReturnItem>;\n protected _isVisibleFunction?: ActionValidationFnType<ValidationInputItem, Service>;\n protected _isEnabledFunction?: ActionValidationFnType<ValidationInputItem, Service>;\n\n protected _runConfirmation?: ActionConfirmation<Item, RunInputItem, Service>;\n\n protected _runNotificationOnSuccess?: ActionNotificationType | boolean;\n protected _runNotificationOnError?: ActionNotificationType | boolean;\n\n protected _afterRunAction?: AfterRunActionType<RunReturnItem> | ((ctx: IActionContext<Item, RunInputItem, any, any>) => AfterRunActionType<RunReturnItem>);\n protected _onRunErrorAction?: OnErrorActionType<RunInputItem> | ((ctx: IActionContext<Item, RunInputItem, any, any>) => OnErrorActionType<RunInputItem>);\n\n // security\n protected _permissions?: APermissions;\n\n //button\n protected _button?: IActionButtonDescriptor;\n\n // multiple row selection\n protected _hasItemsSelection = false;\n\n // custom action component\n protected _component?: Type<IActionComponent<Item>>;\n protected _componentFromDi?: InjectionToken<Type<any>>;\n\n // subactions\n protected _subactionsAsMenu = false;\n protected _subactions: Array<ActionDescriptorInst<Item, any, RunInputItem, any>> = [];\n\n public constructor(actionName: string, cfg?: ActionDescriptorConstructorOptsType<Item, Service>) {\n this._model = cfg?.model;\n this._actionName = actionName;\n\n if ((cfg?.parentModel && !cfg?.parentProperty) || (!cfg?.parentProperty && cfg?.parentProperty)) {\n throw new CommonsInternalError(\n `Provide both the parent model and parent property or none: ${this._actionName}, ${cfg?.parentModel?.i18nBaseKey}, ${cfg?.parentProperty}.`\n );\n }\n this._parentModel = cfg?.parentModel;\n this._parentProperty = cfg?.parentProperty;\n\n this.setI18nModelActionBaseKey();\n\n if (cfg?.serviceType) {\n this._dataProvider = new DataProviderInst<Item, Service>(cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n let displayName = actionName;\n if (this._model) displayName = this._model.i18nBaseKey ? `${this._model.i18nBaseKey}.${displayName}` : displayName;\n if (this._parentModel) {\n displayName = `${this._parentModel.i18nBaseKey}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n\n public get model() {\n return this._model;\n }\n\n public get parentModel() {\n return this._parentModel;\n }\n\n public get parentProperty() {\n return this._parentProperty;\n }\n\n public get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get activationTrigger() {\n return this._activationTrigger;\n }\n\n public get position() {\n return this._position;\n }\n\n public get routeUrl() {\n return this._routeUrl;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get hasRunFunction(): boolean {\n return typeof this._runFunction === 'function';\n }\n\n public get runFunction(): ActionRunFnType<Item, Service, RunInputItem, RunReturnItem> {\n if (!this._runFunction) {\n throw new CommonsInternalError(`Run function is not defined for action ${this._actionNameLong} and cannot be invoked`);\n }\n return this._runFunction;\n }\n\n public get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n\n public get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n\n public get actionName() {\n return this._actionName;\n }\n\n public get actionNameLong() {\n return this._actionNameLong;\n }\n\n public get runConfirmation() {\n return this._runConfirmation;\n }\n\n public get runNotificationOnSuccess() {\n return this._runNotificationOnSuccess;\n }\n\n public get runNotificationOnError() {\n return this._runNotificationOnError;\n }\n\n public get afterRunAction() {\n return this._afterRunAction;\n }\n\n public get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public get tableviewCategory() {\n return this._tableviewCategory;\n }\n\n public get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n\n public get button() {\n return this._button;\n }\n\n public get component() {\n return this._component;\n }\n\n public get componentFromDi() {\n return this._componentFromDi;\n }\n\n public get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n\n public get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n\n public get subactions() {\n return this._subactions;\n }\n\n protected setI18nModelActionBaseKey(base?: string) {\n if (this._parentModel || this._model) {\n this._i18nModelActionBaseKey = this._parentModel\n ? `${this._parentModel.i18nBaseKey}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model!.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n\n public withRunFunction(fn: ActionRunFnType<Item, Service, RunInputItem, RunReturnItem>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction(fn?: ActionValidationFnType<ValidationInputItem, Service>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction(fn?: ActionValidationFnType<ValidationInputItem, Service>): this {\n this._isEnabledFunction = fn;\n return this;\n }\n\n public withRouteTrigger(routeUrl: string): this {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n /**\n * Creates confirmation action with default style based on action descriptor\n */\n public withRunConfirmation(opts: boolean | ActionConfirmation<Item, RunInputItem, Service> = true): this {\n this._runConfirmation = opts === true ? {} : opts === false ? undefined : opts;\n return this;\n }\n\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for run success/error notifications.\n */\n public withNotifications(opts?: {runOnSuccess?: ActionNotificationType | boolean; runOnError?: ActionNotificationType | boolean} | boolean): this {\n this._runNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.runOnSuccess;\n this._runNotificationOnError = typeof opts === 'boolean' ? opts : opts?.runOnError;\n return this;\n }\n\n public withAfterRunAction(action?: AfterRunActionType<RunReturnItem> | ((ctx: IActionContext<Item, RunInputItem, any, any>) => AfterRunActionType<RunReturnItem>)): this {\n this._afterRunAction = action;\n return this;\n }\n\n public withOnRunErrorAction(action?: OnErrorActionType<RunInputItem> | ((ctx: IActionContext<Item, RunInputItem, any, any>) => OnErrorActionType<RunInputItem>)): this {\n this._onRunErrorAction = action;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n if (this._tableviewCategory) {\n LoggerService.get().debug(\n `WARNING: Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`\n );\n }\n this._permissions = permissions;\n return this;\n }\n\n public withTableviewCategory(category: string): this {\n this._tableviewCategory = category;\n return this;\n }\n\n public withButtonOpts(button?: IActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, level?: StyleLevelEnum): this {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n\n public withItemsSelection(hasSelection = true): this {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n\n public withComponent(component: Type<IActionComponent<Item>>): this {\n this._component = component;\n return this;\n }\n\n public withComponentFromDi(injectionToken: InjectionToken<Type<any>>): this {\n this._componentFromDi = injectionToken;\n return this;\n }\n\n public withPositionTableviewCategories(positionTableviewCategories: string[]): this {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n\n public withI18nBase(base: ClassType<unknown> | string): this {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on action ${this.actionNameLong}`);\n }\n base = typeName;\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n\n public withSubactionsAsMenu(subactionsAsMenu = true): this {\n this._subactionsAsMenu = subactionsAsMenu;\n return this;\n }\n\n public withSubactions(...subactions: Array<ActionDescriptorInst<Item, any, RunInputItem, any>>): this {\n this._subactions.push(...subactions);\n return this;\n }\n\n public copyFieldsTo(\n descriptor: ActionDescriptorInst<Item, Service, RunInputItem, RunReturnItem, ValidationInputItem>\n ): ActionDescriptorInst<Item, Service, RunInputItem, RunReturnItem, ValidationInputItem> {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories ? [...this._positionTableviewCategories] : undefined;\n\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n\n if (this._runConfirmation) {\n descriptor._runConfirmation = {...this._runConfirmation};\n if (this._runConfirmation.acceptButton) {\n descriptor._runConfirmation.acceptButton = {...this._runConfirmation.acceptButton};\n }\n if (this._runConfirmation.rejectButton) {\n descriptor._runConfirmation.rejectButton = {...this._runConfirmation.rejectButton};\n }\n }\n\n descriptor._runNotificationOnSuccess = typeof this._runNotificationOnSuccess === 'object' ? {...this._runNotificationOnSuccess} : this._runNotificationOnSuccess;\n descriptor._runNotificationOnError = typeof this._runNotificationOnError === 'object' ? {...this._runNotificationOnError} : this._runNotificationOnError;\n\n if (this._afterRunAction != null) {\n descriptor._afterRunAction = typeof this._afterRunAction === 'function' ? this._afterRunAction : this._afterRunAction.copy();\n }\n if (this._onRunErrorAction != null) {\n descriptor._onRunErrorAction = typeof this._onRunErrorAction === 'function' ? this._onRunErrorAction : this._onRunErrorAction.copy();\n }\n\n descriptor._permissions = this._permissions;\n\n if (this._button) {\n descriptor._button = {\n ...this._button\n };\n if (this._button.style) {\n descriptor._button.style = {\n ...this._button.style\n };\n }\n }\n\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._componentFromDi = this._componentFromDi;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions.map(a => a.copy());\n\n return descriptor;\n }\n\n public copy(): ActionDescriptorInst<Item, Service, RunInputItem, RunReturnItem, ValidationInputItem> {\n const descriptor = new ActionDescriptorInst<Item, Service, RunInputItem, RunReturnItem, ValidationInputItem>(this._actionName, {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n\n this.copyFieldsTo(descriptor);\n\n return descriptor;\n }\n}\n","import {IDataProvider, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorCreateOptsProviderType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionDescriptorCreateFromModelOptsType<RunInputType, RunReturnType, ValidationInput> = ActionDescriptorCreateOptsParentType & {\n runInputType?: TypeDescriptor<RunInputType>;\n runReturnType?: TypeDescriptor<RunReturnType>;\n validationType?: TypeDescriptor<ValidationInput>;\n};\n\nexport type ActionDescriptorCreateOptsType<Model, Service, RunInputType, RunReturnType, ValidationInput> = ActionDescriptorCreateOptsParentType & {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionProviderType<Model, Service>;\n runInputType?: TypeDescriptor<RunInputType>;\n runReturnType?: TypeDescriptor<RunReturnType>;\n validationType?: TypeDescriptor<ValidationInput>;\n};\n\nexport type ActionProviderType<Model, Service> = ServiceClassType<Service> | IDataProvider<Model, Service>;\n\nexport const actionGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionProviderType<Model, Service>) => {\n const cfg: ActionDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\n/**\n * Creates and returns an instance of ActionDescriptorInst, allowing customization of the action's behavior through configuration options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionDescriptorCreateFromModelOptsType<Model, Service, RunInput, RunResult, ValidationInput>} [opts] - Optional configuration object to define the action's behavior, including model, service provider and other.\n * @return {ActionDescriptorInst<Model, Service, RunInput, RunResult, ValidationInput>} An instance of ActionDescriptorInst configured with the provided parameters.\n */\nexport function action<Model, Service = undefined, RunInput = Model, RunResult = Model, ValidationInput = Model>(\n actionName: string,\n opts?: ActionDescriptorCreateOptsType<Model, Service, RunInput, RunResult, ValidationInput>\n): ActionDescriptorInst<Model, Service, RunInput, RunResult, ValidationInput> {\n return new ActionDescriptorInst<Model, Service, RunInput, RunResult, ValidationInput>(actionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n ...opts\n });\n}\n","import {Observable, Subject} from 'rxjs';\n\nimport {DataProviderInst, IDataProvider, IdType, ItemOrObservable, ServiceClassOptType, Undefined} from '@mediusinc/mng-commons/core';\n\nimport {EditorResetEvent} from '../models/form-editor.event';\n\nexport type EditorDataProviderFetchFnType<Model = any, Service = undefined, Id = IdType, Return = ItemOrObservable<Model>> = (\n id: Id,\n service: Service,\n locale: string | undefined\n) => Return;\nexport type EditorDataProviderCreateFnType<CreateModel = any, Model = any, Service = undefined, Item = Undefined<CreateModel>, Return = ItemOrObservable<Undefined<Model>>> = (\n item: Item,\n service: Service\n) => Return;\nexport type EditorDataProviderUpdateFnType<\n UpdateModel = any,\n Model = any,\n Service = undefined,\n Id = IdType,\n Item = Undefined<UpdateModel>,\n Return = ItemOrObservable<Undefined<Model>>\n> = (id: Id, item: Item, service: Service) => Return;\nexport type EditorDataProviderDeleteFnType<Model = any, Service = undefined, Item = undefined, Id = IdType, Return = ItemOrObservable<Undefined<Model>>> = (\n id: Id,\n service: Service,\n item: Item\n) => Return;\nexport type EditorDataProviderFetchMapToFnType<FromModel, ToModel> = (item: FromModel) => ToModel;\n\nexport interface IEditorDataProviderFetch<Model, Service> {\n fetch?: EditorDataProviderFetchFnType<Model, Service>;\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderCreate<CreateModel, Model, Service> {\n create?: EditorDataProviderCreateFnType<CreateModel, Model, Service>;\n\n withCreate(fn?: EditorDataProviderCreateFnType<CreateModel, Model, Service>): this;\n}\n\nexport interface IEditorDataProviderUpdate<UpdateModel, Model, Service> {\n update?: EditorDataProviderUpdateFnType<UpdateModel, Model, Service>;\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<UpdateModel, Model, Service>): this;\n}\n\nexport interface IEditorDataProviderDelete<Model, Service> {\n delete?: EditorDataProviderDeleteFnType<Model, Service, any>;\n\n withDelete<Item = undefined>(fn?: EditorDataProviderDeleteFnType<Model, Service, Item>): this;\n}\n\nexport interface IEditorDataProviderFetchMapToCreate<Model, CreateModel> {\n mapFetchItemToCreateItem?: EditorDataProviderFetchMapToFnType<Model, CreateModel>;\n\n withMapFetchItemToCreateItem(fn?: EditorDataProviderFetchMapToFnType<Model, CreateModel>): this;\n}\n\nexport interface IEditorDataProviderFetchMapToUpdate<Model, UpdateModel> {\n mapFetchItemToUpdateItem?: EditorDataProviderFetchMapToFnType<Model, UpdateModel>;\n\n withMapFetchItemToUpdateItem(fn?: EditorDataProviderFetchMapToFnType<Model, UpdateModel>): this;\n}\n\nexport type IEditorDataProviderFnsType<Model, Service, CreateModel = Model, UpdateModel = Model, DeleteModel = Model> = IEditorDataProviderFetch<Model, Service> &\n IEditorDataProviderCreate<CreateModel, Model, Service> &\n IEditorDataProviderUpdate<UpdateModel, Model, Service> &\n IEditorDataProviderDelete<DeleteModel, Service> &\n IEditorDataProviderFetchMapToCreate<Model, CreateModel> &\n IEditorDataProviderFetchMapToUpdate<Model, UpdateModel>;\n\nexport interface IEditorDataProviderSupport<Model> {\n get editorReset$(): Observable<EditorResetEvent<Model>>;\n\n resetEditor(event?: EditorResetEvent<Model>): void;\n}\n\nexport type IEditorDataProvider<Model = any, Service = any, ServiceClass = ServiceClassOptType<Service>, CreateModel = Model, UpdateModel = Model> = IDataProvider<\n Model,\n Service,\n ServiceClass\n> &\n IEditorDataProviderFnsType<Model, Service, CreateModel, UpdateModel> &\n IEditorDataProviderSupport<Model>;\n\nexport class EditorDataProviderInst<Model, Service = any, ServiceClass = ServiceClassOptType<Service>, CreateModel = Model, UpdateModel = Model>\n extends DataProviderInst<Model, Service, ServiceClass>\n implements IEditorDataProvider<Model, Service, ServiceClass, CreateModel, UpdateModel>\n{\n protected readonly _editorResetSubject = new Subject<EditorResetEvent<Model>>();\n\n protected _fetch?: EditorDataProviderFetchFnType<Model, Service>;\n protected _create?: EditorDataProviderCreateFnType<CreateModel, Model, Service>;\n protected _update?: EditorDataProviderUpdateFnType<UpdateModel, Model, Service>;\n protected _delete?: EditorDataProviderDeleteFnType<Model, Service, any>;\n protected _mapFetchItemToCreateItem?: EditorDataProviderFetchMapToFnType<Model, CreateModel>;\n protected _mapFetchItemToUpdateItem?: EditorDataProviderFetchMapToFnType<Model, UpdateModel>;\n\n public constructor(serviceType: ServiceClass) {\n super(serviceType);\n }\n\n get fetch() {\n return this._fetch;\n }\n\n get create() {\n return this._create;\n }\n\n get update() {\n return this._update;\n }\n\n get delete() {\n return this._delete;\n }\n\n get mapFetchItemToCreateItem() {\n return this._mapFetchItemToCreateItem;\n }\n\n get mapFetchItemToUpdateItem() {\n return this._mapFetchItemToUpdateItem;\n }\n\n get editorReset$() {\n return this._editorResetSubject.asObservable();\n }\n\n /**\n * Sets the fetch function for the EditorDataProvider instance.\n *\n * @param {EditorDataProviderFetchFnType<Model, Service>} fn - The fetch function to be set.\n * @returns {this} - The instance of the EditorDataProvider with the fetch function set.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this._fetch = fn;\n return this;\n }\n\n /**\n * Sets the create function for the EditorDataProvider.\n *\n * @param {EditorDataProviderCreateFnType<CreateModel, Model, Service>} fn - The function used for creating new items.\n * @returns {this} - Returns the instance of the class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withCreate(fn?: EditorDataProviderCreateFnType<CreateModel, Model, Service>): this {\n this._create = fn;\n return this;\n }\n\n /**\n * Sets the update function for the EditorDataProvider.\n *\n * @param {EditorDataProviderUpdateFnType<Model, Service>} fn - The update function to be set.\n * @returns {this} - Returns the instance of the object calling this method.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withUpdate(fn?: EditorDataProviderUpdateFnType<UpdateModel, Model, Service>): this {\n this._update = fn;\n return this;\n }\n\n /**\n * Sets the delete function for the editor data provider.\n *\n * @param {EditorDataProviderDeleteFnType<Model, Service>} fn - The delete function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withDelete<Item = undefined>(fn?: EditorDataProviderDeleteFnType<Model, Service, Item>): this {\n this._delete = fn;\n return this;\n }\n\n /**\n * Sets the function to map data from fetch function to create model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, CreateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam CreateModel The type of data to map to.\n */\n withMapFetchItemToCreateItem(fn?: EditorDataProviderFetchMapToFnType<Model, CreateModel>): this {\n this._mapFetchItemToCreateItem = fn;\n return this;\n }\n\n /**\n * Sets the function to map data from fetch function to update model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, UpdateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam UpdateModel The type of data to map to.\n */\n withMapFetchItemToUpdateItem(fn?: EditorDataProviderFetchMapToFnType<Model, UpdateModel>): this {\n this._mapFetchItemToUpdateItem = fn;\n return this;\n }\n\n resetEditor(event?: EditorResetEvent<Model>): void {\n this._editorResetSubject.next(event ?? {});\n }\n}\n","import {Type} from '@angular/core';\n\nimport {CommonsInternalError, ServiceClassType, StyleLevelEnum, StyleSizeEnum} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDataProviderInst, IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {ActionEditorRunFnType, ActionNotificationType, ActionRunFnType} from '../models/action-descriptor.types';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum} from '../models/action.type';\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionEditorDescriptorConstructorOptsType<Model, Service> = ActionDescriptorCreateOptsParentType &\n ActionEditorDescriptorCreateOptsProviderType<Model, Service> & {\n model?: ModelDescriptor<Model>;\n isTableviewMainEditor?: boolean;\n };\n\nexport type ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IEditorDataProvider<Model, Service>;\n};\n\nexport class ActionEditorDescriptorInst<\n Item,\n Service = any,\n EditorItem = Item,\n FetchInputItem = Item,\n SubmitReturnItem = Item,\n ValidationInputItem = Item,\n ParentEditorItem = undefined\n> extends ActionDescriptorInst<Item, Service, EditorItem, SubmitReturnItem, ValidationInputItem> {\n private readonly _editorDescriptor: EditorDescriptorInst<EditorItem, ParentEditorItem>;\n protected override readonly _dataProvider?: IEditorDataProvider<Item, any> = undefined;\n\n protected _editorActions: ActionDescriptorInst<any, any, EditorItem, any, EditorItem>[] = [];\n protected _editorTitle?: string | null = undefined;\n protected _editorTitleParams?: any = undefined;\n\n protected _fetchNotificationOnSuccess?: ActionNotificationType | boolean;\n protected _fetchNotificationOnError?: ActionNotificationType | boolean;\n\n protected _dialogSize = StyleSizeEnum.Normal;\n protected _dialogClassName?: string;\n\n protected _fetchFunction?: ActionEditorRunFnType<Item, ParentEditorItem, Service, FetchInputItem, EditorItem>;\n protected _submitFunction?: ActionEditorRunFnType<Item, ParentEditorItem, Service, EditorItem, SubmitReturnItem>;\n\n protected _editorComponent?: Type<any>;\n\n protected _resubmitEnabled?: boolean;\n protected _resubmitRefetch = true;\n protected _unsavedChangesConfirmation = false;\n\n public constructor(editorDescriptor: EditorDescriptorInst<EditorItem, any>, actionName: string, cfg?: ActionEditorDescriptorConstructorOptsType<Item, Service>) {\n super(actionName, {\n ...cfg,\n model: cfg?.model ?? (editorDescriptor.model as unknown as ModelDescriptor<Item>)\n });\n\n if (cfg?.serviceType) {\n this._dataProvider = new EditorDataProviderInst<Item, Service>(cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(actionEditorSubmit(this), actionEditorCancel(this));\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorTitleParams() {\n return this._editorTitleParams;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public get dialogSize() {\n return this._dialogSize;\n }\n\n public get dialogClassName() {\n return this._dialogClassName;\n }\n\n public get fetchNotificationOnSuccess() {\n return this._fetchNotificationOnSuccess;\n }\n\n public get fetchNotificationOnError() {\n return this._fetchNotificationOnError;\n }\n\n public override get dataProvider() {\n return this._dataProvider;\n }\n\n public override get hasRunFunction(): boolean {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public override get runFunction(): ActionRunFnType<Item, Service, EditorItem, SubmitReturnItem> {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public get hasFetchFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get fetchFunction() {\n return this._fetchFunction;\n }\n\n public get hasSubmitFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public get editorActions() {\n return this._editorActions;\n }\n\n public get editorComponent() {\n return this._editorComponent;\n }\n\n public get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n\n public get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n\n public get unsavedChangesConfirmation() {\n return this._unsavedChangesConfirmation;\n }\n\n public withEditorTitle(title: string | null, params?: any): this {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n\n public withDialogSize(size = StyleSizeEnum.Normal): this {\n this._dialogSize = size;\n return this;\n }\n\n public withDialogClassName(className: string): this {\n this._dialogClassName = className;\n return this;\n }\n\n public override withRunFunction(fn: ActionEditorRunFnType<Item, ParentEditorItem, Service, EditorItem, SubmitReturnItem>): this {\n return this.withSubmitFunction(fn);\n }\n\n public withFetchFunction(fn: ActionEditorRunFnType<Item, ParentEditorItem, Service, FetchInputItem, EditorItem>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction(fn: ActionEditorRunFnType<Item, ParentEditorItem, Service, EditorItem, SubmitReturnItem>): this {\n this._submitFunction = fn;\n return this;\n }\n\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for submit (is same as run) or fetch success/error notifications.\n */\n public override withNotifications(\n opts?:\n | {\n submitOnSuccess?: ActionNotificationType | boolean;\n submitOnError?: ActionNotificationType | boolean;\n runOnSuccess?: ActionNotificationType | boolean;\n runOnError?: ActionNotificationType | boolean;\n fetchOnSuccess?: ActionNotificationType | boolean;\n fetchOnError?: ActionNotificationType | boolean;\n }\n | boolean\n ): this {\n super.withNotifications(\n typeof opts === 'boolean'\n ? opts\n : {\n runOnSuccess: opts?.submitOnSuccess ?? opts?.runOnSuccess,\n runOnError: opts?.submitOnError ?? opts?.runOnError\n }\n );\n this._fetchNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.fetchOnSuccess;\n this._fetchNotificationOnError = typeof opts === 'boolean' ? opts : opts?.fetchOnError;\n return this;\n }\n\n public withEditorAction(action: ActionDescriptorInst<any, any, EditorItem, any, EditorItem>): this {\n this._editorActions.push(action);\n return this;\n }\n\n public withEditorActions(actions: ActionDescriptorInst<any, any, EditorItem, any, EditorItem>[]): this {\n this._editorActions = actions;\n return this;\n }\n\n public withEditorComponent(editorComponent: Type<any>): this {\n this._editorComponent = editorComponent;\n return this;\n }\n\n /**\n * Enables or disables resubmit resubmit - this means the form will not exit after successful submission, but will instead remain open.\n *\n * @param {boolean} [enabled=true] - Specifies whether resubmit is enabled or disabled. Defaults to true if not provided.\n * @param {boolean} [refetch=true] - Specifies whether the data should be refetched after resubmit. If not, the data in the form stays as is. Defaults to true if not provided.\n *\n * @returns {this} - Returns the current instance with the resubmit configuration updated.\n */\n public withResubmit(enabled?: boolean, refetch = true): this {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n\n public withUnsavedChangesConfirmation(unsavedChangesConfirmation = true): this {\n this._unsavedChangesConfirmation = unsavedChangesConfirmation;\n return this;\n }\n\n override copyFieldsTo(\n descriptor: ActionEditorDescriptorInst<Item, Service, EditorItem, FetchInputItem, SubmitReturnItem, ValidationInputItem, ParentEditorItem>\n ): ActionEditorDescriptorInst<Item, Service, EditorItem, FetchInputItem, SubmitReturnItem, ValidationInputItem, ParentEditorItem> {\n super.copyFieldsTo(descriptor);\n descriptor._editorActions = this._editorActions.map(a => a.copy());\n descriptor._editorTitle = this._editorTitle;\n descriptor._editorTitleParams = this._editorTitleParams != null ? {...this._editorTitleParams} : undefined;\n\n descriptor._fetchNotificationOnSuccess = typeof this._fetchNotificationOnSuccess === 'object' ? {...this._fetchNotificationOnSuccess} : this._fetchNotificationOnSuccess;\n descriptor._fetchNotificationOnError = typeof this._fetchNotificationOnError === 'object' ? {...this._fetchNotificationOnError} : this._fetchNotificationOnError;\n\n descriptor._dialogSize = this._dialogSize;\n descriptor._dialogClassName = this._dialogClassName;\n descriptor._fetchFunction = this._fetchFunction;\n descriptor._submitFunction = this._submitFunction;\n descriptor._editorComponent = this._editorComponent;\n descriptor._resubmitEnabled = this._resubmitEnabled;\n descriptor._resubmitRefetch = this._resubmitRefetch;\n descriptor._unsavedChangesConfirmation = this._unsavedChangesConfirmation;\n return descriptor;\n }\n\n override copy(): ActionEditorDescriptorInst<Item, Service, EditorItem, FetchInputItem, SubmitReturnItem, ValidationInputItem, ParentEditorItem> {\n const editor = this._editorDescriptor.copy();\n const descriptor = new ActionEditorDescriptorInst<Item, Service, EditorItem, FetchInputItem, SubmitReturnItem, ValidationInputItem, ParentEditorItem>(\n editor,\n this._actionName,\n {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n }\n );\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\nexport class ActionEditorSubmitDescriptorInst<Model, EditorModel> extends ActionDescriptorInst<Model, undefined, EditorModel, EditorModel, EditorModel> {\n private readonly _submitType: ActionEditorSubmitTypeEnum;\n\n public constructor(editorActionName: string, editorActionModel: ModelDescriptor<Model> | undefined, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorActionName}.submit` : `${editorActionName}.cancel`, {model: editorActionModel});\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n }\n\n public get submitType() {\n return this._submitType;\n }\n\n override copy(): ActionEditorSubmitDescriptorInst<Model, EditorModel> {\n const descriptor = new ActionEditorSubmitDescriptorInst<Model, EditorModel>(this._actionName.split('.').slice(0, -1).join('.'), this._model?.copy(), this._submitType);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n\n/**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorSubmit<Model, EditorModel>(\n editorAction: ActionEditorDescriptorInst<Model, any, EditorModel, any, any, any, any>,\n submitType = ActionEditorSubmitTypeEnum.Submit\n): ActionEditorSubmitDescriptorInst<Model, EditorModel> {\n return new ActionEditorSubmitDescriptorInst<Model, EditorModel>(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n level: editorAction.button?.style?.level\n }\n });\n}\n\n/**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorCancel<Model, EditorModel>(\n editorAction: ActionEditorDescriptorInst<Model, any, EditorModel, any, any, any, any>,\n submitType = ActionEditorSubmitTypeEnum.Cancel\n): ActionEditorSubmitDescriptorInst<Model, EditorModel> {\n return new ActionEditorSubmitDescriptorInst<Model, EditorModel>(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n textButton: true,\n level: StyleLevelEnum.Secondary\n }\n });\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {ActionEditorDescriptorCreateOptsProviderType, ActionEditorDescriptorInst} from './action-editor.descriptor';\nimport {ActionDescriptorCreateOptsParentType} from './action.descriptor';\n\nexport type ActionEditorProviderType<Model, Service> = ServiceClassType<Service> | IEditorDataProvider<Model, Service>;\n\nexport type ActionEditorDescriptorOptsType<Model, Service, FetchInput, SubmitReturn, ValidationInput> = ActionDescriptorCreateOptsParentType & {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionEditorProviderType<Model, Service>;\n fetchInputType?: TypeDescriptor<FetchInput>;\n submitReturnType?: TypeDescriptor<SubmitReturn>;\n validationType?: TypeDescriptor<ValidationInput>;\n};\n\nexport const actionEditorGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionEditorProviderType<Model, Service>) => {\n const cfg: ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IEditorDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IEditorDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\n/**\n * Creates an ActionEditorDescriptorInst instance with the provided editor descriptor and options.\n *\n * @param {string} actionName - The name of the action to associate with the editor.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance to be used.\n * @param {ActionEditorDescriptorOptsType<Model, Service, FetchInput, SubmitReturn, ValidationInput>} [opts] - Optional configuration options for the ActionEditor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, FetchInput, SubmitReturn, ValidationInput>} An instance of ActionEditorDescriptor with the configured parameters.\n */\nexport function actionEditor<\n EditorModel,\n Model = EditorModel,\n Service = undefined,\n FetchInput = Model,\n SubmitReturn = Model,\n ValidationInput = Model,\n ParentEditorItem = undefined\n>(\n actionName: string,\n editor: EditorDescriptorInst<EditorModel, ParentEditorItem>,\n opts?: ActionEditorDescriptorOptsType<Model, Service, FetchInput, SubmitReturn, ValidationInput>\n): ActionEditorDescriptorInst<Model, Service, EditorModel, FetchInput, SubmitReturn, ValidationInput, ParentEditorItem> {\n return new ActionEditorDescriptorInst<Model, Service, EditorModel, FetchInput, SubmitReturn, ValidationInput, ParentEditorItem>(editor, actionName, {\n ...opts,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n model: opts?.model\n });\n}\n","import {Params, QueryParamsHandling} from '@angular/router';\n\nimport {ActionDescriptorConstructorOptsType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionLinkDescriptorConstructorOpts<Model> = Omit<ActionDescriptorConstructorOptsType<Model, undefined>, 'serviceType' | 'dataProvider'>;\n\nexport class ActionLinkDescriptorInst<Item, ValidationInputItem = Item> extends ActionDescriptorInst<Item, undefined, undefined, undefined, ValidationInputItem> {\n private _url = '';\n private _pathSegments: string[] = [];\n private _queryParams?: Params;\n private _queryParamsHandling?: QueryParamsHandling;\n private _replaceUrl = false;\n private _target = '_self';\n private _isStyleLink = false;\n\n constructor(actionName = 'link', cfg?: ActionLinkDescriptorConstructorOpts<Item>) {\n super(actionName, cfg);\n }\n\n public get url(): string {\n return this._url;\n }\n\n public get pathSegments(): string[] {\n return this._pathSegments;\n }\n\n public get queryParams(): Params | undefined {\n return this._queryParams;\n }\n\n public get queryParamsHandling(): QueryParamsHandling | undefined {\n return this._queryParamsHandling;\n }\n\n public get replaceUrl(): boolean {\n return this._replaceUrl;\n }\n\n public get target(): string {\n return this._target;\n }\n\n public get isStyleLink(): boolean {\n return this._isStyleLink;\n }\n\n public withHref(url: string): this {\n this._url = url;\n return this;\n }\n\n public withRouterLink(...pathSegments: string[]): this {\n this._pathSegments = pathSegments;\n return this;\n }\n\n public withQueryParams(queryParams: Params, queryParamsHandling?: QueryParamsHandling): this {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n\n public withReplaceUrl(replaceUrl = false): this {\n this._replaceUrl = replaceUrl;\n return this;\n }\n\n public withTarget(target: '_self' | '_blank' = '_self'): this {\n this._target = target;\n return this;\n }\n\n public withStyleLink(isStyleLink: boolean): this {\n this._isStyleLink = isStyleLink;\n return this;\n }\n\n public override copy(): ActionLinkDescriptorInst<Item, ValidationInputItem> {\n const descriptor = new ActionLinkDescriptorInst<Item, ValidationInputItem>(this._actionName, {\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor); // copy base action\n descriptor._url = this._url;\n descriptor._pathSegments = [...this._pathSegments];\n descriptor._queryParams = {...this._queryParams};\n descriptor._queryParamsHandling = this._queryParamsHandling;\n descriptor._replaceUrl = this._replaceUrl;\n descriptor._target = this._target;\n descriptor._isStyleLink = this._isStyleLink;\n return descriptor;\n }\n}\n","import {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {ActionLinkDescriptorInst} from './action-link.descriptor';\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\ntype ActionLinkCreateOptsType<Model, ValidationInput> = ActionDescriptorCreateOptsParentType & {\n model?: ModelDescriptor<Model>;\n validationType?: TypeDescriptor<ValidationInput>;\n};\n\n/**\n * Creates an instance of ActionLinkDescriptorInst with the provided action name and options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionLinkCreateOptsType<Model, ValidationInput>} [opts] - Optional parameters for configuring the action link, including the model and validation type.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} An instance of ActionLinkDescriptorInst initialized with the action name and options.\n */\nexport function actionLink<Model = any, ValidationInput = Model>(actionName: string, opts?: ActionLinkCreateOptsType<Model, ValidationInput>) {\n return new ActionLinkDescriptorInst<Model, ValidationInput>(actionName, {\n ...opts,\n model: opts?.model\n });\n}\n\n/**\n * Generates an ActionLinkDescriptorInst from the provided ActionDescriptorInst.\n *\n * @param {ActionDescriptorInst<Model, any, any, any, ValidationInput>} action - The action descriptor instance that serves as the basis for the action link.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} A newly created ActionLinkDescriptorInst configured with the provided action parameters.\n */\nexport function actionLinkFromAction<Model, ValidationInput = Model>(action: ActionDescriptorInst<Model, any, any, any, ValidationInput>) {\n const descriptor = new ActionLinkDescriptorInst<Model, ValidationInput>(action.actionName, {model: action.model});\n\n action.copyFieldsTo(descriptor);\n\n // disable confirmation and notifications\n descriptor.withRunConfirmation(false);\n descriptor.withNotifications(false);\n\n descriptor.withAfterRunAction();\n descriptor.withOnRunErrorAction();\n\n descriptor.withSubactionsAsMenu(false);\n\n return descriptor;\n}\n","import {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {ActionPositionEnum} from '../models/action.type';\nimport {ActionProviderType, actionGetProviderCfgObj} from './action-descriptor.factory';\nimport {ActionDescriptorInst} from './action.descriptor';\n\n/**\n * Defines an action to be positioned on a specified editor with editor-specific execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {EditorDescriptorInst<EditorModel>} editor - The descriptor of the editor on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The position of action on editor.\n * @return {ActionDescriptorInst<Model, Service, EditorModel, Model, EditorModel>} - An instance representing the configured action descriptor for the specified editor and model.\n */\nexport function actionOnEditor<Model, EditorModel, Service = undefined>(\n actionName: string,\n editor: EditorDescriptorInst<EditorModel, any>,\n opts?: {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionProviderType<Model, Service>;\n position?: ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight;\n }\n): ActionDescriptorInst<Model, Service, EditorModel, Model, EditorModel> {\n return new ActionDescriptorInst<Model, Service, EditorModel, Model, EditorModel>(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n","import {ModelDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {ActionPositionEnum} from '../models/action.type';\nimport {ActionEditorProviderType, actionEditorGetProviderCfgObj} from './action-editor-descriptor.factory';\nimport {ActionEditorDescriptorInst} from './action-editor.descriptor';\n\n/**\n * Creates and returns an instance of `ActionEditorDescriptorInst` when positioned on another (parent) editor.\n *\n * @param {string} actionName - The name of the action associated with the editor.\n * @param {EditorDescriptorInst<EditorModel, ParentEditor>} editor - The editor descriptor defining editor on action.\n * @param {Object} [opts] - Optional parameters for configuring the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The descriptor for the model associated with the action.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for the action editor.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The desired position of action on the editor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, ParentEditor, EditorModel, ParentEditor>} A configured instance of `ActionEditorDescriptorInst` representing the action editor.\n */\nexport function actionEditorOnEditor<EditorModel, ParentEditor, Model = EditorModel, Service = undefined>(\n actionName: string,\n editor: EditorDescriptorInst<EditorModel, ParentEditor>,\n opts?: {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionEditorProviderType<Model, Service>;\n position?: ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight;\n }\n): ActionEditorDescriptorInst<Model, Service, EditorModel, ParentEditor, EditorModel, ParentEditor, ParentEditor> {\n return new ActionEditorDescriptorInst<Model, Service, EditorModel, ParentEditor, EditorModel, ParentEditor, ParentEditor>(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n","import {ModelDescriptor} from '@mediusinc/mng-commons/model';\nimport {TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {ActionPositionEnum} from '../models/action.type';\nimport {ActionProviderType, actionGetProviderCfgObj} from './action-descriptor.factory';\nimport {ActionDescriptorInst} from './action.descriptor';\n\n/**\n * Defines an action to be positioned on a specified table with table row execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The descriptor of the table on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table row and model.\n */\nexport function actionOnTableRow<Model, TableModel, Service = undefined>(\n actionName: string,\n table: TableDescriptorInst<TableModel, any, any>,\n opts?: {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionProviderType<Model, Service>;\n position?: ActionPositionEnum.RowInline | ActionPositionEnum.RowClick;\n }\n): ActionDescriptorInst<Model, Service, TableModel, Model, TableModel> {\n return new ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n\n/**\n * Defines an action to be positioned on a specified table with table header or footer execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table top and model.\n */\nexport function actionOnTableTop<Model, Service = undefined>(\n actionName: string,\n opts?: {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionProviderType<Model, Service>;\n position?: ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader;\n }\n): ActionDescriptorInst<Model, Service, undefined, Model, undefined> {\n return new ActionDescriptorInst<Model, Service, undefined, Model, undefined>(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n","import {ModelDescriptor} from '@mediusinc/mng-commons/model';\nimport {TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {ActionPositionEnum} from '../models/action.type';\nimport {ActionEditorProviderType, actionEditorGetProviderCfgObj} from './action-editor-descriptor.factory';\nimport {ActionEditorDescriptorInst} from './action-editor.descriptor';\n\n/**\n * Creates and returns an ActionEditorDescriptorInst for displaying editor action on table row.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The table descriptor instance representing the table on which the action is positioned.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position where the action should be displayed on the table row.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, TableModel, EditorModel, TableModel>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableRow<EditorModel, ParentEditorItem, TableModel, Model = EditorModel, Service = undefined>(\n actionName: string,\n editor: EditorDescriptorInst<EditorModel, ParentEditorItem>,\n table: TableDescriptorInst<TableModel, any, any>,\n opts?: {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionEditorProviderType<Model, Service>;\n position?: ActionPositionEnum.RowInline | ActionPositionEnum.RowClick;\n }\n): ActionEditorDescriptorInst<Model, Service, EditorModel, TableModel, EditorModel, TableModel, ParentEditorItem> {\n return new ActionEditorDescriptorInst<Model, Service, EditorModel, TableModel, EditorModel, TableModel, ParentEditorItem>(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n\n/**\n * Creates and returns an action editor descriptor configured with the given parameters.\n * This is used to define an action editor positioned relative to a table.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of the action on the table.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, undefined, EditorModel, undefined>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableTop<EditorModel, ParentEditorItem, Model = EditorModel, Service = undefined>(\n actionName: string,\n editor: EditorDescriptorInst<EditorModel, ParentEditorItem>,\n opts?: {\n model?: ModelDescriptor<Model>;\n serviceProvider?: ActionEditorProviderType<Model, Service>;\n position?: ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader;\n }\n): ActionEditorDescriptorInst<Model, Service, EditorModel, undefined, EditorModel, undefined, ParentEditorItem> {\n return new ActionEditorDescriptorInst<Model, Service, EditorModel, undefined, EditorModel, undefined, ParentEditorItem>(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {ACommonsErrorBase, CommonsErrorBaseOptions, ICommonsActionError} from '@mediusinc/mng-commons/core';\n\nimport {IActionContext} from './execution/action-context.model';\n\nexport interface CommonsActionErrorOptions extends CommonsErrorBaseOptions {\n actionContext?: IActionContext<any, any, any>;\n httpError?: HttpErrorResponse;\n}\n\nexport class CommonsActionError extends ACommonsErrorBase implements ICommonsActionError {\n public readonly type = 'CommonsActionError';\n public readonly actionId: string;\n\n public readonly actionContext?: IActionContext<any, any>;\n public readonly httpError?: HttpErrorResponse;\n\n constructor(message: string, actionName: string, options?: CommonsActionErrorOptions) {\n super(message, {\n name: 'CommonsActionError_' + actionName,\n ...options\n });\n\n this.actionId = actionName;\n this.actionContext = options?.actionContext;\n this.httpError = options?.httpError;\n }\n}\n","import {Injector} from '@angular/core';\n\nimport {Observable, isObservable, map, throwError} from 'rxjs';\n\nimport {CommonsInternalError, DataListResult, IDataProvider, Nullable, toObservable} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider} from '@mediusinc/mng-commons/table/api';\n\nimport {IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {CommonsActionError} from '../models/action-error.model';\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport function runFnFromDataProviderOrFallback<Item, ParameterItem, Service, Return, FallbackReturn = Return>(\n ctx: IActionContext<Item, ParameterItem, Service>,\n fn: (ctx: IActionContext<Item, ParameterItem, Service>) => Observable<Return> | null,\n fallback: Observable<FallbackReturn>\n): Observable<Return | FallbackReturn> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n}\n\nexport function runFnFromDataProviderOrFail<Item, ParameterItem, Service, Return>(\n ctx: IActionContext<Item, ParameterItem, Service>,\n fn: (ctx: IActionContext<Item, ParameterItem, Service>) => Observable<Return> | null\n): Observable<Return> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return throwError(\n () =>\n new CommonsActionError(\n `Data provider could not extract function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.i18nBaseKey}) for item id ${ctx.parameters?.itemId}.`,\n ctx.contextLongName,\n {actionContext: ctx}\n )\n );\n}\n\nexport function runGetAllFromDataProvider<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<DataListResult<Item>> | null {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll' as keyof object] === 'function') {\n const tableDataProvider = ctx.dataProvider as ITableDataProvider<Item, any>;\n const queryParam = ctx.parameters?.dataListParams ?? {};\n return toObservable(tableDataProvider.getAll(queryParam, ctx.serviceInstance));\n }\n return null;\n}\n\nexport type RunFetchFromDataProviderOptsType = {\n strict?: boolean;\n reason?: RunFetchFromDataProviderReasonType;\n};\nexport type RunFetchFromDataProviderReasonType = 'create' | 'update' | 'fetch';\nexport function runFetchFromDataProvider<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n opts?: RunFetchFromDataProviderOptsType\n): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId\n ? toObservable(editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale)).pipe(\n map(res => {\n if (opts?.reason === 'update') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToUpdateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToUpdate function must be provided in data provider`);\n } else if (typeof editorDataProvider.mapFetchItemToUpdateItem === 'function') {\n return editorDataProvider.mapFetchItemToUpdateItem(res);\n }\n } else if (opts?.reason === 'create') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToCreateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToCreate function must be provided in data provider`);\n } else if (typeof editorDataProvider.mapFetchItemToCreateItem === 'function') {\n return editorDataProvider.mapFetchItemToCreateItem(res);\n }\n }\n return res;\n })\n )\n : null;\n }\n }\n return null;\n}\n\nexport function runCreateFromDataProvider<Item, ParameterItem, Service>(ctx: IActionContext<Item, ParameterItem, Service>): Observable<Nullable<Item>> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any, any, ParameterItem>;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? toObservable(editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runUpdateFromDataProvider<Item, ParameterItem, service>(ctx: IActionContext<Item, ParameterItem, service>): Observable<Nullable<Item>> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any, any, any, ParameterItem>;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runDeleteFromDataProvider<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Nullable<Item>> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.delete(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.item)) : null; // this is not exactly correct cast as the delete function should never receive Item, but in many cases it ain't so\n }\n }\n return null;\n}\n\n/**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\nexport function getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n if (dataProvider?.serviceType) {\n const service = injector.get<Service>(dataProvider.serviceType, undefined, {optional: true});\n if (!service) {\n throw new CommonsInternalError(`Data provider service type ${dataProvider.serviceType} could not be injected.`);\n }\n return service;\n } else {\n return null;\n }\n}\n","/**\n * States of action. Enums ending with \"*Final\" are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n public static readonly READ = '_defaultTwRead';\n public static readonly ADD = '_defaultTwAdd';\n public static readonly EDIT = '_defaultTwEdit';\n public static readonly DELETE = '_defaultTwDelete';\n public static readonly DETAILS = '_defaultTwDetails';\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const DATA_LANGUAGE_DROPDOWN_COMPONENT_IT: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('DATA_LANGUAGE_DROPDOWN_COMPONENT');\n","import {Injector} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {DataListResult, IDataProvider, Nullable} from '@mediusinc/mng-commons/core';\n\nimport {RunFetchFromDataProviderReasonType, getDataProviderService, runFnFromDataProviderOrFail} from '../helpers/data-provider-executors';\nimport {IActionContext} from '../models/execution/action-context.model';\n\nexport abstract class DataProviderExecutor {\n public runGetAllOrFail<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<DataListResult<Item>> {\n return runFnFromDataProviderOrFail<Item, ParametersItem, Service, DataListResult<Item>>(ctx, this.runGetAll.bind(this));\n }\n\n public abstract runGetAll<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback: Observable<DataListResult<Item>>\n ): Observable<DataListResult<Item>>;\n public abstract runGetAll<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<DataListResult<Item>>\n ): Observable<DataListResult<Item>> | null;\n\n public runFetchOrFail<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fetchReason?: RunFetchFromDataProviderReasonType): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, ParametersItem, Service, Item>(ctx, ctx => this.runFetch(ctx, fetchReason));\n }\n\n public abstract runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason?: RunFetchFromDataProviderReasonType\n ): Observable<Item> | null;\n public abstract runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>>;\n public abstract runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback: undefined\n ): Observable<Nullable<Item>> | null;\n public abstract runFetch<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fetchReason: RunFetchFromDataProviderReasonType | undefined,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null;\n\n public runCreateOrFail<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, ParametersItem, Service, Item>(ctx, this.runCreate.bind(this));\n }\n\n public abstract runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> | null;\n public abstract runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runCreate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runCreate<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null;\n\n public runUpdateOrFail<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, ParametersItem, Service, Item>(ctx, this.runUpdate.bind(this));\n }\n\n public abstract runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item> | null;\n public abstract runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runUpdate<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runUpdate<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null;\n\n public runDeleteOrFail<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Item | null> {\n return runFnFromDataProviderOrFail<Item, ParametersItem, Service, Item>(ctx, this.runDelete.bind(this));\n }\n\n public abstract runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runDelete<Item, ParametersItem, Service>(ctx: IActionContext<Item, ParametersItem, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, ParametersItem, Service>(\n ctx: IActionContext<Item, ParametersItem, Service>,\n fallback?: Observable<Nullable<Item>>\n ): Observable<Nullable<Item>> | null;\n\n /**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\n public getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n return getDataProviderService(injector, dataProvider);\n }\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {EditorDataProviderInst} from './editor.data-provider';\n\n/**\n * Creates and returns an instance of `EditorDataProviderInst` with the specified options for managing editor data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.createType] - The descriptor defining the create type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.updateType] - The descriptor defining the update type.\n * @return {EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel>} An instance of `EditorDataProviderInst` configured according to the provided options.\n */\nexport function editorDataProvider<\n Model,\n Service = undefined,\n CreateModel = Model,\n UpdateModel = Model,\n ServiceClass = Service extends undefined ? undefined : ServiceClassType<Service>\n>(opts?: {\n type?: TypeDescriptor<Model> | ModelDescriptor<Model>;\n service?: ServiceClassType<Service>;\n createType?: TypeDescriptor<CreateModel> | ModelDescriptor<Model>;\n updateType?: TypeDescriptor<UpdateModel> | ModelDescriptor<Model>;\n}): EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel> {\n return new EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel>(opts?.service as ServiceClass);\n}\n","import {ArrayItemType, CommonsInternalError, ITableDescriptor, ITableviewDescriptor} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor} from '@mediusinc/mng-commons/model';\nimport {ITableDataProvider} from '@mediusinc/mng-commons/table/api';\n\nimport {FieldsManageAddFieldLookupOpts, IFieldManageSafeWithGetField, IFieldsManageWithGetField} from '../../models/editor-fields.model';\nimport {AFieldDescriptor} from '../field-base.descriptor';\nimport {FieldLookupEnumDescriptor} from '../field-lookup.descriptor';\nimport {FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor} from '../field-many.descriptor';\n\n/**\n * @experimental\n */\nexport class EditorDescriptorNestedObjectWrapper<EditorModel, ParentEditorModel, PropertyObjectModel>\n implements IFieldManageSafeWithGetField<EditorModel, ParentEditorModel, PropertyObjectModel>\n{\n #path: string;\n #editor: IFieldsManageWithGetField<EditorModel, ParentEditorModel>;\n\n constructor(editor: IFieldsManageWithGetField<EditorModel, ParentEditorModel>, basePath: string) {\n this.#editor = editor;\n this.#path = basePath;\n }\n\n nested<Property extends keyof PropertyObjectModel>(\n property: Property\n ): EditorDescriptorNestedObjectWrapper<EditorModel, ParentEditorModel, NonNullable<PropertyObjectModel[Property]>> {\n return new EditorDescriptorNestedObjectWrapper<EditorModel, ParentEditorModel, NonNullable<PropertyObjectModel[Property]>>(\n this.#editor,\n this.getNestedPropertyPath(property)\n );\n }\n\n getNestedPropertyPath(p: keyof PropertyObjectModel) {\n return `${this.#path}.${p as string}`;\n }\n\n getField<Property extends keyof PropertyObjectModel, FieldModel = NonNullable<PropertyObjectModel[Property]>, FieldValue = PropertyObjectModel[Property]>(\n property: Property\n ): AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> | null {\n return this.#editor.getFieldUnsafe<FieldModel, FieldValue>(this.getNestedPropertyPath(property));\n }\n\n removeField(property: keyof PropertyObjectModel): void {\n this.#editor.removeFieldUnsafe(this.getNestedPropertyPath(property));\n }\n\n addField<PropertyField extends keyof PropertyObjectModel, FieldModel = NonNullable<PropertyObjectModel[PropertyField]>, FieldValue = PropertyObjectModel[PropertyField]>(\n property: PropertyField\n ) {\n return this.#editor.addFieldUnsafe<FieldModel, FieldValue>(this.getNestedPropertyPath(property));\n }\n\n withFields(...properties: (keyof PropertyObjectModel)[]) {\n properties.forEach(p => this.#editor.addFieldUnsafe(this.getNestedPropertyPath(p)));\n return this;\n }\n\n addFieldLookup<\n Property extends keyof PropertyObjectModel,\n Service = undefined,\n FieldModel extends NonNullable<PropertyObjectModel[Property]> = NonNullable<PropertyObjectModel[Property]>,\n FieldValue = PropertyObjectModel[Property]\n >(property: Property, opts?: FieldsManageAddFieldLookupOpts<FieldModel, Service>) {\n return this.#editor.addFieldLookupUnsafe<FieldModel, Service, FieldValue>(this.getNestedPropertyPath(property), opts);\n }\n\n addFieldLookupEnum<Property extends keyof PropertyObjectModel, Enum extends NonNullable<PropertyObjectModel[Property]>>(\n property: Property,\n enumModel: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ): FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel> {\n return this.#editor.addFieldLookupEnumUnsafe<Enum>(this.getNestedPropertyPath(property), enumModel, options);\n }\n\n addFieldManyEditor<Property extends keyof PropertyObjectModel, FieldModel = ArrayItemType<PropertyObjectModel[Property]>, FieldValue = PropertyObjectModel[Property]>(\n property: Property,\n tableviewDescriptor: ITableviewDescriptor<FieldModel, any, any, EditorModel, FieldModel, FieldModel, FieldModel>\n ): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> {\n return this.#editor.addFieldManyEditorUnsafe<FieldModel, FieldValue>(this.getNestedPropertyPath(property), tableviewDescriptor);\n }\n\n addFieldManyToManyEditor<\n Property extends keyof PropertyObjectModel,\n Service,\n FieldModel = ArrayItemType<PropertyObjectModel[Property]>,\n FieldValue = PropertyObjectModel[Property]\n >(\n property: Property,\n mainTableDescriptor: ITableDescriptor<FieldModel, any, any>,\n lookupTableDescriptor: ITableDescriptor<FieldModel, any, any>,\n lookupDataProvider: ITableDataProvider<FieldModel, Service>\n ): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n return this.#editor.addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue>(\n this.getNestedPropertyPath(property),\n mainTableDescriptor,\n lookupTableDescriptor,\n lookupDataProvider\n );\n }\n\n addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>) {\n if (!field.property.startsWith(this.#path)) {\n throw new CommonsInternalError(`Field ${field.property} cannot be added to nested object property ${this.#path}: Paths do not match.`);\n }\n this.#editor.addFieldDescriptor(field);\n return this;\n }\n}\n","export enum TableviewEditorTypeEnum {\n None,\n Details,\n Edit,\n Add\n}\n\nexport const EDITOR_DEFAULT_GROUP_NAME = '_default';\n","import {Type} from '@angular/core';\n\nexport enum FieldSizeEnum {\n Small,\n Normal,\n Large\n}\n\nexport enum FieldInputTypeEnum {\n Hidden,\n Label,\n Text,\n Textarea,\n Number,\n Currency,\n Switch,\n Radio,\n Datepicker,\n Mask,\n File,\n ImageFile,\n ImageUrl,\n Custom\n}\n\nexport enum FieldLookupTypeEnum {\n Dropdown,\n Autocomplete,\n Dialog,\n Custom\n}\n\nexport enum FieldManyToManyEditorTypeEnum {\n DialogTableMultiselect\n}\n\nexport enum FieldManyToManyEditorActionEnum {\n Add,\n Delete\n}\n\nexport enum FieldManyEditorTypeEnum {\n DialogEditor\n}\n\nexport enum FieldManyEditorActionEnum {\n View,\n Add,\n Edit,\n Delete\n}\n\nexport enum FieldGroupTypeEnum {\n Tab,\n Fieldset,\n Logical\n}\n\nexport type FieldConfig = object;\n\nexport interface FieldLookupConfig extends FieldConfig {\n table?: {\n captionComponent?: Type<any>;\n columnActionComponent?: Type<any>;\n };\n}\n","import {FieldAsyncBaseValidator, FieldBaseValidator, FieldValidationMessage} from '../models/field-validation.model';\n\nexport type FieldValidationDescriptorOptsType<Property = string> = {errorPath?: Property};\n\nexport class FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel = undefined> {\n private readonly _name: string;\n private readonly _validator?: FieldBaseValidator<FieldValue, EditorValue, ParentEditorModel> | FieldAsyncBaseValidator<FieldValue, EditorValue, ParentEditorModel>;\n private readonly _message?: FieldValidationMessage<FieldValue, EditorValue, ParentEditorModel>;\n private readonly _options?: FieldValidationDescriptorOptsType;\n\n constructor(\n name: string,\n validator?: FieldBaseValidator<FieldValue, EditorValue, ParentEditorModel> | FieldAsyncBaseValidator<FieldValue, EditorValue, ParentEditorModel>,\n message?: FieldValidationMessage<FieldValue, EditorValue, ParentEditorModel>,\n options?: FieldValidationDescriptorOptsType\n ) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get validator() {\n return this._validator;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\n }\n\n public copy(): FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel> {\n const opt = this._options ? {...this._options} : undefined;\n return new FieldValidationDescriptor<FieldValue, EditorValue, ParentEditorModel>(this._name, this._validator, this._message, opt);\n }\n}\n","import {FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType, FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, Subject} from 'rxjs';\n\nimport {GetterFn, objectDeepCopy} from '@mediusinc/mng-commons/core';\n\nimport {FieldAsyncBaseValidator, FieldAsyncValidator, FieldBaseValidator, FieldValidationMessage, FieldValidator} from '../models/field-validation.model';\nimport {FieldConfig, FieldSizeEnum} from '../models/field.model';\nimport {FormFieldEvent, FormFieldEventData, FormFieldEventTypeEnum} from '../models/form-editor.event';\nimport {CommonsFormlyFieldConfig, CommonsFormlyHookFn} from '../models/formly-field.model';\nimport {FieldValidationDescriptor} from './field-validation.descriptor';\n\nexport const fieldDescriptorEmptyLabelType = '_emptyLabel';\n\nexport abstract class AGenericFieldDescriptor {\n protected _config: FieldConfig = {};\n protected _formlyConfig: FormlyFieldConfig = {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected constructor() {}\n\n public get config() {\n return this._config;\n }\n\n public get formlyConfig() {\n return this._formlyConfig;\n }\n\n public withConfig(config: FieldConfig): this {\n this._config = config;\n return this;\n }\n\n public withFormlyConfig(formlyConfig: FormlyFieldConfig): this {\n this._formlyConfig = formlyConfig;\n return this;\n }\n\n /**\n * Override toJSON implementation to prevent overflow with circular dependency.\n * @ignore\n */\n protected toJSON(): string {\n const jsonObj = {\n ...this,\n _editor: undefined\n };\n const jsonObjStr = JSON.stringify(jsonObj);\n return jsonObjStr;\n }\n}\n\nexport type FieldValidationOptsType = {\n forceShowMessage?: boolean;\n};\n\nexport type FieldClassNameType = {\n field?: string;\n grid?: string;\n wrapper?: string;\n label?: string;\n control?: string;\n input?: string;\n};\n\nexport abstract class AFieldDescriptor<FieldModel, EditorModel, FieldValue = FieldModel, ParentEditorModel = undefined> extends AGenericFieldDescriptor {\n /** @ignore */ protected readonly _property: string;\n /** @ignore */ protected _label?: string | null;\n /** @ignore */ protected _labelUseModelBase?: boolean;\n /** @ignore */ protected _labelInfoTooltip?: string;\n /** @ignore */ protected _labelInfoTooltipIcon?: string;\n\n /** @ignore */ protected _placeholder?: string;\n /** @ignore */ protected _helpText?: string;\n\n /** @ignore */ protected _required = false;\n /** @ignore */ protected _requiredHideLabelMarker = false;\n /** @ignore */ protected _disabled = false;\n /** @ignore */ protected _defaultValue?: FieldValue;\n /** @ignore */ protected _getter?: GetterFn<FieldValue, EditorModel>;\n /** @ignore */ protected _setter?: (item: EditorModel, value: FieldValue) => void;\n /** @ignore */ protected _validations: Array<FieldValidationDescriptor<any, any, any>> = [];\n /** @ignore */ protected _asyncValidations: Array<FieldValidationDescriptor<any, any, any>> = [];\n /** @ignore */ protected _validationOpts: FieldValidationOptsType = {};\n /** @ignore */ protected _requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _hiddenExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _hiddenResetOnHide?: boolean;\n /** @ignore */ protected _updateOn: 'change' | 'blur' | 'submit' = 'change';\n\n /** @ignore */ protected _onInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _onChanges?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _afterContentInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _afterViewInit?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n /** @ignore */ protected _onDestroy?: CommonsFormlyHookFn<FieldValue, EditorModel>;\n\n /** @ignore */ protected _onValueChange?: (field: CommonsFormlyFieldConfig<FieldValue, EditorModel>, value: any) => void;\n\n /** @ignore */ protected _className?: FieldClassNameType;\n /** @ignore */ protected _size: FieldSizeEnum = FieldSizeEnum.Normal;\n\n // localization\n /** @ignore */ protected _isLocalized = false;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<FormFieldEvent<FieldValue, EditorModel, ParentEditorModel>>();\n\n protected constructor(property: string) {\n super();\n this._property = property;\n }\n\n public get property() {\n return this._property;\n }\n\n public get label() {\n return this._label;\n }\n\n public get labelUseModelBase() {\n return this._labelUseModelBase;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get helpText() {\n return this._helpText;\n }\n\n public get labelInfoTooltip() {\n return this._labelInfoTooltip;\n }\n\n public get labelInfoTooltipIcon() {\n return this._labelInfoTooltipIcon;\n }\n\n public get required() {\n return this._required;\n }\n\n public get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get setter() {\n return this._setter;\n }\n\n public get validations() {\n return this._validations;\n }\n\n public get asyncValidations() {\n return this._asyncValidations;\n }\n\n public get validationOpts() {\n return this._validationOpts;\n }\n\n public get requiredExpression() {\n return this._requiredExpression;\n }\n\n public get disabledExpression() {\n return this._disabledExpression;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n public get hiddenResetOnHide() {\n return this._hiddenResetOnHide;\n }\n\n public get updateOn() {\n return this._updateOn;\n }\n\n public get onInit() {\n return this._onInit;\n }\n\n public get onChanges() {\n return this._onChanges;\n }\n\n public get afterContentInit() {\n return this._afterContentInit;\n }\n\n public get afterViewInit() {\n return this._afterViewInit;\n }\n\n public get onDestroy() {\n return this._onDestroy;\n }\n\n public get onValueChange() {\n return this._onValueChange;\n }\n\n public get className() {\n return this._className;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public abstract copy(): AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>;\n\n /**\n * Set label for field.\n * @param label Full label (i18n path or other string). If null, no label will be used.\n * @param useModelBase If set to true, label will be appended to model's i18n base path.\n */\n public withLabel(label: string | null, useModelBase?: boolean): this {\n this._label = label;\n this._labelUseModelBase = useModelBase;\n return this;\n }\n\n public withEmptyLabel(): this {\n this._label = fieldDescriptorEmptyLabelType;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withHelpText(helpText: string): this {\n this._helpText = helpText;\n return this;\n }\n\n /**\n * Sets the label tooltip and optionally a custom icon for the field.\n *\n * @param {string} tooltip - The tooltip text to be displayed.\n * @param {string} [customIcon] - An optional custom icon to be used for the tooltip. If not provided, the default icon is used.\n */\n public withLabelInfoTooltip(tooltip: string, customIcon?: string): this {\n this._labelInfoTooltip = tooltip;\n this._labelInfoTooltipIcon = customIcon ?? this._labelInfoTooltipIcon;\n return this;\n }\n\n public withRequired(required = true, requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, hideLabelMarker = false): this {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n\n public withDisabled(disabled = true, disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, resetOnHide?: boolean): this {\n this._hiddenExpression = hiddenExpression;\n this._hiddenResetOnHide = resetOnHide;\n return this;\n }\n\n public withUpdateOn(updateOn: 'change' | 'blur' | 'submit'): this {\n this._updateOn = updateOn;\n return this;\n }\n\n public withOnInit(onInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onInit = onInit;\n return this;\n }\n\n public withOnChanges(onChanges?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onChanges = onChanges;\n return this;\n }\n\n public withAfterContentInit(afterContentInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._afterContentInit = afterContentInit;\n return this;\n }\n\n public withAfterViewInit(afterViewInit?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._afterViewInit = afterViewInit;\n return this;\n }\n\n public withOnDestroy(onDestroy?: CommonsFormlyHookFn<FieldValue, EditorModel>): this {\n this._onDestroy = onDestroy;\n return this;\n }\n\n public withOnValueChange(onValueChange?: (field: CommonsFormlyFieldConfig<FieldValue, EditorModel>, value: FieldValue) => void): this {\n this._onValueChange = onValueChange;\n return this;\n }\n\n public withDefaultValue(defaultValue: FieldValue): this {\n this._defaultValue = defaultValue;\n return this;\n }\n\n public withGetter(fn?: GetterFn<FieldValue, EditorModel>): this {\n this._getter = fn;\n return this;\n }\n\n public withSetter(fn?: (item: EditorModel, value: FieldValue) => void): this {\n this._setter = fn;\n return this;\n }\n\n public withValidation<Value = FieldValue, EditorValue = EditorModel>(\n name: string,\n validator?: FieldValidator<Value, EditorValue, ParentEditorModel>,\n message?: FieldValidationMessage<Value, EditorValue, ParentEditorModel>\n ): this {\n this._validations.push(new FieldValidationDescriptor(name, validator as FieldBaseValidator<Value, EditorValue, ParentEditorModel>, message));\n return this;\n }\n\n public removeValidation(name: string): this {\n this._validations = this._validations.filter(v => v.name !== name);\n return this;\n }\n\n public withAsyncValidation<Value = FieldValue, EditorValue = EditorModel>(\n name: string,\n asyncValidator?: FieldAsyncValidator<Value, EditorValue>,\n message?: FieldValidationMessage<Value, EditorValue>\n ): this {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator as FieldAsyncBaseValidator<Value, EditorValue>, message));\n return this;\n }\n\n public removeAsyncValidation(name: string): this {\n this._asyncValidations = this._asyncValidations.filter(v => v.name !== name);\n return this;\n }\n\n public withValidationOpts(validationOpts: FieldValidationOptsType): this {\n this._validationOpts = validationOpts;\n return this;\n }\n\n public withClassName(opts?: string | FieldClassNameType): this {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n } else {\n this._className = opts;\n }\n return this;\n }\n\n public withSize(size: FieldSizeEnum = FieldSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n /**\n * This function adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n */\n public localized(): this {\n this._isLocalized = true;\n return this;\n }\n\n public nextEvent(\n type: FormFieldEventTypeEnum,\n component: FieldType<CommonsFormlyFieldConfig<FieldValue, EditorModel, any>>,\n data?: FormFieldEventData<FieldValue, EditorModel>\n ) {\n this._eventsSubject.next({\n type: type,\n fieldComponent: component,\n formComponent: component.props.formEditorComponent,\n form: component?.form as FormGroup,\n fieldFormControl: component.formControl as FormControl,\n fieldFormlyConfig: component.field,\n data: data\n });\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>) {\n obj._config = objectDeepCopy(this._config);\n obj._formlyConfig = objectDeepCopy(this._formlyConfig);\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._labelInfoTooltip = this._labelInfoTooltip;\n obj._labelInfoTooltipIcon = this._labelInfoTooltipIcon;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._hiddenResetOnHide = this._hiddenResetOnHide;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className ? {...this._className} : undefined;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n obj._validationOpts = {...this._validationOpts};\n }\n}\n","import {Observable} from 'rxjs';\n\nimport {StyleLevelEnum} from '@mediusinc/mng-commons/core';\nimport {IActionButtonDescriptor} from '@mediusinc/mng-commons/form/api';\n\nimport {FieldActionContext, FieldActionResult} from '../models/field-action-context.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldActionRunFnType<EditorModel, ParentEditorModel = undefined> = (\n ctx: FieldActionContext<EditorModel, ParentEditorModel>\n) => void | FieldActionResult | Observable<FieldActionResult>;\n\nexport class FieldActionDescriptor<EditorModel, ParentEditorModel = undefined> extends AFieldDescriptor<void, EditorModel, void, ParentEditorModel> {\n protected readonly _fieldActionName: string;\n\n protected _button?: IActionButtonDescriptor;\n\n protected _runFunction?: FieldActionRunFnType<EditorModel>;\n\n private _wrappers = ['field'];\n\n constructor(property: string) {\n super(property);\n this._fieldActionName = property;\n }\n\n public get button() {\n return this._button;\n }\n\n public get runFunction() {\n return this._runFunction;\n }\n\n public get wrappers() {\n return this._wrappers;\n }\n\n public withButton(label?: string | null, icon: string | null = null, level = StyleLevelEnum.Default): this {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n\n public withButtonOpts(button?: IActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withRunFunction(fn: FieldActionRunFnType<EditorModel>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withWrappers(wrappers: string[]): this {\n this._wrappers = wrappers;\n return this;\n }\n\n public copy(): FieldActionDescriptor<EditorModel, ParentEditorModel> {\n const field = new FieldActionDescriptor<EditorModel, ParentEditorModel>(this._property);\n this.copyFieldsTo(field);\n field._button = {...this._button, style: {...this._button?.style}};\n field._runFunction = this._runFunction?.bind(field);\n field._wrappers = [...this._wrappers];\n return field;\n }\n}\n","import {Observable} from 'rxjs';\n\nimport {objectDeepCopy} from '@mediusinc/mng-commons/core';\n\nimport {EDITOR_DEFAULT_GROUP_NAME} from '../models/editor.model';\nimport {FieldBaseValidator, FormValidationMessage, FormValidator} from '../models/field-validation.model';\nimport {FieldGroupTypeEnum} from '../models/field.model';\nimport {CommonsFormlyFieldConfig} from '../models/formly-field.model';\nimport {AFieldDescriptor, AGenericFieldDescriptor, FieldValidationOptsType} from './field-base.descriptor';\nimport {FieldValidationDescriptor, FieldValidationDescriptorOptsType} from './field-validation.descriptor';\n\nexport abstract class AFieldGroupDescriptor<EditorModel, ParentEditorModel = undefined> extends AGenericFieldDescriptor {\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string | null;\n protected _fields: AGenericFieldDescriptor[] = [];\n protected _validations: Array<FieldValidationDescriptor<any, any, any>> = [];\n protected _validationOpts: FieldValidationOptsType = {};\n protected _hiddenExpression?: string | ((field?: CommonsFormlyFieldConfig<EditorModel, EditorModel>) => boolean) | Observable<boolean>;\n\n protected constructor(name: string) {\n super();\n this._name = name;\n this._default = name === EDITOR_DEFAULT_GROUP_NAME;\n }\n\n public removeField(property: string, filterFunction: (fields: AGenericFieldDescriptor[]) => AGenericFieldDescriptor[]): AGenericFieldDescriptor[] {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n\n public get title() {\n return this._title;\n }\n\n abstract get type(): FieldGroupTypeEnum;\n\n abstract get fields(): AGenericFieldDescriptor[];\n\n public get validations() {\n return this._validations;\n }\n\n public get validationOpts() {\n return this._validationOpts;\n }\n\n public get name() {\n return this._name;\n }\n\n public get default() {\n return this._default;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n abstract addField(field: AGenericFieldDescriptor): this;\n\n abstract copy(): AFieldGroupDescriptor<EditorModel, ParentEditorModel>;\n\n public withTitle(title?: string | null): this {\n this._title = title;\n return this;\n }\n\n public withValidation<Value = EditorModel, ParentValue = ParentEditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentValue>,\n message?: FormValidationMessage<Value, ParentValue>,\n opts?: FieldValidationDescriptorOptsType\n ) {\n this._validations.push(\n new FieldValidationDescriptor<Value, Value, ParentValue>(name, validator as FieldBaseValidator<Value, Value, ParentValue> | undefined, message, opts)\n );\n return this;\n }\n\n public withValidationOpts(validationOpts: FieldValidationOptsType): this {\n this._validationOpts = validationOpts;\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((field?: CommonsFormlyFieldConfig<EditorModel, EditorModel>) => boolean) | Observable<boolean>): this {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<EditorModel> extends AFieldGroupDescriptor<EditorModel> {\n protected override _fields: FieldGroupDescriptor<EditorModel>[] = [];\n\n constructor(name: string) {\n super(name);\n }\n\n public override get type() {\n return FieldGroupTypeEnum.Tab;\n }\n\n public get fields(): Array<FieldGroupDescriptor<EditorModel>> {\n return this._fields as Array<FieldGroupDescriptor<EditorModel>>;\n }\n\n public addField(field: FieldGroupDescriptor<EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public copy(skipFields = false): FieldTabGroupDescriptor<EditorModel> {\n const tab = new FieldTabGroupDescriptor<EditorModel>(this.name);\n tab._config = objectDeepCopy(this._config);\n tab._formlyConfig = objectDeepCopy(this._formlyConfig);\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy(skipFields));\n tab._validations = this.validations.map(v => v.copy());\n tab._validationOpts = {...this._validationOpts};\n tab._hiddenExpression = this._hiddenExpression;\n\n return tab;\n }\n}\n\ntype FieldGroupClassNameType = {\n grid?: string;\n};\n\nexport class FieldGroupDescriptor<EditorModel, ParentEditorModel = undefined> extends AFieldGroupDescriptor<EditorModel, ParentEditorModel> {\n private _type = FieldGroupTypeEnum.Fieldset;\n\n protected _className?: FieldGroupClassNameType;\n\n constructor(name: string) {\n super(name);\n if (this._default) {\n this.asLogical();\n }\n }\n\n public override get type() {\n return this._type;\n }\n\n public get fields(): Array<AFieldDescriptor<any, EditorModel>> {\n return this._fields as Array<AFieldDescriptor<any, EditorModel>>;\n }\n\n /**\n * Styling class name configurations for group.\n */\n public get className() {\n return this._className;\n }\n\n public addField(field: AFieldDescriptor<any, EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public asLogical(): this {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n\n public withClassName(opts?: string | FieldGroupClassNameType): this {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n } else {\n this._className = opts;\n }\n return this;\n }\n\n public copy(skipFields = false): FieldGroupDescriptor<EditorModel> {\n const group = new FieldGroupDescriptor<EditorModel>(this.name);\n group._config = objectDeepCopy(this._config);\n group._formlyConfig = objectDeepCopy(this._formlyConfig);\n group._type = this._type;\n group._title = this._title;\n group._hiddenExpression = this._hiddenExpression;\n\n if (!skipFields) {\n group._fields = this.fields.map(f => f.copy());\n }\n group._validations = this.validations.map(v => v.copy());\n group._validationOpts = {...this._validationOpts};\n\n group._className = this._className ? {...this._className} : undefined;\n\n return group;\n }\n}\n","import {\n EnumConstantType,\n EnumValue,\n IDataProvider,\n ILookupDataProvider,\n ILookupDescriptor,\n LookupDataProviderLookupFnType,\n ServiceClassType,\n fromEnumConstantsAsValueArray,\n fromEnumValuesAsValueArray,\n getEnumConstantName\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType, LookupDataProviderInst} from '@mediusinc/mng-commons/form/api';\nimport {EnumDescriptor} from '@mediusinc/mng-commons/model';\nimport {ITableDataProvider, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {FieldLookupConfig, FieldLookupTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldLookupDescriptorConstructorOptsType<EditorModel, Service, Sorts, Filters extends keyof any> = FieldLookupDescriptorCreateOptsProviderType<\n EditorModel,\n Service,\n Sorts,\n Filters\n> & {\n optionsValueProperty?: string;\n};\n\nexport type FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service, Sorts = keyof FieldModel, Filters extends keyof any = keyof FieldModel> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: ILookupDataProvider<FieldModel, Service, Sorts, Filters>;\n};\n\nexport type FieldLookupProviderType<FieldModel, Service> = ServiceClassType<Service> | ILookupDataProvider<FieldModel, Service, any, any>;\n\nexport type FieldLookupAutocompleteOptsType = {\n openOnFocus?: boolean;\n inlineSearch?: boolean;\n selectFirst?: boolean;\n autoClear?: boolean;\n};\n\nexport const fieldLookupGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldLookupProviderType<FieldModel, Service>) => {\n const cfg: FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as ILookupDataProvider<FieldModel, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldLookupDescriptor<\n FieldModel,\n EditorModel,\n Service = any,\n FieldValue = FieldModel,\n ParentEditorModel = undefined,\n Sorts = keyof FieldModel,\n Filters extends keyof any = keyof FieldModel\n >\n extends AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>\n implements ILookupDescriptor<FieldModel, Service, Sorts, Filters>\n{\n protected readonly _dataProvider: ILookupDataProvider<FieldModel, Service, Sorts, Filters>;\n protected readonly _optionsValueProperty?: string; // this defines VT!\n\n protected _lookupType: FieldLookupTypeEnum = FieldLookupTypeEnum.Dropdown;\n protected _optionsLabelProperty?: string;\n protected _optionsLabelTranslate = false;\n protected _optionsDisabledProperty?: string;\n protected _optionsTrackProperty?: string;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus?: boolean;\n protected _autocompleteInlineSearch?: boolean;\n protected _autocompleteAutoClear?: boolean;\n protected _autocompleteSelectFirst?: boolean;\n protected _autocompleteInputTrim?: InputTrimType;\n\n protected _dialogTableDescriptor?: TableDescriptorInst<FieldModel, any, any>;\n protected _dialogTableDataProvider?: ITableDataProvider<FieldModel, any, any, any>;\n\n protected _customComponentName?: string;\n\n constructor(property: string, cfg?: FieldLookupDescriptorConstructorOptsType<FieldModel, Service, Sorts, Filters>) {\n super(property as string);\n\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n } else {\n this._dataProvider = new LookupDataProviderInst(cfg?.serviceType);\n }\n\n this._optionsValueProperty = cfg?.optionsValueProperty;\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n\n public get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n\n public get optionsValueProperty() {\n return this._optionsValueProperty;\n }\n\n public get optionsDisabledProperty() {\n return this._optionsDisabledProperty;\n }\n\n public get optionsTrackProperty() {\n return this._optionsTrackProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n\n public get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n\n public get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public get trimOption() {\n return this._autocompleteInputTrim;\n }\n\n public withOptionsLabelProperty(property: keyof FieldModel, translate = false): this {\n return this.withOptionsLabelPropertyUnsafe(property as string, translate);\n }\n\n public withOptionsLabelPropertyUnsafe(property: string, translate = false): this {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n\n public withOptionsDisabledProperty(property: keyof FieldModel): this {\n return this.withOptionsDisabledPropertyUnsafe(property as string);\n }\n\n public withOptionsDisabledPropertyUnsafe(property: string): this {\n this._optionsDisabledProperty = property;\n return this;\n }\n\n public withOptionsTrackProperty(property: keyof FieldModel): this {\n return this.withOptionsTrackPropertyUnsafe(property as string);\n }\n\n public withOptionsTrackPropertyUnsafe(property: string): this {\n if (this._optionsValueProperty) {\n return this;\n }\n this._optionsTrackProperty = property;\n return this;\n }\n\n public withLookup(lookup?: LookupDataProviderLookupFnType<FieldModel, Service, Sorts, Filters>): this {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n\n public withInputTrim(trimOption: InputTrimType = 'both'): this {\n this._autocompleteInputTrim = trimOption;\n return this;\n }\n\n public override withConfig(config: FieldLookupConfig): this {\n return super.withConfig(config);\n }\n\n public asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteSelectFirst = opts?.selectFirst;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n\n public asDialog<Sorts = keyof FieldModel, Filters extends keyof any = keyof FieldModel>(\n lookupTableDescriptor: TableDescriptorInst<FieldModel, Sorts, Filters>,\n tableDataProvider?: ITableDataProvider<FieldModel, any, Sorts, Filters>\n ): this {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n return this;\n }\n\n public asCustomComponent(customComponentName: string): this {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n\n public copy(): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel, Sorts, Filters> {\n const field = new FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel, Sorts, Filters>(this._property, {\n dataProvider: this._dataProvider,\n optionsValueProperty: this._optionsValueProperty\n });\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsLabelTranslate = this._optionsLabelTranslate;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\n\nexport class FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel = undefined> extends FieldLookupDescriptor<\n EnumValue,\n EditorModel,\n undefined,\n EnumConstantType,\n ParentEditorModel,\n never,\n never\n> {\n private readonly _enumModel: EnumDescriptor<Enum>;\n private readonly _optionEnumValues: EnumValue[];\n private readonly _options: Enum[] | undefined; // used to ensure proper copying\n\n constructor(property: string, enumModel: EnumDescriptor<Enum>, options?: Array<Enum>) {\n super(property, {\n dataProvider: new LookupDataProviderInst<EnumValue, undefined, never, never, undefined>(undefined),\n optionsValueProperty: 'value'\n });\n this._enumModel = enumModel;\n this._options = options;\n this._optionEnumValues = Array.isArray(options)\n ? fromEnumValuesAsValueArray<Enum>(this._enumModel.type, options, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(this._enumModel.type, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined);\n this.withLookup(() => this._optionEnumValues);\n this.withOptionsLabelProperty('title', this._enumModel.i18nBaseKey !== null);\n this.withOptionsDisabledProperty('disabled');\n }\n\n public get enumModel() {\n return this._enumModel;\n }\n\n public withDisabledOptions(...disabledOptions: Array<EnumConstantType>): this {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n\n public withDefaultValueEnum(defaultValue: EnumConstantType): this {\n const defaultOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(option[this._optionsValueProperty as keyof object]);\n }\n }\n return this;\n }\n\n public override asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n\n public override copy(): FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel> {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel>(this._property, this._enumModel, this._options);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n return field;\n }\n}\n","import {IDataProvider, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider, TableDataProviderGetAllFnType, TableDataProviderInst, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {TableviewDescriptorInst} from '../../tableview/descriptors/tableview.descriptor';\nimport {FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum} from '../models/field.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service> = FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service>;\n\nexport type FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {\n lookupServiceType?: ServiceClassType<Service>;\n lookupDataProvider?: ITableDataProvider<FieldModel, Service>;\n};\n\nexport type FieldManyToManyEditorProviderType<FieldModel, Service> = ServiceClassType<Service> | ITableDataProvider<FieldModel, Service>;\n\nexport const fieldManyToManyGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldManyToManyEditorProviderType<FieldModel, Service>) => {\n const cfg: FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.lookupDataProvider = serviceOrDataProvider as ITableDataProvider<FieldModel, Service>;\n } else {\n cfg.lookupServiceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service = any, FieldValue = FieldModel[], ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private readonly _mainTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for main table component\n private readonly _lookupTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for where select will be applied\n private readonly _lookupTableDataProvider: ITableDataProvider<FieldModel, Service>;\n private _fieldType: FieldManyToManyEditorTypeEnum = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n private _actions: Array<FieldManyToManyEditorActionEnum> = [FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete];\n private _hasLookupExcludeValues = false;\n private _excludeFilterProperty = '';\n private _excludeValueProperty = '';\n\n constructor(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n cfg?: FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service>\n ) {\n super(property);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n\n if (cfg?.lookupDataProvider) {\n this._lookupTableDataProvider = cfg.lookupDataProvider;\n } else {\n this._lookupTableDataProvider = new TableDataProviderInst(cfg?.lookupServiceType);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n\n public get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n\n public get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n\n public get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n\n public withLookup(fn: TableDataProviderGetAllFnType<FieldModel, Service>): this {\n this._lookupTableDataProvider.withGetAll(fn);\n return this;\n }\n\n public withActions(actions: Array<FieldManyToManyEditorActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: keyof FieldModel, valueProperty: keyof FieldModel, hasLookupExclude = true): this {\n return this.withLookupExcludeUnsafe(filterProperty as string, valueProperty as string, hasLookupExclude);\n }\n\n public withLookupExcludeUnsafe(filterProperty: string, valueProperty: string, hasLookupExclude = true): this {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n\n public copy(): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel> {\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel>(\n this._property,\n this._mainTableDescriptor.copy(),\n this._lookupTableDescriptor.copy(),\n {\n lookupDataProvider: this.lookupTableDataProvider\n }\n );\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\n\nexport class FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue = FieldModel[], ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private readonly _tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel, FieldModel, FieldModel, FieldModel, FieldModel>;\n private _fieldType: FieldManyEditorTypeEnum = FieldManyEditorTypeEnum.DialogEditor;\n private _fieldActions: Array<FieldManyEditorActionEnum> = [];\n // we allow any action (item is not defined, the same goes for other generics). Developer should define types depending on action's specifics\n private _actions: Array<ActionDescriptorInst<any>> = [];\n\n constructor(property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel, FieldModel, FieldModel, FieldModel, FieldModel>) {\n super(property);\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get fieldActions() {\n return this._fieldActions;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n\n public get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n\n public get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n\n public get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n\n public get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n\n public withFieldAction(action: FieldManyEditorActionEnum): this {\n this._fieldActions.push(action);\n return this;\n }\n\n public withFieldActions(actions: FieldManyEditorActionEnum[]): this {\n this._fieldActions = actions;\n return this;\n }\n\n public withAction(action: ActionDescriptorInst<any>): this {\n this._actions.push(action);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>(this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n field._actions = this._actions.map(a => a.copy());\n return field;\n }\n}\n","import {Type} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\n\nimport {ItemOrObservable, fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray} from '@mediusinc/mng-commons/core';\nimport {EmptyValueType, InputTrimType} from '@mediusinc/mng-commons/form/api';\nimport {EnumDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {FieldImagePreviewComponent} from '../models/field-image-preview.model';\nimport {FieldInputTypeEnum} from '../models/field.model';\nimport {AFormlyCustomFieldComponent} from '../models/formly-custom-field.model';\nimport {CommonsFormlyFieldConfig} from '../models/formly-field.model';\nimport {RadioValue} from '../models/radio.model';\nimport {AFieldDescriptor} from './field-base.descriptor';\n\nexport type FieldInputDescriptorType = string | string[] | number | boolean | Date | File | File[];\n\ntype FieldInputOptsType = {\n emptyValue?: EmptyValueType;\n};\n\ntype FieldInpuTextBaseOptsType = {\n trim?: InputTrimType;\n};\n\nexport type FieldInputTextOptsType = {\n email?: boolean;\n} & FieldInputTextValidationOptsType &\n FieldInpuTextBaseOptsType &\n FieldInputOptsType;\n\nexport type FieldInputTextareaOptsType = {\n rows?: number;\n} & FieldInputTextValidationOptsType &\n FieldInpuTextBaseOptsType &\n FieldInputOptsType;\n\nexport type FieldInputMaskOptsType = {\n mask: string;\n slotChar?: string;\n} & FieldInputOptsType;\n\nexport type FieldInputTextValidationOptsType = {\n minLength?: number;\n maxLength?: number;\n pattern?: string | RegExp;\n};\n\nexport type FieldInputDatePickerDisplayOptsType = {\n format?: string;\n showTime?: boolean;\n showSeconds?: boolean;\n};\n\nexport type FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> = {\n min?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n max?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n};\n\nexport type FieldInputCurrencyOptsType<Property = string> = {\n currencyProperty?: Property;\n currency?: string;\n currencyDisplay?: 'symbol' | 'code' | 'name';\n} & FieldInputNumberGroupingOptsType &\n FieldInputNumberFractionOptsType &\n FieldInputNumberValidationOptsType &\n FieldInputLocaleOptsType &\n FieldInputOptsType;\n\nexport type FieldInputNumberOptsType = FieldInputNumberGroupingOptsType &\n FieldInputNumberFractionOptsType &\n FieldInputNumberValidationOptsType &\n FieldInputLocaleOptsType &\n FieldInputNumberDisplayOptsType &\n FieldInputOptsType;\n\nexport type FieldInputNumberGroupingOptsType = {\n groupSeparator?: boolean;\n};\n\nexport type FieldInputNumberValidationOptsType = {\n min?: number;\n max?: number;\n step?: number;\n autoCorrect?: boolean;\n};\n\nexport type FieldInputNumberFractionOptsType = {\n minFractionDigits?: number;\n maxFractionDigits?: number;\n};\n\nexport type FieldInputLocaleOptsType = {\n locale?: string;\n};\n\nexport type FieldInputNumberDisplayOptsType = {\n prefix?: string;\n suffix?: string;\n};\n\nexport type FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel> = FieldInputDatePickerDisplayOptsType &\n FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> &\n FieldDateOptsType;\n\nexport type FieldDateOptsType = {\n asDateObj?: boolean;\n utc?: boolean;\n noTime?: boolean;\n noTimeZone?: boolean;\n};\n\nexport type FieldInputFileOpts = {\n multiple?: boolean;\n maxFileSize?: number;\n accept?: string;\n onFileSelectHandlerFn?: FieldInputFileOnSelectHandlerFnType;\n preview?: boolean;\n previewAllowSvg?: boolean;\n previewComponent?: Type<FieldImagePreviewComponent>;\n};\n\nexport type FieldInputImageUrlOpts = {\n multiple?: boolean;\n preview?: boolean;\n inputVisibleOnDisabled?: boolean;\n previewAllowSvg?: boolean;\n previewComponent?: Type<FieldImagePreviewComponent>;\n};\n\nexport type FieldInputComponentOpts = {\n fieldWrappers?: string[];\n inputs?: Record<string, any>;\n};\n\nexport type FieldInputFileOnSelectHandlerFnType = (file: File[] | null, control: AbstractControl) => void;\nexport type FieldInputDatePickerDynamicMinMaxFnType<Value, FormValue, ParentFormValue> = (\n control: AbstractControl<Value>,\n field: CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>\n) => ItemOrObservable<Date | undefined>;\n\nexport class FieldInputDescriptor<EditorModel, FieldModel = FieldInputDescriptorType, FieldValue = FieldModel, ParentEditorModel = undefined> extends AFieldDescriptor<\n FieldModel,\n EditorModel,\n FieldValue,\n ParentEditorModel\n> {\n private _fieldType: FieldInputTypeEnum = FieldInputTypeEnum.Text;\n\n // textarea specific properties\n private _rows?: number;\n\n // number specific properties\n private _numberMin?: number;\n private _numberMax?: number;\n private _numberStep?: number;\n private _numberAutoCorrect?: boolean;\n private _numberMinFractionDigits?: number;\n private _numberMaxFractionDigits?: number;\n private _numberUseGrouping = true;\n private _locale?: string;\n private _numberPrefix?: string;\n private _numberSuffix?: string;\n\n // currency specific properties\n private _currency?: string;\n private _currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol';\n private _currencyFromProperty?: string;\n\n // radio specific properties\n private _radioOptions: Array<RadioValue> = [];\n private _radioLabelClassName?: string;\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n private _datePickerMax?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;\n private _datePickerShowTime?: boolean;\n private _datePickerShowSeconds?: boolean;\n private _datePickerValueUtc?: boolean;\n private _datePickerValueNoTimezone?: boolean;\n private _datePickerValueNoTime?: boolean;\n private _datePickerValueAsDateObj?: boolean;\n\n // input specific properties\n private _maxLength?: number;\n private _minLength?: number;\n private _pattern?: string | RegExp;\n private _validationEmail?: boolean;\n private _textTrim?: InputTrimType;\n\n // mask specific properties\n private _mask?: string;\n private _slotChar?: string;\n\n // file specific properties\n private _fileMultiple?: boolean;\n private _fileMaxFileSize?: number;\n private _fileAccept?: string;\n private _fileOnSelectHandler?: FieldInputFileOnSelectHandlerFnType;\n\n // image specific properties\n private _imagePreview?: boolean;\n private _imageUrlInputHiddenOnDisabled?: boolean;\n private _imagePreviewAllowSvg?: boolean;\n private _imagePreviewComponent?: Type<FieldImagePreviewComponent>;\n\n // custom component properties\n private _customComponentType?: Type<AFormlyCustomFieldComponent<FieldValue, EditorModel, ParentEditorModel>>;\n private _customComponentInputs?: Record<string, any>;\n private _customComponentWrappers?: string[];\n\n // value control\n private _emptyValue?: EmptyValueType;\n\n constructor(property: string) {\n super(property);\n }\n\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n public asType(fieldType: FieldInputTypeEnum, ...args: any[]): this {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(args[0]);\n case FieldInputTypeEnum.Number:\n return this.asNumber(args[0]);\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(args[0]);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(args[0]);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0]);\n case FieldInputTypeEnum.File:\n return this.asFile(args[0]);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile(args[0]);\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl(args[0]);\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0], args[1]);\n case FieldInputTypeEnum.Text:\n return this.asText(args[0]);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get rows() {\n return this._rows;\n }\n\n public get numberMin() {\n return this._numberMin;\n }\n\n public get numberMax() {\n return this._numberMax;\n }\n\n public get numberStep() {\n return this._numberStep;\n }\n\n public get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get numberPrefix() {\n return this._numberPrefix;\n }\n\n public get numberSuffix() {\n return this._numberSuffix;\n }\n\n public get radioOptions() {\n return this._radioOptions;\n }\n\n public get radioLabelClassName() {\n return this._radioLabelClassName;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerMin() {\n return this._datePickerMin;\n }\n\n public get datePickerMax() {\n return this._datePickerMax;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get datePickerValueUtc() {\n return this._datePickerValueUtc;\n }\n\n public get datePickerValueNoTimezone() {\n return this._datePickerValueNoTimezone;\n }\n\n public get datePickerValueNoTime() {\n return this._datePickerValueNoTime;\n }\n\n public get datePickerValueAsDateObj() {\n return this._datePickerValueAsDateObj;\n }\n\n public get maxLength() {\n return this._maxLength;\n }\n\n public get minLength() {\n return this._minLength;\n }\n\n public get pattern() {\n return this._pattern;\n }\n\n public get textTrim() {\n return this._textTrim;\n }\n\n public get emptyValue() {\n return this._emptyValue;\n }\n\n public get validationEmail() {\n return this._validationEmail;\n }\n\n public get mask() {\n return this._mask;\n }\n\n public get slotChar() {\n return this._slotChar;\n }\n\n public get fileMultiple() {\n return this._fileMultiple;\n }\n\n public get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n\n public get fileAccept() {\n return this._fileAccept;\n }\n\n public get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n\n public get imagePreview() {\n return this._imagePreview;\n }\n\n public get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n\n public get imagePreviewAllowSvg() {\n return this._imagePreviewAllowSvg;\n }\n\n public get imagePreviewComponent() {\n return this._imagePreviewComponent;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get customComponentInputs() {\n return this._customComponentInputs;\n }\n\n public get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currency() {\n return this._currency;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public asHidden(): this {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n\n public asLabel(): this {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n\n public asText(opts?: FieldInputTextOptsType): this {\n this._fieldType = FieldInputTypeEnum.Text;\n return this.withTextValidation(opts)\n .withTextValidationEmail(opts?.email ?? false)\n .withTextCommonOpts(opts)\n .withInputCommonOpts(opts);\n }\n\n public asTextarea(opts?: FieldInputTextareaOptsType): this {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = opts?.rows;\n return this.withTextValidation(opts).withTextCommonOpts(opts).withInputCommonOpts(opts);\n }\n\n public asNumber(opts?: FieldInputNumberOptsType): this {\n this._fieldType = FieldInputTypeEnum.Number;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions(opts)\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withNumberDisplay(opts)\n .withInputCommonOpts(opts);\n }\n\n public asCurrency(opts?: FieldInputCurrencyOptsType<keyof EditorModel>): this {\n return this.asCurrencyUnsafe(<FieldInputCurrencyOptsType>{\n ...opts,\n currencyProperty: opts?.currencyProperty ? (opts.currencyProperty as string) : undefined\n }).withInputCommonOpts(opts);\n }\n\n public asCurrencyUnsafe(opts?: FieldInputCurrencyOptsType): this {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = opts?.currencyProperty;\n this._currency = opts?.currency ?? this._currency;\n this._currencyDisplay = opts?.currencyDisplay ?? this._currencyDisplay;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions({\n maxFractionDigits: opts?.maxFractionDigits ?? 2,\n minFractionDigits: opts?.minFractionDigits ?? 2\n })\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withInputCommonOpts(opts);\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string | number | boolean>, optionsTitlePath?: string): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => <RadioValue>{value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}`});\n return this;\n }\n\n public asRadioFromEnum<Enum>(enumModel: EnumDescriptor<Enum>, values?: Array<Enum>): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = Array.isArray(values)\n ? fromEnumValuesAsValueArray<Enum>(enumModel.type, values, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(enumModel.type, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined);\n return this;\n }\n\n public asDatePicker(opts?: FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel>): this {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n return this.withDateValidation(opts).withDatePickerDisplay(opts).withDateValue({\n asDateObj: opts?.asDateObj,\n utc: opts?.utc,\n noTimeZone: opts?.noTimeZone,\n noTime: opts?.noTime\n });\n }\n\n public asMask(opts?: FieldInputMaskOptsType): this {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = opts?.mask;\n this._slotChar = opts?.slotChar;\n return this.withInputCommonOpts(opts);\n }\n\n public asFile(opts?: FieldInputFileOpts): this {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = opts?.multiple;\n this._fileMaxFileSize = opts?.maxFileSize;\n this._fileAccept = opts?.accept;\n return this.withFileOnSelectHandler(opts?.onFileSelectHandlerFn);\n }\n\n public asImageFile(opts?: FieldInputFileOpts): this {\n this.asFile(opts);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n return this;\n }\n\n public asImageUrl(opts?: FieldInputImageUrlOpts): this {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = opts?.multiple;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n this._imageUrlInputHiddenOnDisabled = opts?.inputVisibleOnDisabled;\n return this;\n }\n\n public asCustomComponent(component: Type<AFormlyCustomFieldComponent<FieldValue, EditorModel, ParentEditorModel>>, opts?: FieldInputComponentOpts): this {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentType = component;\n this._customComponentInputs = opts?.inputs;\n this._customComponentWrappers = opts?.fieldWrappers;\n return this;\n }\n\n public withNumberValidation(opts?: FieldInputNumberValidationOptsType): this {\n this._numberStep = opts?.step;\n this._numberAutoCorrect = opts?.autoCorrect;\n this._numberMin = opts?.min;\n this._numberMax = opts?.max;\n return this;\n }\n\n public withLocale(locale?: string): this {\n this._locale = locale;\n return this;\n }\n\n public withNumberFractions(opts?: FieldInputNumberFractionOptsType) {\n this._numberMinFractionDigits = opts?.minFractionDigits;\n this._numberMaxFractionDigits = opts?.maxFractionDigits;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withNumberDisplay(opts?: FieldInputNumberDisplayOptsType): this {\n this._numberPrefix = opts?.prefix;\n this._numberSuffix = opts?.suffix;\n return this;\n }\n\n public withTextareaRows(rows?: number): this {\n this._rows = rows;\n return this;\n }\n\n public withTextValidation(opts?: FieldInputTextValidationOptsType): this {\n this._minLength = opts?.minLength;\n this._maxLength = opts?.maxLength;\n this._pattern = opts?.pattern;\n return this;\n }\n\n /**\n * Common options for text input element (i.e. value value trimming).\n * @param opts\n */\n public withTextCommonOpts(opts?: FieldInpuTextBaseOptsType): this {\n this._textTrim = opts?.trim;\n return this;\n }\n\n /**\n * Common options for input element (i.e. value on empty input).\n * @param opts\n */\n public withInputCommonOpts(opts?: FieldInputOptsType): this {\n this._emptyValue = opts?.emptyValue;\n return this;\n }\n\n public withDatePickerDisplay(opts?: FieldInputDatePickerDisplayOptsType): this {\n this._datePickerFormat = opts?.format;\n this._datePickerShowTime = opts?.showTime;\n this._datePickerShowSeconds = opts?.showSeconds;\n return this;\n }\n\n public withDateValidation(opts?: FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel>): this {\n this._datePickerMin = opts?.min;\n this._datePickerMax = opts?.max;\n return this;\n }\n\n public withRadioOptions(opts: {labelClassName?: string}): this {\n this._radioLabelClassName = opts.labelClassName;\n return this;\n }\n\n public withDateValue(opts?: FieldDateOptsType): this {\n this._datePickerValueAsDateObj = opts?.asDateObj;\n this._datePickerValueUtc = opts?.utc;\n this._datePickerValueNoTimezone = opts?.noTimeZone;\n this._datePickerValueNoTime = opts?.noTime;\n return this;\n }\n\n public withTextValidationEmail(email = true): this {\n this._validationEmail = email;\n return this;\n }\n\n public withFileOnSelectHandler(fn?: FieldInputFileOnSelectHandlerFnType): this {\n this._fileOnSelectHandler = fn;\n return this;\n }\n\n public copy(): FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel> {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel>(this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._numberPrefix = this._numberPrefix;\n field._numberSuffix = this._numberSuffix;\n field._radioOptions = [...this._radioOptions];\n field._radioLabelClassName = this._radioLabelClassName;\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._datePickerValueUtc = this._datePickerValueUtc;\n field._datePickerValueNoTimezone = this._datePickerValueNoTimezone;\n field._datePickerValueNoTime = this._datePickerValueNoTime;\n field._datePickerValueAsDateObj = this._datePickerValueAsDateObj;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._imagePreviewAllowSvg = this._imagePreviewAllowSvg;\n field._imagePreviewComponent = this._imagePreviewComponent;\n field._customComponentType = this._customComponentType;\n field._customComponentInputs = this._customComponentInputs;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n field._textTrim = this._textTrim;\n field._emptyValue = this._emptyValue;\n field._validationEmail = this._validationEmail;\n return field;\n }\n}\n","import {FormGroup} from '@angular/forms';\n\nimport {Subject} from 'rxjs';\n\nimport {ArrayItemType, CommonsInternalError, EnumConstantType, IEditorDescriptor} from '@mediusinc/mng-commons/core';\nimport {EnumDescriptor, ModelDescriptor} from '@mediusinc/mng-commons/model';\nimport {ITableDataProvider, TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {TableviewDescriptorInst} from '../../tableview/descriptors/tableview.descriptor';\nimport {FieldsManageAddFieldLookupOpts, IFieldsManageWithGetField} from '../models/editor-fields.model';\nimport {EDITOR_DEFAULT_GROUP_NAME, TableviewEditorTypeEnum} from '../models/editor.model';\nimport {FormValidationMessage, FormValidator} from '../models/field-validation.model';\nimport {FormEvent, FormEventData, FormEventTypeEnum} from '../models/form-editor.event';\nimport {IFormEditorComponent} from '../models/form-editor.interface';\nimport {FieldActionDescriptor} from './field-action.descriptor';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {FieldGroupDescriptor, FieldTabGroupDescriptor} from './field-group.descriptor';\nimport {FieldLookupDescriptor, FieldLookupEnumDescriptor, fieldLookupGetProviderCfgObj} from './field-lookup.descriptor';\nimport {FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj} from './field-many.descriptor';\nimport {FieldValidationDescriptorOptsType} from './field-validation.descriptor';\nimport {FieldInputDescriptor, FieldInputDescriptorType} from './field.descriptor';\nimport {EditorDescriptorNestedObjectWrapper} from './wrappers/editor-descriptor-nested-object-wrapper';\n\nexport class EditorDescriptorInst<EditorModel, ParentEditorModel = undefined>\n implements IEditorDescriptor<EditorModel, ParentEditorModel>, IFieldsManageWithGetField<EditorModel, ParentEditorModel>\n{\n public static readonly defaultGroupName = EDITOR_DEFAULT_GROUP_NAME;\n\n /** @ignore */ protected readonly _model: ModelDescriptor<EditorModel>;\n /** @ignore */ protected readonly _tableviewEditorType: TableviewEditorTypeEnum;\n /** @ignore */ protected readonly _tabs: Array<FieldTabGroupDescriptor<EditorModel>> = [];\n /** @ignore */ protected readonly _groups: Array<FieldGroupDescriptor<EditorModel, ParentEditorModel>> = [];\n /** @ignore */ protected _fields: Array<AFieldDescriptor<any, EditorModel>> = [];\n /** @ignore */ protected _currentTabGroup?: FieldTabGroupDescriptor<EditorModel>;\n /** @ignore */ protected _currentGroup?: FieldGroupDescriptor<EditorModel>;\n\n /** @ignore */ protected _autoSave?: boolean;\n /** @ignore */ protected _autoSaveIdentifier?: string;\n\n /** @ignore */ protected _autofocusOnField?: boolean;\n\n /** @ignore */ protected _disabled = false;\n\n /** @ignore */ protected _isLocalized = false;\n /** @ignore */ protected _localizationLocaleProperty?: string;\n /** @ignore */ protected _localizationModel?: ModelDescriptor<any>;\n /** @ignore */ protected _localizationLocalizationProperty?: string;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<FormEvent<EditorModel, ParentEditorModel>>();\n\n /**\n * Creates new instance of editor descriptor.\n * @param model Model descriptor.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n public constructor(model: ModelDescriptor<EditorModel>, tableviewEditorType = TableviewEditorTypeEnum.None) {\n this._model = model;\n this._tableviewEditorType = tableviewEditorType;\n }\n\n /**\n * Model descriptor for editor.\n */\n public get model() {\n return this._model;\n }\n\n /**\n * Editor's tabs.\n */\n public get tabs() {\n return this._tabs;\n }\n\n /**\n * Editor's fields.\n */\n public get fields() {\n return this._fields;\n }\n\n /**\n * Type of editor for tableview.\n */\n public get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n\n /**\n * If editor is disabled.\n */\n public get disabled() {\n return this._disabled;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n public get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n\n public get localizationModel() {\n return this._localizationModel;\n }\n\n public get autoSave() {\n return this._autoSave;\n }\n\n public get autoSaveIdentifier() {\n return this._autoSaveIdentifier;\n }\n\n public get autofocusOnField() {\n return this._autofocusOnField;\n }\n\n /**\n * Dives into nested object to add fields from the nested object on property.\n *\n * @experimental\n *\n * @param property Model property name.\n */\n public nested<Property extends keyof EditorModel>(property: Property): EditorDescriptorNestedObjectWrapper<EditorModel, ParentEditorModel, NonNullable<EditorModel[Property]>> {\n return new EditorDescriptorNestedObjectWrapper(this, property as string);\n }\n\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n * @return Newly created group descriptor.\n */\n public addTabGroup(name: string, title?: string): FieldTabGroupDescriptor<EditorModel> {\n const tabGroup = new FieldTabGroupDescriptor<EditorModel>(name);\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n */\n public withTabGroup(name: string, title?: string): this {\n this.addTabGroup(name, title);\n return this;\n }\n\n /**\n * Gets group by its name (key).\n * @param name Group's key.\n */\n public getGroup(name: string | number): FieldGroupDescriptor<EditorModel> | null {\n return typeof name === 'string' ? (this._groups.find(g => g.name === name) ?? null) : (this._groups[name] ?? null);\n }\n\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n * @return Newly created group descriptor.\n */\n public addFieldGroup(name: string, title?: string | null): FieldGroupDescriptor<EditorModel> {\n const fieldGroup = new FieldGroupDescriptor<EditorModel>(name);\n fieldGroup.withTitle(title);\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n */\n public withFieldGroup(name: string, title?: string): this {\n this.addFieldGroup(name, title);\n return this;\n }\n\n /**\n * Gets field by the model property name.\n * @param property Model property name.\n */\n public getField<Property extends keyof EditorModel, FieldModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property) {\n return this.getFieldUnsafe<FieldModel, FieldValue>(property as string);\n }\n\n /**\n * Gets field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public getFieldUnsafe<FieldModel, FieldValue = FieldModel>(property: string): AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> | null {\n return this._fields.find(f => f.property === property) ?? null;\n }\n\n /**\n * Removes field by the model property name.\n * @param property Model property name.\n */\n public removeField(property: keyof EditorModel): void {\n return this.removeFieldUnsafe(property as string);\n }\n\n /**\n * Removes field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public removeFieldUnsafe(property: string): void {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new CommonsInternalError(`Field ${property} does not exist.`, {name: 'EditorDescriptorError'});\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n\n /**\n * Adds field by the descriptor.\n * @param field Field descriptor.\n */\n public addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>): this {\n if (this._fields.some(f => f.property === field.property)) {\n throw new CommonsInternalError(`Field '${field.property}' already exists.`);\n }\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n\n /**\n * Adds field by the model property name.\n * @param property Model property name.\n */\n public addField<Property extends keyof EditorModel, FieldModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property) {\n return this.addFieldUnsafe<FieldModel, FieldValue>(property as string);\n }\n\n /**\n * Adds field by the model property name (UNSAFE). Property is not checked on editor model.\n * Use {addField} for safe usage.\n * @param property Model property name.\n */\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel>(property);\n this.addFieldDescriptor<FieldModel, FieldValue>(field);\n return field;\n }\n\n public withFields(...properties: (keyof EditorModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<EditorModel, ParentEditorModel> {\n const field = new FieldActionDescriptor<EditorModel, ParentEditorModel>(actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookup<\n Property extends keyof EditorModel,\n Service = undefined,\n LookupModel extends NonNullable<EditorModel[Property]> = NonNullable<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n >(property: Property, opts?: FieldsManageAddFieldLookupOpts<LookupModel, Service>) {\n return this.addFieldLookupUnsafe<LookupModel, Service, FieldValue>(property as string, opts);\n }\n\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupUnsafe<LookupModel, Service = undefined, FieldValue = LookupModel>(property: string, opts?: FieldsManageAddFieldLookupOpts<LookupModel, Service>) {\n const field = new FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue, ParentEditorModel>(property, {\n ...(opts?.serviceProvider ? fieldLookupGetProviderCfgObj(opts.serviceProvider) : {})\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum<Property extends keyof EditorModel, Enum extends NonNullable<EditorModel[Property]>>(\n property: keyof EditorModel,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n return this.addFieldLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n /**\n * Adds enum lookup field.\n * @param property Model's property name.\n * @param enumDesc Type of enum or enum descriptor.\n * @param options Provides subset of enum's available constants.\n */\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel>(property, enumDesc, options);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations.\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditor<Property extends keyof EditorModel, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel, FieldModel, FieldModel, FieldModel, FieldModel>\n ) {\n return this.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property as string, tableviewDescriptor);\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(\n property: string,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, EditorModel, FieldModel, FieldModel, FieldModel, FieldModel>\n ): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel> {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>(property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<Property extends keyof EditorModel, ServiceType, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel, any, any>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel, any, any>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType, any, any>\n ) {\n return this.addFieldManyToManyEditorUnsafe<FieldModel, ServiceType, FieldValue>(property as string, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n\n public addFieldManyToManyEditorUnsafe<FieldModel, ServiceType, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel, any, any>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel, any, any>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType, any, any>\n ): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue, ParentEditorModel> {\n const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue, ParentEditorModel>(\n property,\n mainTableDescriptor,\n lookupTableDescriptor,\n {\n ...cfg\n }\n );\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Disables field on editor.\n * @param disabled\n */\n public withDisabled(disabled = true): this {\n this._disabled = disabled;\n return this;\n }\n\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n public withValidation<Value = EditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType<keyof EditorModel>\n ) {\n return this.withValidationUnsafe(name, validator, message, opts as FieldValidationDescriptorOptsType);\n }\n\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n public withValidationUnsafe<Value = EditorModel>(\n name: string,\n validator?: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType\n ) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message, opts);\n }\n return this;\n }\n\n public withAutoSave(enabled = true, autoSaveIdentifier?: string): this {\n this._autoSave = enabled;\n this._autoSaveIdentifier = autoSaveIdentifier;\n return this;\n }\n\n public withAutofocusOnField(enabled = true): this {\n this._autofocusOnField = enabled;\n return this;\n }\n\n /**\n * Creates a copy of editor descriptor object.\n */\n public copy(): EditorDescriptorInst<EditorModel, ParentEditorModel> {\n const editor = new EditorDescriptorInst<EditorModel, ParentEditorModel>(this.model.copy(), this.tableviewEditorType);\n\n editor._fields = this._fields.map(f => f.copy());\n const fieldsMap = editor.fields.reduce((map, field) => {\n map.set(field.property, field);\n return map;\n }, new Map<string, any>());\n\n for (const tabGroup of this._tabs) {\n const tabGroupCopy = tabGroup.copy(true);\n // set fields\n for (let i = 0; i < tabGroup.fields.length; i++) {\n const group = tabGroup.fields[i];\n const groupCopy = tabGroupCopy.fields[i];\n\n for (let j = 0; j < group.fields.length; j++) {\n const fieldCopy = fieldsMap.get(group.fields[j].property);\n if (!fieldCopy) {\n throw new CommonsInternalError(`Could not copy editor descriptor: field '${group.fields[j].property}' (tab '${tabGroup.name}', group ${group.name}').`);\n }\n groupCopy.addField(fieldCopy);\n }\n editor._groups.push(groupCopy);\n }\n editor._tabs.push(tabGroupCopy);\n }\n\n editor._currentTabGroup = editor._tabs.length > 0 ? editor._tabs[editor._tabs.length - 1] : undefined;\n if (editor._currentTabGroup) {\n editor._currentGroup = editor._currentTabGroup.fields.length > 0 ? editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1] : undefined;\n }\n\n editor._disabled = this._disabled;\n editor._autoSave = this._autoSave;\n editor._autoSaveIdentifier = this._autoSaveIdentifier;\n editor._autofocusOnField = this._autofocusOnField;\n editor._isLocalized = this._isLocalized;\n editor._localizationLocaleProperty = this._localizationLocaleProperty;\n editor._localizationModel = this._localizationModel;\n editor._localizationLocalizationProperty = this._localizationLocalizationProperty;\n\n return editor;\n }\n\n /**\n * Created group from field group descriptor.\n * @param fieldGroup Field group descriptor.\n * @internal\n */\n public createFieldGroupDescriptor(fieldGroup: FieldGroupDescriptor<EditorModel, ParentEditorModel>): this {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n\n /**\n * Creates tab group from tab group descriptor.\n * @param tabGroup Tab group descriptor.\n * @internal\n */\n protected createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<EditorModel>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n /**\n * Creates default field group.\n * @internal\n */\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.addFieldGroup(EditorDescriptorInst.defaultGroupName, null);\n }\n }\n\n /**\n * Creates default tab group.\n * @internal\n */\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.addTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');\n }\n }\n\n /**\n * This function takes care of displaying correct/localized data in the editor\n * @param property property that tells us where on the model are localizations accessible\n * @param model Model for localizations\n * @param localeProperty property by which we find the locale\n */\n public localized<Property extends keyof EditorModel, LocalizationModel = ArrayItemType<EditorModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationType>(property: string, model: ModelDescriptor<LocalizationType>, localeProperty: string): this {\n this._localizationLocalizationProperty = property as string;\n this._localizationModel = model;\n this._localizationLocaleProperty = localeProperty as string;\n this._isLocalized = true;\n\n return this;\n }\n\n public nextEvent(type: FormEventTypeEnum, component: IFormEditorComponent<any, any>, data?: FormEventData<EditorModel>) {\n this._eventsSubject.next({\n type: type,\n formComponent: component,\n form: component.form as FormGroup,\n data: data\n });\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n}\n","import {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\n\nimport {TableviewEditorTypeEnum} from '../models/editor.model';\nimport {EditorDescriptorInst} from './editor.descriptor';\n\nexport type EditorDescriptorCreateBaseOptsType<ParentEditorModel> = {\n tableviewEditorType?: TableviewEditorTypeEnum;\n parentEditorType?: TypeDescriptor<ParentEditorModel> | ModelDescriptor<ParentEditorModel> | EditorDescriptorInst<ParentEditorModel, any>;\n};\nexport type EditorDescriptorCreateOptsType<EditorModel, ParentEditorModel> = ModelDescriptorCreateOpts<EditorModel> & EditorDescriptorCreateBaseOptsType<ParentEditorModel>;\n\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n opts: EditorDescriptorCreateOptsType<EditorModel, ParentEditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n model: ModelDescriptor<EditorModel>,\n opts?: EditorDescriptorCreateBaseOptsType<ParentEditorModel>\n): EditorDescriptorInst<EditorModel, ParentEditorModel>;\nexport function editorDescriptor<EditorModel, ParentEditorModel = undefined>(\n modelOrOpts?: ModelDescriptor<EditorModel> | EditorDescriptorCreateOptsType<EditorModel, ParentEditorModel>,\n opts?: EditorDescriptorCreateOptsType<EditorModel, ParentEditorModel>\n) {\n if (modelOrOpts == null) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(), opts?.tableviewEditorType);\n } else if (modelOrOpts instanceof ModelDescriptor) {\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(modelOrOpts, opts?.tableviewEditorType);\n } else {\n // this could have autoGenerated if model descriptor is class\n return new EditorDescriptorInst<EditorModel, ParentEditorModel>(model<EditorModel>(modelOrOpts), modelOrOpts?.tableviewEditorType);\n }\n}\n","import {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {IFormEditorComponent} from './form-editor.interface';\nimport {CommonsFormlyFieldConfig} from './formly-field.model';\n\nexport interface FormEditorSubmitEvent<Item> {\n formItem: Item;\n success: boolean;\n}\n\nexport enum FormFieldEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n DataProvider = 'DataProvider',\n DialogLifecycle = 'DialogLifecycle',\n RowReorder = 'RowReorder',\n Other = 'Other'\n}\n\nexport enum FormEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n Submit = 'Submit',\n Other = 'Other'\n}\n\nexport class FormFieldEventComponentSubtype {\n public static readonly ON_INIT = 'Component.OnInit';\n public static readonly ON_VIEW_INIT = 'Component.OnViewInit';\n public static readonly ON_CONTENT_INIT = 'Component.OnContentInit';\n public static readonly ON_DESTROY = 'Component.OnDestroy';\n}\n\nexport class FormFieldEventDialogSubtype {\n public static readonly VISIBILITY = 'Dialog.Visibility';\n public static readonly TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';\n public static readonly TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';\n}\n\nexport interface FormFieldEventData<FieldModel, EditorModel> {\n eventSubtype?: string;\n value?: FieldModel;\n formValue?: EditorModel;\n [key: string]: any;\n}\n\nexport interface FormEventData<EditorModel> {\n eventSubtype?: string;\n value?: EditorModel; // direct value from form.valueChanges, disabled field values and setters are not included\n submitValid?: boolean; // true if form is valid\n submitValue?: EditorModel; // value on submit\n [key: string]: any;\n}\n\nexport interface FormFieldEvent<FieldValue, FormValue, ParentFormValue = undefined> {\n type: FormFieldEventTypeEnum;\n fieldComponent?: FieldType<CommonsFormlyFieldConfig<FieldValue, FormValue, ParentFormValue>>;\n formComponent?: IFormEditorComponent<FormValue, ParentFormValue>;\n fieldFormControl: FormControl<FieldValue>;\n form: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n fieldFormlyConfig: CommonsFormlyFieldConfig<FieldValue, FormValue, ParentFormValue>;\n data?: FormFieldEventData<FieldValue, FormValue>;\n}\n\nexport interface FormEvent<FormValue, ParentFormValue = undefined> {\n type: FormEventTypeEnum;\n formComponent?: IFormEditorComponent<FormValue, ParentFormValue>;\n form: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n data?: FormEventData<FormValue>;\n}\n\nexport interface EditorResetEvent<Item> {\n emitEvent?: boolean;\n fetch?: boolean; // if item should be re-fetched again through data provider\n item?: Item; // if present, item value will be used to reset form\n fields?: Partial<Item>;\n data?: {\n [key: string]: any;\n };\n}\n","import {Directive, Input} from '@angular/core';\nimport {AbstractControl, FormControl, FormGroup} from '@angular/forms';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {CommonsFormlyFieldConfig, CommonsFormlyFieldProps} from './formly-field.model';\nimport {CommonsFormlyFormOptions, CommonsFormlyFormState} from './formly-options.model';\n\n@Directive()\nexport abstract class AFormlyCustomFieldComponent<Value, FormValue, ParentFormValue = undefined> extends FieldType<CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>> {\n @Input('field') declare field: CommonsFormlyFieldConfig<Value, FormValue, ParentFormValue>;\n @Input('model') _model!: Value;\n @Input('form') _form!: FormGroup<{[K in keyof FormValue]: AbstractControl<FormValue[K]>}>;\n @Input('options') _options!: CommonsFormlyFormOptions<FormValue>;\n @Input('key') _key!: string | number | (string | number)[];\n @Input('formControl') _formControl!: FormControl<Value>;\n @Input('props') _props!: CommonsFormlyFieldProps<Value, FormValue, ParentFormValue>;\n @Input('showError') _showError!: boolean;\n @Input('id') _id!: string;\n @Input('formState') _formState!: CommonsFormlyFormState<FormValue>;\n\n override get model() {\n return this._model;\n }\n\n override get form() {\n return this._form;\n }\n\n override get options() {\n return this._options;\n }\n\n override get key() {\n return this._key;\n }\n\n override get formControl() {\n return this._formControl;\n }\n\n override get props() {\n return this._props;\n }\n\n override get showError() {\n return this._showError;\n }\n\n override get id() {\n return this._id;\n }\n\n override get formState() {\n return this._formState;\n }\n}\n","import {DataProviderInst, ServiceClassOptType} from '@mediusinc/mng-commons/core';\nimport {ITableDataProvider, TableDataProviderGetAllEagerFnType, TableDataProviderGetAllFnType, TableDataProviderInst, TableReloadEvent} from '@mediusinc/mng-commons/table/api';\n\nimport {\n EditorDataProviderCreateFnType,\n EditorDataProviderDeleteFnType,\n EditorDataProviderFetchFnType,\n EditorDataProviderFetchMapToFnType,\n EditorDataProviderInst,\n EditorDataProviderUpdateFnType,\n IEditorDataProvider\n} from '../../editor/data-providers/editor.data-provider';\nimport {EditorResetEvent} from '../../editor/models/form-editor.event';\n\nexport type ITableviewDataProvider<\n Model = any,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ServiceClass = ServiceClassOptType<Service>,\n TableModel = Model,\n CreateModel = Model,\n UpdateModel = Model\n> = IEditorDataProvider<Model, Service, ServiceClass, CreateModel, UpdateModel> & ITableDataProvider<TableModel, Service, Sorts, Filters, ServiceClass>;\n\nexport class TableviewDataProviderInst<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ServiceClass = ServiceClassOptType<Service>,\n TableModel = Model,\n CreateModel = Model,\n UpdateModel = Model\n >\n extends DataProviderInst<Model, Service, ServiceClass>\n implements\n ITableviewDataProvider<Model, Service, Sorts, Filters, ServiceClass, TableModel, CreateModel, UpdateModel>,\n IEditorDataProvider<Model, Service, ServiceClass, CreateModel, UpdateModel>\n{\n protected readonly editorDataProvider: EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel>;\n protected readonly tableDataProvider: TableDataProviderInst<TableModel, Service, Sorts, Filters, ServiceClass>;\n\n public constructor(serviceType: ServiceClass) {\n super(serviceType);\n this.editorDataProvider = new EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel>(serviceType);\n this.tableDataProvider = new TableDataProviderInst<TableModel, Service, Sorts, Filters, ServiceClass>(serviceType);\n }\n\n get isLazy() {\n return this.tableDataProvider.isLazy;\n }\n\n get tableReload$() {\n return this.tableDataProvider.tableReload$;\n }\n\n get editorReset$() {\n return this.editorDataProvider.editorReset$;\n }\n\n get getAll() {\n return this.tableDataProvider.getAll;\n }\n\n get fetch() {\n return this.editorDataProvider.fetch;\n }\n\n get create() {\n return this.editorDataProvider.create;\n }\n\n get update() {\n return this.editorDataProvider.update;\n }\n\n get delete() {\n return this.editorDataProvider.delete;\n }\n\n get mapFetchItemToCreateItem() {\n return this.editorDataProvider.mapFetchItemToCreateItem;\n }\n\n get mapFetchItemToUpdateItem() {\n return this.editorDataProvider.mapFetchItemToUpdateItem;\n }\n\n withGetAll(fn: TableDataProviderGetAllFnType<TableModel, Service, Sorts, Filters>): this {\n this.tableDataProvider.withGetAll(fn);\n return this;\n }\n\n withGetAllEagerly(fn: TableDataProviderGetAllEagerFnType<TableModel, Service>): this {\n this.tableDataProvider.withGetAllEagerly(fn);\n return this;\n }\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this.editorDataProvider.withFetch(fn);\n return this;\n }\n\n withCreate(fn?: EditorDataProviderCreateFnType<CreateModel, Model, Service>): this {\n this.editorDataProvider.withCreate(fn);\n return this;\n }\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<UpdateModel, Model, Service>): this {\n this.editorDataProvider.withUpdate(fn);\n return this;\n }\n\n withDelete<Item = undefined>(fn?: EditorDataProviderDeleteFnType<Model, Service, Item>): this {\n this.editorDataProvider.withDelete<Item>(fn);\n return this;\n }\n\n withMapFetchItemToCreateItem(fn?: EditorDataProviderFetchMapToFnType<Model, CreateModel>): this {\n this.editorDataProvider.withMapFetchItemToCreateItem(fn);\n return this;\n }\n\n withMapFetchItemToUpdateItem(fn?: EditorDataProviderFetchMapToFnType<Model, UpdateModel>): this {\n this.editorDataProvider.withMapFetchItemToUpdateItem(fn);\n return this;\n }\n\n reloadTable(event?: TableReloadEvent<Sorts, Filters>): void {\n this.tableDataProvider.reloadTable(event);\n }\n\n resetEditor(event?: EditorResetEvent<Model>): void {\n this.editorDataProvider.resetEditor(event);\n }\n}\n\nexport class DynamicTableviewDataProviderInst<Service = any, ServiceClass = ServiceClassOptType<Service>> extends TableviewDataProviderInst<any, Service, any, any, ServiceClass> {\n public constructor(serviceType: ServiceClass) {\n super(serviceType);\n }\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {DynamicTableviewDataProviderInst, TableviewDataProviderInst} from './tableview.data-provider';\n\n/**\n * Creates and returns an instance of `TableviewDataProviderInst` with the specified options for managing tableview data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.filtersType] - The descriptor defining the filters type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.sortsType] - The descriptor defining the sorts type.\n * @return {TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClass, TableModel, CreateModel, UpdateModel>} An instance of `TableviewDataProviderInst` configured according to the provided options.\n */\nexport function tableviewDataProvider<\n Model,\n Service = undefined,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n TableModel = Model,\n CreateModel = Model,\n UpdateModel = Model,\n ServiceClass = Service extends undefined ? undefined : ServiceClassType<Service>\n>(opts?: {\n type?: TypeDescriptor<Model> | ModelDescriptor<Model>;\n service?: ServiceClassType<Service>;\n tableType?: TypeDescriptor<TableModel> | ModelDescriptor<TableModel>;\n createType?: TypeDescriptor<CreateModel> | ModelDescriptor<Model>;\n updateType?: TypeDescriptor<UpdateModel> | ModelDescriptor<Model>;\n filtersType?: TypeDescriptor<Filters> | ModelDescriptor<Filters>;\n sortsType?: TypeDescriptor<Sorts> | ModelDescriptor<Sorts>;\n}): TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClass, TableModel, CreateModel, UpdateModel> {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClass, TableModel, CreateModel, UpdateModel>(opts?.service as ServiceClass);\n}\n\nexport function tableviewDynamicDataProvider(): DynamicTableviewDataProviderInst<undefined, undefined>;\nexport function tableviewDynamicDataProvider<Service>(serviceType: ServiceClassType<Service>): DynamicTableviewDataProviderInst<Service, ServiceClassType<Service>>;\nexport function tableviewDynamicDataProvider<Service, ServiceClass = ServiceClassType<Service>>(\n serviceType?: ServiceClass\n): DynamicTableviewDataProviderInst<Service, ServiceClass> {\n return new DynamicTableviewDataProviderInst<Service, ServiceClass>(serviceType as ServiceClass);\n}\n","import {ArrayItemType, EnumConstantType, ILookupDataProvider, ITableviewDescriptor} from '@mediusinc/mng-commons/core';\nimport {FilterDescriptor, FilterDisplayTypeEnum} from '@mediusinc/mng-commons/filter';\nimport {EnumDescriptor, ModelDescriptor} from '@mediusinc/mng-commons/model';\nimport {ColumnDescriptor, IColumnsManageInterface, ITableDataProvider, TableDescriptorInst, TableDynamicDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {FieldActionDescriptor} from '../../editor/descriptors/field-action.descriptor';\nimport {AFieldDescriptor} from '../../editor/descriptors/field-base.descriptor';\nimport {FieldLookupDescriptor, FieldLookupEnumDescriptor} from '../../editor/descriptors/field-lookup.descriptor';\nimport {FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor} from '../../editor/descriptors/field-many.descriptor';\nimport {FieldValidationDescriptorOptsType} from '../../editor/descriptors/field-validation.descriptor';\nimport {FieldInputDescriptor, FieldInputDescriptorType} from '../../editor/descriptors/field.descriptor';\nimport {FieldsManageAddFieldLookupOpts, IFieldsManage} from '../../editor/models/editor-fields.model';\nimport {TableviewEditorTypeEnum} from '../../editor/models/editor.model';\nimport {FormValidationMessage, FormValidator} from '../../editor/models/field-validation.model';\nimport {TableviewDescriptorFieldsManageMultiType} from '../models/tableview-descriptor-fields-manage-helper.type';\n\nexport type TableviewDescriptorInstConstructorOpts<TableModel, AddModel, EditModel> = {\n tableModel?: ModelDescriptor<TableModel>;\n addModel?: ModelDescriptor<AddModel>;\n editModel?: ModelDescriptor<EditModel>;\n};\n\nexport class TableviewDescriptorInst<\n TableviewModel,\n Sorts = keyof TableviewModel,\n Filters = keyof TableviewModel,\n ParentEditorModel = undefined,\n TableModel = TableviewModel,\n AddModel = TableviewModel,\n EditModel = TableviewModel,\n FieldsManageModel = TableviewDescriptorFieldsManageMultiType<TableviewModel, AddModel, EditModel>\n >\n implements\n ITableviewDescriptor<TableviewModel, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>,\n IColumnsManageInterface<TableModel, Sorts, Filters>,\n IFieldsManage<FieldsManageModel, ParentEditorModel>\n{\n private readonly _model: ModelDescriptor<TableviewModel>;\n\n protected _table: TableDescriptorInst<TableModel, Sorts, Filters>;\n protected _detailsEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;\n protected _addEditor: EditorDescriptorInst<AddModel, ParentEditorModel>;\n protected _editEditor: EditorDescriptorInst<EditModel, ParentEditorModel>;\n\n protected _isLocalized = false;\n\n public constructor(model: ModelDescriptor<TableviewModel>, opts?: TableviewDescriptorInstConstructorOpts<TableModel, AddModel, EditModel>) {\n this._model = model;\n this._table = new TableDescriptorInst<TableModel, Sorts, Filters>(opts?.tableModel ?? (model as unknown as ModelDescriptor<TableModel>));\n this._table.withTitle(`${this._model.i18nBaseKey}.name`);\n this._detailsEditor = new EditorDescriptorInst<TableviewModel, ParentEditorModel>(model, TableviewEditorTypeEnum.Details);\n this._detailsEditor.withDisabled();\n this._addEditor = new EditorDescriptorInst<AddModel, ParentEditorModel>(opts?.addModel ?? (model as unknown as ModelDescriptor<AddModel>), TableviewEditorTypeEnum.Add);\n this._editEditor = new EditorDescriptorInst<EditModel, ParentEditorModel>(\n opts?.editModel ?? (model as unknown as ModelDescriptor<EditModel>),\n TableviewEditorTypeEnum.Edit\n );\n }\n\n public get table() {\n return this._table;\n }\n\n public get detailsEditor() {\n return this._detailsEditor;\n }\n\n public get addEditor() {\n return this._addEditor;\n }\n\n public get editEditor() {\n return this._editEditor;\n }\n\n public get model() {\n return this._model;\n }\n\n public isLocalized() {\n return this._isLocalized;\n }\n\n public withTableDescriptor(descriptor: TableDescriptorInst<TableModel, Sorts, Filters>): this {\n this._table = descriptor;\n return this;\n }\n\n public withEditorDescriptors(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor as unknown as EditorDescriptorInst<EditModel, ParentEditorModel>;\n this._addEditor = descriptor as unknown as EditorDescriptorInst<AddModel, ParentEditorModel>;\n return this;\n }\n\n public withDetailsDescriptor(descriptor: EditorDescriptorInst<TableviewModel, ParentEditorModel>): this {\n this._detailsEditor = descriptor;\n return this;\n }\n\n public withAddDescriptor(descriptor: EditorDescriptorInst<AddModel, ParentEditorModel>): this {\n this._addEditor = descriptor;\n return this;\n }\n\n public withEditDescriptor(descriptor: EditorDescriptorInst<EditModel, ParentEditorModel>): this {\n this._editEditor = descriptor;\n return this;\n }\n\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non-disabled\n * @param type which editor type to set to disabled\n */\n public withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details): this {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n\n public withValidation<Value = TableviewModel>(\n name: string,\n expression: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType<keyof FieldsManageModel>\n ): this {\n return this.withValidationUnsafe(name, expression, message, opts as FieldValidationDescriptorOptsType);\n }\n\n public withValidationUnsafe<Value = TableviewModel>(\n name: string,\n expression: FormValidator<Value, ParentEditorModel>,\n message?: FormValidationMessage<Value, ParentEditorModel>,\n opts?: FieldValidationDescriptorOptsType\n ): this {\n this._detailsEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n this._addEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n this._editEditor.withValidationUnsafe<Value>(name, expression, message, opts);\n return this;\n }\n\n public getColumn<Property extends keyof TableModel, ColumnModel = NonNullable<TableModel[Property]>, ColumnValue = TableModel[Property]>(property: Property) {\n return this._table.getColumn<Property, ColumnModel, ColumnValue>(property);\n }\n\n public getColumnUnsafe<ColumnModel = any, ColumnValue = ColumnModel>(property: string) {\n return this._table.getColumnUnsafe<ColumnModel, ColumnValue>(property);\n }\n\n public removeColumn(property: keyof TableModel): void {\n this._table.removeColumn(property);\n }\n\n public removeColumnUnsafe(property: string): void {\n this._table.removeColumnUnsafe(property);\n }\n\n public withColumn<ColumnModel, ColumnValue = ColumnModel>(column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>): this {\n this._table.withColumn<ColumnModel, ColumnValue>(column);\n return this;\n }\n\n public addColumn<Property extends keyof TableModel>(property: Property): ColumnDescriptor<NonNullable<TableModel[Property]>, TableModel, TableModel[Property]> {\n return this._table.addColumn(property);\n }\n\n public addColumnEnum<PropertyKey extends keyof TableModel, Enum extends NonNullable<TableModel[PropertyKey]>>(property: PropertyKey, enumDesc: EnumDescriptor<Enum>) {\n return this._table.addColumnEnum(property, enumDesc);\n }\n\n public addColumnUnsafe<ColumnModel = any>(property: string): ColumnDescriptor<ColumnModel, TableModel> {\n return this._table.addColumnUnsafe(property);\n }\n\n public withColumns(...properties: (keyof TableModel)[]): this {\n this._table.withColumns(...properties);\n return this;\n }\n\n public getSort(property: Sorts) {\n return this._table.getSort(property);\n }\n\n public getSortUnsafe(property: string) {\n return this._table.getSortUnsafe(property);\n }\n\n public removeSort(property: Sorts) {\n this._table.removeSort(property);\n }\n\n public removeSortUnsafe(property: string) {\n this._table.removeSortUnsafe(property);\n }\n\n public addSort(property: Sorts, isDefault = false, ascending?: boolean) {\n return this._table.addSort(property, isDefault, ascending);\n }\n\n public addSortUnsafe(property: string, isDefault = false, ascending?: boolean) {\n return this._table.addSortUnsafe(property, isDefault, ascending);\n }\n\n public withSort(property: Sorts, isDefault = false, ascending?: boolean): this {\n this._table.withSort(property, isDefault, ascending);\n return this;\n }\n\n public withSortUnsafe(property: string, isDefault = false, ascending?: boolean): this {\n this._table.withSortUnsafe(property, isDefault, ascending);\n return this;\n }\n\n public withDefaultSort(property: Sorts, ascending?: boolean, enabled?: boolean): this {\n this._table.withDefaultSort(property, ascending, enabled);\n return this;\n }\n\n public withDefaultSortUnsafe(property: string, ascending?: boolean, enabled?: boolean): this {\n this._table.withDefaultSortUnsafe(property, ascending, enabled);\n return this;\n }\n\n public withSorts(...properties: Sorts[]): this {\n this._table.withSorts(...properties);\n return this;\n }\n\n public withSortsUnsafe(...properties: string[]): this {\n this._table.withSortsUnsafe(...properties);\n return this;\n }\n\n public withDefaultSorts(...properties: Sorts[]): this {\n this._table.withDefaultSorts(...properties);\n return this;\n }\n\n public withoutDefaultSorts(): this {\n this._table.withoutDefaultSorts();\n return this;\n }\n\n public getFilter<FilterModel = Filters extends keyof TableModel ? NonNullable<TableModel[Filters]> : any>(property: Filters) {\n return this._table.getFilter<FilterModel>(property);\n }\n\n public getFilterUnsafe<FilterModel = any>(property: string) {\n return this._table.getFilterUnsafe<FilterModel>(property);\n }\n\n public removeFilter(property: Filters) {\n this._table.removeFilter(property);\n }\n\n public removeFilterUnsafe(property: string) {\n this._table.removeFilterUnsafe(property);\n }\n\n public addFilter<FilterModel = Filters extends keyof TableModel ? TableModel[Filters] : never>(property: Filters) {\n return this._table.addFilter<FilterModel>(property);\n }\n\n public addFilterUnsafe<FilterModel>(property: string) {\n return this._table.addFilterUnsafe<FilterModel>(property);\n }\n\n public addFilterLookup<FilterModel = Filters extends keyof TableModel ? NonNullable<TableModel[Filters]> : never, Service = undefined>(\n property: Filters,\n provider?: ILookupDataProvider<FilterModel, Service, any, any>,\n optionsValueProperty?: keyof FilterModel\n ) {\n return this._table.addFilterLookup<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupUnsafe<FilterModel, Service = undefined>(\n property: string,\n provider?: ILookupDataProvider<FilterModel, Service, any, any>,\n optionsValueProperty?: string\n ) {\n return this._table.addFilterLookupUnsafe<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnum<Enum>(property, enumDesc, options);\n }\n\n public addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnumUnsafe<Enum>(property, enumDesc, options);\n }\n\n public addFilterFromColumn<Property extends keyof TableModel, FilterModel = NonNullable<TableModel[Property]>>(\n property: Extract<Filters, Property>,\n displayType?: FilterDisplayTypeEnum,\n forceSimple = false\n ) {\n return this._table.addFilterFromColumn<Property, FilterModel>(property, displayType, forceSimple);\n }\n\n public withFiltersFromColumns(...properties: Extract<Filters, keyof TableModel>[]): this {\n this._table.withFiltersFromColumns(...properties);\n return this;\n }\n\n public withFiltersFromColumnsUnsafe(...properties: string[]): this {\n this._table.withFiltersFromColumnsUnsafe(...properties);\n return this;\n }\n\n public addFilterFromColumnUnsafe(property: string, displayType?: FilterDisplayTypeEnum, forceSimple = false) {\n return this._table.addFilterFromColumnUnsafe(property, displayType, forceSimple);\n }\n\n public withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableModel>): this {\n this._table.withFilter<FilterModel>(property, filter);\n return this;\n }\n\n public withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableModel>): this {\n this._table.withFilterUnsafe<FilterModel>(filter);\n return this;\n }\n\n public removeField(property: keyof FieldsManageModel): void {\n this.removeFieldUnsafe(property as string);\n }\n\n public removeFieldUnsafe(property: string): void {\n this._editEditor.removeFieldUnsafe(property);\n this._addEditor.removeFieldUnsafe(property);\n this._detailsEditor.removeFieldUnsafe(property);\n }\n\n public addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, FieldsManageModel, FieldValue, ParentEditorModel>): this {\n this._detailsEditor.addFieldDescriptor(field as unknown as AFieldDescriptor<any, TableviewModel, FieldValue, ParentEditorModel>);\n this._addEditor.addFieldDescriptor(field as unknown as AFieldDescriptor<any, AddModel, FieldValue, ParentEditorModel>);\n this._editEditor.addFieldDescriptor(field as unknown as AFieldDescriptor<any, EditModel, FieldValue, ParentEditorModel>);\n return this;\n }\n\n public addField<Property extends keyof FieldsManageModel, FieldModel = NonNullable<FieldsManageModel[Property]>, FieldValue = FieldsManageModel[Property]>(property: Property) {\n return this.addFieldUnsafe<FieldModel, FieldValue>(property as string);\n }\n\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = this._detailsEditor.addFieldUnsafe<FieldModel, FieldValue>(property);\n this.addFieldToEditAndAdd(field);\n return field as unknown as FieldInputDescriptor<FieldsManageModel, FieldModel, FieldValue, ParentEditorModel>;\n }\n\n public withFields(...properties: (keyof FieldsManageModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<FieldsManageModel, ParentEditorModel> {\n const field = this._detailsEditor.addFieldAction(actionName);\n this.addFieldToEditAndAdd(field);\n return field as unknown as FieldActionDescriptor<FieldsManageModel, ParentEditorModel>;\n }\n\n private addFieldToEditAndAdd<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, any, FieldValue, ParentEditorModel>) {\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n }\n\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, FieldsManageModel, Service, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookup<\n Property extends keyof FieldsManageModel,\n Service = undefined,\n LookupModel extends NonNullable<FieldsManageModel[Property]> = NonNullable<FieldsManageModel[Property]>,\n FieldValue = FieldsManageModel[Property]\n >(property: Property, opts?: FieldsManageAddFieldLookupOpts<LookupModel, Service>) {\n return this.addFieldLookupUnsafe<LookupModel, Service, FieldValue>(property as string, opts);\n }\n\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n public addFieldLookupUnsafe<LookupModel, Service = undefined, FieldValue = LookupModel>(property: string, opts?: FieldsManageAddFieldLookupOpts<LookupModel, Service>) {\n const field = this._detailsEditor.addFieldLookupUnsafe<LookupModel, Service, FieldValue>(property, opts);\n this.addFieldToEditAndAdd(field);\n return field as unknown as FieldLookupDescriptor<LookupModel, FieldsManageModel, Service, FieldValue, ParentEditorModel>;\n }\n\n public addFieldLookupEnum<Property extends keyof FieldsManageModel, Enum extends NonNullable<FieldsManageModel[Property]>>(\n property: Property,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n return this.addFieldLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = this._detailsEditor.addFieldLookupEnumUnsafe<Enum>(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field as unknown as FieldLookupEnumDescriptor<Enum, FieldsManageModel, ParentEditorModel>;\n }\n\n public addFieldManyEditor<Property extends keyof FieldsManageModel, FieldModel = ArrayItemType<FieldsManageModel[Property]>, FieldValue = FieldsManageModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, FieldsManageModel, FieldModel, FieldModel, FieldModel, FieldModel>\n ) {\n return this.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property as string, tableviewDescriptor);\n }\n\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(\n property: string,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel, any, any, FieldsManageModel, FieldModel, FieldModel, FieldModel, FieldModel>\n ) {\n const field = this._detailsEditor.addFieldManyEditorUnsafe<FieldModel, FieldValue>(\n property,\n // cast is needed, because the parent model of TableviewDescriptorInst is expected to be TableviewModel, but it cannot be in case there are different types across details, add or edit\n tableviewDescriptor as TableviewDescriptorInst<FieldModel, any, any, any, FieldModel, FieldModel, FieldModel, FieldModel>\n );\n this.addFieldToEditAndAdd(field);\n return field as unknown as FieldManyEditorDescriptor<FieldModel, FieldsManageModel, FieldValue, ParentEditorModel>;\n }\n\n public addFieldManyToManyEditor<\n Property extends keyof FieldsManageModel,\n Service,\n FieldModel = ArrayItemType<FieldsManageModel[Property]>,\n FieldValue = FieldsManageModel[Property]\n >(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, Service>\n ) {\n return this.addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue>(property as string, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n\n public addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, Service>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue>(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n this.addFieldToEditAndAdd(field);\n return field as unknown as FieldManyToManyEditorDescriptor<FieldModel, FieldsManageModel, Service, FieldValue, ParentEditorModel>;\n }\n\n public withTabGroup(name: string, title?: string): this {\n this._detailsEditor.addTabGroup(name, title);\n this._addEditor.addTabGroup(name, title);\n this._editEditor.addTabGroup(name, title);\n return this;\n }\n\n public withFieldGroup(name: string, title?: string): this {\n this._detailsEditor.addFieldGroup(name, title);\n this._addEditor.addFieldGroup(name, title);\n this._editEditor.addFieldGroup(name, title);\n return this;\n }\n\n public copy(): TableviewDescriptorInst<TableviewModel, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel, FieldsManageModel> {\n const tableview = new TableviewDescriptorInst<TableviewModel, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel, FieldsManageModel>(this._model.copy());\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._isLocalized = this._isLocalized;\n return tableview;\n }\n\n public localized<Property extends keyof TableviewModel, LocalizationModel = ArrayItemType<TableviewModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationModel>(property: string, model: ModelDescriptor<LocalizationModel>, localeProperty: string): this {\n this._isLocalized = true;\n this._table.withLocalizationLocaleProperty(localeProperty as string);\n this.detailsEditor.localizedUnsafe(property, model, localeProperty);\n this.addEditor.localizedUnsafe(property, model, localeProperty);\n this.editEditor.localizedUnsafe(property, model, localeProperty);\n\n return this;\n }\n}\n\nexport class TableviewDynamicDescriptorInt extends TableviewDescriptorInst<any> {\n protected override _table: TableDynamicDescriptorInst;\n\n public constructor(model: ModelDescriptor<any>) {\n super(model);\n this._table = new TableDynamicDescriptorInst(this.model);\n }\n\n public override get table() {\n return this._table;\n }\n\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n public override withTableDescriptor(descriptor: TableDynamicDescriptorInst): this {\n this._table = descriptor;\n return this;\n }\n\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n public override removeColumn(property: string): this {\n this._table.removeColumn(property);\n return this;\n }\n\n public withEntityForTranslations(i18nBaseKey: string): this {\n this._table.model.withI18nBase(i18nBaseKey);\n this._detailsEditor.model.withI18nBase(i18nBaseKey);\n return this;\n }\n\n /**\n * creates deep copy of tableview object and its children\n */\n public override copy(): TableviewDynamicDescriptorInt {\n const descriptor = new TableviewDynamicDescriptorInt(this.model.copy());\n descriptor._table = this._table.copy();\n return descriptor;\n }\n}\n","import {ModelDescriptor, ModelDescriptorCreateOpts, TypeDescriptor, model} from '@mediusinc/mng-commons/model';\n\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {TableviewDescriptorFieldsManageMultiType} from '../models/tableview-descriptor-fields-manage-helper.type';\nimport {TableviewDescriptorInst, TableviewDescriptorInstConstructorOpts, TableviewDynamicDescriptorInt} from './tableview.descriptor';\n\ntype TableviewDescriptorCreateSortsFiltersParentOptsType<Model, Sorts = keyof Model, Filters = keyof Model, ParentEditorModel = undefined> = {\n filtersType?: TypeDescriptor<Filters> | ModelDescriptor<Filters>;\n sortsType?: TypeDescriptor<Sorts> | ModelDescriptor<Filters>;\n parentEditorType?:\n | TypeDescriptor<ParentEditorModel>\n | ModelDescriptor<ParentEditorModel>\n | EditorDescriptorInst<ParentEditorModel, any>\n | TableviewDescriptorInst<ParentEditorModel, any, any, any, any, ParentEditorModel, ParentEditorModel, ParentEditorModel>;\n};\n\nexport type TableviewDescriptorCreateOptsType<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined\n> = TableviewDescriptorCreateSortsFiltersParentOptsType<Model, Sorts, Filters, ParentEditorModel>;\n\nexport type TableviewDescriptorCreateWithModelDescriptorOptsType<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined\n> = TableviewDescriptorCreateOptsType<Model, Sorts, Filters, ParentEditorModel> & ModelDescriptorCreateOpts<Model>;\n\nexport function tableviewDescriptor<Model, Sorts = keyof Model, Filters = keyof Model, ParentEditorModel = undefined, TableModel = Model>(): TableviewDescriptorInst<\n Model,\n Sorts,\n Filters,\n ParentEditorModel,\n TableModel,\n Model,\n Model,\n Model\n>;\nexport function tableviewDescriptor<Model, Sorts = keyof Model, Filters = keyof Model, ParentEditorModel = undefined, TableModel = Model>(\n opts: TableviewDescriptorCreateWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel>\n): TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, Model, Model, Model>;\nexport function tableviewDescriptor<Model, Sorts = keyof Model, Filters = keyof Model, ParentEditorModel = undefined, TableModel = Model>(\n opts: TableviewDescriptorCreateWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel>\n): TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, Model, Model, Model>;\nexport function tableviewDescriptor<Model, Sorts = keyof Model, Filters = keyof Model, ParentEditorModel = undefined, TableModel = Model>(\n model: ModelDescriptor<Model>,\n opts?: TableviewDescriptorCreateOptsType<Model, Sorts, Filters, ParentEditorModel>\n): TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, Model, Model, Model>;\nexport function tableviewDescriptor<Model, Sorts = keyof Model, Filters = keyof Model, ParentEditorModel = undefined, TableModel = Model>(\n modelOrOpts?: ModelDescriptor<Model> | TableviewDescriptorCreateWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n opts?: TableviewDescriptorCreateWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel>\n) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, Model, Model, Model>(model<Model>());\n } else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, Model, Model, Model>(modelOrOpts);\n } else {\n return new TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, Model, Model, Model>(model<Model>(modelOrOpts));\n }\n}\n\nexport type TableviewDescriptorMultiModelCreateOptsType<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model\n> = TableviewDescriptorCreateSortsFiltersParentOptsType<Model, Sorts, Filters, ParentEditorModel> & TableviewDescriptorInstConstructorOpts<TableModel, AddModel, EditModel>;\n\nexport type TableviewDescriptorCreateMultiModelWithModelDescriptorOptsType<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model\n> = TableviewDescriptorMultiModelCreateOptsType<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel> & ModelDescriptorCreateOpts<Model>;\n\nexport function tableviewDescriptorMultiModel<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model\n>(): TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel, TableviewDescriptorFieldsManageMultiType<Model, AddModel, EditModel>>;\nexport function tableviewDescriptorMultiModel<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model\n>(\n opts: TableviewDescriptorCreateMultiModelWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>\n): TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>;\nexport function tableviewDescriptorMultiModel<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model\n>(\n opts: TableviewDescriptorCreateMultiModelWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>\n): TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>;\nexport function tableviewDescriptorMultiModel<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model\n>(\n model: ModelDescriptor<Model>,\n opts?: TableviewDescriptorMultiModelCreateOptsType<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>\n): TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>;\nexport function tableviewDescriptorMultiModel<\n Model,\n Sorts = keyof Model,\n Filters = keyof Model,\n ParentEditorModel = undefined,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model\n>(\n modelOrOpts?:\n | ModelDescriptor<Model>\n | TableviewDescriptorCreateMultiModelWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n opts?: TableviewDescriptorCreateMultiModelWithModelDescriptorOptsType<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>\n) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>(model<Model>());\n } else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>(modelOrOpts);\n } else {\n return new TableviewDescriptorInst<Model, Sorts, Filters, ParentEditorModel, TableModel, AddModel, EditModel>(model<Model>(modelOrOpts));\n }\n}\n\nexport function tableviewDynamicDescriptor(\n modelOrOpts?: ModelDescriptor<any> | TableviewDescriptorCreateMultiModelWithModelDescriptorOptsType<any>\n): TableviewDynamicDescriptorInt {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableviewDynamicDescriptorInt(modelOrOpts)\n : new TableviewDynamicDescriptorInt(new ModelDescriptor<any>(modelOrOpts?.id as string, modelOrOpts?.title as string, modelOrOpts?.i18nBase as string));\n}\n","import {TranslateService} from '@ngx-translate/core';\n\nimport {GetterPipe} from '@mediusinc/mng-commons/core';\n\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\n\nexport function convertDataToStringWithDelimiter(data: any[], delimiter: string, descriptor: TableviewDescriptorInst<any, any, any>, translate: TranslateService): string {\n const replaceNullValue = (key: any, value: any) => (value === null ? '' : value);\n const getterPipe = new GetterPipe();\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.i18nBaseKey + '.properties.' + col.property)).join(delimiter),\n ...data.map((row: any) =>\n descriptor.table.columns\n .map(column => {\n if (typeof column.getter === 'function') {\n return JSON.stringify(getterPipe.transform(row[column.property], column.getter, row), replaceNullValue);\n } else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter)\n )\n ].join('\\r\\n');\n}\n\nexport function saveFileAs(blob: Blob, filename: string) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n\n document.body.appendChild(link);\n\n link.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n\n document.body.removeChild(link);\n}\n","import {Injector, inject} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {of, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsInternalError, ServiceClassType, StyleLevelEnum, StyleSizeEnum, copyDataListParams} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor} from '@mediusinc/mng-commons/model';\nimport {TableDescriptorInst} from '@mediusinc/mng-commons/table/api';\n\nimport {ActionProviderType, actionGetProviderCfgObj} from '../../action/descriptors/action-descriptor.factory';\nimport {ActionEditorProviderType, actionEditorGetProviderCfgObj} from '../../action/descriptors/action-editor-descriptor.factory';\nimport {ActionEditorDescriptorInst, actionEditorCancel} from '../../action/descriptors/action-editor.descriptor';\nimport {actionLink} from '../../action/descriptors/action-link-descriptor.factory';\nimport {ActionLinkDescriptorInst} from '../../action/descriptors/action-link.descriptor';\nimport {ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {ActionPositionEnum} from '../../action/models/action.type';\nimport {TableviewActionDefaultCategories} from '../../action/models/tableview-action-default-categories.model';\nimport {DataProviderExecutor} from '../../action/services/data-provider-executor.service';\nimport {DATA_LANGUAGE_DROPDOWN_COMPONENT_IT} from '../../action/services/tokens/data-language-dropdown.token';\nimport {IEditorDataProvider} from '../../editor/data-providers/editor.data-provider';\nimport {EditorDescriptorInst} from '../../editor/descriptors/editor.descriptor';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewRouteData} from '../models/tableview-route.model';\nimport {convertDataToStringWithDelimiter, saveFileAs} from './files-export';\n\nexport enum TableviewDefaultActionsEnum {\n Details,\n Add,\n Edit,\n EditOnDetails,\n Delete,\n DeleteOnDetails,\n Refresh,\n Export,\n ExportJson,\n ExportCsv,\n LocalizationLanguageSelect\n}\n\nconst tableviewDefaultActions = [\n TableviewDefaultActionsEnum.Details,\n TableviewDefaultActionsEnum.Add,\n TableviewDefaultActionsEnum.Edit,\n TableviewDefaultActionsEnum.EditOnDetails,\n TableviewDefaultActionsEnum.Delete,\n TableviewDefaultActionsEnum.DeleteOnDetails,\n TableviewDefaultActionsEnum.Refresh,\n TableviewDefaultActionsEnum.Export,\n TableviewDefaultActionsEnum.ExportJson,\n TableviewDefaultActionsEnum.ExportCsv,\n TableviewDefaultActionsEnum.LocalizationLanguageSelect\n];\n\nexport function tableviewGetDefaultActions() {\n return [...tableviewDefaultActions];\n}\n\nexport function tableviewCreateDefaultActions(\n tableview: TableviewDescriptorInst<any, any, any>,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>,\n injector?: Injector | null\n): Array<ActionDescriptorInst<any>> {\n return (defaultActions ?? tableviewGetDefaultActions())\n .map(t => tableviewCreateDefaultAction(t, tableview, defaultActions, defaultActionsOverrides, injector))\n .filter(e => e != null) as Array<ActionDescriptorInst<any>>;\n}\n\nexport function tableviewCreateDefaultAction(\n type: TableviewDefaultActionsEnum,\n tableview: TableviewDescriptorInst<any, any, any>,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>,\n injector?: Injector | null\n): ActionDescriptorInst<any> | null {\n if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {\n return defaultActionsOverrides[type];\n }\n\n switch (type) {\n // table row actions\n case TableviewDefaultActionsEnum.Details:\n return tableviewActionDetailsOnTable(tableview.model, tableview.detailsEditor, {injector});\n case TableviewDefaultActionsEnum.Edit:\n return tableviewActionEditOnTable(tableview.model, tableview.editEditor, {table: tableview.table, injector});\n case TableviewDefaultActionsEnum.Delete:\n return tableviewActionDeleteOnTable(tableview.model, {table: tableview.table, injector});\n // table toolbar actions\n case TableviewDefaultActionsEnum.Add:\n return tableviewActionAddOnTable(tableview.model, tableview.addEditor, {injector});\n case TableviewDefaultActionsEnum.LocalizationLanguageSelect:\n return tableviewActionLocalizationLangSelectOnTable(tableview);\n case TableviewDefaultActionsEnum.Refresh:\n return tableviewActionRefreshOnTable(tableview.model);\n case TableviewDefaultActionsEnum.Export:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)\n ? tableviewActionExportOnTable(tableview, {injector: injector, defaultActions: defaultActions})\n : null;\n //details actions\n case TableviewDefaultActionsEnum.EditOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit) ? tableviewActionEditOnDetails(tableview.model, {injector}) : null;\n case TableviewDefaultActionsEnum.DeleteOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ? tableviewActionDeleteOnDetails(tableview.model, {injector}) : null;\n // subactions\n case TableviewDefaultActionsEnum.ExportJson:\n case TableviewDefaultActionsEnum.ExportCsv:\n return null;\n default:\n throw new CommonsInternalError(`Tableview default action of type ${type} not supported`);\n }\n}\n\nfunction getInjector(injector?: Injector | null): Injector | null {\n return injector === undefined ? inject(Injector) : injector;\n}\n\nfunction getRouteData(injector?: Injector | null) {\n return getInjector(injector)?.get(ActivatedRoute)?.snapshot.data as TableviewRouteData | undefined;\n}\n\nexport const tableviewActionEditorDetailsActionName = 'details';\nexport const tableviewActionEditorDetailsRoute = ':itemId';\n\ntype TableviewActionDetailsOnTableOptsType<Model, TableModel, Service> = {\n table?: TableDescriptorInst<TableModel>;\n serviceProvider?: ActionEditorProviderType<Model, Service>;\n injector?: Injector | null;\n position?: ActionPositionEnum.RowInline | ActionPositionEnum.RowClick;\n};\n\nexport function tableviewActionDetailsOnTable<Model, TableModel, Service = undefined>(\n model: ModelDescriptor<Model>,\n descriptor: EditorDescriptorInst<Model>,\n opts?: TableviewActionDetailsOnTableOptsType<Model, TableModel, Service>\n): ActionEditorDescriptorInst<Model, Service, Model, TableModel, undefined, TableModel> | null {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDetails) {\n const action = new ActionEditorDescriptorInst<Model, Service, Model, TableModel, undefined, TableModel>(descriptor, tableviewActionEditorDetailsActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts?.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action.withPosition(opts?.position ?? ActionPositionEnum.RowClick);\n action.withRouteTrigger(tableviewActionEditorDetailsRoute);\n action.withEditorActions([actionEditorCancel(action)]);\n action.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n return action;\n }\n return null;\n}\n\nexport const tableviewActionEditorAddActionName = 'add';\nexport const tableviewActionEditorAddRoute = 'add';\n\nexport type ActionEditorProviderAddType<Model, AddModel, Service> = ServiceClassType<Service> | IEditorDataProvider<Model, Service, any, AddModel, any>;\n\ntype TableviewActionAddOnTableOptsType<Model, AddModel, Service> = {\n serviceProvider?: ActionEditorProviderAddType<Model, AddModel, Service>;\n injector?: Injector | null;\n position?: ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight;\n};\n\nexport function tableviewActionAddOnTable<Model, AddModel, Service = undefined>(\n model: ModelDescriptor<Model>,\n descriptor: EditorDescriptorInst<AddModel>,\n opts?: TableviewActionAddOnTableOptsType<Model, AddModel, Service>\n): ActionEditorDescriptorInst<Model, Service, AddModel, undefined, Model, undefined> | null {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasAdd) {\n const action = new ActionEditorDescriptorInst<Model, Service, AddModel, undefined, Model, undefined>(descriptor, tableviewActionEditorAddActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withRouteTrigger(tableviewActionEditorAddRoute)\n .withButtonOpts({\n icon: 'pi pi-plus'\n });\n action.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n action.withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\n\nexport const tableviewActionEditorEditActionName = 'edit';\nexport const tableviewActionEditorEditRoute = ':itemId/edit';\n\nexport type ActionEditorProviderEditType<Model, EditModel, Service> = ServiceClassType<Service> | IEditorDataProvider<Model, Service, any, any, EditModel>;\n\ntype TableviewActionEditOnTableOptsType<Model, EditModel, TableModel, Service> = {\n table?: TableDescriptorInst<TableModel, any, any>;\n serviceProvider?: ActionEditorProviderEditType<Model, EditModel, Service>;\n injector?: Injector | null;\n position?: ActionPositionEnum.RowClick | ActionPositionEnum.RowInline;\n};\n\nexport function tableviewActionEditOnTable<Model, EditModel, TableModel, Service = undefined>(\n model: ModelDescriptor<Model>,\n descriptor: EditorDescriptorInst<EditModel>,\n opts?: TableviewActionEditOnTableOptsType<Model, EditModel, TableModel, Service>\n): ActionEditorDescriptorInst<Model, Service, EditModel, TableModel, Model, TableModel> | null {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasEdit) {\n const action = new ActionEditorDescriptorInst<Model, Service, EditModel, TableModel, Model, TableModel>(descriptor, tableviewActionEditorEditActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-pencil',\n style: {\n size: StyleSizeEnum.Small\n }\n })\n .withRouteTrigger(tableviewActionEditorEditRoute)\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\n\ntype TableviewActionEditOnDetailsOptsType = {\n injector?: Injector | null;\n position?: ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight;\n};\n\nexport function tableviewActionEditOnDetails<Model>(model: ModelDescriptor<Model>, opts?: TableviewActionEditOnDetailsOptsType): ActionLinkDescriptorInst<Model> | null {\n const routeData = getRouteData(opts?.injector);\n if (routeData?.tableviewActions && !routeData.tableviewActions.hasEdit) {\n return null;\n }\n\n const linkAction = actionLink(tableviewActionEditorEditActionName, {model: model});\n linkAction\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(opts?.position ?? ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit')\n .withQueryParams({}, 'merge')\n .withButtonOpts({\n icon: 'pi pi-pencil',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return linkAction;\n}\n\nexport const tableviewActionDeleteActionName = 'delete';\n\ntype TableviewActionDeleteOnTableOptsType<Model, TableModel, Service> = {\n injector?: Injector | null;\n table?: TableDescriptorInst<TableModel, any, any>;\n serviceProvider?: ActionProviderType<Model, Service>;\n position?: ActionPositionEnum.RowInline | ActionPositionEnum.RowClick;\n};\n\nexport function tableviewActionDeleteOnTable<Model, TableModel, Service = undefined>(\n model: ModelDescriptor<Model>,\n opts?: TableviewActionDeleteOnTableOptsType<Model, TableModel, Service>\n): ActionDescriptorInst<Model, Service, TableModel, Model, TableModel> | null {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDelete) {\n const action = new ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>(tableviewActionDeleteActionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n model: model\n })\n .withButtonOpts({\n label: null,\n icon: 'pi pi-trash',\n style: {\n size: StyleSizeEnum.Small,\n level: StyleLevelEnum.Danger\n }\n })\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withRunConfirmation()\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n return action;\n }\n return null;\n}\n\ntype TableviewActionDeleteOnDetailsOptsType<Model, Service> = {\n injector?: Injector | null;\n serviceProvider?: ActionProviderType<Model, Service>;\n position?: ActionPositionEnum.RowInline | ActionPositionEnum.RowClick;\n};\n\nexport function tableviewActionDeleteOnDetails<Model, Service = undefined>(\n model: ModelDescriptor<Model>,\n opts?: TableviewActionDeleteOnDetailsOptsType<Model, Service>\n): ActionDescriptorInst<Model, Service, Model, Model, Model> | null {\n const action = tableviewActionDeleteOnTable<Model, Model, Service>(model, opts) as unknown as ActionDescriptorInst<Model, Service, Model, Model, Model>;\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx =>\n dataProviderExecutor\n ? dataProviderExecutor.runDeleteOrFail(ctx).pipe(\n tap(() => {\n ctx.viewContainer?.reloadTable({});\n ctx.viewContainer?.closeEditor();\n })\n )\n : null\n )\n .withButtonOpts({\n ...action.button,\n label: undefined,\n style: {\n ...action.button?.style,\n size: StyleSizeEnum.Normal\n }\n });\n\n return action;\n }\n\n return null;\n}\n\ntype TableviewActionExportOnTableOptsType = {\n injector?: Injector | null;\n defaultActions?: TableviewDefaultActionsEnum[];\n position?: ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight;\n};\n\nexport function tableviewActionExportOnTable<Model>(\n descriptor: TableviewDescriptorInst<Model>,\n opts?: TableviewActionExportOnTableOptsType\n): ActionDescriptorInst<Model, undefined, undefined, undefined> | null {\n const exportAction = new ActionDescriptorInst<Model, undefined, undefined, undefined>('export', {\n model: descriptor.model\n })\n .withButton(undefined, 'pi pi-download')\n .withSubactionsAsMenu();\n\n const subactions: ActionDescriptorInst<Model, undefined, undefined, undefined>[] = [];\n\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportJson)) subactions.push(tableviewActionExportJsonOnTable(descriptor, opts));\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)) subactions.push(tableviewActionExportCsvOnTable(descriptor, opts));\n\n exportAction.withSubactions(...subactions);\n exportAction.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n return exportAction;\n}\n\nexport function tableviewActionExportJsonOnTable<Model>(\n descriptor: TableviewDescriptorInst<Model>,\n opts?: Omit<TableviewActionExportOnTableOptsType, 'defaultActions'>\n): ActionDescriptorInst<Model, undefined, undefined, undefined> {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst<Model, undefined, undefined, undefined>('exportJson', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n const blob = new Blob([JSON.stringify(res.data, undefined, 4)], {type: 'application/json;charset=utf-8'});\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n })\n )\n : ctx.parameters.item;\n })\n .withNotifications({runOnSuccess: false})\n .withButton(undefined, 'pi pi-code')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\n\nexport function tableviewActionExportCsvOnTable<Model>(\n descriptor: TableviewDescriptorInst<Model>,\n opts?: Omit<TableviewActionExportOnTableOptsType, 'defaultActions'>\n): ActionDescriptorInst<Model, undefined, undefined, undefined> {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst<Model, undefined, undefined, undefined>('exportCsv', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n if (!res.data) {\n return undefined;\n }\n const blob = new Blob([convertDataToStringWithDelimiter(res.data, ',', descriptor, ctx.injector.get(TranslateService))], {\n type: 'text/csv;charset=utf-8'\n });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n })\n )\n : ctx.parameters.item;\n })\n .withNotifications({runOnSuccess: false})\n .withButton(undefined, 'pi pi-file')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\n\ntype TableviewActionRefreshOnTableOptsType = {\n position?: ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight;\n};\n\nexport function tableviewActionRefreshOnTable<Model>(\n descriptor: ModelDescriptor<Model>,\n opts?: TableviewActionRefreshOnTableOptsType\n): ActionDescriptorInst<Model, undefined, undefined, undefined, undefined> | null {\n const action = new ActionDescriptorInst<Model, undefined, undefined, undefined, undefined>('refresh', {\n model: descriptor\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withNotifications({runOnSuccess: false})\n .withRunFunction(ctx => {\n ctx.viewContainer?.reloadTable({});\n return of(null);\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight)\n .withButtonOpts({\n icon: 'pi pi-refresh',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return action;\n}\n\ntype TableviewLocalizationLangSelectOnTableActionOptsType = {\n position?: ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight;\n};\n\nexport function tableviewActionLocalizationLangSelectOnTable<Model>(\n descriptor: TableviewDescriptorInst<Model>,\n opts?: TableviewLocalizationLangSelectOnTableActionOptsType\n): ActionDescriptorInst<Model, undefined, undefined, undefined, undefined> | null {\n return descriptor.isLocalized()\n ? new ActionDescriptorInst<Model, undefined, undefined, undefined, undefined>('translator', {\n model: descriptor.model\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)\n : null;\n}\n","import {Injector} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {\n ClassFunctionKeyParam1ObjKeyExtendsOfTargetType,\n ClassFunctionKeysWithParamAndReturnType,\n CommonsInternalError,\n IDataProvider,\n IdType,\n Nullable\n} from '@mediusinc/mng-commons/core';\n\nimport {ActionEditorDescriptorInst} from '../../action/descriptors/action-editor.descriptor';\nimport {ActionDescriptorInst} from '../../action/descriptors/action.descriptor';\nimport {ActionPositionEnum} from '../../action/models/action.type';\nimport {TableviewActionDefaultCategories} from '../../action/models/tableview-action-default-categories.model';\nimport {EditorDataProviderFetchMapToFnType} from '../../editor/data-providers/editor.data-provider';\nimport {TableviewDataProviderInst} from '../data-providers/tableview.data-provider';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\nimport {TableviewInput} from '../models/tableview-input.model';\nimport {TableviewDefaultActionsEnum, tableviewCreateDefaultActions, tableviewGetDefaultActions} from './tableview-default-actions';\n\nexport type TvBuilderSetterParamsType<Descriptor, DataProvider> = {descriptor: Descriptor; dataProvider: DataProvider; injector: Injector};\nexport type TvBuilderActionSetterFnType<ActionModel, ActionService, ActionInput, ActionResult, ValidationInput, Descriptor, DataProvider> = (\n params: TvBuilderSetterParamsType<Descriptor, DataProvider>\n) => Nullable<\n | ActionDescriptorInst<ActionModel, ActionService, ActionInput, ActionResult, ValidationInput>\n | ActionEditorDescriptorInst<ActionModel, ActionService, any, ActionInput, ActionResult, ValidationInput>\n>;\nexport type TvBuilderDescriptorSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => Descriptor;\nexport type TvBuilderDataProviderSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => DataProvider;\n\ntype DefaultAction = {\n type: TableviewDefaultActionsEnum;\n descriptor: ActionDescriptorInst<any> | null | undefined;\n};\n\n/**\n * The `TableviewBuilder` class is used to build a tableview configuration.\n * It allows you to set various options such as the descriptor, data provider,\n * default actions, and custom actions for the tableview.\n *\n * @typeparam Model - The main model type.\n * @typeparam Service - The API service type.\n * @typeparam Descriptor - The descriptor type.\n * @typeparam DataProvider - The data provider type.\n * @typeparam Sorts - The sort type representing available sort keys.\n * @typeparam Filters - The filter type representing available filter keys.\n */\nexport class TableviewInputBuilder<\n Model,\n Service,\n Descriptor extends TableviewDescriptorInst<Model, Sorts, Filters, undefined, TableModel, AddModel, EditModel, FieldsModel>,\n DataProvider extends IDataProvider<Model, Service>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model,\n FieldsModel = Model\n> {\n private defaultActions: DefaultAction[] = tableviewGetDefaultActions().map(a => ({type: a, descriptor: undefined}));\n private readonly _customActions: ActionDescriptorInst<any>[] = [];\n\n constructor(\n private _descriptor: Descriptor,\n private _dataProvider: DataProvider,\n private readonly injector: Injector\n ) {}\n\n private prepareSetterParams(): TvBuilderSetterParamsType<Descriptor, DataProvider> {\n return {descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector};\n }\n\n /**\n * Sets a descriptor instead of the default one.\n *\n * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDescriptor(fn: TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>): this {\n this._descriptor = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the descriptor using the provided adjust function.\n *\n * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDescriptor(adjustFn: (descriptor: Descriptor) => void): this {\n adjustFn(this._descriptor);\n return this;\n }\n\n /**\n * Sets the data provider for the TvBuilder instance\n *\n * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * * @returns {this} - Returns the current instance of the builder.\n */\n withDataProvider(fn: TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>): this {\n this._dataProvider = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the data provider using the provided adjust function.\n *\n * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDataProvider(adjustFn: (dataProvider: DataProvider) => void): this {\n adjustFn(this._dataProvider);\n return this;\n }\n\n /**\n * Adjusts the data provider and/or descriptor using the provided adjust function.\n *\n * @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>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjust(adjustFn: (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void): this {\n adjustFn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Associates a fetch function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the fetch API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of fetch function on API service.\n */\n withDataServiceFetchFn<ServiceFn extends ClassFunctionKeysWithParamAndReturnType<Service, any, Observable<Model>>>(\n serviceFn: ServiceFn,\n itemIdParamName: ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>\n ): this {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withFetch((itemId, service) => service[serviceFn]({[itemIdParamName]: itemId}));\n }\n return this;\n }\n\n /**\n * Associates a create function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the create API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} serviceFnItemParamName The parameter name for item used as the key within the request object of create function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, AddModel>} [mapFetchItem] Map function to transform model from fetch to form's add model.\n */\n withDataServiceCreateFn<ServiceFn extends ClassFunctionKeysWithParamAndReturnType<Service, any, Observable<any>>>(\n serviceFn: ServiceFn,\n serviceFnItemParamName: ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, AddModel>,\n mapFetchItem?: EditorDataProviderFetchMapToFnType<Model, AddModel>\n ): this {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withCreate((item, service) => service[serviceFn]({[serviceFnItemParamName]: item}));\n\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToCreateItem(mapFetchItem);\n }\n }\n return this;\n }\n\n /**\n * Associates an update function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the update API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} fnItemParamName The parameter name for item used as the key within the request object of update function on API service.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} [fnItemIdParamName] The parameter name for itemId used as the key within the request object of update function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, EditModel>} [mapFetchItem] Map function to transform model from fetch to form' edit model.\n */\n withDataServiceUpdateFn<ServiceFn extends ClassFunctionKeysWithParamAndReturnType<Service, any, Observable<any>>>(\n serviceFn: ServiceFn,\n fnItemParamName: ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, EditModel>,\n fnItemIdParamName?: ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>,\n mapFetchItem?: EditorDataProviderFetchMapToFnType<Model, EditModel>\n ): this {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withUpdate((id, item, service) => {\n const params: any = {[fnItemParamName]: item};\n if (fnItemIdParamName) {\n params[fnItemIdParamName] = id;\n }\n return service[serviceFn](params);\n });\n\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToUpdateItem(mapFetchItem);\n }\n }\n return this;\n }\n\n /**\n * Associates a delete function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the delete API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of delete function on API service.\n */\n withDataServiceDeleteFn<ServiceFn extends ClassFunctionKeysWithParamAndReturnType<Service, any, Observable<any>>>(\n serviceFn: ServiceFn,\n fnItemIdParamName: ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>\n ): this {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withDelete((itemId, service) => service[serviceFn]({[fnItemIdParamName]: itemId}));\n }\n return this;\n }\n\n /**\n * Removes all the default tableview actions.\n *\n * @returns {this} - Returns the current instance of the builder.\n */\n withNoDefaultActions(): this {\n this.defaultActions.forEach(a => (a.descriptor = null));\n return this;\n }\n\n /**\n * Adds the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action?.descriptor === null) {\n action.descriptor = undefined;\n }\n });\n return this;\n }\n\n /**\n * Removes the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.\n * @returns {this} - Returns the current instance of the builder.\n */\n withoutDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = null;\n }\n });\n return this;\n }\n\n /**\n * Overrides the default action.\n *\n * @param {TableviewDefaultActionsEnum} type - The default actions to override.\n * @param {TvBuilderActionSetterFnType<Model, ActionService , ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActionOverride<ActionService = Service, ActionRunInput = Model, ActionRunResult = Model, ValidationInput = Model>(\n type: TableviewDefaultActionsEnum,\n fn: TvBuilderActionSetterFnType<Model, ActionService, ActionRunInput, ActionRunResult, ValidationInput, Descriptor, DataProvider>\n ): this {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = fn(this.prepareSetterParams()) ?? null;\n }\n return this;\n }\n\n /**\n * Adds a custom action.\n *\n * @deprecated Use on of {withActionOnTable}, {withActionOnDetailsEditor}, {withActionOnEditEditor} or {withActionOnAddEditor} instead.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withAction<ActionModel = Model, ActionService = Service, ActionRunInput = Model, ActionRunResult = Model, ValidationInput = Model>(\n fn: TvBuilderActionSetterFnType<ActionModel, ActionService, ActionRunInput, ActionRunResult, ValidationInput, Descriptor, DataProvider>\n ): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * Adds a custom action on table row or top (header or toolbar).\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnTable<ActionModel = Model, ActionService = Service, ActionInput extends TableModel | undefined = TableModel, ActionRunResult = Model>(\n fn: TvBuilderActionSetterFnType<ActionModel, ActionService, ActionInput, ActionRunResult, ActionInput, Descriptor, DataProvider>\n ): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.READ]);\n if (\n ![\n ActionPositionEnum.ToolbarLeft,\n ActionPositionEnum.ToolbarRight,\n ActionPositionEnum.TableHeader,\n ActionPositionEnum.RowInline,\n ActionPositionEnum.RowClick\n ].includes(action.position)\n ) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on table (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * Adds a custom action on details editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnDetailsEditor<ActionModel = Model, ActionService = Service, ActionInput extends Model = Model, ActionResult = Model>(\n fn: TvBuilderActionSetterFnType<ActionModel, ActionService, ActionInput, ActionResult, ActionInput, Descriptor, DataProvider>\n ): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on details (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * Adds a custom action on edit editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnEditEditor<ActionModel = Model, ActionService = Service, ActionInput extends EditModel = EditModel, ActionResult = Model>(\n fn: TvBuilderActionSetterFnType<ActionModel, ActionService, ActionInput, ActionResult, ActionInput, Descriptor, DataProvider>\n ): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.EDIT]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on edit (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * Adds a custom action on add editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnAddEditor<ActionModel = Model, ActionService = Service, ActionInput extends AddModel = AddModel, ActionResult = Model>(\n fn: TvBuilderActionSetterFnType<ActionModel, ActionService, ActionInput, ActionResult, ActionInput, Descriptor, DataProvider>\n ): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.ADD]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on add (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * @internal\n *\n * Builds and returns an instance of ITableview.\n * DO NOT CALL this within tableview create callback function!\n *\n * @return {TableviewInput<Model, Service, Sorts, Filters, TableModel, AddModel, EditModel, Descriptor, DataProvider>} - The built ITableview instance.\n */\n build() {\n return <TableviewInput<Model, Service, Sorts, Filters, TableModel, AddModel, EditModel, Descriptor, DataProvider>>{\n actions: tableviewCreateDefaultActions(\n this._descriptor as TableviewDescriptorInst<any, any, any, any, any, any, any, any>,\n this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type),\n this.defaultActions\n .filter(a => a.descriptor != null)\n .reduce(\n (acc, a) => ({\n ...acc,\n [a.type]: a.descriptor!\n }),\n <Record<number, ActionDescriptorInst<any>>>{}\n ),\n this.injector\n ).concat(this._customActions),\n dataProvider: this._dataProvider,\n descriptor: this._descriptor\n };\n }\n}\n","import {Injector, inject} from '@angular/core';\n\nimport {ServiceClassOptType, ServiceClassType} from '@mediusinc/mng-commons/core';\nimport {ModelDescriptor, TypeDescriptor} from '@mediusinc/mng-commons/model';\n\nimport {TableviewDataProviderInst} from '../data-providers/tableview.data-provider';\nimport {TableviewDescriptorInst, TableviewDescriptorInstConstructorOpts} from '../descriptors/tableview.descriptor';\nimport {TableviewDescriptorFieldsManageMultiType} from '../models/tableview-descriptor-fields-manage-helper.type';\nimport {TableviewInputBuilder} from './tableview-input-builder';\n\n/**\n * Creates a tableview with the given model, service.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} [opts.service] - The class type of the service.\n * @param {TypeDescriptor<Sorts> | ModelDescriptor<Sorts>} [opts.sortsType] - Type of sorts\n * @param {TypeDescriptor<Filters> | ModelDescriptor<Filters>} [opts.filtersType] - Type of filters.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableview<Model, Service = undefined, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n model: ModelDescriptor<Model>,\n opts?: {\n service?: ServiceClassType<Service>;\n sortsType?: TypeDescriptor<Sorts> | ModelDescriptor<Sorts>;\n filtersType?: TypeDescriptor<Filters> | ModelDescriptor<Filters>;\n },\n buildFn?: (\n builder: TableviewInputBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewInputBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters>,\n TableviewDataProviderInst<Model, Service, Sorts, Filters>,\n Sorts,\n Filters\n >(new TableviewDescriptorInst<Model, Sorts, Filters>(model), new TableviewDataProviderInst<Model, Service, Sorts, Filters>(opts?.service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n\ntype TableviewMultiModelOpts<Service, Sorts, Filters, TableModel, AddModel, EditModel> = {\n service?: ServiceClassType<Service>;\n sortsType?: TypeDescriptor<Sorts> | ModelDescriptor<Sorts>;\n filtersType?: TypeDescriptor<Filters> | ModelDescriptor<Filters>;\n} & TableviewDescriptorInstConstructorOpts<TableModel, AddModel, EditModel>;\n\nexport function tableviewMultiModel<\n Model,\n Service = undefined,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n TableModel = Model,\n AddModel = Model,\n EditModel = Model,\n FieldsModel = TableviewDescriptorFieldsManageMultiType<Model, AddModel, EditModel>\n>(\n model: ModelDescriptor<Model>,\n opts?: TableviewMultiModelOpts<Service, Sorts, Filters, TableModel, AddModel, EditModel>,\n buildFn?: (\n builder: TableviewInputBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters, undefined, TableModel, AddModel, EditModel, FieldsModel>,\n TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClassOptType<Service>, TableModel, AddModel, EditModel>,\n Sorts,\n Filters,\n TableModel,\n AddModel,\n EditModel,\n FieldsModel\n >\n ) => void\n) {\n const builder = new TableviewInputBuilder<\n Model,\n Service,\n TableviewDescriptorInst<Model, Sorts, Filters, undefined, TableModel, AddModel, EditModel, FieldsModel>,\n TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClassOptType<Service>, TableModel, AddModel, EditModel>,\n Sorts,\n Filters,\n TableModel,\n AddModel,\n EditModel,\n FieldsModel\n >(\n new TableviewDescriptorInst<Model, Sorts, Filters, undefined, TableModel, AddModel, EditModel, FieldsModel>(model, opts),\n new TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClassOptType<Service>, TableModel, AddModel, EditModel>(opts?.service),\n inject(Injector)\n );\n buildFn?.(builder);\n return builder.build();\n}\n","import {ServiceClassType} from '@mediusinc/mng-commons/core';\n\nimport {TableviewDataProviderInst} from '../data-providers/tableview.data-provider';\nimport {TableviewDescriptorInst} from '../descriptors/tableview.descriptor';\n\n/**\n * Creates a data provider for from descriptor. DO NOT use if the model is class, because the type (from model descriptor) will not be set in data provider.\n *\n * @param {TableviewDescriptorInst<Model, Sorts, Filters>} descriptor - The table descriptor.\n *\n * @return {TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>} - The data provider for the table component.\n */\nexport function tableviewDataProviderFromDescriptor<\n Model,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n TableModel = Model,\n CreateModel = Model,\n UpdateModel = Model\n>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters, any, TableModel, CreateModel, UpdateModel, any>\n): TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, TableModel, CreateModel, UpdateModel>;\n/**\n * Creates a data provider for from descriptor. DO NOT use if the model is class, because the type (from model descriptor) will not be set in data provider.\n *\n * @param {TableviewDescriptorInst<Model, Sorts, Filters>} descriptor - The table descriptor.\n * @param {ServiceClassType<Service>} serviceClass - The service class type.\n *\n * @return {TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>} - The data provider for the table component.\n */\nexport function tableviewDataProviderFromDescriptor<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n TableModel = Model,\n CreateModel = Model,\n UpdateModel = Model\n>(\n descriptor: TableviewDescriptorInst<Model, Sorts, Filters, any, TableModel, CreateModel, UpdateModel, any>,\n serviceClass: ServiceClassType<Service>\n): TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClassType<Service>, TableModel, CreateModel, UpdateModel>;\nexport function tableviewDataProviderFromDescriptor<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ServiceClass = ServiceClassType<Service>,\n TableModel = Model,\n CreateModel = Model,\n UpdateModel = Model\n>(descriptor: TableviewDescriptorInst<Model, Sorts, Filters, any, TableModel, CreateModel, UpdateModel, any>, serviceType?: ServiceClass) {\n return typeof serviceType !== 'undefined'\n ? new TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClassType<Service>, TableModel, CreateModel, UpdateModel>(serviceType as ServiceClassType<Service>)\n : new TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, TableModel, CreateModel, UpdateModel>(undefined);\n}\n","// action descriptors\nexport * from './action/descriptors/action.descriptor';\nexport * from './action/descriptors/action-descriptor.factory';\nexport * from './action/descriptors/action-editor.descriptor';\nexport * from './action/descriptors/action-editor-descriptor.factory';\nexport * from './action/descriptors/action-link.descriptor';\nexport * from './action/descriptors/action-link-descriptor.factory';\nexport * from './action/descriptors/editor-action-descriptor.factory';\nexport * from './action/descriptors/editor-action-editor-descriptor.factory';\nexport * from './action/descriptors/table-action-descriptor.factory';\nexport * from './action/descriptors/table-action-editor-descriptor.factory';\n\n// action helpers\nexport * from './action/helpers/data-provider-executors';\n\n// action model execution\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-context-validation.model';\nexport * from './action/models/execution/action-execution-error.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/execution/view-container.model';\n\n// action model\nexport * from './action/models/action.type';\nexport * from './action/models/action-component.model';\nexport * from './action/models/action-confirmation.model';\nexport * from './action/models/action-descriptor.types';\nexport * from './action/models/action-editor.model';\nexport * from './action/models/action-error.model';\nexport * from './action/models/tableview-action-default-categories.model';\n\n// action services\nexport * from './action/services/tokens/data-language-dropdown.token';\nexport * from './action/services/data-provider-executor.service';\n\n// editor data providers\nexport * from './editor/data-providers/editor.data-provider';\nexport * from './editor/data-providers/editor-data-provider.factory';\n\n// editor descriptors\nexport * from './editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper';\nexport * from './editor/descriptors/editor.descriptor';\nexport * from './editor/descriptors/editor-descriptor.factory';\nexport * from './editor/descriptors/field.descriptor';\nexport * from './editor/descriptors/field-action.descriptor';\nexport * from './editor/descriptors/field-base.descriptor';\nexport * from './editor/descriptors/field-group.descriptor';\nexport * from './editor/descriptors/field-lookup.descriptor';\nexport * from './editor/descriptors/field-many.descriptor';\nexport * from './editor/descriptors/field-validation.descriptor';\n\n// editor models\nexport * from './editor/models/editor.model';\nexport * from './editor/models/editor-fields.model';\nexport * from './editor/models/field.model';\nexport * from './editor/models/field-action-context.model';\nexport * from './editor/models/field-validation.model';\nexport * from './editor/models/form-editor.event';\nexport * from './editor/models/form-editor.interface';\nexport * from './editor/models/formly-custom-field.model';\nexport * from './editor/models/formly-field.model';\nexport * from './editor/models/formly-options.model';\nexport * from './editor/models/radio.model';\nexport * from './editor/models/field-image-preview.model';\n\n// tableview data providers\nexport * from './tableview/data-providers/tableview.data-provider';\nexport * from './tableview/data-providers/tableview-data-provider.factory';\n\n// tableview descriptors\nexport * from './tableview/descriptors/tableview.descriptor';\nexport * from './tableview/descriptors/tableview-descriptor.factory';\n\n// tableview helpers\nexport * from './tableview/helpers/files-export';\nexport * from './tableview/helpers/tableview-create';\nexport * from './tableview/helpers/tableview-data-provider-descriptor-convert';\nexport * from './tableview/helpers/tableview-default-actions';\nexport * from './tableview/helpers/tableview-input-builder';\n\n// tableview models\nexport * from './tableview/models/tableview-descriptor-fields-manage-helper.type';\nexport * from './tableview/models/tableview-descriptor-helper.type';\nexport * from './tableview/models/tableview-input.model';\nexport * from './tableview/models/tableview-route.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-tableview-api.mjs","sources":["../tmp-esm2022/tableview/api/action/models/action.type.js","../tmp-esm2022/tableview/api/action/descriptors/action.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-descriptor.factory.js","../tmp-esm2022/tableview/api/editor/data-providers/editor.data-provider.js","../tmp-esm2022/tableview/api/action/descriptors/action-editor.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/action-link.descriptor.js","../tmp-esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.js","../tmp-esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.js","../tmp-esm2022/tableview/api/action/models/action-error.model.js","../tmp-esm2022/tableview/api/action/helpers/data-provider-executors.js","../tmp-esm2022/tableview/api/action/models/execution/action-instance-state.model.js","../tmp-esm2022/tableview/api/action/models/tableview-action-default-categories.model.js","../tmp-esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.js","../tmp-esm2022/tableview/api/action/services/data-provider-executor.service.js","../tmp-esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.js","../tmp-esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.js","../tmp-esm2022/tableview/api/editor/models/editor.model.js","../tmp-esm2022/tableview/api/editor/models/field.model.js","../tmp-esm2022/tableview/api/editor/descriptors/field-validation.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-base.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-action.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-group.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field-many.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/field.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/editor.descriptor.js","../tmp-esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.js","../tmp-esm2022/tableview/api/editor/models/form-editor.event.js","../tmp-esm2022/tableview/api/editor/models/formly-custom-field.model.js","../tmp-esm2022/tableview/api/tableview/data-providers/tableview.data-provider.js","../tmp-esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.js","../tmp-esm2022/tableview/api/tableview/descriptors/tableview.descriptor.js","../tmp-esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.js","../tmp-esm2022/tableview/api/tableview/helpers/files-export.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-default-actions.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-input-builder.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-create.js","../tmp-esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.js","../tmp-esm2022/tableview/api/index.js","../tmp-esm2022/tableview/api/mediusinc-mng-commons-tableview-api.js"],"sourcesContent":["export var ActionPositionEnum;\n(function (ActionPositionEnum) {\n ActionPositionEnum[ActionPositionEnum[\"ToolbarLeft\"] = 0] = \"ToolbarLeft\";\n ActionPositionEnum[ActionPositionEnum[\"ToolbarRight\"] = 1] = \"ToolbarRight\";\n ActionPositionEnum[ActionPositionEnum[\"TableHeader\"] = 2] = \"TableHeader\";\n ActionPositionEnum[ActionPositionEnum[\"RowInline\"] = 3] = \"RowInline\";\n ActionPositionEnum[ActionPositionEnum[\"RowClick\"] = 4] = \"RowClick\";\n ActionPositionEnum[ActionPositionEnum[\"FooterLeft\"] = 5] = \"FooterLeft\";\n ActionPositionEnum[ActionPositionEnum[\"FooterRight\"] = 6] = \"FooterRight\";\n})(ActionPositionEnum || (ActionPositionEnum = {}));\nexport var ActionActivationTriggerEnum;\n(function (ActionActivationTriggerEnum) {\n ActionActivationTriggerEnum[ActionActivationTriggerEnum[\"OnClick\"] = 0] = \"OnClick\";\n ActionActivationTriggerEnum[ActionActivationTriggerEnum[\"OnRoute\"] = 1] = \"OnRoute\"; // action is triggered for activation by route url\n})(ActionActivationTriggerEnum || (ActionActivationTriggerEnum = {}));\nexport var ActionTypeEnum;\n(function (ActionTypeEnum) {\n ActionTypeEnum[ActionTypeEnum[\"Direct\"] = 0] = \"Direct\";\n ActionTypeEnum[ActionTypeEnum[\"Editor\"] = 1] = \"Editor\"; // editor providing middle step for activation\n})(ActionTypeEnum || (ActionTypeEnum = {}));\nexport var ActionEditorSubmitTypeEnum;\n(function (ActionEditorSubmitTypeEnum) {\n ActionEditorSubmitTypeEnum[ActionEditorSubmitTypeEnum[\"Submit\"] = 0] = \"Submit\";\n ActionEditorSubmitTypeEnum[ActionEditorSubmitTypeEnum[\"Cancel\"] = 1] = \"Cancel\";\n})(ActionEditorSubmitTypeEnum || (ActionEditorSubmitTypeEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL2FjdGlvbi50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQVFYO0FBUkQsV0FBWSxrQkFBa0I7SUFDMUIseUVBQVcsQ0FBQTtJQUNYLDJFQUFZLENBQUE7SUFDWix5RUFBVyxDQUFBO0lBQ1gscUVBQVMsQ0FBQTtJQUNULG1FQUFRLENBQUE7SUFDUix1RUFBVSxDQUFBO0lBQ1YseUVBQVcsQ0FBQTtBQUNmLENBQUMsRUFSVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBUTdCO0FBRUQsTUFBTSxDQUFOLElBQVksMkJBR1g7QUFIRCxXQUFZLDJCQUEyQjtJQUNuQyxtRkFBTyxDQUFBO0lBQ1AsbUZBQU8sQ0FBQSxDQUFDLGtEQUFrRDtBQUM5RCxDQUFDLEVBSFcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUd0QztBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsdURBQU0sQ0FBQTtJQUNOLHVEQUFNLENBQUEsQ0FBQyw4Q0FBOEM7QUFDekQsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksMEJBR1g7QUFIRCxXQUFZLDBCQUEwQjtJQUNsQywrRUFBTSxDQUFBO0lBQ04sK0VBQU0sQ0FBQTtBQUNWLENBQUMsRUFIVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBR3JDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQWN0aW9uUG9zaXRpb25FbnVtIHtcbiAgICBUb29sYmFyTGVmdCxcbiAgICBUb29sYmFyUmlnaHQsXG4gICAgVGFibGVIZWFkZXIsXG4gICAgUm93SW5saW5lLFxuICAgIFJvd0NsaWNrLFxuICAgIEZvb3RlckxlZnQsXG4gICAgRm9vdGVyUmlnaHRcbn1cblxuZXhwb3J0IGVudW0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtIHtcbiAgICBPbkNsaWNrLCAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIG9uIGNsaWNrXG4gICAgT25Sb3V0ZSAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIGJ5IHJvdXRlIHVybFxufVxuXG5leHBvcnQgZW51bSBBY3Rpb25UeXBlRW51bSB7XG4gICAgRGlyZWN0LCAvLyBhY3Rpb24gaXMgZGlyZWN0bHkgYWN0aXZhdGVkIGFuZCBleGVjdXRlZFxuICAgIEVkaXRvciAvLyBlZGl0b3IgcHJvdmlkaW5nIG1pZGRsZSBzdGVwIGZvciBhY3RpdmF0aW9uXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtIHtcbiAgICBTdWJtaXQsXG4gICAgQ2FuY2VsXG59XG4iXX0=","import { of } from 'rxjs';\nimport { CommonsInternalError, DataProviderInst, LoggerService, StyleLevelEnum, findReflectTypeName } from '@mediusinc/mng-commons/core';\nimport { ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';\nexport class ActionDescriptorInst {\n constructor(actionName, cfg) {\n this._type = ActionTypeEnum.Direct;\n this._activationTrigger = ActionActivationTriggerEnum.OnClick;\n this._position = ActionPositionEnum.ToolbarRight;\n this._level = StyleLevelEnum.Default;\n this._routeUrl = null;\n // multiple row selection\n this._hasItemsSelection = false;\n // subactions\n this._subactionsAsMenu = false;\n this._subactions = [];\n this._model = cfg?.model;\n this._actionName = actionName;\n if ((cfg?.parentModel && !cfg?.parentProperty) || (!cfg?.parentProperty && cfg?.parentProperty)) {\n throw new CommonsInternalError(`Provide both the parent model and parent property or none: ${this._actionName}, ${cfg?.parentModel?.i18nBaseKey}, ${cfg?.parentProperty}.`);\n }\n this._parentModel = cfg?.parentModel;\n this._parentProperty = cfg?.parentProperty;\n this.setI18nModelActionBaseKey();\n if (cfg?.serviceType) {\n this._dataProvider = new DataProviderInst(cfg.serviceType);\n }\n else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n let displayName = actionName;\n if (this._model)\n displayName = this._model.i18nBaseKey ? `${this._model.i18nBaseKey}.${displayName}` : displayName;\n if (this._parentModel) {\n displayName = `${this._parentModel.i18nBaseKey}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n get model() {\n return this._model;\n }\n get parentModel() {\n return this._parentModel;\n }\n get parentProperty() {\n return this._parentProperty;\n }\n get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n get type() {\n return this._type;\n }\n get activationTrigger() {\n return this._activationTrigger;\n }\n get position() {\n return this._position;\n }\n get routeUrl() {\n return this._routeUrl;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get hasRunFunction() {\n return typeof this._runFunction === 'function';\n }\n get runFunction() {\n if (!this._runFunction) {\n throw new CommonsInternalError(`Run function is not defined for action ${this._actionNameLong} and cannot be invoked`);\n }\n return this._runFunction;\n }\n get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n get actionName() {\n return this._actionName;\n }\n get actionNameLong() {\n return this._actionNameLong;\n }\n get runConfirmation() {\n return this._runConfirmation;\n }\n get runNotificationOnSuccess() {\n return this._runNotificationOnSuccess;\n }\n get runNotificationOnError() {\n return this._runNotificationOnError;\n }\n get afterRunAction() {\n return this._afterRunAction;\n }\n get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n get permissions() {\n return this._permissions;\n }\n get tableviewCategory() {\n return this._tableviewCategory;\n }\n get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n get button() {\n return this._button;\n }\n get component() {\n return this._component;\n }\n get componentFromDi() {\n return this._componentFromDi;\n }\n get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n get subactions() {\n return this._subactions;\n }\n setI18nModelActionBaseKey(base) {\n if (this._parentModel || this._model) {\n this._i18nModelActionBaseKey = this._parentModel\n ? `${this._parentModel.i18nBaseKey}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n withRunFunction(fn) {\n this._runFunction = fn;\n return this;\n }\n withIsVisibleFunction(fn) {\n this._isVisibleFunction = fn;\n return this;\n }\n withIsEnabledFunction(fn) {\n this._isEnabledFunction = fn;\n return this;\n }\n withRouteTrigger(routeUrl) {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n withPosition(position) {\n this._position = position;\n return this;\n }\n /**\n * Creates confirmation action with default style based on action descriptor\n */\n withRunConfirmation(opts = true) {\n this._runConfirmation = opts === true ? {} : opts === false ? undefined : opts;\n return this;\n }\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for run success/error notifications.\n */\n withNotifications(opts) {\n this._runNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.runOnSuccess;\n this._runNotificationOnError = typeof opts === 'boolean' ? opts : opts?.runOnError;\n return this;\n }\n withAfterRunAction(action) {\n this._afterRunAction = action;\n return this;\n }\n withOnRunErrorAction(action) {\n this._onRunErrorAction = action;\n return this;\n }\n withPermissions(permissions) {\n if (this._tableviewCategory) {\n LoggerService.get().debug(`WARNING: Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`);\n }\n this._permissions = permissions;\n return this;\n }\n withTableviewCategory(category) {\n this._tableviewCategory = category;\n return this;\n }\n withButtonOpts(button) {\n this._button = button;\n return this;\n }\n withButton(label, icon = null, level) {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n withItemsSelection(hasSelection = true) {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n withComponent(component) {\n this._component = component;\n return this;\n }\n withComponentFromDi(injectionToken) {\n this._componentFromDi = injectionToken;\n return this;\n }\n withPositionTableviewCategories(positionTableviewCategories) {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n withI18nBase(base) {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on action ${this.actionNameLong}`);\n }\n base = typeName;\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n withSubactionsAsMenu(subactionsAsMenu = true) {\n this._subactionsAsMenu = subactionsAsMenu;\n return this;\n }\n withSubactions(...subactions) {\n this._subactions.push(...subactions);\n return this;\n }\n copyFieldsTo(descriptor) {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories ? [...this._positionTableviewCategories] : undefined;\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n if (this._runConfirmation) {\n descriptor._runConfirmation = { ...this._runConfirmation };\n if (this._runConfirmation.acceptButton) {\n descriptor._runConfirmation.acceptButton = { ...this._runConfirmation.acceptButton };\n }\n if (this._runConfirmation.rejectButton) {\n descriptor._runConfirmation.rejectButton = { ...this._runConfirmation.rejectButton };\n }\n }\n descriptor._runNotificationOnSuccess = typeof this._runNotificationOnSuccess === 'object' ? { ...this._runNotificationOnSuccess } : this._runNotificationOnSuccess;\n descriptor._runNotificationOnError = typeof this._runNotificationOnError === 'object' ? { ...this._runNotificationOnError } : this._runNotificationOnError;\n if (this._afterRunAction != null) {\n descriptor._afterRunAction = typeof this._afterRunAction === 'function' ? this._afterRunAction : this._afterRunAction.copy();\n }\n if (this._onRunErrorAction != null) {\n descriptor._onRunErrorAction = typeof this._onRunErrorAction === 'function' ? this._onRunErrorAction : this._onRunErrorAction.copy();\n }\n descriptor._permissions = this._permissions;\n if (this._button) {\n descriptor._button = {\n ...this._button\n };\n if (this._button.style) {\n descriptor._button.style = {\n ...this._button.style\n };\n }\n }\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._componentFromDi = this._componentFromDi;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions.map(a => a.copy());\n return descriptor;\n }\n copy() {\n const descriptor = new ActionDescriptorInst(this._actionName, {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUdoQixhQUFhLEVBRWIsY0FBYyxFQUNkLG1CQUFtQixFQUN0QixNQUFNLDZCQUE2QixDQUFDO0FBT3JDLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQXFCdEcsTUFBTSxPQUFPLG9CQUFvQjtJQWlEN0IsWUFBbUIsVUFBa0IsRUFBRSxHQUF3RDtRQXRDckYsVUFBSyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzlDLHVCQUFrQixHQUFnQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDdEYsY0FBUyxHQUF1QixrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDaEUsV0FBTSxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFDO1FBSWhELGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBb0IxQyx5QkFBeUI7UUFDZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFNckMsYUFBYTtRQUNILHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUE4RCxFQUFFLENBQUM7UUFHbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxJQUFJLEdBQUcsRUFB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SSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3RCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksb0JBQW9CLENBQWtFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDM0gsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMxQixXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDOUIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ3ZDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBDbGFzc1R5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YVByb3ZpZGVySW5zdCxcbiAgICBJQWN0aW9uRGVzY3JpcHRvcixcbiAgICBJRGF0YVByb3ZpZGVyLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgU2VydmljZUNsYXNzVHlwZSxcbiAgICBTdHlsZUxldmVsRW51bSxcbiAgICBmaW5kUmVmbGVjdFR5cGVOYW1lXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lBY3Rpb25CdXR0b25EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkNvbmZpcm1hdGlvbn0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25Ob3RpZmljYXRpb25UeXBlLCBBY3Rpb25SdW5GblR5cGUsIEFjdGlvblZhbGlkYXRpb25GblR5cGV9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZGVzY3JpcHRvci50eXBlcyc7XG5pbXBvcnQge0FjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSwgQWN0aW9uUG9zaXRpb25FbnVtLCBBY3Rpb25UeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7SUFjdGlvbkNvbnRleHR9IGZyb20gJy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxJdGVtLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSA9IHtcbiAgICBwYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHBhcmVudFByb3BlcnR5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEl0ZW0sIFNlcnZpY2U+ICYge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICB9O1xuXG50eXBlIEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiA9IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBSdW5SZXR1cm5JdGVtLCBhbnksIHVuZGVmaW5lZD47XG50eXBlIE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gPSBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgUnVuSW5wdXRJdGVtLCBhbnksIHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlID0gYW55LCBSdW5JbnB1dEl0ZW0gPSBJdGVtLCBSdW5SZXR1cm5JdGVtID0gSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IFJ1bklucHV0SXRlbT4gaW1wbGVtZW50cyBJQWN0aW9uRGVzY3JpcHRvcjxJdGVtLCBTZXJ2aWNlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWU6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWVMb25nOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3R5cGU6IEFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZUVudW0uRGlyZWN0O1xuICAgIHByb3RlY3RlZCBfYWN0aXZhdGlvblRyaWdnZXI6IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PbkNsaWNrO1xuICAgIHByb3RlY3RlZCBfcG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSA9IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgcHJvdGVjdGVkIF9sZXZlbDogU3R5bGVMZXZlbEVudW0gPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0O1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz86IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCBfdGFibGV2aWV3Q2F0ZWdvcnk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3JvdXRlVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHByb3RlY3RlZCBfcnVuRnVuY3Rpb24/OiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX2lzRW5hYmxlZEZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcblxuICAgIHByb3RlY3RlZCBfcnVuQ29uZmlybWF0aW9uPzogQWN0aW9uQ29uZmlybWF0aW9uPEl0ZW0sIFJ1bklucHV0SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIF9hZnRlclJ1bkFjdGlvbj86IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueSwgYW55PikgPT4gQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+KTtcbiAgICBwcm90ZWN0ZWQgX29uUnVuRXJyb3JBY3Rpb24/OiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFJ1bklucHV0SXRlbSwgYW55LCBhbnk+KSA9PiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+KTtcblxuICAgIC8vIHNlY3VyaXR5XG4gICAgcHJvdGVjdGVkIF9wZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucztcblxuICAgIC8vYnV0dG9uXG4gICAgcHJvdGVjdGVkIF9idXR0b24/OiBJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcjtcblxuICAgIC8vIG11bHRpcGxlIHJvdyBzZWxlY3Rpb25cbiAgICBwcm90ZWN0ZWQgX2hhc0l0ZW1zU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICAvLyBjdXN0b20gYWN0aW9uIGNvbXBvbmVudFxuICAgIHByb3RlY3RlZCBfY29tcG9uZW50PzogVHlwZTxJQWN0aW9uQ29tcG9uZW50PEl0ZW0+PjtcbiAgICBwcm90ZWN0ZWQgX2NvbXBvbmVudEZyb21EaT86IEluamVjdGlvblRva2VuPFR5cGU8YW55Pj47XG5cbiAgICAvLyBzdWJhY3Rpb25zXG4gICAgcHJvdGVjdGVkIF9zdWJhY3Rpb25zQXNNZW51ID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9zdWJhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBhbnksIFJ1bklucHV0SXRlbSwgYW55Pj4gPSBbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEl0ZW0sIFNlcnZpY2U+KSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gY2ZnPy5tb2RlbDtcbiAgICAgICAgdGhpcy5fYWN0aW9uTmFtZSA9IGFjdGlvbk5hbWU7XG5cbiAgICAgICAgaWYgKChjZmc/LnBhcmVudE1vZGVsICYmICFjZmc/LnBhcmVudFByb3BlcnR5KSB8fCAoIWNmZz8ucGFyZW50UHJvcGVydHkgJiYgY2ZnPy5wYXJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICBgUHJvdmlkZSBib3RoIHRoZSBwYXJlbnQgbW9kZWwgYW5kIHBhcmVudCBwcm9wZXJ0eSBvciBub25lOiAke3RoaXMuX2FjdGlvbk5hbWV9LCAke2NmZz8ucGFyZW50TW9kZWw/LmkxOG5CYXNlS2V5fSwgJHtjZmc/LnBhcmVudFByb3BlcnR5fS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BhcmVudE1vZGVsID0gY2ZnPy5wYXJlbnRNb2RlbDtcbiAgICAgICAgdGhpcy5fcGFyZW50UHJvcGVydHkgPSBjZmc/LnBhcmVudFByb3BlcnR5O1xuXG4gICAgICAgIHRoaXMuc2V0STE4bk1vZGVsQWN0aW9uQmFzZUtleSgpO1xuXG4gICAgICAgIGlmIChjZmc/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRGF0YVByb3ZpZGVySW5zdDxJdGVtLCBTZXJ2aWNlPihjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXlOYW1lID0gYWN0aW9uTmFtZTtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsKSBkaXNwbGF5TmFtZSA9IHRoaXMuX21vZGVsLmkxOG5CYXNlS2V5ID8gYCR7dGhpcy5fbW9kZWwuaTE4bkJhc2VLZXl9LiR7ZGlzcGxheU5hbWV9YCA6IGRpc3BsYXlOYW1lO1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50TW9kZWwpIHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYCR7dGhpcy5fcGFyZW50TW9kZWwuaTE4bkJhc2VLZXl9LiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7ZGlzcGxheU5hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hY3Rpb25OYW1lTG9uZyA9IGRpc3BsYXlOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudE1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50TW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaTE4bk1vZGVsQWN0aW9uQmFzZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2YXRpb25UcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91dGVVcmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZVVybDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1J1bkZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3J1bkZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuRnVuY3Rpb24oKTogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbT4ge1xuICAgICAgICBpZiAoIXRoaXMuX3J1bkZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZCBmb3IgYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9IGFuZCBjYW5ub3QgYmUgaW52b2tlZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZUZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0VuYWJsZWRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25OYW1lTG9uZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWVMb25nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uT25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclJ1bkFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyUnVuQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25SdW5FcnJvckFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUnVuRXJyb3JBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3Q2F0ZWdvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0l0ZW1zU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnRGcm9tRGkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRGcm9tRGk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJhY3Rpb25zQXNNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1YmFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJhY3Rpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2U/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1vZGVsIHx8IHRoaXMuX21vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5fcGFyZW50TW9kZWxcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuX3BhcmVudE1vZGVsLmkxOG5CYXNlS2V5fS5hY3Rpb25zLiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7dGhpcy5fYWN0aW9uTmFtZX1gXG4gICAgICAgICAgICAgICAgOiBgJHtiYXNlID8/IHRoaXMuX21vZGVsIS5pMThuQmFzZUtleX0uYWN0aW9ucy4ke3RoaXMuX2FjdGlvbk5hbWV9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNWaXNpYmxlRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNFbmFibGVkRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm91dGVUcmlnZ2VyKHJvdXRlVXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvblRyaWdnZXIgPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZTtcbiAgICAgICAgdGhpcy5fcm91dGVVcmwgPSByb3V0ZVVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvbihwb3NpdGlvbjogQWN0aW9uUG9zaXRpb25FbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgY29uZmlybWF0aW9uIGFjdGlvbiB3aXRoIGRlZmF1bHQgc3R5bGUgYmFzZWQgb24gYWN0aW9uIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbihvcHRzOiBib29sZWFuIHwgQWN0aW9uQ29uZmlybWF0aW9uPEl0ZW0sIFJ1bklucHV0SXRlbSwgU2VydmljZT4gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbiA9IG9wdHMgPT09IHRydWUgPyB7fSA6IG9wdHMgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogb3B0cztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgZGVmYXVsdCBub3RpZmljYXRpb25zIHNldHVwLiBOb3RpZmljYXRpb25zIGNhbiBlaXRoZXIgYmUgb3ZlcnJpZGRlbiB3aXRoIGN1c3RvbSB0ZXh0IG9yIHR1cm5lZCBvbi9vZmYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0cyBQcm92aWRlIGNvbmZpZyBmb3IgdGV4dHMgb3Igb24vb2ZmIGZsYWcgZm9yIHJ1biBzdWNjZXNzL2Vycm9yIG5vdGlmaWNhdGlvbnMuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhOb3RpZmljYXRpb25zKG9wdHM/OiB7cnVuT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47IHJ1bk9uRXJyb3I/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbn0gfCBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9IHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbicgPyBvcHRzIDogb3B0cz8ucnVuT25TdWNjZXNzO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5ydW5PbkVycm9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyUnVuQWN0aW9uKGFjdGlvbj86IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueSwgYW55PikgPT4gQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+KSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hZnRlclJ1bkFjdGlvbiA9IGFjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPblJ1bkVycm9yQWN0aW9uKGFjdGlvbj86IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUnVuSW5wdXRJdGVtLCBhbnksIGFueT4pID0+IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4pKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuZ2V0KCkuZGVidWcoXG4gICAgICAgICAgICAgICAgYFdBUk5JTkc6IFBlcm1pc3Npb25zIHNldCBvbiBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30gd2l0aCByb3V0ZSB0eXBlICcke3RoaXMuX3RhYmxldmlld0NhdGVnb3J5fScgd2lsbCBiZSBvbWl0dGVkIGluIHJvdXRlIGd1YXJkIHZhbGlkYXRpb24uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxldmlld0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b25PcHRzKGJ1dHRvbj86IElBY3Rpb25CdXR0b25EZXNjcmlwdG9yKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2J1dHRvbiA9IGJ1dHRvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b24obGFiZWw/OiBzdHJpbmcgfCBudWxsLCBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgbGV2ZWw/OiBTdHlsZUxldmVsRW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSB7XG4gICAgICAgICAgICAuLi50aGlzLl9idXR0b24sXG4gICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2J1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXRlbXNTZWxlY3Rpb24oaGFzU2VsZWN0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNJdGVtc1NlbGVjdGlvbiA9IGhhc1NlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPSB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA/PyAoY3R4ID0+IG9mKChjdHgucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPz8gMCkgPiAwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxJQWN0aW9uQ29tcG9uZW50PEl0ZW0+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50RnJvbURpKGluamVjdGlvblRva2VuOiBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudEZyb21EaSA9IGluamVjdGlvblRva2VuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA9IHBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJMThuQmFzZShiYXNlOiBDbGFzc1R5cGU8dW5rbm93bj4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiYXNlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKGJhc2UpO1xuICAgICAgICAgICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgZGVmaW5lIGkxOG5CYXNlS2V5IGZvciAke2Jhc2V9IG9uIGFjdGlvbiAke3RoaXMuYWN0aW9uTmFtZUxvbmd9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYXNlID0gdHlwZU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1YmFjdGlvbnNBc01lbnUoc3ViYWN0aW9uc0FzTWVudSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3ViYWN0aW9uc0FzTWVudSA9IHN1YmFjdGlvbnNBc01lbnU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3ViYWN0aW9ucyguLi5zdWJhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBhbnksIFJ1bklucHV0SXRlbSwgYW55Pj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3ViYWN0aW9ucy5wdXNoKC4uLnN1YmFjdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUZpZWxkc1RvKFxuICAgICAgICBkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0+XG4gICAgKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgICAgIGRlc2NyaXB0b3IuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXkgPSB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5O1xuICAgICAgICBkZXNjcmlwdG9yLl90eXBlID0gdGhpcy5fdHlwZTtcbiAgICAgICAgZGVzY3JpcHRvci5fYWN0aXZhdGlvblRyaWdnZXIgPSB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlcjtcbiAgICAgICAgZGVzY3JpcHRvci5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fbGV2ZWwgPSB0aGlzLl9sZXZlbDtcbiAgICAgICAgZGVzY3JpcHRvci5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzID0gdGhpcy5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzID8gWy4uLnRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllc10gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fdGFibGV2aWV3Q2F0ZWdvcnkgPSB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICAgICAgZGVzY3JpcHRvci5fcm91dGVVcmwgPSB0aGlzLl9yb3V0ZVVybDtcblxuICAgICAgICBkZXNjcmlwdG9yLl9ydW5GdW5jdGlvbiA9IHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc1Zpc2libGVGdW5jdGlvbiA9IHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc0VuYWJsZWRGdW5jdGlvbiA9IHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydW5Db25maXJtYXRpb24pIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX3J1bkNvbmZpcm1hdGlvbiA9IHsuLi50aGlzLl9ydW5Db25maXJtYXRpb259O1xuICAgICAgICAgICAgaWYgKHRoaXMuX3J1bkNvbmZpcm1hdGlvbi5hY2NlcHRCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLl9ydW5Db25maXJtYXRpb24uYWNjZXB0QnV0dG9uID0gey4uLnRoaXMuX3J1bkNvbmZpcm1hdGlvbi5hY2NlcHRCdXR0b259O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3J1bkNvbmZpcm1hdGlvbi5yZWplY3RCdXR0b24pIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLl9ydW5Db25maXJtYXRpb24ucmVqZWN0QnV0dG9uID0gey4uLnRoaXMuX3J1bkNvbmZpcm1hdGlvbi5yZWplY3RCdXR0b259O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9PT0gJ29iamVjdCcgPyB7Li4udGhpcy5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzfSA6IHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcztcbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uT25FcnJvciA9IHR5cGVvZiB0aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yfSA6IHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3I7XG5cbiAgICAgICAgaWYgKHRoaXMuX2FmdGVyUnVuQWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX2FmdGVyUnVuQWN0aW9uID0gdHlwZW9mIHRoaXMuX2FmdGVyUnVuQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fYWZ0ZXJSdW5BY3Rpb24gOiB0aGlzLl9hZnRlclJ1bkFjdGlvbi5jb3B5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci5fb25SdW5FcnJvckFjdGlvbiA9IHR5cGVvZiB0aGlzLl9vblJ1bkVycm9yQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fb25SdW5FcnJvckFjdGlvbiA6IHRoaXMuX29uUnVuRXJyb3JBY3Rpb24uY29weSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcGVybWlzc2lvbnMgPSB0aGlzLl9wZXJtaXNzaW9ucztcblxuICAgICAgICBpZiAodGhpcy5fYnV0dG9uKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9idXR0b24gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbi5zdHlsZSkge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuX2J1dHRvbi5zdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLnN0eWxlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IuX2hhc0l0ZW1zU2VsZWN0aW9uID0gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbXBvbmVudCA9IHRoaXMuX2NvbXBvbmVudDtcbiAgICAgICAgZGVzY3JpcHRvci5fY29tcG9uZW50RnJvbURpID0gdGhpcy5fY29tcG9uZW50RnJvbURpO1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJhY3Rpb25zQXNNZW51ID0gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICAgICAgZGVzY3JpcHRvci5fc3ViYWN0aW9ucyA9IHRoaXMuX3N1YmFjdGlvbnMubWFwKGEgPT4gYS5jb3B5KCkpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4odGhpcy5fYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=","import { ActionDescriptorInst } from './action.descriptor';\nexport const actionGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\n/**\n * Creates and returns an instance of ActionDescriptorInst, allowing customization of the action's behavior through configuration options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionDescriptorCreateFromModelOptsType<Model, Service, RunInput, RunResult, ValidationInput>} [opts] - Optional configuration object to define the action's behavior, including model, service provider and other.\n * @return {ActionDescriptorInst<Model, Service, RunInput, RunResult, ValidationInput>} An instance of ActionDescriptorInst configured with the provided parameters.\n */\nexport function action(actionName, opts) {\n return new ActionDescriptorInst(actionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n ...opts\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBK0Usb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWtCdkksTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBaUIscUJBQTBELEVBQUUsRUFBRTtJQUNsSCxNQUFNLEdBQUcsR0FBMkQsRUFBRSxDQUFDO0lBQ3ZFLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4QixJQUFLLHFCQUF1QyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFELHFGQUFxRjtZQUNyRixHQUFHLENBQUMsWUFBWSxHQUFHLHFCQUFzRCxDQUFDO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxxQkFBa0QsQ0FBQztRQUN6RSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDbEIsVUFBa0IsRUFDbEIsSUFBMkY7SUFFM0YsT0FBTyxJQUFJLG9CQUFvQixDQUF1RCxVQUFVLEVBQUU7UUFDOUYsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9FLEdBQUcsSUFBSTtLQUNWLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lEYXRhUHJvdmlkZXIsIFNlcnZpY2VDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvciwgVHlwZURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZUZyb21Nb2RlbE9wdHNUeXBlPFJ1bklucHV0VHlwZSwgUnVuUmV0dXJuVHlwZSwgVmFsaWRhdGlvbklucHV0PiA9IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSAmIHtcbiAgICBydW5JbnB1dFR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5JbnB1dFR5cGU+O1xuICAgIHJ1blJldHVyblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5SZXR1cm5UeXBlPjtcbiAgICB2YWxpZGF0aW9uVHlwZT86IFR5cGVEZXNjcmlwdG9yPFZhbGlkYXRpb25JbnB1dD47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIFJ1bklucHV0VHlwZSwgUnVuUmV0dXJuVHlwZSwgVmFsaWRhdGlvbklucHV0PiA9IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSAmIHtcbiAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBydW5JbnB1dFR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5JbnB1dFR5cGU+O1xuICAgIHJ1blJldHVyblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxSdW5SZXR1cm5UeXBlPjtcbiAgICB2YWxpZGF0aW9uVHlwZT86IFR5cGVEZXNjcmlwdG9yPFZhbGlkYXRpb25JbnB1dD47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgY29uc3QgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmogPSA8TW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4pID0+IHtcbiAgICBjb25zdCBjZmc6IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHt9O1xuICAgIGlmIChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgaWYgKChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcikuaXNEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIC8vIHR5cGUgY2FzdGluZyBuZWVkZWQsIGNhdXNlIHRoZXJlIHdhcyBubyBvdGhlciB3YXkgZm91bmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgdHlwZXNcbiAgICAgICAgICAgIGNmZy5kYXRhUHJvdmlkZXIgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZmcuc2VydmljZVR5cGUgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2ZnO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIEFjdGlvbkRlc2NyaXB0b3JJbnN0LCBhbGxvd2luZyBjdXN0b21pemF0aW9uIG9mIHRoZSBhY3Rpb24ncyBiZWhhdmlvciB0aHJvdWdoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlRnJvbU1vZGVsT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIFJ1bklucHV0LCBSdW5SZXN1bHQsIFZhbGlkYXRpb25JbnB1dD59IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGRlZmluZSB0aGUgYWN0aW9uJ3MgYmVoYXZpb3IsIGluY2x1ZGluZyBtb2RlbCwgc2VydmljZSBwcm92aWRlciBhbmQgb3RoZXIuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBSdW5JbnB1dCA9IE1vZGVsLCBSdW5SZXN1bHQgPSBNb2RlbCwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvcHRzPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTZXJ2aWNlLCBSdW5JbnB1dCwgUnVuUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQ+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0PiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgUnVuSW5wdXQsIFJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0PihhY3Rpb25OYW1lLCB7XG4gICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25HZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgIC4uLm9wdHNcbiAgICB9KTtcbn1cbiJdfQ==","import { Subject } from 'rxjs';\nimport { DataProviderInst } from '@mediusinc/mng-commons/core';\nexport class EditorDataProviderInst extends DataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n this._editorResetSubject = new Subject();\n }\n get fetch() {\n return this._fetch;\n }\n get create() {\n return this._create;\n }\n get update() {\n return this._update;\n }\n get delete() {\n return this._delete;\n }\n get mapFetchItemToCreateItem() {\n return this._mapFetchItemToCreateItem;\n }\n get mapFetchItemToUpdateItem() {\n return this._mapFetchItemToUpdateItem;\n }\n get editorReset$() {\n return this._editorResetSubject.asObservable();\n }\n /**\n * Sets the fetch function for the EditorDataProvider instance.\n *\n * @param {EditorDataProviderFetchFnType<Model, Service>} fn - The fetch function to be set.\n * @returns {this} - The instance of the EditorDataProvider with the fetch function set.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withFetch(fn) {\n this._fetch = fn;\n return this;\n }\n /**\n * Sets the create function for the EditorDataProvider.\n *\n * @param {EditorDataProviderCreateFnType<CreateModel, Model, Service>} fn - The function used for creating new items.\n * @returns {this} - Returns the instance of the class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withCreate(fn) {\n this._create = fn;\n return this;\n }\n /**\n * Sets the update function for the EditorDataProvider.\n *\n * @param {EditorDataProviderUpdateFnType<Model, Service>} fn - The update function to be set.\n * @returns {this} - Returns the instance of the object calling this method.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withUpdate(fn) {\n this._update = fn;\n return this;\n }\n /**\n * Sets the delete function for the editor data provider.\n *\n * @param {EditorDataProviderDeleteFnType<Model, Service>} fn - The delete function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withDelete(fn) {\n this._delete = fn;\n return this;\n }\n /**\n * Sets the function to map data from fetch function to create model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, CreateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam CreateModel The type of data to map to.\n */\n withMapFetchItemToCreateItem(fn) {\n this._mapFetchItemToCreateItem = fn;\n return this;\n }\n /**\n * Sets the function to map data from fetch function to update model.\n *\n * @param {EditorDataProviderFetchMapToFnType<Model, UpdateModel>} fn - The map function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data from fetch function to map from.\n * @typeparam UpdateModel The type of data to map to.\n */\n withMapFetchItemToUpdateItem(fn) {\n this._mapFetchItemToUpdateItem = fn;\n return this;\n }\n resetEditor(event) {\n this._editorResetSubject.next(event ?? {});\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQTBFLE1BQU0sNkJBQTZCLENBQUM7QUFxRnRJLE1BQU0sT0FBTyxzQkFDVCxTQUFRLGdCQUE4QztJQVl0RCxZQUFtQixXQUF5QjtRQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFWSix3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztJQVdoRixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDeEIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFNBQVMsQ0FBQyxFQUFpRDtRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxVQUFVLENBQUMsRUFBZ0U7UUFDdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsVUFBVSxDQUFDLEVBQWdFO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxVQUFVLENBQW1CLEVBQXlEO1FBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBK0I7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtEYXRhUHJvdmlkZXJJbnN0LCBJRGF0YVByb3ZpZGVyLCBJZFR5cGUsIEl0ZW1Pck9ic2VydmFibGUsIFNlcnZpY2VDbGFzc09wdFR5cGUsIFVuZGVmaW5lZH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtFZGl0b3JSZXNldEV2ZW50fSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuXG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSWQgPSBJZFR5cGUsIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8TW9kZWw+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwgPSBhbnksIE1vZGVsID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBJdGVtID0gVW5kZWZpbmVkPENyZWF0ZU1vZGVsPiwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxVbmRlZmluZWQ8TW9kZWw+Pj4gPSAoXG4gICAgaXRlbTogSXRlbSxcbiAgICBzZXJ2aWNlOiBTZXJ2aWNlXG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxcbiAgICBVcGRhdGVNb2RlbCA9IGFueSxcbiAgICBNb2RlbCA9IGFueSxcbiAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgIElkID0gSWRUeXBlLFxuICAgIEl0ZW0gPSBVbmRlZmluZWQ8VXBkYXRlTW9kZWw+LFxuICAgIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8VW5kZWZpbmVkPE1vZGVsPj5cbj4gPSAoaWQ6IElkLCBpdGVtOiBJdGVtLCBzZXJ2aWNlOiBTZXJ2aWNlKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwgPSBhbnksIFNlcnZpY2UgPSB1bmRlZmluZWQsIEl0ZW0gPSB1bmRlZmluZWQsIElkID0gSWRUeXBlLCBSZXR1cm4gPSBJdGVtT3JPYnNlcnZhYmxlPFVuZGVmaW5lZDxNb2RlbD4+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBpdGVtOiBJdGVtXG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8RnJvbU1vZGVsLCBUb01vZGVsPiA9IChpdGVtOiBGcm9tTW9kZWwpID0+IFRvTW9kZWw7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckZldGNoPE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgZmV0Y2g/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+IHtcbiAgICBjcmVhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcblxuICAgIHdpdGhDcmVhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlclVwZGF0ZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+IHtcbiAgICB1cGRhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8VXBkYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcblxuICAgIHdpdGhVcGRhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8VXBkYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckRlbGV0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIGRlbGV0ZT86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZSwgYW55PjtcblxuICAgIHdpdGhEZWxldGU8SXRlbSA9IHVuZGVmaW5lZD4oZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwsIFNlcnZpY2UsIEl0ZW0+KTogdGhpcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0NyZWF0ZTxNb2RlbCwgQ3JlYXRlTW9kZWw+IHtcbiAgICBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBDcmVhdGVNb2RlbD47XG5cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQ3JlYXRlTW9kZWw+KTogdGhpcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb1VwZGF0ZTxNb2RlbCwgVXBkYXRlTW9kZWw+IHtcbiAgICBtYXBGZXRjaEl0ZW1Ub1VwZGF0ZUl0ZW0/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBVcGRhdGVNb2RlbD47XG5cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+KTogdGhpcztcbn1cblxuZXhwb3J0IHR5cGUgSUVkaXRvckRhdGFQcm92aWRlckZuc1R5cGU8TW9kZWwsIFNlcnZpY2UsIENyZWF0ZU1vZGVsID0gTW9kZWwsIFVwZGF0ZU1vZGVsID0gTW9kZWwsIERlbGV0ZU1vZGVsID0gTW9kZWw+ID0gSUVkaXRvckRhdGFQcm92aWRlckZldGNoPE1vZGVsLCBTZXJ2aWNlPiAmXG4gICAgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlPFVwZGF0ZU1vZGVsLCBNb2RlbCwgU2VydmljZT4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGU8RGVsZXRlTW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0NyZWF0ZTxNb2RlbCwgQ3JlYXRlTW9kZWw+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb1VwZGF0ZTxNb2RlbCwgVXBkYXRlTW9kZWw+O1xuXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JEYXRhUHJvdmlkZXJTdXBwb3J0PE1vZGVsPiB7XG4gICAgZ2V0IGVkaXRvclJlc2V0JCgpOiBPYnNlcnZhYmxlPEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+PjtcblxuICAgIHJlc2V0RWRpdG9yKGV2ZW50PzogRWRpdG9yUmVzZXRFdmVudDxNb2RlbD4pOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsID0gYW55LCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBDcmVhdGVNb2RlbCA9IE1vZGVsLCBVcGRhdGVNb2RlbCA9IE1vZGVsPiA9IElEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBTZXJ2aWNlQ2xhc3Ncbj4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJGbnNUeXBlPE1vZGVsLCBTZXJ2aWNlLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyU3VwcG9ydDxNb2RlbD47XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBDcmVhdGVNb2RlbCA9IE1vZGVsLCBVcGRhdGVNb2RlbCA9IE1vZGVsPlxuICAgIGV4dGVuZHMgRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+XG57XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9lZGl0b3JSZXNldFN1YmplY3QgPSBuZXcgU3ViamVjdDxFZGl0b3JSZXNldEV2ZW50PE1vZGVsPj4oKTtcblxuICAgIHByb3RlY3RlZCBfZmV0Y2g/OiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcHJvdGVjdGVkIF9jcmVhdGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZT86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+O1xuICAgIHByb3RlY3RlZCBfZGVsZXRlPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlLCBhbnk+O1xuICAgIHByb3RlY3RlZCBfbWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQ3JlYXRlTW9kZWw+O1xuICAgIHByb3RlY3RlZCBfbWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIoc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICAgIH1cblxuICAgIGdldCBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW07XG4gICAgfVxuXG4gICAgZ2V0IG1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcEZldGNoSXRlbVRvVXBkYXRlSXRlbTtcbiAgICB9XG5cbiAgICBnZXQgZWRpdG9yUmVzZXQkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yUmVzZXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZldGNoIGZ1bmN0aW9uIGZvciB0aGUgRWRpdG9yRGF0YVByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIGZldGNoIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgaW5zdGFuY2Ugb2YgdGhlIEVkaXRvckRhdGFQcm92aWRlciB3aXRoIHRoZSBmZXRjaCBmdW5jdGlvbiBzZXQuXG4gICAgICpcbiAgICAgKiBAdHlwZXBhcmFtIE1vZGVsIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBEYXRhUHJvdmlkZXIgd2lsbCBoYW5kbGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIFRoZSB0eXBlIG9mIHNlcnZpY2UgdXNlZCBieSB0aGlzIERhdGFQcm92aWRlci5cbiAgICAgKi9cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaCA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjcmVhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+fSBmbiAtIFRoZSBmdW5jdGlvbiB1c2VkIGZvciBjcmVhdGluZyBuZXcgaXRlbXMuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aENyZWF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxDcmVhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB1cGRhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIHVwZGF0ZSBmdW5jdGlvbiB0byBiZSBzZXQuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aFVwZGF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkZWxldGUgZnVuY3Rpb24gZm9yIHRoZSBlZGl0b3IgZGF0YSBwcm92aWRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPn0gZm4gLSBUaGUgZGVsZXRlIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aERlbGV0ZTxJdGVtID0gdW5kZWZpbmVkPihmbj86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZSwgSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZ1bmN0aW9uIHRvIG1hcCBkYXRhIGZyb20gZmV0Y2ggZnVuY3Rpb24gdG8gY3JlYXRlIG1vZGVsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlPE1vZGVsLCBDcmVhdGVNb2RlbD59IGZuIC0gVGhlIG1hcCBmdW5jdGlvbiB0byBiZSBzZXQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBjbGFzcy5cbiAgICAgKlxuICAgICAqIEB0eXBlcGFyYW0gTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSBmcm9tIGZldGNoIGZ1bmN0aW9uIHRvIG1hcCBmcm9tLlxuICAgICAqIEB0eXBlcGFyYW0gQ3JlYXRlTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSB0byBtYXAgdG8uXG4gICAgICovXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIENyZWF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZnVuY3Rpb24gdG8gbWFwIGRhdGEgZnJvbSBmZXRjaCBmdW5jdGlvbiB0byB1cGRhdGUgbW9kZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIFVwZGF0ZU1vZGVsPn0gZm4gLSBUaGUgbWFwIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIGZyb20gZmV0Y2ggZnVuY3Rpb24gdG8gbWFwIGZyb20uXG4gICAgICogQHR5cGVwYXJhbSBVcGRhdGVNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRvIG1hcCB0by5cbiAgICAgKi9cbiAgICB3aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgVXBkYXRlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX21hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICByZXNldEVkaXRvcihldmVudD86IEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VkaXRvclJlc2V0U3ViamVjdC5uZXh0KGV2ZW50ID8/IHt9KTtcbiAgICB9XG59XG4iXX0=","import { CommonsInternalError, StyleLevelEnum, StyleSizeEnum } from '@mediusinc/mng-commons/core';\nimport { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';\nimport { ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';\nimport { ActionDescriptorInst } from './action.descriptor';\nexport class ActionEditorDescriptorInst extends ActionDescriptorInst {\n constructor(editorDescriptor, actionName, cfg) {\n super(actionName, {\n ...cfg,\n model: cfg?.model ?? editorDescriptor.model\n });\n this._dataProvider = undefined;\n this._editorActions = [];\n this._editorTitle = undefined;\n this._editorTitleParams = undefined;\n this._dialogSize = StyleSizeEnum.Normal;\n this._resubmitRefetch = true;\n this._unsavedChangesConfirmation = false;\n if (cfg?.serviceType) {\n this._dataProvider = new EditorDataProviderInst(cfg.serviceType);\n }\n else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(actionEditorSubmit(this), actionEditorCancel(this));\n }\n get editorTitle() {\n return this._editorTitle;\n }\n get editorTitleParams() {\n return this._editorTitleParams;\n }\n get editorDescriptor() {\n return this._editorDescriptor;\n }\n get dialogSize() {\n return this._dialogSize;\n }\n get dialogClassName() {\n return this._dialogClassName;\n }\n get fetchNotificationOnSuccess() {\n return this._fetchNotificationOnSuccess;\n }\n get fetchNotificationOnError() {\n return this._fetchNotificationOnError;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get hasRunFunction() {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n get runFunction() {\n throw new CommonsInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n get hasFetchFunction() {\n return typeof this._fetchFunction === 'function';\n }\n get fetchFunction() {\n return this._fetchFunction;\n }\n get hasSubmitFunction() {\n return typeof this._fetchFunction === 'function';\n }\n get submitFunction() {\n return this._submitFunction;\n }\n get editorActions() {\n return this._editorActions;\n }\n get editorComponent() {\n return this._editorComponent;\n }\n get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n get unsavedChangesConfirmation() {\n return this._unsavedChangesConfirmation;\n }\n withEditorTitle(title, params) {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n withDialogSize(size = StyleSizeEnum.Normal) {\n this._dialogSize = size;\n return this;\n }\n withDialogClassName(className) {\n this._dialogClassName = className;\n return this;\n }\n withRunFunction(fn) {\n return this.withSubmitFunction(fn);\n }\n withFetchFunction(fn) {\n this._fetchFunction = fn;\n return this;\n }\n withSubmitFunction(fn) {\n this._submitFunction = fn;\n return this;\n }\n /**\n * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.\n *\n * @param opts Provide config for texts or on/off flag for submit (is same as run) or fetch success/error notifications.\n */\n withNotifications(opts) {\n super.withNotifications(typeof opts === 'boolean'\n ? opts\n : {\n runOnSuccess: opts?.submitOnSuccess ?? opts?.runOnSuccess,\n runOnError: opts?.submitOnError ?? opts?.runOnError\n });\n this._fetchNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.fetchOnSuccess;\n this._fetchNotificationOnError = typeof opts === 'boolean' ? opts : opts?.fetchOnError;\n return this;\n }\n withEditorAction(action) {\n this._editorActions.push(action);\n return this;\n }\n withEditorActions(actions) {\n this._editorActions = actions;\n return this;\n }\n withEditorComponent(editorComponent) {\n this._editorComponent = editorComponent;\n return this;\n }\n /**\n * Enables or disables resubmit resubmit - this means the form will not exit after successful submission, but will instead remain open.\n *\n * @param {boolean} [enabled=true] - Specifies whether resubmit is enabled or disabled. Defaults to true if not provided.\n * @param {boolean} [refetch=true] - Specifies whether the data should be refetched after resubmit. If not, the data in the form stays as is. Defaults to true if not provided.\n *\n * @returns {this} - Returns the current instance with the resubmit configuration updated.\n */\n withResubmit(enabled, refetch = true) {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n withUnsavedChangesConfirmation(unsavedChangesConfirmation = true) {\n this._unsavedChangesConfirmation = unsavedChangesConfirmation;\n return this;\n }\n copyFieldsTo(descriptor) {\n super.copyFieldsTo(descriptor);\n descriptor._editorActions = this._editorActions.map(a => a.copy());\n descriptor._editorTitle = this._editorTitle;\n descriptor._editorTitleParams = this._editorTitleParams != null ? { ...this._editorTitleParams } : undefined;\n descriptor._fetchNotificationOnSuccess = typeof this._fetchNotificationOnSuccess === 'object' ? { ...this._fetchNotificationOnSuccess } : this._fetchNotificationOnSuccess;\n descriptor._fetchNotificationOnError = typeof this._fetchNotificationOnError === 'object' ? { ...this._fetchNotificationOnError } : this._fetchNotificationOnError;\n descriptor._dialogSize = this._dialogSize;\n descriptor._dialogClassName = this._dialogClassName;\n descriptor._fetchFunction = this._fetchFunction;\n descriptor._submitFunction = this._submitFunction;\n descriptor._editorComponent = this._editorComponent;\n descriptor._resubmitEnabled = this._resubmitEnabled;\n descriptor._resubmitRefetch = this._resubmitRefetch;\n descriptor._unsavedChangesConfirmation = this._unsavedChangesConfirmation;\n return descriptor;\n }\n copy() {\n const editor = this._editorDescriptor.copy();\n const descriptor = new ActionEditorDescriptorInst(editor, this._actionName, {\n dataProvider: this._dataProvider,\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\nexport class ActionEditorSubmitDescriptorInst extends ActionDescriptorInst {\n constructor(editorActionName, editorActionModel, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorActionName}.submit` : `${editorActionName}.cancel`, { model: editorActionModel });\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n }\n get submitType() {\n return this._submitType;\n }\n copy() {\n const descriptor = new ActionEditorSubmitDescriptorInst(this._actionName.split('.').slice(0, -1).join('.'), this._model?.copy(), this._submitType);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n/**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorSubmit(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {\n return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n level: editorAction.button?.style?.level\n }\n });\n}\n/**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\nexport function actionEditorCancel(editorAction, submitType = ActionEditorSubmitTypeEnum.Cancel) {\n return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({\n style: {\n textButton: true,\n level: StyleLevelEnum.Secondary\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUdsSCxPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sa0RBQWtELENBQUM7QUFHN0csT0FBTyxFQUFDLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFBdUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWEvRixNQUFNLE9BQU8sMEJBUVgsU0FBUSxvQkFBc0Y7SUF1QjVGLFlBQW1CLGdCQUF1RCxFQUFFLFVBQWtCLEVBQUUsR0FBOEQ7UUFDMUosS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNkLEdBQUcsR0FBRztZQUNOLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFLLGdCQUFnQixDQUFDLEtBQTBDO1NBQ3BGLENBQUMsQ0FBQztRQXpCcUIsa0JBQWEsR0FBb0MsU0FBUyxDQUFDO1FBRTdFLG1CQUFjLEdBQWtFLEVBQUUsQ0FBQztRQUNuRixpQkFBWSxHQUFtQixTQUFTLENBQUM7UUFDekMsdUJBQWtCLEdBQVMsU0FBUyxDQUFDO1FBS3JDLGdCQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQVNuQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBUTFDLElBQUksR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxzQkFBc0IsQ0FBZ0IsR0FBRyxDQUFDLFdBQVcsQ0FB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QUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNwSSxLQUFLLEVBQUU7WUFDSCxLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSztTQUMzQztLQUNKLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUM5QixZQUFxRixFQUNyRixVQUFVLEdBQUcsMEJBQTBCLENBQUMsTUFBTTtJQUU5QyxPQUFPLElBQUksZ0NBQWdDLENBQXFCLFlBQVksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDcEksS0FBSyxFQUFFO1lBQ0gsVUFBVSxFQUFFLElBQUk7WUFDaEIsS0FBSyxFQUFFLGNBQWMsQ0FBQyxTQUFTO1NBQ2xDO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIFNlcnZpY2VDbGFzc1R5cGUsIFN0eWxlTGV2ZWxFbnVtLCBTdHlsZVNpemVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckluc3QsIElFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JSdW5GblR5cGUsIEFjdGlvbk5vdGlmaWNhdGlvblR5cGUsIEFjdGlvblJ1bkZuVHlwZX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgQWN0aW9uVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4vYWN0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiAmIHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I/OiBib29sZWFuO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8XG4gICAgSXRlbSxcbiAgICBTZXJ2aWNlID0gYW55LFxuICAgIEVkaXRvckl0ZW0gPSBJdGVtLFxuICAgIEZldGNoSW5wdXRJdGVtID0gSXRlbSxcbiAgICBTdWJtaXRSZXR1cm5JdGVtID0gSXRlbSxcbiAgICBWYWxpZGF0aW9uSW5wdXRJdGVtID0gSXRlbSxcbiAgICBQYXJlbnRFZGl0b3JJdGVtID0gdW5kZWZpbmVkXG4+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvckl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+O1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnk+ID0gdW5kZWZpbmVkO1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgRWRpdG9ySXRlbSwgYW55LCBFZGl0b3JJdGVtPltdID0gW107XG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZVBhcmFtcz86IGFueSA9IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIF9kaWFsb2dTaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWw7XG4gICAgcHJvdGVjdGVkIF9kaWFsb2dDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoRnVuY3Rpb24/OiBBY3Rpb25FZGl0b3JSdW5GblR5cGU8SXRlbSwgUGFyZW50RWRpdG9ySXRlbSwgU2VydmljZSwgRmV0Y2hJbnB1dEl0ZW0sIEVkaXRvckl0ZW0+O1xuICAgIHByb3RlY3RlZCBfc3VibWl0RnVuY3Rpb24/OiBBY3Rpb25FZGl0b3JSdW5GblR5cGU8SXRlbSwgUGFyZW50RWRpdG9ySXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT47XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRvckNvbXBvbmVudD86IFR5cGU8YW55PjtcblxuICAgIHByb3RlY3RlZCBfcmVzdWJtaXRFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3Jlc3VibWl0UmVmZXRjaCA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvckl0ZW0sIGFueT4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uY2ZnLFxuICAgICAgICAgICAgbW9kZWw6IGNmZz8ubW9kZWwgPz8gKGVkaXRvckRlc2NyaXB0b3IubW9kZWwgYXMgdW5rbm93biBhcyBNb2RlbERlc2NyaXB0b3I8SXRlbT4pXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjZmc/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxJdGVtLCBTZXJ2aWNlPihjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHlwZSA9IEFjdGlvblR5cGVFbnVtLkVkaXRvcjtcbiAgICAgICAgdGhpcy5fZWRpdG9yRGVzY3JpcHRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb25FZGl0b3JTdWJtaXQodGhpcyksIGFjdGlvbkVkaXRvckNhbmNlbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGVQYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckRlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZ1NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaGFzUnVuRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUnVuIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGVkaXRvciBhY3Rpb24gZm9yICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9LiBVc2Ugc3VibWl0IGZ1bmN0aW9uIGluc3RlYWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHJ1bkZ1bmN0aW9uKCk6IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPiB7XG4gICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUnVuIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGVkaXRvciBhY3Rpb24gZm9yICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9LiBVc2Ugc3VibWl0IGZ1bmN0aW9uIGluc3RlYWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0ZldGNoRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoRnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzU3VibWl0RnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1Ym1pdEZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0RnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yQWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckNvbXBvbmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc3VibWl0RW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VibWl0RW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc3VibWl0UmVmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VibWl0UmVmZXRjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JUaXRsZSh0aXRsZTogc3RyaW5nIHwgbnVsbCwgcGFyYW1zPzogYW55KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvclRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX2VkaXRvclRpdGxlUGFyYW1zID0gcGFyYW1zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpYWxvZ1NpemUoc2l6ZSA9IFN0eWxlU2l6ZUVudW0uTm9ybWFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1NpemUgPSBzaXplO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpYWxvZ0NsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaWFsb2dDbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvbkVkaXRvclJ1bkZuVHlwZTxJdGVtLCBQYXJlbnRFZGl0b3JJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU3VibWl0RnVuY3Rpb24oZm4pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmV0Y2hGdW5jdGlvbihmbjogQWN0aW9uRWRpdG9yUnVuRm5UeXBlPEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0sIFNlcnZpY2UsIEZldGNoSW5wdXRJdGVtLCBFZGl0b3JJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3VibWl0RnVuY3Rpb24oZm46IEFjdGlvbkVkaXRvclJ1bkZuVHlwZTxJdGVtLCBQYXJlbnRFZGl0b3JJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJtaXRGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgc2V0dXAuIE5vdGlmaWNhdGlvbnMgY2FuIGVpdGhlciBiZSBvdmVycmlkZGVuIHdpdGggY3VzdG9tIHRleHQgb3IgdHVybmVkIG9uL29mZi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIFByb3ZpZGUgY29uZmlnIGZvciB0ZXh0cyBvciBvbi9vZmYgZmxhZyBmb3Igc3VibWl0IChpcyBzYW1lIGFzIHJ1bikgb3IgZmV0Y2ggc3VjY2Vzcy9lcnJvciBub3RpZmljYXRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoTm90aWZpY2F0aW9ucyhcbiAgICAgICAgb3B0cz86XG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIHN1Ym1pdE9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgc3VibWl0T25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgcnVuT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICBydW5PbkVycm9yPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICBmZXRjaE9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgZmV0Y2hPbkVycm9yPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgYm9vbGVhblxuICAgICk6IHRoaXMge1xuICAgICAgICBzdXBlci53aXRoTm90aWZpY2F0aW9ucyhcbiAgICAgICAgICAgIHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgICAgICA/IG9wdHNcbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICBydW5PblN1Y2Nlc3M6IG9wdHM/LnN1Ym1pdE9uU3VjY2VzcyA/PyBvcHRzPy5ydW5PblN1Y2Nlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgcnVuT25FcnJvcjogb3B0cz8uc3VibWl0T25FcnJvciA/PyBvcHRzPy5ydW5PbkVycm9yXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5mZXRjaE9uU3VjY2VzcztcbiAgICAgICAgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5mZXRjaE9uRXJyb3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgRWRpdG9ySXRlbSwgYW55LCBFZGl0b3JJdGVtPltdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckNvbXBvbmVudChlZGl0b3JDb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JDb21wb25lbnQgPSBlZGl0b3JDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgcmVzdWJtaXQgcmVzdWJtaXQgLSB0aGlzIG1lYW5zIHRoZSBmb3JtIHdpbGwgbm90IGV4aXQgYWZ0ZXIgc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uLCBidXQgd2lsbCBpbnN0ZWFkIHJlbWFpbiBvcGVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZW5hYmxlZD10cnVlXSAtIFNwZWNpZmllcyB3aGV0aGVyIHJlc3VibWl0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIERlZmF1bHRzIHRvIHRydWUgaWYgbm90IHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JlZmV0Y2g9dHJ1ZV0gLSBTcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBzaG91bGQgYmUgcmVmZXRjaGVkIGFmdGVyIHJlc3VibWl0LiBJZiBub3QsIHRoZSBkYXRhIGluIHRoZSBmb3JtIHN0YXlzIGFzIGlzLiBEZWZhdWx0cyB0byB0cnVlIGlmIG5vdCBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugd2l0aCB0aGUgcmVzdWJtaXQgY29uZmlndXJhdGlvbiB1cGRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUmVzdWJtaXQoZW5hYmxlZD86IGJvb2xlYW4sIHJlZmV0Y2ggPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Jlc3VibWl0RW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIHRoaXMuX3Jlc3VibWl0UmVmZXRjaCA9IHJlZmV0Y2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24odW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uID0gdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGNvcHlGaWVsZHNUbyhcbiAgICAgICAgZGVzY3JpcHRvcjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+XG4gICAgKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0sIFBhcmVudEVkaXRvckl0ZW0+IHtcbiAgICAgICAgc3VwZXIuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JBY3Rpb25zID0gdGhpcy5fZWRpdG9yQWN0aW9ucy5tYXAoYSA9PiBhLmNvcHkoKSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvclRpdGxlID0gdGhpcy5fZWRpdG9yVGl0bGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvclRpdGxlUGFyYW1zID0gdGhpcy5fZWRpdG9yVGl0bGVQYXJhbXMgIT0gbnVsbCA/IHsuLi50aGlzLl9lZGl0b3JUaXRsZVBhcmFtc30gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MgPSB0eXBlb2YgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MgPT09ICdvYmplY3QnID8gey4uLnRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzfSA6IHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3IgPSB0eXBlb2YgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3J9IDogdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2RpYWxvZ1NpemUgPSB0aGlzLl9kaWFsb2dTaXplO1xuICAgICAgICBkZXNjcmlwdG9yLl9kaWFsb2dDbGFzc05hbWUgPSB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZldGNoRnVuY3Rpb24gPSB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJtaXRGdW5jdGlvbiA9IHRoaXMuX3N1Ym1pdEZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JDb21wb25lbnQgPSB0aGlzLl9lZGl0b3JDb21wb25lbnQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Jlc3VibWl0RW5hYmxlZCA9IHRoaXMuX3Jlc3VibWl0RW5hYmxlZDtcbiAgICAgICAgZGVzY3JpcHRvci5fcmVzdWJtaXRSZWZldGNoID0gdGhpcy5fcmVzdWJtaXRSZWZldGNoO1xuICAgICAgICBkZXNjcmlwdG9yLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtLCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuX2VkaXRvckRlc2NyaXB0b3IuY29weSgpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtLCBQYXJlbnRFZGl0b3JJdGVtPihcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgbW9kZWw6IHRoaXMuX21vZGVsPy5jb3B5KCksXG4gICAgICAgICAgICAgICAgcGFyZW50TW9kZWw6IHRoaXMuX3BhcmVudE1vZGVsLFxuICAgICAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBFZGl0b3JNb2RlbCwgRWRpdG9yTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yQWN0aW9uTmFtZTogc3RyaW5nLCBlZGl0b3JBY3Rpb25Nb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IHVuZGVmaW5lZCwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb25OYW1lfS5zdWJtaXRgIDogYCR7ZWRpdG9yQWN0aW9uTmFtZX0uY2FuY2VsYCwge21vZGVsOiBlZGl0b3JBY3Rpb25Nb2RlbH0pO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4odGhpcy5fYWN0aW9uTmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHRoaXMuX21vZGVsPy5jb3B5KCksIHRoaXMuX3N1Ym1pdFR5cGUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG4vKipcbiAqIGNyZWF0ZXMgcHJpbWFyeSBhY3Rpb24gd2l0aCBwcmltYXJ5IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvclN1Ym1pdDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnksIGFueT4sXG4gICAgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdFxuKTogQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgRWRpdG9yTW9kZWw+KGVkaXRvckFjdGlvbi5hY3Rpb25OYW1lLCBlZGl0b3JBY3Rpb24ubW9kZWwsIHN1Ym1pdFR5cGUpLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGxldmVsOiBlZGl0b3JBY3Rpb24uYnV0dG9uPy5zdHlsZT8ubGV2ZWxcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIGNyZWF0ZXMgc2Vjb25kYXJ5IGJ1dHRvbiB3aXRoIHRleHQgYnV0dG9uIHN0eWxlXG4gKiBAcGFyYW0gZWRpdG9yQWN0aW9uXG4gKiBAcGFyYW0gc3VibWl0VHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yQ2FuY2VsPE1vZGVsLCBFZGl0b3JNb2RlbD4oXG4gICAgZWRpdG9yQWN0aW9uOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBFZGl0b3JNb2RlbCwgYW55LCBhbnksIGFueSwgYW55PixcbiAgICBzdWJtaXRUeXBlID0gQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uQ2FuY2VsXG4pOiBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgRWRpdG9yTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4oZWRpdG9yQWN0aW9uLmFjdGlvbk5hbWUsIGVkaXRvckFjdGlvbi5tb2RlbCwgc3VibWl0VHlwZSkud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgdGV4dEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIl19","import { ActionEditorDescriptorInst } from './action-editor.descriptor';\nexport const actionEditorGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\n/**\n * Creates an ActionEditorDescriptorInst instance with the provided editor descriptor and options.\n *\n * @param {string} actionName - The name of the action to associate with the editor.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance to be used.\n * @param {ActionEditorDescriptorOptsType<Model, Service, FetchInput, SubmitReturn, ValidationInput>} [opts] - Optional configuration options for the ActionEditor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, FetchInput, SubmitReturn, ValidationInput>} An instance of ActionEditorDescriptor with the configured parameters.\n */\nexport function actionEditor(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n ...opts,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n model: opts?.model\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUErQywwQkFBMEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBYXBILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQWlCLHFCQUFnRSxFQUFFLEVBQUU7SUFDOUgsTUFBTSxHQUFHLEdBQWlFLEVBQUUsQ0FBQztJQUM3RSxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsSUFBSyxxQkFBNkMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoRSxxRkFBcUY7WUFDckYsR0FBRyxDQUFDLFlBQVksR0FBRyxxQkFBNEQsQ0FBQztRQUNwRixDQUFDO2FBQU0sQ0FBQztZQUNKLEdBQUcsQ0FBQyxXQUFXLEdBQUcscUJBQWtELENBQUM7UUFDekUsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQVN4QixVQUFrQixFQUNsQixNQUEyRCxFQUMzRCxJQUFnRztJQUVoRyxPQUFPLElBQUksMEJBQTBCLENBQTJGLE1BQU0sRUFBRSxVQUFVLEVBQUU7UUFDaEosR0FBRyxJQUFJO1FBQ1AsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JGLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGUsIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZX0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZSwgRmV0Y2hJbnB1dCwgU3VibWl0UmV0dXJuLCBWYWxpZGF0aW9uSW5wdXQ+ID0gQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlICYge1xuICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGZldGNoSW5wdXRUeXBlPzogVHlwZURlc2NyaXB0b3I8RmV0Y2hJbnB1dD47XG4gICAgc3VibWl0UmV0dXJuVHlwZT86IFR5cGVEZXNjcmlwdG9yPFN1Ym1pdFJldHVybj47XG4gICAgdmFsaWRhdGlvblR5cGU/OiBUeXBlRGVzY3JpcHRvcjxWYWxpZGF0aW9uSW5wdXQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqID0gPE1vZGVsLCBTZXJ2aWNlPihzZXJ2aWNlT3JEYXRhUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+KSA9PiB7XG4gICAgY29uc3QgY2ZnOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcuZGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2ZnLnNlcnZpY2VUeXBlID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNmZztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdCBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBlZGl0b3IgZGVzY3JpcHRvciBhbmQgb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhlIGVkaXRvci5cbiAqIEBwYXJhbSB7RWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIGFueT59IGVkaXRvciAtIFRoZSBlZGl0b3IgZGVzY3JpcHRvciBpbnN0YW5jZSB0byBiZSB1c2VkLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2UsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0Pn0gW29wdHNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQWN0aW9uRWRpdG9yLlxuICogQHJldHVybiB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCBGZXRjaElucHV0LCBTdWJtaXRSZXR1cm4sIFZhbGlkYXRpb25JbnB1dD59IEFuIGluc3RhbmNlIG9mIEFjdGlvbkVkaXRvckRlc2NyaXB0b3Igd2l0aCB0aGUgY29uZmlndXJlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yPFxuICAgIEVkaXRvck1vZGVsLFxuICAgIE1vZGVsID0gRWRpdG9yTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBGZXRjaElucHV0ID0gTW9kZWwsXG4gICAgU3VibWl0UmV0dXJuID0gTW9kZWwsXG4gICAgVmFsaWRhdGlvbklucHV0ID0gTW9kZWwsXG4gICAgUGFyZW50RWRpdG9ySXRlbSA9IHVuZGVmaW5lZFxuPihcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgZWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9ySXRlbT4sXG4gICAgb3B0cz86IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZSwgRmV0Y2hJbnB1dCwgU3VibWl0UmV0dXJuLCBWYWxpZGF0aW9uSW5wdXQ+XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0LCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIEZldGNoSW5wdXQsIFN1Ym1pdFJldHVybiwgVmFsaWRhdGlvbklucHV0LCBQYXJlbnRFZGl0b3JJdGVtPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG4iXX0=","import { ActionDescriptorInst } from './action.descriptor';\nexport class ActionLinkDescriptorInst extends ActionDescriptorInst {\n constructor(actionName = 'link', cfg) {\n super(actionName, cfg);\n this._url = '';\n this._pathSegments = [];\n this._replaceUrl = false;\n this._target = '_self';\n this._isStyleLink = false;\n }\n get url() {\n return this._url;\n }\n get pathSegments() {\n return this._pathSegments;\n }\n get queryParams() {\n return this._queryParams;\n }\n get queryParamsHandling() {\n return this._queryParamsHandling;\n }\n get replaceUrl() {\n return this._replaceUrl;\n }\n get target() {\n return this._target;\n }\n get isStyleLink() {\n return this._isStyleLink;\n }\n withHref(url) {\n this._url = url;\n return this;\n }\n withRouterLink(...pathSegments) {\n this._pathSegments = pathSegments;\n return this;\n }\n withQueryParams(queryParams, queryParamsHandling) {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n withReplaceUrl(replaceUrl = false) {\n this._replaceUrl = replaceUrl;\n return this;\n }\n withTarget(target = '_self') {\n this._target = target;\n return this;\n }\n withStyleLink(isStyleLink) {\n this._isStyleLink = isStyleLink;\n return this;\n }\n copy() {\n const descriptor = new ActionLinkDescriptorInst(this._actionName, {\n model: this._model?.copy(),\n parentModel: this._parentModel,\n parentProperty: this._parentProperty\n });\n this.copyFieldsTo(descriptor); // copy base action\n descriptor._url = this._url;\n descriptor._pathSegments = [...this._pathSegments];\n descriptor._queryParams = { ...this._queryParams };\n descriptor._queryParamsHandling = this._queryParamsHandling;\n descriptor._replaceUrl = this._replaceUrl;\n descriptor._target = this._target;\n descriptor._isStyleLink = this._isStyleLink;\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmsuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBc0Msb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RixNQUFNLE9BQU8sd0JBQTJELFNBQVEsb0JBQWdGO0lBUzVKLFlBQVksVUFBVSxHQUFHLE1BQU0sRUFBRSxHQUErQztRQUM1RSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBVG5CLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUc3QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSTdCLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsR0FBRyxZQUFzQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQW1CLEVBQUUsbUJBQXlDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsU0FBNkIsT0FBTztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQW9CO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFZSxJQUFJO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQTRCLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDekYsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDdkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUNsRCxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsVUFBVSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxZQUFZLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQzVELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbEMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlLCBBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkxpbmtEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzPE1vZGVsPiA9IE9taXQ8QWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIHVuZGVmaW5lZD4sICdzZXJ2aWNlVHlwZScgfCAnZGF0YVByb3ZpZGVyJz47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IEl0ZW0+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgIHByaXZhdGUgX3VybCA9ICcnO1xuICAgIHByaXZhdGUgX3BhdGhTZWdtZW50czogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICBwcml2YXRlIF9yZXBsYWNlVXJsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdGFyZ2V0ID0gJ19zZWxmJztcbiAgICBwcml2YXRlIF9pc1N0eWxlTGluayA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoYWN0aW9uTmFtZSA9ICdsaW5rJywgY2ZnPzogQWN0aW9uTGlua0Rlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHM8SXRlbT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwgY2ZnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0aFNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhTZWdtZW50cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zSGFuZGxpbmcoKTogUXVlcnlQYXJhbXNIYW5kbGluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVwbGFjZVVybCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YXJnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU3R5bGVMaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdHlsZUxpbms7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIcmVmKHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZXJMaW5rKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGF0aFNlZ21lbnRzID0gcGF0aFNlZ21lbnRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBxdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcGxhY2VVcmwocmVwbGFjZVVybCA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VVcmwgPSByZXBsYWNlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhcmdldCh0YXJnZXQ6ICdfc2VsZicgfCAnX2JsYW5rJyA9ICdfc2VsZicpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN0eWxlTGluayhpc1N0eWxlTGluazogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1N0eWxlTGluayA9IGlzU3R5bGVMaW5rO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxJdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPih0aGlzLl9hY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7IC8vIGNvcHkgYmFzZSBhY3Rpb25cbiAgICAgICAgZGVzY3JpcHRvci5fdXJsID0gdGhpcy5fdXJsO1xuICAgICAgICBkZXNjcmlwdG9yLl9wYXRoU2VnbWVudHMgPSBbLi4udGhpcy5fcGF0aFNlZ21lbnRzXTtcbiAgICAgICAgZGVzY3JpcHRvci5fcXVlcnlQYXJhbXMgPSB7Li4udGhpcy5fcXVlcnlQYXJhbXN9O1xuICAgICAgICBkZXNjcmlwdG9yLl9xdWVyeVBhcmFtc0hhbmRsaW5nID0gdGhpcy5fcXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICAgICAgZGVzY3JpcHRvci5fcmVwbGFjZVVybCA9IHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhcmdldCA9IHRoaXMuX3RhcmdldDtcbiAgICAgICAgZGVzY3JpcHRvci5faXNTdHlsZUxpbmsgPSB0aGlzLl9pc1N0eWxlTGluaztcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19","import { ActionLinkDescriptorInst } from './action-link.descriptor';\n/**\n * Creates an instance of ActionLinkDescriptorInst with the provided action name and options.\n *\n * @param {string} actionName - The unique name of the action.\n * @param {ActionLinkCreateOptsType<Model, ValidationInput>} [opts] - Optional parameters for configuring the action link, including the model and validation type.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} An instance of ActionLinkDescriptorInst initialized with the action name and options.\n */\nexport function actionLink(actionName, opts) {\n return new ActionLinkDescriptorInst(actionName, {\n ...opts,\n model: opts?.model\n });\n}\n/**\n * Generates an ActionLinkDescriptorInst from the provided ActionDescriptorInst.\n *\n * @param {ActionDescriptorInst<Model, any, any, any, ValidationInput>} action - The action descriptor instance that serves as the basis for the action link.\n * @return {ActionLinkDescriptorInst<Model, ValidationInput>} A newly created ActionLinkDescriptorInst configured with the provided action parameters.\n */\nexport function actionLinkFromAction(action) {\n const descriptor = new ActionLinkDescriptorInst(action.actionName, { model: action.model });\n action.copyFieldsTo(descriptor);\n // disable confirmation and notifications\n descriptor.withRunConfirmation(false);\n descriptor.withNotifications(false);\n descriptor.withAfterRunAction();\n descriptor.withOnRunErrorAction();\n descriptor.withSubactionsAsMenu(false);\n return descriptor;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUF1QyxVQUFrQixFQUFFLElBQXVEO0lBQ3hJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBeUIsVUFBVSxFQUFFO1FBQ3BFLEdBQUcsSUFBSTtRQUNQLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQWlDLE1BQW1FO0lBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQXlCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7SUFFbEgsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyx5Q0FBeUM7SUFDekMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUVsQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxudHlwZSBBY3Rpb25MaW5rQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJiB7XG4gICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgIHZhbGlkYXRpb25UeXBlPzogVHlwZURlc2NyaXB0b3I8VmFsaWRhdGlvbklucHV0Pjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Qgd2l0aCB0aGUgcHJvdmlkZWQgYWN0aW9uIG5hbWUgYW5kIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uTGlua0NyZWF0ZU9wdHNUeXBlPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+fSBbb3B0c10gLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGxpbmssIGluY2x1ZGluZyB0aGUgbW9kZWwgYW5kIHZhbGlkYXRpb24gdHlwZS5cbiAqIEByZXR1cm4ge0FjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0IGluaXRpYWxpemVkIHdpdGggdGhlIGFjdGlvbiBuYW1lIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTGluazxNb2RlbCA9IGFueSwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KGFjdGlvbk5hbWU6IHN0cmluZywgb3B0cz86IEFjdGlvbkxpbmtDcmVhdGVPcHRzVHlwZTxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCBmcm9tIHRoZSBwcm92aWRlZCBBY3Rpb25EZXNjcmlwdG9ySW5zdC5cbiAqXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueSwgYW55LCBWYWxpZGF0aW9uSW5wdXQ+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgaW5zdGFuY2UgdGhhdCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvciB0aGUgYWN0aW9uIGxpbmsuXG4gKiBAcmV0dXJuIHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD59IEEgbmV3bHkgY3JlYXRlZCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBhY3Rpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkxpbmtGcm9tQWN0aW9uPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQgPSBNb2RlbD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueSwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgYWN0aW9uLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgIC8vIGRpc2FibGUgY29uZmlybWF0aW9uIGFuZCBub3RpZmljYXRpb25zXG4gICAgZGVzY3JpcHRvci53aXRoUnVuQ29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICBkZXNjcmlwdG9yLndpdGhOb3RpZmljYXRpb25zKGZhbHNlKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aEFmdGVyUnVuQWN0aW9uKCk7XG4gICAgZGVzY3JpcHRvci53aXRoT25SdW5FcnJvckFjdGlvbigpO1xuXG4gICAgZGVzY3JpcHRvci53aXRoU3ViYWN0aW9uc0FzTWVudShmYWxzZSk7XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cbiJdfQ==","import { ActionPositionEnum } from '../models/action.type';\nimport { actionGetProviderCfgObj } from './action-descriptor.factory';\nimport { ActionDescriptorInst } from './action.descriptor';\n/**\n * Defines an action to be positioned on a specified editor with editor-specific execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {EditorDescriptorInst<EditorModel>} editor - The descriptor of the editor on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The position of action on editor.\n * @return {ActionDescriptorInst<Model, Service, EditorModel, Model, EditorModel>} - An instance representing the configured action descriptor for the specified editor and model.\n */\nexport function actionOnEditor(actionName, editor, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFxQix1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXpEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUMxQixVQUFrQixFQUNsQixNQUE4QyxFQUM5QyxJQUlDO0lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFrRCxVQUFVLEVBQUU7UUFDekYsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNuRixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtBY3Rpb25Qcm92aWRlclR5cGUsIGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuL2FjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbi8qKlxuICogRGVmaW5lcyBhbiBhY3Rpb24gdG8gYmUgcG9zaXRpb25lZCBvbiBhIHNwZWNpZmllZCBlZGl0b3Igd2l0aCBlZGl0b3Itc3BlY2lmaWMgZXhlY3V0aW9uIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBpZGVudGlmeWluZyB0aGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbiAqIEBwYXJhbSB7RWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWw+fSBlZGl0b3IgLSBUaGUgZGVzY3JpcHRvciBvZiB0aGUgZWRpdG9yIG9uIHdoaWNoIHRoZSBhY3Rpb24gd2lsbCBiZSBwbGFjZWQgYW5kIGV4ZWN1dGVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBhY3Rpb24gYmVoYXZpb3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBtb2RlbCBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgdHlwZSBmb3IgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodH0gW29wdHMucG9zaXRpb25dIC0gVGhlIHBvc2l0aW9uIG9mIGFjdGlvbiBvbiBlZGl0b3IuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIE1vZGVsLCBFZGl0b3JNb2RlbD59IC0gQW4gaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBjb25maWd1cmVkIGFjdGlvbiBkZXNjcmlwdG9yIGZvciB0aGUgc3BlY2lmaWVkIGVkaXRvciBhbmQgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25PbkVkaXRvcjxNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBlZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBhbnk+LFxuICAgIG9wdHM/OiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgfVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCBNb2RlbCwgRWRpdG9yTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBFZGl0b3JNb2RlbCwgTW9kZWwsIEVkaXRvck1vZGVsPihhY3Rpb25OYW1lLCB7XG4gICAgICAgIG1vZGVsOiBvcHRzPy5tb2RlbCxcbiAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHM/LnNlcnZpY2VQcm92aWRlcikgOiB7fSlcbiAgICB9KS53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpO1xufVxuIl19","import { ActionPositionEnum } from '../models/action.type';\nimport { actionEditorGetProviderCfgObj } from './action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst } from './action-editor.descriptor';\n/**\n * Creates and returns an instance of `ActionEditorDescriptorInst` when positioned on another (parent) editor.\n *\n * @param {string} actionName - The name of the action associated with the editor.\n * @param {EditorDescriptorInst<EditorModel, ParentEditor>} editor - The editor descriptor defining editor on action.\n * @param {Object} [opts] - Optional parameters for configuring the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The descriptor for the model associated with the action.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for the action editor.\n * @param {ActionPositionEnum.FooterLeft | ActionPositionEnum.FooterRight | ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight} [opts.position] - The desired position of action on the editor.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, ParentEditor, EditorModel, ParentEditor>} A configured instance of `ActionEditorDescriptorInst` representing the action editor.\n */\nexport function actionEditorOnEditor(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.FooterLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWFjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2VkaXRvci1hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQTJCLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0csT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDaEMsVUFBa0IsRUFDbEIsTUFBdUQsRUFDdkQsSUFJQztJQUVELE9BQU8sSUFBSSwwQkFBMEIsQ0FBcUYsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUMxSSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hGLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZSwgYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4vYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0YCB3aGVuIHBvc2l0aW9uZWQgb24gYW5vdGhlciAocGFyZW50KSBlZGl0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWRpdG9yLlxuICogQHBhcmFtIHtFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yPn0gZWRpdG9yIC0gVGhlIGVkaXRvciBkZXNjcmlwdG9yIGRlZmluaW5nIGVkaXRvciBvbiBhY3Rpb24uXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgY29uZmlndXJpbmcgdGhlIGFjdGlvbiBlZGl0b3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBkZXNjcmlwdG9yIGZvciB0aGUgbW9kZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24uXG4gKiBAcGFyYW0ge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT59IFtvcHRzLnNlcnZpY2VQcm92aWRlcl0gLSBUaGUgc2VydmljZSBwcm92aWRlciB0eXBlIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7QWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0fSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgZGVzaXJlZCBwb3NpdGlvbiBvZiBhY3Rpb24gb24gdGhlIGVkaXRvci5cbiAqIEByZXR1cm4ge0FjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yPn0gQSBjb25maWd1cmVkIGluc3RhbmNlIG9mIGBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdGAgcmVwcmVzZW50aW5nIHRoZSBhY3Rpb24gZWRpdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yT25FZGl0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgTW9kZWwgPSBFZGl0b3JNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvcj4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodDtcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgUGFyZW50RWRpdG9yPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvciwgUGFyZW50RWRpdG9yPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgfSkud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0KTtcbn1cbiJdfQ==","import { ActionPositionEnum } from '../models/action.type';\nimport { actionGetProviderCfgObj } from './action-descriptor.factory';\nimport { ActionDescriptorInst } from './action.descriptor';\n/**\n * Defines an action to be positioned on a specified table with table row execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The descriptor of the table on which the action will be placed and executed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table row and model.\n */\nexport function actionOnTableRow(actionName, table, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n/**\n * Defines an action to be positioned on a specified table with table header or footer execution context.\n *\n * @param {string} actionName - The name identifying the action to be performed.\n * @param {Object} [opts] - Options for configuring the action behavior.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action.\n * @param {ActionProviderType<Model, Service>} [opts.serviceProvider] - The service provider type for execution context.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of action on table.\n * @return {ActionDescriptorInst<Model, Service, TableModel, Model, TableModel>} - An instance representing the configured action descriptor for the specified table top and model.\n */\nexport function actionOnTableTop(actionName, opts) {\n return new ActionDescriptorInst(actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts?.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy90YWJsZS1hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBcUIsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixVQUFrQixFQUNsQixLQUFnRCxFQUNoRCxJQUlDO0lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFnRCxVQUFVLEVBQUU7UUFDdkYsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNuRixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDNUIsVUFBa0IsRUFDbEIsSUFJQztJQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBOEMsVUFBVSxFQUFFO1FBQ3JGLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUNsQixHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDbkYsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4vYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byBiZSBwb3NpdGlvbmVkIG9uIGEgc3BlY2lmaWVkIHRhYmxlIHdpdGggdGFibGUgcm93IGV4ZWN1dGlvbiBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gVGhlIG5hbWUgaWRlbnRpZnlpbmcgdGhlIGFjdGlvbiB0byBiZSBwZXJmb3JtZWQuXG4gKiBAcGFyYW0ge1RhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+fSB0YWJsZSAtIFRoZSBkZXNjcmlwdG9yIG9mIHRoZSB0YWJsZSBvbiB3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgcGxhY2VkIGFuZCBleGVjdXRlZC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGJlaGF2aW9yLlxuICogQHBhcmFtIHtNb2RlbERlc2NyaXB0b3I8TW9kZWw+fSBbb3B0cy5tb2RlbF0gLSBUaGUgbW9kZWwgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPn0gW29wdHMuc2VydmljZVByb3ZpZGVyXSAtIFRoZSBzZXJ2aWNlIHByb3ZpZGVyIHR5cGUgZm9yIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gb2YgYWN0aW9uIG9uIHRhYmxlLlxuICogQHJldHVybiB7QWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPn0gLSBBbiBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGRlc2NyaXB0b3IgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUgcm93IGFuZCBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbk9uVGFibGVSb3c8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICB0YWJsZTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgICAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG4gICAgfVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIFRhYmxlTW9kZWwsIE1vZGVsLCBUYWJsZU1vZGVsPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmoob3B0cz8uc2VydmljZVByb3ZpZGVyKSA6IHt9KVxuICAgIH0pLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byBiZSBwb3NpdGlvbmVkIG9uIGEgc3BlY2lmaWVkIHRhYmxlIHdpdGggdGFibGUgaGVhZGVyIG9yIGZvb3RlciBleGVjdXRpb24gY29udGV4dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIGlkZW50aWZ5aW5nIHRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBhY3Rpb24gYmVoYXZpb3IuXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLm1vZGVsXSAtIFRoZSBtb2RlbCBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgdHlwZSBmb3IgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVGFibGVIZWFkZXJ9IFtvcHRzLnBvc2l0aW9uXSAtIFRoZSBwb3NpdGlvbiBvZiBhY3Rpb24gb24gdGFibGUuXG4gKiBAcmV0dXJuIHtBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+fSAtIEFuIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZGVzY3JpcHRvciBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZSB0b3AgYW5kIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uT25UYWJsZVRvcDxNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdHM/OiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyO1xuICAgIH1cbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCB1bmRlZmluZWQsIE1vZGVsLCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCB1bmRlZmluZWQsIE1vZGVsLCB1bmRlZmluZWQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmoob3B0cz8uc2VydmljZVByb3ZpZGVyKSA6IHt9KVxuICAgIH0pLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpO1xufVxuIl19","import { ActionPositionEnum } from '../models/action.type';\nimport { actionEditorGetProviderCfgObj } from './action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst } from './action-editor.descriptor';\n/**\n * Creates and returns an ActionEditorDescriptorInst for displaying editor action on table row.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {TableDescriptorInst<TableModel, any, any>} table - The table descriptor instance representing the table on which the action is positioned.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.RowInline | ActionPositionEnum.RowClick} [opts.position] - The position where the action should be displayed on the table row.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, TableModel, EditorModel, TableModel>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableRow(actionName, editor, table, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.RowInline);\n}\n/**\n * Creates and returns an action editor descriptor configured with the given parameters.\n * This is used to define an action editor positioned relative to a table.\n *\n * @param {string} actionName - The name of the action.\n * @param {EditorDescriptorInst<EditorModel, any>} editor - The editor descriptor instance responsible for configuring the editor behavior.\n * @param {Object} [opts] - Optional configurations for the action editor.\n * @param {ModelDescriptor<Model>} [opts.model] - The model descriptor associated with the action editor.\n * @param {ActionEditorProviderType<Model, Service>} [opts.serviceProvider] - The service provider for additional configurations or services for the action editor.\n * @param {ActionPositionEnum.ToolbarLeft | ActionPositionEnum.ToolbarRight | ActionPositionEnum.TableHeader} [opts.position] - The position of the action on the table.\n * @return {ActionEditorDescriptorInst<Model, Service, EditorModel, undefined, EditorModel, undefined>} The configured action editor descriptor instance.\n */\nexport function actionEditorOnTableTop(actionName, editor, opts) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n model: opts?.model,\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {})\n }).withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvdGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzNHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXRFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxVQUFrQixFQUNsQixNQUEyRCxFQUMzRCxLQUFnRCxFQUNoRCxJQUlDO0lBRUQsT0FBTyxJQUFJLDBCQUEwQixDQUFxRixNQUFNLEVBQUUsVUFBVSxFQUFFO1FBQzFJLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUNsQixHQUFHLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDeEYsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsVUFBa0IsRUFDbEIsTUFBMkQsRUFDM0QsSUFJQztJQUVELE9BQU8sSUFBSSwwQkFBMEIsQ0FBbUYsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUN4SSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hGLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtUYWJsZURlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi9hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdCBmb3IgZGlzcGxheWluZyBlZGl0b3IgYWN0aW9uIG9uIHRhYmxlIHJvdy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24uXG4gKiBAcGFyYW0ge0VkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBhbnk+fSBlZGl0b3IgLSBUaGUgZWRpdG9yIGRlc2NyaXB0b3IgaW5zdGFuY2UgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBlZGl0b3IgYmVoYXZpb3IuXG4gKiBAcGFyYW0ge1RhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+fSB0YWJsZSAtIFRoZSB0YWJsZSBkZXNjcmlwdG9yIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgdGFibGUgb24gd2hpY2ggdGhlIGFjdGlvbiBpcyBwb3NpdGlvbmVkLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gW29wdHMubW9kZWxdIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3Igc2VydmljZXMgZm9yIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIGFjdGlvbiBzaG91bGQgYmUgZGlzcGxheWVkIG9uIHRoZSB0YWJsZSByb3cuXG4gKiBAcmV0dXJuIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsPn0gVGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGVkaXRvciBkZXNjcmlwdG9yIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRWRpdG9yT25UYWJsZVJvdzxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9ySXRlbSwgVGFibGVNb2RlbCwgTW9kZWwgPSBFZGl0b3JNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvckl0ZW0+LFxuICAgIHRhYmxlOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIGFueSwgYW55PixcbiAgICBvcHRzPzoge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPihlZGl0b3IsIGFjdGlvbk5hbWUsIHtcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsLFxuICAgICAgICAuLi4ob3B0cz8uc2VydmljZVByb3ZpZGVyID8gYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgfSkud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYW4gYWN0aW9uIGVkaXRvciBkZXNjcmlwdG9yIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cbiAqIFRoaXMgaXMgdXNlZCB0byBkZWZpbmUgYW4gYWN0aW9uIGVkaXRvciBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIGEgdGFibGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICogQHBhcmFtIHtFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgYW55Pn0gZWRpdG9yIC0gVGhlIGVkaXRvciBkZXNjcmlwdG9yIGluc3RhbmNlIHJlc3BvbnNpYmxlIGZvciBjb25maWd1cmluZyB0aGUgZWRpdG9yIGJlaGF2aW9yLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgYWN0aW9uIGVkaXRvci5cbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gW29wdHMubW9kZWxdIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlUHJvdmlkZXJdIC0gVGhlIHNlcnZpY2UgcHJvdmlkZXIgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgb3Igc2VydmljZXMgZm9yIHRoZSBhY3Rpb24gZWRpdG9yLlxuICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyfSBbb3B0cy5wb3NpdGlvbl0gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGFjdGlvbiBvbiB0aGUgdGFibGUuXG4gKiBAcmV0dXJuIHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZD59IFRoZSBjb25maWd1cmVkIGFjdGlvbiBlZGl0b3IgZGVzY3JpcHRvciBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvck9uVGFibGVUb3A8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvckl0ZW0sIE1vZGVsID0gRWRpdG9yTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGFjdGlvbk5hbWU6IHN0cmluZyxcbiAgICBlZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JJdGVtPixcbiAgICBvcHRzPzoge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0IHwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCB8IEFjdGlvblBvc2l0aW9uRW51bS5UYWJsZUhlYWRlcjtcbiAgICB9XG4pOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgUGFyZW50RWRpdG9ySXRlbT4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRvck1vZGVsLCB1bmRlZmluZWQsIEVkaXRvck1vZGVsLCB1bmRlZmluZWQsIFBhcmVudEVkaXRvckl0ZW0+KGVkaXRvciwgYWN0aW9uTmFtZSwge1xuICAgICAgICBtb2RlbDogb3B0cz8ubW9kZWwsXG4gICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSlcbiAgICB9KS53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KTtcbn1cbiJdfQ==","import { ACommonsErrorBase } from '@mediusinc/mng-commons/core';\nexport class CommonsActionError extends ACommonsErrorBase {\n constructor(message, actionName, options) {\n super(message, {\n name: 'CommonsActionError_' + actionName,\n ...options\n });\n this.type = 'CommonsActionError';\n this.actionId = actionName;\n this.actionContext = options?.actionContext;\n this.httpError = options?.httpError;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVycm9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGlCQUFpQixFQUErQyxNQUFNLDZCQUE2QixDQUFDO0FBUzVHLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFPckQsWUFBWSxPQUFlLEVBQUUsVUFBa0IsRUFBRSxPQUFtQztRQUNoRixLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ1gsSUFBSSxFQUFFLHFCQUFxQixHQUFHLFVBQVU7WUFDeEMsR0FBRyxPQUFPO1NBQ2IsQ0FBQyxDQUFDO1FBVlMsU0FBSSxHQUFHLG9CQUFvQixDQUFDO1FBWXhDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxFQUFFLGFBQWEsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7SUFDeEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwRXJyb3JSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge0FDb21tb25zRXJyb3JCYXNlLCBDb21tb25zRXJyb3JCYXNlT3B0aW9ucywgSUNvbW1vbnNBY3Rpb25FcnJvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNBY3Rpb25FcnJvck9wdGlvbnMgZXh0ZW5kcyBDb21tb25zRXJyb3JCYXNlT3B0aW9ucyB7XG4gICAgYWN0aW9uQ29udGV4dD86IElBY3Rpb25Db250ZXh0PGFueSwgYW55LCBhbnk+O1xuICAgIGh0dHBFcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlO1xufVxuXG5leHBvcnQgY2xhc3MgQ29tbW9uc0FjdGlvbkVycm9yIGV4dGVuZHMgQUNvbW1vbnNFcnJvckJhc2UgaW1wbGVtZW50cyBJQ29tbW9uc0FjdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdDb21tb25zQWN0aW9uRXJyb3InO1xuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpb25JZDogc3RyaW5nO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGlvbkNvbnRleHQ/OiBJQWN0aW9uQ29udGV4dDxhbnksIGFueT47XG4gICAgcHVibGljIHJlYWRvbmx5IGh0dHBFcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBhY3Rpb25OYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBDb21tb25zQWN0aW9uRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tb25zQWN0aW9uRXJyb3JfJyArIGFjdGlvbk5hbWUsXG4gICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWN0aW9uSWQgPSBhY3Rpb25OYW1lO1xuICAgICAgICB0aGlzLmFjdGlvbkNvbnRleHQgPSBvcHRpb25zPy5hY3Rpb25Db250ZXh0O1xuICAgICAgICB0aGlzLmh0dHBFcnJvciA9IG9wdGlvbnM/Lmh0dHBFcnJvcjtcbiAgICB9XG59XG4iXX0=","import { isObservable, map, throwError } from 'rxjs';\nimport { CommonsInternalError, toObservable } from '@mediusinc/mng-commons/core';\nimport { CommonsActionError } from '../models/action-error.model';\nexport function runFnFromDataProviderOrFallback(ctx, fn, fallback) {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n}\nexport function runFnFromDataProviderOrFail(ctx, fn) {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return throwError(() => new CommonsActionError(`Data provider could not extract function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.i18nBaseKey}) for item id ${ctx.parameters?.itemId}.`, ctx.contextLongName, { actionContext: ctx }));\n}\nexport function runGetAllFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll'] === 'function') {\n const tableDataProvider = ctx.dataProvider;\n const queryParam = ctx.parameters?.dataListParams ?? {};\n return toObservable(tableDataProvider.getAll(queryParam, ctx.serviceInstance));\n }\n return null;\n}\nexport function runFetchFromDataProvider(ctx, opts) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId\n ? toObservable(editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale)).pipe(map(res => {\n if (opts?.reason === 'update') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToUpdateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToUpdate function must be provided in data provider`);\n }\n else if (typeof editorDataProvider.mapFetchItemToUpdateItem === 'function') {\n return editorDataProvider.mapFetchItemToUpdateItem(res);\n }\n }\n else if (opts?.reason === 'create') {\n if (opts?.strict && typeof editorDataProvider.mapFetchItemToCreateItem !== 'function') {\n throw new CommonsInternalError(`mapFetchToCreate function must be provided in data provider`);\n }\n else if (typeof editorDataProvider.mapFetchItemToCreateItem === 'function') {\n return editorDataProvider.mapFetchItemToCreateItem(res);\n }\n }\n return res;\n }))\n : null;\n }\n }\n return null;\n}\nexport function runCreateFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? toObservable(editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\nexport function runUpdateFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\nexport function runDeleteFromDataProvider(ctx) {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.delete(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.item)) : null; // this is not exactly correct cast as the delete function should never receive Item, but in many cases it ain't so\n }\n }\n return null;\n}\n/**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\nexport function getDataProviderService(injector, dataProvider) {\n if (dataProvider?.serviceType) {\n const service = injector.get(dataProvider.serviceType, undefined, { optional: true });\n if (!service) {\n throw new CommonsInternalError(`Data provider service type ${dataProvider.serviceType} could not be injected.`);\n }\n return service;\n }\n else {\n return null;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci1leGVjdXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vaGVscGVycy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsWUFBWSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFDLG9CQUFvQixFQUEyQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUdoRSxNQUFNLFVBQVUsK0JBQStCLENBQzNDLEdBQWlELEVBQ2pELEVBQW9GLEVBQ3BGLFFBQW9DO0lBRXBDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN2QyxHQUFpRCxFQUNqRCxFQUFvRjtJQUVwRixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQ2IsR0FBRyxFQUFFLENBQ0QsSUFBSSxrQkFBa0IsQ0FDbEIsaUVBQWlFLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxpQkFBaUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxN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QUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsbUhBQW1IO1FBQ3hRLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFnQixRQUFrQixFQUFFLFlBQTJDO0lBQ2pILElBQUksWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQVUsWUFBWSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksb0JBQW9CLENBQUMsOEJBQThCLFlBQVksQ0FBQyxXQUFXLHlCQUF5QixDQUFDLENBQUM7UUFDcEgsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBpc09ic2VydmFibGUsIG1hcCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIERhdGFMaXN0UmVzdWx0LCBJRGF0YVByb3ZpZGVyLCBOdWxsYWJsZSwgdG9PYnNlcnZhYmxlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHtDb21tb25zQWN0aW9uRXJyb3J9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhbGxiYWNrPEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2UsIFJldHVybiwgRmFsbGJhY2tSZXR1cm4gPSBSZXR1cm4+KFxuICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVySXRlbSwgU2VydmljZT4sXG4gICAgZm46IChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KSA9PiBPYnNlcnZhYmxlPFJldHVybj4gfCBudWxsLFxuICAgIGZhbGxiYWNrOiBPYnNlcnZhYmxlPEZhbGxiYWNrUmV0dXJuPlxuKTogT2JzZXJ2YWJsZTxSZXR1cm4gfCBGYWxsYmFja1JldHVybj4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBmbihjdHgpO1xuICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgfVxuICAgIHJldHVybiBmYWxsYmFjaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkZuRnJvbURhdGFQcm92aWRlck9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBTZXJ2aWNlLCBSZXR1cm4+KFxuICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVySXRlbSwgU2VydmljZT4sXG4gICAgZm46IChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KSA9PiBPYnNlcnZhYmxlPFJldHVybj4gfCBudWxsXG4pOiBPYnNlcnZhYmxlPFJldHVybj4ge1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBmbihjdHgpO1xuICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgbmV3IENvbW1vbnNBY3Rpb25FcnJvcihcbiAgICAgICAgICAgICAgICBgRGF0YSBwcm92aWRlciBjb3VsZCBub3QgZXh0cmFjdCBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5fSkgZm9yIGl0ZW0gaWQgJHtjdHgucGFyYW1ldGVycz8uaXRlbUlkfS5gLFxuICAgICAgICAgICAgICAgIGN0eC5jb250ZXh0TG9uZ05hbWUsXG4gICAgICAgICAgICAgICAge2FjdGlvbkNvbnRleHQ6IGN0eH1cbiAgICAgICAgICAgIClcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuR2V0QWxsRnJvbURhdGFQcm92aWRlcjxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGN0eC5kYXRhUHJvdmlkZXJbJ2dldEFsbCcgYXMga2V5b2Ygb2JqZWN0XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCB0YWJsZURhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSVRhYmxlRGF0YVByb3ZpZGVyPEl0ZW0sIGFueT47XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW0gPSBjdHgucGFyYW1ldGVycz8uZGF0YUxpc3RQYXJhbXMgPz8ge307XG4gICAgICAgIHJldHVybiB0b09ic2VydmFibGUodGFibGVEYXRhUHJvdmlkZXIuZ2V0QWxsKHF1ZXJ5UGFyYW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFJ1bkZldGNoRnJvbURhdGFQcm92aWRlck9wdHNUeXBlID0ge1xuICAgIHN0cmljdD86IGJvb2xlYW47XG4gICAgcmVhc29uPzogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyUmVhc29uVHlwZTtcbn07XG5leHBvcnQgdHlwZSBSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlID0gJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdmZXRjaCc7XG5leHBvcnQgZnVuY3Rpb24gcnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihcbiAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICBvcHRzPzogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyT3B0c1R5cGVcbik6IE9ic2VydmFibGU8SXRlbT4gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnk+O1xuICAgICAgICBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5mZXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWRcbiAgICAgICAgICAgICAgICA/IHRvT2JzZXJ2YWJsZShlZGl0b3JEYXRhUHJvdmlkZXIuZmV0Y2goY3R4LnBhcmFtZXRlcnMuaXRlbUlkLCBjdHguc2VydmljZUluc3RhbmNlLCBjdHgucGFyYW1ldGVycy5sb2NhbGUpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cz8ucmVhc29uID09PSAndXBkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHM/LnN0cmljdCAmJiB0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgbWFwRmV0Y2hUb1VwZGF0ZSBmdW5jdGlvbiBtdXN0IGJlIHByb3ZpZGVkIGluIGRhdGEgcHJvdmlkZXJgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub1VwZGF0ZUl0ZW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbShyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdHM/LnJlYXNvbiA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRzPy5zdHJpY3QgJiYgdHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYG1hcEZldGNoVG9DcmVhdGUgZnVuY3Rpb24gbXVzdCBiZSBwcm92aWRlZCBpbiBkYXRhIHByb3ZpZGVyYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIubWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0ocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQ3JlYXRlRnJvbURhdGFQcm92aWRlcjxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlckl0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxJdGVtLCBhbnksIGFueSwgUGFyYW1ldGVySXRlbT47XG4gICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtID8gdG9PYnNlcnZhYmxlKGVkaXRvckRhdGFQcm92aWRlci5jcmVhdGUoY3R4LnBhcmFtZXRlcnMuaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSkpIDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blVwZGF0ZUZyb21EYXRhUHJvdmlkZXI8SXRlbSwgUGFyYW1ldGVySXRlbSwgc2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJJdGVtLCBzZXJ2aWNlPik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55LCBhbnksIGFueSwgUGFyYW1ldGVySXRlbT47XG4gICAgICAgIGlmICh0eXBlb2YgZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyB0b09ic2VydmFibGUoZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZShjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5wYXJhbWV0ZXJzLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5EZWxldGVGcm9tRGF0YVByb3ZpZGVyPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBlZGl0b3JEYXRhUHJvdmlkZXIgPSBjdHguZGF0YVByb3ZpZGVyIGFzIElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55PjtcbiAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW1JZCA/IHRvT2JzZXJ2YWJsZShlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnNlcnZpY2VJbnN0YW5jZSwgY3R4LnBhcmFtZXRlcnMuaXRlbSkpIDogbnVsbDsgLy8gdGhpcyBpcyBub3QgZXhhY3RseSBjb3JyZWN0IGNhc3QgYXMgdGhlIGRlbGV0ZSBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgcmVjZWl2ZSBJdGVtLCBidXQgaW4gbWFueSBjYXNlcyBpdCBhaW4ndCBzb1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldHMgc2VydmljZSBpbnN0YW5jZSBvZiBkYXRhIHByb3ZpZGVyLlxuICpcbiAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBpbnN0YW5jZVxuICogQHBhcmFtIGRhdGFQcm92aWRlciBEYXRhIHByb3ZpZGVyIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVByb3ZpZGVyU2VydmljZTxJdGVtLCBTZXJ2aWNlPihpbmplY3RvcjogSW5qZWN0b3IsIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT4pOiBTZXJ2aWNlIHwgbnVsbCB7XG4gICAgaWYgKGRhdGFQcm92aWRlcj8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdG9yLmdldDxTZXJ2aWNlPihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUsIHVuZGVmaW5lZCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgICAgIGlmICghc2VydmljZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBEYXRhIHByb3ZpZGVyIHNlcnZpY2UgdHlwZSAke2RhdGFQcm92aWRlci5zZXJ2aWNlVHlwZX0gY291bGQgbm90IGJlIGluamVjdGVkLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==","/**\n * States of action. Enums ending with \"*Final\" are supposed to be final.\n */\nexport var ActionInstanceStateEnum;\n(function (ActionInstanceStateEnum) {\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"TriggerStart\"] = 0] = \"TriggerStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"TriggerEnd\"] = 1] = \"TriggerEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ActivationStart\"] = 2] = \"ActivationStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ActivationEnd\"] = 3] = \"ActivationEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchStart\"] = 4] = \"FetchStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchEnd\"] = 5] = \"FetchEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FetchError\"] = 6] = \"FetchError\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationStart\"] = 7] = \"RunConfirmationStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationEndAccept\"] = 8] = \"RunConfirmationEndAccept\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunConfirmationEndReject\"] = 9] = \"RunConfirmationEndReject\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunStart\"] = 10] = \"RunStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunEnd\"] = 11] = \"RunEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"RunError\"] = 12] = \"RunError\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"NextActionStart\"] = 13] = \"NextActionStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"NextActionEnd\"] = 14] = \"NextActionEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ErrorActionStart\"] = 15] = \"ErrorActionStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"ErrorActionEnd\"] = 16] = \"ErrorActionEnd\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishSuccessFinal\"] = 17] = \"FinishSuccessFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishErrorFinal\"] = 18] = \"FinishErrorFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishDismissedFinal\"] = 19] = \"FinishDismissedFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishSuccessReactivateFinal\"] = 20] = \"FinishSuccessReactivateFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishComponentDestroyFinal\"] = 21] = \"FinishComponentDestroyFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerStart\"] = 22] = \"FinishRouteUntriggerStart\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerEndFinal\"] = 23] = \"FinishRouteUntriggerEndFinal\";\n ActionInstanceStateEnum[ActionInstanceStateEnum[\"FinishRouteUntriggerTimeoutFinal\"] = 24] = \"FinishRouteUntriggerTimeoutFinal\";\n})(ActionInstanceStateEnum || (ActionInstanceStateEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWluc3RhbmNlLXN0YXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLXN0YXRlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksdUJBMEJYO0FBMUJELFdBQVksdUJBQXVCO0lBQy9CLHFGQUFZLENBQUE7SUFDWixpRkFBVSxDQUFBO0lBQ1YsMkZBQWUsQ0FBQTtJQUNmLHVGQUFhLENBQUE7SUFDYixpRkFBVSxDQUFBO0lBQ1YsNkVBQVEsQ0FBQTtJQUNSLGlGQUFVLENBQUE7SUFDVixxR0FBb0IsQ0FBQTtJQUNwQiw2R0FBd0IsQ0FBQTtJQUN4Qiw2R0FBd0IsQ0FBQTtJQUN4Qiw4RUFBUSxDQUFBO0lBQ1IsMEVBQU0sQ0FBQTtJQUNOLDhFQUFRLENBQUE7SUFDUiw0RkFBZSxDQUFBO0lBQ2Ysd0ZBQWEsQ0FBQTtJQUNiLDhGQUFnQixDQUFBO0lBQ2hCLDBGQUFjLENBQUE7SUFDZCxrR0FBa0IsQ0FBQTtJQUNsQiw4RkFBZ0IsQ0FBQTtJQUNoQixzR0FBb0IsQ0FBQTtJQUNwQixzSEFBNEIsQ0FBQTtJQUM1QixvSEFBMkIsQ0FBQTtJQUMzQixnSEFBeUIsQ0FBQTtJQUN6QixzSEFBNEIsQ0FBQTtJQUM1Qiw4SEFBZ0MsQ0FBQTtBQUNwQyxDQUFDLEVBMUJXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUEwQmxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0ZXMgb2YgYWN0aW9uLiBFbnVtcyBlbmRpbmcgd2l0aCBcIipGaW5hbFwiIGFyZSBzdXBwb3NlZCB0byBiZSBmaW5hbC5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uSW5zdGFuY2VTdGF0ZUVudW0ge1xuICAgIFRyaWdnZXJTdGFydCwgLy8gYWN0aW9uIHdhcyB0cmlnZ2VyZWQgKGNsaWNrIG9yIGRpcmVjdClcbiAgICBUcmlnZ2VyRW5kLFxuICAgIEFjdGl2YXRpb25TdGFydCwgLy8gYWN0aW9uIGFjdGl2YXRpb24gc3RhcnRlZCAoZGlyZWN0LCBldmVudCBvciBlZGl0b3IpXG4gICAgQWN0aXZhdGlvbkVuZCwgLy8gYWN0aW9uIGFjdGl2YXRpb24gZW5kZWRcbiAgICBGZXRjaFN0YXJ0LCAvLyBmZXRjaCBzdGFydGVkXG4gICAgRmV0Y2hFbmQsIC8vIGZldGNoIGVuZGVkXG4gICAgRmV0Y2hFcnJvciwgLy8gZmV0Y2ggZXJyb3JcbiAgICBSdW5Db25maXJtYXRpb25TdGFydCwgLy8gY29uZmlybWF0aW9uIGZvciBydW4gaXMgc3RhcnRlZFxuICAgIFJ1bkNvbmZpcm1hdGlvbkVuZEFjY2VwdCwgLy8gY29uZmlybWF0aW9uIGFjY2VwdGVkXG4gICAgUnVuQ29uZmlybWF0aW9uRW5kUmVqZWN0LCAvLyBjb25maXJtYXRpb24gcmVqZWN0ZWRcbiAgICBSdW5TdGFydCwgLy8gYWN0aW9uIHdhcyBydW4gYnkgY2FsbGluZyBtYWluIGZ1bmN0aW9uXG4gICAgUnVuRW5kLCAvLyBhY3Rpb24gcnVuIGZ1bmN0aW9uIGV4ZWN1dGVkXG4gICAgUnVuRXJyb3IsIC8vIGFjdGlvbiBydW4gZnVuY3Rpb24gZXhlY3V0ZWQgd2l0aCBlcnJvclxuICAgIE5leHRBY3Rpb25TdGFydCwgLy8gbmV4dCBhY3Rpb24gc3RhcnRlZFxuICAgIE5leHRBY3Rpb25FbmQsIC8vIG5leHQgYWN0aW9uIGZpbmlzaGVkXG4gICAgRXJyb3JBY3Rpb25TdGFydCwgLy8gZXJyb3IgYWN0aW9uIHN0YXJ0ZWRcbiAgICBFcnJvckFjdGlvbkVuZCwgLy8gZXJyb3IgYWN0aW9uIGZpbmlzaGVkXG4gICAgRmluaXNoU3VjY2Vzc0ZpbmFsLCAvLyBhY3Rpb24gZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgRmluaXNoRXJyb3JGaW5hbCwgLy8gYWN0aW9uIGV4ZWN1dGVkIHdpdGggZXJyb3JcbiAgICBGaW5pc2hEaXNtaXNzZWRGaW5hbCwgLy8gYWN0aW9uIHdhcyBkaXNtaXNzZWQgYnkgdXNlclxuICAgIEZpbmlzaFN1Y2Nlc3NSZWFjdGl2YXRlRmluYWwsIC8vIGFjdGlvbiBleGVjdXRlZCBzdWNjZXNzZnVsbHksIGFub3RoZXIgaW5zdGFuY2Ugd2lsbCBkaXJlY3RseSBzdGFydCBmcm9tIHByZXZpb3VzXG4gICAgRmluaXNoQ29tcG9uZW50RGVzdHJveUZpbmFsLCAvLyBhY3Rpb24gd2FzIGRpc21pc3NlZCBieSBkZXN0cm95aW5nIGNvbXBvbmVudCB0aGF0IHdhcyBleGVjdXRpbmcgaXRcbiAgICBGaW5pc2hSb3V0ZVVudHJpZ2dlclN0YXJ0LFxuICAgIEZpbmlzaFJvdXRlVW50cmlnZ2VyRW5kRmluYWwsXG4gICAgRmluaXNoUm91dGVVbnRyaWdnZXJUaW1lb3V0RmluYWxcbn1cbiJdfQ==","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n static { this.READ = '_defaultTwRead'; }\n static { this.ADD = '_defaultTwAdd'; }\n static { this.EDIT = '_defaultTwEdit'; }\n static { this.DELETE = '_defaultTwDelete'; }\n static { this.DETAILS = '_defaultTwDetails'; }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWFjdGlvbi1kZWZhdWx0LWNhdGVnb3JpZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdDQUFnQzthQUNsQixTQUFJLEdBQUcsZ0JBQWdCLENBQUM7YUFDeEIsUUFBRyxHQUFHLGVBQWUsQ0FBQzthQUN0QixTQUFJLEdBQUcsZ0JBQWdCLENBQUM7YUFDeEIsV0FBTSxHQUFHLGtCQUFrQixDQUFDO2FBQzVCLFlBQU8sR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVmYXVsdCBjYXRlZ29yaWVzIGZvciB0YWJsZXZpZXcgYWN0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVBRCA9ICdfZGVmYXVsdFR3UmVhZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBREQgPSAnX2RlZmF1bHRUd0FkZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUID0gJ19kZWZhdWx0VHdFZGl0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFTEVURSA9ICdfZGVmYXVsdFR3RGVsZXRlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFVEFJTFMgPSAnX2RlZmF1bHRUd0RldGFpbHMnO1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const DATA_LANGUAGE_DROPDOWN_COMPONENT_IT = new InjectionToken('DATA_LANGUAGE_DROPDOWN_COMPONENT');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUE4QixJQUFJLGNBQWMsQ0FBWSxrQ0FBa0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVDogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KCdEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVCcpO1xuIl19","import { getDataProviderService, runFnFromDataProviderOrFail } from '../helpers/data-provider-executors';\nexport class DataProviderExecutor {\n runGetAllOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runGetAll.bind(this));\n }\n runFetchOrFail(ctx, fetchReason) {\n return runFnFromDataProviderOrFail(ctx, ctx => this.runFetch(ctx, fetchReason));\n }\n runCreateOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runCreate.bind(this));\n }\n runUpdateOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runUpdate.bind(this));\n }\n runDeleteOrFail(ctx) {\n return runFnFromDataProviderOrFail(ctx, this.runDelete.bind(this));\n }\n /**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\n getDataProviderService(injector, dataProvider) {\n return getDataProviderService(injector, dataProvider);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci1leGVjdXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL3NlcnZpY2VzL2RhdGEtcHJvdmlkZXItZXhlY3V0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQXFDLHNCQUFzQixFQUFFLDJCQUEyQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFHM0ksTUFBTSxPQUFnQixvQkFBb0I7SUFDL0IsZUFBZSxDQUFnQyxHQUFrRDtRQUNwRyxPQUFPLDJCQUEyQixDQUFzRCxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBYU0sY0FBYyxDQUFnQyxHQUFrRCxFQUFFLFdBQWdEO1FBQ3JKLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQXNCTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVTSxlQUFlLENBQWdDLEdBQWtEO1FBQ3BHLE9BQU8sMkJBQTJCLENBQXNDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFVRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFnQixRQUFrQixFQUFFLFlBQTJDO1FBQ3hHLE9BQU8sc0JBQXNCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0RhdGFMaXN0UmVzdWx0LCBJRGF0YVByb3ZpZGVyLCBOdWxsYWJsZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlLCBnZXREYXRhUHJvdmlkZXJTZXJ2aWNlLCBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWx9IGZyb20gJy4uL2hlbHBlcnMvZGF0YS1wcm92aWRlci1leGVjdXRvcnMnO1xuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhUHJvdmlkZXJFeGVjdXRvciB7XG4gICAgcHVibGljIHJ1bkdldEFsbE9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIERhdGFMaXN0UmVzdWx0PEl0ZW0+PihjdHgsIHRoaXMucnVuR2V0QWxsLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5HZXRBbGw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5HZXRBbGw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s6IE9ic2VydmFibGU8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj47XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkdldEFsbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkdldEFsbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmYWxsYmFjaz86IE9ic2VydmFibGU8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj4gfCBudWxsO1xuXG4gICAgcHVibGljIHJ1bkZldGNoT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPiwgZmV0Y2hSZWFzb24/OiBSdW5GZXRjaEZyb21EYXRhUHJvdmlkZXJSZWFzb25UeXBlKTogT2JzZXJ2YWJsZTxJdGVtPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgY3R4ID0+IHRoaXMucnVuRmV0Y2goY3R4LCBmZXRjaFJlYXNvbikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5GZXRjaDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmZXRjaFJlYXNvbj86IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGVcbiAgICApOiBPYnNlcnZhYmxlPEl0ZW0+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuRmV0Y2g8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmV0Y2hSZWFzb246IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5GZXRjaDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmZXRjaFJlYXNvbjogUnVuRmV0Y2hGcm9tRGF0YVByb3ZpZGVyUmVhc29uVHlwZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZmFsbGJhY2s6IHVuZGVmaW5lZFxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuRmV0Y2g8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmV0Y2hSZWFzb246IFJ1bkZldGNoRnJvbURhdGFQcm92aWRlclJlYXNvblR5cGUgfCB1bmRlZmluZWQsXG4gICAgICAgIGZhbGxiYWNrPzogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj5cbiAgICApOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG5cbiAgICBwdWJsaWMgcnVuQ3JlYXRlT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPik6IE9ic2VydmFibGU8SXRlbT4ge1xuICAgICAgICByZXR1cm4gcnVuRm5Gcm9tRGF0YVByb3ZpZGVyT3JGYWlsPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlLCBJdGVtPihjdHgsIHRoaXMucnVuQ3JlYXRlLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxJdGVtPiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkNyZWF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+Pik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LCBmYWxsYmFjazogdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5DcmVhdGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcblxuICAgIHB1YmxpYyBydW5VcGRhdGVPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxJdGVtPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgdGhpcy5ydW5VcGRhdGUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPEl0ZW0+IHwgbnVsbDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcnVuVXBkYXRlPEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPihjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPiwgZmFsbGJhY2s6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+KTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj47XG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1blVwZGF0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oXG4gICAgICAgIGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LFxuICAgICAgICBmYWxsYmFjaz86IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+XG4gICAgKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuXG4gICAgcHVibGljIHJ1bkRlbGV0ZU9yRmFpbDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPEl0ZW0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBydW5GbkZyb21EYXRhUHJvdmlkZXJPckZhaWw8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2UsIEl0ZW0+KGN0eCwgdGhpcy5ydW5EZWxldGUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkRlbGV0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4pOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PiB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHJ1bkRlbGV0ZTxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4oY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBQYXJhbWV0ZXJzSXRlbSwgU2VydmljZT4sIGZhbGxiYWNrOiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+Pik6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5EZWxldGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+LCBmYWxsYmFjazogdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxOdWxsYWJsZTxJdGVtPj4gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBydW5EZWxldGU8SXRlbSwgUGFyYW1ldGVyc0l0ZW0sIFNlcnZpY2U+KFxuICAgICAgICBjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFBhcmFtZXRlcnNJdGVtLCBTZXJ2aWNlPixcbiAgICAgICAgZmFsbGJhY2s/OiBPYnNlcnZhYmxlPE51bGxhYmxlPEl0ZW0+PlxuICAgICk6IE9ic2VydmFibGU8TnVsbGFibGU8SXRlbT4+IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgc2VydmljZSBpbnN0YW5jZSBvZiBkYXRhIHByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGluc3RhbmNlXG4gICAgICogQHBhcmFtIGRhdGFQcm92aWRlciBEYXRhIHByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhUHJvdmlkZXJTZXJ2aWNlPEl0ZW0sIFNlcnZpY2U+KGluamVjdG9yOiBJbmplY3RvciwgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPik6IFNlcnZpY2UgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGdldERhdGFQcm92aWRlclNlcnZpY2UoaW5qZWN0b3IsIGRhdGFQcm92aWRlcik7XG4gICAgfVxufVxuIl19","import { EditorDataProviderInst } from './editor.data-provider';\n/**\n * Creates and returns an instance of `EditorDataProviderInst` with the specified options for managing editor data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.createType] - The descriptor defining the create type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.updateType] - The descriptor defining the update type.\n * @return {EditorDataProviderInst<Model, Service, ServiceClass, CreateModel, UpdateModel>} An instance of `EditorDataProviderInst` configured according to the provided options.\n */\nexport function editorDataProvider(opts) {\n return new EditorDataProviderInst(opts?.service);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRhdGEtcHJvdmlkZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3ItZGF0YS1wcm92aWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTlEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FNaEMsSUFLRDtJQUNHLE9BQU8sSUFBSSxzQkFBc0IsQ0FBeUQsSUFBSSxFQUFFLE9BQXVCLENBQUMsQ0FBQztBQUM3SCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEYXRhUHJvdmlkZXJJbnN0fSBmcm9tICcuL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0YCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucyBmb3IgbWFuYWdpbmcgZWRpdG9yIGRhdGEuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFRoZSBvcHRpb25zIG9iamVjdCB0byBjb25maWd1cmUgdGhlIGRhdGEgcHJvdmlkZXIuXG4gKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD59IFtvcHRzLnR5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIHR5cGUgb2YgbW9kZWwuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IFtvcHRzLnNlcnZpY2VdIC0gVGhlIHNlcnZpY2UgY2xhc3MgdHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEgcHJvdmlkZXIuXG4gKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxDcmVhdGVNb2RlbD59IFtvcHRzLmNyZWF0ZVR5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIGNyZWF0ZSB0eXBlLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxVcGRhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VXBkYXRlTW9kZWw+fSBbb3B0cy51cGRhdGVUeXBlXSAtIFRoZSBkZXNjcmlwdG9yIGRlZmluaW5nIHRoZSB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm4ge0VkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPn0gQW4gaW5zdGFuY2Ugb2YgYEVkaXRvckRhdGFQcm92aWRlckluc3RgIGNvbmZpZ3VyZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UgPSB1bmRlZmluZWQsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2UgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4+KG9wdHM/OiB7XG4gICAgdHlwZT86IFR5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgY3JlYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgdXBkYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPFVwZGF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG59KTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU2VydmljZUNsYXNzLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihvcHRzPy5zZXJ2aWNlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG4iXX0=","import { CommonsInternalError } from '@mediusinc/mng-commons/core';\n/**\n * @experimental\n */\nexport class EditorDescriptorNestedObjectWrapper {\n #path;\n #editor;\n constructor(editor, basePath) {\n this.#editor = editor;\n this.#path = basePath;\n }\n nested(property) {\n return new EditorDescriptorNestedObjectWrapper(this.#editor, this.getNestedPropertyPath(property));\n }\n getNestedPropertyPath(p) {\n return `${this.#path}.${p}`;\n }\n getField(property) {\n return this.#editor.getFieldUnsafe(this.getNestedPropertyPath(property));\n }\n removeField(property) {\n this.#editor.removeFieldUnsafe(this.getNestedPropertyPath(property));\n }\n addField(property) {\n return this.#editor.addFieldUnsafe(this.getNestedPropertyPath(property));\n }\n withFields(...properties) {\n properties.forEach(p => this.#editor.addFieldUnsafe(this.getNestedPropertyPath(p)));\n return this;\n }\n addFieldLookup(property, opts) {\n return this.#editor.addFieldLookupUnsafe(this.getNestedPropertyPath(property), opts);\n }\n addFieldLookupEnum(property, enumModel, options) {\n return this.#editor.addFieldLookupEnumUnsafe(this.getNestedPropertyPath(property), enumModel, options);\n }\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.#editor.addFieldManyEditorUnsafe(this.getNestedPropertyPath(property), tableviewDescriptor);\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.#editor.addFieldManyToManyEditorUnsafe(this.getNestedPropertyPath(property), mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldDescriptor(field) {\n if (!field.property.startsWith(this.#path)) {\n throw new CommonsInternalError(`Field ${field.property} cannot be added to nested object property ${this.#path}: Paths do not match.`);\n }\n this.#editor.addFieldDescriptor(field);\n return this;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRlc2NyaXB0b3ItbmVzdGVkLW9iamVjdC13cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLG9CQUFvQixFQUF5QyxNQUFNLDZCQUE2QixDQUFDO0FBU3hIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1DQUFtQztJQUc1QyxLQUFLLENBQVM7SUFDZCxPQUFPLENBQTREO0lBRW5FLFlBQVksTUFBaUUsRUFBRSxRQUFnQjtRQUMzRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUNGLFFBQWtCO1FBRWxCLE9BQU8sSUFBSSxtQ0FBbUMsQ0FDMUMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQ3ZDLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsQ0FBNEI7UUFDOUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFFBQVEsQ0FDSixRQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUF5QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW1DO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVEsQ0FDSixRQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUF5QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQUcsVUFBeUM7UUFDbkQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGNBQWMsQ0FLWixRQUFrQixFQUFFLElBQTBEO1FBQzVFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBa0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFILENBQUM7SUFFRCxrQkFBa0IsQ0FDZCxRQUFrQixFQUNsQixTQUErQixFQUMvQixPQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsa0JBQWtCLENBQ2QsUUFBa0IsRUFDbEIsbUJBQWdIO1FBRWhILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBeUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELHdCQUF3QixDQU1wQixRQUFrQixFQUNsQixtQkFBMkQsRUFDM0QscUJBQTZELEVBQzdELGtCQUEyRDtRQUUzRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFDcEMsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixrQkFBa0IsQ0FDckIsQ0FBQztJQUNOLENBQUM7SUFFRCxrQkFBa0IsQ0FBc0MsS0FBK0U7UUFDbkksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEtBQUssQ0FBQyxRQUFRLDhDQUE4QyxJQUFJLENBQUMsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNJLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlJdGVtVHlwZSwgQ29tbW9uc0ludGVybmFsRXJyb3IsIElUYWJsZURlc2NyaXB0b3IsIElUYWJsZXZpZXdEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge0lUYWJsZURhdGFQcm92aWRlcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0ZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0cywgSUZpZWxkTWFuYWdlU2FmZVdpdGhHZXRGaWVsZCwgSUZpZWxkc01hbmFnZVdpdGhHZXRGaWVsZH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yfSBmcm9tICcuLi9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3J9IGZyb20gJy4uL2ZpZWxkLW1hbnkuZGVzY3JpcHRvcic7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBQcm9wZXJ0eU9iamVjdE1vZGVsPlxuICAgIGltcGxlbWVudHMgSUZpZWxkTWFuYWdlU2FmZVdpdGhHZXRGaWVsZDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwsIFByb3BlcnR5T2JqZWN0TW9kZWw+XG57XG4gICAgI3BhdGg6IHN0cmluZztcbiAgICAjZWRpdG9yOiBJRmllbGRzTWFuYWdlV2l0aEdldEZpZWxkPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3I6IElGaWVsZHNNYW5hZ2VXaXRoR2V0RmllbGQ8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiwgYmFzZVBhdGg6IHN0cmluZykge1xuICAgICAgICB0aGlzLiNlZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHRoaXMuI3BhdGggPSBiYXNlUGF0aDtcbiAgICB9XG5cbiAgICBuZXN0ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5XG4gICAgKTogRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBOb25OdWxsYWJsZTxQcm9wZXJ0eU9iamVjdE1vZGVsW1Byb3BlcnR5XT4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwsIE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgICAgICB0aGlzLiNlZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmdldE5lc3RlZFByb3BlcnR5UGF0aChwcm9wZXJ0eSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXROZXN0ZWRQcm9wZXJ0eVBhdGgocDoga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy4jcGF0aH0uJHtwIGFzIHN0cmluZ31gO1xuICAgIH1cblxuICAgIGdldEZpZWxkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5XG4gICAgKTogQUZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuZ2V0RmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWVsZChwcm9wZXJ0eToga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLiNlZGl0b3IucmVtb3ZlRmllbGRVbnNhZmUodGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZDxQcm9wZXJ0eUZpZWxkIGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHlGaWVsZF0+LCBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eUZpZWxkXT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eUZpZWxkXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICB3aXRoRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsKVtdKSB7XG4gICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaChwID0+IHRoaXMuI2VkaXRvci5hZGRGaWVsZFVuc2FmZSh0aGlzLmdldE5lc3RlZFByb3BlcnR5UGF0aChwKSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBhZGRGaWVsZExvb2t1cDxcbiAgICAgICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQcm9wZXJ0eU9iamVjdE1vZGVsLFxuICAgICAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgICAgICBGaWVsZE1vZGVsIGV4dGVuZHMgTm9uTnVsbGFibGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+ID0gTm9uTnVsbGFibGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KHByb3BlcnR5OiBQcm9wZXJ0eSwgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxGaWVsZE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICByZXR1cm4gdGhpcy4jZWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KHRoaXMuZ2V0TmVzdGVkUHJvcGVydHlQYXRoKHByb3BlcnR5KSwgb3B0cyk7XG4gICAgfVxuXG4gICAgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgZW51bU1vZGVsOiBFbnVtRGVzY3JpcHRvcjxFbnVtPixcbiAgICAgICAgb3B0aW9ucz86IEFycmF5PEVudW0+XG4gICAgKTogRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcjxFbnVtLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2VkaXRvci5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLCBlbnVtTW9kZWwsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGFkZEZpZWxkTWFueUVkaXRvcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFByb3BlcnR5T2JqZWN0TW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFByb3BlcnR5T2JqZWN0TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICB0YWJsZXZpZXdEZXNjcmlwdG9yOiBJVGFibGV2aWV3RGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2VkaXRvci5hZGRGaWVsZE1hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4odGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZE1hbnlUb01hbnlFZGl0b3I8XG4gICAgICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUHJvcGVydHlPYmplY3RNb2RlbCxcbiAgICAgICAgU2VydmljZSxcbiAgICAgICAgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8UHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gUHJvcGVydHlPYmplY3RNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3I8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3I8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPlxuICAgICk6IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNlZGl0b3IuYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eVBhdGgocHJvcGVydHkpLFxuICAgICAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cERhdGFQcm92aWRlclxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFkZEZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPikge1xuICAgICAgICBpZiAoIWZpZWxkLnByb3BlcnR5LnN0YXJ0c1dpdGgodGhpcy4jcGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmllbGQgJHtmaWVsZC5wcm9wZXJ0eX0gY2Fubm90IGJlIGFkZGVkIHRvIG5lc3RlZCBvYmplY3QgcHJvcGVydHkgJHt0aGlzLiNwYXRofTogUGF0aHMgZG8gbm90IG1hdGNoLmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2VkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iXX0=","export var TableviewEditorTypeEnum;\n(function (TableviewEditorTypeEnum) {\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"None\"] = 0] = \"None\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Details\"] = 1] = \"Details\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Edit\"] = 2] = \"Edit\";\n TableviewEditorTypeEnum[TableviewEditorTypeEnum[\"Add\"] = 3] = \"Add\";\n})(TableviewEditorTypeEnum || (TableviewEditorTypeEnum = {}));\nexport const EDITOR_DEFAULT_GROUP_NAME = '_default';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksdUJBS1g7QUFMRCxXQUFZLHVCQUF1QjtJQUMvQixxRUFBSSxDQUFBO0lBQ0osMkVBQU8sQ0FBQTtJQUNQLHFFQUFJLENBQUE7SUFDSixtRUFBRyxDQUFBO0FBQ1AsQ0FBQyxFQUxXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFLbEM7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bSB7XG4gICAgTm9uZSxcbiAgICBEZXRhaWxzLFxuICAgIEVkaXQsXG4gICAgQWRkXG59XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FID0gJ19kZWZhdWx0JztcbiJdfQ==","export var FieldSizeEnum;\n(function (FieldSizeEnum) {\n FieldSizeEnum[FieldSizeEnum[\"Small\"] = 0] = \"Small\";\n FieldSizeEnum[FieldSizeEnum[\"Normal\"] = 1] = \"Normal\";\n FieldSizeEnum[FieldSizeEnum[\"Large\"] = 2] = \"Large\";\n})(FieldSizeEnum || (FieldSizeEnum = {}));\nexport var FieldInputTypeEnum;\n(function (FieldInputTypeEnum) {\n FieldInputTypeEnum[FieldInputTypeEnum[\"Hidden\"] = 0] = \"Hidden\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Label\"] = 1] = \"Label\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Text\"] = 2] = \"Text\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Textarea\"] = 3] = \"Textarea\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Number\"] = 4] = \"Number\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Currency\"] = 5] = \"Currency\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Switch\"] = 6] = \"Switch\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Radio\"] = 7] = \"Radio\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Datepicker\"] = 8] = \"Datepicker\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Mask\"] = 9] = \"Mask\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"File\"] = 10] = \"File\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"ImageFile\"] = 11] = \"ImageFile\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"ImageUrl\"] = 12] = \"ImageUrl\";\n FieldInputTypeEnum[FieldInputTypeEnum[\"Custom\"] = 13] = \"Custom\";\n})(FieldInputTypeEnum || (FieldInputTypeEnum = {}));\nexport var FieldLookupTypeEnum;\n(function (FieldLookupTypeEnum) {\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Dropdown\"] = 0] = \"Dropdown\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Autocomplete\"] = 1] = \"Autocomplete\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Dialog\"] = 2] = \"Dialog\";\n FieldLookupTypeEnum[FieldLookupTypeEnum[\"Custom\"] = 3] = \"Custom\";\n})(FieldLookupTypeEnum || (FieldLookupTypeEnum = {}));\nexport var FieldManyToManyEditorTypeEnum;\n(function (FieldManyToManyEditorTypeEnum) {\n FieldManyToManyEditorTypeEnum[FieldManyToManyEditorTypeEnum[\"DialogTableMultiselect\"] = 0] = \"DialogTableMultiselect\";\n})(FieldManyToManyEditorTypeEnum || (FieldManyToManyEditorTypeEnum = {}));\nexport var FieldManyToManyEditorActionEnum;\n(function (FieldManyToManyEditorActionEnum) {\n FieldManyToManyEditorActionEnum[FieldManyToManyEditorActionEnum[\"Add\"] = 0] = \"Add\";\n FieldManyToManyEditorActionEnum[FieldManyToManyEditorActionEnum[\"Delete\"] = 1] = \"Delete\";\n})(FieldManyToManyEditorActionEnum || (FieldManyToManyEditorActionEnum = {}));\nexport var FieldManyEditorTypeEnum;\n(function (FieldManyEditorTypeEnum) {\n FieldManyEditorTypeEnum[FieldManyEditorTypeEnum[\"DialogEditor\"] = 0] = \"DialogEditor\";\n})(FieldManyEditorTypeEnum || (FieldManyEditorTypeEnum = {}));\nexport var FieldManyEditorActionEnum;\n(function (FieldManyEditorActionEnum) {\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"View\"] = 0] = \"View\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Add\"] = 1] = \"Add\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Edit\"] = 2] = \"Edit\";\n FieldManyEditorActionEnum[FieldManyEditorActionEnum[\"Delete\"] = 3] = \"Delete\";\n})(FieldManyEditorActionEnum || (FieldManyEditorActionEnum = {}));\nexport var FieldGroupTypeEnum;\n(function (FieldGroupTypeEnum) {\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Tab\"] = 0] = \"Tab\";\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Fieldset\"] = 1] = \"Fieldset\";\n FieldGroupTypeEnum[FieldGroupTypeEnum[\"Logical\"] = 2] = \"Logical\";\n})(FieldGroupTypeEnum || (FieldGroupTypeEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvbW9kZWxzL2ZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsbURBQUssQ0FBQTtJQUNMLHFEQUFNLENBQUE7SUFDTixtREFBSyxDQUFBO0FBQ1QsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBZVg7QUFmRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQ04sNkRBQUssQ0FBQTtJQUNMLDJEQUFJLENBQUE7SUFDSixtRUFBUSxDQUFBO0lBQ1IsK0RBQU0sQ0FBQTtJQUNOLG1FQUFRLENBQUE7SUFDUiwrREFBTSxDQUFBO0lBQ04sNkRBQUssQ0FBQTtJQUNMLHVFQUFVLENBQUE7SUFDViwyREFBSSxDQUFBO0lBQ0osNERBQUksQ0FBQTtJQUNKLHNFQUFTLENBQUE7SUFDVCxvRUFBUSxDQUFBO0lBQ1IsZ0VBQU0sQ0FBQTtBQUNWLENBQUMsRUFmVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBZTdCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUMzQixxRUFBUSxDQUFBO0lBQ1IsNkVBQVksQ0FBQTtJQUNaLGlFQUFNLENBQUE7SUFDTixpRUFBTSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFLOUI7QUFFRCxNQUFNLENBQU4sSUFBWSw2QkFFWDtBQUZELFdBQVksNkJBQTZCO0lBQ3JDLHFIQUFzQixDQUFBO0FBQzFCLENBQUMsRUFGVyw2QkFBNkIsS0FBN0IsNkJBQTZCLFFBRXhDO0FBRUQsTUFBTSxDQUFOLElBQVksK0JBR1g7QUFIRCxXQUFZLCtCQUErQjtJQUN2QyxtRkFBRyxDQUFBO0lBQ0gseUZBQU0sQ0FBQTtBQUNWLENBQUMsRUFIVywrQkFBK0IsS0FBL0IsK0JBQStCLFFBRzFDO0FBRUQsTUFBTSxDQUFOLElBQVksdUJBRVg7QUFGRCxXQUFZLHVCQUF1QjtJQUMvQixxRkFBWSxDQUFBO0FBQ2hCLENBQUMsRUFGVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBRWxDO0FBRUQsTUFBTSxDQUFOLElBQVkseUJBS1g7QUFMRCxXQUFZLHlCQUF5QjtJQUNqQyx5RUFBSSxDQUFBO0lBQ0osdUVBQUcsQ0FBQTtJQUNILHlFQUFJLENBQUE7SUFDSiw2RUFBTSxDQUFBO0FBQ1YsQ0FBQyxFQUxXLHlCQUF5QixLQUF6Qix5QkFBeUIsUUFLcEM7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzFCLHlEQUFHLENBQUE7SUFDSCxtRUFBUSxDQUFBO0lBQ1IsaUVBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGVudW0gRmllbGRTaXplRW51bSB7XG4gICAgU21hbGwsXG4gICAgTm9ybWFsLFxuICAgIExhcmdlXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkSW5wdXRUeXBlRW51bSB7XG4gICAgSGlkZGVuLFxuICAgIExhYmVsLFxuICAgIFRleHQsXG4gICAgVGV4dGFyZWEsXG4gICAgTnVtYmVyLFxuICAgIEN1cnJlbmN5LFxuICAgIFN3aXRjaCxcbiAgICBSYWRpbyxcbiAgICBEYXRlcGlja2VyLFxuICAgIE1hc2ssXG4gICAgRmlsZSxcbiAgICBJbWFnZUZpbGUsXG4gICAgSW1hZ2VVcmwsXG4gICAgQ3VzdG9tXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTG9va3VwVHlwZUVudW0ge1xuICAgIERyb3Bkb3duLFxuICAgIEF1dG9jb21wbGV0ZSxcbiAgICBEaWFsb2csXG4gICAgQ3VzdG9tXG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtIHtcbiAgICBEaWFsb2dUYWJsZU11bHRpc2VsZWN0XG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkTWFueVRvTWFueUVkaXRvckFjdGlvbkVudW0ge1xuICAgIEFkZCxcbiAgICBEZWxldGVcbn1cblxuZXhwb3J0IGVudW0gRmllbGRNYW55RWRpdG9yVHlwZUVudW0ge1xuICAgIERpYWxvZ0VkaXRvclxufVxuXG5leHBvcnQgZW51bSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtIHtcbiAgICBWaWV3LFxuICAgIEFkZCxcbiAgICBFZGl0LFxuICAgIERlbGV0ZVxufVxuXG5leHBvcnQgZW51bSBGaWVsZEdyb3VwVHlwZUVudW0ge1xuICAgIFRhYixcbiAgICBGaWVsZHNldCxcbiAgICBMb2dpY2FsXG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkQ29uZmlnID0gb2JqZWN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkTG9va3VwQ29uZmlnIGV4dGVuZHMgRmllbGRDb25maWcge1xuICAgIHRhYmxlPzoge1xuICAgICAgICBjYXB0aW9uQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgICAgICBjb2x1bW5BY3Rpb25Db21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgfTtcbn1cbiJdfQ==","export class FieldValidationDescriptor {\n constructor(name, validator, message, options) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n get name() {\n return this._name;\n }\n get validator() {\n return this._validator;\n }\n get message() {\n return this._message;\n }\n get options() {\n return this._options;\n }\n copy() {\n const opt = this._options ? { ...this._options } : undefined;\n return new FieldValidationDescriptor(this._name, this._validator, this._message, opt);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8seUJBQXlCO0lBTWxDLFlBQ0ksSUFBWSxFQUNaLFNBQWdKLEVBQ2hKLE9BQTRFLEVBQzVFLE9BQTJDO1FBRTNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNELE9BQU8sSUFBSSx5QkFBeUIsQ0FBNkMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEksQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWVsZEFzeW5jQmFzZVZhbGlkYXRvciwgRmllbGRCYXNlVmFsaWRhdG9yLCBGaWVsZFZhbGlkYXRpb25NZXNzYWdlfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7ZXJyb3JQYXRoPzogUHJvcGVydHl9O1xuXG5leHBvcnQgY2xhc3MgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yPzogRmllbGRCYXNlVmFsaWRhdG9yPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4gfCBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZpZWxkQmFzZVZhbGlkYXRvcjxGaWVsZFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHwgRmllbGRBc3luY0Jhc2VWYWxpZGF0b3I8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZpZWxkVmFsaWRhdGlvbk1lc3NhZ2U8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0aW9ucz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICkge1xuICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yID0gdmFsaWRhdG9yO1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsaWRhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBvcHQgPSB0aGlzLl9vcHRpb25zID8gey4uLnRoaXMuX29wdGlvbnN9IDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8RmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9uYW1lLCB0aGlzLl92YWxpZGF0b3IsIHRoaXMuX21lc3NhZ2UsIG9wdCk7XG4gICAgfVxufVxuIl19","import { Subject } from 'rxjs';\nimport { objectDeepCopy } from '@mediusinc/mng-commons/core';\nimport { FieldSizeEnum } from '../models/field.model';\nimport { FieldValidationDescriptor } from './field-validation.descriptor';\nexport const fieldDescriptorEmptyLabelType = '_emptyLabel';\nexport class AGenericFieldDescriptor {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor() {\n this._config = {};\n this._formlyConfig = {};\n }\n get config() {\n return this._config;\n }\n get formlyConfig() {\n return this._formlyConfig;\n }\n withConfig(config) {\n this._config = config;\n return this;\n }\n withFormlyConfig(formlyConfig) {\n this._formlyConfig = formlyConfig;\n return this;\n }\n /**\n * Override toJSON implementation to prevent overflow with circular dependency.\n * @ignore\n */\n toJSON() {\n const jsonObj = {\n ...this,\n _editor: undefined\n };\n const jsonObjStr = JSON.stringify(jsonObj);\n return jsonObjStr;\n }\n}\nexport class AFieldDescriptor extends AGenericFieldDescriptor {\n constructor(property) {\n super();\n /** @ignore */ this._required = false;\n /** @ignore */ this._requiredHideLabelMarker = false;\n /** @ignore */ this._disabled = false;\n /** @ignore */ this._validations = [];\n /** @ignore */ this._asyncValidations = [];\n /** @ignore */ this._validationOpts = {};\n /** @ignore */ this._updateOn = 'change';\n /** @ignore */ this._size = FieldSizeEnum.Normal;\n // localization\n /** @ignore */ this._isLocalized = false;\n /** @ignore */ this._eventsSubject = new Subject();\n this._property = property;\n }\n get property() {\n return this._property;\n }\n get label() {\n return this._label;\n }\n get labelUseModelBase() {\n return this._labelUseModelBase;\n }\n get placeholder() {\n return this._placeholder;\n }\n get helpText() {\n return this._helpText;\n }\n get labelInfoTooltip() {\n return this._labelInfoTooltip;\n }\n get labelInfoTooltipIcon() {\n return this._labelInfoTooltipIcon;\n }\n get required() {\n return this._required;\n }\n get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n get disabled() {\n return this._disabled;\n }\n get defaultValue() {\n return this._defaultValue;\n }\n get getter() {\n return this._getter;\n }\n get setter() {\n return this._setter;\n }\n get validations() {\n return this._validations;\n }\n get asyncValidations() {\n return this._asyncValidations;\n }\n get validationOpts() {\n return this._validationOpts;\n }\n get requiredExpression() {\n return this._requiredExpression;\n }\n get disabledExpression() {\n return this._disabledExpression;\n }\n get hiddenExpression() {\n return this._hiddenExpression;\n }\n get hiddenResetOnHide() {\n return this._hiddenResetOnHide;\n }\n get updateOn() {\n return this._updateOn;\n }\n get onInit() {\n return this._onInit;\n }\n get onChanges() {\n return this._onChanges;\n }\n get afterContentInit() {\n return this._afterContentInit;\n }\n get afterViewInit() {\n return this._afterViewInit;\n }\n get onDestroy() {\n return this._onDestroy;\n }\n get onValueChange() {\n return this._onValueChange;\n }\n get className() {\n return this._className;\n }\n get size() {\n return this._size;\n }\n get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n get isLocalized() {\n return this._isLocalized;\n }\n /**\n * Set label for field.\n * @param label Full label (i18n path or other string). If null, no label will be used.\n * @param useModelBase If set to true, label will be appended to model's i18n base path.\n */\n withLabel(label, useModelBase) {\n this._label = label;\n this._labelUseModelBase = useModelBase;\n return this;\n }\n withEmptyLabel() {\n this._label = fieldDescriptorEmptyLabelType;\n return this;\n }\n withPlaceholder(placeholder) {\n this._placeholder = placeholder;\n return this;\n }\n withHelpText(helpText) {\n this._helpText = helpText;\n return this;\n }\n /**\n * Sets the label tooltip and optionally a custom icon for the field.\n *\n * @param {string} tooltip - The tooltip text to be displayed.\n * @param {string} [customIcon] - An optional custom icon to be used for the tooltip. If not provided, the default icon is used.\n */\n withLabelInfoTooltip(tooltip, customIcon) {\n this._labelInfoTooltip = tooltip;\n this._labelInfoTooltipIcon = customIcon ?? this._labelInfoTooltipIcon;\n return this;\n }\n withRequired(required = true, requiredExpression, hideLabelMarker = false) {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n withDisabled(disabled = true, disabledExpression) {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n withHidden(hiddenExpression, resetOnHide) {\n this._hiddenExpression = hiddenExpression;\n this._hiddenResetOnHide = resetOnHide;\n return this;\n }\n withUpdateOn(updateOn) {\n this._updateOn = updateOn;\n return this;\n }\n withOnInit(onInit) {\n this._onInit = onInit;\n return this;\n }\n withOnChanges(onChanges) {\n this._onChanges = onChanges;\n return this;\n }\n withAfterContentInit(afterContentInit) {\n this._afterContentInit = afterContentInit;\n return this;\n }\n withAfterViewInit(afterViewInit) {\n this._afterViewInit = afterViewInit;\n return this;\n }\n withOnDestroy(onDestroy) {\n this._onDestroy = onDestroy;\n return this;\n }\n withOnValueChange(onValueChange) {\n this._onValueChange = onValueChange;\n return this;\n }\n withDefaultValue(defaultValue) {\n this._defaultValue = defaultValue;\n return this;\n }\n withGetter(fn) {\n this._getter = fn;\n return this;\n }\n withSetter(fn) {\n this._setter = fn;\n return this;\n }\n withValidation(name, validator, message) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n removeValidation(name) {\n this._validations = this._validations.filter(v => v.name !== name);\n return this;\n }\n withAsyncValidation(name, asyncValidator, message) {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator, message));\n return this;\n }\n removeAsyncValidation(name) {\n this._asyncValidations = this._asyncValidations.filter(v => v.name !== name);\n return this;\n }\n withValidationOpts(validationOpts) {\n this._validationOpts = validationOpts;\n return this;\n }\n withClassName(opts) {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n }\n else {\n this._className = opts;\n }\n return this;\n }\n withSize(size = FieldSizeEnum.Normal) {\n this._size = size;\n return this;\n }\n /**\n * This function adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n */\n localized() {\n this._isLocalized = true;\n return this;\n }\n nextEvent(type, component, data) {\n this._eventsSubject.next({\n type: type,\n fieldComponent: component,\n formComponent: component.props.formEditorComponent,\n form: component?.form,\n fieldFormControl: component.formControl,\n fieldFormlyConfig: component.field,\n data: data\n });\n }\n get events$() {\n return this._eventsSubject.asObservable();\n }\n copyFieldsTo(obj) {\n obj._config = objectDeepCopy(this._config);\n obj._formlyConfig = objectDeepCopy(this._formlyConfig);\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._labelInfoTooltip = this._labelInfoTooltip;\n obj._labelInfoTooltipIcon = this._labelInfoTooltipIcon;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._hiddenResetOnHide = this._hiddenResetOnHide;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className ? { ...this._className } : undefined;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n obj._validationOpts = { ...this._validationOpts };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYmFzZS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWJhc2UuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBVyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUdyRSxPQUFPLEVBQWMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHakUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsYUFBYSxDQUFDO0FBRTNELE1BQU0sT0FBZ0IsdUJBQXVCO0lBSXpDLGdFQUFnRTtJQUNoRTtRQUpVLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztJQUd2QixDQUFDO0lBRTFCLElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQW1CO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxZQUErQjtRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sTUFBTTtRQUNaLE1BQU0sT0FBTyxHQUFHO1lBQ1osR0FBRyxJQUFJO1lBQ1AsT0FBTyxFQUFFLFNBQVM7U0FDckIsQ0FBQztRQUNGLE1BQU0sVUFBVSxH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QUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQixHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLEdBQUcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seUZpZWxkQ29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7R2V0dGVyRm4sIG9iamVjdERlZXBDb3B5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0ZpZWxkQXN5bmNCYXNlVmFsaWRhdG9yLCBGaWVsZEFzeW5jVmFsaWRhdG9yLCBGaWVsZEJhc2VWYWxpZGF0b3IsIEZpZWxkVmFsaWRhdGlvbk1lc3NhZ2UsIEZpZWxkVmFsaWRhdG9yfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge0ZpZWxkQ29uZmlnLCBGaWVsZFNpemVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGb3JtRmllbGRFdmVudCwgRm9ybUZpZWxkRXZlbnREYXRhLCBGb3JtRmllbGRFdmVudFR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWcsIENvbW1vbnNGb3JtbHlIb29rRm59IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBjb25zdCBmaWVsZERlc2NyaXB0b3JFbXB0eUxhYmVsVHlwZSA9ICdfZW1wdHlMYWJlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBR2VuZXJpY0ZpZWxkRGVzY3JpcHRvciB7XG4gICAgcHJvdGVjdGVkIF9jb25maWc6IEZpZWxkQ29uZmlnID0ge307XG4gICAgcHJvdGVjdGVkIF9mb3JtbHlDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBnZXQgY29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9ybWx5Q29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWx5Q29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29uZmlnKGNvbmZpZzogRmllbGRDb25maWcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZvcm1seUNvbmZpZyhmb3JtbHlDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Zvcm1seUNvbmZpZyA9IGZvcm1seUNvbmZpZztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdG9KU09OIGltcGxlbWVudGF0aW9uIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGpzb25PYmogPSB7XG4gICAgICAgICAgICAuLi50aGlzLFxuICAgICAgICAgICAgX2VkaXRvcjogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGpzb25PYmpTdHIgPSBKU09OLnN0cmluZ2lmeShqc29uT2JqKTtcbiAgICAgICAgcmV0dXJuIGpzb25PYmpTdHI7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZSA9IHtcbiAgICBmb3JjZVNob3dNZXNzYWdlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkQ2xhc3NOYW1lVHlwZSA9IHtcbiAgICBmaWVsZD86IHN0cmluZztcbiAgICBncmlkPzogc3RyaW5nO1xuICAgIHdyYXBwZXI/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29udHJvbD86IHN0cmluZztcbiAgICBpbnB1dD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsVXNlTW9kZWxCYXNlPzogYm9vbGVhbjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xhYmVsSW5mb1Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9sYWJlbEluZm9Ub29sdGlwSWNvbj86IHN0cmluZztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oZWxwVGV4dD86IHN0cmluZztcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfcmVxdWlyZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkSGlkZUxhYmVsTWFya2VyID0gZmFsc2U7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGVmYXVsdFZhbHVlPzogRmllbGRWYWx1ZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2dldHRlcj86IEdldHRlckZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3NldHRlcj86IChpdGVtOiBFZGl0b3JNb2RlbCwgdmFsdWU6IEZpZWxkVmFsdWUpID0+IHZvaWQ7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF92YWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxhbnksIGFueSwgYW55Pj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2FzeW5jVmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF92YWxpZGF0aW9uT3B0czogRmllbGRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7fTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3JlcXVpcmVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGlzYWJsZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oaWRkZW5FeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9oaWRkZW5SZXNldE9uSGlkZT86IGJvb2xlYW47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF91cGRhdGVPbjogJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JyA9ICdjaGFuZ2UnO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9vbkluaXQ/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uQ2hhbmdlcz86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfb25EZXN0cm95PzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD47XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX29uVmFsdWVDaGFuZ2U/OiAoZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4sIHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2NsYXNzTmFtZT86IEZpZWxkQ2xhc3NOYW1lVHlwZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX3NpemU6IEZpZWxkU2l6ZUVudW0gPSBGaWVsZFNpemVFbnVtLk5vcm1hbDtcblxuICAgIC8vIGxvY2FsaXphdGlvblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfZXZlbnRzU3ViamVjdCA9IG5ldyBTdWJqZWN0PEZvcm1GaWVsZEV2ZW50PEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4+KCk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbFVzZU1vZGVsQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsVXNlTW9kZWxCYXNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhlbHBUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVscFRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbEluZm9Ub29sdGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxJbmZvVG9vbHRpcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsSW5mb1Rvb2x0aXBJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxJbmZvVG9vbHRpcEljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRIaWRlTGFiZWxNYXJrZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBnZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXN5bmNWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uT3B0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25PcHRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWRFeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWRFeHByZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWRFeHByZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRFeHByZXNzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGlkZGVuRXhwcmVzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGRlbkV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoaWRkZW5SZXNldE9uSGlkZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGRlblJlc2V0T25IaWRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXBkYXRlT24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVPbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uSW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uSW5pdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uQ2hhbmdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uQ2hhbmdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlckNvbnRlbnRJbml0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyVmlld0luaXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvbkRlc3Ryb3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkRlc3Ryb3k7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvblZhbHVlQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25WYWx1ZUNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTaXplU21hbGwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplID09PSBGaWVsZFNpemVFbnVtLlNtYWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTaXplTGFyZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplID09PSBGaWVsZFNpemVFbnVtLkxhcmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgY29weSgpOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbGFiZWwgZm9yIGZpZWxkLlxuICAgICAqIEBwYXJhbSBsYWJlbCBGdWxsIGxhYmVsIChpMThuIHBhdGggb3Igb3RoZXIgc3RyaW5nKS4gSWYgbnVsbCwgbm8gbGFiZWwgd2lsbCBiZSB1c2VkLlxuICAgICAqIEBwYXJhbSB1c2VNb2RlbEJhc2UgSWYgc2V0IHRvIHRydWUsIGxhYmVsIHdpbGwgYmUgYXBwZW5kZWQgdG8gbW9kZWwncyBpMThuIGJhc2UgcGF0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aExhYmVsKGxhYmVsOiBzdHJpbmcgfCBudWxsLCB1c2VNb2RlbEJhc2U/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gICAgICAgIHRoaXMuX2xhYmVsVXNlTW9kZWxCYXNlID0gdXNlTW9kZWxCYXNlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVtcHR5TGFiZWwoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xhYmVsID0gZmllbGREZXNjcmlwdG9yRW1wdHlMYWJlbFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhlbHBUZXh0KGhlbHBUZXh0OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGVscFRleHQgPSBoZWxwVGV4dDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGFiZWwgdG9vbHRpcCBhbmQgb3B0aW9uYWxseSBhIGN1c3RvbSBpY29uIGZvciB0aGUgZmllbGQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9vbHRpcCAtIFRoZSB0b29sdGlwIHRleHQgdG8gYmUgZGlzcGxheWVkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY3VzdG9tSWNvbl0gLSBBbiBvcHRpb25hbCBjdXN0b20gaWNvbiB0byBiZSB1c2VkIGZvciB0aGUgdG9vbHRpcC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpY29uIGlzIHVzZWQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhMYWJlbEluZm9Ub29sdGlwKHRvb2x0aXA6IHN0cmluZywgY3VzdG9tSWNvbj86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9sYWJlbEluZm9Ub29sdGlwID0gdG9vbHRpcDtcbiAgICAgICAgdGhpcy5fbGFiZWxJbmZvVG9vbHRpcEljb24gPSBjdXN0b21JY29uID8/IHRoaXMuX2xhYmVsSW5mb1Rvb2x0aXBJY29uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcXVpcmVkKHJlcXVpcmVkID0gdHJ1ZSwgcmVxdWlyZWRFeHByZXNzaW9uPzogc3RyaW5nIHwgKChmaWVsZD86IEZvcm1seUZpZWxkQ29uZmlnKSA9PiBib29sZWFuKSB8IE9ic2VydmFibGU8Ym9vbGVhbj4sIGhpZGVMYWJlbE1hcmtlciA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gcmVxdWlyZWQ7XG4gICAgICAgIGlmIChyZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkRXhwcmVzc2lvbiA9IHJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXF1aXJlZEhpZGVMYWJlbE1hcmtlciA9IGhpZGVMYWJlbE1hcmtlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZChkaXNhYmxlZCA9IHRydWUsIGRpc2FibGVkRXhwcmVzc2lvbj86IHN0cmluZyB8ICgoZmllbGQ/OiBGb3JtbHlGaWVsZENvbmZpZykgPT4gYm9vbGVhbikgfCBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIGlmIChkaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkRXhwcmVzc2lvbiA9IGRpc2FibGVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPiwgcmVzZXRPbkhpZGU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkV4cHJlc3Npb24gPSBoaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICB0aGlzLl9oaWRkZW5SZXNldE9uSGlkZSA9IHJlc2V0T25IaWRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVwZGF0ZU9uKHVwZGF0ZU9uOiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU9uID0gdXBkYXRlT247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25Jbml0KG9uSW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uSW5pdCA9IG9uSW5pdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPbkNoYW5nZXMob25DaGFuZ2VzPzogQ29tbW9uc0Zvcm1seUhvb2tGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VzID0gb25DaGFuZ2VzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyQ29udGVudEluaXQoYWZ0ZXJDb250ZW50SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyQ29udGVudEluaXQgPSBhZnRlckNvbnRlbnRJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyVmlld0luaXQoYWZ0ZXJWaWV3SW5pdD86IENvbW1vbnNGb3JtbHlIb29rRm48RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyVmlld0luaXQgPSBhZnRlclZpZXdJbml0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uRGVzdHJveShvbkRlc3Ryb3k/OiBDb21tb25zRm9ybWx5SG9va0ZuPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kgPSBvbkRlc3Ryb3k7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25WYWx1ZUNoYW5nZShvblZhbHVlQ2hhbmdlPzogKGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+LCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlID0gb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlOiBGaWVsZFZhbHVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhHZXR0ZXIoZm4/OiBHZXR0ZXJGbjxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2V0dGVyKGZuPzogKGl0ZW06IEVkaXRvck1vZGVsLCB2YWx1ZTogRmllbGRWYWx1ZSkgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zZXR0ZXIgPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRmllbGRWYWx1ZSwgRWRpdG9yVmFsdWUgPSBFZGl0b3JNb2RlbD4oXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsaWRhdG9yPzogRmllbGRWYWxpZGF0b3I8VmFsdWUsIEVkaXRvclZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGaWVsZFZhbGlkYXRpb25NZXNzYWdlPFZhbHVlLCBFZGl0b3JWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2gobmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobmFtZSwgdmFsaWRhdG9yIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiwgbWVzc2FnZSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVmFsaWRhdGlvbihuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5maWx0ZXIodiA9PiB2Lm5hbWUgIT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFzeW5jVmFsaWRhdGlvbjxWYWx1ZSA9IEZpZWxkVmFsdWUsIEVkaXRvclZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yPzogRmllbGRBc3luY1ZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LFxuICAgICAgICBtZXNzYWdlPzogRmllbGRWYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgRWRpdG9yVmFsdWU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMucHVzaChuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihuYW1lLCBhc3luY1ZhbGlkYXRvciBhcyBGaWVsZEFzeW5jQmFzZVZhbGlkYXRvcjxWYWx1ZSwgRWRpdG9yVmFsdWU+LCBtZXNzYWdlKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBc3luY1ZhbGlkYXRpb24obmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FzeW5jVmFsaWRhdGlvbnMgPSB0aGlzLl9hc3luY1ZhbGlkYXRpb25zLmZpbHRlcih2ID0+IHYubmFtZSAhPT0gbmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbk9wdHModmFsaWRhdGlvbk9wdHM6IEZpZWxkVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25PcHRzID0gdmFsaWRhdGlvbk9wdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKG9wdHM/OiBzdHJpbmcgfCBGaWVsZENsYXNzTmFtZVR5cGUpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0ge1xuICAgICAgICAgICAgICAgIGdyaWQ6IG9wdHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBvcHRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2l6ZShzaXplOiBGaWVsZFNpemVFbnVtID0gRmllbGRTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBpY29uIHdpdGggdGV4dCBTaG93IGFsbCB0cmFuc2xhdGlvbnMgYWJvdmUgdGhlIGZpZWxkIGFuZCBhZnRlciBjbGlja2luZyBvbiBpdCwgaXQgZGlzcGxheXMgYSBuZXcgZGlhbG9nIHdpdGggdGFibGV2aWV3LlxuICAgICAqIFRoaXMgbmV3IHRhYmxlIHZpZXcgc2hvd3MgYWxsIGF2YWlsYWJsZSB0cmFuc2xhdGlvbnMgZm9yIHNwZWNpZmljIHByb3BlcnR5IGFuZCBhbGxvd3MgZWRpdGluZyBpdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9jYWxpemVkKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0RXZlbnQoXG4gICAgICAgIHR5cGU6IEZvcm1GaWVsZEV2ZW50VHlwZUVudW0sXG4gICAgICAgIGNvbXBvbmVudDogRmllbGRUeXBlPENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgYW55Pj4sXG4gICAgICAgIGRhdGE/OiBGb3JtRmllbGRFdmVudERhdGE8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWw+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50c1N1YmplY3QubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgZmllbGRDb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbXBvbmVudC5wcm9wcy5mb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgZm9ybTogY29tcG9uZW50Py5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgIGZpZWxkRm9ybUNvbnRyb2w6IGNvbXBvbmVudC5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICAgICAgICAgIGZpZWxkRm9ybWx5Q29uZmlnOiBjb21wb25lbnQuZmllbGQsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXZlbnRzJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHlGaWVsZHNUbyhvYmo6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPikge1xuICAgICAgICBvYmouX2NvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIG9iai5fZm9ybWx5Q29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fZm9ybWx5Q29uZmlnKTtcbiAgICAgICAgb2JqLl9sYWJlbCA9IHRoaXMuX2xhYmVsO1xuICAgICAgICBvYmouX3BsYWNlaG9sZGVyID0gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgICAgIG9iai5fbGFiZWxJbmZvVG9vbHRpcCA9IHRoaXMuX2xhYmVsSW5mb1Rvb2x0aXA7XG4gICAgICAgIG9iai5fbGFiZWxJbmZvVG9vbHRpcEljb24gPSB0aGlzLl9sYWJlbEluZm9Ub29sdGlwSWNvbjtcbiAgICAgICAgb2JqLl9oZWxwVGV4dCA9IHRoaXMuX2hlbHBUZXh0O1xuICAgICAgICBvYmouX3JlcXVpcmVkID0gdGhpcy5fcmVxdWlyZWQ7XG4gICAgICAgIG9iai5fZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZDtcbiAgICAgICAgb2JqLl9kZWZhdWx0VmFsdWUgPSB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgICAgIG9iai5fcmVxdWlyZWRFeHByZXNzaW9uID0gdGhpcy5fcmVxdWlyZWRFeHByZXNzaW9uO1xuICAgICAgICBvYmouX2hpZGRlbkV4cHJlc3Npb24gPSB0aGlzLl9oaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICBvYmouX2hpZGRlblJlc2V0T25IaWRlID0gdGhpcy5faGlkZGVuUmVzZXRPbkhpZGU7XG4gICAgICAgIG9iai5fdXBkYXRlT24gPSB0aGlzLl91cGRhdGVPbjtcbiAgICAgICAgb2JqLl9vbkluaXQgPSB0aGlzLl9vbkluaXQ7XG4gICAgICAgIG9iai5fb25DaGFuZ2VzID0gdGhpcy5fb25DaGFuZ2VzO1xuICAgICAgICBvYmouX29uRGVzdHJveSA9IHRoaXMuX29uRGVzdHJveTtcbiAgICAgICAgb2JqLl9hZnRlckNvbnRlbnRJbml0ID0gdGhpcy5fYWZ0ZXJDb250ZW50SW5pdDtcbiAgICAgICAgb2JqLl9hZnRlclZpZXdJbml0ID0gdGhpcy5fYWZ0ZXJWaWV3SW5pdDtcbiAgICAgICAgb2JqLl9vblZhbHVlQ2hhbmdlID0gdGhpcy5fb25WYWx1ZUNoYW5nZTtcbiAgICAgICAgb2JqLl9kaXNhYmxlZEV4cHJlc3Npb24gPSB0aGlzLl9kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lID8gey4uLnRoaXMuX2NsYXNzTmFtZX0gOiB1bmRlZmluZWQ7XG4gICAgICAgIG9iai5fc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgb2JqLl9nZXR0ZXIgPSB0aGlzLl9nZXR0ZXI7XG4gICAgICAgIG9iai5fc2V0dGVyID0gdGhpcy5fc2V0dGVyO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fdmFsaWRhdGlvbnMgPSB0aGlzLl92YWxpZGF0aW9ucy5tYXAodmFsdWUgPT4gdmFsdWUuY29weSgpKTtcbiAgICAgICAgb2JqLl9hc3luY1ZhbGlkYXRpb25zID0gdGhpcy5fYXN5bmNWYWxpZGF0aW9ucy5tYXAodmFsdWUgPT4gdmFsdWUuY29weSgpKTtcbiAgICAgICAgb2JqLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG4gICAgfVxufVxuIl19","import { StyleLevelEnum } from '@mediusinc/mng-commons/core';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport class FieldActionDescriptor extends AFieldDescriptor {\n constructor(property) {\n super(property);\n this._wrappers = ['field'];\n this._fieldActionName = property;\n }\n get button() {\n return this._button;\n }\n get runFunction() {\n return this._runFunction;\n }\n get wrappers() {\n return this._wrappers;\n }\n withButton(label, icon = null, level = StyleLevelEnum.Default) {\n this._button = {\n ...this._button,\n label,\n icon,\n style: {\n ...this._button?.style,\n level: level\n }\n };\n return this;\n }\n withButtonOpts(button) {\n this._button = button;\n return this;\n }\n withRunFunction(fn) {\n this._runFunction = fn;\n return this;\n }\n withWrappers(wrappers) {\n this._wrappers = wrappers;\n return this;\n }\n copy() {\n const field = new FieldActionDescriptor(this._property);\n this.copyFieldsTo(field);\n field._button = { ...this._button, style: { ...this._button?.style } };\n field._runFunction = this._runFunction?.bind(field);\n field._wrappers = [...this._wrappers];\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBSTNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXpELE1BQU0sT0FBTyxxQkFBa0UsU0FBUSxnQkFBNEQ7SUFTL0ksWUFBWSxRQUFnQjtRQUN4QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFIWixjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUkxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXFCLEVBQUUsT0FBc0IsSUFBSSxFQUFFLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTztRQUMvRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLEtBQUs7WUFDTCxJQUFJO1lBQ0osS0FBSyxFQUFFO2dCQUNILEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLO2dCQUN0QixLQUFLLEVBQUUsS0FBSzthQUNmO1NBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBZ0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFxQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBaUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmllbGRBY3Rpb25Db250ZXh0LCBGaWVsZEFjdGlvblJlc3VsdH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWFjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0gKFxuICAgIGN0eDogRmllbGRBY3Rpb25Db250ZXh0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikgPT4gdm9pZCB8IEZpZWxkQWN0aW9uUmVzdWx0IHwgT2JzZXJ2YWJsZTxGaWVsZEFjdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8dm9pZCwgRWRpdG9yTW9kZWwsIHZvaWQsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWVsZEFjdGlvbk5hbWU6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3I7XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogRmllbGRBY3Rpb25SdW5GblR5cGU8RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJpdmF0ZSBfd3JhcHBlcnMgPSBbJ2ZpZWxkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25OYW1lID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5GdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd3JhcHBlcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93cmFwcGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbihsYWJlbD86IHN0cmluZyB8IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBsZXZlbCA9IFN0eWxlTGV2ZWxFbnVtLkRlZmF1bHQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9idXR0b24/LnN0eWxlLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbk9wdHMoYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gYnV0dG9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhXcmFwcGVycyh3cmFwcGVyczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlcnMgPSB3cmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2J1dHRvbiA9IHsuLi50aGlzLl9idXR0b24sIHN0eWxlOiB7Li4udGhpcy5fYnV0dG9uPy5zdHlsZX19O1xuICAgICAgICBmaWVsZC5fcnVuRnVuY3Rpb24gPSB0aGlzLl9ydW5GdW5jdGlvbj8uYmluZChmaWVsZCk7XG4gICAgICAgIGZpZWxkLl93cmFwcGVycyA9IFsuLi50aGlzLl93cmFwcGVyc107XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=","import { objectDeepCopy } from '@mediusinc/mng-commons/core';\nimport { EDITOR_DEFAULT_GROUP_NAME } from '../models/editor.model';\nimport { FieldGroupTypeEnum } from '../models/field.model';\nimport { AGenericFieldDescriptor } from './field-base.descriptor';\nimport { FieldValidationDescriptor } from './field-validation.descriptor';\nexport class AFieldGroupDescriptor extends AGenericFieldDescriptor {\n constructor(name) {\n super();\n this._fields = [];\n this._validations = [];\n this._validationOpts = {};\n this._name = name;\n this._default = name === EDITOR_DEFAULT_GROUP_NAME;\n }\n removeField(property, filterFunction) {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n get title() {\n return this._title;\n }\n get validations() {\n return this._validations;\n }\n get validationOpts() {\n return this._validationOpts;\n }\n get name() {\n return this._name;\n }\n get default() {\n return this._default;\n }\n get hiddenExpression() {\n return this._hiddenExpression;\n }\n withTitle(title) {\n this._title = title;\n return this;\n }\n withValidation(name, validator, message, opts) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message, opts));\n return this;\n }\n withValidationOpts(validationOpts) {\n this._validationOpts = validationOpts;\n return this;\n }\n withHidden(hiddenExpression) {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n}\nexport class FieldTabGroupDescriptor extends AFieldGroupDescriptor {\n constructor(name) {\n super(name);\n this._fields = [];\n }\n get type() {\n return FieldGroupTypeEnum.Tab;\n }\n get fields() {\n return this._fields;\n }\n addField(field) {\n this._fields.push(field);\n return this;\n }\n copy(skipFields = false) {\n const tab = new FieldTabGroupDescriptor(this.name);\n tab._config = objectDeepCopy(this._config);\n tab._formlyConfig = objectDeepCopy(this._formlyConfig);\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy(skipFields));\n tab._validations = this.validations.map(v => v.copy());\n tab._validationOpts = { ...this._validationOpts };\n tab._hiddenExpression = this._hiddenExpression;\n return tab;\n }\n}\nexport class FieldGroupDescriptor extends AFieldGroupDescriptor {\n constructor(name) {\n super(name);\n this._type = FieldGroupTypeEnum.Fieldset;\n if (this._default) {\n this.asLogical();\n }\n }\n get type() {\n return this._type;\n }\n get fields() {\n return this._fields;\n }\n /**\n * Styling class name configurations for group.\n */\n get className() {\n return this._className;\n }\n addField(field) {\n this._fields.push(field);\n return this;\n }\n asLogical() {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n withClassName(opts) {\n if (typeof opts === 'string') {\n this._className = {\n grid: opts\n };\n }\n else {\n this._className = opts;\n }\n return this;\n }\n copy(skipFields = false) {\n const group = new FieldGroupDescriptor(this.name);\n group._config = objectDeepCopy(this._config);\n group._formlyConfig = objectDeepCopy(this._formlyConfig);\n group._type = this._type;\n group._title = this._title;\n group._hiddenExpression = this._hiddenExpression;\n if (!skipFields) {\n group._fields = this.fields.map(f => f.copy());\n }\n group._validations = this.validations.map(v => v.copy());\n group._validationOpts = { ...this._validationOpts };\n group._className = this._className ? { ...this._className } : undefined;\n return group;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC1ncm91cC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLHVCQUF1QixFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQzNHLE9BQU8sRUFBQyx5QkFBeUIsRUFBb0MsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRyxNQUFNLE9BQWdCLHFCQUFrRSxTQUFRLHVCQUF1QjtJQVNuSCxZQUFzQixJQUFZO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBTkYsWUFBTyxHQUE4QixFQUFFLENBQUM7UUFDeEMsaUJBQVksR0FBb0QsRUFBRSxDQUFDO1FBQ25FLG9CQUFlLEdBQTRCLEVBQUUsQ0FBQztRQUtwRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyx5QkFBeUIsQ0FBQztJQUN2RCxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWdCLEVBQUUsY0FBZ0Y7UUFDakgsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdC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SyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWpELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxlQUFlLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQztRQUVsRCxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUV0RSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge29iamVjdERlZXBDb3B5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0VESVRPUl9ERUZBVUxUX0dST1VQX05BTUV9IGZyb20gJy4uL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtGaWVsZEJhc2VWYWxpZGF0b3IsIEZvcm1WYWxpZGF0aW9uTWVzc2FnZSwgRm9ybVZhbGlkYXRvcn0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLXZhbGlkYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtGaWVsZEdyb3VwVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0NvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGaWVsZERlc2NyaXB0b3IsIEFHZW5lcmljRmllbGREZXNjcmlwdG9yLCBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZX0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yLCBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGV9IGZyb20gJy4vZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUdlbmVyaWNGaWVsZERlc2NyaXB0b3Ige1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfbmFtZTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVmYXVsdDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3RpdGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2ZpZWxkczogQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSA9IFtdO1xuICAgIHByb3RlY3RlZCBfdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnksIGFueT4+ID0gW107XG4gICAgcHJvdGVjdGVkIF92YWxpZGF0aW9uT3B0czogRmllbGRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7fTtcbiAgICBwcm90ZWN0ZWQgX2hpZGRlbkV4cHJlc3Npb24/OiBzdHJpbmcgfCAoKGZpZWxkPzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEVkaXRvck1vZGVsLCBFZGl0b3JNb2RlbD4pID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHQgPSBuYW1lID09PSBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eTogc3RyaW5nLCBmaWx0ZXJGdW5jdGlvbjogKGZpZWxkczogQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSkgPT4gQUdlbmVyaWNGaWVsZERlc2NyaXB0b3JbXSk6IEFHZW5lcmljRmllbGREZXNjcmlwdG9yW10ge1xuICAgICAgICB0aGlzLl9maWVsZHMgPSBmaWx0ZXJGdW5jdGlvbih0aGlzLl9maWVsZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZTtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBnZXQgdHlwZSgpOiBGaWVsZEdyb3VwVHlwZUVudW07XG5cbiAgICBhYnN0cmFjdCBnZXQgZmllbGRzKCk6IEFHZW5lcmljRmllbGREZXNjcmlwdG9yW107XG5cbiAgICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uT3B0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25PcHRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhpZGRlbkV4cHJlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW5FeHByZXNzaW9uO1xuICAgIH1cblxuICAgIGFic3RyYWN0IGFkZEZpZWxkKGZpZWxkOiBBR2VuZXJpY0ZpZWxkRGVzY3JpcHRvcik6IHRoaXM7XG5cbiAgICBhYnN0cmFjdCBjb3B5KCk6IEFGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZT86IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRWRpdG9yTW9kZWwsIFBhcmVudFZhbHVlID0gUGFyZW50RWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudFZhbHVlPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50VmFsdWU+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25zLnB1c2goXG4gICAgICAgICAgICBuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxWYWx1ZSwgVmFsdWUsIFBhcmVudFZhbHVlPihuYW1lLCB2YWxpZGF0b3IgYXMgRmllbGRCYXNlVmFsaWRhdG9yPFZhbHVlLCBWYWx1ZSwgUGFyZW50VmFsdWU+IHwgdW5kZWZpbmVkLCBtZXNzYWdlLCBvcHRzKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFZhbGlkYXRpb25PcHRzKHZhbGlkYXRpb25PcHRzOiBGaWVsZFZhbGlkYXRpb25PcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl92YWxpZGF0aW9uT3B0cyA9IHZhbGlkYXRpb25PcHRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGRlbihoaWRkZW5FeHByZXNzaW9uOiBzdHJpbmcgfCAoKGZpZWxkPzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEVkaXRvck1vZGVsLCBFZGl0b3JNb2RlbD4pID0+IGJvb2xlYW4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9oaWRkZW5FeHByZXNzaW9uID0gaGlkZGVuRXhwcmVzc2lvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+IGV4dGVuZHMgQUZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9maWVsZHM6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gRmllbGRHcm91cFR5cGVFbnVtLlRhYjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkcygpOiBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcyBhcyBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4+O1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZChmaWVsZDogRmllbGRHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoc2tpcEZpZWxkcyA9IGZhbHNlKTogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgdGFiID0gbmV3IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPih0aGlzLm5hbWUpO1xuICAgICAgICB0YWIuX2NvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIHRhYi5fZm9ybWx5Q29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fZm9ybWx5Q29uZmlnKTtcbiAgICAgICAgdGFiLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICB0YWIuX2ZpZWxkcyA9IHRoaXMuZmllbGRzLm1hcChmID0+IGYuY29weShza2lwRmllbGRzKSk7XG4gICAgICAgIHRhYi5fdmFsaWRhdGlvbnMgPSB0aGlzLnZhbGlkYXRpb25zLm1hcCh2ID0+IHYuY29weSgpKTtcbiAgICAgICAgdGFiLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG4gICAgICAgIHRhYi5faGlkZGVuRXhwcmVzc2lvbiA9IHRoaXMuX2hpZGRlbkV4cHJlc3Npb247XG5cbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICB9XG59XG5cbnR5cGUgRmllbGRHcm91cENsYXNzTmFtZVR5cGUgPSB7XG4gICAgZ3JpZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgIHByaXZhdGUgX3R5cGUgPSBGaWVsZEdyb3VwVHlwZUVudW0uRmllbGRzZXQ7XG5cbiAgICBwcm90ZWN0ZWQgX2NsYXNzTmFtZT86IEZpZWxkR3JvdXBDbGFzc05hbWVUeXBlO1xuXG4gICAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG5hbWUpO1xuICAgICAgICBpZiAodGhpcy5fZGVmYXVsdCkge1xuICAgICAgICAgICAgdGhpcy5hc0xvZ2ljYWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZHMoKTogQXJyYXk8QUZpZWxkRGVzY3JpcHRvcjxhbnksIEVkaXRvck1vZGVsPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzIGFzIEFycmF5PEFGaWVsZERlc2NyaXB0b3I8YW55LCBFZGl0b3JNb2RlbD4+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0eWxpbmcgY2xhc3MgbmFtZSBjb25maWd1cmF0aW9ucyBmb3IgZ3JvdXAuXG4gICAgICovXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkKGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPGFueSwgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTG9naWNhbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IEZpZWxkR3JvdXBUeXBlRW51bS5Mb2dpY2FsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShvcHRzPzogc3RyaW5nIHwgRmllbGRHcm91cENsYXNzTmFtZVR5cGUpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0ge1xuICAgICAgICAgICAgICAgIGdyaWQ6IG9wdHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBvcHRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KHNraXBGaWVsZHMgPSBmYWxzZSk6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPih0aGlzLm5hbWUpO1xuICAgICAgICBncm91cC5fY29uZmlnID0gb2JqZWN0RGVlcENvcHkodGhpcy5fY29uZmlnKTtcbiAgICAgICAgZ3JvdXAuX2Zvcm1seUNvbmZpZyA9IG9iamVjdERlZXBDb3B5KHRoaXMuX2Zvcm1seUNvbmZpZyk7XG4gICAgICAgIGdyb3VwLl90eXBlID0gdGhpcy5fdHlwZTtcbiAgICAgICAgZ3JvdXAuX3RpdGxlID0gdGhpcy5fdGl0bGU7XG4gICAgICAgIGdyb3VwLl9oaWRkZW5FeHByZXNzaW9uID0gdGhpcy5faGlkZGVuRXhwcmVzc2lvbjtcblxuICAgICAgICBpZiAoIXNraXBGaWVsZHMpIHtcbiAgICAgICAgICAgIGdyb3VwLl9maWVsZHMgPSB0aGlzLmZpZWxkcy5tYXAoZiA9PiBmLmNvcHkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXAuX3ZhbGlkYXRpb25zID0gdGhpcy52YWxpZGF0aW9ucy5tYXAodiA9PiB2LmNvcHkoKSk7XG4gICAgICAgIGdyb3VwLl92YWxpZGF0aW9uT3B0cyA9IHsuLi50aGlzLl92YWxpZGF0aW9uT3B0c307XG5cbiAgICAgICAgZ3JvdXAuX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZSA/IHsuLi50aGlzLl9jbGFzc05hbWV9IDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICB9XG59XG4iXX0=","import { fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray, getEnumConstantName } from '@mediusinc/mng-commons/core';\nimport { LookupDataProviderInst } from '@mediusinc/mng-commons/form/api';\nimport { FieldLookupTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport const fieldLookupGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider;\n }\n else {\n cfg.serviceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\nexport class FieldLookupDescriptor extends AFieldDescriptor {\n constructor(property, cfg) {\n super(property);\n this._lookupType = FieldLookupTypeEnum.Dropdown;\n this._optionsLabelTranslate = false;\n this._dropdownClassName = 'mng-filter-lookup-dropdown';\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n else {\n this._dataProvider = new LookupDataProviderInst(cfg?.serviceType);\n }\n this._optionsValueProperty = cfg?.optionsValueProperty;\n }\n get lookupType() {\n return this._lookupType;\n }\n get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n get optionsValueProperty() {\n return this._optionsValueProperty;\n }\n get optionsDisabledProperty() {\n return this._optionsDisabledProperty;\n }\n get optionsTrackProperty() {\n return this._optionsTrackProperty;\n }\n get dataProvider() {\n return this._dataProvider;\n }\n get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n get dropdownClassName() {\n return this._dropdownClassName;\n }\n get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n get customComponentName() {\n return this._customComponentName;\n }\n get trimOption() {\n return this._autocompleteInputTrim;\n }\n withOptionsLabelProperty(property, translate = false) {\n return this.withOptionsLabelPropertyUnsafe(property, translate);\n }\n withOptionsLabelPropertyUnsafe(property, translate = false) {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n withOptionsDisabledProperty(property) {\n return this.withOptionsDisabledPropertyUnsafe(property);\n }\n withOptionsDisabledPropertyUnsafe(property) {\n this._optionsDisabledProperty = property;\n return this;\n }\n withOptionsTrackProperty(property) {\n return this.withOptionsTrackPropertyUnsafe(property);\n }\n withOptionsTrackPropertyUnsafe(property) {\n if (this._optionsValueProperty) {\n return this;\n }\n this._optionsTrackProperty = property;\n return this;\n }\n withLookup(lookup) {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n withInputTrim(trimOption = 'both') {\n this._autocompleteInputTrim = trimOption;\n return this;\n }\n withConfig(config) {\n return super.withConfig(config);\n }\n asAutocomplete(opts) {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteSelectFirst = opts?.selectFirst;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n asDialog(lookupTableDescriptor, tableDataProvider) {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n return this;\n }\n asCustomComponent(customComponentName) {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n copy() {\n const field = new FieldLookupDescriptor(this._property, {\n dataProvider: this._dataProvider,\n optionsValueProperty: this._optionsValueProperty\n });\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsLabelTranslate = this._optionsLabelTranslate;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\nexport class FieldLookupEnumDescriptor extends FieldLookupDescriptor {\n constructor(property, enumModel, options) {\n super(property, {\n dataProvider: new LookupDataProviderInst(undefined),\n optionsValueProperty: 'value'\n });\n this._enumModel = enumModel;\n this._options = options;\n this._optionEnumValues = Array.isArray(options)\n ? fromEnumValuesAsValueArray(this._enumModel.type, options, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(this._enumModel.type, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined);\n this.withLookup(() => this._optionEnumValues);\n this.withOptionsLabelProperty('title', this._enumModel.i18nBaseKey !== null);\n this.withOptionsDisabledProperty('disabled');\n }\n get enumModel() {\n return this._enumModel;\n }\n withDisabledOptions(...disabledOptions) {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n withDefaultValueEnum(defaultValue) {\n const defaultOptionValue = this._enumModel.nameAsValue ? getEnumConstantName(this._enumModel.type, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(option[this._optionsValueProperty]);\n }\n }\n return this;\n }\n asAutocomplete(opts) {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n copy() {\n const field = new FieldLookupEnumDescriptor(this._property, this._enumModel, this._options);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbG9va3VwLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQVFILDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsbUJBQW1CLEVBQ3RCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFnQixzQkFBc0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBSXRGLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQXlCekQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBc0IscUJBQW9FLEVBQUUsRUFBRTtJQUN0SSxNQUFNLEdBQUcsR0FBcUUsRUFBRSxDQUFDO0lBQ2pGLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN4QixJQUFLLHFCQUF1QyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFELHFGQUFxRjtZQUNyRixHQUFHLENBQUMsWUFBWSxHQUFHLHFCQUFpRSxDQUFDO1FBQ3pGLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLFdBQVcsR0FBRyxxQkFBa0QsQ0FBQztRQUN6RSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLHFCQVNULFNBQVEsZ0JBQXdFO0lBeUJoRixZQUFZLFFBQWdCLEVBQUUsR0FBbUY7UUFDN0csS0FBSyxDQUFDLFFBQWtCLENBQUMsQ0FBQztRQXBCcEIsZ0JBQVcsR0FBd0IsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBRWhFLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUkvQix1QkFBa0IsR0FBRyw0QkFBNEIs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LENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRWUsSUFBSTtRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLHlCQUF5QixDQUF1QyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDekQsS0FBSyxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxLQUFLLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3pELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRW51bUNvbnN0YW50VHlwZSxcbiAgICBFbnVtVmFsdWUsXG4gICAgSURhdGFQcm92aWRlcixcbiAgICBJTG9va3VwRGF0YVByb3ZpZGVyLFxuICAgIElMb29rdXBEZXNjcmlwdG9yLFxuICAgIExvb2t1cERhdGFQcm92aWRlckxvb2t1cEZuVHlwZSxcbiAgICBTZXJ2aWNlQ2xhc3NUeXBlLFxuICAgIGZyb21FbnVtQ29uc3RhbnRzQXNWYWx1ZUFycmF5LFxuICAgIGZyb21FbnVtVmFsdWVzQXNWYWx1ZUFycmF5LFxuICAgIGdldEVudW1Db25zdGFudE5hbWVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SW5wdXRUcmltVHlwZSwgTG9va3VwRGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZURlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7RmllbGRMb29rdXBDb25maWcsIEZpZWxkTG9va3VwVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGaWVsZERlc2NyaXB0b3J9IGZyb20gJy4vZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgRmllbGRMb29rdXBEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxFZGl0b3JNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gRmllbGRMb29rdXBEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxcbiAgICBFZGl0b3JNb2RlbCxcbiAgICBTZXJ2aWNlLFxuICAgIFNvcnRzLFxuICAgIEZpbHRlcnNcbj4gJiB7XG4gICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZExvb2t1cERlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIFNvcnRzID0ga2V5b2YgRmllbGRNb2RlbCwgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIEZpZWxkTW9kZWw+ID0ge1xuICAgIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICBkYXRhUHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElMb29rdXBEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBGaWVsZExvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlID0ge1xuICAgIG9wZW5PbkZvY3VzPzogYm9vbGVhbjtcbiAgICBpbmxpbmVTZWFyY2g/OiBib29sZWFuO1xuICAgIHNlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgICBhdXRvQ2xlYXI/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpZWxkTG9va3VwR2V0UHJvdmlkZXJDZmdPYmogPSA8RmllbGRNb2RlbCwgU2VydmljZT4oc2VydmljZU9yRGF0YVByb3ZpZGVyPzogRmllbGRMb29rdXBQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4pID0+IHtcbiAgICBjb25zdCBjZmc6IEZpZWxkTG9va3VwRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcuZGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElMb29rdXBEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZT47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZmcuc2VydmljZVR5cGUgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2ZnO1xufTtcblxuZXhwb3J0IGNsYXNzIEZpZWxkTG9va3VwRGVzY3JpcHRvcjxcbiAgICAgICAgRmllbGRNb2RlbCxcbiAgICAgICAgRWRpdG9yTW9kZWwsXG4gICAgICAgIFNlcnZpY2UgPSBhbnksXG4gICAgICAgIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsLFxuICAgICAgICBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCxcbiAgICAgICAgU29ydHMgPSBrZXlvZiBGaWVsZE1vZGVsLFxuICAgICAgICBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgRmllbGRNb2RlbFxuICAgID5cbiAgICBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPlxuICAgIGltcGxlbWVudHMgSUxvb2t1cERlc2NyaXB0b3I8RmllbGRNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnM+XG57XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhUHJvdmlkZXI6IElMb29rdXBEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnM+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmc7IC8vIHRoaXMgZGVmaW5lcyBWVCFcblxuICAgIHByb3RlY3RlZCBfbG9va3VwVHlwZTogRmllbGRMb29rdXBUeXBlRW51bSA9IEZpZWxkTG9va3VwVHlwZUVudW0uRHJvcGRvd247XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zTGFiZWxQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfb3B0aW9uc0Rpc2FibGVkUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zVHJhY2tQcm9wZXJ0eT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfZHJvcGRvd25DbGFzc05hbWUgPSAnbW5nLWZpbHRlci1sb29rdXAtZHJvcGRvd24nO1xuXG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVPcGVuT25Gb2N1cz86IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2g/OiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlQXV0b0NsZWFyPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZVNlbGVjdEZpcnN0PzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZUlucHV0VHJpbT86IElucHV0VHJpbVR5cGU7XG5cbiAgICBwcm90ZWN0ZWQgX2RpYWxvZ1RhYmxlRGVzY3JpcHRvcj86IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnk+O1xuICAgIHByb3RlY3RlZCBfZGlhbG9nVGFibGVEYXRhUHJvdmlkZXI/OiBJVGFibGVEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgYW55LCBhbnksIGFueT47XG5cbiAgICBwcm90ZWN0ZWQgX2N1c3RvbUNvbXBvbmVudE5hbWU/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nLCBjZmc/OiBGaWVsZExvb2t1cERlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPikge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmIChjZmc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gY2ZnLmRhdGFQcm92aWRlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IG5ldyBMb29rdXBEYXRhUHJvdmlkZXJJbnN0KGNmZz8uc2VydmljZVR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgPSBjZmc/Lm9wdGlvbnNWYWx1ZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zTGFiZWxQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc1ZhbHVlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNEaXNhYmxlZFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zVHJhY2tQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNUcmFja1Byb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUlubGluZVNlYXJjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUF1dG9DbGVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUF1dG9DbGVhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZVNlbGVjdEZpcnN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlU2VsZWN0Rmlyc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkcm9wZG93bkNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nVGFibGVEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlhbG9nVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nVGFibGVEYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dUYWJsZURhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbUNvbXBvbmVudE5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnROYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdHJpbU9wdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUlucHV0VHJpbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNMYWJlbFByb3BlcnR5KHByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsLCB0cmFuc2xhdGUgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoT3B0aW9uc0xhYmVsUHJvcGVydHlVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCB0cmFuc2xhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc0xhYmVsUHJvcGVydHlVbnNhZmUocHJvcGVydHk6IHN0cmluZywgdHJhbnNsYXRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb3B0aW9uc0xhYmVsUHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlID0gdHJhbnNsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNEaXNhYmxlZFByb3BlcnR5KHByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhPcHRpb25zRGlzYWJsZWRQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc0Rpc2FibGVkUHJvcGVydHlVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNUcmFja1Byb3BlcnR5KHByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhPcHRpb25zVHJhY2tQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc1RyYWNrUHJvcGVydHlVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbnNUcmFja1Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwKGxvb2t1cD86IExvb2t1cERhdGFQcm92aWRlckxvb2t1cEZuVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyLndpdGhMb29rdXAobG9va3VwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJbnB1dFRyaW0odHJpbU9wdGlvbjogSW5wdXRUcmltVHlwZSA9ICdib3RoJyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVJbnB1dFRyaW0gPSB0cmltT3B0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aENvbmZpZyhjb25maWc6IEZpZWxkTG9va3VwQ29uZmlnKTogdGhpcyB7XG4gICAgICAgIHJldHVybiBzdXBlci53aXRoQ29uZmlnKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQXV0b2NvbXBsZXRlKG9wdHM/OiBGaWVsZExvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cFR5cGUgPSBGaWVsZExvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTtcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlQXV0b0NsZWFyID0gb3B0cz8uYXV0b0NsZWFyO1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVTZWxlY3RGaXJzdCA9IG9wdHM/LnNlbGVjdEZpcnN0O1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cyA9IG9wdHM/Lm9wZW5PbkZvY3VzO1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2ggPSBvcHRzPy5pbmxpbmVTZWFyY2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0RpYWxvZzxTb3J0cyA9IGtleW9mIEZpZWxkTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBGaWVsZE1vZGVsPihcbiAgICAgICAgbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICAgICAgdGFibGVEYXRhUHJvdmlkZXI/OiBJVGFibGVEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgYW55LCBTb3J0cywgRmlsdGVycz5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVHlwZSA9IEZpZWxkTG9va3VwVHlwZUVudW0uRGlhbG9nO1xuICAgICAgICB0aGlzLl9kaWFsb2dUYWJsZURlc2NyaXB0b3IgPSBsb29rdXBUYWJsZURlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1RhYmxlRGF0YVByb3ZpZGVyID0gdGFibGVEYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1c3RvbUNvbXBvbmVudChjdXN0b21Db21wb25lbnROYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVHlwZSA9IEZpZWxkTG9va3VwVHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnROYW1lID0gY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRMb29rdXBEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRMb29rdXBEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbCwgU29ydHMsIEZpbHRlcnM+KHRoaXMuX3Byb3BlcnR5LCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5OiB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fbG9va3VwVHlwZSA9IHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgICAgIGZpZWxkLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlID0gdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlO1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX29wdGlvbnNUcmFja1Byb3BlcnR5ID0gdGhpcy5fb3B0aW9uc1RyYWNrUHJvcGVydHk7XG4gICAgICAgIGZpZWxkLl9kcm9wZG93bkNsYXNzTmFtZSA9IHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lO1xuICAgICAgICBmaWVsZC5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMgPSB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICAgICAgZmllbGQuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaCA9IHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaDtcbiAgICAgICAgZmllbGQuX2RpYWxvZ1RhYmxlRGVzY3JpcHRvciA9IHRoaXMuX2RpYWxvZ1RhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEZpZWxkTG9va3VwRGVzY3JpcHRvcjxcbiAgICBFbnVtVmFsdWUsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgdW5kZWZpbmVkLFxuICAgIEVudW1Db25zdGFudFR5cGUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwsXG4gICAgbmV2ZXIsXG4gICAgbmV2ZXJcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VudW1Nb2RlbDogRW51bURlc2NyaXB0b3I8RW51bT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uRW51bVZhbHVlczogRW51bVZhbHVlW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogRW51bVtdIHwgdW5kZWZpbmVkOyAvLyB1c2VkIHRvIGVuc3VyZSBwcm9wZXIgY29weWluZ1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgZW51bU1vZGVsOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5LCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IG5ldyBMb29rdXBEYXRhUHJvdmlkZXJJbnN0PEVudW1WYWx1ZSwgdW5kZWZpbmVkLCBuZXZlciwgbmV2ZXIsIHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcbiAgICAgICAgICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5OiAndmFsdWUnXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9lbnVtTW9kZWwgPSBlbnVtTW9kZWw7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9vcHRpb25FbnVtVmFsdWVzID0gQXJyYXkuaXNBcnJheShvcHRpb25zKVxuICAgICAgICAgICAgPyBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheTxFbnVtPih0aGlzLl9lbnVtTW9kZWwudHlwZSwgb3B0aW9ucywgdGhpcy5fZW51bU1vZGVsLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtTW9kZWwuaTE4bkJhc2VLZXkgPz8gdW5kZWZpbmVkKVxuICAgICAgICAgICAgOiBmcm9tRW51bUNvbnN0YW50c0FzVmFsdWVBcnJheSh0aGlzLl9lbnVtTW9kZWwudHlwZSwgdGhpcy5fZW51bU1vZGVsLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtTW9kZWwuaTE4bkJhc2VLZXkgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy53aXRoTG9va3VwKCgpID0+IHRoaXMuX29wdGlvbkVudW1WYWx1ZXMpO1xuICAgICAgICB0aGlzLndpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eSgndGl0bGUnLCB0aGlzLl9lbnVtTW9kZWwuaTE4bkJhc2VLZXkgIT09IG51bGwpO1xuICAgICAgICB0aGlzLndpdGhPcHRpb25zRGlzYWJsZWRQcm9wZXJ0eSgnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1Nb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1Nb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpc2FibGVkT3B0aW9ucyguLi5kaXNhYmxlZE9wdGlvbnM6IEFycmF5PEVudW1Db25zdGFudFR5cGU+KTogdGhpcyB7XG4gICAgICAgIGZvciAoY29uc3QgZGlzYWJsZWRPcHRpb24gb2YgZGlzYWJsZWRPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNhYmxlZE9wdGlvblZhbHVlID0gdGhpcy5fZW51bU1vZGVsLm5hbWVBc1ZhbHVlID8gZ2V0RW51bUNvbnN0YW50TmFtZSh0aGlzLl9lbnVtTW9kZWwudHlwZSwgZGlzYWJsZWRPcHRpb24pIDogZGlzYWJsZWRPcHRpb247XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWRPcHRpb25WYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX29wdGlvbkVudW1WYWx1ZXMuZmluZChvID0+IG8udmFsdWUgPT09IGRpc2FibGVkT3B0aW9uVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWVFbnVtKGRlZmF1bHRWYWx1ZTogRW51bUNvbnN0YW50VHlwZSk6IHRoaXMge1xuICAgICAgICBjb25zdCBkZWZhdWx0T3B0aW9uVmFsdWUgPSB0aGlzLl9lbnVtTW9kZWwubmFtZUFzVmFsdWUgPyBnZXRFbnVtQ29uc3RhbnROYW1lKHRoaXMuX2VudW1Nb2RlbC50eXBlLCBkZWZhdWx0VmFsdWUpIDogZGVmYXVsdFZhbHVlO1xuICAgICAgICBpZiAoZGVmYXVsdE9wdGlvblZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9vcHRpb25FbnVtVmFsdWVzLmZpbmQobyA9PiBvLnZhbHVlID09PSBkZWZhdWx0T3B0aW9uVmFsdWUpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMud2l0aERlZmF1bHRWYWx1ZShvcHRpb25bdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGFzQXV0b2NvbXBsZXRlKG9wdHM/OiBGaWVsZExvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHN1cGVyLmFzQXV0b2NvbXBsZXRlKHtcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBvcGVuT25Gb2N1czogb3B0cz8ub3Blbk9uRm9jdXMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGlubGluZVNlYXJjaDogb3B0cz8uaW5saW5lU2VhcmNoID8/IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fZW51bU1vZGVsLCB0aGlzLl9vcHRpb25zKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fbG9va3VwVHlwZSA9IHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgICAgIGZpZWxkLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgICAgICBmaWVsZC5fb3B0aW9uc0Rpc2FibGVkUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zRGlzYWJsZWRQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX29wdGlvbnNUcmFja1Byb3BlcnR5ID0gdGhpcy5fb3B0aW9uc1RyYWNrUHJvcGVydHk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=","import { TableDataProviderInst } from '@mediusinc/mng-commons/table/api';\nimport { FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport const fieldManyToManyGetProviderCfgObj = (serviceOrDataProvider) => {\n const cfg = {};\n if (serviceOrDataProvider) {\n if (serviceOrDataProvider.isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.lookupDataProvider = serviceOrDataProvider;\n }\n else {\n cfg.lookupServiceType = serviceOrDataProvider;\n }\n }\n return cfg;\n};\nexport class FieldManyToManyEditorDescriptor extends AFieldDescriptor {\n constructor(property, mainTableDescriptor, lookupTableDescriptor, cfg) {\n super(property);\n this._fieldType = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n this._actions = [FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete];\n this._hasLookupExcludeValues = false;\n this._excludeFilterProperty = '';\n this._excludeValueProperty = '';\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n if (cfg?.lookupDataProvider) {\n this._lookupTableDataProvider = cfg.lookupDataProvider;\n }\n else {\n this._lookupTableDataProvider = new TableDataProviderInst(cfg?.lookupServiceType);\n }\n }\n get fieldType() {\n return this._fieldType;\n }\n get actions() {\n return this._actions;\n }\n get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n withLookup(fn) {\n this._lookupTableDataProvider.withGetAll(fn);\n return this;\n }\n withActions(actions = []) {\n this.actions.push(...actions);\n return this;\n }\n withLookupExclude(filterProperty, valueProperty, hasLookupExclude = true) {\n return this.withLookupExcludeUnsafe(filterProperty, valueProperty, hasLookupExclude);\n }\n withLookupExcludeUnsafe(filterProperty, valueProperty, hasLookupExclude = true) {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n copy() {\n const field = new FieldManyToManyEditorDescriptor(this._property, this._mainTableDescriptor.copy(), this._lookupTableDescriptor.copy(), {\n lookupDataProvider: this.lookupTableDataProvider\n });\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\nexport class FieldManyEditorDescriptor extends AFieldDescriptor {\n constructor(property, tableviewDescriptor) {\n super(property);\n this._fieldType = FieldManyEditorTypeEnum.DialogEditor;\n this._fieldActions = [];\n // we allow any action (item is not defined, the same goes for other generics). Developer should define types depending on action's specifics\n this._actions = [];\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n get fieldType() {\n return this._fieldType;\n }\n get fieldActions() {\n return this._fieldActions;\n }\n get actions() {\n return this._actions;\n }\n get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n withFieldAction(action) {\n this._fieldActions.push(action);\n return this;\n }\n withFieldActions(actions) {\n this._fieldActions = actions;\n return this;\n }\n withAction(action) {\n this._actions.push(action);\n return this;\n }\n copy() {\n const field = new FieldManyEditorDescriptor(this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n field._actions = this._actions.map(a => a.copy());\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFueS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLW1hbnkuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9ELHFCQUFxQixFQUFzQixNQUFNLGtDQUFrQyxDQUFDO0FBSS9JLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSwrQkFBK0IsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pKLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBV3pELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQXNCLHFCQUE4RSxFQUFFLEVBQUU7SUFDcEosTUFBTSxHQUFHLEdBQStFLEVBQUUsQ0FBQztJQUMzRixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsSUFBSyxxQkFBdUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxRCxxRkFBcUY7WUFDckYsR0FBRyxDQUFDLGtCQUFrQixHQUFHLHFCQUFnRSxDQUFDO1FBQzlGLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLGlCQUFpQixHQUFHLHFCQUFrRCxDQUFDO1FBQy9FLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sK0JBQWtJLFNBQVEsZ0JBS3RKO0lBVUcsWUFDSSxRQUFnQixFQUNoQixtQkFBb0QsRUFDcEQscUJBQXNELEVBQ3RELEdBQTZFO1FBRTdFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVpaLGVBQVUsR0FBa0MsNkJBQTZCLENBQUMsc0JBQXNCLENBQUM7UUFDakcsYUFBUSxHQUEyQyxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqSSw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDaEMsMkJBQXNCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQVMvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFDaEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO1FBRXBELElBQUksR0FBRyxFQUFFLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUM3QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBVyxxQkFBcUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsb0JBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxxQkFBcUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsdUJBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3pDLENBQUM7SUFFTSxVQUFVLENBQUMsRUFBc0Q7UUFDcEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sV0FBVyxDQUFDLFVBQWtELEVBQUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0saUJBQWlCLENBQUMsY0FBZ0MsRUFBRSxhQUErQixFQUFFLGdCQUFnQixHQUFHLElBQUk7UUFDL0csT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBd0IsRUFBRSxhQUF1QixFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVNLHVCQUF1QixDQUFDLGNBQXNCLEVBQUUsYUFBcUIsRUFBRSxnQkFBZ0IsR0FBRyxJQUFJO1FBQ2pHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUNoRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFhLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLElBQUk7UUFDUCxNQUFNLEtBQUssR0FBRyxJQUFJLCtCQUErQixDQUM3QyxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsRUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxFQUNsQztZQUNJLGtCQUFrQixFQUFFLElBQUksQ0FBQyx1QkFBdUI7U0FDbkQsQ0FDSixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDN0QsS0FBSyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztRQUMzRCxLQUFLLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3pELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx5QkFBNkcsU0FBUSxnQkFLakk7SUFPRyxZQUFZLFFBQWdCLEVBQUUsbUJBQStIO1FBQ3pKLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQU5aLGVBQVUsR0FBNEIsdUJBQXVCLENBQUMsWUFBWSxDQUFDO1FBQzNFLGtCQUFhLEdBQXFDLEVBQUUsQ0FBQztRQUM3RCw2SUFBNkk7UUFDckksYUFBUSxHQUFxQyxFQUFFLENBQUM7UUFJcEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdKLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7SUFFTSxlQUFlLENBQUMsTUFBaUM7UUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE9BQW9DO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBaUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLElBQUk7UUFDUCxNQUFNLEtBQUssR0FBRyxJQUFJLHlCQUF5QixDQUF5RCxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RKLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRGF0YVByb3ZpZGVyLCBTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRm5UeXBlLCBUYWJsZURhdGFQcm92aWRlckluc3QsIFRhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL3RhYmxldmlldy9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0sIEZpZWxkTWFueUVkaXRvclR5cGVFbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBsb29rdXBTZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgbG9va3VwRGF0YVByb3ZpZGVyPzogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRNYW55VG9NYW55RWRpdG9yUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcblxuZXhwb3J0IGNvbnN0IGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqID0gPEZpZWxkTW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEZpZWxkTWFueVRvTWFueUVkaXRvclByb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPikgPT4ge1xuICAgIGNvbnN0IGNmZzogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcubG9va3VwRGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNmZy5sb29rdXBTZXJ2aWNlVHlwZSA9IHNlcnZpY2VPckRhdGFQcm92aWRlciBhcyBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjZmc7XG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSA9IGFueSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWxbXSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkRGVzY3JpcHRvcjxcbiAgICBGaWVsZE1vZGVsLFxuICAgIEVkaXRvck1vZGVsLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWxcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD47IC8vIHRhYmxlIGRlc2NyaXB0b3IgZm9yIG1haW4gdGFibGUgY29tcG9uZW50XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+OyAvLyB0YWJsZSBkZXNjcmlwdG9yIGZvciB3aGVyZSBzZWxlY3Qgd2lsbCBiZSBhcHBsaWVkXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55VG9NYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nVGFibGVNdWx0aXNlbGVjdDtcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtPiA9IFtGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLkFkZCwgRmllbGRNYW55VG9NYW55RWRpdG9yQWN0aW9uRW51bS5EZWxldGVdO1xuICAgIHByaXZhdGUgX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSAnJztcbiAgICBwcml2YXRlIF9leGNsdWRlVmFsdWVQcm9wZXJ0eSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPixcbiAgICAgICAgY2ZnPzogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8RmllbGRNb2RlbCwgU2VydmljZT5cbiAgICApIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9tYWluVGFibGVEZXNjcmlwdG9yID0gbWFpblRhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yID0gbG9va3VwVGFibGVEZXNjcmlwdG9yO1xuXG4gICAgICAgIGlmIChjZmc/Lmxvb2t1cERhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIgPSBjZmcubG9va3VwRGF0YVByb3ZpZGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIgPSBuZXcgVGFibGVEYXRhUHJvdmlkZXJJbnN0KGNmZz8ubG9va3VwU2VydmljZVR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhjbHVkZUZpbHRlclByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhjbHVkZUZpbHRlclByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXhjbHVkZVZhbHVlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGNsdWRlVmFsdWVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1haW5UYWJsZURlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYWluVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVGFibGVEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVGFibGVEYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb29rdXBUYWJsZURhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cChmbjogVGFibGVEYXRhUHJvdmlkZXJHZXRBbGxGblR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIud2l0aEdldEFsbChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWN0aW9ucyhhY3Rpb25zOiBBcnJheTxGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtPiA9IFtdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKC4uLmFjdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cEV4Y2x1ZGUoZmlsdGVyUHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwsIHZhbHVlUHJvcGVydHk6IGtleW9mIEZpZWxkTW9kZWwsIGhhc0xvb2t1cEV4Y2x1ZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhMb29rdXBFeGNsdWRlVW5zYWZlKGZpbHRlclByb3BlcnR5IGFzIHN0cmluZywgdmFsdWVQcm9wZXJ0eSBhcyBzdHJpbmcsIGhhc0xvb2t1cEV4Y2x1ZGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwRXhjbHVkZVVuc2FmZShmaWx0ZXJQcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZVByb3BlcnR5OiBzdHJpbmcsIGhhc0xvb2t1cEV4Y2x1ZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMgPSBoYXNMb29rdXBFeGNsdWRlO1xuICAgICAgICB0aGlzLl9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSBmaWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHkgPSB2YWx1ZVByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4oXG4gICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eSxcbiAgICAgICAgICAgIHRoaXMuX21haW5UYWJsZURlc2NyaXB0b3IuY29weSgpLFxuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yLmNvcHkoKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IHRoaXMubG9va3VwVGFibGVEYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMubWFwKGEgPT4gYSk7XG4gICAgICAgIGZpZWxkLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzID0gdGhpcy5faGFzTG9va3VwRXhjbHVkZVZhbHVlcztcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eSA9IHRoaXMuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5ID0gdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nRWRpdG9yO1xuICAgIHByaXZhdGUgX2ZpZWxkQWN0aW9uczogQXJyYXk8RmllbGRNYW55RWRpdG9yQWN0aW9uRW51bT4gPSBbXTtcbiAgICAvLyB3ZSBhbGxvdyBhbnkgYWN0aW9uIChpdGVtIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2FtZSBnb2VzIGZvciBvdGhlciBnZW5lcmljcykuIERldmVsb3BlciBzaG91bGQgZGVmaW5lIHR5cGVzIGRlcGVuZGluZyBvbiBhY3Rpb24ncyBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPikge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IgPSB0YWJsZXZpZXdEZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9maWVsZEFjdGlvbnMucHVzaChGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLlZpZXcsIEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uQWRkLCBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkVkaXQsIEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uRGVsZXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkQWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3RGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZURlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLnRhYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yRm9yQ3JlYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5hZGRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JGb3JSZWFkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yRm9yVXBkYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5lZGl0RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRBY3Rpb24oYWN0aW9uOiBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRBY3Rpb25zKGFjdGlvbnM6IEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW1bXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZEFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFjdGlvbihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5jb3B5KCkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhmaWVsZCk7XG4gICAgICAgIGZpZWxkLl9maWVsZFR5cGUgPSB0aGlzLl9maWVsZFR5cGU7XG4gICAgICAgIGZpZWxkLl9maWVsZEFjdGlvbnMgPSB0aGlzLl9maWVsZEFjdGlvbnMubWFwKGEgPT4gYSk7XG4gICAgICAgIGZpZWxkLl9hY3Rpb25zID0gdGhpcy5fYWN0aW9ucy5tYXAoYSA9PiBhLmNvcHkoKSk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=","import { fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray } from '@mediusinc/mng-commons/core';\nimport { FieldInputTypeEnum } from '../models/field.model';\nimport { AFieldDescriptor } from './field-base.descriptor';\nexport class FieldInputDescriptor extends AFieldDescriptor {\n constructor(property) {\n super(property);\n this._fieldType = FieldInputTypeEnum.Text;\n this._numberUseGrouping = true;\n this._currencyDisplay = 'symbol';\n // radio specific properties\n this._radioOptions = [];\n }\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n asType(fieldType, ...args) {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(args[0]);\n case FieldInputTypeEnum.Number:\n return this.asNumber(args[0]);\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(args[0]);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(args[0]);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0]);\n case FieldInputTypeEnum.File:\n return this.asFile(args[0]);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile(args[0]);\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl(args[0]);\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0], args[1]);\n case FieldInputTypeEnum.Text:\n return this.asText(args[0]);\n }\n }\n get fieldType() {\n return this._fieldType;\n }\n get rows() {\n return this._rows;\n }\n get numberMin() {\n return this._numberMin;\n }\n get numberMax() {\n return this._numberMax;\n }\n get numberStep() {\n return this._numberStep;\n }\n get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n get numberPrefix() {\n return this._numberPrefix;\n }\n get numberSuffix() {\n return this._numberSuffix;\n }\n get radioOptions() {\n return this._radioOptions;\n }\n get radioLabelClassName() {\n return this._radioLabelClassName;\n }\n get datePickerFormat() {\n return this._datePickerFormat;\n }\n get datePickerMin() {\n return this._datePickerMin;\n }\n get datePickerMax() {\n return this._datePickerMax;\n }\n get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n get datePickerValueUtc() {\n return this._datePickerValueUtc;\n }\n get datePickerValueNoTimezone() {\n return this._datePickerValueNoTimezone;\n }\n get datePickerValueNoTime() {\n return this._datePickerValueNoTime;\n }\n get datePickerValueAsDateObj() {\n return this._datePickerValueAsDateObj;\n }\n get maxLength() {\n return this._maxLength;\n }\n get minLength() {\n return this._minLength;\n }\n get pattern() {\n return this._pattern;\n }\n get textTrim() {\n return this._textTrim;\n }\n get emptyValue() {\n return this._emptyValue;\n }\n get validationEmail() {\n return this._validationEmail;\n }\n get mask() {\n return this._mask;\n }\n get slotChar() {\n return this._slotChar;\n }\n get fileMultiple() {\n return this._fileMultiple;\n }\n get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n get fileAccept() {\n return this._fileAccept;\n }\n get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n get imagePreview() {\n return this._imagePreview;\n }\n get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n get imagePreviewAllowSvg() {\n return this._imagePreviewAllowSvg;\n }\n get imagePreviewComponent() {\n return this._imagePreviewComponent;\n }\n get customComponentType() {\n return this._customComponentType;\n }\n get customComponentInputs() {\n return this._customComponentInputs;\n }\n get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n get locale() {\n return this._locale;\n }\n get currency() {\n return this._currency;\n }\n get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n get currencyDisplay() {\n return this._currencyDisplay;\n }\n asHidden() {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n asLabel() {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n asText(opts) {\n this._fieldType = FieldInputTypeEnum.Text;\n return this.withTextValidation(opts)\n .withTextValidationEmail(opts?.email ?? false)\n .withTextCommonOpts(opts)\n .withInputCommonOpts(opts);\n }\n asTextarea(opts) {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = opts?.rows;\n return this.withTextValidation(opts).withTextCommonOpts(opts).withInputCommonOpts(opts);\n }\n asNumber(opts) {\n this._fieldType = FieldInputTypeEnum.Number;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions(opts)\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withNumberDisplay(opts)\n .withInputCommonOpts(opts);\n }\n asCurrency(opts) {\n return this.asCurrencyUnsafe({\n ...opts,\n currencyProperty: opts?.currencyProperty ? opts.currencyProperty : undefined\n }).withInputCommonOpts(opts);\n }\n asCurrencyUnsafe(opts) {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = opts?.currencyProperty;\n this._currency = opts?.currency ?? this._currency;\n this._currencyDisplay = opts?.currencyDisplay ?? this._currencyDisplay;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions({\n maxFractionDigits: opts?.maxFractionDigits ?? 2,\n minFractionDigits: opts?.minFractionDigits ?? 2\n })\n .withNumberValidation(opts)\n .withLocale(opts?.locale)\n .withInputCommonOpts(opts);\n }\n asSwitch() {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n asRadio(options, optionsTitlePath) {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => ({ value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}` }));\n return this;\n }\n asRadioFromEnum(enumModel, values) {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = Array.isArray(values)\n ? fromEnumValuesAsValueArray(enumModel.type, values, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined)\n : fromEnumConstantsAsValueArray(enumModel.type, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined);\n return this;\n }\n asDatePicker(opts) {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n return this.withDateValidation(opts).withDatePickerDisplay(opts).withDateValue({\n asDateObj: opts?.asDateObj,\n utc: opts?.utc,\n noTimeZone: opts?.noTimeZone,\n noTime: opts?.noTime\n });\n }\n asMask(opts) {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = opts?.mask;\n this._slotChar = opts?.slotChar;\n return this.withInputCommonOpts(opts);\n }\n asFile(opts) {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = opts?.multiple;\n this._fileMaxFileSize = opts?.maxFileSize;\n this._fileAccept = opts?.accept;\n return this.withFileOnSelectHandler(opts?.onFileSelectHandlerFn);\n }\n asImageFile(opts) {\n this.asFile(opts);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n return this;\n }\n asImageUrl(opts) {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = opts?.multiple;\n this._imagePreview = opts?.preview;\n this._imagePreviewAllowSvg = opts?.previewAllowSvg;\n this._imagePreviewComponent = opts?.previewComponent;\n this._imageUrlInputHiddenOnDisabled = opts?.inputVisibleOnDisabled;\n return this;\n }\n asCustomComponent(component, opts) {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentType = component;\n this._customComponentInputs = opts?.inputs;\n this._customComponentWrappers = opts?.fieldWrappers;\n return this;\n }\n withNumberValidation(opts) {\n this._numberStep = opts?.step;\n this._numberAutoCorrect = opts?.autoCorrect;\n this._numberMin = opts?.min;\n this._numberMax = opts?.max;\n return this;\n }\n withLocale(locale) {\n this._locale = locale;\n return this;\n }\n withNumberFractions(opts) {\n this._numberMinFractionDigits = opts?.minFractionDigits;\n this._numberMaxFractionDigits = opts?.maxFractionDigits;\n return this;\n }\n withNumberGrouping(useGrouping = true) {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n withNumberDisplay(opts) {\n this._numberPrefix = opts?.prefix;\n this._numberSuffix = opts?.suffix;\n return this;\n }\n withTextareaRows(rows) {\n this._rows = rows;\n return this;\n }\n withTextValidation(opts) {\n this._minLength = opts?.minLength;\n this._maxLength = opts?.maxLength;\n this._pattern = opts?.pattern;\n return this;\n }\n /**\n * Common options for text input element (i.e. value value trimming).\n * @param opts\n */\n withTextCommonOpts(opts) {\n this._textTrim = opts?.trim;\n return this;\n }\n /**\n * Common options for input element (i.e. value on empty input).\n * @param opts\n */\n withInputCommonOpts(opts) {\n this._emptyValue = opts?.emptyValue;\n return this;\n }\n withDatePickerDisplay(opts) {\n this._datePickerFormat = opts?.format;\n this._datePickerShowTime = opts?.showTime;\n this._datePickerShowSeconds = opts?.showSeconds;\n return this;\n }\n withDateValidation(opts) {\n this._datePickerMin = opts?.min;\n this._datePickerMax = opts?.max;\n return this;\n }\n withRadioOptions(opts) {\n this._radioLabelClassName = opts.labelClassName;\n return this;\n }\n withDateValue(opts) {\n this._datePickerValueAsDateObj = opts?.asDateObj;\n this._datePickerValueUtc = opts?.utc;\n this._datePickerValueNoTimezone = opts?.noTimeZone;\n this._datePickerValueNoTime = opts?.noTime;\n return this;\n }\n withTextValidationEmail(email = true) {\n this._validationEmail = email;\n return this;\n }\n withFileOnSelectHandler(fn) {\n this._fileOnSelectHandler = fn;\n return this;\n }\n copy() {\n const field = new FieldInputDescriptor(this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._numberPrefix = this._numberPrefix;\n field._numberSuffix = this._numberSuffix;\n field._radioOptions = [...this._radioOptions];\n field._radioLabelClassName = this._radioLabelClassName;\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._datePickerValueUtc = this._datePickerValueUtc;\n field._datePickerValueNoTimezone = this._datePickerValueNoTimezone;\n field._datePickerValueNoTime = this._datePickerValueNoTime;\n field._datePickerValueAsDateObj = this._datePickerValueAsDateObj;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._imagePreviewAllowSvg = this._imagePreviewAllowSvg;\n field._imagePreviewComponent = this._imagePreviewComponent;\n field._customComponentType = this._customComponentType;\n field._customComponentInputs = this._customComponentInputs;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n field._textTrim = this._textTrim;\n field._emptyValue = this._emptyValue;\n field._validationEmail = this._validationEmail;\n return field;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBbUIsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUt4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUl6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQWdJekQsTUFBTSxPQUFPLG9CQUFpSSxTQUFRLGdCQUtySjtJQXFFRyxZQUFZLFFBQWdCO1FBQ3hCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQXJFWixlQUFVLEdBQXVCLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQVl6RCx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFPMUIscUJBQWdCLEdBQStCLFFBQVEsQ0FBQztRQUdoRSw0QkFBNEI7UUFDcEIsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO0lBK0M5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUE2QixFQUFFLEdBQUcsSUFBVztRQUN2RCxRQUFRLFNBQVMsRUFBRSxDQUFDO1lBQ2hCLEtBQUssa0JBQWtCLENBQUMsTUFBTTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLO2dCQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixLQUFLLGtCQUFrQixDQUFDLFFBQVE7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEs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QUksQ0FBQyxzQkFBc0IsQ0FBQztRQUMzRCxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDM0QsS0FBSyxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsS0FBSyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUN6RCxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SXRlbU9yT2JzZXJ2YWJsZSwgZnJvbUVudW1Db25zdGFudHNBc1ZhbHVlQXJyYXksIGZyb21FbnVtVmFsdWVzQXNWYWx1ZUFycmF5fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtFbXB0eVZhbHVlVHlwZSwgSW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtGaWVsZEltYWdlUHJldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWltYWdlLXByZXZpZXcubW9kZWwnO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5pbXBvcnQge0FGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1jdXN0b20tZmllbGQubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uL21vZGVscy9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtSYWRpb1ZhbHVlfSBmcm9tICcuLi9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWJhc2UuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSA9IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBGaWxlIHwgRmlsZVtdO1xuXG50eXBlIEZpZWxkSW5wdXRPcHRzVHlwZSA9IHtcbiAgICBlbXB0eVZhbHVlPzogRW1wdHlWYWx1ZVR5cGU7XG59O1xuXG50eXBlIEZpZWxkSW5wdVRleHRCYXNlT3B0c1R5cGUgPSB7XG4gICAgdHJpbT86IElucHV0VHJpbVR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0VGV4dE9wdHNUeXBlID0ge1xuICAgIGVtYWlsPzogYm9vbGVhbjtcbn0gJiBGaWVsZElucHV0VGV4dFZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1VGV4dEJhc2VPcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE9wdHNUeXBlO1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0VGV4dGFyZWFPcHRzVHlwZSA9IHtcbiAgICByb3dzPzogbnVtYmVyO1xufSAmIEZpZWxkSW5wdXRUZXh0VmFsaWRhdGlvbk9wdHNUeXBlICZcbiAgICBGaWVsZElucHVUZXh0QmFzZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRNYXNrT3B0c1R5cGUgPSB7XG4gICAgbWFzazogc3RyaW5nO1xuICAgIHNsb3RDaGFyPzogc3RyaW5nO1xufSAmIEZpZWxkSW5wdXRPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcbiAgICBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dERhdGVQaWNrZXJEaXNwbGF5T3B0c1R5cGUgPSB7XG4gICAgZm9ybWF0Pzogc3RyaW5nO1xuICAgIHNob3dUaW1lPzogYm9vbGVhbjtcbiAgICBzaG93U2Vjb25kcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ID0ge1xuICAgIG1pbj86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBtYXg/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0Q3VycmVuY3lPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7XG4gICAgY3VycmVuY3lQcm9wZXJ0eT86IFByb3BlcnR5O1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIGN1cnJlbmN5RGlzcGxheT86ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnO1xufSAmIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlclZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJPcHRzVHlwZSA9IEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dE51bWJlclZhbGlkYXRpb25PcHRzVHlwZSAmXG4gICAgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0TnVtYmVyRGlzcGxheU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0T3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJHcm91cGluZ09wdHNUeXBlID0ge1xuICAgIGdyb3VwU2VwYXJhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJWYWxpZGF0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluPzogbnVtYmVyO1xuICAgIG1heD86IG51bWJlcjtcbiAgICBzdGVwPzogbnVtYmVyO1xuICAgIGF1dG9Db3JyZWN0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlID0ge1xuICAgIG1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dExvY2FsZU9wdHNUeXBlID0ge1xuICAgIGxvY2FsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXROdW1iZXJEaXNwbGF5T3B0c1R5cGUgPSB7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXREYXRlUGlja2VyT3B0c1R5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiA9IEZpZWxkSW5wdXREYXRlUGlja2VyRGlzcGxheU9wdHNUeXBlICZcbiAgICBGaWVsZElucHV0RGF0ZVZhbGlkYXRpb25PcHRzVHlwZTxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ICZcbiAgICBGaWVsZERhdGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgRmllbGREYXRlT3B0c1R5cGUgPSB7XG4gICAgYXNEYXRlT2JqPzogYm9vbGVhbjtcbiAgICB1dGM/OiBib29sZWFuO1xuICAgIG5vVGltZT86IGJvb2xlYW47XG4gICAgbm9UaW1lWm9uZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RmlsZU9wdHMgPSB7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAgIGFjY2VwdD86IHN0cmluZztcbiAgICBvbkZpbGVTZWxlY3RIYW5kbGVyRm4/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZTtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgICBwcmV2aWV3QWxsb3dTdmc/OiBib29sZWFuO1xuICAgIHByZXZpZXdDb21wb25lbnQ/OiBUeXBlPEZpZWxkSW1hZ2VQcmV2aWV3Q29tcG9uZW50Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkSW5wdXRJbWFnZVVybE9wdHMgPSB7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICAgIGlucHV0VmlzaWJsZU9uRGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZpZXdBbGxvd1N2Zz86IGJvb2xlYW47XG4gICAgcHJldmlld0NvbXBvbmVudD86IFR5cGU8RmllbGRJbWFnZVByZXZpZXdDb21wb25lbnQ+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRJbnB1dENvbXBvbmVudE9wdHMgPSB7XG4gICAgZmllbGRXcmFwcGVycz86IHN0cmluZ1tdO1xuICAgIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZSA9IChmaWxlOiBGaWxlW10gfCBudWxsLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPiA9IChcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VmFsdWU+LFxuICAgIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPlxuKSA9PiBJdGVtT3JPYnNlcnZhYmxlPERhdGUgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY2xhc3MgRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBGaWVsZElucHV0RGVzY3JpcHRvclR5cGUsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSBfZmllbGRUeXBlOiBGaWVsZElucHV0VHlwZUVudW0gPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dDtcblxuICAgIC8vIHRleHRhcmVhIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9yb3dzPzogbnVtYmVyO1xuXG4gICAgLy8gbnVtYmVyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9udW1iZXJNaW4/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyTWF4PzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlclN0ZXA/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfbnVtYmVyQXV0b0NvcnJlY3Q/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX251bWJlck1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlck1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX251bWJlclVzZUdyb3VwaW5nID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9sb2NhbGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbnVtYmVyUHJlZml4Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX251bWJlclN1ZmZpeD86IHN0cmluZztcblxuICAgIC8vIGN1cnJlbmN5IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9jdXJyZW5jeT86IHN0cmluZztcbiAgICBwcml2YXRlIF9jdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnID0gJ3N5bWJvbCc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lGcm9tUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICAvLyByYWRpbyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfcmFkaW9PcHRpb25zOiBBcnJheTxSYWRpb1ZhbHVlPiA9IFtdO1xuICAgIHByaXZhdGUgX3JhZGlvTGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICAvLyBkYXRlcGlja2VyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyRm9ybWF0Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJNaW4/OiBEYXRlIHwgRmllbGRJbnB1dERhdGVQaWNrZXJEeW5hbWljTWluTWF4Rm5UeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlck1heD86IERhdGUgfCBGaWVsZElucHV0RGF0ZVBpY2tlckR5bmFtaWNNaW5NYXhGblR5cGU8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyU2hvd1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJTaG93U2Vjb25kcz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlclZhbHVlVXRjPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kYXRlUGlja2VyVmFsdWVOb1RpbWU/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaj86IGJvb2xlYW47XG5cbiAgICAvLyBpbnB1dCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX21pbkxlbmd0aD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9wYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xuICAgIHByaXZhdGUgX3ZhbGlkYXRpb25FbWFpbD86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfdGV4dFRyaW0/OiBJbnB1dFRyaW1UeXBlO1xuXG4gICAgLy8gbWFzayBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJpdmF0ZSBfbWFzaz86IHN0cmluZztcbiAgICBwcml2YXRlIF9zbG90Q2hhcj86IHN0cmluZztcblxuICAgIC8vIGZpbGUgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2ZpbGVNdWx0aXBsZT86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZmlsZU1heEZpbGVTaXplPzogbnVtYmVyO1xuICAgIHByaXZhdGUgX2ZpbGVBY2NlcHQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZmlsZU9uU2VsZWN0SGFuZGxlcj86IEZpZWxkSW5wdXRGaWxlT25TZWxlY3RIYW5kbGVyRm5UeXBlO1xuXG4gICAgLy8gaW1hZ2Ugc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2ltYWdlUHJldmlldz86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfaW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2ltYWdlUHJldmlld0FsbG93U3ZnPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9pbWFnZVByZXZpZXdDb21wb25lbnQ/OiBUeXBlPEZpZWxkSW1hZ2VQcmV2aWV3Q29tcG9uZW50PjtcblxuICAgIC8vIGN1c3RvbSBjb21wb25lbnQgcHJvcGVydGllc1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFR5cGU/OiBUeXBlPEFGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudDxGaWVsZFZhbHVlLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+PjtcbiAgICBwcml2YXRlIF9jdXN0b21Db21wb25lbnRJbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzPzogc3RyaW5nW107XG5cbiAgICAvLyB2YWx1ZSBjb250cm9sXG4gICAgcHJpdmF0ZSBfZW1wdHlWYWx1ZT86IEVtcHR5VmFsdWVUeXBlO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydHMgZmllbGQgdG8gZ2l2ZW4gdHlwZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZSBmaWVsZCB0eXBlIGVudW1cbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGZpZWxkIChvcHRpb25hbClcbiAgICAgKi9cbiAgICBwdWJsaWMgYXNUeXBlKGZpZWxkVHlwZTogRmllbGRJbnB1dFR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSGlkZGVuKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5MYWJlbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0xhYmVsKCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1RleHRhcmVhKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzTnVtYmVyKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXJyZW5jeShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc1N3aXRjaCgpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNSYWRpbyhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNEYXRlUGlja2VyKGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTWFzazpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc01hc2soYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzRmlsZShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlRmlsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0ltYWdlRmlsZShhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzSW1hZ2VVcmwoYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXN0b21Db21wb25lbnQoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzVGV4dChhcmdzWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJTdGVwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlckF1dG9Db3JyZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJNaW5GcmFjdGlvbkRpZ2l0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlclVzZUdyb3VwaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJQcmVmaXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJQcmVmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJTdWZmaXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJTdWZmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRpb09wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb09wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWRpb0xhYmVsQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFkaW9MYWJlbENsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlck1pbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJNaW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyTWF4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlck1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93VGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJTaG93U2Vjb25kcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJTaG93U2Vjb25kcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZVV0YygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlTm9UaW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWF4TGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4TGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWluTGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluTGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0dGVybigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZXh0VHJpbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRUcmltO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW1wdHlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VtcHR5VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uRW1haWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRW1haWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXNrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzaztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNsb3RDaGFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2xvdENoYXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlTXVsdGlwbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTXVsdGlwbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlTWF4RmlsZVNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTWF4RmlsZVNpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlQWNjZXB0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUFjY2VwdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVPblNlbGVjdEhhbmRsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VQcmV2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VQcmV2aWV3O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VVcmxJbnB1dFZpc2libGVPbkRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VVcmxJbnB1dEhpZGRlbk9uRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbWFnZVByZXZpZXdBbGxvd1N2ZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlUHJldmlld0FsbG93U3ZnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1hZ2VQcmV2aWV3Q29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VQcmV2aWV3Q29tcG9uZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRJbnB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRXcmFwcGVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RnJvbVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSGlkZGVuKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNMYWJlbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNUZXh0KG9wdHM/OiBGaWVsZElucHV0VGV4dE9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cylcbiAgICAgICAgICAgIC53aXRoVGV4dFZhbGlkYXRpb25FbWFpbChvcHRzPy5lbWFpbCA/PyBmYWxzZSlcbiAgICAgICAgICAgIC53aXRoVGV4dENvbW1vbk9wdHMob3B0cylcbiAgICAgICAgICAgIC53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1RleHRhcmVhKG9wdHM/OiBGaWVsZElucHV0VGV4dGFyZWFPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uVGV4dGFyZWE7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBvcHRzPy5yb3dzO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVGV4dFZhbGlkYXRpb24ob3B0cykud2l0aFRleHRDb21tb25PcHRzKG9wdHMpLndpdGhJbnB1dENvbW1vbk9wdHMob3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTnVtYmVyKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE51bWJlckdyb3VwaW5nKG9wdHM/Lmdyb3VwU2VwYXJhdG9yID8/IGZhbHNlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJGcmFjdGlvbnMob3B0cylcbiAgICAgICAgICAgIC53aXRoTnVtYmVyVmFsaWRhdGlvbihvcHRzKVxuICAgICAgICAgICAgLndpdGhMb2NhbGUob3B0cz8ubG9jYWxlKVxuICAgICAgICAgICAgLndpdGhOdW1iZXJEaXNwbGF5KG9wdHMpXG4gICAgICAgICAgICAud2l0aElucHV0Q29tbW9uT3B0cyhvcHRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXJyZW5jeShvcHRzPzogRmllbGRJbnB1dEN1cnJlbmN5T3B0c1R5cGU8a2V5b2YgRWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzQ3VycmVuY3lVbnNhZmUoPEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlPntcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBjdXJyZW5jeVByb3BlcnR5OiBvcHRzPy5jdXJyZW5jeVByb3BlcnR5ID8gKG9wdHMuY3VycmVuY3lQcm9wZXJ0eSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkXG4gICAgICAgIH0pLndpdGhJbnB1dENvbW1vbk9wdHMob3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3lVbnNhZmUob3B0cz86IEZpZWxkSW5wdXRDdXJyZW5jeU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5DdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSBvcHRzPy5jdXJyZW5jeVByb3BlcnR5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeSA9IG9wdHM/LmN1cnJlbmN5ID8/IHRoaXMuX2N1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeURpc3BsYXkgPSBvcHRzPy5jdXJyZW5jeURpc3BsYXkgPz8gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoTnVtYmVyR3JvdXBpbmcob3B0cz8uZ3JvdXBTZXBhcmF0b3IgPz8gZmFsc2UpXG4gICAgICAgICAgICAud2l0aE51bWJlckZyYWN0aW9ucyh7XG4gICAgICAgICAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHM6IG9wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IDIsXG4gICAgICAgICAgICAgICAgbWluRnJhY3Rpb25EaWdpdHM6IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDJcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aE51bWJlclZhbGlkYXRpb24ob3B0cylcbiAgICAgICAgICAgIC53aXRoTG9jYWxlKG9wdHM/LmxvY2FsZSlcbiAgICAgICAgICAgIC53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc1N3aXRjaCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW8ob3B0aW9uczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4sIG9wdGlvbnNUaXRsZVBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlJhZGlvO1xuICAgICAgICB0aGlzLl9yYWRpb09wdGlvbnMgPSBvcHRpb25zLm1hcChvID0+IDxSYWRpb1ZhbHVlPnt2YWx1ZTogbywgdGl0bGU6IGAke29wdGlvbnNUaXRsZVBhdGggPyBgJHtvcHRpb25zVGl0bGVQYXRofS5gIDogJyd9JHtvfWB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzUmFkaW9Gcm9tRW51bTxFbnVtPihlbnVtTW9kZWw6IEVudW1EZXNjcmlwdG9yPEVudW0+LCB2YWx1ZXM/OiBBcnJheTxFbnVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW87XG4gICAgICAgIHRoaXMuX3JhZGlvT3B0aW9ucyA9IEFycmF5LmlzQXJyYXkodmFsdWVzKVxuICAgICAgICAgICAgPyBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheTxFbnVtPihlbnVtTW9kZWwudHlwZSwgdmFsdWVzLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IGZyb21FbnVtQ29uc3RhbnRzQXNWYWx1ZUFycmF5KGVudW1Nb2RlbC50eXBlLCBlbnVtTW9kZWwubmFtZUFzVmFsdWUsIGVudW1Nb2RlbC5pMThuQmFzZUtleSA/PyB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNEYXRlUGlja2VyKG9wdHM/OiBGaWVsZElucHV0RGF0ZVBpY2tlck9wdHNUeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhEYXRlVmFsaWRhdGlvbihvcHRzKS53aXRoRGF0ZVBpY2tlckRpc3BsYXkob3B0cykud2l0aERhdGVWYWx1ZSh7XG4gICAgICAgICAgICBhc0RhdGVPYmo6IG9wdHM/LmFzRGF0ZU9iaixcbiAgICAgICAgICAgIHV0Yzogb3B0cz8udXRjLFxuICAgICAgICAgICAgbm9UaW1lWm9uZTogb3B0cz8ubm9UaW1lWm9uZSxcbiAgICAgICAgICAgIG5vVGltZTogb3B0cz8ubm9UaW1lXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc01hc2sob3B0cz86IEZpZWxkSW5wdXRNYXNrT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLk1hc2s7XG4gICAgICAgIHRoaXMuX21hc2sgPSBvcHRzPy5tYXNrO1xuICAgICAgICB0aGlzLl9zbG90Q2hhciA9IG9wdHM/LnNsb3RDaGFyO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoSW5wdXRDb21tb25PcHRzKG9wdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ZpbGUob3B0cz86IEZpZWxkSW5wdXRGaWxlT3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uRmlsZTtcbiAgICAgICAgdGhpcy5fZmlsZU11bHRpcGxlID0gb3B0cz8ubXVsdGlwbGU7XG4gICAgICAgIHRoaXMuX2ZpbGVNYXhGaWxlU2l6ZSA9IG9wdHM/Lm1heEZpbGVTaXplO1xuICAgICAgICB0aGlzLl9maWxlQWNjZXB0ID0gb3B0cz8uYWNjZXB0O1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoRmlsZU9uU2VsZWN0SGFuZGxlcihvcHRzPy5vbkZpbGVTZWxlY3RIYW5kbGVyRm4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ltYWdlRmlsZShvcHRzPzogRmllbGRJbnB1dEZpbGVPcHRzKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYXNGaWxlKG9wdHMpO1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VGaWxlO1xuICAgICAgICB0aGlzLl9pbWFnZVByZXZpZXcgPSBvcHRzPy5wcmV2aWV3O1xuICAgICAgICB0aGlzLl9pbWFnZVByZXZpZXdBbGxvd1N2ZyA9IG9wdHM/LnByZXZpZXdBbGxvd1N2ZztcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3Q29tcG9uZW50ID0gb3B0cz8ucHJldmlld0NvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzSW1hZ2VVcmwob3B0cz86IEZpZWxkSW5wdXRJbWFnZVVybE9wdHMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsO1xuICAgICAgICB0aGlzLl9maWxlTXVsdGlwbGUgPSBvcHRzPy5tdWx0aXBsZTtcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3ID0gb3B0cz8ucHJldmlldztcbiAgICAgICAgdGhpcy5faW1hZ2VQcmV2aWV3QWxsb3dTdmcgPSBvcHRzPy5wcmV2aWV3QWxsb3dTdmc7XG4gICAgICAgIHRoaXMuX2ltYWdlUHJldmlld0NvbXBvbmVudCA9IG9wdHM/LnByZXZpZXdDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkID0gb3B0cz8uaW5wdXRWaXNpYmxlT25EaXNhYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8RmllbGRWYWx1ZSwgRWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4sIG9wdHM/OiBGaWVsZElucHV0Q29tcG9uZW50T3B0cyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBGaWVsZElucHV0VHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLl9jdXN0b21Db21wb25lbnRJbnB1dHMgPSBvcHRzPy5pbnB1dHM7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFdyYXBwZXJzID0gb3B0cz8uZmllbGRXcmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJWYWxpZGF0aW9uKG9wdHM/OiBGaWVsZElucHV0TnVtYmVyVmFsaWRhdGlvbk9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclN0ZXAgPSBvcHRzPy5zdGVwO1xuICAgICAgICB0aGlzLl9udW1iZXJBdXRvQ29ycmVjdCA9IG9wdHM/LmF1dG9Db3JyZWN0O1xuICAgICAgICB0aGlzLl9udW1iZXJNaW4gPSBvcHRzPy5taW47XG4gICAgICAgIHRoaXMuX251bWJlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb2NhbGUobG9jYWxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJGcmFjdGlvbnMob3B0cz86IEZpZWxkSW5wdXROdW1iZXJGcmFjdGlvbk9wdHNUeXBlKSB7XG4gICAgICAgIHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWluRnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyR3JvdXBpbmcodXNlR3JvdXBpbmcgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX251bWJlclVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTnVtYmVyRGlzcGxheShvcHRzPzogRmllbGRJbnB1dE51bWJlckRpc3BsYXlPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9udW1iZXJQcmVmaXggPSBvcHRzPy5wcmVmaXg7XG4gICAgICAgIHRoaXMuX251bWJlclN1ZmZpeCA9IG9wdHM/LnN1ZmZpeDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZXh0YXJlYVJvd3Mocm93cz86IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9yb3dzID0gcm93cztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZXh0VmFsaWRhdGlvbihvcHRzPzogRmllbGRJbnB1dFRleHRWYWxpZGF0aW9uT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbWluTGVuZ3RoID0gb3B0cz8ubWluTGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXhMZW5ndGggPSBvcHRzPy5tYXhMZW5ndGg7XG4gICAgICAgIHRoaXMuX3BhdHRlcm4gPSBvcHRzPy5wYXR0ZXJuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tb24gb3B0aW9ucyBmb3IgdGV4dCBpbnB1dCBlbGVtZW50IChpLmUuIHZhbHVlIHZhbHVlIHRyaW1taW5nKS5cbiAgICAgKiBAcGFyYW0gb3B0c1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVGV4dENvbW1vbk9wdHMob3B0cz86IEZpZWxkSW5wdVRleHRCYXNlT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGV4dFRyaW0gPSBvcHRzPy50cmltO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tb24gb3B0aW9ucyBmb3IgaW5wdXQgZWxlbWVudCAoaS5lLiB2YWx1ZSBvbiBlbXB0eSBpbnB1dCkuXG4gICAgICogQHBhcmFtIG9wdHNcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aElucHV0Q29tbW9uT3B0cyhvcHRzPzogRmllbGRJbnB1dE9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VtcHR5VmFsdWUgPSBvcHRzPy5lbXB0eVZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGVQaWNrZXJEaXNwbGF5KG9wdHM/OiBGaWVsZElucHV0RGF0ZVBpY2tlckRpc3BsYXlPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyRm9ybWF0ID0gb3B0cz8uZm9ybWF0O1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWUgPSBvcHRzPy5zaG93VGltZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclNob3dTZWNvbmRzID0gb3B0cz8uc2hvd1NlY29uZHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGF0ZVZhbGlkYXRpb24ob3B0cz86IEZpZWxkSW5wdXREYXRlVmFsaWRhdGlvbk9wdHNUeXBlPEZpZWxkVmFsdWUsIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlck1pbiA9IG9wdHM/Lm1pbjtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlck1heCA9IG9wdHM/Lm1heDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSYWRpb09wdGlvbnMob3B0czoge2xhYmVsQ2xhc3NOYW1lPzogc3RyaW5nfSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9yYWRpb0xhYmVsQ2xhc3NOYW1lID0gb3B0cy5sYWJlbENsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRlVmFsdWUob3B0cz86IEZpZWxkRGF0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZUFzRGF0ZU9iaiA9IG9wdHM/LmFzRGF0ZU9iajtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlVXRjID0gb3B0cz8udXRjO1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lID0gb3B0cz8ubm9UaW1lWm9uZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lID0gb3B0cz8ubm9UaW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRleHRWYWxpZGF0aW9uRW1haWwoZW1haWwgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRpb25FbWFpbCA9IGVtYWlsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbGVPblNlbGVjdEhhbmRsZXIoZm4/OiBGaWVsZElucHV0RmlsZU9uU2VsZWN0SGFuZGxlckZuVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWxlT25TZWxlY3RIYW5kbGVyID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZElucHV0RGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fcm93cyA9IHRoaXMuX3Jvd3M7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW4gPSB0aGlzLl9udW1iZXJNaW47XG4gICAgICAgIGZpZWxkLl9udW1iZXJNYXggPSB0aGlzLl9udW1iZXJNYXg7XG4gICAgICAgIGZpZWxkLl9udW1iZXJTdGVwID0gdGhpcy5fbnVtYmVyU3RlcDtcbiAgICAgICAgZmllbGQuX251bWJlckF1dG9Db3JyZWN0ID0gdGhpcy5fbnVtYmVyQXV0b0NvcnJlY3Q7XG4gICAgICAgIGZpZWxkLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cyA9IHRoaXMuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzO1xuICAgICAgICBmaWVsZC5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPSB0aGlzLl9udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgZmllbGQuX251bWJlclVzZUdyb3VwaW5nID0gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgICAgIGZpZWxkLl9udW1iZXJQcmVmaXggPSB0aGlzLl9udW1iZXJQcmVmaXg7XG4gICAgICAgIGZpZWxkLl9udW1iZXJTdWZmaXggPSB0aGlzLl9udW1iZXJTdWZmaXg7XG4gICAgICAgIGZpZWxkLl9yYWRpb09wdGlvbnMgPSBbLi4udGhpcy5fcmFkaW9PcHRpb25zXTtcbiAgICAgICAgZmllbGQuX3JhZGlvTGFiZWxDbGFzc05hbWUgPSB0aGlzLl9yYWRpb0xhYmVsQ2xhc3NOYW1lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlckZvcm1hdCA9IHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQ7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyTWluID0gdGhpcy5fZGF0ZVBpY2tlck1pbjtcbiAgICAgICAgZmllbGQuX2RhdGVQaWNrZXJNYXggPSB0aGlzLl9kYXRlUGlja2VyTWF4O1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclNob3dUaW1lID0gdGhpcy5fZGF0ZVBpY2tlclNob3dUaW1lO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclNob3dTZWNvbmRzID0gdGhpcy5fZGF0ZVBpY2tlclNob3dTZWNvbmRzO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlVXRjID0gdGhpcy5fZGF0ZVBpY2tlclZhbHVlVXRjO1xuICAgICAgICBmaWVsZC5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmU7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVOb1RpbWUgPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWU7XG4gICAgICAgIGZpZWxkLl9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmogPSB0aGlzLl9kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmo7XG4gICAgICAgIGZpZWxkLl9tYXhMZW5ndGggPSB0aGlzLl9tYXhMZW5ndGg7XG4gICAgICAgIGZpZWxkLl9taW5MZW5ndGggPSB0aGlzLl9taW5MZW5ndGg7XG4gICAgICAgIGZpZWxkLl9wYXR0ZXJuID0gdGhpcy5fcGF0dGVybjtcbiAgICAgICAgZmllbGQuX21hc2sgPSB0aGlzLl9tYXNrO1xuICAgICAgICBmaWVsZC5fc2xvdENoYXIgPSB0aGlzLl9zbG90Q2hhcjtcbiAgICAgICAgZmllbGQuX2ZpbGVNdWx0aXBsZSA9IHRoaXMuX2ZpbGVNdWx0aXBsZTtcbiAgICAgICAgZmllbGQuX2ZpbGVNYXhGaWxlU2l6ZSA9IHRoaXMuX2ZpbGVNYXhGaWxlU2l6ZTtcbiAgICAgICAgZmllbGQuX2ZpbGVBY2NlcHQgPSB0aGlzLl9maWxlQWNjZXB0O1xuICAgICAgICBmaWVsZC5fZmlsZU9uU2VsZWN0SGFuZGxlciA9IHRoaXMuX2ZpbGVPblNlbGVjdEhhbmRsZXI7XG4gICAgICAgIGZpZWxkLl9pbWFnZVByZXZpZXcgPSB0aGlzLl9pbWFnZVByZXZpZXc7XG4gICAgICAgIGZpZWxkLl9pbWFnZVVybElucHV0SGlkZGVuT25EaXNhYmxlZCA9IHRoaXMuX2ltYWdlVXJsSW5wdXRIaWRkZW5PbkRpc2FibGVkO1xuICAgICAgICBmaWVsZC5faW1hZ2VQcmV2aWV3QWxsb3dTdmcgPSB0aGlzLl9pbWFnZVByZXZpZXdBbGxvd1N2ZztcbiAgICAgICAgZmllbGQuX2ltYWdlUHJldmlld0NvbXBvbmVudCA9IHRoaXMuX2ltYWdlUHJldmlld0NvbXBvbmVudDtcbiAgICAgICAgZmllbGQuX2N1c3RvbUNvbXBvbmVudFR5cGUgPSB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50SW5wdXRzID0gdGhpcy5fY3VzdG9tQ29tcG9uZW50SW5wdXRzO1xuICAgICAgICBmaWVsZC5fY3VzdG9tQ29tcG9uZW50V3JhcHBlcnMgPSB0aGlzLl9jdXN0b21Db21wb25lbnRXcmFwcGVycztcbiAgICAgICAgZmllbGQuX2xvY2FsZSA9IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgZmllbGQuX2N1cnJlbmN5ID0gdGhpcy5fY3VycmVuY3k7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeURpc3BsYXkgPSB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIGZpZWxkLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgICAgICBmaWVsZC5fdGV4dFRyaW0gPSB0aGlzLl90ZXh0VHJpbTtcbiAgICAgICAgZmllbGQuX2VtcHR5VmFsdWUgPSB0aGlzLl9lbXB0eVZhbHVlO1xuICAgICAgICBmaWVsZC5fdmFsaWRhdGlvbkVtYWlsID0gdGhpcy5fdmFsaWRhdGlvbkVtYWlsO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuIl19","import { Subject } from 'rxjs';\nimport { CommonsInternalError } from '@mediusinc/mng-commons/core';\nimport { EDITOR_DEFAULT_GROUP_NAME, TableviewEditorTypeEnum } from '../models/editor.model';\nimport { FieldActionDescriptor } from './field-action.descriptor';\nimport { AFieldDescriptor } from './field-base.descriptor';\nimport { FieldGroupDescriptor, FieldTabGroupDescriptor } from './field-group.descriptor';\nimport { FieldLookupDescriptor, FieldLookupEnumDescriptor, fieldLookupGetProviderCfgObj } from './field-lookup.descriptor';\nimport { FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj } from './field-many.descriptor';\nimport { FieldInputDescriptor } from './field.descriptor';\nimport { EditorDescriptorNestedObjectWrapper } from './wrappers/editor-descriptor-nested-object-wrapper';\nexport class EditorDescriptorInst {\n static { this.defaultGroupName = EDITOR_DEFAULT_GROUP_NAME; }\n /**\n * Creates new instance of editor descriptor.\n * @param model Model descriptor.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n constructor(model, tableviewEditorType = TableviewEditorTypeEnum.None) {\n /** @ignore */ this._tabs = [];\n /** @ignore */ this._groups = [];\n /** @ignore */ this._fields = [];\n /** @ignore */ this._disabled = false;\n /** @ignore */ this._isLocalized = false;\n /** @ignore */ this._eventsSubject = new Subject();\n this._model = model;\n this._tableviewEditorType = tableviewEditorType;\n }\n /**\n * Model descriptor for editor.\n */\n get model() {\n return this._model;\n }\n /**\n * Editor's tabs.\n */\n get tabs() {\n return this._tabs;\n }\n /**\n * Editor's fields.\n */\n get fields() {\n return this._fields;\n }\n /**\n * Type of editor for tableview.\n */\n get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n /**\n * If editor is disabled.\n */\n get disabled() {\n return this._disabled;\n }\n get isLocalized() {\n return this._isLocalized;\n }\n get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n get localizationModel() {\n return this._localizationModel;\n }\n get autoSave() {\n return this._autoSave;\n }\n get autoSaveIdentifier() {\n return this._autoSaveIdentifier;\n }\n get autofocusOnField() {\n return this._autofocusOnField;\n }\n /**\n * Dives into nested object to add fields from the nested object on property.\n *\n * @experimental\n *\n * @param property Model property name.\n */\n nested(property) {\n return new EditorDescriptorNestedObjectWrapper(this, property);\n }\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n * @return Newly created group descriptor.\n */\n addTabGroup(name, title) {\n const tabGroup = new FieldTabGroupDescriptor(name);\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.7@return Newly created group descriptor.\n */\n withTabGroup(name, title) {\n this.addTabGroup(name, title);\n return this;\n }\n /**\n * Gets group by its name (key).\n * @param name Group's key.\n */\n getGroup(name) {\n return typeof name === 'string' ? (this._groups.find(g => g.name === name) ?? null) : (this._groups[name] ?? null);\n }\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n * @return Newly created group descriptor.\n */\n addFieldGroup(name, title) {\n const fieldGroup = new FieldGroupDescriptor(name);\n fieldGroup.withTitle(title);\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n */\n withFieldGroup(name, title) {\n this.addFieldGroup(name, title);\n return this;\n }\n /**\n * Gets field by the model property name.\n * @param property Model property name.\n */\n getField(property) {\n return this.getFieldUnsafe(property);\n }\n /**\n * Gets field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n getFieldUnsafe(property) {\n return this._fields.find(f => f.property === property) ?? null;\n }\n /**\n * Removes field by the model property name.\n * @param property Model property name.\n */\n removeField(property) {\n return this.removeFieldUnsafe(property);\n }\n /**\n * Removes field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n removeFieldUnsafe(property) {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new CommonsInternalError(`Field ${property} does not exist.`, { name: 'EditorDescriptorError' });\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n /**\n * Adds field by the descriptor.\n * @param field Field descriptor.\n */\n addFieldDescriptor(field) {\n if (this._fields.some(f => f.property === field.property)) {\n throw new CommonsInternalError(`Field '${field.property}' already exists.`);\n }\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n /**\n * Adds field by the model property name.\n * @param property Model property name.\n */\n addField(property) {\n return this.addFieldUnsafe(property);\n }\n /**\n * Adds field by the model property name (UNSAFE). Property is not checked on editor model.\n * Use {addField} for safe usage.\n * @param property Model property name.\n */\n addFieldUnsafe(property) {\n const field = new FieldInputDescriptor(property);\n this.addFieldDescriptor(field);\n return field;\n }\n withFields(...properties) {\n properties.forEach(p => this.addField(p));\n return this;\n }\n addFieldAction(actionName) {\n const field = new FieldActionDescriptor(actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookup(property, opts) {\n return this.addFieldLookupUnsafe(property, opts);\n }\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookupUnsafe(property, opts) {\n const field = new FieldLookupDescriptor(property, {\n ...(opts?.serviceProvider ? fieldLookupGetProviderCfgObj(opts.serviceProvider) : {})\n });\n this.addFieldDescriptor(field);\n return field;\n }\n addFieldLookupEnum(property, enumDesc, options) {\n return this.addFieldLookupEnumUnsafe(property, enumDesc, options);\n }\n /**\n * Adds enum lookup field.\n * @param property Model's property name.\n * @param enumDesc Type of enum or enum descriptor.\n * @param options Provides subset of enum's available constants.\n */\n addFieldLookupEnumUnsafe(property, enumDesc, options) {\n const field = new FieldLookupEnumDescriptor(property, enumDesc, options);\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations.\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.addFieldManyEditorUnsafe(property, tableviewDescriptor);\n }\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n addFieldManyEditorUnsafe(property, tableviewDescriptor) {\n const field = new FieldManyEditorDescriptor(property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);\n const field = new FieldManyToManyEditorDescriptor(property, mainTableDescriptor, lookupTableDescriptor, {\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n /**\n * Disables field on editor.\n * @param disabled\n */\n withDisabled(disabled = true) {\n this._disabled = disabled;\n return this;\n }\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n withValidation(name, validator, message, opts) {\n return this.withValidationUnsafe(name, validator, message, opts);\n }\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n * @param opts Additional configuration for validation.\n */\n withValidationUnsafe(name, validator, message, opts) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message, opts);\n }\n return this;\n }\n withAutoSave(enabled = true, autoSaveIdentifier) {\n this._autoSave = enabled;\n this._autoSaveIdentifier = autoSaveIdentifier;\n return this;\n }\n withAutofocusOnField(enabled = true) {\n this._autofocusOnField = enabled;\n return this;\n }\n /**\n * Creates a copy of editor descriptor object.\n */\n copy() {\n const editor = new EditorDescriptorInst(this.model.copy(), this.tableviewEditorType);\n editor._fields = this._fields.map(f => f.copy());\n const fieldsMap = editor.fields.reduce((map, field) => {\n map.set(field.property, field);\n return map;\n }, new Map());\n for (const tabGroup of this._tabs) {\n const tabGroupCopy = tabGroup.copy(true);\n // set fields\n for (let i = 0; i < tabGroup.fields.length; i++) {\n const group = tabGroup.fields[i];\n const groupCopy = tabGroupCopy.fields[i];\n for (let j = 0; j < group.fields.length; j++) {\n const fieldCopy = fieldsMap.get(group.fields[j].property);\n if (!fieldCopy) {\n throw new CommonsInternalError(`Could not copy editor descriptor: field '${group.fields[j].property}' (tab '${tabGroup.name}', group ${group.name}').`);\n }\n groupCopy.addField(fieldCopy);\n }\n editor._groups.push(groupCopy);\n }\n editor._tabs.push(tabGroupCopy);\n }\n editor._currentTabGroup = editor._tabs.length > 0 ? editor._tabs[editor._tabs.length - 1] : undefined;\n if (editor._currentTabGroup) {\n editor._currentGroup = editor._currentTabGroup.fields.length > 0 ? editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1] : undefined;\n }\n editor._disabled = this._disabled;\n editor._autoSave = this._autoSave;\n editor._autoSaveIdentifier = this._autoSaveIdentifier;\n editor._autofocusOnField = this._autofocusOnField;\n editor._isLocalized = this._isLocalized;\n editor._localizationLocaleProperty = this._localizationLocaleProperty;\n editor._localizationModel = this._localizationModel;\n editor._localizationLocalizationProperty = this._localizationLocalizationProperty;\n return editor;\n }\n /**\n * Created group from field group descriptor.\n * @param fieldGroup Field group descriptor.\n * @internal\n */\n createFieldGroupDescriptor(fieldGroup) {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n /**\n * Creates tab group from tab group descriptor.\n * @param tabGroup Tab group descriptor.\n * @internal\n */\n createTabGroupDescriptor(tabGroup) {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n /**\n * Creates default field group.\n * @internal\n */\n createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.addFieldGroup(EditorDescriptorInst.defaultGroupName, null);\n }\n }\n /**\n * Creates default tab group.\n * @internal\n */\n createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.addTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');\n }\n }\n /**\n * This function takes care of displaying correct/localized data in the editor\n * @param property property that tells us where on the model are localizations accessible\n * @param model Model for localizations\n * @param localeProperty property by which we find the locale\n */\n localized(property, model, localeProperty) {\n return this.localizedUnsafe(property, model, localeProperty);\n }\n localizedUnsafe(property, model, localeProperty) {\n this._localizationLocalizationProperty = property;\n this._localizationModel = model;\n this._localizationLocaleProperty = localeProperty;\n this._isLocalized = true;\n return this;\n }\n nextEvent(type, component, data) {\n this._eventsSubject.next({\n type: type,\n formComponent: component,\n form: component.form,\n data: data\n });\n }\n get events$() {\n return this._eventsSubject.asObservable();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQWdCLG9CQUFvQixFQUFzQyxNQUFNLDZCQUE2QixDQUFDO0FBTXJILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSTFGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3pILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXJJLE9BQU8sRUFBQyxvQkFBb0IsRUFBMkIsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUV2RyxNQUFNLE9BQU8sb0JBQW9CO2FBR04scUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBd0JwRTs7OztPQUlHO0lBQ0gsWUFBbUIsS0FBbUMsRUFBRSxtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJO1FBekIxRyxjQUFjLENBQW9CLFVBQUssR0FBZ0QsRUFBRSxDQUFDO1FBQzFGLGNBQWMsQ0FBb0IsWUFBTyxHQUFnRSxFQUFFLENBQUM7UUFDNUcs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QUFxQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMvRSxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUNaLFFBQWtCLEVBQ2xCLEtBQXlDLEVBQ3pDLGNBQXVDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFrQixFQUFFLEtBQUssRUFBRSxjQUF3QixDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLGVBQWUsQ0FBbUIsUUFBZ0IsRUFBRSxLQUF3QyxFQUFFLGNBQXNCO1FBQ3ZILElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxRQUFrQixDQUFDO1FBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLGNBQXdCLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUF1QixFQUFFLFNBQXlDLEVBQUUsSUFBaUM7UUFDbEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSSxFQUFFLElBQUk7WUFDVixhQUFhLEVBQUUsU0FBUztZQUN4QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQWlCO1lBQ2pDLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBcnJheUl0ZW1UeXBlLCBDb21tb25zSW50ZXJuYWxFcnJvciwgRW51bUNvbnN0YW50VHlwZSwgSUVkaXRvckRlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzLCBJRmllbGRzTWFuYWdlV2l0aEdldEZpZWxkfSBmcm9tICcuLi9tb2RlbHMvZWRpdG9yLWZpZWxkcy5tb2RlbCc7XG5pbXBvcnQge0VESVRPUl9ERUZBVUxUX0dST1VQX05BTUUsIFRhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7Rm9ybVZhbGlkYXRpb25NZXNzYWdlLCBGb3JtVmFsaWRhdG9yfSBmcm9tICcuLi9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQge0Zvcm1FdmVudCwgRm9ybUV2ZW50RGF0YSwgRm9ybUV2ZW50VHlwZUVudW19IGZyb20gJy4uL21vZGVscy9mb3JtLWVkaXRvci5ldmVudCc7XG5pbXBvcnQge0lGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvZm9ybS1lZGl0b3IuaW50ZXJmYWNlJztcbmltcG9ydCB7RmllbGRBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWFjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZEdyb3VwRGVzY3JpcHRvciwgRmllbGRUYWJHcm91cERlc2NyaXB0b3J9IGZyb20gJy4vZmllbGQtZ3JvdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTG9va3VwRGVzY3JpcHRvciwgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvciwgZmllbGRMb29rdXBHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IsIGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuL2ZpZWxkLW1hbnkuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZX0gZnJvbSAnLi9maWVsZC12YWxpZGF0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZElucHV0RGVzY3JpcHRvciwgRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlfSBmcm9tICcuL2ZpZWxkLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcn0gZnJvbSAnLi93cmFwcGVycy9lZGl0b3ItZGVzY3JpcHRvci1uZXN0ZWQtb2JqZWN0LXdyYXBwZXInO1xuXG5leHBvcnQgY2xhc3MgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiwgSUZpZWxkc01hbmFnZVdpdGhHZXRGaWVsZDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+XG57XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBkZWZhdWx0R3JvdXBOYW1lID0gRURJVE9SX0RFRkFVTFRfR1JPVVBfTkFNRTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIHJlYWRvbmx5IF90YWJsZXZpZXdFZGl0b3JUeXBlOiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX3RhYnM6IEFycmF5PEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX2dyb3VwczogQXJyYXk8RmllbGRHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2ZpZWxkczogQXJyYXk8QUZpZWxkRGVzY3JpcHRvcjxhbnksIEVkaXRvck1vZGVsPj4gPSBbXTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2N1cnJlbnRUYWJHcm91cD86IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2N1cnJlbnRHcm91cD86IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYXV0b1NhdmU/OiBib29sZWFuO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfYXV0b1NhdmVJZGVudGlmaWVyPzogc3RyaW5nO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hdXRvZm9jdXNPbkZpZWxkPzogYm9vbGVhbjtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfbG9jYWxpemF0aW9uTW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8YW55PjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIHJlYWRvbmx5IF9ldmVudHNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Rm9ybUV2ZW50PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBvZiBlZGl0b3IgZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gbW9kZWwgTW9kZWwgZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RWRpdG9yVHlwZSBUeXBlIG9mIGVkaXRvciBpbiB0YWJsZXZpZXcgKGFkZCwgZWRpdCwgdmlldyBvciBub25lKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4sIHRhYmxldmlld0VkaXRvclR5cGUgPSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5Ob25lKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0VkaXRvclR5cGUgPSB0YWJsZXZpZXdFZGl0b3JUeXBlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vZGVsIGRlc2NyaXB0b3IgZm9yIGVkaXRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdG9yJ3MgdGFicy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRhYnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVkaXRvcidzIGZpZWxkcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUeXBlIG9mIGVkaXRvciBmb3IgdGFibGV2aWV3LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3RWRpdG9yVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0VkaXRvclR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgZWRpdG9yIGlzIGRpc2FibGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9jYWxpemVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbk1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uTW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvU2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9TYXZlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b1NhdmVJZGVudGlmaWVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b1NhdmVJZGVudGlmaWVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2ZvY3VzT25GaWVsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9mb2N1c09uRmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGl2ZXMgaW50byBuZXN0ZWQgb2JqZWN0IHRvIGFkZCBmaWVsZHMgZnJvbSB0aGUgbmVzdGVkIG9iamVjdCBvbiBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZXN0ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbD4ocHJvcGVydHk6IFByb3BlcnR5KTogRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXI8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsLCBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+PiB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGVzY3JpcHRvck5lc3RlZE9iamVjdFdyYXBwZXIodGhpcywgcHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyB0YWIgZ3JvdXAuIE5leHQgYWRkZWQgZmllbGRzIGFyZSBhZGRlZCB0byBuZXdseSBjcmVhdGVkIHRhYiBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgdGFiLjdAcmV0dXJuIE5ld2x5IGNyZWF0ZWQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKiBAcmV0dXJuIE5ld2x5IGNyZWF0ZWQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkVGFiR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYkdyb3VwID0gbmV3IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPihuYW1lKTtcbiAgICAgICAgdGFiR3JvdXAud2l0aFRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXApO1xuICAgICAgICByZXR1cm4gdGFiR3JvdXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBuZXcgdGFiIGdyb3VwLiBOZXh0IGFkZGVkIGZpZWxkcyBhcmUgYWRkZWQgdG8gbmV3bHkgY3JlYXRlZCB0YWIgZ3JvdXAuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdGxlIGtleSBmb3IgdGhlIHRhYi43QHJldHVybiBOZXdseSBjcmVhdGVkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhUYWJHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWRkVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGdyb3VwIGJ5IGl0cyBuYW1lIChrZXkpLlxuICAgICAqIEBwYXJhbSBuYW1lIEdyb3VwJ3Mga2V5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRHcm91cChuYW1lOiBzdHJpbmcgfCBudW1iZXIpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyA/ICh0aGlzLl9ncm91cHMuZmluZChnID0+IGcubmFtZSA9PT0gbmFtZSkgPz8gbnVsbCkgOiAodGhpcy5fZ3JvdXBzW25hbWVdID8/IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IGZpZWxkIGdyb3VwLiBOZXh0IGFkZGVkIGZpZWxkcyBhcmUgYWRkZWQgdG8gbmV3bHkgY3JlYXRlZCBmaWVsZCBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgZ3JvdXAuXG4gICAgICogQHJldHVybiBOZXdseSBjcmVhdGVkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyB8IG51bGwpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZEdyb3VwID0gbmV3IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPihuYW1lKTtcbiAgICAgICAgZmllbGRHcm91cC53aXRoVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gZmllbGRHcm91cDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBmaWVsZCBncm91cC4gTmV4dCBhZGRlZCBmaWVsZHMgYXJlIGFkZGVkIHRvIG5ld2x5IGNyZWF0ZWQgZmllbGQgZ3JvdXAuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdGxlIGtleSBmb3IgdGhlIGdyb3VwLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRmllbGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGdldEZpZWxkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldPihwcm9wZXJ0eTogUHJvcGVydHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZyk6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eToga2V5b2YgRWRpdG9yTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpZWxkSWR4ID0gdGhpcy5fZmllbGRzLmZpbmRJbmRleChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBGaWVsZCAke3Byb3BlcnR5fSBkb2VzIG5vdCBleGlzdC5gLCB7bmFtZTogJ0VkaXRvckRlc2NyaXB0b3JFcnJvcid9KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2dyb3Vwcykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZElkeCA9IGdyb3VwLmZpZWxkcy5maW5kSW5kZXgoZiA9PiBmIGluc3RhbmNlb2YgQUZpZWxkRGVzY3JpcHRvciAmJiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoZ3JvdXBGaWVsZElkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAuZmllbGRzLnNwbGljZShncm91cEZpZWxkSWR4LCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWVsZHMuc3BsaWNlKGZpZWxkSWR4LCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGZpZWxkIGJ5IHRoZSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZCBGaWVsZCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpZWxkcy5zb21lKGYgPT4gZi5wcm9wZXJ0eSA9PT0gZmllbGQucHJvcGVydHkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpZWxkICcke2ZpZWxkLnByb3BlcnR5fScgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0R3JvdXAoKTtcbiAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXA/LmFkZEZpZWxkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBmaWVsZCBieSB0aGUgbW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUgKFVOU0FGRSkuIFByb3BlcnR5IGlzIG5vdCBjaGVja2VkIG9uIGVkaXRvciBtb2RlbC5cbiAgICAgKiBVc2Uge2FkZEZpZWxkfSBmb3Igc2FmZSB1c2FnZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCA9IEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBFZGl0b3JNb2RlbClbXSk6IHRoaXMge1xuICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2gocCA9PiB0aGlzLmFkZEZpZWxkKHApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkQWN0aW9uKGFjdGlvbk5hbWU6IHN0cmluZyk6IEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4oYWN0aW9uTmFtZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBvcHRzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBjb25maWd1cmluZyB0eXBlIGFuZC9vciBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBFZGl0b3JNb2RlbC5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwPFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgICAgICBMb29rdXBNb2RlbCBleHRlbmRzIE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4gPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldXG4gICAgPihwcm9wZXJ0eTogUHJvcGVydHksIG9wdHM/OiBGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG9wdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFtVTlNBRkVdIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSB7RmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzPExvb2t1cE1vZGVsLCBTZXJ2aWNlPn0gb3B0cyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgY29uZmlndXJpbmcgdHlwZSBhbmQvb3Igc2VydmljZSBwcm92aWRlci5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBGaWVsZFZhbHVlID0gTG9va3VwTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIG9wdHM/OiBGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGZpZWxkTG9va3VwR2V0UHJvdmlkZXJDZmdPYmoob3B0cy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtPlxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4ocHJvcGVydHkgYXMgc3RyaW5nLCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBlbnVtIGxvb2t1cCBmaWVsZC5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwncyBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSBlbnVtRGVzYyBUeXBlIG9mIGVudW0gb3IgZW51bSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFByb3ZpZGVzIHN1YnNldCBvZiBlbnVtJ3MgYXZhaWxhYmxlIGNvbnN0YW50cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlPEVudW0gPSBFbnVtQ29uc3RhbnRUeXBlPihwcm9wZXJ0eTogc3RyaW5nLCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ocHJvcGVydHksIGVudW1EZXNjLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0YWJsZS9kZXRhaWxzL2FkZC9lZGl0IGZpZWxkIGZvciBvbmUtdG8tbWFueSAoMTpuKSByZWxhdGlvbnMuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsJ3MgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RGVzY3JpcHRvciBUYWJsZXZpZXcgZGVzY3JpcHRvciBmb3IgcmVsYXRlZCBtb2RlbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0YWJsZS9kZXRhaWxzL2FkZC9lZGl0IGZpZWxkIGZvciBvbmUtdG8tbWFueSAoMTpuKSByZWxhdGlvbnMgKFVOU0FGRSkuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsJ3MgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RGVzY3JpcHRvciBUYWJsZXZpZXcgZGVzY3JpcHRvciBmb3IgcmVsYXRlZCBtb2RlbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHByb3BlcnR5LCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueVRvTWFueUVkaXRvcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IEVkaXRvck1vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBhbnksIGFueT5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueT4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2VUeXBlLCBhbnksIGFueT5cbiAgICApOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgY2ZnID0gZmllbGRNYW55VG9NYW55R2V0UHJvdmlkZXJDZmdPYmoobG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZVR5cGUsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgZmllbGQgb24gZWRpdG9yLlxuICAgICAqIEBwYXJhbSBkaXNhYmxlZFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRGlzYWJsZWQoZGlzYWJsZWQgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZ3JvdXAgdmFsaWRhdG9yIHRvIGVkaXRvci5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxpZGF0b3IgRmllbGQgdmFsaWRhdG9yIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSBtZXNzYWdlIEZpZWxkIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0cyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gRWRpdG9yTW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRvcj86IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlPGtleW9mIEVkaXRvck1vZGVsPlxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVmFsaWRhdGlvblVuc2FmZShuYW1lLCB2YWxpZGF0b3IsIG1lc3NhZ2UsIG9wdHMgYXMgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGdyb3VwIHZhbGlkYXRvciB0byBlZGl0b3IuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdmFsaWRhdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsaWRhdG9yIEZpZWxkIHZhbGlkYXRvciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBGaWVsZCB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIG9wdHMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZSA9IEVkaXRvck1vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0b3I/OiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXAud2l0aFZhbGlkYXRpb24obmFtZSwgdmFsaWRhdG9yLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEF1dG9TYXZlKGVuYWJsZWQgPSB0cnVlLCBhdXRvU2F2ZUlkZW50aWZpZXI/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYXV0b1NhdmUgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLl9hdXRvU2F2ZUlkZW50aWZpZXIgPSBhdXRvU2F2ZUlkZW50aWZpZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQXV0b2ZvY3VzT25GaWVsZChlbmFibGVkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hdXRvZm9jdXNPbkZpZWxkID0gZW5hYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgZWRpdG9yIGRlc2NyaXB0b3Igb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3B5KCk6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLm1vZGVsLmNvcHkoKSwgdGhpcy50YWJsZXZpZXdFZGl0b3JUeXBlKTtcblxuICAgICAgICBlZGl0b3IuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcy5tYXAoZiA9PiBmLmNvcHkoKSk7XG4gICAgICAgIGNvbnN0IGZpZWxkc01hcCA9IGVkaXRvci5maWVsZHMucmVkdWNlKChtYXAsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBtYXAuc2V0KGZpZWxkLnByb3BlcnR5LCBmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9LCBuZXcgTWFwPHN0cmluZywgYW55PigpKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkdyb3VwQ29weSA9IHRhYkdyb3VwLmNvcHkodHJ1ZSk7XG4gICAgICAgICAgICAvLyBzZXQgZmllbGRzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYkdyb3VwLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGFiR3JvdXAuZmllbGRzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29weSA9IHRhYkdyb3VwQ29weS5maWVsZHNbaV07XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdyb3VwLmZpZWxkcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZENvcHkgPSBmaWVsZHNNYXAuZ2V0KGdyb3VwLmZpZWxkc1tqXS5wcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmllbGRDb3B5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYENvdWxkIG5vdCBjb3B5IGVkaXRvciBkZXNjcmlwdG9yOiBmaWVsZCAnJHtncm91cC5maWVsZHNbal0ucHJvcGVydHl9JyAodGFiICcke3RhYkdyb3VwLm5hbWV9JywgZ3JvdXAgJHtncm91cC5uYW1lfScpLmApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQ29weS5hZGRGaWVsZChmaWVsZENvcHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlZGl0b3IuX2dyb3Vwcy5wdXNoKGdyb3VwQ29weSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlZGl0b3IuX3RhYnMucHVzaCh0YWJHcm91cENvcHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAgPSBlZGl0b3IuX3RhYnMubGVuZ3RoID4gMCA/IGVkaXRvci5fdGFic1tlZGl0b3IuX3RhYnMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChlZGl0b3IuX2N1cnJlbnRUYWJHcm91cCkge1xuICAgICAgICAgICAgZWRpdG9yLl9jdXJyZW50R3JvdXAgPSBlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHMubGVuZ3RoID4gMCA/IGVkaXRvci5fY3VycmVudFRhYkdyb3VwLmZpZWxkc1tlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBlZGl0b3IuX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIGVkaXRvci5fYXV0b1NhdmUgPSB0aGlzLl9hdXRvU2F2ZTtcbiAgICAgICAgZWRpdG9yLl9hdXRvU2F2ZUlkZW50aWZpZXIgPSB0aGlzLl9hdXRvU2F2ZUlkZW50aWZpZXI7XG4gICAgICAgIGVkaXRvci5fYXV0b2ZvY3VzT25GaWVsZCA9IHRoaXMuX2F1dG9mb2N1c09uRmllbGQ7XG4gICAgICAgIGVkaXRvci5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgZWRpdG9yLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgICAgICBlZGl0b3IuX2xvY2FsaXphdGlvbk1vZGVsID0gdGhpcy5fbG9jYWxpemF0aW9uTW9kZWw7XG4gICAgICAgIGVkaXRvci5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eTtcblxuICAgICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZWQgZ3JvdXAgZnJvbSBmaWVsZCBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZEdyb3VwIEZpZWxkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0VGFiR3JvdXAoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwID0gZmllbGRHcm91cDtcbiAgICAgICAgdGhpcy5fZ3JvdXBzLnB1c2goZmllbGRHcm91cCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUYWJHcm91cD8uYWRkRmllbGQoZmllbGRHcm91cCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGFiIGdyb3VwIGZyb20gdGFiIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICogQHBhcmFtIHRhYkdyb3VwIFRhYiBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXA6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFiR3JvdXAgPSB0YWJHcm91cDtcbiAgICAgICAgdGhpcy5fdGFicy5wdXNoKHRhYkdyb3VwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBkZWZhdWx0IGZpZWxkIGdyb3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdEdyb3VwKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHRUYWJHcm91cCgpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYkdyb3VwPy5maWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEZpZWxkR3JvdXAoRWRpdG9yRGVzY3JpcHRvckluc3QuZGVmYXVsdEdyb3VwTmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGRlZmF1bHQgdGFiIGdyb3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCkge1xuICAgICAgICBpZiAodGhpcy5fdGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGFiR3JvdXAoRWRpdG9yRGVzY3JpcHRvckluc3QuZGVmYXVsdEdyb3VwTmFtZSwgJ2dlbmVyYWwuZ2VuZXJhbCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIGRpc3BsYXlpbmcgY29ycmVjdC9sb2NhbGl6ZWQgZGF0YSBpbiB0aGUgZWRpdG9yXG4gICAgICogQHBhcmFtIHByb3BlcnR5IHByb3BlcnR5IHRoYXQgdGVsbHMgdXMgd2hlcmUgb24gdGhlIG1vZGVsIGFyZSBsb2NhbGl6YXRpb25zIGFjY2Vzc2libGVcbiAgICAgKiBAcGFyYW0gbW9kZWwgTW9kZWwgZm9yIGxvY2FsaXphdGlvbnNcbiAgICAgKiBAcGFyYW0gbG9jYWxlUHJvcGVydHkgcHJvcGVydHkgYnkgd2hpY2ggd2UgZmluZCB0aGUgbG9jYWxlXG4gICAgICovXG4gICAgcHVibGljIGxvY2FsaXplZDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBMb2NhbGl6YXRpb25Nb2RlbCA9IEFycmF5SXRlbVR5cGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxMb2NhbGl6YXRpb25Nb2RlbD4sXG4gICAgICAgIGxvY2FsZVByb3BlcnR5OiBrZXlvZiBMb2NhbGl6YXRpb25Nb2RlbFxuICAgICk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBtb2RlbCwgbG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkVW5zYWZlPExvY2FsaXphdGlvblR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uVHlwZT4sIGxvY2FsZVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkgPSBwcm9wZXJ0eSBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbk1vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5ID0gbG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRFdmVudCh0eXBlOiBGb3JtRXZlbnRUeXBlRW51bSwgY29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxhbnksIGFueT4sIGRhdGE/OiBGb3JtRXZlbnREYXRhPEVkaXRvck1vZGVsPikge1xuICAgICAgICB0aGlzLl9ldmVudHNTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICAgICAgICAgIGZvcm06IGNvbXBvbmVudC5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBldmVudHMkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG59XG4iXX0=","import { ModelDescriptor, model } from '@mediusinc/mng-commons/model';\nimport { EditorDescriptorInst } from './editor.descriptor';\nexport function editorDescriptor(modelOrOpts, opts) {\n if (modelOrOpts == null) {\n return new EditorDescriptorInst(model(), opts?.tableviewEditorType);\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new EditorDescriptorInst(modelOrOpts, opts?.tableviewEditorType);\n }\n else {\n // this could have autoGenerated if model descriptor is class\n return new EditorDescriptorInst(model(modelOrOpts), modelOrOpts?.tableviewEditorType);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQTZDLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRy9HLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBZ0J6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLFdBQTJHLEVBQzNHLElBQXFFO0lBRXJFLElBQUksV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsS0FBSyxFQUFlLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDckgsQ0FBQztTQUFNLElBQUksV0FBVyxZQUFZLGVBQWUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsV0FBVyxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7U0FBTSxDQUFDO1FBQ0osNkRBQTZEO1FBQzdELE9BQU8sSUFBSSxvQkFBb0IsQ0FBaUMsS0FBSyxDQUFjLFdBQVcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIE1vZGVsRGVzY3JpcHRvckNyZWF0ZU9wdHMsIFR5cGVEZXNjcmlwdG9yLCBtb2RlbH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7VGFibGV2aWV3RWRpdG9yVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9lZGl0b3IuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEVkaXRvckRlc2NyaXB0b3JDcmVhdGVCYXNlT3B0c1R5cGU8UGFyZW50RWRpdG9yTW9kZWw+ID0ge1xuICAgIHRhYmxldmlld0VkaXRvclR5cGU/OiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bTtcbiAgICBwYXJlbnRFZGl0b3JUeXBlPzogVHlwZURlc2NyaXB0b3I8UGFyZW50RWRpdG9yTW9kZWw+IHwgTW9kZWxEZXNjcmlwdG9yPFBhcmVudEVkaXRvck1vZGVsPiB8IEVkaXRvckRlc2NyaXB0b3JJbnN0PFBhcmVudEVkaXRvck1vZGVsLCBhbnk+O1xufTtcbmV4cG9ydCB0eXBlIEVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+ID0gTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0czxFZGl0b3JNb2RlbD4gJiBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlQmFzZU9wdHNUeXBlPFBhcmVudEVkaXRvck1vZGVsPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPigpOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPihcbiAgICBvcHRzOiBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPlxuKTogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JEZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4sXG4gICAgb3B0cz86IEVkaXRvckRlc2NyaXB0b3JDcmVhdGVCYXNlT3B0c1R5cGU8UGFyZW50RWRpdG9yTW9kZWw+XG4pOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbE9yT3B0cz86IE1vZGVsRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4gfCBFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICBvcHRzPzogRWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikge1xuICAgIGlmIChtb2RlbE9yT3B0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbDxFZGl0b3JNb2RlbD4oKSwgb3B0cz8udGFibGV2aWV3RWRpdG9yVHlwZSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE9yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4obW9kZWxPck9wdHMsIG9wdHM/LnRhYmxldmlld0VkaXRvclR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoaXMgY291bGQgaGF2ZSBhdXRvR2VuZXJhdGVkIGlmIG1vZGVsIGRlc2NyaXB0b3IgaXMgY2xhc3NcbiAgICAgICAgcmV0dXJuIG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG1vZGVsPEVkaXRvck1vZGVsPihtb2RlbE9yT3B0cyksIG1vZGVsT3JPcHRzPy50YWJsZXZpZXdFZGl0b3JUeXBlKTtcbiAgICB9XG59XG4iXX0=","export var FormFieldEventTypeEnum;\n(function (FormFieldEventTypeEnum) {\n FormFieldEventTypeEnum[\"ComponentLifecycle\"] = \"ComponentLifecycle\";\n FormFieldEventTypeEnum[\"ValueChange\"] = \"ValueChange\";\n FormFieldEventTypeEnum[\"DataProvider\"] = \"DataProvider\";\n FormFieldEventTypeEnum[\"DialogLifecycle\"] = \"DialogLifecycle\";\n FormFieldEventTypeEnum[\"RowReorder\"] = \"RowReorder\";\n FormFieldEventTypeEnum[\"Other\"] = \"Other\";\n})(FormFieldEventTypeEnum || (FormFieldEventTypeEnum = {}));\nexport var FormEventTypeEnum;\n(function (FormEventTypeEnum) {\n FormEventTypeEnum[\"ComponentLifecycle\"] = \"ComponentLifecycle\";\n FormEventTypeEnum[\"ValueChange\"] = \"ValueChange\";\n FormEventTypeEnum[\"Submit\"] = \"Submit\";\n FormEventTypeEnum[\"Other\"] = \"Other\";\n})(FormEventTypeEnum || (FormEventTypeEnum = {}));\nexport class FormFieldEventComponentSubtype {\n static { this.ON_INIT = 'Component.OnInit'; }\n static { this.ON_VIEW_INIT = 'Component.OnViewInit'; }\n static { this.ON_CONTENT_INIT = 'Component.OnContentInit'; }\n static { this.ON_DESTROY = 'Component.OnDestroy'; }\n}\nexport class FormFieldEventDialogSubtype {\n static { this.VISIBILITY = 'Dialog.Visibility'; }\n static { this.TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance'; }\n static { this.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance'; }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lZGl0b3IuZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvbW9kZWxzL2Zvcm0tZWRpdG9yLmV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sQ0FBTixJQUFZLHNCQU9YO0FBUEQsV0FBWSxzQkFBc0I7SUFDOUIsbUVBQXlDLENBQUE7SUFDekMscURBQTJCLENBQUE7SUFDM0IsdURBQTZCLENBQUE7SUFDN0IsNkRBQW1DLENBQUE7SUFDbkMsbURBQXlCLENBQUE7SUFDekIseUNBQWUsQ0FBQTtBQUNuQixDQUFDLEVBUFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQU9qQztBQUVELE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDekIsOERBQXlDLENBQUE7SUFDekMsZ0RBQTJCLENBQUE7SUFDM0Isc0NBQWlCLENBQUE7SUFDakIsb0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QjtBQUVELE1BQU0sT0FBTyw4QkFBOEI7YUFDaEIsWUFBTyxHQUFHLGtCQUFrQixDQUFDO2FBQzdCLGlCQUFZLEdBQUcsc0JBQXNCLENBQUM7YUFDdEMsb0JBQWUsR0FBRyx5QkFBeUIsQ0FBQzthQUM1QyxlQUFVLEdBQUcscUJBQXFCLENBQUM7O0FBRzlELE1BQU0sT0FBTywyQkFBMkI7YUFDYixlQUFVLEdBQUcsbUJBQW1CLENBQUM7YUFDakMscUNBQWdDLEdBQUcsMENBQTBDLENBQUM7YUFDOUUsNENBQXVDLEdBQUcsZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7SUZvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4vZm9ybS1lZGl0b3IuaW50ZXJmYWNlJztcbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuL2Zvcm1seS1maWVsZC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVkaXRvclN1Ym1pdEV2ZW50PEl0ZW0+IHtcbiAgICBmb3JtSXRlbTogSXRlbTtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBGb3JtRmllbGRFdmVudFR5cGVFbnVtIHtcbiAgICBDb21wb25lbnRMaWZlY3ljbGUgPSAnQ29tcG9uZW50TGlmZWN5Y2xlJyxcbiAgICBWYWx1ZUNoYW5nZSA9ICdWYWx1ZUNoYW5nZScsXG4gICAgRGF0YVByb3ZpZGVyID0gJ0RhdGFQcm92aWRlcicsXG4gICAgRGlhbG9nTGlmZWN5Y2xlID0gJ0RpYWxvZ0xpZmVjeWNsZScsXG4gICAgUm93UmVvcmRlciA9ICdSb3dSZW9yZGVyJyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGVudW0gRm9ybUV2ZW50VHlwZUVudW0ge1xuICAgIENvbXBvbmVudExpZmVjeWNsZSA9ICdDb21wb25lbnRMaWZlY3ljbGUnLFxuICAgIFZhbHVlQ2hhbmdlID0gJ1ZhbHVlQ2hhbmdlJyxcbiAgICBTdWJtaXQgPSAnU3VibWl0JyxcbiAgICBPdGhlciA9ICdPdGhlcidcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9JTklUID0gJ0NvbXBvbmVudC5PbkluaXQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT05fVklFV19JTklUID0gJ0NvbXBvbmVudC5PblZpZXdJbml0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9OX0NPTlRFTlRfSU5JVCA9ICdDb21wb25lbnQuT25Db250ZW50SW5pdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTl9ERVNUUk9ZID0gJ0NvbXBvbmVudC5PbkRlc3Ryb3knO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJU0lCSUxJVFkgPSAnRGlhbG9nLlZpc2liaWxpdHknO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVEFCTEVfQ0FQVElPTl9DT01QT05FTlRfSU5TVEFOQ0UgPSAnRGlhbG9nLk1uZ1RhYmxlLkNhcHRpb25Db21wb25lbnRJbnN0YW5jZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUQUJMRV9DT0xVTU5fQUNUSU9OU19DT01QT05FTlRfSU5TVEFOQ0UgPSAnRGlhbG9nLk1uZ1RhYmxlLkNvbHVtbkFjdGlvbnNDb21wb25lbnRJbnN0YW5jZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUZpZWxkRXZlbnREYXRhPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgZXZlbnRTdWJ0eXBlPzogc3RyaW5nO1xuICAgIHZhbHVlPzogRmllbGRNb2RlbDtcbiAgICBmb3JtVmFsdWU/OiBFZGl0b3JNb2RlbDtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUV2ZW50RGF0YTxFZGl0b3JNb2RlbD4ge1xuICAgIGV2ZW50U3VidHlwZT86IHN0cmluZztcbiAgICB2YWx1ZT86IEVkaXRvck1vZGVsOyAvLyBkaXJlY3QgdmFsdWUgZnJvbSBmb3JtLnZhbHVlQ2hhbmdlcywgZGlzYWJsZWQgZmllbGQgdmFsdWVzIGFuZCBzZXR0ZXJzIGFyZSBub3QgaW5jbHVkZWRcbiAgICBzdWJtaXRWYWxpZD86IGJvb2xlYW47IC8vIHRydWUgaWYgZm9ybSBpcyB2YWxpZFxuICAgIHN1Ym1pdFZhbHVlPzogRWRpdG9yTW9kZWw7IC8vIHZhbHVlIG9uIHN1Ym1pdFxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRmllbGRFdmVudDxGaWVsZFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZSA9IHVuZGVmaW5lZD4ge1xuICAgIHR5cGU6IEZvcm1GaWVsZEV2ZW50VHlwZUVudW07XG4gICAgZmllbGRDb21wb25lbnQ/OiBGaWVsZFR5cGU8Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPEZpZWxkVmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPj47XG4gICAgZm9ybUNvbXBvbmVudD86IElGb3JtRWRpdG9yQ29tcG9uZW50PEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPjtcbiAgICBmaWVsZEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxGaWVsZFZhbHVlPjtcbiAgICBmb3JtOiBGb3JtR3JvdXA8e1tLIGluIGtleW9mIEZvcm1WYWx1ZV06IEFic3RyYWN0Q29udHJvbDxGb3JtVmFsdWVbS10+fT47XG4gICAgZmllbGRGb3JtbHlDb25maWc6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxGaWVsZFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgZGF0YT86IEZvcm1GaWVsZEV2ZW50RGF0YTxGaWVsZFZhbHVlLCBGb3JtVmFsdWU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FdmVudDxGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZSA9IHVuZGVmaW5lZD4ge1xuICAgIHR5cGU6IEZvcm1FdmVudFR5cGVFbnVtO1xuICAgIGZvcm1Db21wb25lbnQ/OiBJRm9ybUVkaXRvckNvbXBvbmVudDxGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgZm9ybTogRm9ybUdyb3VwPHtbSyBpbiBrZXlvZiBGb3JtVmFsdWVdOiBBYnN0cmFjdENvbnRyb2w8Rm9ybVZhbHVlW0tdPn0+O1xuICAgIGRhdGE/OiBGb3JtRXZlbnREYXRhPEZvcm1WYWx1ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yUmVzZXRFdmVudDxJdGVtPiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBmZXRjaD86IGJvb2xlYW47IC8vIGlmIGl0ZW0gc2hvdWxkIGJlIHJlLWZldGNoZWQgYWdhaW4gdGhyb3VnaCBkYXRhIHByb3ZpZGVyXG4gICAgaXRlbT86IEl0ZW07IC8vIGlmIHByZXNlbnQsIGl0ZW0gdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHJlc2V0IGZvcm1cbiAgICBmaWVsZHM/OiBQYXJ0aWFsPEl0ZW0+O1xuICAgIGRhdGE/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9O1xufVxuIl19","import { Directive, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport * as i0 from \"@angular/core\";\nexport class AFormlyCustomFieldComponent extends FieldType {\n get model() {\n return this._model;\n }\n get form() {\n return this._form;\n }\n get options() {\n return this._options;\n }\n get key() {\n return this._key;\n }\n get formControl() {\n return this._formControl;\n }\n get props() {\n return this._props;\n }\n get showError() {\n return this._showError;\n }\n get id() {\n return this._id;\n }\n get formState() {\n return this._formState;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AFormlyCustomFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.7\", type: AFormlyCustomFieldComponent, isStandalone: true, inputs: { field: \"field\", _model: [\"model\", \"_model\"], _form: [\"form\", \"_form\"], _options: [\"options\", \"_options\"], _key: [\"key\", \"_key\"], _formControl: [\"formControl\", \"_formControl\"], _props: [\"props\", \"_props\"], _showError: [\"showError\", \"_showError\"], _id: [\"id\", \"_id\"], _formState: [\"formState\", \"_formState\"] }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AFormlyCustomFieldComponent, decorators: [{\n type: Directive\n }], propDecorators: { field: [{\n type: Input,\n args: ['field']\n }], _model: [{\n type: Input,\n args: ['model']\n }], _form: [{\n type: Input,\n args: ['form']\n }], _options: [{\n type: Input,\n args: ['options']\n }], _key: [{\n type: Input,\n args: ['key']\n }], _formControl: [{\n type: Input,\n args: ['formControl']\n }], _props: [{\n type: Input,\n args: ['props']\n }], _showError: [{\n type: Input,\n args: ['showError']\n }], _id: [{\n type: Input,\n args: ['id']\n }], _formState: [{\n type: Input,\n args: ['formState']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBTTNDLE1BQU0sT0FBZ0IsMkJBQTJFLFNBQVEsU0FBc0U7SUFZM0ssSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBYSxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFhLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQWEsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQzs4R0E5Q2lCLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQURoRCxTQUFTOzhCQUVrQixLQUFLO3NCQUE1QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0UsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNDLEtBQUs7c0JBQW5CLEtBQUs7dUJBQUMsTUFBTTtnQkFDSyxRQUFRO3NCQUF6QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0YsSUFBSTtzQkFBakIsS0FBSzt1QkFBQyxLQUFLO2dCQUNVLFlBQVk7c0JBQWpDLEtBQUs7dUJBQUMsYUFBYTtnQkFDSixNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU87Z0JBQ00sVUFBVTtzQkFBN0IsS0FBSzt1QkFBQyxXQUFXO2dCQUNMLEdBQUc7c0JBQWYsS0FBSzt1QkFBQyxJQUFJO2dCQUNTLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLCBDb21tb25zRm9ybWx5RmllbGRQcm9wc30gZnJvbSAnLi9mb3JtbHktZmllbGQubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5Rm9ybU9wdGlvbnMsIENvbW1vbnNGb3JtbHlGb3JtU3RhdGV9IGZyb20gJy4vZm9ybWx5LW9wdGlvbnMubW9kZWwnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQ8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlID0gdW5kZWZpbmVkPiBleHRlbmRzIEZpZWxkVHlwZTxDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPj4ge1xuICAgIEBJbnB1dCgnZmllbGQnKSBkZWNsYXJlIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWc8VmFsdWUsIEZvcm1WYWx1ZSwgUGFyZW50Rm9ybVZhbHVlPjtcbiAgICBASW5wdXQoJ21vZGVsJykgX21vZGVsITogVmFsdWU7XG4gICAgQElucHV0KCdmb3JtJykgX2Zvcm0hOiBGb3JtR3JvdXA8e1tLIGluIGtleW9mIEZvcm1WYWx1ZV06IEFic3RyYWN0Q29udHJvbDxGb3JtVmFsdWVbS10+fT47XG4gICAgQElucHV0KCdvcHRpb25zJykgX29wdGlvbnMhOiBDb21tb25zRm9ybWx5Rm9ybU9wdGlvbnM8Rm9ybVZhbHVlPjtcbiAgICBASW5wdXQoJ2tleScpIF9rZXkhOiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAgIEBJbnB1dCgnZm9ybUNvbnRyb2wnKSBfZm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDxWYWx1ZT47XG4gICAgQElucHV0KCdwcm9wcycpIF9wcm9wcyE6IENvbW1vbnNGb3JtbHlGaWVsZFByb3BzPFZhbHVlLCBGb3JtVmFsdWUsIFBhcmVudEZvcm1WYWx1ZT47XG4gICAgQElucHV0KCdzaG93RXJyb3InKSBfc2hvd0Vycm9yITogYm9vbGVhbjtcbiAgICBASW5wdXQoJ2lkJykgX2lkITogc3RyaW5nO1xuICAgIEBJbnB1dCgnZm9ybVN0YXRlJykgX2Zvcm1TdGF0ZSE6IENvbW1vbnNGb3JtbHlGb3JtU3RhdGU8Rm9ybVZhbHVlPjtcblxuICAgIG92ZXJyaWRlIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBmb3JtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IGtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgZm9ybUNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgcHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wcztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQgc2hvd0Vycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0Vycm9yO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldCBmb3JtU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtU3RhdGU7XG4gICAgfVxufVxuIl19","import { DataProviderInst } from '@mediusinc/mng-commons/core';\nimport { TableDataProviderInst } from '@mediusinc/mng-commons/table/api';\nimport { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';\nexport class TableviewDataProviderInst extends DataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n this.editorDataProvider = new EditorDataProviderInst(serviceType);\n this.tableDataProvider = new TableDataProviderInst(serviceType);\n }\n get isLazy() {\n return this.tableDataProvider.isLazy;\n }\n get tableReload$() {\n return this.tableDataProvider.tableReload$;\n }\n get editorReset$() {\n return this.editorDataProvider.editorReset$;\n }\n get getAll() {\n return this.tableDataProvider.getAll;\n }\n get fetch() {\n return this.editorDataProvider.fetch;\n }\n get create() {\n return this.editorDataProvider.create;\n }\n get update() {\n return this.editorDataProvider.update;\n }\n get delete() {\n return this.editorDataProvider.delete;\n }\n get mapFetchItemToCreateItem() {\n return this.editorDataProvider.mapFetchItemToCreateItem;\n }\n get mapFetchItemToUpdateItem() {\n return this.editorDataProvider.mapFetchItemToUpdateItem;\n }\n withGetAll(fn) {\n this.tableDataProvider.withGetAll(fn);\n return this;\n }\n withGetAllEagerly(fn) {\n this.tableDataProvider.withGetAllEagerly(fn);\n return this;\n }\n withFetch(fn) {\n this.editorDataProvider.withFetch(fn);\n return this;\n }\n withCreate(fn) {\n this.editorDataProvider.withCreate(fn);\n return this;\n }\n withUpdate(fn) {\n this.editorDataProvider.withUpdate(fn);\n return this;\n }\n withDelete(fn) {\n this.editorDataProvider.withDelete(fn);\n return this;\n }\n withMapFetchItemToCreateItem(fn) {\n this.editorDataProvider.withMapFetchItemToCreateItem(fn);\n return this;\n }\n withMapFetchItemToUpdateItem(fn) {\n this.editorDataProvider.withMapFetchItemToUpdateItem(fn);\n return this;\n }\n reloadTable(event) {\n this.tableDataProvider.reloadTable(event);\n }\n resetEditor(event) {\n this.editorDataProvider.resetEditor(event);\n }\n}\nexport class DynamicTableviewDataProviderInst extends TableviewDataProviderInst {\n constructor(serviceType) {\n super(serviceType);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGF0YS1wcm92aWRlcnMvdGFibGV2aWV3LmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBd0YscUJBQXFCLEVBQW1CLE1BQU0sa0NBQWtDLENBQUM7QUFFaEwsT0FBTyxFQUtILHNCQUFzQixFQUd6QixNQUFNLGtEQUFrRCxDQUFDO0FBYzFELE1BQU0sT0FBTyx5QkFVVCxTQUFRLGdCQUE4QztJQVF0RCxZQUFtQixXQUF5QjtRQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksc0JBQXNCLENBQXlELFdBQVcsQ0FBQyxDQUFDO1FBQzFILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHFCQUFxQixDQUFvRCxXQUFXLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQXNFO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQTJEO1FBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQWlEO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFnRTtRQUN2RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBZ0U7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsVUFBVSxDQUFtQixFQUF5RDtRQUNsRixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxFQUEyRDtRQUNwRixJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDRCQUE0QixDQUFDLEVBQTJEO1FBQ3BGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXdDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUErQjtRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxnQ0FBNkYsU0FBUSx5QkFBK0Q7SUFDN0ssWUFBbUIsV0FBeUI7UUFDeEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0YVByb3ZpZGVySW5zdCwgU2VydmljZUNsYXNzT3B0VHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyLCBUYWJsZURhdGFQcm92aWRlckdldEFsbEVhZ2VyRm5UeXBlLCBUYWJsZURhdGFQcm92aWRlckdldEFsbEZuVHlwZSwgVGFibGVEYXRhUHJvdmlkZXJJbnN0LCBUYWJsZVJlbG9hZEV2ZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7XG4gICAgRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlLFxuICAgIEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZSxcbiAgICBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZSxcbiAgICBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaE1hcFRvRm5UeXBlLFxuICAgIEVkaXRvckRhdGFQcm92aWRlckluc3QsXG4gICAgRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlRm5UeXBlLFxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJcbn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yUmVzZXRFdmVudH0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9mb3JtLWVkaXRvci5ldmVudCc7XG5cbmV4cG9ydCB0eXBlIElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwgPSBhbnksXG4gICAgU2VydmljZSA9IGFueSxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBDcmVhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbj4gPSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4gJiBJVGFibGVEYXRhUHJvdmlkZXI8VGFibGVNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcz47XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PFxuICAgICAgICBNb2RlbCxcbiAgICAgICAgU2VydmljZSA9IGFueSxcbiAgICAgICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICAgICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsLFxuICAgICAgICBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LFxuICAgICAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgICAgIENyZWF0ZU1vZGVsID0gTW9kZWwsXG4gICAgICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbiAgICA+XG4gICAgZXh0ZW5kcyBEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3M+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+LFxuICAgICAgICBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD5cbntcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdG9yRGF0YVByb3ZpZGVyOiBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhYmxlRGF0YVByb3ZpZGVyOiBUYWJsZURhdGFQcm92aWRlckluc3Q8VGFibGVNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcz47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc2VydmljZVR5cGU6IFNlcnZpY2VDbGFzcykge1xuICAgICAgICBzdXBlcihzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNlcnZpY2VDbGFzcywgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHRoaXMudGFibGVEYXRhUHJvdmlkZXIgPSBuZXcgVGFibGVEYXRhUHJvdmlkZXJJbnN0PFRhYmxlTW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3M+KHNlcnZpY2VUeXBlKTtcbiAgICB9XG5cbiAgICBnZXQgaXNMYXp5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZURhdGFQcm92aWRlci5pc0xhenk7XG4gICAgfVxuXG4gICAgZ2V0IHRhYmxlUmVsb2FkJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhUHJvdmlkZXIudGFibGVSZWxvYWQkO1xuICAgIH1cblxuICAgIGdldCBlZGl0b3JSZXNldCQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5lZGl0b3JSZXNldCQ7XG4gICAgfVxuXG4gICAgZ2V0IGdldEFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhUHJvdmlkZXIuZ2V0QWxsO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLmZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLnVwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlO1xuICAgIH1cblxuICAgIGdldCBtYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRhdGFQcm92aWRlci5tYXBGZXRjaEl0ZW1Ub0NyZWF0ZUl0ZW07XG4gICAgfVxuXG4gICAgZ2V0IG1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLm1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbTtcbiAgICB9XG5cbiAgICB3aXRoR2V0QWxsKGZuOiBUYWJsZURhdGFQcm92aWRlckdldEFsbEZuVHlwZTxUYWJsZU1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGFQcm92aWRlci53aXRoR2V0QWxsKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aEdldEFsbEVhZ2VybHkoZm46IFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRWFnZXJGblR5cGU8VGFibGVNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGFQcm92aWRlci53aXRoR2V0QWxsRWFnZXJseShmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhGZXRjaChmbjogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hGblR5cGU8TW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLndpdGhGZXRjaChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhDcmVhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8Q3JlYXRlTW9kZWwsIE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoQ3JlYXRlKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFVwZGF0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxVcGRhdGVNb2RlbCwgTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLndpdGhVcGRhdGUoZm4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoRGVsZXRlPEl0ZW0gPSB1bmRlZmluZWQ+KGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlLCBJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoRGVsZXRlPEl0ZW0+KGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIENyZWF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9DcmVhdGVJdGVtKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1hcEZldGNoSXRlbVRvVXBkYXRlSXRlbShmbj86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIFVwZGF0ZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLmVkaXRvckRhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmVsb2FkVGFibGUoZXZlbnQ/OiBUYWJsZVJlbG9hZEV2ZW50PFNvcnRzLCBGaWx0ZXJzPik6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YVByb3ZpZGVyLnJlbG9hZFRhYmxlKGV2ZW50KTtcbiAgICB9XG5cbiAgICByZXNldEVkaXRvcihldmVudD86IEVkaXRvclJlc2V0RXZlbnQ8TW9kZWw+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YVByb3ZpZGVyLnJlc2V0RWRpdG9yKGV2ZW50KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+PiBleHRlbmRzIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8YW55LCBTZXJ2aWNlLCBhbnksIGFueSwgU2VydmljZUNsYXNzPiB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIoc2VydmljZVR5cGUpO1xuICAgIH1cbn1cbiJdfQ==","import { DynamicTableviewDataProviderInst, TableviewDataProviderInst } from './tableview.data-provider';\n/**\n * Creates and returns an instance of `TableviewDataProviderInst` with the specified options for managing tableview data.\n *\n * @param {Object} [opts] - The options object to configure the data provider.\n * @param {TypeDescriptor<Model> | ModelDescriptor<Model>} [opts.type] - The descriptor defining the type of model.\n * @param {ServiceClassType<Service>} [opts.service] - The service class type associated with the data provider.\n * @param {TypeDescriptor<CreateModel> | ModelDescriptor<CreateModel>} [opts.filtersType] - The descriptor defining the filters type.\n * @param {TypeDescriptor<UpdateModel> | ModelDescriptor<UpdateModel>} [opts.sortsType] - The descriptor defining the sorts type.\n * @return {TableviewDataProviderInst<Model, Service, Sorts, Filters, ServiceClass, TableModel, CreateModel, UpdateModel>} An instance of `TableviewDataProviderInst` configured according to the provided options.\n */\nexport function tableviewDataProvider(opts) {\n return new TableviewDataProviderInst(opts?.service);\n}\nexport function tableviewDynamicDataProvider(serviceType) {\n return new DynamicTableviewDataProviderInst(serviceType);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9kYXRhLXByb3ZpZGVycy90YWJsZXZpZXctZGF0YS1wcm92aWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXRHOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FTbkMsSUFRRDtJQUNHLE9BQU8sSUFBSSx5QkFBeUIsQ0FBcUYsSUFBSSxFQUFFLE9BQXVCLENBQUMsQ0FBQztBQUM1SixDQUFDO0FBSUQsTUFBTSxVQUFVLDRCQUE0QixDQUN4QyxXQUEwQjtJQUUxQixPQUFPLElBQUksZ0NBQWdDLENBQXdCLFdBQTJCLENBQUMsQ0FBQztBQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdCwgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnLi90YWJsZXZpZXcuZGF0YS1wcm92aWRlcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdGAgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMgZm9yIG1hbmFnaW5nIHRhYmxldmlldyBkYXRhLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBUaGUgb3B0aW9ucyBvYmplY3QgdG8gY29uZmlndXJlIHRoZSBkYXRhIHByb3ZpZGVyLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8TW9kZWw+fSBbb3B0cy50eXBlXSAtIFRoZSBkZXNjcmlwdG9yIGRlZmluaW5nIHRoZSB0eXBlIG9mIG1vZGVsLlxuICogQHBhcmFtIHtTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+fSBbb3B0cy5zZXJ2aWNlXSAtIFRoZSBzZXJ2aWNlIGNsYXNzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIHByb3ZpZGVyLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxDcmVhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8Q3JlYXRlTW9kZWw+fSBbb3B0cy5maWx0ZXJzVHlwZV0gLSBUaGUgZGVzY3JpcHRvciBkZWZpbmluZyB0aGUgZmlsdGVycyB0eXBlLlxuICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxVcGRhdGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VXBkYXRlTW9kZWw+fSBbb3B0cy5zb3J0c1R5cGVdIC0gVGhlIGRlc2NyaXB0b3IgZGVmaW5pbmcgdGhlIHNvcnRzIHR5cGUuXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+fSBBbiBpbnN0YW5jZSBvZiBgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdGAgY29uZmlndXJlZCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2UgZXh0ZW5kcyB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4+KG9wdHM/OiB7XG4gICAgdHlwZT86IFR5cGVEZXNjcmlwdG9yPE1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgdGFibGVUeXBlPzogVHlwZURlc2NyaXB0b3I8VGFibGVNb2RlbD4gfCBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD47XG4gICAgY3JlYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPENyZWF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgdXBkYXRlVHlwZT86IFR5cGVEZXNjcmlwdG9yPFVwZGF0ZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgZmlsdGVyc1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPiB8IE1vZGVsRGVzY3JpcHRvcjxGaWx0ZXJzPjtcbiAgICBzb3J0c1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxTb3J0cz4gfCBNb2RlbERlc2NyaXB0b3I8U29ydHM+O1xufSk6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3MsIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzcywgVGFibGVNb2RlbCwgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPihvcHRzPy5zZXJ2aWNlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEeW5hbWljRGF0YVByb3ZpZGVyKCk6IER5bmFtaWNUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PHVuZGVmaW5lZCwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEeW5hbWljRGF0YVByb3ZpZGVyPFNlcnZpY2U+KHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KTogRHluYW1pY1RhYmxldmlld0RhdGFQcm92aWRlckluc3Q8U2VydmljZSwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RHluYW1pY0RhdGFQcm92aWRlcjxTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+PihcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1xuKTogRHluYW1pY1RhYmxldmlld0RhdGFQcm92aWRlckluc3Q8U2VydmljZSwgU2VydmljZUNsYXNzPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxTZXJ2aWNlLCBTZXJ2aWNlQ2xhc3M+KHNlcnZpY2VUeXBlIGFzIFNlcnZpY2VDbGFzcyk7XG59XG4iXX0=","import { TableDescriptorInst, TableDynamicDescriptorInst } from '@mediusinc/mng-commons/table/api';\nimport { EditorDescriptorInst } from '../../editor/descriptors/editor.descriptor';\nimport { TableviewEditorTypeEnum } from '../../editor/models/editor.model';\nexport class TableviewDescriptorInst {\n constructor(model, opts) {\n this._isLocalized = false;\n this._model = model;\n this._table = new TableDescriptorInst(opts?.tableModel ?? model);\n this._table.withTitle(`${this._model.i18nBaseKey}.name`);\n this._detailsEditor = new EditorDescriptorInst(model, TableviewEditorTypeEnum.Details);\n this._detailsEditor.withDisabled();\n this._addEditor = new EditorDescriptorInst(opts?.addModel ?? model, TableviewEditorTypeEnum.Add);\n this._editEditor = new EditorDescriptorInst(opts?.editModel ?? model, TableviewEditorTypeEnum.Edit);\n }\n get table() {\n return this._table;\n }\n get detailsEditor() {\n return this._detailsEditor;\n }\n get addEditor() {\n return this._addEditor;\n }\n get editEditor() {\n return this._editEditor;\n }\n get model() {\n return this._model;\n }\n isLocalized() {\n return this._isLocalized;\n }\n withTableDescriptor(descriptor) {\n this._table = descriptor;\n return this;\n }\n withEditorDescriptors(descriptor) {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor;\n this._addEditor = descriptor;\n return this;\n }\n withDetailsDescriptor(descriptor) {\n this._detailsEditor = descriptor;\n return this;\n }\n withAddDescriptor(descriptor) {\n this._addEditor = descriptor;\n return this;\n }\n withEditDescriptor(descriptor) {\n this._editEditor = descriptor;\n return this;\n }\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non-disabled\n * @param type which editor type to set to disabled\n */\n withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details) {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n }\n else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n }\n else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n withValidation(name, expression, message, opts) {\n return this.withValidationUnsafe(name, expression, message, opts);\n }\n withValidationUnsafe(name, expression, message, opts) {\n this._detailsEditor.withValidationUnsafe(name, expression, message, opts);\n this._addEditor.withValidationUnsafe(name, expression, message, opts);\n this._editEditor.withValidationUnsafe(name, expression, message, opts);\n return this;\n }\n getColumn(property) {\n return this._table.getColumn(property);\n }\n getColumnUnsafe(property) {\n return this._table.getColumnUnsafe(property);\n }\n removeColumn(property) {\n this._table.removeColumn(property);\n }\n removeColumnUnsafe(property) {\n this._table.removeColumnUnsafe(property);\n }\n withColumn(column) {\n this._table.withColumn(column);\n return this;\n }\n addColumn(property) {\n return this._table.addColumn(property);\n }\n addColumnEnum(property, enumDesc) {\n return this._table.addColumnEnum(property, enumDesc);\n }\n addColumnUnsafe(property) {\n return this._table.addColumnUnsafe(property);\n }\n withColumns(...properties) {\n this._table.withColumns(...properties);\n return this;\n }\n getSort(property) {\n return this._table.getSort(property);\n }\n getSortUnsafe(property) {\n return this._table.getSortUnsafe(property);\n }\n removeSort(property) {\n this._table.removeSort(property);\n }\n removeSortUnsafe(property) {\n this._table.removeSortUnsafe(property);\n }\n addSort(property, isDefault = false, ascending) {\n return this._table.addSort(property, isDefault, ascending);\n }\n addSortUnsafe(property, isDefault = false, ascending) {\n return this._table.addSortUnsafe(property, isDefault, ascending);\n }\n withSort(property, isDefault = false, ascending) {\n this._table.withSort(property, isDefault, ascending);\n return this;\n }\n withSortUnsafe(property, isDefault = false, ascending) {\n this._table.withSortUnsafe(property, isDefault, ascending);\n return this;\n }\n withDefaultSort(property, ascending, enabled) {\n this._table.withDefaultSort(property, ascending, enabled);\n return this;\n }\n withDefaultSortUnsafe(property, ascending, enabled) {\n this._table.withDefaultSortUnsafe(property, ascending, enabled);\n return this;\n }\n withSorts(...properties) {\n this._table.withSorts(...properties);\n return this;\n }\n withSortsUnsafe(...properties) {\n this._table.withSortsUnsafe(...properties);\n return this;\n }\n withDefaultSorts(...properties) {\n this._table.withDefaultSorts(...properties);\n return this;\n }\n withoutDefaultSorts() {\n this._table.withoutDefaultSorts();\n return this;\n }\n getFilter(property) {\n return this._table.getFilter(property);\n }\n getFilterUnsafe(property) {\n return this._table.getFilterUnsafe(property);\n }\n removeFilter(property) {\n this._table.removeFilter(property);\n }\n removeFilterUnsafe(property) {\n this._table.removeFilterUnsafe(property);\n }\n addFilter(property) {\n return this._table.addFilter(property);\n }\n addFilterUnsafe(property) {\n return this._table.addFilterUnsafe(property);\n }\n addFilterLookup(property, provider, optionsValueProperty) {\n return this._table.addFilterLookup(property, provider, optionsValueProperty);\n }\n addFilterLookupUnsafe(property, provider, optionsValueProperty) {\n return this._table.addFilterLookupUnsafe(property, provider, optionsValueProperty);\n }\n addFilterLookupEnum(property, enumDesc, options) {\n return this._table.addFilterLookupEnum(property, enumDesc, options);\n }\n addFilterLookupEnumUnsafe(property, enumDesc, options) {\n return this._table.addFilterLookupEnumUnsafe(property, enumDesc, options);\n }\n addFilterFromColumn(property, displayType, forceSimple = false) {\n return this._table.addFilterFromColumn(property, displayType, forceSimple);\n }\n withFiltersFromColumns(...properties) {\n this._table.withFiltersFromColumns(...properties);\n return this;\n }\n withFiltersFromColumnsUnsafe(...properties) {\n this._table.withFiltersFromColumnsUnsafe(...properties);\n return this;\n }\n addFilterFromColumnUnsafe(property, displayType, forceSimple = false) {\n return this._table.addFilterFromColumnUnsafe(property, displayType, forceSimple);\n }\n withFilter(property, filter) {\n this._table.withFilter(property, filter);\n return this;\n }\n withFilterUnsafe(filter) {\n this._table.withFilterUnsafe(filter);\n return this;\n }\n removeField(property) {\n this.removeFieldUnsafe(property);\n }\n removeFieldUnsafe(property) {\n this._editEditor.removeFieldUnsafe(property);\n this._addEditor.removeFieldUnsafe(property);\n this._detailsEditor.removeFieldUnsafe(property);\n }\n addFieldDescriptor(field) {\n this._detailsEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n addField(property) {\n return this.addFieldUnsafe(property);\n }\n addFieldUnsafe(property) {\n const field = this._detailsEditor.addFieldUnsafe(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n withFields(...properties) {\n properties.forEach(p => this.addField(p));\n return this;\n }\n addFieldAction(actionName) {\n const field = this._detailsEditor.addFieldAction(actionName);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldToEditAndAdd(field) {\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n }\n /**\n * Adds lookup field.\n *\n * @param {Property} property - The property key of the editor.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam Property - The property key of the EditorModel.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, FieldsManageModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookup(property, opts) {\n return this.addFieldLookupUnsafe(property, opts);\n }\n /**\n * [UNSAFE] Adds lookup field.\n * This function is UNSAFE because property is not type-checked.\n *\n * @param {string} property Model property name.\n * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.\n * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.\n * @typeparam Service - Service used for data provider.\n * @typeparam FieldValue - The value type of field on editor.\n *\n * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.\n */\n addFieldLookupUnsafe(property, opts) {\n const field = this._detailsEditor.addFieldLookupUnsafe(property, opts);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldLookupEnum(property, enumDesc, options) {\n return this.addFieldLookupEnumUnsafe(property, enumDesc, options);\n }\n addFieldLookupEnumUnsafe(property, enumDesc, options) {\n const field = this._detailsEditor.addFieldLookupEnumUnsafe(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldManyEditor(property, tableviewDescriptor) {\n return this.addFieldManyEditorUnsafe(property, tableviewDescriptor);\n }\n addFieldManyEditorUnsafe(property, tableviewDescriptor) {\n const field = this._detailsEditor.addFieldManyEditorUnsafe(property, \n // cast is needed, because the parent model of TableviewDescriptorInst is expected to be TableviewModel, but it cannot be in case there are different types across details, add or edit\n tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n return this.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n }\n addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {\n const field = this._detailsEditor.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n withTabGroup(name, title) {\n this._detailsEditor.addTabGroup(name, title);\n this._addEditor.addTabGroup(name, title);\n this._editEditor.addTabGroup(name, title);\n return this;\n }\n withFieldGroup(name, title) {\n this._detailsEditor.addFieldGroup(name, title);\n this._addEditor.addFieldGroup(name, title);\n this._editEditor.addFieldGroup(name, title);\n return this;\n }\n copy() {\n const tableview = new TableviewDescriptorInst(this._model.copy());\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._isLocalized = this._isLocalized;\n return tableview;\n }\n localized(property, model, localeProperty) {\n return this.localizedUnsafe(property, model, localeProperty);\n }\n localizedUnsafe(property, model, localeProperty) {\n this._isLocalized = true;\n this._table.withLocalizationLocaleProperty(localeProperty);\n this.detailsEditor.localizedUnsafe(property, model, localeProperty);\n this.addEditor.localizedUnsafe(property, model, localeProperty);\n this.editEditor.localizedUnsafe(property, model, localeProperty);\n return this;\n }\n}\nexport class TableviewDynamicDescriptorInt extends TableviewDescriptorInst {\n constructor(model) {\n super(model);\n this._table = new TableDynamicDescriptorInst(this.model);\n }\n get table() {\n return this._table;\n }\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n withTableDescriptor(descriptor) {\n this._table = descriptor;\n return this;\n }\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n removeColumn(property) {\n this._table.removeColumn(property);\n return this;\n }\n withEntityForTranslations(i18nBaseKey) {\n this._table.model.withI18nBase(i18nBaseKey);\n this._detailsEditor.model.withI18nBase(i18nBaseKey);\n return this;\n }\n /**\n * creates deep copy of tableview object and its children\n */\n copy() {\n const descriptor = new TableviewDynamicDescriptorInt(this.model.copy());\n descriptor._table = this._table.copy();\n return descriptor;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGVzY3JpcHRvcnMvdGFibGV2aWV3LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFnRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWhLLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBUWhGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBVXpFLE1BQU0sT0FBTyx1QkFBdUI7SUF3QmhDLFlBQW1CLEtBQXNDLEVBQUUsSUFBOEU7UUFGL0gsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUE2QixJQUFJLEVBQUUsVUFBVSxJQUFLLEtBQWdELENBQUMsQ0FBQztRQUN6SSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksb0JBQW9CLENBQW9DLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBOEIsSUFBSSxFQUFFLFFBQVEsSUFBSyxLQUE4QyxFQUFFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hLLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FDdkMsSUFBSSxFQUFFLFNBQVMsSUFBSyxLQUErQyxF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LE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNhLElBQUk7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlJdGVtVHlwZSwgRW51bUNvbnN0YW50VHlwZSwgSUxvb2t1cERhdGFQcm92aWRlciwgSVRhYmxldmlld0Rlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9maWx0ZXInO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvciwgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2UsIElUYWJsZURhdGFQcm92aWRlciwgVGFibGVEZXNjcmlwdG9ySW5zdCwgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yLCBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3IsIEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZX0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHMsIElGaWVsZHNNYW5hZ2V9IGZyb20gJy4uLy4uL2VkaXRvci9tb2RlbHMvZWRpdG9yLWZpZWxkcy5tb2RlbCc7XG5pbXBvcnQge1RhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi8uLi9lZGl0b3IvbW9kZWxzL2VkaXRvci5tb2RlbCc7XG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9uTWVzc2FnZSwgRm9ybVZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9maWVsZC12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdENvbnN0cnVjdG9yT3B0czxUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPiA9IHtcbiAgICB0YWJsZU1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPFRhYmxlTW9kZWw+O1xuICAgIGFkZE1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPEFkZE1vZGVsPjtcbiAgICBlZGl0TW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8RWRpdE1vZGVsPjtcbn07XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxcbiAgICAgICAgVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIFNvcnRzID0ga2V5b2YgVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIEZpbHRlcnMgPSBrZXlvZiBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgICAgIFRhYmxlTW9kZWwgPSBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgQWRkTW9kZWwgPSBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgRWRpdE1vZGVsID0gVGFibGV2aWV3TW9kZWwsXG4gICAgICAgIEZpZWxkc01hbmFnZU1vZGVsID0gVGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZTxUYWJsZXZpZXdNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD5cbiAgICA+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBJVGFibGV2aWV3RGVzY3JpcHRvcjxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPixcbiAgICAgICAgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2U8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+LFxuICAgICAgICBJRmllbGRzTWFuYWdlPEZpZWxkc01hbmFnZU1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFRhYmxldmlld01vZGVsPjtcblxuICAgIHByb3RlY3RlZCBfdGFibGU6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuICAgIHByb3RlY3RlZCBfZGV0YWlsc0VkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2FkZEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8QWRkTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2VkaXRFZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJvdGVjdGVkIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGV2aWV3TW9kZWw+LCBvcHRzPzogVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHM8VGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4pIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4ob3B0cz8udGFibGVNb2RlbCA/PyAobW9kZWwgYXMgdW5rbm93biBhcyBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD4pKTtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFRpdGxlKGAke3RoaXMuX21vZGVsLmkxOG5CYXNlS2V5fS5uYW1lYCk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbCwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscyk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3Iud2l0aERpc2FibGVkKCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxBZGRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG9wdHM/LmFkZE1vZGVsID8/IChtb2RlbCBhcyB1bmtub3duIGFzIE1vZGVsRGVzY3JpcHRvcjxBZGRNb2RlbD4pLCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KFxuICAgICAgICAgICAgb3B0cz8uZWRpdE1vZGVsID8/IChtb2RlbCBhcyB1bmtub3duIGFzIE1vZGVsRGVzY3JpcHRvcjxFZGl0TW9kZWw+KSxcbiAgICAgICAgICAgIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXRhaWxzRWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc0VkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFkZEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yRGVzY3JpcHRvcnMoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGRlc2NyaXB0b3IgYXMgdW5rbm93biBhcyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvciBhcyB1bmtub3duIGFzIEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlsc0Rlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGREZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0RGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBuZXcgY29weSBvZiBlZGl0b3IgZGVzY3JpcHRvciBhbmQgbWFrZXMgaXQgZGlzYWJsZWRcbiAgICAgKiB1c2FibGUgaW4gY29tYmluYXRpb24gd2l0aCB0aGlzOjp3aXRoRWRpdG9yRGVzY3JpcHRvcnMsIHdoZXJlIGRldGFpbHNEZXNjcmlwdG9yIGlzIG1hZGUgbm9uLWRpc2FibGVkXG4gICAgICogQHBhcmFtIHR5cGUgd2hpY2ggZWRpdG9yIHR5cGUgdG8gc2V0IHRvIGRpc2FibGVkXG4gICAgICovXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZEVkaXRvckRlc2NyaXB0b3IodHlwZSA9IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCkud2l0aERpc2FibGVkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbjxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxrZXlvZiBGaWVsZHNNYW5hZ2VNb2RlbD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFZhbGlkYXRpb25VbnNhZmUobmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyBhcyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZT4obmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsLCBDb2x1bW5Nb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHldPiwgQ29sdW1uVmFsdWUgPSBUYWJsZU1vZGVsW1Byb3BlcnR5XT4ocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5nZXRDb2x1bW48UHJvcGVydHksIENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZT4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW5VbnNhZmU8Q29sdW1uTW9kZWwgPSBhbnksIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldENvbHVtblVuc2FmZTxDb2x1bW5Nb2RlbCwgQ29sdW1uVmFsdWU+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlPihjb2x1bW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbD4ocHJvcGVydHk6IFByb3BlcnR5KTogQ29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxUYWJsZU1vZGVsW1Byb3BlcnR5XT4sIFRhYmxlTW9kZWwsIFRhYmxlTW9kZWxbUHJvcGVydHldPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5FbnVtPFByb3BlcnR5S2V5IGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHlLZXldPj4ocHJvcGVydHk6IFByb3BlcnR5S2V5LCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkVudW0ocHJvcGVydHksIGVudW1EZXNjKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uVW5zYWZlPENvbHVtbk1vZGVsID0gYW55Pihwcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbHVtbnMoLi4ucHJvcGVydGllczogKGtleW9mIFRhYmxlTW9kZWwpW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aENvbHVtbnMoLi4ucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb3J0KHByb3BlcnR5OiBTb3J0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVNvcnQocHJvcGVydHk6IFNvcnRzKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZVNvcnQocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlU29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNvcnQocHJvcGVydHk6IFNvcnRzLCBpc0RlZmF1bHQgPSBmYWxzZSwgYXNjZW5kaW5nPzogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkU29ydChwcm9wZXJ0eSwgaXNEZWZhdWx0LCBhc2NlbmRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0KHByb3BlcnR5OiBTb3J0cywgaXNEZWZhdWx0ID0gZmFsc2UsIGFzY2VuZGluZz86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnQocHJvcGVydHksIGlzRGVmYXVsdCwgYXNjZW5kaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnQocHJvcGVydHk6IFNvcnRzLCBhc2NlbmRpbmc/OiBib29sZWFuLCBlbmFibGVkPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRGVmYXVsdFNvcnQocHJvcGVydHksIGFzY2VuZGluZywgZW5hYmxlZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgYXNjZW5kaW5nPzogYm9vbGVhbiwgZW5hYmxlZD86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aERlZmF1bHRTb3J0VW5zYWZlKHByb3BlcnR5LCBhc2NlbmRpbmcsIGVuYWJsZWQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnRzKC4uLnByb3BlcnRpZXM6IFNvcnRzW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnRzKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnRzVW5zYWZlKC4uLnByb3BlcnRpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0c1Vuc2FmZSguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydHMoLi4ucHJvcGVydGllczogU29ydHNbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRGVmYXVsdFNvcnRzKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aG91dERlZmF1bHRTb3J0cygpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aG91dERlZmF1bHRTb3J0cygpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW0ZpbHRlcnNdPiA6IGFueT4ocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldEZpbHRlcjxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWwgPSBhbnk+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWx0ZXIocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBUYWJsZU1vZGVsW0ZpbHRlcnNdIDogbmV2ZXI+KHByb3BlcnR5OiBGaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWw+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyTG9va3VwPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW0ZpbHRlcnNdPiA6IG5ldmVyLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICAgICAgcHJvcGVydHk6IEZpbHRlcnMsXG4gICAgICAgIHByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJNb2RlbCwgU2VydmljZSwgYW55LCBhbnk+LFxuICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IGtleW9mIEZpbHRlck1vZGVsXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXA8RmlsdGVyTW9kZWwsIFNlcnZpY2U+KHByb3BlcnR5LCBwcm92aWRlciwgb3B0aW9uc1ZhbHVlUHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBVbnNhZmU8RmlsdGVyTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2UsIGFueSwgYW55PixcbiAgICAgICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckxvb2t1cFVuc2FmZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4ocHJvcGVydHksIHByb3ZpZGVyLCBvcHRpb25zVmFsdWVQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW08RW51bT4ocHJvcGVydHk6IEZpbHRlcnMsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW1VbnNhZmU8RW51bSA9IEVudW1Db25zdGFudFR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJNb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBFeHRyYWN0PEZpbHRlcnMsIFByb3BlcnR5PixcbiAgICAgICAgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sXG4gICAgICAgIGZvcmNlU2ltcGxlID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW48UHJvcGVydHksIEZpbHRlck1vZGVsPihwcm9wZXJ0eSwgZGlzcGxheVR5cGUsIGZvcmNlU2ltcGxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzOiBFeHRyYWN0PEZpbHRlcnMsIGtleW9mIFRhYmxlTW9kZWw+W10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJzRnJvbUNvbHVtbnNVbnNhZmUoLi4ucHJvcGVydGllczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1uc1Vuc2FmZSguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sIGZvcmNlU2ltcGxlID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHksIGRpc3BsYXlUeXBlLCBmb3JjZVNpbXBsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5OiBGaWx0ZXJzLCBmaWx0ZXI6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5LCBmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyOiBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGQocHJvcGVydHk6IGtleW9mIEZpZWxkc01hbmFnZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5yZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCBhcyB1bmtub3duIGFzIEFGaWVsZERlc2NyaXB0b3I8YW55LCBUYWJsZXZpZXdNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCBhcyB1bmtub3duIGFzIEFGaWVsZERlc2NyaXB0b3I8YW55LCBBZGRNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQgYXMgdW5rbm93biBhcyBBRmllbGREZXNjcmlwdG9yPGFueSwgRWRpdE1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBGaWVsZHNNYW5hZ2VNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsID0gRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkIGFzIHVua25vd24gYXMgRmllbGRJbnB1dERlc2NyaXB0b3I8RmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkcyguLi5wcm9wZXJ0aWVzOiAoa2V5b2YgRmllbGRzTWFuYWdlTW9kZWwpW10pOiB0aGlzIHtcbiAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoKHAgPT4gdGhpcy5hZGRGaWVsZChwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZEFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcpOiBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RmllbGRzTWFuYWdlTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZEFjdGlvbihhY3Rpb25OYW1lKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxGaWVsZHNNYW5hZ2VNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRmllbGRUb0VkaXRBbmRBZGQ8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIGFueSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KSB7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBsb29rdXAgZmllbGQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Byb3BlcnR5fSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge0ZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT59IG9wdHMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGNvbmZpZ3VyaW5nIHR5cGUgYW5kL29yIHNlcnZpY2UgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBTZXJ2aWNlIHVzZWQgZm9yIGRhdGEgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8XG4gICAgICAgIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRmllbGRzTWFuYWdlTW9kZWwsXG4gICAgICAgIFNlcnZpY2UgPSB1bmRlZmluZWQsXG4gICAgICAgIExvb2t1cE1vZGVsIGV4dGVuZHMgTm9uTnVsbGFibGU8RmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldPiA9IE5vbk51bGxhYmxlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sXG4gICAgICAgIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV1cbiAgICA+KHByb3BlcnR5OiBQcm9wZXJ0eSwgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRMb29rdXBVbnNhZmU8TG9va3VwTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgb3B0cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogW1VOU0FGRV0gQWRkcyBsb29rdXAgZmllbGQuXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBVTlNBRkUgYmVjYXVzZSBwcm9wZXJ0eSBpcyBub3QgdHlwZS1jaGVja2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBvcHRzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBjb25maWd1cmluZyB0eXBlIGFuZC9vciBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBTZXJ2aWNlIHVzZWQgZm9yIGRhdGEgcHJvdmlkZXIuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBVbnNhZmU8TG9va3VwTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQsIEZpZWxkVmFsdWUgPSBMb29rdXBNb2RlbD4ocHJvcGVydHk6IHN0cmluZywgb3B0cz86IEZpZWxkc01hbmFnZUFkZEZpZWxkTG9va3VwT3B0czxMb29rdXBNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgb3B0cyk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQgYXMgdW5rbm93biBhcyBGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEZpZWxkc01hbmFnZU1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bTxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEZpZWxkc01hbmFnZU1vZGVsLCBFbnVtIGV4dGVuZHMgTm9uTnVsbGFibGU8RmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LFxuICAgICAgICBvcHRpb25zPzogQXJyYXk8RW51bT5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5IGFzIHN0cmluZywgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bSA9IEVudW1Db25zdGFudFR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmU8RW51bT4ocHJvcGVydHksIGVudW1EZXNjLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgRmllbGRzTWFuYWdlTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEZpZWxkc01hbmFnZU1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBGaWVsZHNNYW5hZ2VNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5IGFzIHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEZpZWxkc01hbmFnZU1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAvLyBjYXN0IGlzIG5lZWRlZCwgYmVjYXVzZSB0aGUgcGFyZW50IG1vZGVsIG9mIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0IGlzIGV4cGVjdGVkIHRvIGJlIFRhYmxldmlld01vZGVsLCBidXQgaXQgY2Fubm90IGJlIGluIGNhc2UgdGhlcmUgYXJlIGRpZmZlcmVudCB0eXBlcyBhY3Jvc3MgZGV0YWlscywgYWRkIG9yIGVkaXRcbiAgICAgICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIGFueSwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbCwgRmllbGRNb2RlbD5cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEZpZWxkc01hbmFnZU1vZGVsLFxuICAgICAgICBTZXJ2aWNlLFxuICAgICAgICBGaWVsZE1vZGVsID0gQXJyYXlJdGVtVHlwZTxGaWVsZHNNYW5hZ2VNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gRmllbGRzTWFuYWdlTW9kZWxbUHJvcGVydHldXG4gICAgPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTWFueVRvTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZE1hbnlUb01hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZT4ocHJvcGVydHksIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZCBhcyB1bmtub3duIGFzIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRzTWFuYWdlTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYkdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01hbmFnZU1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYmxldmlldyA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsLCBGaWVsZHNNYW5hZ2VNb2RlbD4odGhpcy5fbW9kZWwuY29weSgpKTtcbiAgICAgICAgdGFibGV2aWV3Ll90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fYWRkRWRpdG9yID0gdGhpcy5fYWRkRWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9lZGl0RWRpdG9yID0gdGhpcy5fZWRpdEVkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgcmV0dXJuIHRhYmxldmlldztcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIExvY2FsaXphdGlvbk1vZGVsID0gQXJyYXlJdGVtVHlwZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPExvY2FsaXphdGlvbk1vZGVsPixcbiAgICAgICAgbG9jYWxlUHJvcGVydHk6IGtleW9mIExvY2FsaXphdGlvbk1vZGVsXG4gICAgKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcsIG1vZGVsLCBsb2NhbGVQcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWRVbnNhZmU8TG9jYWxpemF0aW9uTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uTW9kZWw+LCBsb2NhbGVQcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzTG9jYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aExvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KGxvY2FsZVByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuZGV0YWlsc0VkaXRvci5sb2NhbGl6ZWRVbnNhZmUocHJvcGVydHksIG1vZGVsLCBsb2NhbGVQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5lZGl0RWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCBleHRlbmRzIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueT4ge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfdGFibGU6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICBzdXBlcihtb2RlbCk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0KHRoaXMubW9kZWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGN1c3RvbSB0YWJsZSBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgdmlzaWJpbGl0eSBoaWRkZW4gc3RhdGUgdG8gY29sdW1uIHdpdGggZ2l2ZW4gcHJvcGVydHlcbiAgICAgKiBlcXVhbHMgdG8gYmUgcmVtb3ZpbmcgaW4gYXV0byBhbmQgYmFzZSB0YWJsZXZpZXcgZGVzY3JpcHRvclxuICAgICAqICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbidzIHByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbihwcm9wZXJ0eSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRW50aXR5Rm9yVHJhbnNsYXRpb25zKGkxOG5CYXNlS2V5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUubW9kZWwud2l0aEkxOG5CYXNlKGkxOG5CYXNlS2V5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5tb2RlbC53aXRoSTE4bkJhc2UoaTE4bkJhc2VLZXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlZXAgY29weSBvZiB0YWJsZXZpZXcgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3JJbnQodGhpcy5tb2RlbC5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19","import { ModelDescriptor, model } from '@mediusinc/mng-commons/model';\nimport { TableviewDescriptorInst, TableviewDynamicDescriptorInt } from './tableview.descriptor';\nexport function tableviewDescriptor(modelOrOpts, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nopts) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst(model());\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst(modelOrOpts);\n }\n else {\n return new TableviewDescriptorInst(model(modelOrOpts));\n }\n}\nexport function tableviewDescriptorMultiModel(modelOrOpts, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nopts) {\n if (modelOrOpts == null) {\n return new TableviewDescriptorInst(model());\n }\n else if (modelOrOpts instanceof ModelDescriptor) {\n return new TableviewDescriptorInst(modelOrOpts);\n }\n else {\n return new TableviewDescriptorInst(model(modelOrOpts));\n }\n}\nexport function tableviewDynamicDescriptor(modelOrOpts) {\n return modelOrOpts instanceof ModelDescriptor\n ? new TableviewDynamicDescriptorInt(modelOrOpts)\n : new TableviewDynamicDescriptorInt(new ModelDescriptor(modelOrOpts?.id, modelOrOpts?.title, modelOrOpts?.i18nBase));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlc2NyaXB0b3IuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9kZXNjcmlwdG9ycy90YWJsZXZpZXctZGVzY3JpcHRvci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQTZDLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSS9HLE9BQU8sRUFBQyx1QkFBdUIsRUFBMEMsNkJBQTZCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQThDdEksTUFBTSxVQUFVLG1CQUFtQixDQUMvQixXQUFxSTtBQUNySSw2REFBNkQ7QUFDN0QsSUFBcUc7SUFFckcsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLHVCQUF1QixDQUE0RSxLQUFLLEVBQVMsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7U0FBTSxJQUFJLFdBQVcsWUFBWSxlQUFlLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksdUJBQXVCLENBQTRFLFdBQVcsQ0FBQyxDQUFDO0lBQy9ILENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxJQUFJLHVCQUF1QixDQUE0RSxLQUFLLENBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3SSxDQUFDO0FBQ0wsQ0FBQztBQWlFRCxNQUFNLFVBQVUsNkJBQTZCLENBU3pDLFdBRStJO0FBQy9JLDZEQUE2RDtBQUM3RCxJQUFnSjtJQUVoSixJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksdUJBQXVCLENBQTRFLEtBQUssRUFBUyxDQUFDLENBQUM7SUFDbEksQ0FBQztTQUFNLElBQUksV0FBVyxZQUFZLGVBQWUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSx1QkFBdUIsQ0FBNEUsV0FBVyxDQUFDLENBQUM7SUFDL0gsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLElBQUksdUJBQXVCLENBQTRFLEtBQUssQ0FBUSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdJLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxXQUF3RztJQUV4RyxPQUFPLFdBQVcsWUFBWSxlQUFlO1FBQ3pDLENBQUMsQ0FBQyxJQUFJLDZCQUE2QixDQUFDLFdBQVcsQ0FBQztRQUNoRCxDQUFDLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLGVBQWUsQ0FBTSxXQUFXLEVBQUUsRUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFlLEVBQUUsV0FBVyxFQUFFLFFBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQ2hLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0cywgVHlwZURlc2NyaXB0b3IsIG1vZGVsfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdCwgVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHMsIFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50fSBmcm9tICcuL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxudHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlU29ydHNGaWx0ZXJzUGFyZW50T3B0c1R5cGU8TW9kZWwsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0ge1xuICAgIGZpbHRlcnNUeXBlPzogVHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz47XG4gICAgc29ydHNUeXBlPzogVHlwZURlc2NyaXB0b3I8U29ydHM+IHwgTW9kZWxEZXNjcmlwdG9yPEZpbHRlcnM+O1xuICAgIHBhcmVudEVkaXRvclR5cGU/OlxuICAgICAgICB8IFR5cGVEZXNjcmlwdG9yPFBhcmVudEVkaXRvck1vZGVsPlxuICAgICAgICB8IE1vZGVsRGVzY3JpcHRvcjxQYXJlbnRFZGl0b3JNb2RlbD5cbiAgICAgICAgfCBFZGl0b3JEZXNjcmlwdG9ySW5zdDxQYXJlbnRFZGl0b3JNb2RlbCwgYW55PlxuICAgICAgICB8IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFBhcmVudEVkaXRvck1vZGVsLCBhbnksIGFueSwgYW55LCBhbnksIFBhcmVudEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVNvcnRzRmlsdGVyc1BhcmVudE9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+ICYgTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0czxNb2RlbD47XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFxuICAgIE1vZGVsLFxuICAgIFNvcnRzLFxuICAgIEZpbHRlcnMsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwsXG4gICAgVGFibGVNb2RlbCxcbiAgICBNb2RlbCxcbiAgICBNb2RlbCxcbiAgICBNb2RlbFxuPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KFxuICAgIG9wdHM6IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbD5cbik6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3I8TW9kZWwsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsIFRhYmxlTW9kZWwgPSBNb2RlbD4oXG4gICAgb3B0czogVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsPlxuKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvcjxNb2RlbCwgU29ydHMgPSBrZXlvZiBNb2RlbCwgRmlsdGVycyA9IGtleW9mIE1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCwgVGFibGVNb2RlbCA9IE1vZGVsPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+XG4pOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgTW9kZWwsIE1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yPE1vZGVsLCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLCBUYWJsZU1vZGVsID0gTW9kZWw+KFxuICAgIG1vZGVsT3JPcHRzPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9wdHM/OiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+XG4pIHtcbiAgICBpZiAobW9kZWxPck9wdHMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIE1vZGVsLCBNb2RlbCwgTW9kZWw+KG1vZGVsPE1vZGVsPigpKTtcbiAgICB9IGVsc2UgaWYgKG1vZGVsT3JPcHRzIGluc3RhbmNlb2YgTW9kZWxEZXNjcmlwdG9yKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD4obW9kZWxPck9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIE1vZGVsLCBNb2RlbD4obW9kZWw8TW9kZWw+KG1vZGVsT3JPcHRzKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBUYWJsZXZpZXdEZXNjcmlwdG9yTXVsdGlNb2RlbENyZWF0ZU9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZVNvcnRzRmlsdGVyc1BhcmVudE9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+ICYgVGFibGV2aWV3RGVzY3JpcHRvckluc3RDb25zdHJ1Y3Rvck9wdHM8VGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD47XG5cbmV4cG9ydCB0eXBlIFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVNdWx0aU1vZGVsV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+ID0gVGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWxDcmVhdGVPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPiAmIE1vZGVsRGVzY3JpcHRvckNyZWF0ZU9wdHM8TW9kZWw+O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgVGFibGVNb2RlbCA9IE1vZGVsLFxuICAgIEFkZE1vZGVsID0gTW9kZWwsXG4gICAgRWRpdE1vZGVsID0gTW9kZWxcbj4oKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbCwgVGFibGV2aWV3RGVzY3JpcHRvckZpZWxkc01hbmFnZU11bHRpVHlwZTxNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+KFxuICAgIG9wdHM6IFRhYmxldmlld0Rlc2NyaXB0b3JDcmVhdGVNdWx0aU1vZGVsV2l0aE1vZGVsRGVzY3JpcHRvck9wdHNUeXBlPE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+XG4pOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPjtcbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZXNjcmlwdG9yTXVsdGlNb2RlbDxcbiAgICBNb2RlbCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgPSBrZXlvZiBNb2RlbCxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbFxuPihcbiAgICBvcHRzOiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPlxuKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD47XG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RGVzY3JpcHRvck11bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzID0ga2V5b2YgTW9kZWwsXG4gICAgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQsXG4gICAgVGFibGVNb2RlbCA9IE1vZGVsLFxuICAgIEFkZE1vZGVsID0gTW9kZWwsXG4gICAgRWRpdE1vZGVsID0gTW9kZWxcbj4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD5cbik6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0Rlc2NyaXB0b3JNdWx0aU1vZGVsPFxuICAgIE1vZGVsLFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyA9IGtleW9mIE1vZGVsLFxuICAgIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBBZGRNb2RlbCA9IE1vZGVsLFxuICAgIEVkaXRNb2RlbCA9IE1vZGVsXG4+KFxuICAgIG1vZGVsT3JPcHRzPzpcbiAgICAgICAgfCBNb2RlbERlc2NyaXB0b3I8TW9kZWw+XG4gICAgICAgIHwgVGFibGV2aWV3RGVzY3JpcHRvckNyZWF0ZU11bHRpTW9kZWxXaXRoTW9kZWxEZXNjcmlwdG9yT3B0c1R5cGU8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbCwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9wdHM/OiBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPlxuKSB7XG4gICAgaWYgKG1vZGVsT3JPcHRzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPihtb2RlbDxNb2RlbD4oKSk7XG4gICAgfSBlbHNlIGlmIChtb2RlbE9yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+KG1vZGVsT3JPcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWwsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+KG1vZGVsPE1vZGVsPihtb2RlbE9yT3B0cykpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9yKFxuICAgIG1vZGVsT3JPcHRzPzogTW9kZWxEZXNjcmlwdG9yPGFueT4gfCBUYWJsZXZpZXdEZXNjcmlwdG9yQ3JlYXRlTXVsdGlNb2RlbFdpdGhNb2RlbERlc2NyaXB0b3JPcHRzVHlwZTxhbnk+XG4pOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCB7XG4gICAgcmV0dXJuIG1vZGVsT3JPcHRzIGluc3RhbmNlb2YgTW9kZWxEZXNjcmlwdG9yXG4gICAgICAgID8gbmV3IFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50KG1vZGVsT3JPcHRzKVxuICAgICAgICA6IG5ldyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludChuZXcgTW9kZWxEZXNjcmlwdG9yPGFueT4obW9kZWxPck9wdHM/LmlkIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LnRpdGxlIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LmkxOG5CYXNlIGFzIHN0cmluZykpO1xufVxuIl19","import { GetterPipe } from '@mediusinc/mng-commons/core';\nexport function convertDataToStringWithDelimiter(data, delimiter, descriptor, translate) {\n const replaceNullValue = (key, value) => (value === null ? '' : value);\n const getterPipe = new GetterPipe();\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.i18nBaseKey + '.properties.' + col.property)).join(delimiter),\n ...data.map((row) => descriptor.table.columns\n .map(column => {\n if (typeof column.getter === 'function') {\n return JSON.stringify(getterPipe.transform(row[column.property], column.getter, row), replaceNullValue);\n }\n else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter))\n ].join('\\r\\n');\n}\nexport function saveFileAs(blob, filename) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.dispatchEvent(new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n }));\n document.body.removeChild(link);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXhwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvZmlsZXMtZXhwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl2RCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsSUFBVyxFQUFFLFNBQWlCLEVBQUUsVUFBa0QsRUFBRSxTQUEyQjtJQUM1SixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFDcEMsT0FBTztRQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsY0FBYyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDcEksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDckIsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPO2FBQ25CLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNWLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUN2QjtLQUNKLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVUsRUFBRSxRQUFnQjtJQUNuRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhDLElBQUksQ0FBQyxhQUFhLENBQ2QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ3BCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLElBQUk7UUFDaEIsSUFBSSxFQUFFLE1BQU07S0FDZixDQUFDLENBQ0wsQ0FBQztJQUVGLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge0dldHRlclBpcGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKGRhdGE6IGFueVtdLCBkZWxpbWl0ZXI6IHN0cmluZywgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVwbGFjZU51bGxWYWx1ZSA9IChrZXk6IGFueSwgdmFsdWU6IGFueSkgPT4gKHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSk7XG4gICAgY29uc3QgZ2V0dGVyUGlwZSA9IG5ldyBHZXR0ZXJQaXBlKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZGVzY3JpcHRvci50YWJsZS5jb2x1bW5zLm1hcChjb2wgPT4gdHJhbnNsYXRlLmluc3RhbnQoZGVzY3JpcHRvci5tb2RlbC5pMThuQmFzZUtleSArICcucHJvcGVydGllcy4nICsgY29sLnByb3BlcnR5KSkuam9pbihkZWxpbWl0ZXIpLFxuICAgICAgICAuLi5kYXRhLm1hcCgocm93OiBhbnkpID0+XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnRhYmxlLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAubWFwKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sdW1uLmdldHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGdldHRlclBpcGUudHJhbnNmb3JtKHJvd1tjb2x1bW4ucHJvcGVydHldLCBjb2x1bW4uZ2V0dGVyLCByb3cpLCByZXBsYWNlTnVsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShyb3dbY29sdW1uLnByb3BlcnR5XSwgcmVwbGFjZU51bGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKGRlbGltaXRlcilcbiAgICAgICAgKVxuICAgIF0uam9pbignXFxyXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZUFzKGJsb2I6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgbGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIGxpbmsudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgbGluay5ocmVmID0gYmxvYlVybDtcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgbGluay5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7XG4gICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZpZXc6IHdpbmRvd1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xufVxuIl19","import { Injector, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { of, tap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonsInternalError, StyleLevelEnum, StyleSizeEnum, copyDataListParams } from '@mediusinc/mng-commons/core';\nimport { actionGetProviderCfgObj } from '../../action/descriptors/action-descriptor.factory';\nimport { actionEditorGetProviderCfgObj } from '../../action/descriptors/action-editor-descriptor.factory';\nimport { ActionEditorDescriptorInst, actionEditorCancel } from '../../action/descriptors/action-editor.descriptor';\nimport { actionLink } from '../../action/descriptors/action-link-descriptor.factory';\nimport { ActionDescriptorInst } from '../../action/descriptors/action.descriptor';\nimport { ActionPositionEnum } from '../../action/models/action.type';\nimport { TableviewActionDefaultCategories } from '../../action/models/tableview-action-default-categories.model';\nimport { DataProviderExecutor } from '../../action/services/data-provider-executor.service';\nimport { DATA_LANGUAGE_DROPDOWN_COMPONENT_IT } from '../../action/services/tokens/data-language-dropdown.token';\nimport { convertDataToStringWithDelimiter, saveFileAs } from './files-export';\nexport var TableviewDefaultActionsEnum;\n(function (TableviewDefaultActionsEnum) {\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Details\"] = 0] = \"Details\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Add\"] = 1] = \"Add\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Edit\"] = 2] = \"Edit\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"EditOnDetails\"] = 3] = \"EditOnDetails\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Delete\"] = 4] = \"Delete\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"DeleteOnDetails\"] = 5] = \"DeleteOnDetails\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Refresh\"] = 6] = \"Refresh\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"Export\"] = 7] = \"Export\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"ExportJson\"] = 8] = \"ExportJson\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"ExportCsv\"] = 9] = \"ExportCsv\";\n TableviewDefaultActionsEnum[TableviewDefaultActionsEnum[\"LocalizationLanguageSelect\"] = 10] = \"LocalizationLanguageSelect\";\n})(TableviewDefaultActionsEnum || (TableviewDefaultActionsEnum = {}));\nconst tableviewDefaultActions = [\n TableviewDefaultActionsEnum.Details,\n TableviewDefaultActionsEnum.Add,\n TableviewDefaultActionsEnum.Edit,\n TableviewDefaultActionsEnum.EditOnDetails,\n TableviewDefaultActionsEnum.Delete,\n TableviewDefaultActionsEnum.DeleteOnDetails,\n TableviewDefaultActionsEnum.Refresh,\n TableviewDefaultActionsEnum.Export,\n TableviewDefaultActionsEnum.ExportJson,\n TableviewDefaultActionsEnum.ExportCsv,\n TableviewDefaultActionsEnum.LocalizationLanguageSelect\n];\nexport function tableviewGetDefaultActions() {\n return [...tableviewDefaultActions];\n}\nexport function tableviewCreateDefaultActions(tableview, defaultActions, defaultActionsOverrides, injector) {\n return (defaultActions ?? tableviewGetDefaultActions())\n .map(t => tableviewCreateDefaultAction(t, tableview, defaultActions, defaultActionsOverrides, injector))\n .filter(e => e != null);\n}\nexport function tableviewCreateDefaultAction(type, tableview, defaultActions, defaultActionsOverrides, injector) {\n if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {\n return defaultActionsOverrides[type];\n }\n switch (type) {\n // table row actions\n case TableviewDefaultActionsEnum.Details:\n return tableviewActionDetailsOnTable(tableview.model, tableview.detailsEditor, { injector });\n case TableviewDefaultActionsEnum.Edit:\n return tableviewActionEditOnTable(tableview.model, tableview.editEditor, { table: tableview.table, injector });\n case TableviewDefaultActionsEnum.Delete:\n return tableviewActionDeleteOnTable(tableview.model, { table: tableview.table, injector });\n // table toolbar actions\n case TableviewDefaultActionsEnum.Add:\n return tableviewActionAddOnTable(tableview.model, tableview.addEditor, { injector });\n case TableviewDefaultActionsEnum.LocalizationLanguageSelect:\n return tableviewActionLocalizationLangSelectOnTable(tableview);\n case TableviewDefaultActionsEnum.Refresh:\n return tableviewActionRefreshOnTable(tableview.model);\n case TableviewDefaultActionsEnum.Export:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)\n ? tableviewActionExportOnTable(tableview, { injector: injector, defaultActions: defaultActions })\n : null;\n //details actions\n case TableviewDefaultActionsEnum.EditOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit) ? tableviewActionEditOnDetails(tableview.model, { injector }) : null;\n case TableviewDefaultActionsEnum.DeleteOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ? tableviewActionDeleteOnDetails(tableview.model, { injector }) : null;\n // subactions\n case TableviewDefaultActionsEnum.ExportJson:\n case TableviewDefaultActionsEnum.ExportCsv:\n return null;\n default:\n throw new CommonsInternalError(`Tableview default action of type ${type} not supported`);\n }\n}\nfunction getInjector(injector) {\n return injector === undefined ? inject(Injector) : injector;\n}\nfunction getRouteData(injector) {\n return getInjector(injector)?.get(ActivatedRoute)?.snapshot.data;\n}\nexport const tableviewActionEditorDetailsActionName = 'details';\nexport const tableviewActionEditorDetailsRoute = ':itemId';\nexport function tableviewActionDetailsOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDetails) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorDetailsActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts?.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action.withPosition(opts?.position ?? ActionPositionEnum.RowClick);\n action.withRouteTrigger(tableviewActionEditorDetailsRoute);\n action.withEditorActions([actionEditorCancel(action)]);\n action.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n return action;\n }\n return null;\n}\nexport const tableviewActionEditorAddActionName = 'add';\nexport const tableviewActionEditorAddRoute = 'add';\nexport function tableviewActionAddOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasAdd) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorAddActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withRouteTrigger(tableviewActionEditorAddRoute)\n .withButtonOpts({\n icon: 'pi pi-plus'\n });\n action.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n action.withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\nexport const tableviewActionEditorEditActionName = 'edit';\nexport const tableviewActionEditorEditRoute = ':itemId/edit';\nexport function tableviewActionEditOnTable(model, descriptor, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasEdit) {\n const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorEditActionName, {\n ...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),\n isTableviewMainEditor: true,\n model: model\n });\n action\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withButtonOpts({\n label: null,\n icon: 'pi pi-pencil',\n style: {\n size: StyleSizeEnum.Small\n }\n })\n .withRouteTrigger(tableviewActionEditorEditRoute)\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withUnsavedChangesConfirmation();\n return action;\n }\n return null;\n}\nexport function tableviewActionEditOnDetails(model, opts) {\n const routeData = getRouteData(opts?.injector);\n if (routeData?.tableviewActions && !routeData.tableviewActions.hasEdit) {\n return null;\n }\n const linkAction = actionLink(tableviewActionEditorEditActionName, { model: model });\n linkAction\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(opts?.position ?? ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit')\n .withQueryParams({}, 'merge')\n .withButtonOpts({\n icon: 'pi pi-pencil',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return linkAction;\n}\nexport const tableviewActionDeleteActionName = 'delete';\nexport function tableviewActionDeleteOnTable(model, opts) {\n const routeData = getRouteData(opts?.injector);\n if (!routeData?.tableviewActions || routeData.tableviewActions.hasDelete) {\n const action = new ActionDescriptorInst(tableviewActionDeleteActionName, {\n ...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),\n model: model\n })\n .withButtonOpts({\n label: null,\n icon: 'pi pi-trash',\n style: {\n size: StyleSizeEnum.Small,\n level: StyleLevelEnum.Danger\n }\n })\n .withPosition(opts?.position ?? ActionPositionEnum.RowInline)\n .withRunConfirmation()\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n return action;\n }\n return null;\n}\nexport function tableviewActionDeleteOnDetails(model, opts) {\n const action = tableviewActionDeleteOnTable(model, opts);\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx => dataProviderExecutor\n ? dataProviderExecutor.runDeleteOrFail(ctx).pipe(tap(() => {\n ctx.viewContainer?.reloadTable({});\n ctx.viewContainer?.closeEditor();\n }))\n : null)\n .withButtonOpts({\n ...action.button,\n label: undefined,\n style: {\n ...action.button?.style,\n size: StyleSizeEnum.Normal\n }\n });\n return action;\n }\n return null;\n}\nexport function tableviewActionExportOnTable(descriptor, opts) {\n const exportAction = new ActionDescriptorInst('export', {\n model: descriptor.model\n })\n .withButton(undefined, 'pi pi-download')\n .withSubactionsAsMenu();\n const subactions = [];\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))\n subactions.push(tableviewActionExportJsonOnTable(descriptor, opts));\n if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv))\n subactions.push(tableviewActionExportCsvOnTable(descriptor, opts));\n exportAction.withSubactions(...subactions);\n exportAction.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n return exportAction;\n}\nexport function tableviewActionExportJsonOnTable(descriptor, opts) {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst('exportJson', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {\n const blob = new Blob([JSON.stringify(res.data, undefined, 4)], { type: 'application/json;charset=utf-8' });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n }))\n : ctx.parameters.item;\n })\n .withNotifications({ runOnSuccess: false })\n .withButton(undefined, 'pi pi-code')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\nexport function tableviewActionExportCsvOnTable(descriptor, opts) {\n const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);\n return new ActionDescriptorInst('exportCsv', {\n model: descriptor.model\n })\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? copyDataListParams(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.dataListParams = params;\n return dataProviderExecutor\n ? dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {\n if (!res.data) {\n return undefined;\n }\n const blob = new Blob([convertDataToStringWithDelimiter(res.data, ',', descriptor, ctx.injector.get(TranslateService))], {\n type: 'text/csv;charset=utf-8'\n });\n const typeName = ctx.instance.action.model?.i18nBaseKey ?? '';\n saveFileAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n }))\n : ctx.parameters.item;\n })\n .withNotifications({ runOnSuccess: false })\n .withButton(undefined, 'pi pi-file')\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);\n}\nexport function tableviewActionRefreshOnTable(descriptor, opts) {\n const action = new ActionDescriptorInst('refresh', {\n model: descriptor\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withNotifications({ runOnSuccess: false })\n .withRunFunction(ctx => {\n ctx.viewContainer?.reloadTable({});\n return of(null);\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight)\n .withButtonOpts({\n icon: 'pi pi-refresh',\n style: {\n level: StyleLevelEnum.Secondary\n }\n });\n return action;\n}\nexport function tableviewActionLocalizationLangSelectOnTable(descriptor, opts) {\n return descriptor.isLocalized()\n ? new ActionDescriptorInst('translator', {\n model: descriptor.model\n })\n .withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)\n .withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)\n : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl0SSxPQUFPLEVBQXFCLHVCQUF1QixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDL0csT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUVuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFB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O2FBQzlELG1CQUFtQixDQUFDLG1DQUFtQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge29mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgU2VydmljZUNsYXNzVHlwZSwgU3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW0sIGNvcHlEYXRhTGlzdFBhcmFtc30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3QsIGFjdGlvbkVkaXRvckNhbmNlbH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmt9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVH0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Rva2Vucy9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLnRva2VuJztcbmltcG9ydCB7SUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG5pbXBvcnQge2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyLCBzYXZlRmlsZUFzfSBmcm9tICcuL2ZpbGVzLWV4cG9ydCc7XG5cbmV4cG9ydCBlbnVtIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSB7XG4gICAgRGV0YWlscyxcbiAgICBBZGQsXG4gICAgRWRpdCxcbiAgICBFZGl0T25EZXRhaWxzLFxuICAgIERlbGV0ZSxcbiAgICBEZWxldGVPbkRldGFpbHMsXG4gICAgUmVmcmVzaCxcbiAgICBFeHBvcnQsXG4gICAgRXhwb3J0SnNvbixcbiAgICBFeHBvcnRDc3YsXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Rcbn1cblxuY29uc3QgdGFibGV2aWV3RGVmYXVsdEFjdGlvbnMgPSBbXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2gsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbixcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkge1xuICAgIHJldHVybiBbLi4udGFibGV2aWV3RGVmYXVsdEFjdGlvbnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbnMoXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+IHtcbiAgICByZXR1cm4gKGRlZmF1bHRBY3Rpb25zID8/IHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkpXG4gICAgICAgIC5tYXAodCA9PiB0YWJsZXZpZXdDcmVhdGVEZWZhdWx0QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbihcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICBpZiAoZGVmYXVsdEFjdGlvbnNPdmVycmlkZXMgIT0gbnVsbCAmJiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgLy8gdGFibGUgcm93IGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5kZXRhaWxzRWRpdG9yLCB7aW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5lZGl0RWRpdG9yLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGUodGFibGV2aWV3Lm1vZGVsLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgLy8gdGFibGUgdG9vbGJhciBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlKHRhYmxldmlldy5tb2RlbCwgdGFibGV2aWV3LmFkZEVkaXRvciwge2luamVjdG9yfSk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkxvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlKHRhYmxldmlldyk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2g6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWN0aW9uUmVmcmVzaE9uVGFibGUodGFibGV2aWV3Lm1vZGVsKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0OlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpXG4gICAgICAgICAgICAgICAgPyB0YWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlKHRhYmxldmlldywge2luamVjdG9yOiBpbmplY3RvciwgZGVmYXVsdEFjdGlvbnM6IGRlZmF1bHRBY3Rpb25zfSlcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIC8vZGV0YWlscyBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCkgPyB0YWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzKHRhYmxldmlldy5tb2RlbCwge2luamVjdG9yfSkgOiBudWxsO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKSA/IHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIHtpbmplY3Rvcn0pIDogbnVsbDtcbiAgICAgICAgLy8gc3ViYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uOlxuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3Y6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgVGFibGV2aWV3IGRlZmF1bHQgYWN0aW9uIG9mIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbmplY3RvcihpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEluamVjdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIGluamVjdG9yID09PSB1bmRlZmluZWQgPyBpbmplY3QoSW5qZWN0b3IpIDogaW5qZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGdldFJvdXRlRGF0YShpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCkge1xuICAgIHJldHVybiBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChBY3RpdmF0ZWRSb3V0ZSk/LnNuYXBzaG90LmRhdGEgYXMgVGFibGV2aWV3Um91dGVEYXRhIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUgPSAnZGV0YWlscyc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc1JvdXRlID0gJzppdGVtSWQnO1xuXG50eXBlIFRhYmxldmlld0FjdGlvbkRldGFpbHNPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBUYWJsZU1vZGVsLCB1bmRlZmluZWQsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZXRhaWxzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIFRhYmxlTW9kZWwsIHVuZGVmaW5lZCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pLFxuICAgICAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIGFjdGlvbi53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi53aXRoRWRpdG9yQWN0aW9ucyhbYWN0aW9uRWRpdG9yQ2FuY2VsKGFjdGlvbildKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JBZGRBY3Rpb25OYW1lID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkUm91dGUgPSAnYWRkJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJBZGRUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgYW55LCBBZGRNb2RlbCwgYW55PjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlT3B0c1R5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlckFkZFR5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZTxNb2RlbCwgQWRkTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBBZGRNb2RlbCwgdW5kZWZpbmVkLCBNb2RlbCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgQWRkTW9kZWwsIHVuZGVmaW5lZCwgTW9kZWwsIHVuZGVmaW5lZD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdClcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckFkZFJvdXRlKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGx1cydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERCk7XG4gICAgICAgIGFjdGlvbi53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0QWN0aW9uTmFtZSA9ICdlZGl0JztcbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0Um91dGUgPSAnOml0ZW1JZC9lZGl0JztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPiA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4gfCBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBhbnksIGFueSwgRWRpdE1vZGVsPjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZU9wdHNUeXBlPE1vZGVsLCBFZGl0TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGU8TW9kZWwsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGVPcHRzVHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdEFjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I6IHRydWUsXG4gICAgICAgICAgICBtb2RlbDogbW9kZWxcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGVuY2lsJyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiBTdHlsZVNpemVFbnVtLlNtYWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRSb3V0ZSlcbiAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVClcbiAgICAgICAgICAgIC53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsc09wdHNUeXBlID0ge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsczxNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzT3B0c1R5cGUpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAocm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zICYmICFyb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtBY3Rpb24gPSBhY3Rpb25MaW5rKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRBY3Rpb25OYW1lLCB7bW9kZWw6IG1vZGVsfSk7XG4gICAgbGlua0FjdGlvblxuICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKVxuICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHt9LCAnbWVyZ2UnKVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXBlbmNpbCcsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIGxpbmtBY3Rpb247XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25EZWxldGVBY3Rpb25OYW1lID0gJ2RlbGV0ZSc7XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRGVsZXRlT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICB0YWJsZT86IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+O1xuICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4odGFibGV2aWV3QWN0aW9uRGVsZXRlQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktdHJhc2gnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uU21hbGwsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5EYW5nZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhSdW5Db25maXJtYXRpb24oKVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25EZWxldGVPbkRldGFpbHNPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIE1vZGVsLCBNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0YWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlPE1vZGVsLCBNb2RlbCwgU2VydmljZT4obW9kZWwsIG9wdHMpIGFzIHVua25vd24gYXMgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3Iob3B0cz8uaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlckV4ZWN1dG9yXG4gICAgICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuRGVsZXRlT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5yZWxvYWRUYWJsZSh7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8uY2xvc2VFZGl0b3IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICAuLi5hY3Rpb24uYnV0dG9uLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLmJ1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uTm9ybWFsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXTtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZTxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGVcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4oJ2V4cG9ydCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbih1bmRlZmluZWQsICdwaSBwaS1kb3dubG9hZCcpXG4gICAgICAgIC53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuXG4gICAgY29uc3Qgc3ViYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+W10gPSBbXTtcblxuICAgIGlmIChvcHRzPy5kZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IG9wdHM/LmRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlKGRlc2NyaXB0b3IsIG9wdHMpKTtcbiAgICBpZiAob3B0cz8uZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBvcHRzPy5kZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydENzdk9uVGFibGUoZGVzY3JpcHRvciwgb3B0cykpO1xuXG4gICAgZXhwb3J0QWN0aW9uLndpdGhTdWJhY3Rpb25zKC4uLnN1YmFjdGlvbnMpO1xuICAgIGV4cG9ydEFjdGlvbi53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG4gICAgcmV0dXJuIGV4cG9ydEFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0SnNvbicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEsIHVuZGVmaW5lZCwgNCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy5pMThuQmFzZUtleSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhCdXR0b24odW5kZWZpbmVkLCAncGkgcGktY29kZScpXG4gICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25FeHBvcnRDc3ZPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0Q3N2Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKHJlcy5kYXRhLCAnLCcsIGRlc2NyaXB0b3IsIGN0eC5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkpXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5ID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoTm90aWZpY2F0aW9ucyh7cnVuT25TdWNjZXNzOiBmYWxzZX0pXG4gICAgICAgIC53aXRoQnV0dG9uKHVuZGVmaW5lZCwgJ3BpIHBpLWZpbGUnKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG50eXBlIFRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25SZWZyZXNoT25UYWJsZU9wdHNUeXBlXG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPigncmVmcmVzaCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICB9KVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXJlZnJlc2gnLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBsZXZlbDogU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb247XG59XG5cbnR5cGUgVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZSA9IHtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uTG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGU8TW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5pc0xvY2FsaXplZCgpXG4gICAgICAgID8gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KCd0cmFuc2xhdG9yJywge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KVxuICAgICAgICAgICAgICAud2l0aENvbXBvbmVudEZyb21EaShEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVClcbiAgICAgICAgOiBudWxsO1xufVxuIl19","import { CommonsInternalError } from '@mediusinc/mng-commons/core';\nimport { ActionPositionEnum } from '../../action/models/action.type';\nimport { TableviewActionDefaultCategories } from '../../action/models/tableview-action-default-categories.model';\nimport { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nimport { tableviewCreateDefaultActions, tableviewGetDefaultActions } from './tableview-default-actions';\n/**\n * The `TableviewBuilder` class is used to build a tableview configuration.\n * It allows you to set various options such as the descriptor, data provider,\n * default actions, and custom actions for the tableview.\n *\n * @typeparam Model - The main model type.\n * @typeparam Service - The API service type.\n * @typeparam Descriptor - The descriptor type.\n * @typeparam DataProvider - The data provider type.\n * @typeparam Sorts - The sort type representing available sort keys.\n * @typeparam Filters - The filter type representing available filter keys.\n */\nexport class TableviewInputBuilder {\n constructor(_descriptor, _dataProvider, injector) {\n this._descriptor = _descriptor;\n this._dataProvider = _dataProvider;\n this.injector = injector;\n this.defaultActions = tableviewGetDefaultActions().map(a => ({ type: a, descriptor: undefined }));\n this._customActions = [];\n }\n prepareSetterParams() {\n return { descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector };\n }\n /**\n * Sets a descriptor instead of the default one.\n *\n * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDescriptor(fn) {\n this._descriptor = fn(this.prepareSetterParams());\n return this;\n }\n /**\n * Adjusts the descriptor using the provided adjust function.\n *\n * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDescriptor(adjustFn) {\n adjustFn(this._descriptor);\n return this;\n }\n /**\n * Sets the data provider for the TvBuilder instance\n *\n * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * * @returns {this} - Returns the current instance of the builder.\n */\n withDataProvider(fn) {\n this._dataProvider = fn(this.prepareSetterParams());\n return this;\n }\n /**\n * Adjusts the data provider using the provided adjust function.\n *\n * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDataProvider(adjustFn) {\n adjustFn(this._dataProvider);\n return this;\n }\n /**\n * Adjusts the data provider and/or descriptor using the provided adjust function.\n *\n * @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>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjust(adjustFn) {\n adjustFn(this.prepareSetterParams());\n return this;\n }\n /**\n * Associates a fetch function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the fetch API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of fetch function on API service.\n */\n withDataServiceFetchFn(serviceFn, itemIdParamName) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withFetch((itemId, service) => service[serviceFn]({ [itemIdParamName]: itemId }));\n }\n return this;\n }\n /**\n * Associates a create function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the create API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} serviceFnItemParamName The parameter name for item used as the key within the request object of create function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, AddModel>} [mapFetchItem] Map function to transform model from fetch to form's add model.\n */\n withDataServiceCreateFn(serviceFn, serviceFnItemParamName, mapFetchItem) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withCreate((item, service) => service[serviceFn]({ [serviceFnItemParamName]: item }));\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToCreateItem(mapFetchItem);\n }\n }\n return this;\n }\n /**\n * Associates an update function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the update API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, Undefined<EditModel>>} fnItemParamName The parameter name for item used as the key within the request object of update function on API service.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} [fnItemIdParamName] The parameter name for itemId used as the key within the request object of update function on API service.\n * @param {EditorDataProviderFetchMapToFnType<Model, EditModel>} [mapFetchItem] Map function to transform model from fetch to form' edit model.\n */\n withDataServiceUpdateFn(serviceFn, fnItemParamName, fnItemIdParamName, mapFetchItem) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withUpdate((id, item, service) => {\n const params = { [fnItemParamName]: item };\n if (fnItemIdParamName) {\n params[fnItemIdParamName] = id;\n }\n return service[serviceFn](params);\n });\n if (mapFetchItem) {\n this._dataProvider.withMapFetchItemToUpdateItem(mapFetchItem);\n }\n }\n return this;\n }\n /**\n * Associates a delete function for a data provider API service with the specified parameters.\n *\n * @param {ServiceFn} serviceFn The function from the service class that performs the delete API call.\n * Must be a key of the service with a parameter and return an Observable.\n * @param {ClassFunctionKeyParam1ObjKeyExtendsOfTargetType<Service, ServiceFn, IdType>} fnItemIdParamName The parameter name for itemId used as the key within the request object of delete function on API service.\n */\n withDataServiceDeleteFn(serviceFn, fnItemIdParamName) {\n if (this._dataProvider instanceof TableviewDataProviderInst) {\n this._dataProvider.withDelete((itemId, service) => service[serviceFn]({ [fnItemIdParamName]: itemId }));\n }\n return this;\n }\n /**\n * Removes all the default tableview actions.\n *\n * @returns {this} - Returns the current instance of the builder.\n */\n withNoDefaultActions() {\n this.defaultActions.forEach(a => (a.descriptor = null));\n return this;\n }\n /**\n * Adds the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActions(...types) {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action?.descriptor === null) {\n action.descriptor = undefined;\n }\n });\n return this;\n }\n /**\n * Removes the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.\n * @returns {this} - Returns the current instance of the builder.\n */\n withoutDefaultActions(...types) {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = null;\n }\n });\n return this;\n }\n /**\n * Overrides the default action.\n *\n * @param {TableviewDefaultActionsEnum} type - The default actions to override.\n * @param {TvBuilderActionSetterFnType<Model, ActionService , ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActionOverride(type, fn) {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = fn(this.prepareSetterParams()) ?? null;\n }\n return this;\n }\n /**\n * Adds a custom action.\n *\n * @deprecated Use on of {withActionOnTable}, {withActionOnDetailsEditor}, {withActionOnEditEditor} or {withActionOnAddEditor} instead.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunInput, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withAction(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on table row or top (header or toolbar).\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnTable(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.READ]);\n if (![\n ActionPositionEnum.ToolbarLeft,\n ActionPositionEnum.ToolbarRight,\n ActionPositionEnum.TableHeader,\n ActionPositionEnum.RowInline,\n ActionPositionEnum.RowClick\n ].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on table (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on details editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnDetailsEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on details (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on edit editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnEditEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.EDIT]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on edit (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * Adds a custom action on add editor.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, ActionRunResult, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @param {ActionPositionEnum} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withActionOnAddEditor(fn) {\n const action = fn(this.prepareSetterParams());\n if (action) {\n action.withPositionTableviewCategories([TableviewActionDefaultCategories.ADD]);\n if (![ActionPositionEnum.ToolbarLeft, ActionPositionEnum.ToolbarRight, ActionPositionEnum.FooterLeft, ActionPositionEnum.FooterRight].includes(action.position)) {\n throw new CommonsInternalError(`Action ${action.actionNameLong} can not be positioned on add (${action.position}), define valid position.`);\n }\n this._customActions.push(action);\n }\n return this;\n }\n /**\n * @internal\n *\n * Builds and returns an instance of ITableview.\n * DO NOT CALL this within tableview create callback function!\n *\n * @return {TableviewInput<Model, Service, Sorts, Filters, TableModel, AddModel, EditModel, Descriptor, DataProvider>} - The built ITableview instance.\n */\n build() {\n return {\n actions: tableviewCreateDefaultActions(this._descriptor, this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type), this.defaultActions\n .filter(a => a.descriptor != null)\n .reduce((acc, a) => ({\n ...acc,\n [a.type]: a.descriptor\n }), {}), this.injector).concat(this._customActions),\n dataProvider: this._dataProvider,\n descriptor: this._descriptor\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWlucHV0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctaW5wdXQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBR0gsb0JBQW9CLEVBSXZCLE1BQU0sNkJBQTZCLENBQUM7QUFJckMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sK0RBQStELENBQUM7QUFFL0csT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHcEYsT0FBTyxFQUE4Qiw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBaUJuSTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFlOUIsWUFDWSxXQUF1QixFQUN2QixhQUEyQixFQUNsQixRQUFrQjtRQUYzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTi9CLG1CQUFjLEdBQW9CLDBCQUEwQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNuRyxtQkFBYyxHQUFnQyxFQUFFLENBQUM7SUFNL0QsQ0FBQztJQUVJLG1CQUFtQjtRQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7O09B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aW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZSxcbiAgICBDbGFzc0Z1bmN0aW9uS2V5c1dpdGhQYXJhbUFuZFJldHVyblR5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgSURhdGFQcm92aWRlcixcbiAgICBJZFR5cGUsXG4gICAgTnVsbGFibGVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uLy4uL2FjdGlvbi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllc30gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy90YWJsZXZpZXctYWN0aW9uLWRlZmF1bHQtY2F0ZWdvcmllcy5tb2RlbCc7XG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGV9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3SW5wdXR9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctaW5wdXQubW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sIHRhYmxldmlld0NyZWF0ZURlZmF1bHRBY3Rpb25zLCB0YWJsZXZpZXdHZXREZWZhdWx0QWN0aW9uc30gZnJvbSAnLi90YWJsZXZpZXctZGVmYXVsdC1hY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0ge2Rlc2NyaXB0b3I6IERlc2NyaXB0b3I7IGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyOyBpbmplY3RvcjogSW5qZWN0b3J9O1xuZXhwb3J0IHR5cGUgVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4gPSAoXG4gICAgcGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbikgPT4gTnVsbGFibGU8XG4gICAgfCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uSW5wdXQsIEFjdGlvblJlc3VsdCwgVmFsaWRhdGlvbklucHV0PlxuICAgIHwgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8QWN0aW9uTW9kZWwsIEFjdGlvblNlcnZpY2UsIGFueSwgQWN0aW9uSW5wdXQsIEFjdGlvblJlc3VsdCwgVmFsaWRhdGlvbklucHV0PlxuPjtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiA9IChwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gRGVzY3JpcHRvcjtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0gKHBhcmFtczogVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KSA9PiBEYXRhUHJvdmlkZXI7XG5cbnR5cGUgRGVmYXVsdEFjdGlvbiA9IHtcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW07XG4gICAgZGVzY3JpcHRvcjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFRoZSBgVGFibGV2aWV3QnVpbGRlcmAgY2xhc3MgaXMgdXNlZCB0byBidWlsZCBhIHRhYmxldmlldyBjb25maWd1cmF0aW9uLlxuICogSXQgYWxsb3dzIHlvdSB0byBzZXQgdmFyaW91cyBvcHRpb25zIHN1Y2ggYXMgdGhlIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIsXG4gKiBkZWZhdWx0IGFjdGlvbnMsIGFuZCBjdXN0b20gYWN0aW9ucyBmb3IgdGhlIHRhYmxldmlldy5cbiAqXG4gKiBAdHlwZXBhcmFtIE1vZGVsIC0gVGhlIG1haW4gbW9kZWwgdHlwZS5cbiAqIEB0eXBlcGFyYW0gU2VydmljZSAtIFRoZSBBUEkgc2VydmljZSB0eXBlLlxuICogQHR5cGVwYXJhbSBEZXNjcmlwdG9yIC0gVGhlIGRlc2NyaXB0b3IgdHlwZS5cbiAqIEB0eXBlcGFyYW0gRGF0YVByb3ZpZGVyIC0gVGhlIGRhdGEgcHJvdmlkZXIgdHlwZS5cbiAqIEB0eXBlcGFyYW0gU29ydHMgLSBUaGUgc29ydCB0eXBlIHJlcHJlc2VudGluZyBhdmFpbGFibGUgc29ydCBrZXlzLlxuICogQHR5cGVwYXJhbSBGaWx0ZXJzIC0gVGhlIGZpbHRlciB0eXBlIHJlcHJlc2VudGluZyBhdmFpbGFibGUgZmlsdGVyIGtleXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdJbnB1dEJ1aWxkZXI8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBEZXNjcmlwdG9yIGV4dGVuZHMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICBEYXRhUHJvdmlkZXIgZXh0ZW5kcyBJRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbCxcbiAgICBGaWVsZHNNb2RlbCA9IE1vZGVsXG4+IHtcbiAgICBwcml2YXRlIGRlZmF1bHRBY3Rpb25zOiBEZWZhdWx0QWN0aW9uW10gPSB0YWJsZXZpZXdHZXREZWZhdWx0QWN0aW9ucygpLm1hcChhID0+ICh7dHlwZTogYSwgZGVzY3JpcHRvcjogdW5kZWZpbmVkfSkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT5bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2Rlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gICAgICAgIHByaXZhdGUgX2RhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvclxuICAgICkge31cblxuICAgIHByaXZhdGUgcHJlcGFyZVNldHRlclBhcmFtcygpOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4ge1xuICAgICAgICByZXR1cm4ge2Rlc2NyaXB0b3I6IHRoaXMuX2Rlc2NyaXB0b3IsIGRhdGFQcm92aWRlcjogdGhpcy5fZGF0YVByb3ZpZGVyLCBpbmplY3RvcjogdGhpcy5pbmplY3Rvcn07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBhIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgZGVzY3JpcHRvci4gSXQgc2hvdWxkIGFjY2VwdCBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZXNjcmlwdG9yKGZuOiBUdkJ1aWxkZXJEZXNjcmlwdG9yU2V0dGVyRm5UeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVzY3JpcHRvciA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRqdXN0cyB0aGUgZGVzY3JpcHRvciB1c2luZyB0aGUgcHJvdmlkZWQgYWRqdXN0IGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoZGVzY3JpcHRvcjogRGVzY3JpcHRvcikgPT4gdm9pZH0gYWRqdXN0Rm4gLSBUaGUgZnVuY3Rpb24gdXNlZCB0byBhZGp1c3QgdGhlIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYERlc2NyaXB0b3JgLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFkanVzdERlc2NyaXB0b3IoYWRqdXN0Rm46IChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgICAgIGFkanVzdEZuKHRoaXMuX2Rlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkYXRhIHByb3ZpZGVyIGZvciB0aGUgVHZCdWlsZGVyIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBkYXRhIHByb3ZpZGVyLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoRGF0YVByb3ZpZGVyKGZuOiBUdkJ1aWxkZXJEYXRhUHJvdmlkZXJTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkanVzdHMgdGhlIGRhdGEgcHJvdmlkZXIgdXNpbmcgdGhlIHByb3ZpZGVkIGFkanVzdCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyKSA9PiB2b2lkfSBhZGp1c3RGbiAtIFRoZSBmdW5jdGlvbiB1c2VkIHRvIGFkanVzdCB0aGUgZGF0YSBwcm92aWRlci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgRGF0YVByb3ZpZGVyYC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhBZGp1c3REYXRhUHJvdmlkZXIoYWRqdXN0Rm46IChkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcikgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICBhZGp1c3RGbih0aGlzLl9kYXRhUHJvdmlkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGp1c3RzIHRoZSBkYXRhIHByb3ZpZGVyIGFuZC9vciBkZXNjcmlwdG9yIHVzaW5nIHRoZSBwcm92aWRlZCBhZGp1c3QgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gdm9pZH0gYWRqdXN0Rm4gLSBUaGUgZnVuY3Rpb24gdXNlZCB0byBhZGp1c3QgdGhlIGRhdGEgcHJvdmlkZXIuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWRqdXN0KGFkanVzdEZuOiAocGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pID0+IHZvaWQpOiB0aGlzIHtcbiAgICAgICAgYWRqdXN0Rm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NvY2lhdGVzIGEgZmV0Y2ggZnVuY3Rpb24gZm9yIGEgZGF0YSBwcm92aWRlciBBUEkgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U2VydmljZUZufSBzZXJ2aWNlRm4gVGhlIGZ1bmN0aW9uIGZyb20gdGhlIHNlcnZpY2UgY2xhc3MgdGhhdCBwZXJmb3JtcyB0aGUgZmV0Y2ggQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+fSBmbkl0ZW1JZFBhcmFtTmFtZSBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIGl0ZW1JZCB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBmZXRjaCBmdW5jdGlvbiBvbiBBUEkgc2VydmljZS5cbiAgICAgKi9cbiAgICB3aXRoRGF0YVNlcnZpY2VGZXRjaEZuPFNlcnZpY2VGbiBleHRlbmRzIENsYXNzRnVuY3Rpb25LZXlzV2l0aFBhcmFtQW5kUmV0dXJuVHlwZTxTZXJ2aWNlLCBhbnksIE9ic2VydmFibGU8TW9kZWw+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBpdGVtSWRQYXJhbU5hbWU6IENsYXNzRnVuY3Rpb25LZXlQYXJhbTFPYmpLZXlFeHRlbmRzT2ZUYXJnZXRUeXBlPFNlcnZpY2UsIFNlcnZpY2VGbiwgSWRUeXBlPlxuICAgICk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVByb3ZpZGVyIGluc3RhbmNlb2YgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdCkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyLndpdGhGZXRjaCgoaXRlbUlkLCBzZXJ2aWNlKSA9PiBzZXJ2aWNlW3NlcnZpY2VGbl0oe1tpdGVtSWRQYXJhbU5hbWVdOiBpdGVtSWR9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlcyBhIGNyZWF0ZSBmdW5jdGlvbiBmb3IgYSBkYXRhIHByb3ZpZGVyIEFQSSBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTZXJ2aWNlRm59IHNlcnZpY2VGbiBUaGUgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSBjbGFzcyB0aGF0IHBlcmZvcm1zIHRoZSBjcmVhdGUgQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBVbmRlZmluZWQ8RWRpdE1vZGVsPj59IHNlcnZpY2VGbkl0ZW1QYXJhbU5hbWUgVGhlIHBhcmFtZXRlciBuYW1lIGZvciBpdGVtIHVzZWQgYXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3Qgb2JqZWN0IG9mIGNyZWF0ZSBmdW5jdGlvbiBvbiBBUEkgc2VydmljZS5cbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIEFkZE1vZGVsPn0gW21hcEZldGNoSXRlbV0gTWFwIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBtb2RlbCBmcm9tIGZldGNoIHRvIGZvcm0ncyBhZGQgbW9kZWwuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlQ3JlYXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBzZXJ2aWNlRm5JdGVtUGFyYW1OYW1lOiBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIEFkZE1vZGVsPixcbiAgICAgICAgbWFwRmV0Y2hJdGVtPzogRWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgQWRkTW9kZWw+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhUHJvdmlkZXIgaW5zdGFuY2VvZiBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0KSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aENyZWF0ZSgoaXRlbSwgc2VydmljZSkgPT4gc2VydmljZVtzZXJ2aWNlRm5dKHtbc2VydmljZUZuSXRlbVBhcmFtTmFtZV06IGl0ZW19KSk7XG5cbiAgICAgICAgICAgIGlmIChtYXBGZXRjaEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aE1hcEZldGNoSXRlbVRvQ3JlYXRlSXRlbShtYXBGZXRjaEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc29jaWF0ZXMgYW4gdXBkYXRlIGZ1bmN0aW9uIGZvciBhIGRhdGEgcHJvdmlkZXIgQVBJIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1NlcnZpY2VGbn0gc2VydmljZUZuIFRoZSBmdW5jdGlvbiBmcm9tIHRoZSBzZXJ2aWNlIGNsYXNzIHRoYXQgcGVyZm9ybXMgdGhlIHVwZGF0ZSBBUEkgY2FsbC5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgYSBrZXkgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhIHBhcmFtZXRlciBhbmQgcmV0dXJuIGFuIE9ic2VydmFibGUuXG4gICAgICogQHBhcmFtIHtDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIFVuZGVmaW5lZDxFZGl0TW9kZWw+Pn0gZm5JdGVtUGFyYW1OYW1lIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgaXRlbSB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiB1cGRhdGUgZnVuY3Rpb24gb24gQVBJIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIHtDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIElkVHlwZT59IFtmbkl0ZW1JZFBhcmFtTmFtZV0gVGhlIHBhcmFtZXRlciBuYW1lIGZvciBpdGVtSWQgdXNlZCBhcyB0aGUga2V5IHdpdGhpbiB0aGUgcmVxdWVzdCBvYmplY3Qgb2YgdXBkYXRlIGZ1bmN0aW9uIG9uIEFQSSBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRmV0Y2hNYXBUb0ZuVHlwZTxNb2RlbCwgRWRpdE1vZGVsPn0gW21hcEZldGNoSXRlbV0gTWFwIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBtb2RlbCBmcm9tIGZldGNoIHRvIGZvcm0nIGVkaXQgbW9kZWwuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlVXBkYXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBmbkl0ZW1QYXJhbU5hbWU6IENsYXNzRnVuY3Rpb25LZXlQYXJhbTFPYmpLZXlFeHRlbmRzT2ZUYXJnZXRUeXBlPFNlcnZpY2UsIFNlcnZpY2VGbiwgRWRpdE1vZGVsPixcbiAgICAgICAgZm5JdGVtSWRQYXJhbU5hbWU/OiBDbGFzc0Z1bmN0aW9uS2V5UGFyYW0xT2JqS2V5RXh0ZW5kc09mVGFyZ2V0VHlwZTxTZXJ2aWNlLCBTZXJ2aWNlRm4sIElkVHlwZT4sXG4gICAgICAgIG1hcEZldGNoSXRlbT86IEVkaXRvckRhdGFQcm92aWRlckZldGNoTWFwVG9GblR5cGU8TW9kZWwsIEVkaXRNb2RlbD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFQcm92aWRlciBpbnN0YW5jZW9mIFRhYmxldmlld0RhdGFQcm92aWRlckluc3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoVXBkYXRlKChpZCwgaXRlbSwgc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1tmbkl0ZW1QYXJhbU5hbWVdOiBpdGVtfTtcbiAgICAgICAgICAgICAgICBpZiAoZm5JdGVtSWRQYXJhbU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ZuSXRlbUlkUGFyYW1OYW1lXSA9IGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VydmljZVtzZXJ2aWNlRm5dKHBhcmFtcyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKG1hcEZldGNoSXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoTWFwRmV0Y2hJdGVtVG9VcGRhdGVJdGVtKG1hcEZldGNoSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlcyBhIGRlbGV0ZSBmdW5jdGlvbiBmb3IgYSBkYXRhIHByb3ZpZGVyIEFQSSBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTZXJ2aWNlRm59IHNlcnZpY2VGbiBUaGUgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmljZSBjbGFzcyB0aGF0IHBlcmZvcm1zIHRoZSBkZWxldGUgQVBJIGNhbGwuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIGEga2V5IG9mIHRoZSBzZXJ2aWNlIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybiBhbiBPYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSB7Q2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+fSBmbkl0ZW1JZFBhcmFtTmFtZSBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIGl0ZW1JZCB1c2VkIGFzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0IG9iamVjdCBvZiBkZWxldGUgZnVuY3Rpb24gb24gQVBJIHNlcnZpY2UuXG4gICAgICovXG4gICAgd2l0aERhdGFTZXJ2aWNlRGVsZXRlRm48U2VydmljZUZuIGV4dGVuZHMgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIGFueSwgT2JzZXJ2YWJsZTxhbnk+Pj4oXG4gICAgICAgIHNlcnZpY2VGbjogU2VydmljZUZuLFxuICAgICAgICBmbkl0ZW1JZFBhcmFtTmFtZTogQ2xhc3NGdW5jdGlvbktleVBhcmFtMU9iaktleUV4dGVuZHNPZlRhcmdldFR5cGU8U2VydmljZSwgU2VydmljZUZuLCBJZFR5cGU+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhUHJvdmlkZXIgaW5zdGFuY2VvZiBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0KSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIud2l0aERlbGV0ZSgoaXRlbUlkLCBzZXJ2aWNlKSA9PiBzZXJ2aWNlW3NlcnZpY2VGbl0oe1tmbkl0ZW1JZFBhcmFtTmFtZV06IGl0ZW1JZH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCB0aGUgZGVmYXVsdCB0YWJsZXZpZXcgYWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aE5vRGVmYXVsdEFjdGlvbnMoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnMuZm9yRWFjaChhID0+IChhLmRlc2NyaXB0b3IgPSBudWxsKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGhlIGRlZmF1bHQgYWN0aW9ucyBzcGVjaWZpZWQgaW4gcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW119IHR5cGVzIC0gVGhlIGRlZmF1bHQgYWN0aW9ucyB0byBhZGQuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoRGVmYXVsdEFjdGlvbnMoLi4udHlwZXM6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdKTogdGhpcyB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zLmZpbmQoYSA9PiBhLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICAgICAgaWYgKGFjdGlvbj8uZGVzY3JpcHRvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdG9yID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXX0gdHlwZXMgLSBUaGUgZGVmYXVsdCBhY3Rpb25zIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhvdXREZWZhdWx0QWN0aW9ucyguLi50eXBlczogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10pOiB0aGlzIHtcbiAgICAgICAgdHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnMuZmluZChhID0+IGEudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtfSB0eXBlIC0gVGhlIGRlZmF1bHQgYWN0aW9ucyB0byBvdmVycmlkZS5cbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSAsIEFjdGlvblJ1bklucHV0LCBBY3Rpb25SdW5SZXN1bHQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aERlZmF1bHRBY3Rpb25PdmVycmlkZTxBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uUnVuSW5wdXQgPSBNb2RlbCwgQWN0aW9uUnVuUmVzdWx0ID0gTW9kZWwsIFZhbGlkYXRpb25JbnB1dCA9IE1vZGVsPihcbiAgICAgICAgdHlwZTogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPE1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25SdW5JbnB1dCwgQWN0aW9uUnVuUmVzdWx0LCBWYWxpZGF0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9ucy5maW5kKGEgPT4gYS50eXBlID09PSB0eXBlKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSkgPz8gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgY3VzdG9tIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBvbiBvZiB7d2l0aEFjdGlvbk9uVGFibGV9LCB7d2l0aEFjdGlvbk9uRGV0YWlsc0VkaXRvcn0sIHt3aXRoQWN0aW9uT25FZGl0RWRpdG9yfSBvciB7d2l0aEFjdGlvbk9uQWRkRWRpdG9yfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1bklucHV0LCBBY3Rpb25SdW5SZXN1bHQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbjxBY3Rpb25Nb2RlbCA9IE1vZGVsLCBBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uUnVuSW5wdXQgPSBNb2RlbCwgQWN0aW9uUnVuUmVzdWx0ID0gTW9kZWwsIFZhbGlkYXRpb25JbnB1dCA9IE1vZGVsPihcbiAgICAgICAgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuSW5wdXQsIEFjdGlvblJ1blJlc3VsdCwgVmFsaWRhdGlvbklucHV0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGN1c3RvbSBhY3Rpb24gb24gdGFibGUgcm93IG9yIHRvcCAoaGVhZGVyIG9yIHRvb2xiYXIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1blJlc3VsdCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW19IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbk9uVGFibGU8QWN0aW9uTW9kZWwgPSBNb2RlbCwgQWN0aW9uU2VydmljZSA9IFNlcnZpY2UsIEFjdGlvbklucHV0IGV4dGVuZHMgVGFibGVNb2RlbCB8IHVuZGVmaW5lZCA9IFRhYmxlTW9kZWwsIEFjdGlvblJ1blJlc3VsdCA9IE1vZGVsPihcbiAgICAgICAgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uSW5wdXQsIEFjdGlvblJ1blJlc3VsdCwgQWN0aW9uSW5wdXQsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gZm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0pO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCxcbiAgICAgICAgICAgICAgICAgICAgQWN0aW9uUG9zaXRpb25FbnVtLlRhYmxlSGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lLFxuICAgICAgICAgICAgICAgICAgICBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2tcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGFjdGlvbi5wb3NpdGlvbilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gdGFibGUgKCR7YWN0aW9uLnBvc2l0aW9ufSksIGRlZmluZSB2YWxpZCBwb3NpdGlvbi5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uIG9uIGRldGFpbHMgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvblJ1blJlc3VsdCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHBhcmFtIHtBY3Rpb25Qb3NpdGlvbkVudW19IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbk9uRGV0YWlsc0VkaXRvcjxBY3Rpb25Nb2RlbCA9IE1vZGVsLCBBY3Rpb25TZXJ2aWNlID0gU2VydmljZSwgQWN0aW9uSW5wdXQgZXh0ZW5kcyBNb2RlbCA9IE1vZGVsLCBBY3Rpb25SZXN1bHQgPSBNb2RlbD4oXG4gICAgICAgIGZuOiBUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8QWN0aW9uTW9kZWwsIEFjdGlvblNlcnZpY2UsIEFjdGlvbklucHV0LCBBY3Rpb25SZXN1bHQsIEFjdGlvbklucHV0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgYWN0aW9uLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKTtcbiAgICAgICAgICAgIGlmICghW0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodF0uaW5jbHVkZXMoYWN0aW9uLnBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gZGV0YWlscyAoJHthY3Rpb24ucG9zaXRpb259KSwgZGVmaW5lIHZhbGlkIHBvc2l0aW9uLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGN1c3RvbSBhY3Rpb24gb24gZWRpdCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuUmVzdWx0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bX0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHR5cGVQYXJhbSBBY3Rpb25TZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdHlwZSAoc2FtZSBhcyBidWlsZCBgU2VydmljZWAgYnkgZGVmYXVsdCkuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWN0aW9uT25FZGl0RWRpdG9yPEFjdGlvbk1vZGVsID0gTW9kZWwsIEFjdGlvblNlcnZpY2UgPSBTZXJ2aWNlLCBBY3Rpb25JbnB1dCBleHRlbmRzIEVkaXRNb2RlbCA9IEVkaXRNb2RlbCwgQWN0aW9uUmVzdWx0ID0gTW9kZWw+KFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBBY3Rpb25JbnB1dCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGFjdGlvbi53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSk7XG4gICAgICAgICAgICBpZiAoIVtBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0LCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHRdLmluY2x1ZGVzKGFjdGlvbi5wb3NpdGlvbikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEFjdGlvbiAke2FjdGlvbi5hY3Rpb25OYW1lTG9uZ30gY2FuIG5vdCBiZSBwb3NpdGlvbmVkIG9uIGVkaXQgKCR7YWN0aW9uLnBvc2l0aW9ufSksIGRlZmluZSB2YWxpZCBwb3NpdGlvbi5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uIG9uIGFkZCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgQWN0aW9uUnVuUmVzdWx0LCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcGFyYW0ge0FjdGlvblBvc2l0aW9uRW51bX0gZm4gLSBUaGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXcgYWN0aW9uIGRlc2NyaXB0b3IuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogQHR5cGVQYXJhbSBBY3Rpb25TZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdHlwZSAoc2FtZSBhcyBidWlsZCBgU2VydmljZWAgYnkgZGVmYXVsdCkuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWN0aW9uT25BZGRFZGl0b3I8QWN0aW9uTW9kZWwgPSBNb2RlbCwgQWN0aW9uU2VydmljZSA9IFNlcnZpY2UsIEFjdGlvbklucHV0IGV4dGVuZHMgQWRkTW9kZWwgPSBBZGRNb2RlbCwgQWN0aW9uUmVzdWx0ID0gTW9kZWw+KFxuICAgICAgICBmbjogVHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPEFjdGlvbk1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBBY3Rpb25JbnB1dCwgQWN0aW9uUmVzdWx0LCBBY3Rpb25JbnB1dCwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGFjdGlvbi53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5BRERdKTtcbiAgICAgICAgICAgIGlmICghW0FjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCwgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCwgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQsIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodF0uaW5jbHVkZXMoYWN0aW9uLnBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQWN0aW9uICR7YWN0aW9uLmFjdGlvbk5hbWVMb25nfSBjYW4gbm90IGJlIHBvc2l0aW9uZWQgb24gYWRkICgke2FjdGlvbi5wb3NpdGlvbn0pLCBkZWZpbmUgdmFsaWQgcG9zaXRpb24uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21BY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKlxuICAgICAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBJVGFibGV2aWV3LlxuICAgICAqIERPIE5PVCBDQUxMIHRoaXMgd2l0aGluIHRhYmxldmlldyBjcmVhdGUgY2FsbGJhY2sgZnVuY3Rpb24hXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtUYWJsZXZpZXdJbnB1dDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IC0gVGhlIGJ1aWx0IElUYWJsZXZpZXcgaW5zdGFuY2UuXG4gICAgICovXG4gICAgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiA8VGFibGV2aWV3SW5wdXQ8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsLCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+PntcbiAgICAgICAgICAgIGFjdGlvbnM6IHRhYmxldmlld0NyZWF0ZURlZmF1bHRBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+LFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnMuZmlsdGVyKGEgPT4gYS5kZXNjcmlwdG9yICE9PSBudWxsKS5tYXAoYSA9PiBhLnR5cGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihhID0+IGEuZGVzY3JpcHRvciAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjYywgYSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2EudHlwZV06IGEuZGVzY3JpcHRvciFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgPFJlY29yZDxudW1iZXIsIEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+Pnt9XG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvclxuICAgICAgICAgICAgKS5jb25jYXQodGhpcy5fY3VzdG9tQWN0aW9ucyksXG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIGRlc2NyaXB0b3I6IHRoaXMuX2Rlc2NyaXB0b3JcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","import { Injector, inject } from '@angular/core';\nimport { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nimport { TableviewDescriptorInst } from '../descriptors/tableview.descriptor';\nimport { TableviewInputBuilder } from './tableview-input-builder';\n/**\n * Creates a tableview with the given model, service.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} [opts.service] - The class type of the service.\n * @param {TypeDescriptor<Sorts> | ModelDescriptor<Sorts>} [opts.sortsType] - Type of sorts\n * @param {TypeDescriptor<Filters> | ModelDescriptor<Filters>} [opts.filtersType] - Type of filters.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableview(model, opts, buildFn) {\n const builder = new TableviewInputBuilder(new TableviewDescriptorInst(model), new TableviewDataProviderInst(opts?.service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\nexport function tableviewMultiModel(model, opts, buildFn) {\n const builder = new TableviewInputBuilder(new TableviewDescriptorInst(model, opts), new TableviewDataProviderInst(opts?.service), inject(Injector));\n buildFn?.(builder);\n return builder.build();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLL0MsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFDLHVCQUF1QixFQUF5QyxNQUFNLHFDQUFxQyxDQUFDO0FBRXBILE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRWhFOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUNyQixLQUE2QixFQUM3QixJQUlDLEVBQ0QsT0FFUztJQUVULE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLENBT3ZDLElBQUksdUJBQXVCLENBQXdCLEtBQUssQ0FBQyxFQUFFLElBQUkseUJBQXlCLENBQWlDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM3SixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBUUQsTUFBTSxVQUFVLG1CQUFtQixDQVUvQixLQUE2QixFQUM3QixJQUF3RixFQUN4RixPQWFTO0lBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FZckMsSUFBSSx1QkFBdUIsQ0FBaUYsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUN4SCxJQUFJLHlCQUF5QixDQUFnRyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQzNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FDbkIsQ0FBQztJQUNGLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1NlcnZpY2VDbGFzc09wdFR5cGUsIFNlcnZpY2VDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvciwgVHlwZURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3QsIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0Q29uc3RydWN0b3JPcHRzfSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JGaWVsZHNNYW5hZ2VNdWx0aVR5cGV9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctZGVzY3JpcHRvci1maWVsZHMtbWFuYWdlLWhlbHBlci50eXBlJztcbmltcG9ydCB7VGFibGV2aWV3SW5wdXRCdWlsZGVyfSBmcm9tICcuL3RhYmxldmlldy1pbnB1dC1idWlsZGVyJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGFibGV2aWV3IHdpdGggdGhlIGdpdmVuIG1vZGVsLCBzZXJ2aWNlLlxuICpcbiAqIEBwYXJhbSB7TW9kZWxEZXNjcmlwdG9yPE1vZGVsPn0gbW9kZWwgLSBUaGUgbW9kZWwgZGVzY3JpcHRvci5cbiAqIEBwYXJhbSB7U2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPn0gW29wdHMuc2VydmljZV0gLSBUaGUgY2xhc3MgdHlwZSBvZiB0aGUgc2VydmljZS5cbiAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8U29ydHM+IHwgTW9kZWxEZXNjcmlwdG9yPFNvcnRzPn0gW29wdHMuc29ydHNUeXBlXSAtIFR5cGUgb2Ygc29ydHNcbiAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz59IFtvcHRzLmZpbHRlcnNUeXBlXSAtIFR5cGUgb2YgZmlsdGVycy5cbiAqIEBwYXJhbSB7KGJ1aWxkZXI6IFRhYmxldmlld0J1aWxkZXIpID0+IHZvaWR9IFtidWlsZEZuXSAtIFRoZSBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHRhYmxldmlldyB1c2luZyB0aGUgcHJlcGFyZWQgYnVpbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHRhYmxldmlldyBpbnN0YW5jZSB3aXRoIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIgYW5kIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXc8TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgb3B0cz86IHtcbiAgICAgICAgc2VydmljZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgICAgIHNvcnRzVHlwZT86IFR5cGVEZXNjcmlwdG9yPFNvcnRzPiB8IE1vZGVsRGVzY3JpcHRvcjxTb3J0cz47XG4gICAgICAgIGZpbHRlcnNUeXBlPzogVHlwZURlc2NyaXB0b3I8RmlsdGVycz4gfCBNb2RlbERlc2NyaXB0b3I8RmlsdGVycz47XG4gICAgfSxcbiAgICBidWlsZEZuPzogKFxuICAgICAgICBidWlsZGVyOiBUYWJsZXZpZXdJbnB1dEJ1aWxkZXI8TW9kZWwsIFNlcnZpY2UsIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz4sIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPiwgU29ydHMsIEZpbHRlcnM+XG4gICAgKSA9PiB2b2lkXG4pIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFRhYmxldmlld0lucHV0QnVpbGRlcjxcbiAgICAgICAgTW9kZWwsXG4gICAgICAgIFNlcnZpY2UsXG4gICAgICAgIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz4sXG4gICAgICAgIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICAgICAgU29ydHMsXG4gICAgICAgIEZpbHRlcnNcbiAgICA+KG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsKSwgbmV3IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPihvcHRzPy5zZXJ2aWNlKSwgaW5qZWN0KEluamVjdG9yKSk7XG4gICAgYnVpbGRGbj8uKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59XG5cbnR5cGUgVGFibGV2aWV3TXVsdGlNb2RlbE9wdHM8U2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+ID0ge1xuICAgIHNlcnZpY2U/OiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgIHNvcnRzVHlwZT86IFR5cGVEZXNjcmlwdG9yPFNvcnRzPiB8IE1vZGVsRGVzY3JpcHRvcjxTb3J0cz47XG4gICAgZmlsdGVyc1R5cGU/OiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPiB8IE1vZGVsRGVzY3JpcHRvcjxGaWx0ZXJzPjtcbn0gJiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdENvbnN0cnVjdG9yT3B0czxUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld011bHRpTW9kZWw8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSA9IHVuZGVmaW5lZCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQWRkTW9kZWwgPSBNb2RlbCxcbiAgICBFZGl0TW9kZWwgPSBNb2RlbCxcbiAgICBGaWVsZHNNb2RlbCA9IFRhYmxldmlld0Rlc2NyaXB0b3JGaWVsZHNNYW5hZ2VNdWx0aVR5cGU8TW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+XG4+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdNdWx0aU1vZGVsT3B0czxTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4sXG4gICAgYnVpbGRGbj86IChcbiAgICAgICAgYnVpbGRlcjogVGFibGV2aWV3SW5wdXRCdWlsZGVyPFxuICAgICAgICAgICAgTW9kZWwsXG4gICAgICAgICAgICBTZXJ2aWNlLFxuICAgICAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICAgICAgICAgIFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+LCBUYWJsZU1vZGVsLCBBZGRNb2RlbCwgRWRpdE1vZGVsPixcbiAgICAgICAgICAgIFNvcnRzLFxuICAgICAgICAgICAgRmlsdGVycyxcbiAgICAgICAgICAgIFRhYmxlTW9kZWwsXG4gICAgICAgICAgICBBZGRNb2RlbCxcbiAgICAgICAgICAgIEVkaXRNb2RlbCxcbiAgICAgICAgICAgIEZpZWxkc01vZGVsXG4gICAgICAgID5cbiAgICApID0+IHZvaWRcbikge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGFibGV2aWV3SW5wdXRCdWlsZGVyPFxuICAgICAgICBNb2RlbCxcbiAgICAgICAgU2VydmljZSxcbiAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPixcbiAgICAgICAgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzc09wdFR5cGU8U2VydmljZT4sIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWw+LFxuICAgICAgICBTb3J0cyxcbiAgICAgICAgRmlsdGVycyxcbiAgICAgICAgVGFibGVNb2RlbCxcbiAgICAgICAgQWRkTW9kZWwsXG4gICAgICAgIEVkaXRNb2RlbCxcbiAgICAgICAgRmllbGRzTW9kZWxcbiAgICA+KFxuICAgICAgICBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFRhYmxlTW9kZWwsIEFkZE1vZGVsLCBFZGl0TW9kZWwsIEZpZWxkc01vZGVsPihtb2RlbCwgb3B0cyksXG4gICAgICAgIG5ldyBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgU2VydmljZUNsYXNzT3B0VHlwZTxTZXJ2aWNlPiwgVGFibGVNb2RlbCwgQWRkTW9kZWwsIEVkaXRNb2RlbD4ob3B0cz8uc2VydmljZSksXG4gICAgICAgIGluamVjdChJbmplY3RvcilcbiAgICApO1xuICAgIGJ1aWxkRm4/LihidWlsZGVyKTtcbiAgICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xufVxuIl19","import { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';\nexport function tableviewDataProviderFromDescriptor(descriptor, serviceType) {\n return typeof serviceType !== 'undefined'\n ? new TableviewDataProviderInst(serviceType)\n : new TableviewDataProviderInst(undefined);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBd0NwRixNQUFNLFVBQVUsbUNBQW1DLENBU2pELFVBQTBHLEVBQUUsV0FBMEI7SUFDcEksT0FBTyxPQUFPLFdBQVcsS0FBSyxXQUFXO1FBQ3JDLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFrRyxXQUF3QyxDQUFDO1FBQzFLLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFvRixTQUFTLENBQUMsQ0FBQztBQUN0SSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGF0YSBwcm92aWRlciBmb3IgZnJvbSBkZXNjcmlwdG9yLiBETyBOT1QgdXNlIGlmIHRoZSBtb2RlbCBpcyBjbGFzcywgYmVjYXVzZSB0aGUgdHlwZSAoZnJvbSBtb2RlbCBkZXNjcmlwdG9yKSB3aWxsIG5vdCBiZSBzZXQgaW4gZGF0YSBwcm92aWRlci5cbiAqXG4gKiBAcGFyYW0ge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz59IGRlc2NyaXB0b3IgLSBUaGUgdGFibGUgZGVzY3JpcHRvci5cbiAqXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZD59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgVGFibGVNb2RlbCwgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPjtcbi8qKlxuICogQ3JlYXRlcyBhIGRhdGEgcHJvdmlkZXIgZm9yIGZyb20gZGVzY3JpcHRvci4gRE8gTk9UIHVzZSBpZiB0aGUgbW9kZWwgaXMgY2xhc3MsIGJlY2F1c2UgdGhlIHR5cGUgKGZyb20gbW9kZWwgZGVzY3JpcHRvcikgd2lsbCBub3QgYmUgc2V0IGluIGRhdGEgcHJvdmlkZXIuXG4gKlxuICogQHBhcmFtIHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+fSBkZXNjcmlwdG9yIC0gVGhlIHRhYmxlIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IHNlcnZpY2VDbGFzcyAtIFRoZSBzZXJ2aWNlIGNsYXNzIHR5cGUuXG4gKlxuICogQHJldHVybiB7VGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTZXJ2aWNlID0gYW55LFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBDcmVhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbj4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBhbnksIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbCwgYW55PixcbiAgICBzZXJ2aWNlQ2xhc3M6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RhdGFQcm92aWRlckZyb21EZXNjcmlwdG9yPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UgPSBhbnksXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgTW9kZWwsXG4gICAgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPixcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT4sIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBzZXJ2aWNlVHlwZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4sIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4oc2VydmljZVR5cGUgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPilcbiAgICAgICAgOiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBTb3J0cywgRmlsdGVycywgdW5kZWZpbmVkLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+KHVuZGVmaW5lZCk7XG59XG4iXX0=","// action descriptors\nexport * from './action/descriptors/action.descriptor';\nexport * from './action/descriptors/action-descriptor.factory';\nexport * from './action/descriptors/action-editor.descriptor';\nexport * from './action/descriptors/action-editor-descriptor.factory';\nexport * from './action/descriptors/action-link.descriptor';\nexport * from './action/descriptors/action-link-descriptor.factory';\nexport * from './action/descriptors/editor-action-descriptor.factory';\nexport * from './action/descriptors/editor-action-editor-descriptor.factory';\nexport * from './action/descriptors/table-action-descriptor.factory';\nexport * from './action/descriptors/table-action-editor-descriptor.factory';\n// action helpers\nexport * from './action/helpers/data-provider-executors';\n// action model execution\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-context-validation.model';\nexport * from './action/models/execution/action-execution-error.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/execution/view-container.model';\n// action model\nexport * from './action/models/action.type';\nexport * from './action/models/action-component.model';\nexport * from './action/models/action-confirmation.model';\nexport * from './action/models/action-descriptor.types';\nexport * from './action/models/action-editor.model';\nexport * from './action/models/action-error.model';\nexport * from './action/models/tableview-action-default-categories.model';\n// action services\nexport * from './action/services/tokens/data-language-dropdown.token';\nexport * from './action/services/data-provider-executor.service';\n// editor data providers\nexport * from './editor/data-providers/editor.data-provider';\nexport * from './editor/data-providers/editor-data-provider.factory';\n// editor descriptors\nexport * from './editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper';\nexport * from './editor/descriptors/editor.descriptor';\nexport * from './editor/descriptors/editor-descriptor.factory';\nexport * from './editor/descriptors/field.descriptor';\nexport * from './editor/descriptors/field-action.descriptor';\nexport * from './editor/descriptors/field-base.descriptor';\nexport * from './editor/descriptors/field-group.descriptor';\nexport * from './editor/descriptors/field-lookup.descriptor';\nexport * from './editor/descriptors/field-many.descriptor';\nexport * from './editor/descriptors/field-validation.descriptor';\n// editor models\nexport * from './editor/models/editor.model';\nexport * from './editor/models/editor-fields.model';\nexport * from './editor/models/field.model';\nexport * from './editor/models/field-action-context.model';\nexport * from './editor/models/field-validation.model';\nexport * from './editor/models/form-editor.event';\nexport * from './editor/models/form-editor.interface';\nexport * from './editor/models/formly-custom-field.model';\nexport * from './editor/models/formly-field.model';\nexport * from './editor/models/formly-options.model';\nexport * from './editor/models/radio.model';\nexport * from './editor/models/field-image-preview.model';\n// tableview data providers\nexport * from './tableview/data-providers/tableview.data-provider';\nexport * from './tableview/data-providers/tableview-data-provider.factory';\n// tableview descriptors\nexport * from './tableview/descriptors/tableview.descriptor';\nexport * from './tableview/descriptors/tableview-descriptor.factory';\n// tableview helpers\nexport * from './tableview/helpers/files-export';\nexport * from './tableview/helpers/tableview-create';\nexport * from './tableview/helpers/tableview-data-provider-descriptor-convert';\nexport * from './tableview/helpers/tableview-default-actions';\nexport * from './tableview/helpers/tableview-input-builder';\n// tableview models\nexport * from './tableview/models/tableview-descriptor-fields-manage-helper.type';\nexport * from './tableview/models/tableview-descriptor-helper.type';\nexport * from './tableview/models/tableview-input.model';\nexport * from './tableview/models/tableview-route.model';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUI7QUFDckIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw2REFBNkQsQ0FBQztBQUU1RSxpQkFBaUI7QUFDakIsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCx5QkFBeUI7QUFDekIsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsZUFBZTtBQUNmLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkRBQTJELENBQUM7QUFFMUUsa0JBQWtCO0FBQ2xCLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSx3QkFBd0I7QUFDeEIsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHNEQUFzRCxDQUFDO0FBRXJFLHFCQUFxQjtBQUNyQixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGdCQUFnQjtBQUNoQixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCwyQkFBMkI7QUFDM0IsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDREQUE0RCxDQUFDO0FBRTNFLHdCQUF3QjtBQUN4QixjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFFckUsb0JBQW9CO0FBQ3BCLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUU1RCxtQkFBbUI7QUFDbkIsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFjdGlvbiBkZXNjcmlwdG9yc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZWRpdG9yLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmsuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvZWRpdG9yLWFjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2Rlc2NyaXB0b3JzL3RhYmxlLWFjdGlvbi1kZXNjcmlwdG9yLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZGVzY3JpcHRvcnMvdGFibGUtYWN0aW9uLWVkaXRvci1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyBhY3Rpb24gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaGVscGVycy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9ycyc7XG5cbi8vIGFjdGlvbiBtb2RlbCBleGVjdXRpb25cbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC12YWxpZGF0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWV4ZWN1dGlvbi1lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS1zdGF0ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL3ZpZXctY29udGFpbmVyLm1vZGVsJztcblxuLy8gYWN0aW9uIG1vZGVsXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb21wb25lbnQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZWRpdG9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZXJyb3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcblxuLy8gYWN0aW9uIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvZGF0YS1sYW5ndWFnZS1kcm9wZG93bi50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuXG4vLyBlZGl0b3IgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyBlZGl0b3IgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWdyb3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbG9va3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5cbi8vIGVkaXRvciBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9maWVsZC1hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybS1lZGl0b3IuZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2Zvcm0tZWRpdG9yLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWN1c3RvbS1maWVsZC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWZpZWxkLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9mb3JtbHktb3B0aW9ucy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvcmFkaW8ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvbW9kZWxzL2ZpZWxkLWltYWdlLXByZXZpZXcubW9kZWwnO1xuXG4vLyB0YWJsZXZpZXcgZGF0YSBwcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgZGVzY3JpcHRvcnNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2Rlc2NyaXB0b3JzL3RhYmxldmlldy1kZXNjcmlwdG9yLmZhY3RvcnknO1xuXG4vLyB0YWJsZXZpZXcgaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy9maWxlcy1leHBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctY3JlYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1pbnB1dC1idWlsZGVyJztcblxuLy8gdGFibGV2aWV3IG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWZpZWxkcy1tYW5hZ2UtaGVscGVyLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1kZXNjcmlwdG9yLWhlbHBlci50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L21vZGVscy90YWJsZXZpZXctaW5wdXQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLXRhYmxldmlldy1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtdGFibGV2aWV3LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["map"],"mappings":"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"}
|