@mediusinc/mng-commons 0.1.0 → 0.2.5
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/esm2020/lib/api/models/builders/query-param.builder.mjs +48 -48
- package/esm2020/lib/api/models/filter-match-type.model.mjs +26 -26
- package/esm2020/lib/api/models/filter-param.model.mjs +46 -46
- package/esm2020/lib/api/models/index.mjs +9 -9
- package/esm2020/lib/api/models/mappers.mjs +17 -17
- package/esm2020/lib/api/models/query-mode.model.mjs +19 -19
- package/esm2020/lib/api/models/query-param.model.mjs +69 -69
- package/esm2020/lib/api/models/query-result.model.mjs +45 -45
- package/esm2020/lib/api/models/serialization.model.mjs +2 -2
- package/esm2020/lib/api/services/crud-api.abstract.service.mjs +72 -0
- package/esm2020/lib/api/services/index.mjs +2 -2
- package/esm2020/lib/api/utils/index.mjs +3 -3
- package/esm2020/lib/api/utils/medius-rest.util.mjs +122 -122
- package/esm2020/lib/api/utils/object-serializer.util.mjs +226 -226
- package/esm2020/lib/components/action/action.component.mjs +65 -63
- package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +148 -159
- package/esm2020/lib/components/action/index.mjs +4 -4
- package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +2 -0
- package/esm2020/lib/components/action/models/action-execution.model.mjs +58 -0
- package/esm2020/lib/components/action/models/index.mjs +3 -0
- package/esm2020/lib/components/action/route/action-route.component.mjs +144 -144
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +114 -0
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +113 -0
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +141 -142
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +19 -19
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +19 -19
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +16 -16
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +26 -26
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +109 -109
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +122 -122
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
- package/esm2020/lib/components/form/formly/fields/index.mjs +8 -8
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +17 -17
- package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +16 -16
- package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -3
- package/esm2020/lib/components/form/index.mjs +4 -4
- package/esm2020/lib/components/form/models/form-editor.event.mjs +7 -0
- package/esm2020/lib/components/form/models/index.mjs +2 -0
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +17 -17
- package/esm2020/lib/components/layout/footer.component.mjs +17 -17
- package/esm2020/lib/components/layout/index.mjs +7 -7
- package/esm2020/lib/components/layout/main-layout.component.mjs +54 -33
- package/esm2020/lib/components/layout/menu-item.component.mjs +173 -173
- package/esm2020/lib/components/layout/menu.component.mjs +20 -20
- package/esm2020/lib/components/layout/services/index.mjs +2 -0
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +190 -190
- package/esm2020/lib/components/layout/topbar.component.mjs +59 -40
- package/esm2020/lib/components/tableview/index.mjs +6 -6
- package/esm2020/lib/components/tableview/models/index.mjs +2 -0
- package/esm2020/lib/components/tableview/models/table.event.mjs +16 -0
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +24 -24
- package/esm2020/lib/components/tableview/services/index.mjs +2 -0
- package/esm2020/lib/components/tableview/services/tableview.component.service.mjs +17 -0
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +85 -74
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +25 -25
- package/esm2020/lib/components/tableview/table/table.component.mjs +307 -307
- package/esm2020/lib/components/tableview/tableview.component.mjs +82 -83
- package/esm2020/lib/config/formly.config.mjs +136 -136
- package/esm2020/lib/config/index.mjs +2 -2
- package/esm2020/lib/config/models/index.mjs +2 -0
- package/esm2020/lib/config/models/mng-config.model.mjs +2 -0
- package/esm2020/lib/data-providers/base.data-provider.mjs +24 -0
- package/esm2020/lib/data-providers/editor.data-provider.mjs +37 -0
- package/esm2020/lib/data-providers/index.mjs +6 -0
- package/esm2020/lib/data-providers/lookup.data-provider.mjs +16 -0
- package/esm2020/lib/data-providers/table.data-provider.mjs +2 -0
- package/esm2020/lib/data-providers/tableview.data-provider.mjs +17 -0
- package/esm2020/lib/descriptors/action.descriptor.mjs +332 -0
- package/esm2020/lib/descriptors/editor.descriptor.mjs +670 -0
- package/esm2020/lib/descriptors/field.validator.mjs +21 -0
- package/esm2020/lib/descriptors/index.mjs +8 -0
- package/esm2020/lib/descriptors/lookup.descriptor.mjs +2 -0
- package/esm2020/lib/descriptors/model.descriptor.mjs +34 -0
- package/esm2020/lib/descriptors/table.descriptor.mjs +427 -0
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +131 -0
- package/esm2020/lib/directives/component.directive.mjs +23 -0
- package/esm2020/lib/directives/index.mjs +3 -2
- package/esm2020/lib/directives/template.directive.mjs +29 -25
- package/esm2020/lib/mng-commons.module.mjs +410 -343
- package/esm2020/lib/models/index.mjs +3 -0
- package/esm2020/lib/models/router.model.mjs +2 -0
- package/esm2020/lib/models/user.model.mjs +2 -0
- package/esm2020/lib/pipes/boolean.pipe.mjs +22 -22
- package/esm2020/lib/pipes/index.mjs +3 -3
- package/esm2020/lib/pipes/property-path.pipe.mjs +36 -36
- package/esm2020/lib/services/action.service.mjs +269 -270
- package/esm2020/lib/services/commons.service.mjs +354 -357
- package/esm2020/lib/services/configuration.service.mjs +78 -77
- package/esm2020/lib/services/index.mjs +5 -5
- package/esm2020/lib/services/navigation.service.mjs +48 -48
- package/esm2020/lib/services/providers/commons-init.provider.mjs +4 -4
- package/esm2020/lib/services/providers/config-service.provider.mjs +20 -12
- package/esm2020/lib/services/providers/formly-config.provider.mjs +31 -31
- package/esm2020/lib/services/providers/index.mjs +4 -3
- package/esm2020/lib/services/tokens/browser-storage.token.mjs +6 -0
- package/esm2020/lib/services/tokens/index.mjs +3 -0
- package/esm2020/lib/services/tokens/module-config.token.mjs +3 -0
- package/esm2020/lib/types/index.mjs +3 -0
- package/esm2020/lib/types/type.decorator.mjs +7 -0
- package/esm2020/lib/types/type.model.mjs +2 -0
- package/esm2020/lib/utils/editor-formly.util.mjs +176 -176
- package/esm2020/lib/utils/i18n.util.mjs +125 -125
- package/esm2020/lib/utils/index.mjs +6 -5
- package/esm2020/lib/utils/model.util.mjs +57 -57
- package/esm2020/lib/utils/toast.util.mjs +39 -39
- package/esm2020/lib/utils/type.util.mjs +39 -39
- package/esm2020/mediusinc-mng-commons.mjs +5 -5
- package/esm2020/public-api.mjs +36 -35
- package/fesm2015/mediusinc-mng-commons.mjs +6086 -5914
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +6010 -5841
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/models/builders/query-param.builder.d.ts +11 -11
- package/lib/api/models/filter-match-type.model.d.ts +23 -23
- package/lib/api/models/filter-param.model.d.ts +23 -23
- package/lib/api/models/index.d.ts +8 -8
- package/lib/api/models/mappers.d.ts +6 -6
- package/lib/api/models/query-mode.model.d.ts +16 -16
- package/lib/api/models/query-param.model.d.ts +31 -31
- package/lib/api/models/query-result.model.d.ts +36 -36
- package/lib/api/models/serialization.model.d.ts +8 -8
- package/lib/api/services/{abstract-crud-api.service.d.ts → crud-api.abstract.service.d.ts} +23 -23
- package/lib/api/services/index.d.ts +1 -1
- package/lib/api/utils/index.d.ts +2 -2
- package/lib/api/utils/medius-rest.util.d.ts +12 -12
- package/lib/api/utils/object-serializer.util.d.ts +30 -30
- package/lib/components/action/action.component.d.ts +36 -36
- package/lib/components/action/dialog/action-dialog.component.d.ts +46 -49
- package/lib/components/action/index.d.ts +3 -3
- package/lib/{models/interfaces/confirmation-service.model.d.ts → components/action/models/action-confirmation-service.model.d.ts} +6 -6
- package/lib/{models/action/action.model.d.ts → components/action/models/action-execution.model.d.ts} +53 -53
- package/lib/components/action/models/index.d.ts +2 -0
- package/lib/components/action/route/action-route.component.d.ts +32 -32
- package/lib/components/form/autocomplete/{mng-autocomplete.component.d.ts → autocomplete.component.d.ts} +36 -36
- package/lib/components/form/dropdown/{mng-dropdown.component.d.ts → dropdown.component.d.ts} +34 -34
- package/lib/components/form/editor/form-editor.component.d.ts +39 -39
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +11 -11
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +11 -11
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +6 -6
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +12 -12
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +17 -17
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +36 -36
- package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
- package/lib/components/form/formly/fields/index.d.ts +7 -7
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +8 -8
- package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +8 -8
- package/lib/components/form/formly/wrappers/index.d.ts +2 -2
- package/lib/components/form/index.d.ts +3 -3
- package/lib/components/form/models/form-editor.event.d.ts +5 -0
- package/lib/components/form/models/index.d.ts +1 -0
- package/lib/components/layout/breadcrumb.component.d.ts +8 -8
- package/lib/components/layout/footer.component.d.ts +9 -9
- package/lib/components/layout/index.d.ts +6 -6
- package/lib/components/layout/main-layout.component.d.ts +21 -13
- package/lib/components/layout/menu-item.component.d.ts +29 -29
- package/lib/components/layout/menu.component.d.ts +10 -10
- package/lib/components/layout/services/index.d.ts +1 -0
- package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
- package/lib/components/layout/topbar.component.d.ts +25 -18
- package/lib/components/tableview/index.d.ts +5 -5
- package/lib/components/tableview/models/index.d.ts +1 -0
- package/lib/{models/events/table-event.model.d.ts → components/tableview/models/table.event.d.ts} +17 -17
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +14 -14
- package/lib/components/tableview/services/index.d.ts +1 -0
- package/lib/components/tableview/{tableview.component.service.d.ts → services/tableview.component.service.d.ts} +13 -13
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +27 -22
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +12 -12
- package/lib/components/tableview/table/table.component.d.ts +79 -79
- package/lib/components/tableview/tableview.component.d.ts +35 -36
- package/lib/config/formly.config.d.ts +14 -14
- package/lib/config/index.d.ts +1 -1
- package/lib/{models/config → config/models}/index.d.ts +1 -1
- package/lib/{models/config → config/models}/mng-config.model.d.ts +34 -37
- package/lib/data-providers/base.data-provider.d.ts +17 -0
- package/lib/data-providers/editor.data-provider.d.ts +25 -0
- package/lib/data-providers/index.d.ts +5 -0
- package/lib/data-providers/lookup.data-provider.d.ts +14 -0
- package/lib/data-providers/table.data-provider.d.ts +6 -0
- package/lib/data-providers/tableview.data-provider.d.ts +15 -0
- package/lib/{models/descriptors/action-descriptor.model.d.ts → descriptors/action.descriptor.d.ts} +148 -145
- package/lib/{models/descriptors/editor-descriptor.model.d.ts → descriptors/editor.descriptor.d.ts} +255 -257
- package/lib/{models/validators → descriptors}/field.validator.d.ts +18 -18
- package/lib/descriptors/index.d.ts +7 -0
- package/lib/{models/interfaces/lookup.model.d.ts → descriptors/lookup.descriptor.d.ts} +17 -17
- package/lib/{models/descriptors/model-descriptor.model.d.ts → descriptors/model.descriptor.d.ts} +15 -15
- package/lib/{models/descriptors/table-descriptor.model.d.ts → descriptors/table.descriptor.d.ts} +184 -164
- package/lib/{models/descriptors/tableview-descriptor.model.d.ts → descriptors/tableview.descriptor.d.ts} +39 -41
- package/lib/directives/component.directive.d.ts +11 -0
- package/lib/directives/index.d.ts +2 -1
- package/lib/directives/template.directive.d.ts +13 -11
- package/lib/mng-commons.module.d.ts +79 -78
- package/lib/models/{router/index.d.ts → index.d.ts} +2 -1
- package/lib/models/router.model.d.ts +14 -0
- package/lib/models/{user/user.model.d.ts → user.model.d.ts} +8 -8
- package/lib/pipes/boolean.pipe.d.ts +7 -7
- package/lib/pipes/index.d.ts +2 -2
- package/lib/pipes/property-path.pipe.d.ts +7 -7
- package/lib/services/action.service.d.ts +92 -92
- package/lib/services/commons.service.d.ts +72 -74
- package/lib/services/configuration.service.d.ts +35 -35
- package/lib/services/index.d.ts +4 -4
- package/lib/services/navigation.service.d.ts +14 -14
- package/lib/services/providers/commons-init.provider.d.ts +2 -2
- package/lib/services/providers/config-service.provider.d.ts +5 -5
- package/lib/services/providers/formly-config.provider.d.ts +4 -4
- package/lib/services/providers/index.d.ts +3 -2
- package/lib/services/tokens/browser-storage.token.d.ts +2 -0
- package/lib/services/tokens/index.d.ts +2 -0
- package/lib/services/tokens/module-config.token.d.ts +3 -0
- package/lib/{models/types → types}/index.d.ts +2 -2
- package/lib/{models/types → types}/type.decorator.d.ts +2 -2
- package/lib/{models/types → types}/type.model.d.ts +10 -10
- package/lib/utils/editor-formly.util.d.ts +9 -9
- package/lib/utils/i18n.util.d.ts +18 -18
- package/lib/utils/index.d.ts +5 -4
- package/lib/utils/model.util.d.ts +7 -7
- package/lib/utils/toast.util.d.ts +13 -13
- package/lib/utils/type.util.d.ts +15 -15
- package/mediusinc-mng-commons.d.ts +5 -5
- package/package.json +4 -4
- package/public-api.d.ts +25 -24
- package/scss/common/layout/_exception.scss +1 -1
- package/scss/common/layout/_help.scss +3 -3
- package/scss/common/layout/_landing.scss +1 -1
- package/scss/common/variables/layout/_common.scss +2 -0
- package/scss/common/variables/layout/_layout_dark.scss +4 -3
- package/scss/common/variables/layout/_layout_light.scss +4 -3
- package/scss/layout/default/_mng-variables-layout-light.scss +2 -2
- package/scss/mng-commons-dark.scss +0 -5
- package/scss/mng-commons-light.scss +0 -8
- package/scss/theme/default/_mng-variables-theme-light.scss +4 -4
- package/.pnpm-debug.log +0 -15
- package/esm2020/lib/api/services/abstract-crud-api.service.mjs +0 -72
- package/esm2020/lib/components/form/autocomplete/mng-autocomplete.component.mjs +0 -114
- package/esm2020/lib/components/form/dropdown/mng-dropdown.component.mjs +0 -113
- package/esm2020/lib/components/tableview/tableview.component.service.mjs +0 -18
- package/esm2020/lib/models/action/action.model.mjs +0 -58
- package/esm2020/lib/models/action/index.mjs +0 -2
- package/esm2020/lib/models/config/index.mjs +0 -2
- package/esm2020/lib/models/config/mng-config.model.mjs +0 -3
- package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +0 -325
- package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +0 -671
- package/esm2020/lib/models/descriptors/index.mjs +0 -6
- package/esm2020/lib/models/descriptors/model-descriptor.model.mjs +0 -34
- package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +0 -401
- package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +0 -133
- package/esm2020/lib/models/events/editor-event.model.mjs +0 -14
- package/esm2020/lib/models/events/index.mjs +0 -3
- package/esm2020/lib/models/events/table-event.model.mjs +0 -16
- package/esm2020/lib/models/interfaces/confirmation-service.model.mjs +0 -2
- package/esm2020/lib/models/interfaces/index.mjs +0 -3
- package/esm2020/lib/models/interfaces/lookup.model.mjs +0 -2
- package/esm2020/lib/models/providers/data-provider.model.mjs +0 -86
- package/esm2020/lib/models/providers/index.mjs +0 -2
- package/esm2020/lib/models/router/index.mjs +0 -2
- package/esm2020/lib/models/router/router.model.mjs +0 -2
- package/esm2020/lib/models/types/index.mjs +0 -3
- package/esm2020/lib/models/types/type.decorator.mjs +0 -7
- package/esm2020/lib/models/types/type.model.mjs +0 -2
- package/esm2020/lib/models/user/index.mjs +0 -2
- package/esm2020/lib/models/user/user.model.mjs +0 -2
- package/esm2020/lib/models/validators/field.validator.mjs +0 -21
- package/esm2020/lib/models/validators/index.mjs +0 -2
- package/lib/models/action/index.d.ts +0 -1
- package/lib/models/descriptors/index.d.ts +0 -5
- package/lib/models/events/editor-event.model.d.ts +0 -11
- package/lib/models/events/index.d.ts +0 -2
- package/lib/models/interfaces/index.d.ts +0 -2
- package/lib/models/providers/data-provider.model.d.ts +0 -62
- package/lib/models/providers/index.d.ts +0 -1
- package/lib/models/router/router.model.d.ts +0 -9
- package/lib/models/user/index.d.ts +0 -1
- package/lib/models/validators/index.d.ts +0 -1
- package/mediusinc-mng-commons-0.1.0.tgz +0 -0
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './action-descriptor.model';
|
|
2
|
-
export * from './editor-descriptor.model';
|
|
3
|
-
export * from './model-descriptor.model';
|
|
4
|
-
export * from './table-descriptor.model';
|
|
5
|
-
export * from './tableview-descriptor.model';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL21vZGVscy9kZXNjcmlwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGlvbi1kZXNjcmlwdG9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yLWRlc2NyaXB0b3IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC1kZXNjcmlwdG9yLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtZGVzY3JpcHRvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy1kZXNjcmlwdG9yLm1vZGVsJztcbiJdfQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ModelUtil, TypeUtil } from '../../utils';
|
|
2
|
-
export class ModelDescriptor {
|
|
3
|
-
constructor(modelType, idProperty, titleProperty) {
|
|
4
|
-
this._type = modelType;
|
|
5
|
-
this._idPropertyName = idProperty ?? (ModelUtil.findIdAttribute(modelType) ?? undefined);
|
|
6
|
-
this._titlePropertyName = titleProperty ?? (ModelUtil.findTitleAttribute(modelType) ?? undefined);
|
|
7
|
-
this._typeName = TypeUtil.findTypeName(this._type);
|
|
8
|
-
}
|
|
9
|
-
get type() {
|
|
10
|
-
return this._type;
|
|
11
|
-
}
|
|
12
|
-
get typeName() {
|
|
13
|
-
return this._typeName;
|
|
14
|
-
}
|
|
15
|
-
get idPropertyName() {
|
|
16
|
-
return this._idPropertyName;
|
|
17
|
-
}
|
|
18
|
-
get titlePropertyName() {
|
|
19
|
-
return this._titlePropertyName;
|
|
20
|
-
}
|
|
21
|
-
withIdPropertyName(idProperty) {
|
|
22
|
-
this._idPropertyName = idProperty;
|
|
23
|
-
return this;
|
|
24
|
-
}
|
|
25
|
-
withTitlePropertyName(titleProperty) {
|
|
26
|
-
this._titlePropertyName = titleProperty;
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
copy() {
|
|
30
|
-
const model = new ModelDescriptor(this._type, this._idPropertyName, this._titlePropertyName);
|
|
31
|
-
return model;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZGVzY3JpcHRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvbW9kZWxzL2Rlc2NyaXB0b3JzL21vZGVsLWRlc2NyaXB0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFaEQsTUFBTSxPQUFPLGVBQWU7SUFNeEIsWUFBWSxTQUF1QixFQUFFLFVBQW1CLEVBQUUsYUFBc0I7UUFDNUUsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxhQUFhLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUM7UUFDbEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsY0FBYztRQUNyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxVQUFrQjtRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0scUJBQXFCLENBQUMsYUFBcUI7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtNb2RlbFV0aWwsIFR5cGVVdGlsfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbERlc2NyaXB0b3I8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3R5cGU6IENsYXNzVHlwZTxUPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90eXBlTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2lkUHJvcGVydHlOYW1lPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3RpdGxlUHJvcGVydHlOYW1lPzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgdGhpcy5faWRQcm9wZXJ0eU5hbWUgPSBpZFByb3BlcnR5ID8/IChNb2RlbFV0aWwuZmluZElkQXR0cmlidXRlKG1vZGVsVHlwZSkgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5fdGl0bGVQcm9wZXJ0eU5hbWUgPSB0aXRsZVByb3BlcnR5ID8/IChNb2RlbFV0aWwuZmluZFRpdGxlQXR0cmlidXRlKG1vZGVsVHlwZSkgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5fdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUodGhpcy5fdHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHR5cGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpZFByb3BlcnR5TmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkUHJvcGVydHlOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGl0bGVQcm9wZXJ0eU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZVByb3BlcnR5TmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aElkUHJvcGVydHlOYW1lKGlkUHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pZFByb3BlcnR5TmFtZSA9IGlkUHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGl0bGVQcm9wZXJ0eU5hbWUodGl0bGVQcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RpdGxlUHJvcGVydHlOYW1lID0gdGl0bGVQcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogTW9kZWxEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWxEZXNjcmlwdG9yKHRoaXMuX3R5cGUsIHRoaXMuX2lkUHJvcGVydHlOYW1lLCB0aGlzLl90aXRsZVByb3BlcnR5TmFtZSk7XG4gICAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,401 +0,0 @@
|
|
|
1
|
-
import { ModelDescriptor } from './model-descriptor.model';
|
|
2
|
-
import { LookupDataProvider } from '../providers';
|
|
3
|
-
import { ModelUtil } from '../../utils';
|
|
4
|
-
export class TableDescriptor {
|
|
5
|
-
constructor(modelType, idProperty, titleProperty) {
|
|
6
|
-
this._filterDisplay = TableDescriptor.FilterDisplayEnum.Menu;
|
|
7
|
-
this._paginationMode = TableDescriptor.PaginationModeEnum.Pagination;
|
|
8
|
-
this._columns = [];
|
|
9
|
-
this._hasDefaultSort = false;
|
|
10
|
-
this._defaultSortProperty = [];
|
|
11
|
-
this._defaultSortAsc = [];
|
|
12
|
-
this._rowHeight = 45;
|
|
13
|
-
this._tableFullHeightOffset = 315;
|
|
14
|
-
this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
|
|
15
|
-
}
|
|
16
|
-
get model() {
|
|
17
|
-
return this._model;
|
|
18
|
-
}
|
|
19
|
-
get filterDisplay() {
|
|
20
|
-
return this._filterDisplay;
|
|
21
|
-
}
|
|
22
|
-
get paginationMode() {
|
|
23
|
-
return this._paginationMode;
|
|
24
|
-
}
|
|
25
|
-
get columns() {
|
|
26
|
-
return this._columns;
|
|
27
|
-
}
|
|
28
|
-
get title() {
|
|
29
|
-
return this._title;
|
|
30
|
-
}
|
|
31
|
-
get dataKeyProperty() {
|
|
32
|
-
return this._dataKeyProperty;
|
|
33
|
-
}
|
|
34
|
-
get hasDefaultSort() {
|
|
35
|
-
return this._hasDefaultSort;
|
|
36
|
-
}
|
|
37
|
-
get defaultSortProperty() {
|
|
38
|
-
return this._defaultSortProperty;
|
|
39
|
-
}
|
|
40
|
-
get defaultSortAsc() {
|
|
41
|
-
return this._defaultSortAsc;
|
|
42
|
-
}
|
|
43
|
-
get rowHeight() {
|
|
44
|
-
return this._rowHeight;
|
|
45
|
-
}
|
|
46
|
-
get tableFullHeightOffset() {
|
|
47
|
-
return this._tableFullHeightOffset;
|
|
48
|
-
}
|
|
49
|
-
addColumnDescriptor(column) {
|
|
50
|
-
this._columns.push(column);
|
|
51
|
-
this.setDataKeyFromColumn();
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
addColumn(property) {
|
|
55
|
-
const column = new ColumnDescriptor(this, property);
|
|
56
|
-
this._columns.push(column);
|
|
57
|
-
this.setDataKeyFromColumn();
|
|
58
|
-
return column;
|
|
59
|
-
}
|
|
60
|
-
addColumnNumber(property, displayFormat) {
|
|
61
|
-
const column = new ColumnDescriptor(this, property);
|
|
62
|
-
column.asNumber(displayFormat);
|
|
63
|
-
this._columns.push(column);
|
|
64
|
-
this.setDataKeyFromColumn();
|
|
65
|
-
return column;
|
|
66
|
-
}
|
|
67
|
-
addColumnDate(property, displayFormat) {
|
|
68
|
-
const column = new ColumnDescriptor(this, property);
|
|
69
|
-
column.asDate(displayFormat);
|
|
70
|
-
this._columns.push(column);
|
|
71
|
-
this.setDataKeyFromColumn();
|
|
72
|
-
return column;
|
|
73
|
-
}
|
|
74
|
-
addColumnBoolean(property) {
|
|
75
|
-
const column = new ColumnDescriptor(this, property);
|
|
76
|
-
column.asBoolean();
|
|
77
|
-
this._columns.push(column);
|
|
78
|
-
this.setDataKeyFromColumn();
|
|
79
|
-
return column;
|
|
80
|
-
}
|
|
81
|
-
addColumnObject(property, modelType, displayProperty) {
|
|
82
|
-
const column = new ColumnDescriptor(this, property);
|
|
83
|
-
column.withModelType(modelType);
|
|
84
|
-
column.withDisplayPropertyPath(displayProperty);
|
|
85
|
-
this._columns.push(column);
|
|
86
|
-
this.setDataKeyFromColumn();
|
|
87
|
-
return column;
|
|
88
|
-
}
|
|
89
|
-
withFilterDisplay(filterDisplayType) {
|
|
90
|
-
this._filterDisplay = filterDisplayType;
|
|
91
|
-
return this;
|
|
92
|
-
}
|
|
93
|
-
withPaginationMode(paginationMode) {
|
|
94
|
-
this._paginationMode = paginationMode;
|
|
95
|
-
return this;
|
|
96
|
-
}
|
|
97
|
-
withTitle(title) {
|
|
98
|
-
this._title = title;
|
|
99
|
-
return this;
|
|
100
|
-
}
|
|
101
|
-
withDataKeyProperty(property) {
|
|
102
|
-
this._dataKeyProperty = property;
|
|
103
|
-
return this;
|
|
104
|
-
}
|
|
105
|
-
withDefaultSort(property, asc = true) {
|
|
106
|
-
this._hasDefaultSort = true;
|
|
107
|
-
this._defaultSortProperty.push(property);
|
|
108
|
-
this._defaultSortAsc.push(asc);
|
|
109
|
-
return this;
|
|
110
|
-
}
|
|
111
|
-
withRowHeight(rowHeight) {
|
|
112
|
-
this._rowHeight = rowHeight;
|
|
113
|
-
return this;
|
|
114
|
-
}
|
|
115
|
-
withTableFullHeightOffset(tableFullHeightOffset) {
|
|
116
|
-
this._tableFullHeightOffset = tableFullHeightOffset;
|
|
117
|
-
return this;
|
|
118
|
-
}
|
|
119
|
-
setDataKeyFromColumn() {
|
|
120
|
-
if (!this._dataKeyProperty && this._columns.length === 1) {
|
|
121
|
-
this._dataKeyProperty = this._columns[0].property;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
copy() {
|
|
125
|
-
const descriptor = new TableDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
|
|
126
|
-
descriptor._columns = this.columns.map(c => c.copy());
|
|
127
|
-
descriptor._title = this._title;
|
|
128
|
-
descriptor._dataKeyProperty = this._dataKeyProperty;
|
|
129
|
-
descriptor._defaultSortProperty = this._defaultSortProperty.map(p => p);
|
|
130
|
-
descriptor._defaultSortAsc = this._defaultSortAsc.map(p => p);
|
|
131
|
-
descriptor._filterDisplay = this._filterDisplay;
|
|
132
|
-
return descriptor;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
(function (TableDescriptor) {
|
|
136
|
-
let PaginationModeEnum;
|
|
137
|
-
(function (PaginationModeEnum) {
|
|
138
|
-
PaginationModeEnum[PaginationModeEnum["Pagination"] = 0] = "Pagination";
|
|
139
|
-
PaginationModeEnum[PaginationModeEnum["InfiniteScroll"] = 1] = "InfiniteScroll";
|
|
140
|
-
})(PaginationModeEnum = TableDescriptor.PaginationModeEnum || (TableDescriptor.PaginationModeEnum = {}));
|
|
141
|
-
let FilterDisplayEnum;
|
|
142
|
-
(function (FilterDisplayEnum) {
|
|
143
|
-
FilterDisplayEnum[FilterDisplayEnum["Row"] = 0] = "Row";
|
|
144
|
-
FilterDisplayEnum[FilterDisplayEnum["Menu"] = 1] = "Menu";
|
|
145
|
-
})(FilterDisplayEnum = TableDescriptor.FilterDisplayEnum || (TableDescriptor.FilterDisplayEnum = {}));
|
|
146
|
-
})(TableDescriptor || (TableDescriptor = {}));
|
|
147
|
-
export class ColumnDescriptor {
|
|
148
|
-
constructor(table, property) {
|
|
149
|
-
this._modelType = null;
|
|
150
|
-
this._columnType = ColumnDescriptor.TypeEnum.String;
|
|
151
|
-
this._isSortEnabled = false;
|
|
152
|
-
this._table = table;
|
|
153
|
-
this._property = property;
|
|
154
|
-
}
|
|
155
|
-
get table() {
|
|
156
|
-
return this._table;
|
|
157
|
-
}
|
|
158
|
-
get property() {
|
|
159
|
-
return this._property;
|
|
160
|
-
}
|
|
161
|
-
get modelType() {
|
|
162
|
-
return this._modelType;
|
|
163
|
-
}
|
|
164
|
-
get displayPropertyPath() {
|
|
165
|
-
return this._displayPropertyPath;
|
|
166
|
-
}
|
|
167
|
-
get title() {
|
|
168
|
-
return this._title;
|
|
169
|
-
}
|
|
170
|
-
get isSortEnabled() {
|
|
171
|
-
return this._isSortEnabled;
|
|
172
|
-
}
|
|
173
|
-
get columnType() {
|
|
174
|
-
return this._columnType;
|
|
175
|
-
}
|
|
176
|
-
get filterDescriptor() {
|
|
177
|
-
return this._filterDescriptor;
|
|
178
|
-
}
|
|
179
|
-
get displayFormat() {
|
|
180
|
-
return this._displayFormat;
|
|
181
|
-
}
|
|
182
|
-
asType(type = ColumnDescriptor.TypeEnum.String) {
|
|
183
|
-
this._columnType = type;
|
|
184
|
-
return this;
|
|
185
|
-
}
|
|
186
|
-
asNumber(displayFormat = '1.0-0') {
|
|
187
|
-
this._columnType = ColumnDescriptor.TypeEnum.Number;
|
|
188
|
-
this._displayFormat = displayFormat;
|
|
189
|
-
return this;
|
|
190
|
-
}
|
|
191
|
-
asDate(displayFormat = 'dd.MM.yyyy') {
|
|
192
|
-
this._columnType = ColumnDescriptor.TypeEnum.Date;
|
|
193
|
-
this._displayFormat = displayFormat;
|
|
194
|
-
return this;
|
|
195
|
-
}
|
|
196
|
-
asBoolean() {
|
|
197
|
-
this._columnType = ColumnDescriptor.TypeEnum.Boolean;
|
|
198
|
-
return this;
|
|
199
|
-
}
|
|
200
|
-
withModelType(modelType) {
|
|
201
|
-
this._modelType = modelType;
|
|
202
|
-
return this;
|
|
203
|
-
}
|
|
204
|
-
withTitle(title) {
|
|
205
|
-
this._title = title;
|
|
206
|
-
return this;
|
|
207
|
-
}
|
|
208
|
-
withDisplayPropertyPath(displayPropertyPath) {
|
|
209
|
-
this._displayPropertyPath = displayPropertyPath;
|
|
210
|
-
return this;
|
|
211
|
-
}
|
|
212
|
-
withFilter() {
|
|
213
|
-
this._filterDescriptor = new FilterDescriptor(this._property);
|
|
214
|
-
this._filterDescriptor.asFilterType(this._columnType);
|
|
215
|
-
return this._filterDescriptor;
|
|
216
|
-
}
|
|
217
|
-
withFilterLookup() {
|
|
218
|
-
const filterDescriptor = new FilterLookupDescriptor(this._property, this._modelType);
|
|
219
|
-
this._filterDescriptor = filterDescriptor;
|
|
220
|
-
return filterDescriptor;
|
|
221
|
-
}
|
|
222
|
-
withSort(isEnabled = true) {
|
|
223
|
-
this._isSortEnabled = isEnabled;
|
|
224
|
-
return this;
|
|
225
|
-
}
|
|
226
|
-
copy() {
|
|
227
|
-
const descriptor = new ColumnDescriptor(this._table, this._property);
|
|
228
|
-
descriptor._displayPropertyPath = this._displayPropertyPath;
|
|
229
|
-
descriptor._title = this._title;
|
|
230
|
-
descriptor._isSortEnabled = this._isSortEnabled;
|
|
231
|
-
descriptor._columnType = this._columnType;
|
|
232
|
-
descriptor._filterDescriptor = this._filterDescriptor?.copy();
|
|
233
|
-
return descriptor;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
(function (ColumnDescriptor) {
|
|
237
|
-
let TypeEnum;
|
|
238
|
-
(function (TypeEnum) {
|
|
239
|
-
TypeEnum[TypeEnum["String"] = 0] = "String";
|
|
240
|
-
TypeEnum[TypeEnum["Number"] = 1] = "Number";
|
|
241
|
-
TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
|
|
242
|
-
TypeEnum[TypeEnum["Date"] = 3] = "Date";
|
|
243
|
-
})(TypeEnum = ColumnDescriptor.TypeEnum || (ColumnDescriptor.TypeEnum = {}));
|
|
244
|
-
})(ColumnDescriptor || (ColumnDescriptor = {}));
|
|
245
|
-
export class FilterDescriptor {
|
|
246
|
-
constructor(property) {
|
|
247
|
-
this._filterType = FilterDescriptor.TypeEnum.String;
|
|
248
|
-
this._className = '';
|
|
249
|
-
this._property = property;
|
|
250
|
-
}
|
|
251
|
-
get property() {
|
|
252
|
-
return this._property;
|
|
253
|
-
}
|
|
254
|
-
get filterType() {
|
|
255
|
-
return this._filterType;
|
|
256
|
-
}
|
|
257
|
-
get filterProperty() {
|
|
258
|
-
return this._filterProperty;
|
|
259
|
-
}
|
|
260
|
-
get placeholder() {
|
|
261
|
-
return this._placeholder;
|
|
262
|
-
}
|
|
263
|
-
get className() {
|
|
264
|
-
return this._className;
|
|
265
|
-
}
|
|
266
|
-
asFilterType(filterType) {
|
|
267
|
-
this._filterType = filterType;
|
|
268
|
-
return this;
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.
|
|
272
|
-
* @param filterProperty
|
|
273
|
-
*/
|
|
274
|
-
withFilterProperty(filterProperty) {
|
|
275
|
-
this._filterProperty = filterProperty;
|
|
276
|
-
return this;
|
|
277
|
-
}
|
|
278
|
-
withPlaceholder(placeholder) {
|
|
279
|
-
this._placeholder = placeholder;
|
|
280
|
-
return this;
|
|
281
|
-
}
|
|
282
|
-
withClassName(className) {
|
|
283
|
-
this._className = className;
|
|
284
|
-
return this;
|
|
285
|
-
}
|
|
286
|
-
copyFieldsTo(descriptor) {
|
|
287
|
-
descriptor._filterType = this._filterType;
|
|
288
|
-
descriptor._filterProperty = this._filterProperty;
|
|
289
|
-
descriptor._placeholder = this._placeholder;
|
|
290
|
-
descriptor._className = this._className;
|
|
291
|
-
}
|
|
292
|
-
copy() {
|
|
293
|
-
const descriptor = new FilterDescriptor(this._property);
|
|
294
|
-
this.copyFieldsTo(descriptor);
|
|
295
|
-
return descriptor;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
(function (FilterDescriptor) {
|
|
299
|
-
let TypeEnum;
|
|
300
|
-
(function (TypeEnum) {
|
|
301
|
-
TypeEnum[TypeEnum["String"] = 0] = "String";
|
|
302
|
-
TypeEnum[TypeEnum["Number"] = 1] = "Number";
|
|
303
|
-
TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
|
|
304
|
-
TypeEnum[TypeEnum["Date"] = 3] = "Date";
|
|
305
|
-
TypeEnum[TypeEnum["Lookup"] = 4] = "Lookup";
|
|
306
|
-
})(TypeEnum = FilterDescriptor.TypeEnum || (FilterDescriptor.TypeEnum = {}));
|
|
307
|
-
})(FilterDescriptor || (FilterDescriptor = {}));
|
|
308
|
-
export class FilterLookupDescriptor extends FilterDescriptor {
|
|
309
|
-
constructor(property, modelType) {
|
|
310
|
-
super(property);
|
|
311
|
-
this._modelType = null;
|
|
312
|
-
this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Dropdown;
|
|
313
|
-
this._multiselect = false;
|
|
314
|
-
this._dropdownClassName = 'mng-filter-lookup-dropdown';
|
|
315
|
-
this._modelType = modelType;
|
|
316
|
-
this._filterType = FilterDescriptor.TypeEnum.Lookup;
|
|
317
|
-
ModelUtil.trySetLookupItemsProperties(this);
|
|
318
|
-
}
|
|
319
|
-
get modelType() {
|
|
320
|
-
return this._modelType;
|
|
321
|
-
}
|
|
322
|
-
get lookupType() {
|
|
323
|
-
return this._lookupType;
|
|
324
|
-
}
|
|
325
|
-
get itemsLabelProperty() {
|
|
326
|
-
return this._itemsLabelProperty;
|
|
327
|
-
}
|
|
328
|
-
get itemsValueProperty() {
|
|
329
|
-
return this._itemsValueProperty;
|
|
330
|
-
}
|
|
331
|
-
get dataKeyProperty() {
|
|
332
|
-
return this._dataKeyProperty;
|
|
333
|
-
}
|
|
334
|
-
get dataProvider() {
|
|
335
|
-
return this._dataProvider;
|
|
336
|
-
}
|
|
337
|
-
get multiselect() {
|
|
338
|
-
return this._multiselect;
|
|
339
|
-
}
|
|
340
|
-
withItemsLabelProperty(itemsLabelProperty) {
|
|
341
|
-
this._itemsLabelProperty = itemsLabelProperty;
|
|
342
|
-
return this;
|
|
343
|
-
}
|
|
344
|
-
withItemsValueProperty(itemsValueProperty) {
|
|
345
|
-
this._itemsValueProperty = itemsValueProperty;
|
|
346
|
-
return this;
|
|
347
|
-
}
|
|
348
|
-
withDataKeyProperty(dataKeyProperty) {
|
|
349
|
-
this._dataKeyProperty = dataKeyProperty;
|
|
350
|
-
return this;
|
|
351
|
-
}
|
|
352
|
-
get dropdownClassName() {
|
|
353
|
-
return this._dropdownClassName;
|
|
354
|
-
}
|
|
355
|
-
withLookup(lookup, serviceType) {
|
|
356
|
-
const dataProvider = new LookupDataProvider(this._modelType);
|
|
357
|
-
if (serviceType) {
|
|
358
|
-
dataProvider.withServiceType(serviceType);
|
|
359
|
-
}
|
|
360
|
-
dataProvider.withLookup(lookup);
|
|
361
|
-
this._dataProvider = dataProvider;
|
|
362
|
-
return this;
|
|
363
|
-
}
|
|
364
|
-
withLookupDataProvider(dataProvider) {
|
|
365
|
-
this._dataProvider = dataProvider;
|
|
366
|
-
return this;
|
|
367
|
-
}
|
|
368
|
-
withMultiselect(multiselect = true) {
|
|
369
|
-
this._multiselect = multiselect;
|
|
370
|
-
return this;
|
|
371
|
-
}
|
|
372
|
-
withDropdownClassName(dropdownClassName) {
|
|
373
|
-
this._dropdownClassName = dropdownClassName;
|
|
374
|
-
return this;
|
|
375
|
-
}
|
|
376
|
-
asAutocomplete() {
|
|
377
|
-
this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Autocomplete;
|
|
378
|
-
return this;
|
|
379
|
-
}
|
|
380
|
-
copyFieldsTo(descriptor) {
|
|
381
|
-
super.copyFieldsTo(descriptor);
|
|
382
|
-
descriptor._dataProvider = this._dataProvider;
|
|
383
|
-
descriptor._lookupType = this._lookupType;
|
|
384
|
-
descriptor._itemsLabelProperty = this._itemsLabelProperty;
|
|
385
|
-
descriptor._itemsValueProperty = this._itemsValueProperty;
|
|
386
|
-
descriptor._dataKeyProperty = this._dataKeyProperty;
|
|
387
|
-
}
|
|
388
|
-
copy() {
|
|
389
|
-
const descriptor = new FilterLookupDescriptor(this._property, this._modelType);
|
|
390
|
-
this.copyFieldsTo(descriptor);
|
|
391
|
-
return descriptor;
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
(function (FilterLookupDescriptor) {
|
|
395
|
-
let LookupTypeEnum;
|
|
396
|
-
(function (LookupTypeEnum) {
|
|
397
|
-
LookupTypeEnum[LookupTypeEnum["Dropdown"] = 0] = "Dropdown";
|
|
398
|
-
LookupTypeEnum[LookupTypeEnum["Autocomplete"] = 1] = "Autocomplete";
|
|
399
|
-
})(LookupTypeEnum = FilterLookupDescriptor.LookupTypeEnum || (FilterLookupDescriptor.LookupTypeEnum = {}));
|
|
400
|
-
})(FilterLookupDescriptor || (FilterLookupDescriptor = {}));
|
|
401
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGVzY3JpcHRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvbW9kZWxzL2Rlc2NyaXB0b3JzL3RhYmxlLWRlc2NyaXB0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBc0Isa0JBQWtCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDckUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUl0QyxNQUFNLE9BQU8sZUFBZTtJQWV4QixZQUFZLFNBQXVCLEVBQUUsVUFBbUIsRUFBRSxhQUFzQjtRQVp4RSxtQkFBYyxHQUFzQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQzNGLG9CQUFlLEdBQXVDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7UUFDcEcsYUFBUSxHQUFvQyxFQUFFLENBQUM7UUFHL0Msb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLG9CQUFlLEdBQWMsRUFBRSxDQUFDO1FBRWhDLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsMkJBQXNCLEdBQVcsR0FBRyxDQUFDO1FBR3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUksU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7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QVUsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSjtBQUVELFdBQWlCLHNCQUFzQjtJQUNuQyxJQUFZLGNBR1g7SUFIRCxXQUFZLGNBQWM7UUFDdEIsMkRBQVEsQ0FBQTtRQUNSLG1FQUFZLENBQUE7SUFDaEIsQ0FBQyxFQUhXLGNBQWMsR0FBZCxxQ0FBYyxLQUFkLHFDQUFjLFFBR3pCO0FBQ0wsQ0FBQyxFQUxnQixzQkFBc0IsS0FBdEIsc0JBQXNCLFFBS3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4vbW9kZWwtZGVzY3JpcHRvci5tb2RlbCc7XG5pbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtJTG9va3VwRGF0YVByb3ZpZGVyLCBMb29rdXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL3Byb3ZpZGVycyc7XG5pbXBvcnQge01vZGVsVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7SUxvb2t1cH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZURlc2NyaXB0b3I8VD4ge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUPjtcbiAgICBwcml2YXRlIF9maWx0ZXJEaXNwbGF5OiBUYWJsZURlc2NyaXB0b3IuRmlsdGVyRGlzcGxheUVudW0gPSBUYWJsZURlc2NyaXB0b3IuRmlsdGVyRGlzcGxheUVudW0uTWVudTtcbiAgICBwcml2YXRlIF9wYWdpbmF0aW9uTW9kZTogVGFibGVEZXNjcmlwdG9yLlBhZ2luYXRpb25Nb2RlRW51bSA9IFRhYmxlRGVzY3JpcHRvci5QYWdpbmF0aW9uTW9kZUVudW0uUGFnaW5hdGlvbjtcbiAgICBwcml2YXRlIF9jb2x1bW5zOiBBcnJheTxDb2x1bW5EZXNjcmlwdG9yPGFueSwgVD4+ID0gW107XG4gICAgcHJpdmF0ZSBfdGl0bGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZGF0YUtleVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2hhc0RlZmF1bHRTb3J0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZGVmYXVsdFNvcnRQcm9wZXJ0eTogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9kZWZhdWx0U29ydEFzYzogYm9vbGVhbltdID0gW107XG5cbiAgICBwcml2YXRlIF9yb3dIZWlnaHQ6IG51bWJlciA9IDQ1O1xuICAgIHByaXZhdGUgX3RhYmxlRnVsbEhlaWdodE9mZnNldDogbnVtYmVyID0gMzE1O1xuXG4gICAgY29uc3RydWN0b3IobW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBuZXcgTW9kZWxEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyRGlzcGxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckRpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWdpbmF0aW9uTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb25Nb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YUtleVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUtleVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzRGVmYXVsdFNvcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNEZWZhdWx0U29ydDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRTb3J0UHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0U29ydFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGVmYXVsdFNvcnRBc2MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0U29ydEFzYztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0hlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd0hlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlRnVsbEhlaWdodE9mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlRnVsbEhlaWdodE9mZnNldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uRGVzY3JpcHRvcjxDVD4oY29sdW1uOiBDb2x1bW5EZXNjcmlwdG9yPENULCBUPik6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB0aGlzLnNldERhdGFLZXlGcm9tQ29sdW1uKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8c3RyaW5nLCBUPiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4odGhpcywgcHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgdGhpcy5zZXREYXRhS2V5RnJvbUNvbHVtbigpO1xuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5OdW1iZXIocHJvcGVydHk6IHN0cmluZywgZGlzcGxheUZvcm1hdD86IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8bnVtYmVyLCBUPiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPG51bWJlciwgVD4odGhpcywgcHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4uYXNOdW1iZXIoZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB0aGlzLnNldERhdGFLZXlGcm9tQ29sdW1uKCk7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRhdGUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheUZvcm1hdD86IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8RGF0ZSwgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxEYXRlLCBUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi5hc0RhdGUoZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB0aGlzLnNldERhdGFLZXlGcm9tQ29sdW1uKCk7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkJvb2xlYW4ocHJvcGVydHk6IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8Ym9vbGVhbiwgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxib29sZWFuLCBUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi5hc0Jvb2xlYW4oKTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHRoaXMuc2V0RGF0YUtleUZyb21Db2x1bW4oKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uT2JqZWN0PENUPihwcm9wZXJ0eTogc3RyaW5nLCBtb2RlbFR5cGU6IENsYXNzVHlwZTxDVD4sIGRpc3BsYXlQcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxDVCwgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxDVCwgVD4odGhpcywgcHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4ud2l0aE1vZGVsVHlwZShtb2RlbFR5cGUpO1xuICAgICAgICBjb2x1bW4ud2l0aERpc3BsYXlQcm9wZXJ0eVBhdGgoZGlzcGxheVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHRoaXMuc2V0RGF0YUtleUZyb21Db2x1bW4oKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlckRpc3BsYXkoZmlsdGVyRGlzcGxheVR5cGU6IFRhYmxlRGVzY3JpcHRvci5GaWx0ZXJEaXNwbGF5RW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWx0ZXJEaXNwbGF5ID0gZmlsdGVyRGlzcGxheVR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbk1vZGU6IFRhYmxlRGVzY3JpcHRvci5QYWdpbmF0aW9uTW9kZUVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvbk1vZGUgPSBwYWdpbmF0aW9uTW9kZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogVGFibGVEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRhS2V5UHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHRoaXMuX2RhdGFLZXlQcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRTb3J0KHByb3BlcnR5OiBzdHJpbmcsIGFzYzogYm9vbGVhbiA9IHRydWUpOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICB0aGlzLl9oYXNEZWZhdWx0U29ydCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRTb3J0UHJvcGVydHkucHVzaChwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRTb3J0QXNjLnB1c2goYXNjKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3dIZWlnaHQocm93SGVpZ2h0OiBudW1iZXIpOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICB0aGlzLl9yb3dIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFibGVGdWxsSGVpZ2h0T2Zmc2V0KHRhYmxlRnVsbEhlaWdodE9mZnNldDogbnVtYmVyKTogVGFibGVEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgdGhpcy5fdGFibGVGdWxsSGVpZ2h0T2Zmc2V0ID0gdGFibGVGdWxsSGVpZ2h0T2Zmc2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGFLZXlGcm9tQ29sdW1uKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGFLZXlQcm9wZXJ0eSAmJiB0aGlzLl9jb2x1bW5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YUtleVByb3BlcnR5ID0gdGhpcy5fY29sdW1uc1swXS5wcm9wZXJ0eTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGVEZXNjcmlwdG9yKHRoaXMubW9kZWwudHlwZSwgdGhpcy5tb2RlbC5pZFByb3BlcnR5TmFtZSwgdGhpcy5tb2RlbC50aXRsZVByb3BlcnR5TmFtZSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGMgPT4gYy5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9kYXRhS2V5UHJvcGVydHkgPSB0aGlzLl9kYXRhS2V5UHJvcGVydHk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RlZmF1bHRTb3J0UHJvcGVydHkgPSB0aGlzLl9kZWZhdWx0U29ydFByb3BlcnR5Lm1hcChwID0+IHApO1xuICAgICAgICBkZXNjcmlwdG9yLl9kZWZhdWx0U29ydEFzYyA9IHRoaXMuX2RlZmF1bHRTb3J0QXNjLm1hcChwID0+IHApO1xuICAgICAgICBkZXNjcmlwdG9yLl9maWx0ZXJEaXNwbGF5ID0gdGhpcy5fZmlsdGVyRGlzcGxheTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFRhYmxlRGVzY3JpcHRvciB7XG4gICAgZXhwb3J0IGVudW0gUGFnaW5hdGlvbk1vZGVFbnVtIHtcbiAgICAgICAgUGFnaW5hdGlvbixcbiAgICAgICAgSW5maW5pdGVTY3JvbGxcbiAgICB9XG5cbiAgICBleHBvcnQgZW51bSBGaWx0ZXJEaXNwbGF5RW51bSB7XG4gICAgICAgIFJvdyxcbiAgICAgICAgTWVudVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlc2NyaXB0b3I8VCwgVFQ+IHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlOiBUYWJsZURlc2NyaXB0b3I8VFQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb3BlcnR5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbW9kZWxUeXBlOiBDbGFzc1R5cGU8VD58bnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfY29sdW1uVHlwZTogQ29sdW1uRGVzY3JpcHRvci5UeXBlRW51bSA9IENvbHVtbkRlc2NyaXB0b3IuVHlwZUVudW0uU3RyaW5nO1xuICAgIHByaXZhdGUgX3RpdGxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2Rpc3BsYXlQcm9wZXJ0eVBhdGg/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfaXNTb3J0RW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2ZpbHRlckRlc2NyaXB0b3I/OiBGaWx0ZXJEZXNjcmlwdG9yPFQ+O1xuICAgIHByaXZhdGUgX2Rpc3BsYXlGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YWJsZTogVGFibGVEZXNjcmlwdG9yPFRUPiwgcHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgICAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNwbGF5UHJvcGVydHlQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheVByb3BlcnR5UGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1NvcnRFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTb3J0RW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyRGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNwbGF5Rm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNUeXBlKHR5cGU6IENvbHVtbkRlc2NyaXB0b3IuVHlwZUVudW0gPSBDb2x1bW5EZXNjcmlwdG9yLlR5cGVFbnVtLlN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzTnVtYmVyKGRpc3BsYXlGb3JtYXQ6IHN0cmluZyA9ICcxLjAtMCcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtbkRlc2NyaXB0b3IuVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRGF0ZShkaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSAnZGQuTU0ueXl5eScpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtbkRlc2NyaXB0b3IuVHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGRpc3BsYXlGb3JtYXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0Jvb2xlYW4oKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5EZXNjcmlwdG9yLlR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTW9kZWxUeXBlKG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX21vZGVsVHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGlzcGxheVByb3BlcnR5UGF0aChkaXNwbGF5UHJvcGVydHlQYXRoOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGlzcGxheVByb3BlcnR5UGF0aCA9IGRpc3BsYXlQcm9wZXJ0eVBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyKCk6IEZpbHRlckRlc2NyaXB0b3I8VD4ge1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckRlc2NyaXB0b3I8YW55Pih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3IuYXNGaWx0ZXJUeXBlKHRoaXMuX2NvbHVtblR5cGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlckxvb2t1cCgpOiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyRGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPGFueT4odGhpcy5fcHJvcGVydHksIHRoaXMuX21vZGVsVHlwZSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3IgPSBmaWx0ZXJEZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnQoaXNFbmFibGVkOiBib29sZWFuID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1NvcnRFbmFibGVkID0gaXNFbmFibGVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxULCBUVD4odGhpcy5fdGFibGUsIHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGlzcGxheVByb3BlcnR5UGF0aCA9IHRoaXMuX2Rpc3BsYXlQcm9wZXJ0eVBhdGg7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RpdGxlID0gdGhpcy5fdGl0bGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2lzU29ydEVuYWJsZWQgPSB0aGlzLl9pc1NvcnRFbmFibGVkO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5UeXBlID0gdGhpcy5fY29sdW1uVHlwZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZmlsdGVyRGVzY3JpcHRvciA9IHRoaXMuX2ZpbHRlckRlc2NyaXB0b3I/LmNvcHkoKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENvbHVtbkRlc2NyaXB0b3Ige1xuICAgIGV4cG9ydCBlbnVtIFR5cGVFbnVtIHtcbiAgICAgICAgU3RyaW5nLFxuICAgICAgICBOdW1iZXIsXG4gICAgICAgIEJvb2xlYW4sXG4gICAgICAgIERhdGVcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJEZXNjcmlwdG9yPFQ+IHtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclR5cGUgPSBGaWx0ZXJEZXNjcmlwdG9yLlR5cGVFbnVtLlN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2NsYXNzTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWx0ZXJQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNGaWx0ZXJUeXBlKGZpbHRlclR5cGU6IENvbHVtbkRlc2NyaXB0b3IuVHlwZUVudW0pIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVHlwZSA9IGZpbHRlclR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGlmZmVyZW50IGZpbHRlciBwcm9wZXJ0eSBuYW1lIGluc3RlYWQgb2YgZGVmYXVsdCBwcm9wZXJ0eS4gVXNlIHRoaXMgaWYgQVBJIHJlcXVpcmVzIGRpZmZlcmVudCBwcm9wZXJ0eSBwcm92aWRlZCB0byBwZXJmb3JtIGNvcnJlY3QgZmlsdGVyLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRmlsdGVyUHJvcGVydHkoZmlsdGVyUHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWx0ZXJQcm9wZXJ0eSA9IGZpbHRlclByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29weUZpZWxkc1RvKGRlc2NyaXB0b3I6IEZpbHRlckRlc2NyaXB0b3I8VD4pIHtcbiAgICAgICAgZGVzY3JpcHRvci5fZmlsdGVyVHlwZSA9IHRoaXMuX2ZpbHRlclR5cGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZpbHRlclByb3BlcnR5ID0gdGhpcy5fZmlsdGVyUHJvcGVydHk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3BsYWNlaG9sZGVyID0gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgICAgIGRlc2NyaXB0b3IuX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWx0ZXJEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yPFQ+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBGaWx0ZXJEZXNjcmlwdG9yIHtcbiAgICBleHBvcnQgZW51bSBUeXBlRW51bSB7XG4gICAgICAgIFN0cmluZyxcbiAgICAgICAgTnVtYmVyLFxuICAgICAgICBCb29sZWFuLFxuICAgICAgICBEYXRlLFxuICAgICAgICBMb29rdXBcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPFQ+IGV4dGVuZHMgRmlsdGVyRGVzY3JpcHRvcjxUPiBpbXBsZW1lbnRzIElMb29rdXA8VD4ge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbW9kZWxUeXBlOiBDbGFzc1R5cGU8VD58bnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbG9va3VwVHlwZT86IEZpbHRlckxvb2t1cERlc2NyaXB0b3IuTG9va3VwVHlwZUVudW0gPSBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yLkxvb2t1cFR5cGVFbnVtLkRyb3Bkb3duO1xuXG4gICAgcHJpdmF0ZSBfZGF0YVByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgIHByaXZhdGUgX2l0ZW1zTGFiZWxQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcml2YXRlIF9pdGVtc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZGF0YUtleVByb3BlcnR5PyA6IHN0cmluZztcblxuICAgIHByaXZhdGUgX211bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9kcm9wZG93bkNsYXNzTmFtZTogc3RyaW5nID0gJ21uZy1maWx0ZXItbG9va3VwLWRyb3Bkb3duJztcblxuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+fG51bGwpIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9tb2RlbFR5cGUgPSBtb2RlbFR5cGU7XG4gICAgICAgIHRoaXMuX2ZpbHRlclR5cGUgPSBGaWx0ZXJEZXNjcmlwdG9yLlR5cGVFbnVtLkxvb2t1cDtcbiAgICAgICAgTW9kZWxVdGlsLnRyeVNldExvb2t1cEl0ZW1zUHJvcGVydGllcyh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvb2t1cFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb29rdXBUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXRlbXNMYWJlbFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNMYWJlbFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXRlbXNWYWx1ZVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNWYWx1ZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YUtleVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUtleVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbXVsdGlzZWxlY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tdWx0aXNlbGVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEl0ZW1zTGFiZWxQcm9wZXJ0eShpdGVtc0xhYmVsUHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pdGVtc0xhYmVsUHJvcGVydHkgPSBpdGVtc0xhYmVsUHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXRlbXNWYWx1ZVByb3BlcnR5KGl0ZW1zVmFsdWVQcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2l0ZW1zVmFsdWVQcm9wZXJ0eSA9IGl0ZW1zVmFsdWVQcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRhS2V5UHJvcGVydHkoZGF0YUtleVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YUtleVByb3BlcnR5ID0gZGF0YUtleVByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRyb3Bkb3duQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXA8Uz4obG9va3VwOiAocXVlcnlQYXJhbT86IE1lZGl1c1F1ZXJ5UGFyYW0sIHNlcnZpY2U/OiBTLCBzZWFyY2g/OiBzdHJpbmcpID0+IE9ic2VydmFibGU8QXJyYXk8VD4+LCBzZXJ2aWNlVHlwZT86IFR5cGU8Uz4pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gbmV3IExvb2t1cERhdGFQcm92aWRlcjxULCBTPih0aGlzLl9tb2RlbFR5cGUpO1xuICAgICAgICBpZiAoc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlci53aXRoU2VydmljZVR5cGUoc2VydmljZVR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGFQcm92aWRlci53aXRoTG9va3VwKGxvb2t1cCk7XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGRhdGFQcm92aWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXBEYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyOiBJTG9va3VwRGF0YVByb3ZpZGVyPFQsIGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gZGF0YVByb3ZpZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE11bHRpc2VsZWN0KG11bHRpc2VsZWN0ID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLl9tdWx0aXNlbGVjdCA9IG11bHRpc2VsZWN0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERyb3Bkb3duQ2xhc3NOYW1lKGRyb3Bkb3duQ2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZHJvcGRvd25DbGFzc05hbWUgPSBkcm9wZG93bkNsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQXV0b2NvbXBsZXRlKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9sb29rdXBUeXBlID0gRmlsdGVyTG9va3VwRGVzY3JpcHRvci5Mb29rdXBUeXBlRW51bS5BdXRvY29tcGxldGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjb3B5RmllbGRzVG8oZGVzY3JpcHRvcjogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPikge1xuICAgICAgICBzdXBlci5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGFQcm92aWRlciA9IHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICAgICAgZGVzY3JpcHRvci5fbG9va3VwVHlwZSA9IHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2l0ZW1zTGFiZWxQcm9wZXJ0eSA9IHRoaXMuX2l0ZW1zTGFiZWxQcm9wZXJ0eTtcbiAgICAgICAgZGVzY3JpcHRvci5faXRlbXNWYWx1ZVByb3BlcnR5ID0gdGhpcy5faXRlbXNWYWx1ZVByb3BlcnR5O1xuICAgICAgICBkZXNjcmlwdG9yLl9kYXRhS2V5UHJvcGVydHkgPSB0aGlzLl9kYXRhS2V5UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fbW9kZWxUeXBlKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yIHtcbiAgICBleHBvcnQgZW51bSBMb29rdXBUeXBlRW51bSB7XG4gICAgICAgIERyb3Bkb3duLFxuICAgICAgICBBdXRvY29tcGxldGVcbiAgICB9XG59XG4iXX0=
|