@mediusinc/mng-commons 0.10.3-rc.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
- package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
- package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
- package/esm2020/lib/api/models/index.mjs +8 -8
- package/esm2020/lib/api/models/mappers.mjs +12 -12
- package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
- package/esm2020/lib/api/models/query-param.model.mjs +67 -67
- package/esm2020/lib/api/models/query-result.model.mjs +17 -17
- package/esm2020/lib/api/models/serialization.model.mjs +1 -1
- package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
- package/esm2020/lib/api/services/crud-api.abstract.service.mjs +67 -67
- package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
- package/esm2020/lib/api/services/index.mjs +3 -3
- package/esm2020/lib/api/utils/index.mjs +2 -2
- package/esm2020/lib/api/utils/medius-rest.util.mjs +151 -151
- package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
- package/esm2020/lib/components/action/action.component.mjs +199 -199
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -247
- package/esm2020/lib/components/action/index.mjs +3 -3
- package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2020/lib/components/action/models/action-execution.model.mjs +235 -235
- package/esm2020/lib/components/action/models/index.mjs +2 -2
- package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +277 -277
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +168 -168
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +212 -212
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +48 -48
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +43 -43
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +25 -25
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +101 -101
- package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +22 -22
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +173 -173
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +149 -149
- 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 +9 -9
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
- package/esm2020/lib/components/form/index.mjs +3 -3
- package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
- package/esm2020/lib/components/form/models/index.mjs +1 -1
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
- package/esm2020/lib/components/layout/footer.component.mjs +16 -16
- package/esm2020/lib/components/layout/index.mjs +7 -7
- package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
- package/esm2020/lib/components/layout/menu-item.component.mjs +238 -238
- package/esm2020/lib/components/layout/menu.component.mjs +20 -20
- package/esm2020/lib/components/layout/services/index.mjs +1 -1
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
- package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
- package/esm2020/lib/components/layout/version.component.mjs +57 -57
- package/esm2020/lib/components/tableview/index.mjs +6 -6
- package/esm2020/lib/components/tableview/models/index.mjs +1 -1
- package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +57 -57
- package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +60 -60
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +101 -101
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
- package/esm2020/lib/components/tableview/table/table.component.mjs +497 -497
- package/esm2020/lib/components/tableview/tableview.component.mjs +91 -91
- package/esm2020/lib/config/formly.config.mjs +181 -181
- package/esm2020/lib/config/index.mjs +1 -1
- package/esm2020/lib/config/models/index.mjs +3 -2
- package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
- package/esm2020/lib/config/models/mng-formly-config-model.mjs +2 -0
- package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
- package/esm2020/lib/data-providers/index.mjs +5 -5
- package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
- package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
- package/esm2020/lib/descriptors/action.descriptor.mjs +587 -587
- package/esm2020/lib/descriptors/column.descriptor.mjs +264 -264
- package/esm2020/lib/descriptors/editor.descriptor.mjs +146 -146
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
- package/esm2020/lib/descriptors/field.descriptor.mjs +819 -819
- package/esm2020/lib/descriptors/filter.descriptor.mjs +288 -288
- package/esm2020/lib/descriptors/index.mjs +9 -9
- package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
- package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
- package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
- package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
- package/esm2020/lib/descriptors/table.descriptor.mjs +197 -197
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
- package/esm2020/lib/descriptors/types/action.type.mjs +52 -52
- package/esm2020/lib/descriptors/types/column.type.mjs +10 -10
- package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
- package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
- package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
- package/esm2020/lib/descriptors/types/index.mjs +6 -6
- package/esm2020/lib/descriptors/types/table.type.mjs +16 -16
- package/esm2020/lib/directives/component.directive.mjs +43 -43
- package/esm2020/lib/directives/index.mjs +2 -2
- package/esm2020/lib/directives/template.directive.mjs +27 -27
- package/esm2020/lib/mng-commons.module.mjs +441 -441
- package/esm2020/lib/models/column-value.model.mjs +1 -1
- package/esm2020/lib/models/enum.model.mjs +1 -1
- package/esm2020/lib/models/error.model.mjs +1 -1
- package/esm2020/lib/models/formly-field.model.mjs +2 -0
- package/esm2020/lib/models/index.mjs +9 -8
- package/esm2020/lib/models/menu.model.mjs +1 -1
- package/esm2020/lib/models/user.model.mjs +1 -1
- package/esm2020/lib/models/version.model.mjs +1 -1
- package/esm2020/lib/models/view-container.model.mjs +1 -1
- package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
- package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
- package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
- package/esm2020/lib/pipes/index.mjs +5 -5
- package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
- package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
- package/esm2020/lib/router/index.mjs +2 -2
- package/esm2020/lib/router/models/index.mjs +1 -1
- package/esm2020/lib/router/models/router.model.mjs +1 -1
- package/esm2020/lib/router/route-builder.mjs +425 -425
- package/esm2020/lib/router/tableview-route-builder.mjs +159 -159
- package/esm2020/lib/security/authorization.guard.mjs +25 -25
- package/esm2020/lib/security/authorization.service.mjs +46 -46
- package/esm2020/lib/security/authorization.util.mjs +15 -15
- package/esm2020/lib/security/index.mjs +3 -3
- package/esm2020/lib/security/model/authorization.type.mjs +7 -7
- package/esm2020/lib/security/model/index.mjs +3 -3
- package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
- package/esm2020/lib/security/model/permissions.model.mjs +94 -94
- package/esm2020/lib/services/action-executor.service.mjs +535 -535
- package/esm2020/lib/services/commons.service.mjs +342 -342
- package/esm2020/lib/services/configuration.service.mjs +110 -110
- package/esm2020/lib/services/error-mapper.service.mjs +13 -13
- package/esm2020/lib/services/index.mjs +6 -6
- package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
- package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
- package/esm2020/lib/services/internal/index.mjs +2 -2
- package/esm2020/lib/services/navigation.service.mjs +47 -47
- package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
- package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
- package/esm2020/lib/services/providers/index.mjs +2 -2
- package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
- package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
- package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
- package/esm2020/lib/services/tokens/index.mjs +4 -4
- package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
- package/esm2020/lib/services/version.service.mjs +38 -38
- package/esm2020/lib/services/view-container.component.service.mjs +34 -34
- package/esm2020/lib/types/index.mjs +2 -2
- package/esm2020/lib/types/type.decorator.mjs +12 -12
- package/esm2020/lib/types/type.model.mjs +1 -1
- package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
- package/esm2020/lib/utils/editor-formly.util.mjs +251 -243
- package/esm2020/lib/utils/enum.util.mjs +81 -81
- package/esm2020/lib/utils/i18n.util.mjs +232 -232
- package/esm2020/lib/utils/index.mjs +7 -7
- package/esm2020/lib/utils/model.util.mjs +59 -59
- package/esm2020/lib/utils/notification.util.mjs +45 -45
- package/esm2020/lib/utils/route.util.mjs +23 -23
- package/esm2020/lib/utils/styles.util.mjs +40 -40
- package/esm2020/lib/utils/type.util.mjs +76 -76
- package/esm2020/mediusinc-mng-commons.mjs +4 -4
- package/esm2020/public-api.mjs +51 -51
- package/fesm2015/mediusinc-mng-commons.mjs +10636 -10632
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +10489 -10481
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/models/builders/query-param.builder.d.ts +13 -13
- 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 +23 -23
- package/lib/api/models/serialization.model.d.ts +8 -8
- package/lib/api/services/api.abstract.service.d.ts +24 -24
- package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
- package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
- package/lib/api/services/index.d.ts +3 -3
- package/lib/api/utils/index.d.ts +2 -2
- package/lib/api/utils/medius-rest.util.d.ts +15 -15
- package/lib/api/utils/object-serializer.util.d.ts +33 -33
- package/lib/components/action/action.component.d.ts +75 -75
- package/lib/components/action/editor/action-editor.component.d.ts +64 -64
- package/lib/components/action/index.d.ts +3 -3
- package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
- package/lib/components/action/models/action-execution.model.d.ts +129 -129
- package/lib/components/action/models/index.d.ts +2 -2
- package/lib/components/action/route/action-route.component.d.ts +31 -31
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +56 -56
- package/lib/components/form/dropdown/dropdown.component.d.ts +47 -47
- package/lib/components/form/editor/form-editor.component.d.ts +45 -45
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -15
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -13
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +23 -23
- package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +10 -10
- package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -45
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -23
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +38 -38
- 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 +9 -9
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
- 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 +37 -37
- package/lib/components/form/models/index.d.ts +1 -1
- 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 +7 -7
- package/lib/components/layout/main-layout.component.d.ts +20 -20
- package/lib/components/layout/menu-item.component.d.ts +44 -44
- package/lib/components/layout/menu.component.d.ts +10 -10
- package/lib/components/layout/services/index.d.ts +1 -1
- package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
- package/lib/components/layout/topbar.component.d.ts +24 -24
- package/lib/components/layout/version.component.d.ts +19 -19
- package/lib/components/tableview/index.d.ts +6 -6
- package/lib/components/tableview/models/index.d.ts +1 -1
- package/lib/components/tableview/models/table.event.d.ts +17 -17
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
- package/lib/components/tableview/route/tableview-route.component.d.ts +23 -23
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -32
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -29
- package/lib/components/tableview/table/table.component.d.ts +108 -108
- package/lib/components/tableview/tableview.component.d.ts +41 -41
- package/lib/config/formly.config.d.ts +16 -15
- package/lib/config/index.d.ts +1 -1
- package/lib/config/models/index.d.ts +2 -1
- package/lib/config/models/mng-config.model.d.ts +36 -36
- package/lib/config/models/mng-formly-config-model.d.ts +17 -0
- package/lib/data-providers/base.data-provider.d.ts +14 -14
- package/lib/data-providers/editor.data-provider.d.ts +25 -25
- package/lib/data-providers/index.d.ts +5 -5
- package/lib/data-providers/lookup.data-provider.d.ts +14 -14
- package/lib/data-providers/table.data-provider.d.ts +14 -14
- package/lib/data-providers/tableview.data-provider.d.ts +15 -15
- package/lib/descriptors/action.descriptor.d.ts +234 -234
- package/lib/descriptors/column.descriptor.d.ts +82 -82
- package/lib/descriptors/editor.descriptor.d.ts +37 -37
- package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
- package/lib/descriptors/field.descriptor.d.ts +300 -294
- package/lib/descriptors/filter.descriptor.d.ts +106 -106
- package/lib/descriptors/index.d.ts +9 -9
- package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
- package/lib/descriptors/interfaces/index.d.ts +2 -2
- package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
- package/lib/descriptors/model.descriptor.d.ts +15 -15
- package/lib/descriptors/table.descriptor.d.ts +66 -66
- package/lib/descriptors/tableview.descriptor.d.ts +42 -42
- package/lib/descriptors/types/action.type.d.ts +45 -45
- package/lib/descriptors/types/column.type.d.ts +9 -9
- package/lib/descriptors/types/editor.type.d.ts +6 -6
- package/lib/descriptors/types/field.type.d.ts +44 -44
- package/lib/descriptors/types/filter.type.d.ts +27 -27
- package/lib/descriptors/types/index.d.ts +6 -6
- package/lib/descriptors/types/table.type.d.ts +13 -13
- package/lib/directives/component.directive.d.ts +16 -16
- package/lib/directives/index.d.ts +2 -2
- package/lib/directives/template.directive.d.ts +13 -13
- package/lib/mng-commons.module.d.ts +87 -87
- package/lib/models/column-value.model.d.ts +4 -4
- package/lib/models/enum.model.d.ts +6 -6
- package/lib/models/error.model.d.ts +14 -14
- package/lib/models/formly-field.model.d.ts +16 -0
- package/lib/models/index.d.ts +8 -7
- package/lib/models/menu.model.d.ts +27 -27
- package/lib/models/user.model.d.ts +8 -8
- package/lib/models/version.model.d.ts +18 -18
- package/lib/models/view-container.model.d.ts +6 -6
- package/lib/pipes/boolean.pipe.d.ts +7 -7
- package/lib/pipes/enum.pipe.d.ts +8 -8
- package/lib/pipes/i18n-property.pipe.d.ts +8 -8
- package/lib/pipes/index.d.ts +5 -5
- package/lib/pipes/json-path.pipe.d.ts +13 -13
- package/lib/pipes/link-formatter.pipe.d.ts +11 -11
- package/lib/router/index.d.ts +2 -2
- package/lib/router/models/index.d.ts +1 -1
- package/lib/router/models/router.model.d.ts +27 -27
- package/lib/router/route-builder.d.ts +98 -98
- package/lib/router/tableview-route-builder.d.ts +34 -34
- package/lib/security/authorization.guard.d.ts +11 -11
- package/lib/security/authorization.service.d.ts +19 -19
- package/lib/security/authorization.util.d.ts +5 -5
- package/lib/security/index.d.ts +3 -3
- package/lib/security/model/authorization.type.d.ts +6 -6
- package/lib/security/model/index.d.ts +3 -3
- package/lib/security/model/permission-service.interface.d.ts +6 -6
- package/lib/security/model/permissions.model.d.ts +44 -44
- package/lib/services/action-executor.service.d.ts +149 -149
- package/lib/services/commons.service.d.ts +78 -78
- package/lib/services/configuration.service.d.ts +36 -36
- package/lib/services/error-mapper.service.d.ts +7 -7
- package/lib/services/index.d.ts +6 -6
- package/lib/services/internal/commons-init.provider.d.ts +3 -3
- package/lib/services/internal/commons-init.service.d.ts +16 -16
- package/lib/services/internal/index.d.ts +2 -2
- package/lib/services/navigation.service.d.ts +14 -14
- package/lib/services/providers/config-service.provider.d.ts +6 -6
- package/lib/services/providers/formly-config.provider.d.ts +4 -4
- package/lib/services/providers/index.d.ts +2 -2
- package/lib/services/tokens/browser-storage.token.d.ts +2 -2
- package/lib/services/tokens/commons-init.token.d.ts +3 -3
- package/lib/services/tokens/default-setting.token.d.ts +2 -2
- package/lib/services/tokens/index.d.ts +4 -4
- package/lib/services/tokens/module-config.token.d.ts +3 -3
- package/lib/services/version.service.d.ts +13 -13
- package/lib/services/view-container.component.service.d.ts +22 -22
- package/lib/types/index.d.ts +2 -2
- package/lib/types/type.decorator.d.ts +4 -4
- package/lib/types/type.model.d.ts +23 -23
- package/lib/utils/action-data-provider.util.d.ts +20 -20
- package/lib/utils/editor-formly.util.d.ts +11 -11
- package/lib/utils/enum.util.d.ts +50 -50
- package/lib/utils/i18n.util.d.ts +56 -56
- package/lib/utils/index.d.ts +7 -7
- package/lib/utils/model.util.d.ts +8 -8
- package/lib/utils/notification.util.d.ts +11 -11
- package/lib/utils/route.util.d.ts +4 -4
- package/lib/utils/styles.util.d.ts +14 -14
- package/lib/utils/type.util.d.ts +36 -36
- package/mediusinc-mng-commons.d.ts +5 -5
- package/package.json +2 -2
- package/public-api.d.ts +32 -32
- package/version-info.json +7 -7
- package/mediusinc-mng-commons-0.10.3-rc.2.tgz +0 -0
|
@@ -1,243 +1,251 @@
|
|
|
1
|
-
import { map } from 'rxjs/operators';
|
|
2
|
-
import { FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor } from '../descriptors';
|
|
3
|
-
import { FieldInputTypeEnum, FieldLookupTypeEnum } from '../descriptors/types';
|
|
4
|
-
export class EditorFormlyUtil {
|
|
5
|
-
static createFormlyConfigFromDescriptor(descriptor) {
|
|
6
|
-
const fields = [];
|
|
7
|
-
if (descriptor.tabs.length === 1 && descriptor.tabs[0].default) {
|
|
8
|
-
// dont use tabs
|
|
9
|
-
fields.push(...EditorFormlyUtil.createFormlyGroupType(descriptor.tabs[0].fields));
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
fields.push(...EditorFormlyUtil.createFormlyTabType(descriptor.tabs));
|
|
13
|
-
}
|
|
14
|
-
return fields;
|
|
15
|
-
}
|
|
16
|
-
static createFormlyTabType(tabGroups) {
|
|
17
|
-
const tabsField = {
|
|
18
|
-
type: 'tabs',
|
|
19
|
-
fieldGroup: []
|
|
20
|
-
};
|
|
21
|
-
for (const tab of tabGroups) {
|
|
22
|
-
const tabField = {
|
|
23
|
-
id: tab.name,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
field.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
field.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
field.
|
|
111
|
-
break;
|
|
112
|
-
case FieldInputTypeEnum.
|
|
113
|
-
field.type = '
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
field.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9lZGl0b3ItZm9ybWx5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFJSCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsK0JBQStCLEVBR2xDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHN0UsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixNQUFNLENBQUMsZ0NBQWdDLENBQUMsVUFBaUM7UUFDNUUsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUV2QyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUM1RCxnQkFBZ0I7WUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNyRjthQUFNO1lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUF5QztRQUN2RSxNQUFNLFNBQVMsR0FBc0I7WUFDakMsSUFBSSxFQUFFLE1BQU07WUFDWixVQUFVLEVBQUUsRUFBRTtTQUNqQixDQUFDO1FBQ0YsS0FBSyxN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LENBQUM7aUJBQ0osQ0FBQztnQkFDRixJQUFJLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7b0JBQzFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO2lCQUN4RTthQUNKO2lCQUFNO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUU7b0JBQ3hELE1BQU0sQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoRTtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3Jcbn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW0sIEZpZWxkTG9va3VwVHlwZUVudW19IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nRmllbGRBc3luY1ZhbGlkYXRvcn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgRWRpdG9yRm9ybWx5VXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlDb25maWdGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPGFueT4pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICAgICAgY29uc3QgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IudGFicy5sZW5ndGggPT09IDEgJiYgZGVzY3JpcHRvci50YWJzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIC8vIGRvbnQgdXNlIHRhYnNcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5R3JvdXBUeXBlKGRlc2NyaXB0b3IudGFic1swXS5maWVsZHMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5VGFiVHlwZShkZXNjcmlwdG9yLnRhYnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlUYWJUeXBlKHRhYkdyb3VwczogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8YW55PltdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGNvbnN0IHRhYnNGaWVsZDogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICB0eXBlOiAndGFicycsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICB9O1xuICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJHcm91cHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGFiLm5hbWUsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7fSxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0YWIudGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0YWJGaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLmxhYmVsID0gdGFiLnRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFiRmllbGQuZmllbGRHcm91cCEucHVzaCguLi5FZGl0b3JGb3JtbHlVdGlsLmNyZWF0ZUZvcm1seUdyb3VwVHlwZSh0YWIuZmllbGRzKSk7XG4gICAgICAgICAgICB0YWJzRmllbGQuZmllbGRHcm91cCEucHVzaCh0YWJGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0YWJzRmllbGRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRm9ybWx5R3JvdXBUeXBlKGdyb3VwczogRmllbGRHcm91cERlc2NyaXB0b3I8YW55PltdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGlmIChncm91cHMubGVuZ3RoID09PSAxICYmIGdyb3Vwc1swXS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyBkb250IHVzZSBmaWVsZHNldCwganVzdCBjcmVhdGUgZmllbGRzXG4gICAgICAgICAgICByZXR1cm4gRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlGaWVsZHMoZ3JvdXBzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3Vwc0ZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmllbGRzZXQnLFxuICAgICAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cEZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChncm91cC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICBncm91cEZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubGFiZWwgPSBncm91cC50aXRsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ3JvdXBGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGRzKGdyb3VwKSk7XG4gICAgICAgICAgICAgICAgZ3JvdXBzRmllbGQuZmllbGRHcm91cCEucHVzaChncm91cEZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbZ3JvdXBzRmllbGRdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZHMoZGVzY3JpcHRvcjogRmllbGRHcm91cERlc2NyaXB0b3I8YW55Pik6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yRmllbGQgb2YgZGVzY3JpcHRvci5maWVsZHMpIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKEVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGQoZGVzY3JpcHRvckZpZWxkKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd3JhcCBpbiBncm91cCB0byBiZSBhYmxlIHRvIHVzZSBmbGV4IGdyaWRcbiAgICAgICAgY29uc3Qgd3JhcHBlckdyb3VwOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdwLWZsdWlkIGZvcm1ncmlkIGdyaWQnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogZmllbGRzXG4gICAgICAgIH07XG5cbiAgICAgICAgRWRpdG9yRm9ybWx5VXRpbC5hZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQod3JhcHBlckdyb3VwLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zKTtcblxuICAgICAgICByZXR1cm4gW3dyYXBwZXJHcm91cF07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZChkZXNjcmlwdG9yOiBBRmllbGREZXNjcmlwdG9yPGFueSwgYW55Pik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICAgICAgY29uc3QgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAga2V5OiBkZXNjcmlwdG9yLnByb3BlcnR5LFxuICAgICAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7fVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBjbGFzc05hbWUgPSBkZXNjcmlwdG9yLmNsYXNzTmFtZTtcbiAgICAgICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIC8vIGFzc2lnbiBkZWZhdWx0IGZpZWxkIHdpZHRoIHRocm91Z2ggZW50aXJlIHJvd1xuICAgICAgICAgICAgY2xhc3NOYW1lID0gJ2NvbC0xMic7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyFbJ2Rlc2NyaXB0b3InXSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRJbnB1dERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5IaWRkZW46XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2xhYmVsJztcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkLmtleTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uVGV4dGFyZWE6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAndGV4dGFyZWEnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5taW4gPSBkZXNjcmlwdG9yLm51bWJlck1pbjtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5tYXggPSBkZXNjcmlwdG9yLm51bWJlck1heDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnY3VycmVuY3knO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1heCA9IGRlc2NyaXB0b3IubnVtYmVyTWF4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5Td2l0Y2g6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnc3dpdGNoJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW86XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAncmFkaW8nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5EYXRlcGlja2VyOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2RhdGVwaWNrZXInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5NYXNrOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ21hc2snO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2ZpbGUnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSBkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnaW5wdXQnO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1pbkxlbmd0aCA9IGRlc2NyaXB0b3IubWluTGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1heExlbmd0aCA9IGRlc2NyaXB0b3IubWF4TGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLnBhdHRlcm4gPSBkZXNjcmlwdG9yLnBhdHRlcm47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBmaWVsZC50eXBlID0gJ2VudW0nO1xuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZExvb2t1cERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5sb29rdXBUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uRGlhbG9nOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2RpYWxvZyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5Ecm9wZG93bjpcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2Ryb3Bkb3duJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAndGFibGUtZGlhbG9nLW11bHRpc2VsZWN0JztcbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZmllbGQudHlwZSA9ICd0YWJsZS1kaWFsb2ctZm9ybSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5sYWJlbCkge1xuICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5sYWJlbCA9IGRlc2NyaXB0b3IubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIVsndGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkJ10gPSBkZXNjcmlwdG9yLnJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZCkge1xuICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcikge1xuICAgICAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyFbJ2hpZGVSZXF1aXJlZE1hcmtlciddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIVsnaGlkZSddID0gZGVzY3JpcHRvci5oaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuZGlzYWJsZWRFeHByZXNzaW9uKSB7XG4gICAgICAgICAgICBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcyFbJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCddID0gZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcyFbJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCddID0gJ2Zvcm1TdGF0ZS5kaXNhYmxlZCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZmllbGQuZGVmYXVsdFZhbHVlID0gZGVzY3JpcHRvci5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBFZGl0b3JGb3JtbHlVdGlsLmFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChmaWVsZCwgZGVzY3JpcHRvci52YWxpZGF0aW9ucyk7XG4gICAgICAgIEVkaXRvckZvcm1seVV0aWwuYWRkQXN5bmNWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoZmllbGQsIGRlc2NyaXB0b3IuYXN5bmNWYWxpZGF0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGNvbmZpZzogRm9ybWx5RmllbGRDb25maWcsIHZhbGlkYXRpb25zOiBBcnJheTxGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPikge1xuICAgICAgICBpZiAoIWNvbmZpZy52YWxpZGF0b3JzKSB7XG4gICAgICAgICAgICBjb25maWcudmFsaWRhdG9ycyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvcnNbdmFsaWRhdGlvbi5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWQ6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JSZXMgPSB2YWxpZGF0aW9uLnZhbGlkYXRvciEoY29udHJvbCwgZmllbGQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWx5IHZhbGlkYXRvciBvbmx5IGV4Y2VwdHMgdHJ1ZS9mYWxzZSBmb3IgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFwIHBvc3NpYmxlIGFuZ3VsYXIgdmFsaWRhdG9yIHJlc3VsdCB0byB0cnVlL2ZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbGlkYXRvclJlcyA9PT0gJ2Jvb2xlYW4nID8gdmFsaWRhdG9yUmVzIDogdmFsaWRhdG9yUmVzID09PSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24ubWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9yc1t2YWxpZGF0aW9uLm5hbWVdLm1lc3NhZ2UgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLnZhbGlkYXRvcnMudmFsaWRhdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvcnMudmFsaWRhdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9ycy52YWxpZGF0aW9uLnB1c2godmFsaWRhdGlvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkQXN5bmNWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoY29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZywgYXN5bmNWYWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcj4pIHtcbiAgICAgICAgaWYgKCFjb25maWcuYXN5bmNWYWxpZGF0b3JzKSB7XG4gICAgICAgICAgICBjb25maWcuYXN5bmNWYWxpZGF0b3JzID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgYXN5bmNWYWxpZGF0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5hc3luY1ZhbGlkYXRvcnNbdmFsaWRhdGlvbi5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWQ6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSA8TW5nRmllbGRBc3luY1ZhbGlkYXRvcj52YWxpZGF0aW9uLnZhbGlkYXRvcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yT2JzOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBib29sZWFuIHwgbnVsbD4gPSB2YWxpZGF0b3IoY29udHJvbCwgZmllbGQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWx5IHZhbGlkYXRvciBvbmx5IGV4Y2VwdHMgdHJ1ZS9mYWxzZSBmb3IgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFwIHBvc3NpYmxlIGFuZ3VsYXIgdmFsaWRhdG9yIHJlc3VsdCB0byB0cnVlL2ZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdG9yT2JzLnBpcGUobWFwKHZhbHVlID0+ICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyA/IHZhbHVlIDogdmFsdWUgPT09IG51bGwpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvbi5tZXNzYWdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hc3luY1ZhbGlkYXRvcnNbdmFsaWRhdGlvbi5uYW1lXS5tZXNzYWdlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMuYXN5bmNWYWxpZGF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuYXN5bmNWYWxpZGF0b3JzLmFzeW5jVmFsaWRhdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25maWcuYXN5bmNWYWxpZGF0b3JzLmFzeW5jVmFsaWRhdGlvbi5wdXNoKHZhbGlkYXRpb24ubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
1
|
+
import { map } from 'rxjs/operators';
|
|
2
|
+
import { FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor } from '../descriptors';
|
|
3
|
+
import { FieldInputTypeEnum, FieldLookupTypeEnum } from '../descriptors/types';
|
|
4
|
+
export class EditorFormlyUtil {
|
|
5
|
+
static createFormlyConfigFromDescriptor(descriptor) {
|
|
6
|
+
const fields = [];
|
|
7
|
+
if (descriptor.tabs.length === 1 && descriptor.tabs[0].default) {
|
|
8
|
+
// dont use tabs
|
|
9
|
+
fields.push(...EditorFormlyUtil.createFormlyGroupType(descriptor.tabs[0].fields));
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
fields.push(...EditorFormlyUtil.createFormlyTabType(descriptor.tabs));
|
|
13
|
+
}
|
|
14
|
+
return fields;
|
|
15
|
+
}
|
|
16
|
+
static createFormlyTabType(tabGroups) {
|
|
17
|
+
const tabsField = {
|
|
18
|
+
type: 'tabs',
|
|
19
|
+
fieldGroup: []
|
|
20
|
+
};
|
|
21
|
+
for (const tab of tabGroups) {
|
|
22
|
+
const tabField = {
|
|
23
|
+
id: tab.name,
|
|
24
|
+
props: {},
|
|
25
|
+
expressions: {},
|
|
26
|
+
fieldGroup: []
|
|
27
|
+
};
|
|
28
|
+
if (tab.title) {
|
|
29
|
+
tabField.props.label = tab.title;
|
|
30
|
+
}
|
|
31
|
+
tabField.fieldGroup.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields));
|
|
32
|
+
tabsField.fieldGroup.push(tabField);
|
|
33
|
+
}
|
|
34
|
+
return [tabsField];
|
|
35
|
+
}
|
|
36
|
+
static createFormlyGroupType(groups) {
|
|
37
|
+
if (groups.length === 1 && groups[0].default) {
|
|
38
|
+
// dont use fieldset, just create fields
|
|
39
|
+
return EditorFormlyUtil.createFormlyFields(groups[0]);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const groupsField = {
|
|
43
|
+
type: 'fieldset',
|
|
44
|
+
fieldGroup: [],
|
|
45
|
+
props: {},
|
|
46
|
+
expressions: {}
|
|
47
|
+
};
|
|
48
|
+
for (const group of groups) {
|
|
49
|
+
const groupField = {
|
|
50
|
+
id: group.name,
|
|
51
|
+
props: {
|
|
52
|
+
descriptor: group
|
|
53
|
+
},
|
|
54
|
+
expressions: {},
|
|
55
|
+
fieldGroup: []
|
|
56
|
+
};
|
|
57
|
+
if (group.title) {
|
|
58
|
+
groupField.props.label = group.title;
|
|
59
|
+
}
|
|
60
|
+
groupField.fieldGroup.push(...EditorFormlyUtil.createFormlyFields(group));
|
|
61
|
+
groupsField.fieldGroup.push(groupField);
|
|
62
|
+
}
|
|
63
|
+
return [groupsField];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
static createFormlyFields(descriptor) {
|
|
67
|
+
const fields = [];
|
|
68
|
+
for (const descriptorField of descriptor.fields) {
|
|
69
|
+
fields.push(EditorFormlyUtil.createFormlyField(descriptorField));
|
|
70
|
+
}
|
|
71
|
+
// wrap in group to be able to use flex grid
|
|
72
|
+
const wrapperGroup = {
|
|
73
|
+
fieldGroupClassName: 'p-fluid formgrid grid',
|
|
74
|
+
fieldGroup: fields
|
|
75
|
+
};
|
|
76
|
+
EditorFormlyUtil.addValidationsToFormlyField(wrapperGroup, descriptor.validations);
|
|
77
|
+
return [wrapperGroup];
|
|
78
|
+
}
|
|
79
|
+
static createFormlyField(descriptor) {
|
|
80
|
+
const field = {
|
|
81
|
+
key: descriptor.property,
|
|
82
|
+
props: {
|
|
83
|
+
descriptor
|
|
84
|
+
},
|
|
85
|
+
expressions: {}
|
|
86
|
+
};
|
|
87
|
+
let className = descriptor.className;
|
|
88
|
+
if (!className) {
|
|
89
|
+
// assign default field width through entire row
|
|
90
|
+
className = 'col-12';
|
|
91
|
+
}
|
|
92
|
+
field.className = className;
|
|
93
|
+
if (descriptor instanceof FieldInputDescriptor) {
|
|
94
|
+
switch (descriptor.fieldType) {
|
|
95
|
+
case FieldInputTypeEnum.Hidden:
|
|
96
|
+
break;
|
|
97
|
+
case FieldInputTypeEnum.Label:
|
|
98
|
+
field.type = 'label';
|
|
99
|
+
delete field.key;
|
|
100
|
+
break;
|
|
101
|
+
case FieldInputTypeEnum.Textarea:
|
|
102
|
+
field.type = 'textarea';
|
|
103
|
+
field.props.maxLength = descriptor.maxLength;
|
|
104
|
+
field.props.minLength = descriptor.minLength;
|
|
105
|
+
field.props.pattern = descriptor.pattern;
|
|
106
|
+
break;
|
|
107
|
+
case FieldInputTypeEnum.Number:
|
|
108
|
+
field.type = 'number';
|
|
109
|
+
field.props.min = descriptor.numberMin;
|
|
110
|
+
field.props.max = descriptor.numberMax;
|
|
111
|
+
break;
|
|
112
|
+
case FieldInputTypeEnum.Currency:
|
|
113
|
+
field.type = 'currency';
|
|
114
|
+
field.props.min = descriptor.numberMin;
|
|
115
|
+
field.props.max = descriptor.numberMax;
|
|
116
|
+
break;
|
|
117
|
+
case FieldInputTypeEnum.Switch:
|
|
118
|
+
field.type = 'switch';
|
|
119
|
+
break;
|
|
120
|
+
case FieldInputTypeEnum.Radio:
|
|
121
|
+
field.type = 'radio';
|
|
122
|
+
break;
|
|
123
|
+
case FieldInputTypeEnum.Datepicker:
|
|
124
|
+
field.type = 'datepicker';
|
|
125
|
+
break;
|
|
126
|
+
case FieldInputTypeEnum.Mask:
|
|
127
|
+
field.type = 'mask';
|
|
128
|
+
break;
|
|
129
|
+
case FieldInputTypeEnum.File:
|
|
130
|
+
field.type = 'file';
|
|
131
|
+
break;
|
|
132
|
+
case FieldInputTypeEnum.Custom:
|
|
133
|
+
field.type = descriptor.customComponentName;
|
|
134
|
+
break;
|
|
135
|
+
default:
|
|
136
|
+
field.type = 'input';
|
|
137
|
+
field.props.minLength = descriptor.minLength;
|
|
138
|
+
field.props.maxLength = descriptor.maxLength;
|
|
139
|
+
field.props.pattern = descriptor.pattern;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (descriptor instanceof FieldLookupEnumDescriptor) {
|
|
144
|
+
field.type = 'enum';
|
|
145
|
+
}
|
|
146
|
+
else if (descriptor instanceof FieldLookupDescriptor) {
|
|
147
|
+
switch (descriptor.lookupType) {
|
|
148
|
+
case FieldLookupTypeEnum.Autocomplete:
|
|
149
|
+
field.type = 'autocomplete';
|
|
150
|
+
break;
|
|
151
|
+
case FieldLookupTypeEnum.Dialog:
|
|
152
|
+
field.type = 'dialog';
|
|
153
|
+
break;
|
|
154
|
+
case FieldLookupTypeEnum.Dropdown:
|
|
155
|
+
default:
|
|
156
|
+
field.type = 'dropdown';
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else if (descriptor instanceof FieldManyToManyEditorDescriptor) {
|
|
161
|
+
field.type = 'table-dialog-multiselect';
|
|
162
|
+
}
|
|
163
|
+
else if (descriptor instanceof FieldManyEditorDescriptor) {
|
|
164
|
+
field.type = 'table-dialog-form';
|
|
165
|
+
}
|
|
166
|
+
if (descriptor.label) {
|
|
167
|
+
field.props.label = descriptor.label;
|
|
168
|
+
}
|
|
169
|
+
if (descriptor.requiredExpression) {
|
|
170
|
+
field.expressions['props.required'] = descriptor.requiredExpression;
|
|
171
|
+
}
|
|
172
|
+
if (descriptor.required) {
|
|
173
|
+
field.props.required = true;
|
|
174
|
+
if (descriptor.requiredHideLabelMarker) {
|
|
175
|
+
field.props['hideRequiredMarker'] = true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (descriptor.hiddenExpression) {
|
|
179
|
+
field.expressions['hide'] = descriptor.hiddenExpression;
|
|
180
|
+
}
|
|
181
|
+
if (descriptor.disabledExpression) {
|
|
182
|
+
field.expressions['props.disabled'] = descriptor.disabledExpression;
|
|
183
|
+
}
|
|
184
|
+
else if (descriptor.disabled) {
|
|
185
|
+
field.props.disabled = true;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
field.expressions['props.disabled'] = 'formState.disabled';
|
|
189
|
+
}
|
|
190
|
+
if (typeof descriptor.defaultValue !== 'undefined') {
|
|
191
|
+
field.defaultValue = descriptor.defaultValue;
|
|
192
|
+
}
|
|
193
|
+
EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);
|
|
194
|
+
EditorFormlyUtil.addAsyncValidationsToFormlyField(field, descriptor.asyncValidations);
|
|
195
|
+
return field;
|
|
196
|
+
}
|
|
197
|
+
static addValidationsToFormlyField(config, validations) {
|
|
198
|
+
if (!config.validators) {
|
|
199
|
+
config.validators = {};
|
|
200
|
+
}
|
|
201
|
+
for (const validation of validations) {
|
|
202
|
+
if (typeof validation.validator === 'function') {
|
|
203
|
+
config.validators[validation.name] = {
|
|
204
|
+
expression: (control, field, options) => {
|
|
205
|
+
const validatorRes = validation.validator(control, field, options);
|
|
206
|
+
// formly validator only excepts true/false for validation
|
|
207
|
+
// map possible angular validator result to true/false
|
|
208
|
+
return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
if (typeof validation.message === 'function') {
|
|
212
|
+
config.validators[validation.name].message = validation.message;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
if (!Array.isArray(config.validators.validation)) {
|
|
217
|
+
config.validators.validation = [];
|
|
218
|
+
}
|
|
219
|
+
config.validators.validation.push(validation.name);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
static addAsyncValidationsToFormlyField(config, asyncValidations) {
|
|
224
|
+
if (!config.asyncValidators) {
|
|
225
|
+
config.asyncValidators = {};
|
|
226
|
+
}
|
|
227
|
+
for (const validation of asyncValidations) {
|
|
228
|
+
if (typeof validation.validator === 'function') {
|
|
229
|
+
config.asyncValidators[validation.name] = {
|
|
230
|
+
expression: (control, field, options) => {
|
|
231
|
+
const validator = validation.validator;
|
|
232
|
+
const validatorObs = validator(control, field, options);
|
|
233
|
+
// formly validator only excepts true/false for validation
|
|
234
|
+
// map possible angular validator result to true/false
|
|
235
|
+
return validatorObs.pipe(map(value => (typeof value === 'boolean' ? value : value === null)));
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
if (typeof validation.message === 'function') {
|
|
239
|
+
config.asyncValidators[validation.name].message = validation.message;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
if (!Array.isArray(config.asyncValidators.validation)) {
|
|
244
|
+
config.asyncValidators.validation = [];
|
|
245
|
+
}
|
|
246
|
+
config.asyncValidators.validation.push(validation.name);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9lZGl0b3ItZm9ybWx5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFJSCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsK0JBQStCLEVBR2xDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJN0UsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixNQUFNLENBQUMsZ0NBQWdDLENBQUMsVUFBaUM7UUFDNUUsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUV2QyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUM1RCxnQkFBZ0I7WUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNyRjthQUFNO1lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUF5QztRQUN2RSxNQUFNLFNBQVMsR0FBc0I7WUFDakMsSUFBSSxFQUFFLE1BQU07WUFDWixVQUFVLEVBQUUsRUFBRTtTQUNqQixDQUFDO1FBQ0YsS0FBSyxN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QUN2RywwREFBMEQ7d0JBQzFELHNEQUFzRDt3QkFDdEQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2xHLENBQUM7aUJBQ0osQ0FBQztnQkFDRixJQUFJLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7b0JBQzFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO2lCQUN4RTthQUNKO2lCQUFNO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQ25ELE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztpQkFDMUM7Z0JBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMzRDtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3Jcbn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW0sIEZpZWxkTG9va3VwVHlwZUVudW19IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0ZpZWxkQXN5bmNWYWxpZGF0b3J9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEVkaXRvckZvcm1seVV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRm9ybWx5Q29uZmlnRnJvbURlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxhbnk+KTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGNvbnN0IGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnRhYnMubGVuZ3RoID09PSAxICYmIGRlc2NyaXB0b3IudGFic1swXS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyBkb250IHVzZSB0YWJzXG4gICAgICAgICAgICBmaWVsZHMucHVzaCguLi5FZGl0b3JGb3JtbHlVdGlsLmNyZWF0ZUZvcm1seUdyb3VwVHlwZShkZXNjcmlwdG9yLnRhYnNbMF0uZmllbGRzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZHMucHVzaCguLi5FZGl0b3JGb3JtbHlVdGlsLmNyZWF0ZUZvcm1seVRhYlR5cGUoZGVzY3JpcHRvci50YWJzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRm9ybWx5VGFiVHlwZSh0YWJHcm91cHM6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPGFueT5bXSk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgICAgICBjb25zdCB0YWJzRmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgdHlwZTogJ3RhYnMnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFiR3JvdXBzKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJGaWVsZDogTW5nRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHRhYi5uYW1lLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge30sXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGFiLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGFiRmllbGQucHJvcHMubGFiZWwgPSB0YWIudGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5R3JvdXBUeXBlKHRhYi5maWVsZHMpKTtcbiAgICAgICAgICAgIHRhYnNGaWVsZC5maWVsZEdyb3VwIS5wdXNoKHRhYkZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RhYnNGaWVsZF07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlHcm91cFR5cGUoZ3JvdXBzOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxhbnk+W10pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICAgICAgaWYgKGdyb3Vwcy5sZW5ndGggPT09IDEgJiYgZ3JvdXBzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIC8vIGRvbnQgdXNlIGZpZWxkc2V0LCBqdXN0IGNyZWF0ZSBmaWVsZHNcbiAgICAgICAgICAgIHJldHVybiBFZGl0b3JGb3JtbHlVdGlsLmNyZWF0ZUZvcm1seUZpZWxkcyhncm91cHNbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBzRmllbGQ6IE1uZ0Zvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdmaWVsZHNldCcsXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW10sXG4gICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7fVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZDogTW5nRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBncm91cC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHt9LFxuICAgICAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwRmllbGQucHJvcHMubGFiZWwgPSBncm91cC50aXRsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ3JvdXBGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGRzKGdyb3VwKSk7XG4gICAgICAgICAgICAgICAgZ3JvdXBzRmllbGQuZmllbGRHcm91cCEucHVzaChncm91cEZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbZ3JvdXBzRmllbGRdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZHMoZGVzY3JpcHRvcjogRmllbGRHcm91cERlc2NyaXB0b3I8YW55Pik6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yRmllbGQgb2YgZGVzY3JpcHRvci5maWVsZHMpIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKEVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGQoZGVzY3JpcHRvckZpZWxkKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd3JhcCBpbiBncm91cCB0byBiZSBhYmxlIHRvIHVzZSBmbGV4IGdyaWRcbiAgICAgICAgY29uc3Qgd3JhcHBlckdyb3VwOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdwLWZsdWlkIGZvcm1ncmlkIGdyaWQnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogZmllbGRzXG4gICAgICAgIH07XG5cbiAgICAgICAgRWRpdG9yRm9ybWx5VXRpbC5hZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQod3JhcHBlckdyb3VwLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zKTtcblxuICAgICAgICByZXR1cm4gW3dyYXBwZXJHcm91cF07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZChkZXNjcmlwdG9yOiBBRmllbGREZXNjcmlwdG9yPGFueSwgYW55Pik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICAgICAgY29uc3QgZmllbGQ6IE1uZ0Zvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAga2V5OiBkZXNjcmlwdG9yLnByb3BlcnR5LFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IGRlc2NyaXB0b3IuY2xhc3NOYW1lO1xuICAgICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gYXNzaWduIGRlZmF1bHQgZmllbGQgd2lkdGggdGhyb3VnaCBlbnRpcmUgcm93XG4gICAgICAgICAgICBjbGFzc05hbWUgPSAnY29sLTEyJztcbiAgICAgICAgfVxuICAgICAgICBmaWVsZC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZElucHV0RGVzY3JpcHRvcikge1xuICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkhpZGRlbjpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTGFiZWw6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbGFiZWwnO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmllbGQua2V5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICd0ZXh0YXJlYSc7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1heExlbmd0aCA9IGRlc2NyaXB0b3IubWF4TGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW5MZW5ndGggPSBkZXNjcmlwdG9yLm1pbkxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQucHJvcHMucGF0dGVybiA9IGRlc2NyaXB0b3IucGF0dGVybjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ251bWJlcic7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXggPSBkZXNjcmlwdG9yLm51bWJlck1heDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnY3VycmVuY3knO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW4gPSBkZXNjcmlwdG9yLm51bWJlck1pbjtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWF4ID0gZGVzY3JpcHRvci5udW1iZXJNYXg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdzd2l0Y2gnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5SYWRpbzpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdyYWRpbyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGF0ZXBpY2tlcic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLk1hc2s6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbWFzayc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkZpbGU6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZmlsZSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdpbnB1dCc7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1pbkxlbmd0aCA9IGRlc2NyaXB0b3IubWluTGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXhMZW5ndGggPSBkZXNjcmlwdG9yLm1heExlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQucHJvcHMucGF0dGVybiA9IGRlc2NyaXB0b3IucGF0dGVybjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZW51bSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmxvb2t1cFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uQXV0b2NvbXBsZXRlOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5EaWFsb2c6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGlhbG9nJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkRyb3Bkb3duOlxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZHJvcGRvd24nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZmllbGQudHlwZSA9ICd0YWJsZS1kaWFsb2ctbXVsdGlzZWxlY3QnO1xuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBmaWVsZC50eXBlID0gJ3RhYmxlLWRpYWxvZy1mb3JtJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmxhYmVsKSB7XG4gICAgICAgICAgICBmaWVsZC5wcm9wcy5sYWJlbCA9IGRlc2NyaXB0b3IubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25zWydwcm9wcy5yZXF1aXJlZCddID0gZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGZpZWxkLnByb3BzIS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcikge1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzIVsnaGlkZVJlcXVpcmVkTWFya2VyJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuaGlkZGVuRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydoaWRlJ10gPSBkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25zWydwcm9wcy5kaXNhYmxlZCddID0gZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZmllbGQucHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvbnNbJ3Byb3BzLmRpc2FibGVkJ10gPSAnZm9ybVN0YXRlLmRpc2FibGVkJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci5kZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVkaXRvckZvcm1seVV0aWwuYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGZpZWxkLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zKTtcbiAgICAgICAgRWRpdG9yRm9ybWx5VXRpbC5hZGRBc3luY1ZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChmaWVsZCwgZGVzY3JpcHRvci5hc3luY1ZhbGlkYXRpb25zKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoY29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZywgdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I+KSB7XG4gICAgICAgIGlmICghY29uZmlnLnZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvbi52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9yc1t2YWxpZGF0aW9uLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogRm9ybWx5RmllbGRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZDogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvclJlcyA9IHZhbGlkYXRpb24udmFsaWRhdG9yIShjb250cm9sLCBmaWVsZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtbHkgdmFsaWRhdG9yIG9ubHkgZXhjZXB0cyB0cnVlL2ZhbHNlIGZvciB2YWxpZGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXAgcG9zc2libGUgYW5ndWxhciB2YWxpZGF0b3IgcmVzdWx0IHRvIHRydWUvZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsaWRhdG9yUmVzID09PSAnYm9vbGVhbicgPyB2YWxpZGF0b3JSZXMgOiB2YWxpZGF0b3JSZXMgPT09IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvbi5tZXNzYWdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzW3ZhbGlkYXRpb24ubmFtZV0ubWVzc2FnZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcudmFsaWRhdG9ycy52YWxpZGF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9ycy52YWxpZGF0aW9uID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzLnZhbGlkYXRpb24ucHVzaCh2YWxpZGF0aW9uLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRBc3luY1ZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChjb25maWc6IEZvcm1seUZpZWxkQ29uZmlnLCBhc3luY1ZhbGlkYXRpb25zOiBBcnJheTxGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPikge1xuICAgICAgICBpZiAoIWNvbmZpZy5hc3luY1ZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgIGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiBhc3luY1ZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9yc1t2YWxpZGF0aW9uLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogRm9ybWx5RmllbGRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZDogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IDxNbmdGaWVsZEFzeW5jVmFsaWRhdG9yPnZhbGlkYXRpb24udmFsaWRhdG9yO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JPYnM6IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IGJvb2xlYW4gfCBudWxsPiA9IHZhbGlkYXRvcihjb250cm9sLCBmaWVsZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtbHkgdmFsaWRhdG9yIG9ubHkgZXhjZXB0cyB0cnVlL2ZhbHNlIGZvciB2YWxpZGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXAgcG9zc2libGUgYW5ndWxhciB2YWxpZGF0b3IgcmVzdWx0IHRvIHRydWUvZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0b3JPYnMucGlwZShtYXAodmFsdWUgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nID8gdmFsdWUgOiB2YWx1ZSA9PT0gbnVsbCkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uLm1lc3NhZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9yc1t2YWxpZGF0aW9uLm5hbWVdLm1lc3NhZ2UgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLmFzeW5jVmFsaWRhdG9ycy52YWxpZGF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuYXN5bmNWYWxpZGF0b3JzLnZhbGlkYXRpb24gPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9ycy52YWxpZGF0aW9uLnB1c2godmFsaWRhdGlvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|