@mediusinc/mng-commons 1.3.0-1c14fa2b → 2.0.0-rc.0-08f92864
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/i18n/en.json +9 -0
- package/assets/i18n/sl.json +9 -0
- package/esm2020/lib/api/utils/medius-rest.util.mjs +1 -1
- package/esm2020/lib/components/action/action.component.mjs +76 -20
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +12 -12
- package/esm2020/lib/components/action/localization/data-language-dropdown.component.mjs +6 -6
- package/esm2020/lib/components/action/models/action-component.model.mjs +1 -1
- package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2020/lib/components/action/models/action-execution.model.mjs +1 -1
- package/esm2020/lib/components/action/route/action-route.component.mjs +6 -5
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +11 -10
- package/esm2020/lib/components/form/date-range/date-range.component.mjs +9 -8
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +13 -11
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +14 -11
- package/esm2020/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +13 -9
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +8 -7
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +8 -7
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +11 -9
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +50 -20
- package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +5 -5
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +27 -17
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +32 -12
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +21 -12
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +13 -11
- package/esm2020/lib/components/form/formly/models/formly-field.model.mjs +1 -1
- package/esm2020/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +10 -9
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +11 -10
- package/esm2020/lib/components/form/models/field-action-context.model.mjs +1 -1
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +7 -6
- package/esm2020/lib/components/layout/footer.component.mjs +6 -5
- package/esm2020/lib/components/layout/main-layout.component.mjs +8 -8
- package/esm2020/lib/components/layout/menu-item.component.mjs +43 -23
- package/esm2020/lib/components/layout/menu.component.mjs +24 -13
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +3 -3
- package/esm2020/lib/components/layout/topbar.component.mjs +14 -12
- package/esm2020/lib/components/layout/version.component.mjs +6 -6
- package/esm2020/lib/components/tableview/models/table.event.mjs +1 -1
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +38 -10
- package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +5 -6
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +14 -13
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +29 -12
- package/esm2020/lib/components/tableview/table/table.component.mjs +33 -17
- package/esm2020/lib/components/tableview/tableview.component.mjs +13 -11
- package/esm2020/lib/descriptors/action/action-button.descriptor.mjs +60 -0
- package/esm2020/lib/descriptors/action/action-confirmation.descriptor.mjs +2 -2
- package/esm2020/lib/descriptors/action/action.descriptor.mjs +579 -0
- package/esm2020/lib/descriptors/action/index.mjs +4 -0
- package/esm2020/lib/descriptors/editor/editor.descriptor.mjs +291 -0
- package/esm2020/lib/descriptors/editor/field-validation.descriptor.mjs +25 -0
- package/esm2020/lib/descriptors/editor/field.descriptor.mjs +990 -0
- package/esm2020/lib/descriptors/editor/index.mjs +4 -0
- package/esm2020/lib/descriptors/filter/filter.descriptor.mjs +370 -0
- package/esm2020/lib/descriptors/filter/index.mjs +2 -0
- package/esm2020/lib/descriptors/index.mjs +1 -11
- package/esm2020/lib/descriptors/table/column.descriptor.mjs +406 -0
- package/esm2020/lib/descriptors/table/index.mjs +3 -0
- package/esm2020/lib/descriptors/table/table.descriptor.mjs +497 -0
- package/esm2020/lib/descriptors/tableview/index.mjs +2 -0
- package/esm2020/lib/descriptors/tableview/tableview.descriptor.mjs +346 -0
- package/esm2020/lib/directives/component.directive.mjs +5 -4
- package/esm2020/lib/directives/template.directive.mjs +5 -4
- package/esm2020/lib/mng-commons.module.mjs +108 -138
- package/esm2020/lib/models/column-value.model.mjs +1 -1
- package/esm2020/lib/models/config.model.mjs +1 -1
- package/esm2020/lib/models/menu.model.mjs +1 -1
- package/esm2020/lib/models/view-container.model.mjs +1 -1
- package/esm2020/lib/pipes/boolean.pipe.mjs +5 -4
- package/esm2020/lib/pipes/class-map.pipe.mjs +5 -4
- package/esm2020/lib/pipes/enum.pipe.mjs +5 -4
- package/esm2020/lib/pipes/enumerate-async.pipe.mjs +5 -4
- package/esm2020/lib/pipes/enumerate.pipe.mjs +5 -4
- package/esm2020/lib/pipes/getter.pipe.mjs +5 -4
- package/esm2020/lib/pipes/i18n-property.pipe.mjs +5 -4
- package/esm2020/lib/pipes/json-path.pipe.mjs +5 -4
- package/esm2020/lib/pipes/locale-default-row-class.pipe.mjs +5 -4
- package/esm2020/lib/pipes/parametrize.pipe.mjs +5 -4
- package/esm2020/lib/pipes/template.pipe.mjs +5 -4
- package/esm2020/lib/provide-commons.mjs +73 -0
- package/esm2020/lib/router/index.mjs +2 -1
- package/esm2020/lib/router/models/router.model.mjs +1 -1
- package/esm2020/lib/router/route-builder.mjs +31 -144
- package/esm2020/lib/router/routes-builder.mjs +67 -0
- package/esm2020/lib/router/tableview-route-builder.mjs +2 -2
- package/esm2020/lib/security/authorization.guard.mjs +8 -5
- package/esm2020/lib/security/authorization.service.mjs +8 -5
- package/esm2020/lib/services/action-executor.service.mjs +13 -7
- package/esm2020/lib/services/commons.service.mjs +15 -10
- package/esm2020/lib/services/configuration.service.mjs +27 -20
- package/esm2020/lib/services/internal/commons-init.service.mjs +13 -7
- package/esm2020/lib/services/navigation.service.mjs +8 -5
- package/esm2020/lib/services/providers/config-service.provider.mjs +5 -4
- package/esm2020/lib/services/router.service.mjs +97 -0
- package/esm2020/lib/services/version.service.mjs +8 -5
- package/esm2020/lib/services/view-container.component.service.mjs +4 -4
- package/esm2020/lib/styles/styles.util.mjs +1 -1
- package/esm2020/lib/utils/action-data-provider.util.mjs +1 -1
- package/esm2020/lib/utils/editor-formly.util.mjs +2 -2
- package/esm2020/lib/utils/export.util.mjs +20 -0
- package/esm2020/lib/utils/i18n.util.mjs +1 -1
- package/esm2020/lib/utils/index.mjs +2 -1
- package/esm2020/lib/utils/notification.util.mjs +1 -1
- package/esm2020/lib/utils/route.util.mjs +13 -1
- package/esm2020/lib/utils/tableview.util.mjs +1 -1
- package/esm2020/public-api.mjs +7 -1
- package/fesm2015/mediusinc-mng-commons.mjs +6767 -6381
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +6707 -6325
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/utils/medius-rest.util.d.ts +1 -1
- package/lib/components/action/action.component.d.ts +10 -5
- package/lib/components/action/editor/action-editor.component.d.ts +2 -2
- package/lib/components/action/localization/data-language-dropdown.component.d.ts +2 -2
- package/lib/components/action/models/action-component.model.d.ts +1 -1
- package/lib/components/action/models/action-confirmation-service.model.d.ts +1 -1
- package/lib/components/action/models/action-execution.model.d.ts +2 -2
- package/lib/components/action/route/action-route.component.d.ts +2 -2
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +1 -1
- package/lib/components/form/date-range/date-range.component.d.ts +1 -1
- package/lib/components/form/dropdown/dropdown.component.d.ts +1 -1
- package/lib/components/form/editor/form-editor.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +1 -1
- package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +3 -2
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +2 -2
- package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +1 -1
- package/lib/components/form/formly/models/formly-field.model.d.ts +2 -2
- package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +1 -1
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +2 -2
- package/lib/components/form/models/field-action-context.model.d.ts +1 -1
- package/lib/components/layout/breadcrumb.component.d.ts +1 -1
- package/lib/components/layout/footer.component.d.ts +1 -1
- package/lib/components/layout/main-layout.component.d.ts +1 -1
- package/lib/components/layout/menu-item.component.d.ts +6 -2
- package/lib/components/layout/menu.component.d.ts +9 -3
- package/lib/components/layout/topbar.component.d.ts +1 -1
- package/lib/components/layout/version.component.d.ts +1 -1
- package/lib/components/tableview/models/table.event.d.ts +1 -1
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +9 -2
- package/lib/components/tableview/route/tableview-route.component.d.ts +3 -2
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +2 -2
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +2 -2
- package/lib/components/tableview/table/table.component.d.ts +4 -2
- package/lib/components/tableview/tableview.component.d.ts +3 -2
- package/lib/descriptors/{action-button.descriptor.d.ts → action/action-button.descriptor.d.ts} +1 -1
- package/lib/descriptors/action/action-confirmation.descriptor.d.ts +2 -2
- package/lib/descriptors/{action.descriptor.d.ts → action/action.descriptor.d.ts} +16 -8
- package/lib/descriptors/action/index.d.ts +3 -0
- package/lib/descriptors/{editor.descriptor.d.ts → editor/editor.descriptor.d.ts} +9 -6
- package/lib/descriptors/{field-validation.descriptor.d.ts → editor/field-validation.descriptor.d.ts} +1 -1
- package/lib/descriptors/{field.descriptor.d.ts → editor/field.descriptor.d.ts} +14 -10
- package/lib/descriptors/editor/index.d.ts +3 -0
- package/lib/descriptors/{filter.descriptor.d.ts → filter/filter.descriptor.d.ts} +11 -9
- package/lib/descriptors/filter/index.d.ts +1 -0
- package/lib/descriptors/index.d.ts +0 -10
- package/lib/descriptors/{column.descriptor.d.ts → table/column.descriptor.d.ts} +4 -4
- package/lib/descriptors/table/index.d.ts +2 -0
- package/lib/descriptors/{table.descriptor.d.ts → table/table.descriptor.d.ts} +12 -7
- package/lib/descriptors/tableview/index.d.ts +1 -0
- package/lib/descriptors/{tableview.descriptor.d.ts → tableview/tableview.descriptor.d.ts} +9 -7
- package/lib/directives/component.directive.d.ts +1 -1
- package/lib/directives/template.directive.d.ts +1 -1
- package/lib/mng-commons.module.d.ts +90 -88
- package/lib/models/column-value.model.d.ts +1 -1
- package/lib/models/config.model.d.ts +1 -0
- package/lib/models/menu.model.d.ts +1 -1
- package/lib/models/version.model.d.ts +1 -1
- package/lib/models/view-container.model.d.ts +1 -1
- package/lib/pipes/boolean.pipe.d.ts +1 -1
- package/lib/pipes/class-map.pipe.d.ts +1 -1
- package/lib/pipes/enum.pipe.d.ts +1 -1
- package/lib/pipes/enumerate-async.pipe.d.ts +1 -1
- package/lib/pipes/enumerate.pipe.d.ts +1 -1
- package/lib/pipes/getter.pipe.d.ts +1 -1
- package/lib/pipes/i18n-property.pipe.d.ts +1 -1
- package/lib/pipes/json-path.pipe.d.ts +1 -1
- package/lib/pipes/locale-default-row-class.pipe.d.ts +2 -2
- package/lib/pipes/parametrize.pipe.d.ts +1 -1
- package/lib/pipes/template.pipe.d.ts +1 -1
- package/lib/provide-commons.d.ts +3 -0
- package/lib/router/index.d.ts +1 -0
- package/lib/router/models/router.model.d.ts +5 -2
- package/lib/router/route-builder.d.ts +12 -48
- package/lib/router/routes-builder.d.ts +29 -0
- package/lib/router/tableview-route-builder.d.ts +2 -1
- package/lib/services/action-executor.service.d.ts +2 -1
- package/lib/services/commons.service.d.ts +3 -3
- package/lib/services/configuration.service.d.ts +4 -1
- package/lib/services/internal/commons-init.service.d.ts +4 -2
- package/lib/services/router.service.d.ts +22 -0
- package/lib/services/view-container.component.service.d.ts +1 -1
- package/lib/styles/styles.util.d.ts +2 -1
- package/lib/types/type.model.d.ts +8 -8
- package/lib/utils/editor-formly.util.d.ts +1 -1
- package/lib/utils/export.util.d.ts +5 -0
- package/lib/utils/i18n.util.d.ts +2 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/notification.util.d.ts +2 -1
- package/lib/utils/route.util.d.ts +55 -0
- package/lib/utils/tableview.util.d.ts +1 -1
- package/package.json +6 -6
- package/public-api.d.ts +6 -0
- package/scss/common/layout/_breadcrumb.scss +12 -2
- package/scss/common/layout/_exception.scss +1 -1
- package/scss/common/layout/_inlinemenu.scss +13 -0
- package/scss/common/layout/_login.scss +1 -0
- package/scss/common/layout/_rightmenu.scss +5 -0
- package/scss/common/layout/menu/_menu_common.scss +1 -1
- package/scss/common/theme/designer/_components.scss +4 -4
- package/scss/common/theme/designer/_mixins.scss +29 -0
- package/scss/common/theme/extensions/_datatable.scss +2 -2
- package/scss/common/variables/layout/_layout_dark.scss +0 -1
- package/scss/common/variables/layout/_layout_light.scss +0 -1
- package/scss/common/variables/theme/_theme_dark.scss +72 -46
- package/scss/common/variables/theme/_theme_light.scss +70 -33
- package/scss/mng-overrides/_layout_menu.scss +4 -0
- package/version-info.json +6 -6
- package/esm2020/lib/descriptors/action-button.descriptor.mjs +0 -60
- package/esm2020/lib/descriptors/action.descriptor.mjs +0 -560
- package/esm2020/lib/descriptors/column.descriptor.mjs +0 -405
- package/esm2020/lib/descriptors/editor.descriptor.mjs +0 -290
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +0 -25
- package/esm2020/lib/descriptors/field.descriptor.mjs +0 -987
- package/esm2020/lib/descriptors/filter.descriptor.mjs +0 -368
- package/esm2020/lib/descriptors/table.descriptor.mjs +0 -482
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +0 -344
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { ModelUtil, TypeUtil } from '../../utils';
|
|
2
|
+
import { DateUtil } from '../../utils/date.util';
|
|
3
|
+
import { TableviewUtil } from '../../utils/tableview.util';
|
|
4
|
+
import { FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor } from '../filter';
|
|
5
|
+
import { ColumnDisplayTypeEnum, ColumnTypeEnum, FilterTypeEnum } from '../types';
|
|
6
|
+
export class ColumnDescriptor {
|
|
7
|
+
constructor(table, property) {
|
|
8
|
+
this._columnType = ColumnTypeEnum.String;
|
|
9
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.String;
|
|
10
|
+
this._isSortEnabled = false;
|
|
11
|
+
// styling
|
|
12
|
+
this._headerClassName = '';
|
|
13
|
+
this._className = '';
|
|
14
|
+
this._width = null;
|
|
15
|
+
this._minWidth = null;
|
|
16
|
+
this._maxWidth = null;
|
|
17
|
+
this._enumNameAsValue = false;
|
|
18
|
+
// boolean specifics
|
|
19
|
+
this._booleanAsIcon = false;
|
|
20
|
+
// helpers
|
|
21
|
+
this._hasCopyToClipboard = false;
|
|
22
|
+
// localization
|
|
23
|
+
this._isLocalized = false;
|
|
24
|
+
this._table = table;
|
|
25
|
+
this._property = property;
|
|
26
|
+
}
|
|
27
|
+
get columnType() {
|
|
28
|
+
return this._columnType;
|
|
29
|
+
}
|
|
30
|
+
get columnDisplayType() {
|
|
31
|
+
return this._columnDisplayType;
|
|
32
|
+
}
|
|
33
|
+
get title() {
|
|
34
|
+
return this._title;
|
|
35
|
+
}
|
|
36
|
+
get jsonPath() {
|
|
37
|
+
return this._jsonPath;
|
|
38
|
+
}
|
|
39
|
+
get isSortEnabled() {
|
|
40
|
+
return this._isSortEnabled;
|
|
41
|
+
}
|
|
42
|
+
get filterDescriptor() {
|
|
43
|
+
return this._filterDescriptor;
|
|
44
|
+
}
|
|
45
|
+
get displayFormat() {
|
|
46
|
+
return this._displayFormat;
|
|
47
|
+
}
|
|
48
|
+
get table() {
|
|
49
|
+
return this._table;
|
|
50
|
+
}
|
|
51
|
+
get property() {
|
|
52
|
+
return this._property;
|
|
53
|
+
}
|
|
54
|
+
get headerClassName() {
|
|
55
|
+
return this._headerClassName;
|
|
56
|
+
}
|
|
57
|
+
get className() {
|
|
58
|
+
return this._className;
|
|
59
|
+
}
|
|
60
|
+
get width() {
|
|
61
|
+
return this._width;
|
|
62
|
+
}
|
|
63
|
+
get minWidth() {
|
|
64
|
+
return this._minWidth;
|
|
65
|
+
}
|
|
66
|
+
get maxWidth() {
|
|
67
|
+
return this._maxWidth;
|
|
68
|
+
}
|
|
69
|
+
get enumType() {
|
|
70
|
+
return this._enumType;
|
|
71
|
+
}
|
|
72
|
+
get enumTitlePath() {
|
|
73
|
+
return this._enumTitlePath;
|
|
74
|
+
}
|
|
75
|
+
get enumNameAsValue() {
|
|
76
|
+
return this._enumNameAsValue;
|
|
77
|
+
}
|
|
78
|
+
get booleanAsIcon() {
|
|
79
|
+
return this._booleanAsIcon;
|
|
80
|
+
}
|
|
81
|
+
get booleanYes() {
|
|
82
|
+
return this._booleanYes;
|
|
83
|
+
}
|
|
84
|
+
get booleanNo() {
|
|
85
|
+
return this._booleanNo;
|
|
86
|
+
}
|
|
87
|
+
get objectModelType() {
|
|
88
|
+
return this._objectModelType;
|
|
89
|
+
}
|
|
90
|
+
get objectTitleProperty() {
|
|
91
|
+
return this._objectTitleProperty;
|
|
92
|
+
}
|
|
93
|
+
get customComponentType() {
|
|
94
|
+
return this._customComponentType;
|
|
95
|
+
}
|
|
96
|
+
get locale() {
|
|
97
|
+
return this._locale;
|
|
98
|
+
}
|
|
99
|
+
get currencyCode() {
|
|
100
|
+
return this._currencyCode;
|
|
101
|
+
}
|
|
102
|
+
get currencyDisplay() {
|
|
103
|
+
return this._currencyDisplay;
|
|
104
|
+
}
|
|
105
|
+
get currencyFromProperty() {
|
|
106
|
+
return this._currencyFromProperty;
|
|
107
|
+
}
|
|
108
|
+
get hasCopyToClipboard() {
|
|
109
|
+
return this._hasCopyToClipboard;
|
|
110
|
+
}
|
|
111
|
+
get template() {
|
|
112
|
+
return this._template;
|
|
113
|
+
}
|
|
114
|
+
get getter() {
|
|
115
|
+
return this._getter;
|
|
116
|
+
}
|
|
117
|
+
get isLocalized() {
|
|
118
|
+
return this._isLocalized;
|
|
119
|
+
}
|
|
120
|
+
get localizationExistsProperty() {
|
|
121
|
+
return this._localizationExistsProperty;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* converts column to given type with additional arguments
|
|
125
|
+
* @param type column type enum
|
|
126
|
+
* @param args any additional arguments for column (optional)
|
|
127
|
+
*/
|
|
128
|
+
asType(type, displayType, ...args) {
|
|
129
|
+
switch (type) {
|
|
130
|
+
case ColumnTypeEnum.Number:
|
|
131
|
+
return displayType === ColumnDisplayTypeEnum.Currency ? this.asCurrency(...args) : this.asNumber(...args);
|
|
132
|
+
case ColumnTypeEnum.Boolean:
|
|
133
|
+
return this.asBoolean(...args);
|
|
134
|
+
case ColumnTypeEnum.Date:
|
|
135
|
+
return this.asDate(...args);
|
|
136
|
+
case ColumnTypeEnum.Enum:
|
|
137
|
+
return this.asEnum(args[0], args[1], args[2]);
|
|
138
|
+
case ColumnTypeEnum.Custom:
|
|
139
|
+
return this.asCustomComponent(args[0]);
|
|
140
|
+
case ColumnTypeEnum.String:
|
|
141
|
+
default:
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
asNumber(displayFormat = '1.0-0', locale) {
|
|
146
|
+
this._columnType = ColumnTypeEnum.Number;
|
|
147
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.Number;
|
|
148
|
+
this._displayFormat = displayFormat;
|
|
149
|
+
this._locale = locale ?? this._locale;
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
asCurrency(currencyCode, currencyFromProperty, currencyDisplay, displayFormat = '1.2-2', locale) {
|
|
153
|
+
this._columnType = ColumnTypeEnum.Number;
|
|
154
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.Currency;
|
|
155
|
+
this._currencyCode = currencyCode ?? this._currencyCode;
|
|
156
|
+
this._currencyFromProperty = currencyFromProperty ?? this._currencyFromProperty;
|
|
157
|
+
this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;
|
|
158
|
+
this._displayFormat = displayFormat ?? displayFormat;
|
|
159
|
+
this._locale = locale ?? this._locale;
|
|
160
|
+
return this;
|
|
161
|
+
}
|
|
162
|
+
asDate(displayFormat = 'dd.MM.yyyy') {
|
|
163
|
+
this._columnType = ColumnTypeEnum.Date;
|
|
164
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.Date;
|
|
165
|
+
this._displayFormat = displayFormat;
|
|
166
|
+
return this;
|
|
167
|
+
}
|
|
168
|
+
asBoolean(yes, no, asIcon = false) {
|
|
169
|
+
this._columnType = ColumnTypeEnum.Boolean;
|
|
170
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.Boolean;
|
|
171
|
+
this._booleanAsIcon = asIcon;
|
|
172
|
+
this._booleanYes = yes;
|
|
173
|
+
this._booleanNo = no;
|
|
174
|
+
return this;
|
|
175
|
+
}
|
|
176
|
+
asEnum(enumType, nameAsValue = false, titlePath) {
|
|
177
|
+
this._columnType = ColumnTypeEnum.Enum;
|
|
178
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.Enum;
|
|
179
|
+
this._enumType = enumType;
|
|
180
|
+
this._enumNameAsValue = nameAsValue;
|
|
181
|
+
if (typeof titlePath === 'undefined') {
|
|
182
|
+
titlePath = TypeUtil.findEnumName(enumType);
|
|
183
|
+
}
|
|
184
|
+
this._enumTitlePath = titlePath;
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
187
|
+
asCustomComponent(customComponentType) {
|
|
188
|
+
this._columnType = ColumnTypeEnum.Custom;
|
|
189
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.Component;
|
|
190
|
+
this._customComponentType = customComponentType;
|
|
191
|
+
return this;
|
|
192
|
+
}
|
|
193
|
+
asHtml() {
|
|
194
|
+
this._columnDisplayType = ColumnDisplayTypeEnum.Html;
|
|
195
|
+
return this;
|
|
196
|
+
}
|
|
197
|
+
withClassName(className, headerClassName) {
|
|
198
|
+
this._className = className ?? '';
|
|
199
|
+
this._headerClassName = headerClassName ?? '';
|
|
200
|
+
return this;
|
|
201
|
+
}
|
|
202
|
+
withWidth(width, minWidth, maxWidth) {
|
|
203
|
+
this._width = width ?? null;
|
|
204
|
+
this._minWidth = minWidth ?? null;
|
|
205
|
+
this._maxWidth = maxWidth ?? null;
|
|
206
|
+
return this;
|
|
207
|
+
}
|
|
208
|
+
withObjectProperty(modelType, titleProperty) {
|
|
209
|
+
this._objectModelType = modelType;
|
|
210
|
+
if (!titleProperty) {
|
|
211
|
+
this._objectTitleProperty = ModelUtil.findTitleAttribute(modelType) ?? undefined;
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
this._objectTitleProperty = titleProperty;
|
|
215
|
+
}
|
|
216
|
+
return this;
|
|
217
|
+
}
|
|
218
|
+
withTitle(title) {
|
|
219
|
+
this._title = title;
|
|
220
|
+
return this;
|
|
221
|
+
}
|
|
222
|
+
withJsonPath(path) {
|
|
223
|
+
this._jsonPath = path;
|
|
224
|
+
return this;
|
|
225
|
+
}
|
|
226
|
+
withFilter(forceSimple = false) {
|
|
227
|
+
this._filterDescriptor = new FilterDescriptor(this._property);
|
|
228
|
+
let filterType;
|
|
229
|
+
if (!forceSimple && this._objectModelType) {
|
|
230
|
+
return this.withFilterLookup();
|
|
231
|
+
}
|
|
232
|
+
switch (this._columnType) {
|
|
233
|
+
case ColumnTypeEnum.Number:
|
|
234
|
+
filterType = FilterTypeEnum.Number;
|
|
235
|
+
break;
|
|
236
|
+
case ColumnTypeEnum.Boolean:
|
|
237
|
+
filterType = FilterTypeEnum.Boolean;
|
|
238
|
+
break;
|
|
239
|
+
case ColumnTypeEnum.Date:
|
|
240
|
+
filterType = FilterTypeEnum.Date;
|
|
241
|
+
break;
|
|
242
|
+
case ColumnTypeEnum.Enum:
|
|
243
|
+
if (!forceSimple) {
|
|
244
|
+
return this.withFilterLookupEnum();
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
filterType = FilterTypeEnum.String;
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
case ColumnTypeEnum.String:
|
|
251
|
+
case ColumnTypeEnum.Custom:
|
|
252
|
+
default:
|
|
253
|
+
filterType = FilterTypeEnum.String;
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
this._filterDescriptor.asFilterType(filterType);
|
|
257
|
+
if (filterType === FilterTypeEnum.Number) {
|
|
258
|
+
const displayFormatFractions = this._displayFormat?.split('.')?.[1]?.split('-');
|
|
259
|
+
if (displayFormatFractions && displayFormatFractions.length > 2) {
|
|
260
|
+
this._filterDescriptor.withNumberFractions(parseInt(displayFormatFractions[0]), parseInt(displayFormatFractions[1]));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else if (filterType === FilterTypeEnum.Date) {
|
|
264
|
+
const displayFormat = this._displayFormat;
|
|
265
|
+
if (displayFormat) {
|
|
266
|
+
const filterDisplayFormat = DateUtil.fromPrimeToAngularDateFormat(displayFormat);
|
|
267
|
+
this._filterDescriptor.withDateFormat(filterDisplayFormat);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return this._filterDescriptor;
|
|
271
|
+
}
|
|
272
|
+
withFilterLookup() {
|
|
273
|
+
const filterDescriptor = new FilterLookupDescriptor(this._property, this._objectModelType ?? null);
|
|
274
|
+
this._filterDescriptor = filterDescriptor;
|
|
275
|
+
return filterDescriptor;
|
|
276
|
+
}
|
|
277
|
+
withFilterLookupEnum(options) {
|
|
278
|
+
if (this._columnType !== ColumnTypeEnum.Enum || !this._enumType) {
|
|
279
|
+
throw new Error(`Column ${this._property} is not of type enum or enum type is undefined.`);
|
|
280
|
+
}
|
|
281
|
+
const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);
|
|
282
|
+
this._filterDescriptor = filterDescriptor;
|
|
283
|
+
return filterDescriptor;
|
|
284
|
+
}
|
|
285
|
+
withSort(isEnabled = true) {
|
|
286
|
+
this._isSortEnabled = isEnabled;
|
|
287
|
+
return this;
|
|
288
|
+
}
|
|
289
|
+
withDefaultSort(asc = true) {
|
|
290
|
+
this._table.withDefaultSort(this._property, asc);
|
|
291
|
+
return this;
|
|
292
|
+
}
|
|
293
|
+
withCopyToClipboard(hasCopyToCliboard = true) {
|
|
294
|
+
this._hasCopyToClipboard = hasCopyToCliboard;
|
|
295
|
+
return this;
|
|
296
|
+
}
|
|
297
|
+
withTemplate(template) {
|
|
298
|
+
this._template = template;
|
|
299
|
+
return this;
|
|
300
|
+
}
|
|
301
|
+
withGetter(getter) {
|
|
302
|
+
this._getter = getter;
|
|
303
|
+
return this;
|
|
304
|
+
}
|
|
305
|
+
localized(existsProperty) {
|
|
306
|
+
if (existsProperty) {
|
|
307
|
+
this._localizationExistsProperty = existsProperty;
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
this._localizationExistsProperty = `${this._property}Localized`;
|
|
311
|
+
}
|
|
312
|
+
return this;
|
|
313
|
+
}
|
|
314
|
+
copy() {
|
|
315
|
+
const descriptor = new ColumnDescriptor(this._table, this._property);
|
|
316
|
+
this.copyFieldsTo(descriptor);
|
|
317
|
+
return descriptor;
|
|
318
|
+
}
|
|
319
|
+
copyFieldsTo(obj) {
|
|
320
|
+
obj._jsonPath = this._jsonPath;
|
|
321
|
+
obj._title = this._title;
|
|
322
|
+
obj._isSortEnabled = this._isSortEnabled;
|
|
323
|
+
obj._columnType = this._columnType;
|
|
324
|
+
obj._columnDisplayType = this._columnDisplayType;
|
|
325
|
+
obj._filterDescriptor = this._filterDescriptor?.copy();
|
|
326
|
+
obj._enumType = this._enumType;
|
|
327
|
+
obj._enumTitlePath = this._enumTitlePath;
|
|
328
|
+
obj._enumNameAsValue = this._enumNameAsValue;
|
|
329
|
+
obj._booleanAsIcon = this._booleanAsIcon;
|
|
330
|
+
obj._booleanYes = this._booleanYes;
|
|
331
|
+
obj._booleanNo = this._booleanNo;
|
|
332
|
+
obj._objectModelType = this._objectModelType;
|
|
333
|
+
obj._objectTitleProperty = this._objectTitleProperty;
|
|
334
|
+
obj._locale = this._locale;
|
|
335
|
+
obj._currencyCode = this._currencyCode;
|
|
336
|
+
obj._currencyDisplay = this._currencyDisplay;
|
|
337
|
+
obj._currencyFromProperty = this._currencyFromProperty;
|
|
338
|
+
obj._displayFormat = this._displayFormat;
|
|
339
|
+
obj._headerClassName = this._headerClassName;
|
|
340
|
+
obj._className = this._className;
|
|
341
|
+
obj._width = this._width;
|
|
342
|
+
obj._minWidth = this._minWidth;
|
|
343
|
+
obj._maxWidth = this._maxWidth;
|
|
344
|
+
obj._customComponentType = this._customComponentType;
|
|
345
|
+
obj._hasCopyToClipboard = this._hasCopyToClipboard;
|
|
346
|
+
obj._template = this._template;
|
|
347
|
+
obj._getter = this._getter;
|
|
348
|
+
obj._isLocalized = this._isLocalized;
|
|
349
|
+
obj._localizationExistsProperty = this._localizationExistsProperty;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
export class ColumnDynamicDescriptor extends ColumnDescriptor {
|
|
353
|
+
// private _filterStatus;
|
|
354
|
+
constructor(table, property) {
|
|
355
|
+
super(table, property);
|
|
356
|
+
this._title = undefined;
|
|
357
|
+
this._visibility = true;
|
|
358
|
+
this._table = table;
|
|
359
|
+
}
|
|
360
|
+
get visibility() {
|
|
361
|
+
return this._visibility;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* sets column's title and returns this column
|
|
365
|
+
* @param title title to be set
|
|
366
|
+
* @param override should column title if all ready set?
|
|
367
|
+
*/
|
|
368
|
+
withTitle(title, override = false) {
|
|
369
|
+
if (this._title == null || override) {
|
|
370
|
+
this._title = title;
|
|
371
|
+
}
|
|
372
|
+
return this;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* defines automatic type and returns this column
|
|
376
|
+
* @param value
|
|
377
|
+
*/
|
|
378
|
+
withAutomaticType(value) {
|
|
379
|
+
TableviewUtil.stringColumnConverter(this, value);
|
|
380
|
+
return this;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* sets visibility state for column and returns this column
|
|
384
|
+
* @param visibility
|
|
385
|
+
*/
|
|
386
|
+
withVisibility(visibility) {
|
|
387
|
+
this._visibility = visibility;
|
|
388
|
+
return this;
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* creates deep copy of column dynamic descriptor
|
|
392
|
+
*/
|
|
393
|
+
copy() {
|
|
394
|
+
const descriptor = new ColumnDynamicDescriptor(this._table, this._property);
|
|
395
|
+
this.copyFieldsTo(descriptor);
|
|
396
|
+
descriptor._title = this._title;
|
|
397
|
+
descriptor._visibility = this._visibility;
|
|
398
|
+
return descriptor;
|
|
399
|
+
}
|
|
400
|
+
toColumnDescriptor(tableDescriptor) {
|
|
401
|
+
const descriptor = new ColumnDescriptor(tableDescriptor, this._property);
|
|
402
|
+
this.copyFieldsTo(descriptor);
|
|
403
|
+
return descriptor;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9GLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRy9FLE1BQU0sT0FBTyxnQkFBZ0I7SUFrRHpCLFlBQVksS0FBMEIsRUFBRSxRQUFnQjtRQS9DaEQsZ0JBQVcsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUNwRCx1QkFBa0IsR0FBMEIscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBR3pFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBTy9CLFVBQVU7UUFDRixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM3QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUtoQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFakMsb0JBQW9CO1FBQ1osbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFnQi9CLFVBQVU7UUFDRix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFcEMsZUFBZTtRQUNQLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSXpCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FB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IHtJQ29sdW1uVmFsdWVDb21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0NsYXNzVHlwZSwgRW51bUNvbnN0YW50VHlwZSwgRW51bVR5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7TW9kZWxVdGlsLCBUeXBlVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtEYXRlVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZS51dGlsJztcbmltcG9ydCB7VGFibGV2aWV3VXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGV2aWV3LnV0aWwnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcn0gZnJvbSAnLi4vZmlsdGVyJztcbmltcG9ydCB7Q29sdW1uRGlzcGxheVR5cGVFbnVtLCBDb2x1bW5UeXBlRW51bSwgRmlsdGVyVHlwZUVudW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9yLCBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yfSBmcm9tICcuL3RhYmxlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgY2xhc3MgQ29sdW1uRGVzY3JpcHRvcjxULCBUVD4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfdGFibGU6IFRhYmxlRGVzY3JpcHRvcjxUVD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2NvbHVtblR5cGU6IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uU3RyaW5nO1xuICAgIHByaXZhdGUgX2NvbHVtbkRpc3BsYXlUeXBlOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uU3RyaW5nO1xuICAgIHByb3RlY3RlZCBfdGl0bGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfanNvblBhdGg/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfaXNTb3J0RW5hYmxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2ZpbHRlckRlc2NyaXB0b3I/OiBGaWx0ZXJEZXNjcmlwdG9yPHVua25vd24+O1xuICAgIHByaXZhdGUgX2Rpc3BsYXlGb3JtYXQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbG9jYWxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3RlbXBsYXRlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2dldHRlcj86IChpdGVtOiBUVCwgdmFsdWU/OiBUIHwgbnVsbCkgPT4gdW5rbm93bjtcblxuICAgIC8vIHN0eWxpbmdcbiAgICBwcml2YXRlIF9oZWFkZXJDbGFzc05hbWUgPSAnJztcbiAgICBwcml2YXRlIF9jbGFzc05hbWUgPSAnJztcbiAgICBwcml2YXRlIF93aWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbWluV2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX21heFdpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIGVudW0gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfZW51bVR5cGU/OiBFbnVtVHlwZTtcbiAgICBwcml2YXRlIF9lbnVtVGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIF9lbnVtTmFtZUFzVmFsdWUgPSBmYWxzZTtcblxuICAgIC8vIGJvb2xlYW4gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfYm9vbGVhbkFzSWNvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Jvb2xlYW5ZZXM/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYm9vbGVhbk5vPzogc3RyaW5nO1xuXG4gICAgLy8gbW9kZWwgc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfb2JqZWN0TW9kZWxUeXBlPzogQ2xhc3NUeXBlPHVua25vd24+O1xuICAgIHByaXZhdGUgX29iamVjdFRpdGxlUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICAvLyBjdXJyZW5jeSBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9jdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lGcm9tUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lEaXNwbGF5PzogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZSc7XG5cbiAgICAvLyBjdXN0b20gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VzdG9tQ29tcG9uZW50VHlwZT86IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFRUPj47XG5cbiAgICAvLyBoZWxwZXJzXG4gICAgcHJpdmF0ZSBfaGFzQ29weVRvQ2xpcGJvYXJkID0gZmFsc2U7XG5cbiAgICAvLyBsb2NhbGl6YXRpb25cbiAgICBwcml2YXRlIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IodGFibGU6IFRhYmxlRGVzY3JpcHRvcjxUVD4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uRGlzcGxheVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBqc29uUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25QYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTb3J0RW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU29ydEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWx0ZXJEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoZWFkZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB3aWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWluV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5XaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1heFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4V2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bVRpdGxlUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1UaXRsZVBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtTmFtZUFzVmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtTmFtZUFzVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuQXNJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbkFzSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5ZZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ib29sZWFuWWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbk5vKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbk5vO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb2JqZWN0TW9kZWxUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0TW9kZWxUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb2JqZWN0VGl0bGVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFRpdGxlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5Q29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5Q29kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RGlzcGxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RnJvbVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDb3B5VG9DbGlwYm9hcmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNDb3B5VG9DbGlwYm9hcmQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0dGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydHMgY29sdW1uIHRvIGdpdmVuIHR5cGUgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIEBwYXJhbSB0eXBlIGNvbHVtbiB0eXBlIGVudW1cbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGNvbHVtbiAob3B0aW9uYWwpXG4gICAgICovXG4gICAgcHVibGljIGFzVHlwZSh0eXBlOiBDb2x1bW5UeXBlRW51bSwgZGlzcGxheVR5cGU/OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0sIC4uLmFyZ3M6IGFueVtdKTogdGhpcyB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3kgPyB0aGlzLmFzQ3VycmVuY3koLi4uYXJncykgOiB0aGlzLmFzTnVtYmVyKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzQm9vbGVhbiguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uRGF0ZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0RhdGUoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkVudW06XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNFbnVtKGFyZ3NbMF0gYXMgRW51bVR5cGUsIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXN0b21Db21wb25lbnQoYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLlN0cmluZzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXNOdW1iZXIoZGlzcGxheUZvcm1hdCA9ICcxLjAtMCcsIGxvY2FsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlGb3JtYXQgPSBkaXNwbGF5Rm9ybWF0O1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBsb2NhbGUgPz8gdGhpcy5fbG9jYWxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXJyZW5jeShjdXJyZW5jeUNvZGU/OiBzdHJpbmcsIGN1cnJlbmN5RnJvbVByb3BlcnR5Pzogc3RyaW5nLCBjdXJyZW5jeURpc3BsYXk/OiAnc3ltYm9sJyB8ICdjb2RlJyB8ICduYW1lJywgZGlzcGxheUZvcm1hdCA9ICcxLjItMicsIGxvY2FsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5DdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lDb2RlID0gY3VycmVuY3lDb2RlID8/IHRoaXMuX2N1cnJlbmN5Q29kZTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSBjdXJyZW5jeUZyb21Qcm9wZXJ0eSA/PyB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lEaXNwbGF5ID0gY3VycmVuY3lEaXNwbGF5ID8/IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGRpc3BsYXlGb3JtYXQgPz8gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlID8/IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRGF0ZShkaXNwbGF5Rm9ybWF0ID0gJ2RkLk1NLnl5eXknKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5EYXRlO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5EYXRlO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQm9vbGVhbih5ZXM/OiBzdHJpbmcsIG5vPzogc3RyaW5nLCBhc0ljb24gPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uQm9vbGVhbjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQm9vbGVhbjtcbiAgICAgICAgdGhpcy5fYm9vbGVhbkFzSWNvbiA9IGFzSWNvbjtcbiAgICAgICAgdGhpcy5fYm9vbGVhblllcyA9IHllcztcbiAgICAgICAgdGhpcy5fYm9vbGVhbk5vID0gbm87XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0VudW0oZW51bVR5cGU6IEVudW1UeXBlLCBuYW1lQXNWYWx1ZSA9IGZhbHNlLCB0aXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5FbnVtO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5FbnVtO1xuICAgICAgICB0aGlzLl9lbnVtVHlwZSA9IGVudW1UeXBlO1xuICAgICAgICB0aGlzLl9lbnVtTmFtZUFzVmFsdWUgPSBuYW1lQXNWYWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aXRsZVBhdGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aXRsZVBhdGggPSBUeXBlVXRpbC5maW5kRW51bU5hbWUoZW51bVR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VudW1UaXRsZVBhdGggPSB0aXRsZVBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1c3RvbUNvbXBvbmVudChjdXN0b21Db21wb25lbnRUeXBlOiBUeXBlPElDb2x1bW5WYWx1ZUNvbXBvbmVudDxUVD4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5DdXN0b207XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IGN1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0h0bWwoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkh0bWw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZT86IHN0cmluZywgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcbiAgICAgICAgdGhpcy5faGVhZGVyQ2xhc3NOYW1lID0gaGVhZGVyQ2xhc3NOYW1lID8/ICcnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFdpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlciwgbWF4V2lkdGg/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd2lkdGggPSB3aWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9taW5XaWR0aCA9IG1pbldpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX21heFdpZHRoID0gbWF4V2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPYmplY3RQcm9wZXJ0eTxNVD4obW9kZWxUeXBlOiBDbGFzc1R5cGU8TVQ+LCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29iamVjdE1vZGVsVHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgaWYgKCF0aXRsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLl9vYmplY3RUaXRsZVByb3BlcnR5ID0gTW9kZWxVdGlsLmZpbmRUaXRsZUF0dHJpYnV0ZShtb2RlbFR5cGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX29iamVjdFRpdGxlUHJvcGVydHkgPSB0aXRsZVByb3BlcnR5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGl0bGUodGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEpzb25QYXRoKHBhdGg6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9qc29uUGF0aCA9IHBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyKGZvcmNlU2ltcGxlID0gZmFsc2UpOiBGaWx0ZXJEZXNjcmlwdG9yPGFueT4ge1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckRlc2NyaXB0b3I8dW5rbm93bj4odGhpcy5fcHJvcGVydHkpO1xuICAgICAgICBsZXQgZmlsdGVyVHlwZTogRmlsdGVyVHlwZUVudW07XG5cbiAgICAgICAgaWYgKCFmb3JjZVNpbXBsZSAmJiB0aGlzLl9vYmplY3RNb2RlbFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndpdGhGaWx0ZXJMb29rdXAoKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2NvbHVtblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLkRhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkVudW06XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JjZVNpbXBsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aXRoRmlsdGVyTG9va3VwRW51bSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uU3RyaW5nOlxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yLmFzRmlsdGVyVHlwZShmaWx0ZXJUeXBlKTtcbiAgICAgICAgaWYgKGZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLk51bWJlcikge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheUZvcm1hdEZyYWN0aW9ucyA9IHRoaXMuX2Rpc3BsYXlGb3JtYXQ/LnNwbGl0KCcuJyk/LlsxXT8uc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5Rm9ybWF0RnJhY3Rpb25zICYmIGRpc3BsYXlGb3JtYXRGcmFjdGlvbnMubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3Iud2l0aE51bWJlckZyYWN0aW9ucyhwYXJzZUludChkaXNwbGF5Rm9ybWF0RnJhY3Rpb25zWzBdKSwgcGFyc2VJbnQoZGlzcGxheUZvcm1hdEZyYWN0aW9uc1sxXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlGb3JtYXQgPSB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJEaXNwbGF5Rm9ybWF0ID0gRGF0ZVV0aWwuZnJvbVByaW1lVG9Bbmd1bGFyRGF0ZUZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yLndpdGhEYXRlRm9ybWF0KGZpbHRlckRpc3BsYXlGb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJMb29rdXAoKTogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjx1bmtub3duPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fb2JqZWN0TW9kZWxUeXBlID8/IG51bGwpO1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIGZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJMb29rdXBFbnVtKG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPik6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbHVtblR5cGUgIT09IENvbHVtblR5cGVFbnVtLkVudW0gfHwgIXRoaXMuX2VudW1UeXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbHVtbiAke3RoaXMuX3Byb3BlcnR5fSBpcyBub3Qgb2YgdHlwZSBlbnVtIG9yIGVudW0gdHlwZSBpcyB1bmRlZmluZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVyRGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fZW51bVR5cGUsIG9wdGlvbnMsIHRoaXMuX2VudW1OYW1lQXNWYWx1ZSwgdGhpcy5fZW51bVRpdGxlUGF0aCk7XG4gICAgICAgIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3IgPSBmaWx0ZXJEZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnQoaXNFbmFibGVkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1NvcnRFbmFibGVkID0gaXNFbmFibGVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRTb3J0KGFzYyA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aERlZmF1bHRTb3J0KHRoaXMuX3Byb3BlcnR5LCBhc2MpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvcHlUb0NsaXBib2FyZChoYXNDb3B5VG9DbGlib2FyZCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkID0gaGFzQ29weVRvQ2xpYm9hcmQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEdldHRlcihnZXR0ZXI/OiAoaXRlbTogVFQsIHZhbHVlPzogVCB8IG51bGwpID0+IHVua25vd24pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZ2V0dGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkKGV4aXN0c1Byb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmIChleGlzdHNQcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSBleGlzdHNQcm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5ID0gYCR7dGhpcy5fcHJvcGVydHl9TG9jYWxpemVkYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxULCBUVD4odGhpcy5fdGFibGUsIHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb3B5RmllbGRzVG8ob2JqOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPikge1xuICAgICAgICBvYmouX2pzb25QYXRoID0gdGhpcy5fanNvblBhdGg7XG4gICAgICAgIG9iai5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgb2JqLl9pc1NvcnRFbmFibGVkID0gdGhpcy5faXNTb3J0RW5hYmxlZDtcbiAgICAgICAgb2JqLl9jb2x1bW5UeXBlID0gdGhpcy5fY29sdW1uVHlwZTtcbiAgICAgICAgb2JqLl9jb2x1bW5EaXNwbGF5VHlwZSA9IHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlO1xuICAgICAgICBvYmouX2ZpbHRlckRlc2NyaXB0b3IgPSB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yPy5jb3B5KCk7XG4gICAgICAgIG9iai5fZW51bVR5cGUgPSB0aGlzLl9lbnVtVHlwZTtcbiAgICAgICAgb2JqLl9lbnVtVGl0bGVQYXRoID0gdGhpcy5fZW51bVRpdGxlUGF0aDtcbiAgICAgICAgb2JqLl9lbnVtTmFtZUFzVmFsdWUgPSB0aGlzLl9lbnVtTmFtZUFzVmFsdWU7XG4gICAgICAgIG9iai5fYm9vbGVhbkFzSWNvbiA9IHRoaXMuX2Jvb2xlYW5Bc0ljb247XG4gICAgICAgIG9iai5fYm9vbGVhblllcyA9IHRoaXMuX2Jvb2xlYW5ZZXM7XG4gICAgICAgIG9iai5fYm9vbGVhbk5vID0gdGhpcy5fYm9vbGVhbk5vO1xuICAgICAgICBvYmouX29iamVjdE1vZGVsVHlwZSA9IHRoaXMuX29iamVjdE1vZGVsVHlwZTtcbiAgICAgICAgb2JqLl9vYmplY3RUaXRsZVByb3BlcnR5ID0gdGhpcy5fb2JqZWN0VGl0bGVQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9sb2NhbGUgPSB0aGlzLl9sb2NhbGU7XG4gICAgICAgIG9iai5fY3VycmVuY3lDb2RlID0gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgICAgICBvYmouX2N1cnJlbmN5RGlzcGxheSA9IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgb2JqLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgICAgICBvYmouX2Rpc3BsYXlGb3JtYXQgPSB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgICAgICBvYmouX2hlYWRlckNsYXNzTmFtZSA9IHRoaXMuX2hlYWRlckNsYXNzTmFtZTtcbiAgICAgICAgb2JqLl9jbGFzc05hbWUgPSB0aGlzLl9jbGFzc05hbWU7XG4gICAgICAgIG9iai5fd2lkdGggPSB0aGlzLl93aWR0aDtcbiAgICAgICAgb2JqLl9taW5XaWR0aCA9IHRoaXMuX21pbldpZHRoO1xuICAgICAgICBvYmouX21heFdpZHRoID0gdGhpcy5fbWF4V2lkdGg7XG4gICAgICAgIG9iai5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIG9iai5faGFzQ29weVRvQ2xpcGJvYXJkID0gdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkO1xuICAgICAgICBvYmouX3RlbXBsYXRlID0gdGhpcy5fdGVtcGxhdGU7XG4gICAgICAgIG9iai5fZ2V0dGVyID0gdGhpcy5fZ2V0dGVyO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3RhYmxlOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yO1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIF92aXNpYmlsaXR5ID0gdHJ1ZTtcblxuICAgIC8vIHByaXZhdGUgX2ZpbHRlclN0YXR1cztcblxuICAgIGNvbnN0cnVjdG9yKHRhYmxlOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yLCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHRhYmxlLCBwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2aXNpYmlsaXR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJpbGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGNvbHVtbidzIHRpdGxlIGFuZCByZXR1cm5zIHRoaXMgY29sdW1uXG4gICAgICogQHBhcmFtIHRpdGxlIHRpdGxlIHRvIGJlIHNldFxuICAgICAqIEBwYXJhbSBvdmVycmlkZSBzaG91bGQgY29sdW1uIHRpdGxlIGlmIGFsbCByZWFkeSBzZXQ/XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nLCBvdmVycmlkZSA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl90aXRsZSA9PSBudWxsIHx8IG92ZXJyaWRlKSB7XG4gICAgICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgYXV0b21hdGljIHR5cGUgYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aEF1dG9tYXRpY1R5cGUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBUYWJsZXZpZXdVdGlsLnN0cmluZ0NvbHVtbkNvbnZlcnRlcih0aGlzLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgdmlzaWJpbGl0eSBzdGF0ZSBmb3IgY29sdW1uIGFuZCByZXR1cm5zIHRoaXMgY29sdW1uXG4gICAgICogQHBhcmFtIHZpc2liaWxpdHlcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFZpc2liaWxpdHkodmlzaWJpbGl0eTogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl92aXNpYmlsaXR5ID0gdmlzaWJpbGl0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZWVwIGNvcHkgb2YgY29sdW1uIGR5bmFtaWMgZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvcih0aGlzLl90YWJsZSwgdGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgZGVzY3JpcHRvci5fdmlzaWJpbGl0eSA9IHRoaXMuX3Zpc2liaWxpdHk7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0NvbHVtbkRlc2NyaXB0b3IodGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8YW55Pik6IENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yKHRhYmxlRGVzY3JpcHRvciwgdGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './column.descriptor';
|
|
2
|
+
export * from './table.descriptor';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29sdW1uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5kZXNjcmlwdG9yJztcbiJdfQ==
|