@mediusinc/mng-commons 3.6.0-rc.3 → 3.7.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/esm2022/index.mjs +6 -3
- package/esm2022/lib/api/models/filter-param.model.mjs +1 -1
- package/esm2022/lib/api/models/index.mjs +1 -3
- package/esm2022/lib/api/models/query-param.model.mjs +1 -1
- package/esm2022/lib/api/models/query-result.model.mjs +12 -1
- package/esm2022/lib/api/services/api.abstract.service.mjs +2 -2
- package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +1 -1
- package/esm2022/lib/api/utils/index.mjs +2 -2
- package/esm2022/lib/api/utils/object-serializer.util.mjs +53 -137
- package/esm2022/lib/components/action/action.component.mjs +17 -16
- package/esm2022/lib/components/action/editor/action-editor.component.mjs +12 -12
- package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +7 -7
- package/esm2022/lib/components/action/models/action-component.model.mjs +1 -1
- package/esm2022/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -5
- package/esm2022/lib/components/action/route/action-route.component.mjs +6 -6
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +74 -65
- package/esm2022/lib/components/form/date-range/date-range.component.mjs +6 -7
- package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +39 -39
- package/esm2022/lib/components/form/editor/form-editor.component.mjs +14 -16
- package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +6 -6
- package/esm2022/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
- package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +3 -3
- package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
- package/esm2022/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +5 -5
- package/esm2022/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +5 -6
- package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +10 -13
- package/esm2022/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
- package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +13 -13
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +26 -15
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +14 -14
- package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +5 -6
- package/esm2022/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +5 -6
- package/esm2022/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +39 -18
- package/esm2022/lib/components/layout/breadcrumb.component.mjs +4 -4
- package/esm2022/lib/components/layout/footer.component.mjs +4 -4
- package/esm2022/lib/components/layout/main-layout.component.mjs +8 -8
- package/esm2022/lib/components/layout/menu-item.component.mjs +8 -8
- package/esm2022/lib/components/layout/menu.component.mjs +7 -7
- package/esm2022/lib/components/layout/services/main-layout.component.service.mjs +4 -4
- package/esm2022/lib/components/layout/topbar-user.component.mjs +9 -9
- package/esm2022/lib/components/layout/topbar.component.mjs +8 -8
- package/esm2022/lib/components/layout/version.component.mjs +11 -11
- package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +6 -6
- package/esm2022/lib/components/layoutV2/footer.component.mjs +3 -3
- package/esm2022/lib/components/layoutV2/main-layout.component.mjs +14 -11
- package/esm2022/lib/components/layoutV2/menu-item.component.mjs +12 -9
- package/esm2022/lib/components/layoutV2/menu.component.mjs +5 -6
- package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +1 -1
- package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +30 -21
- package/esm2022/lib/components/layoutV2/services/menu.service.mjs +3 -3
- package/esm2022/lib/components/layoutV2/sidebar.component.mjs +18 -9
- package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +6 -6
- package/esm2022/lib/components/layoutV2/topbar.component.mjs +6 -7
- package/esm2022/lib/components/layoutV2/version.component.mjs +11 -11
- package/esm2022/lib/components/pages/error/error.page.component.mjs +4 -4
- package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +4 -4
- package/esm2022/lib/components/tableview/index.mjs +1 -2
- package/esm2022/lib/components/tableview/models/table.event.mjs +1 -1
- package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +18 -18
- package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +5 -5
- package/esm2022/lib/components/tableview/table/column-filter-full/column-filter-full.component.mjs +8 -12
- package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +9 -32
- package/esm2022/lib/components/tableview/table/table.component.mjs +20 -25
- package/esm2022/lib/components/tableview/tableview.component.mjs +8 -10
- package/esm2022/lib/data-providers/base.data-provider.mjs +43 -12
- package/esm2022/lib/data-providers/editor.data-provider.mjs +82 -14
- package/esm2022/lib/data-providers/lookup.data-provider.mjs +38 -9
- package/esm2022/lib/data-providers/table.data-provider.mjs +41 -14
- package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +14 -6
- package/esm2022/lib/data-providers/tableview.data-provider.mjs +89 -29
- package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +2 -2
- package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +262 -0
- package/esm2022/lib/descriptors/action/action-link.descriptor.mjs +90 -0
- package/esm2022/lib/descriptors/action/action.descriptor.mjs +91 -352
- package/esm2022/lib/descriptors/action/index.mjs +3 -1
- package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +215 -102
- package/esm2022/lib/descriptors/editor/field-action.descriptor.mjs +50 -0
- package/esm2022/lib/descriptors/editor/field-base.descriptor.mjs +293 -0
- package/esm2022/lib/descriptors/editor/field-group.descriptor.mjs +97 -0
- package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +211 -0
- package/esm2022/lib/descriptors/editor/field-many.descriptor.mjs +153 -0
- package/esm2022/lib/descriptors/editor/field.descriptor.mjs +81 -852
- package/esm2022/lib/descriptors/editor/index.mjs +6 -1
- package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +2 -0
- package/esm2022/lib/descriptors/editor/internal/editor.model.mjs +2 -0
- package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +210 -0
- package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +2 -208
- package/esm2022/lib/descriptors/filter/index.mjs +2 -1
- package/esm2022/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
- package/esm2022/lib/descriptors/model/index.mjs +2 -0
- package/esm2022/lib/descriptors/model/model.descriptor.mjs +70 -0
- package/esm2022/lib/descriptors/table/column.descriptor.mjs +38 -49
- package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +2 -0
- package/esm2022/lib/descriptors/table/internal/table.model.mjs +2 -0
- package/esm2022/lib/descriptors/table/table.descriptor.mjs +143 -124
- package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +2 -0
- package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +240 -131
- package/esm2022/lib/directives/component.directive.mjs +11 -11
- package/esm2022/lib/directives/dialog-keydown-handler.directive.mjs +3 -3
- package/esm2022/lib/directives/template.directive.mjs +9 -9
- package/esm2022/lib/helpers/coercion.mjs +45 -0
- package/esm2022/lib/models/class.model.mjs +2 -0
- package/esm2022/lib/models/enum.model.mjs +1 -1
- package/esm2022/lib/models/index.mjs +4 -1
- package/esm2022/lib/models/radio.model.mjs +2 -0
- package/esm2022/lib/models/tableview-attr.model.mjs +1 -1
- package/esm2022/lib/models/type-registry.model.mjs +2 -0
- package/esm2022/lib/models/view-container.model.mjs +1 -1
- package/esm2022/lib/pipes/boolean.pipe.mjs +3 -3
- package/esm2022/lib/pipes/class-map.pipe.mjs +3 -3
- package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
- package/esm2022/lib/pipes/enumerate-async.pipe.mjs +5 -5
- package/esm2022/lib/pipes/enumerate.pipe.mjs +5 -5
- package/esm2022/lib/pipes/getter.pipe.mjs +5 -5
- package/esm2022/lib/pipes/i18n-property.pipe.mjs +4 -4
- package/esm2022/lib/pipes/json-path.pipe.mjs +3 -3
- package/esm2022/lib/pipes/locale-default-row-class.pipe.mjs +5 -5
- package/esm2022/lib/pipes/parametrize.pipe.mjs +3 -3
- package/esm2022/lib/pipes/template.pipe.mjs +4 -4
- package/esm2022/lib/provide-commons.mjs +4 -4
- package/esm2022/lib/registry/type.registry.mjs +114 -0
- package/esm2022/lib/router/models/router.model.mjs +1 -1
- package/esm2022/lib/router/tableview-route-builder.mjs +5 -5
- package/esm2022/lib/security/authorization.service.mjs +9 -11
- package/esm2022/lib/services/action-executor.service.mjs +14 -12
- package/esm2022/lib/services/commons-init.service.mjs +3 -3
- package/esm2022/lib/services/commons.service.mjs +6 -5
- package/esm2022/lib/services/mng-localstorage-config.service.mjs +4 -4
- package/esm2022/lib/services/navigation.service.mjs +5 -5
- package/esm2022/lib/services/router.service.mjs +4 -4
- package/esm2022/lib/services/version.service.mjs +5 -5
- package/esm2022/lib/services/view-container.component.service.mjs +5 -5
- package/esm2022/lib/styles/styles.util.mjs +1 -1
- package/esm2022/lib/types/action-descriptor.types.mjs +2 -0
- package/esm2022/lib/types/data-provider.types.mjs +2 -0
- package/esm2022/lib/types/getter.type.mjs +2 -0
- package/esm2022/lib/types/index.mjs +5 -2
- package/esm2022/lib/types/localstorage-config-value.type.mjs +2 -0
- package/esm2022/lib/types/type.decorator.mjs +4 -14
- package/esm2022/lib/types/type.model.mjs +1 -1
- package/esm2022/lib/utils/action-data-provider.util.mjs +14 -8
- package/esm2022/lib/utils/decorator-metadata.util.mjs +61 -0
- package/esm2022/lib/utils/editor-formly.util.mjs +6 -5
- package/esm2022/lib/utils/enum.util.mjs +1 -1
- package/esm2022/lib/utils/export.util.mjs +5 -4
- package/esm2022/lib/utils/i18n.util.mjs +22 -22
- package/esm2022/lib/utils/index.mjs +2 -3
- package/esm2022/lib/utils/model.util.mjs +40 -36
- package/esm2022/lib/utils/notification.util.mjs +1 -1
- package/esm2022/lib/utils/tableview.util.mjs +17 -17
- package/fesm2022/mediusinc-mng-commons.mjs +11491 -11384
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/index.d.ts +3 -2
- package/lib/api/models/filter-param.model.d.ts +3 -3
- package/lib/api/models/index.d.ts +0 -2
- package/lib/api/models/query-param.model.d.ts +3 -3
- package/lib/api/models/query-result.model.d.ts +3 -3
- package/lib/api/services/api.abstract.service.d.ts +1 -1
- package/lib/api/utils/index.d.ts +1 -1
- package/lib/api/utils/object-serializer.util.d.ts +3 -19
- package/lib/components/action/action.component.d.ts +5 -5
- package/lib/components/action/editor/action-editor.component.d.ts +7 -7
- package/lib/components/action/localization/data-language-dropdown.component.d.ts +6 -6
- package/lib/components/action/models/action-component.model.d.ts +4 -4
- package/lib/components/action/models/action-confirmation-service.model.d.ts +2 -2
- package/lib/components/action/models/action-execution.model.d.ts +14 -14
- package/lib/components/action/route/action-route.component.d.ts +2 -2
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +15 -18
- package/lib/components/form/dropdown/dropdown.component.d.ts +9 -9
- package/lib/components/form/editor/form-editor.component.d.ts +8 -11
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +4 -0
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +4 -4
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +3 -2
- package/lib/components/layout/topbar-user.component.d.ts +2 -2
- package/lib/components/layout/version.component.d.ts +2 -2
- package/lib/components/layoutV2/model/layout-state.model.d.ts +8 -9
- package/lib/components/layoutV2/services/main-layout.component.service.d.ts +1 -1
- package/lib/components/layoutV2/version.component.d.ts +2 -2
- package/lib/components/tableview/index.d.ts +0 -1
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
- package/lib/components/tableview/route/tableview-route.component.d.ts +7 -7
- package/lib/components/tableview/table/table.component.d.ts +9 -9
- package/lib/components/tableview/tableview.component.d.ts +8 -8
- package/lib/data-providers/base.data-provider.d.ts +30 -12
- package/lib/data-providers/editor.data-provider.d.ts +86 -23
- package/lib/data-providers/lookup.data-provider.d.ts +24 -11
- package/lib/data-providers/table.data-provider.d.ts +30 -17
- package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -4
- package/lib/data-providers/tableview.data-provider.d.ts +41 -29
- package/lib/descriptors/action/action-confirmation.descriptor.d.ts +3 -3
- package/lib/descriptors/action/action-editor.descriptor.d.ts +115 -0
- package/lib/descriptors/action/action-link.descriptor.d.ts +34 -0
- package/lib/descriptors/action/action.descriptor.d.ts +74 -160
- package/lib/descriptors/action/index.d.ts +2 -0
- package/lib/descriptors/editor/editor.descriptor.d.ts +131 -79
- package/lib/descriptors/editor/field-action.descriptor.d.ts +23 -0
- package/lib/descriptors/editor/field-base.descriptor.d.ts +126 -0
- package/lib/descriptors/editor/field-group.descriptor.d.ts +42 -0
- package/lib/descriptors/editor/field-lookup.descriptor.d.ts +80 -0
- package/lib/descriptors/editor/field-many.descriptor.d.ts +63 -0
- package/lib/descriptors/editor/field.descriptor.d.ts +100 -326
- package/lib/descriptors/editor/index.d.ts +5 -0
- package/lib/descriptors/editor/internal/editor-fields.model.d.ts +32 -0
- package/lib/descriptors/editor/internal/editor.model.d.ts +15 -0
- package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +69 -0
- package/lib/descriptors/filter/filter.descriptor.d.ts +9 -67
- package/lib/descriptors/filter/index.d.ts +1 -0
- package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +11 -16
- package/lib/descriptors/model/model.descriptor.d.ts +22 -0
- package/lib/descriptors/table/column.descriptor.d.ts +45 -33
- package/lib/descriptors/table/internal/table-columns.model.d.ts +11 -0
- package/lib/descriptors/table/internal/table.model.d.ts +9 -0
- package/lib/descriptors/table/table.descriptor.d.ts +82 -71
- package/lib/descriptors/tableview/internal/tableview.model.d.ts +11 -0
- package/lib/descriptors/tableview/tableview.descriptor.d.ts +106 -74
- package/lib/directives/component.directive.d.ts +5 -6
- package/lib/directives/template.directive.d.ts +2 -3
- package/lib/helpers/coercion.d.ts +9 -0
- package/lib/models/class.model.d.ts +6 -0
- package/lib/models/enum.model.d.ts +3 -2
- package/lib/models/index.d.ts +3 -0
- package/lib/models/radio.model.d.ts +6 -0
- package/lib/models/tableview-attr.model.d.ts +2 -2
- package/lib/models/type-registry.model.d.ts +7 -0
- package/lib/models/view-container.model.d.ts +6 -6
- package/lib/pipes/getter.pipe.d.ts +2 -1
- package/lib/pipes/i18n-property.pipe.d.ts +1 -1
- package/lib/pipes/locale-default-row-class.pipe.d.ts +2 -2
- package/lib/registry/type.registry.d.ts +25 -0
- package/lib/router/models/router.model.d.ts +5 -5
- package/lib/router/tableview-route-builder.d.ts +6 -6
- package/lib/security/authorization.service.d.ts +4 -7
- package/lib/services/action-executor.service.d.ts +7 -7
- package/lib/services/mng-localstorage-config.service.d.ts +3 -3
- package/lib/services/view-container.component.service.d.ts +3 -3
- package/lib/styles/styles.util.d.ts +5 -5
- package/lib/types/action-descriptor.types.d.ts +4 -0
- package/lib/types/data-provider.types.d.ts +3 -0
- package/lib/types/getter.type.d.ts +2 -0
- package/lib/types/index.d.ts +4 -1
- package/lib/types/localstorage-config-value.type.d.ts +1 -0
- package/lib/types/type.decorator.d.ts +0 -2
- package/lib/types/type.model.d.ts +12 -2
- package/lib/utils/action-data-provider.util.d.ts +6 -5
- package/lib/utils/{type.util.d.ts → decorator-metadata.util.d.ts} +2 -26
- package/lib/utils/editor-formly.util.d.ts +2 -2
- package/lib/utils/enum.util.d.ts +2 -2
- package/lib/utils/export.util.d.ts +2 -2
- package/lib/utils/i18n.util.d.ts +10 -11
- package/lib/utils/index.d.ts +1 -2
- package/lib/utils/model.util.d.ts +5 -3
- package/lib/utils/notification.util.d.ts +4 -4
- package/lib/utils/tableview.util.d.ts +6 -6
- package/openapi/templates/model.mustache +15 -2
- package/openapi/templates/models.mustache +0 -44
- package/package.json +10 -10
- package/scss/mng-commons-dark-v2.scss +2 -2
- package/scss/mng-commons-light-v2.scss +1 -1
- package/scss/v2/theme/{theme-base/components/data → extensions}/_fullcalendar.scss +14 -15
- package/scss/v2/theme/theme-base/_colors.scss +11 -12
- package/scss/v2/theme/theme-base/_common.scss +8 -5
- package/scss/v2/theme/theme-base/_components.scss +93 -89
- package/scss/v2/theme/theme-base/_mixins.scss +205 -71
- package/scss/v2/theme/theme-base/components/button/_button.scss +80 -68
- package/scss/v2/theme/theme-base/components/button/_speeddial.scss +11 -1
- package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +128 -161
- package/scss/v2/theme/theme-base/components/data/_carousel.scss +1 -1
- package/scss/v2/theme/theme-base/components/data/_datatable.scss +3 -3
- package/scss/v2/theme/theme-base/components/data/_dataview.scss +0 -9
- package/scss/v2/theme/theme-base/components/data/_filter.scss +5 -6
- package/scss/v2/theme/theme-base/components/data/_orderlist.scss +15 -4
- package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +1 -1
- package/scss/v2/theme/theme-base/components/data/_picklist.scss +14 -3
- package/scss/v2/theme/theme-base/components/data/_timeline.scss +3 -6
- package/scss/v2/theme/theme-base/components/data/_tree.scss +7 -6
- package/scss/v2/theme/theme-base/components/data/_treetable.scss +3 -4
- package/scss/v2/theme/theme-base/components/file/_fileupload.scss +6 -0
- package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +43 -24
- package/scss/v2/theme/theme-base/components/input/_calendar.scss +9 -5
- package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +25 -20
- package/scss/v2/theme/theme-base/components/input/_checkbox.scss +9 -5
- package/scss/v2/theme/theme-base/components/input/_chips.scss +24 -13
- package/scss/v2/theme/theme-base/components/input/_dropdown.scss +29 -13
- package/scss/v2/theme/theme-base/components/input/_editor.scss +7 -7
- package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +1 -2
- package/scss/v2/theme/theme-base/components/input/_inputmask.scss +2 -2
- package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +7 -7
- package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +3 -3
- package/scss/v2/theme/theme-base/components/input/_inputtext.scss +4 -3
- package/scss/v2/theme/theme-base/components/input/_listbox.scss +23 -8
- package/scss/v2/theme/theme-base/components/input/_multiselect.scss +31 -27
- package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +2 -2
- package/scss/v2/theme/theme-base/components/input/_rating.scss +33 -28
- package/scss/v2/theme/theme-base/components/input/_treeselect.scss +6 -6
- package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +3 -3
- package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +8 -30
- package/scss/v2/theme/theme-base/components/menu/_dock.scss +11 -2
- package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +14 -65
- package/scss/v2/theme/theme-base/components/menu/_menu.scss +5 -13
- package/scss/v2/theme/theme-base/components/menu/_menubar.scss +32 -80
- package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +52 -39
- package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +15 -20
- package/scss/v2/theme/theme-base/components/menu/_steps.scss +2 -2
- package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +1 -2
- package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +10 -32
- package/scss/v2/theme/theme-base/components/messages/_message.scss +2 -2
- package/scss/v2/theme/theme-base/components/messages/_toast.scss +2 -3
- package/scss/v2/theme/theme-base/components/misc/_chip.scss +7 -3
- package/scss/v2/theme/theme-base/components/misc/_inplace.scss +0 -1
- package/scss/v2/theme/theme-base/components/misc/_terminal.scss +9 -8
- package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +6 -0
- package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +3 -5
- package/scss/v2/theme/theme-base/components/panel/_accordion.scss +4 -4
- package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +1 -1
- package/scss/v2/theme/theme-base/components/panel/_panel.scss +10 -5
- package/scss/v2/theme/theme-base/components/panel/_tabview.scss +6 -2
- package/scss/v2/theme/theme-dark/_variables.scss +756 -765
- package/scss/v2/theme/theme-dark/blue/theme.scss +1 -0
- package/scss/v2/theme/theme-light/_variables.scss +81 -94
- package/scss/v2/theme/theme-light/blue/theme.scss +1 -0
- package/esm2022/lib/api/models/mappers.mjs +0 -13
- package/esm2022/lib/api/models/serialization.model.mjs +0 -2
- package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -121
- package/esm2022/lib/descriptors/index.mjs +0 -2
- package/esm2022/lib/descriptors/model.descriptor.mjs +0 -45
- package/esm2022/lib/mng-commons.module.mjs +0 -472
- package/esm2022/lib/types/mng-localstorage-config-value.type.mjs +0 -2
- package/esm2022/lib/utils/coercion.util.mjs +0 -6
- package/esm2022/lib/utils/type.util.mjs +0 -94
- package/lib/api/models/mappers.d.ts +0 -6
- package/lib/api/models/serialization.model.d.ts +0 -9
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +0 -37
- package/lib/descriptors/model.descriptor.d.ts +0 -18
- package/lib/mng-commons.module.d.ts +0 -105
- package/lib/types/mng-localstorage-config-value.type.d.ts +0 -1
- package/lib/utils/coercion.util.d.ts +0 -2
- package/openapi/templates/serializer-registration/model.mustache +0 -97
- package/openapi/templates/serializer-registration/models.mustache +0 -6
- /package/lib/descriptors/{index.d.ts → model/index.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CurrencyPipe, DatePipe, DecimalPipe
|
|
1
|
+
import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
|
|
2
2
|
import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input } from '@angular/core';
|
|
3
3
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
4
4
|
import { MessageService } from 'primeng/api';
|
|
@@ -38,7 +38,7 @@ export class MngTableColumnValueComponent {
|
|
|
38
38
|
}
|
|
39
39
|
ngOnInit() {
|
|
40
40
|
if (this.descriptor.columnDisplayType === ColumnDisplayTypeEnum.Currency) {
|
|
41
|
-
this.currency = this.descriptor.
|
|
41
|
+
this.currency = this.descriptor.currencyProperty ? this.item[this.descriptor.currencyProperty] : this.descriptor.currencyCode ?? 'EUR';
|
|
42
42
|
}
|
|
43
43
|
else if (this.descriptor.columnDisplayType === ColumnDisplayTypeEnum.String) {
|
|
44
44
|
if (this.descriptor.isMultiline) {
|
|
@@ -48,16 +48,7 @@ export class MngTableColumnValueComponent {
|
|
|
48
48
|
if (this.descriptor.maxWidth) {
|
|
49
49
|
this.styleMaxWidth = this.descriptor.maxWidth;
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
this.jsonPath = this.descriptor.jsonPath;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.jsonPath = `$.${this.descriptor.property}`;
|
|
56
|
-
if (this.descriptor.objectModelType) {
|
|
57
|
-
this.jsonPath = `$.${this.descriptor.property}.${this.descriptor.objectTitleProperty}`;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
let value = this.jsonPathPipe.transform(this.item, this.jsonPath);
|
|
51
|
+
let value = this.item?.[this.descriptor.property];
|
|
61
52
|
if (typeof this.descriptor.getter === 'function') {
|
|
62
53
|
value = this.getterPipe.transform(this.item, this.descriptor.getter, value);
|
|
63
54
|
}
|
|
@@ -74,27 +65,13 @@ export class MngTableColumnValueComponent {
|
|
|
74
65
|
const message = this.translate.instant('mngTable.copyNotificationMessage', { value });
|
|
75
66
|
this.messageService.add({ severity: 'info', summary: title, detail: message });
|
|
76
67
|
}
|
|
77
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngTableColumnValueComponent, deps: [{ token: i0.ElementRef }, { token: i1.MessageService }, { token: i2.TranslateService }, { token: i3.JsonPathPipe }, { token: i3.MngGetterPipe }, { token: i3.MngTemplatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
69
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: MngTableColumnValueComponent, isStandalone: true, selector: "mng-table-column-value", inputs: { descriptor: "descriptor", item: "item" }, host: { properties: { "style.max-width.px": "this.styleMaxWidth", "class": "this.className" } }, ngImport: i0, template: "@if (descriptor.localizationExistsProperty && !item[descriptor.localizationExistsProperty]) {\n <i class=\"pi pi-exclamation-circle\" [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n}\n@switch (descriptor.columnDisplayType) {\n @case (columnDisplayTypeString) {\n @if (descriptor.hasValueAsTooltip) {\n <span [pTooltip]=\"value\" tooltipPosition=\"left\">{{ value }}</span>\n } @else {\n {{ value }}\n }\n }\n @case (columnDisplayTypeHtml) {\n <span [innerHTML]=\"value\"></span>\n }\n @case (columnDisplayTypeNumber) {\n {{ value | number: descriptor.displayFormat : descriptor.locale }}\n }\n @case (columnDisplayTypeCurrency) {\n {{ value | currency: currency : descriptor.currencyDisplay : descriptor.displayFormat : descriptor.locale }}\n }\n @case (columnDisplayTypeDate) {\n {{ value | date: descriptor.displayFormat }}\n }\n @case (columnDisplayTypeBoolean) {\n @if (descriptor.booleanAsIcon) {\n <i [class]=\"value | boolean: descriptor.booleanYes : descriptor.booleanNo : true\"></i>\n } @else {\n {{ value | boolean: descriptor.booleanYes : descriptor.booleanNo | translate }}\n }\n }\n @case (columnDisplayTypeEnum) {\n {{ value | enum: descriptor.enumType : descriptor.enumTitlePath : descriptor.enumNameAsValue | translate }}\n }\n @case (columnDisplayTypeComponent) {\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: value,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n }\n}\n@if (descriptor.hasCopyToClipboard) {\n <div class=\"help-buttons\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n </div>\n}\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host.multiline{white-space:pre-wrap;word-wrap:break-word}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: MngBooleanPipe, name: "boolean" }, { kind: "pipe", type: MngEnumPipe, name: "enum" }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs", "attachToHost"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
79
70
|
}
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngTableColumnValueComponent, decorators: [{
|
|
81
72
|
type: Component,
|
|
82
|
-
args: [{ standalone: true, selector: 'mng-table-column-value', imports: [
|
|
83
|
-
|
|
84
|
-
NgIf,
|
|
85
|
-
TooltipModule,
|
|
86
|
-
TranslateModule,
|
|
87
|
-
NgSwitchCase,
|
|
88
|
-
DecimalPipe,
|
|
89
|
-
CurrencyPipe,
|
|
90
|
-
DatePipe,
|
|
91
|
-
MngBooleanPipe,
|
|
92
|
-
MngEnumPipe,
|
|
93
|
-
MngComponentDirective,
|
|
94
|
-
ButtonModule,
|
|
95
|
-
RippleModule
|
|
96
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"descriptor.columnDisplayType\">\n <i\n *ngIf=\"descriptor.localizationExistsProperty && !item[descriptor.localizationExistsProperty]\"\n class=\"pi pi-exclamation-circle\"\n [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n <ng-container *ngSwitchCase=\"columnDisplayTypeString\">\n <span *ngIf=\"descriptor.hasValueAsTooltip\" [pTooltip]=\"value\" tooltipPosition=\"left\">{{ value }}</span>\n <ng-container *ngIf=\"!descriptor.hasValueAsTooltip\">{{ value }}</ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeHtml\">\n <span [innerHTML]=\"value\"></span>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeNumber\">\n {{ value | number : descriptor.displayFormat : descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeCurrency\">\n {{ value | currency : currency : descriptor.currencyDisplay : descriptor.displayFormat : descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeDate\">\n {{ value | date : descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\">\n <i [class]=\"value | boolean : descriptor.booleanYes : descriptor.booleanNo : true\"></i>\n </ng-container>\n <ng-template #booleanText>\n {{ value | boolean : descriptor.booleanYes : descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeEnum\">\n {{ value | enum : descriptor.enumType : descriptor.enumTitlePath : descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeComponent\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: value,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host.multiline{white-space:pre-wrap;word-wrap:break-word}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"] }]
|
|
97
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MessageService }, { type: i2.TranslateService }, { type: i3.JsonPathPipe }, { type: i3.MngGetterPipe }, { type: i3.MngTemplatePipe }]; }, propDecorators: { descriptor: [{
|
|
73
|
+
args: [{ standalone: true, selector: 'mng-table-column-value', imports: [TooltipModule, TranslateModule, MngBooleanPipe, MngEnumPipe, MngComponentDirective, ButtonModule, RippleModule, DecimalPipe, CurrencyPipe, DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (descriptor.localizationExistsProperty && !item[descriptor.localizationExistsProperty]) {\n <i class=\"pi pi-exclamation-circle\" [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n}\n@switch (descriptor.columnDisplayType) {\n @case (columnDisplayTypeString) {\n @if (descriptor.hasValueAsTooltip) {\n <span [pTooltip]=\"value\" tooltipPosition=\"left\">{{ value }}</span>\n } @else {\n {{ value }}\n }\n }\n @case (columnDisplayTypeHtml) {\n <span [innerHTML]=\"value\"></span>\n }\n @case (columnDisplayTypeNumber) {\n {{ value | number: descriptor.displayFormat : descriptor.locale }}\n }\n @case (columnDisplayTypeCurrency) {\n {{ value | currency: currency : descriptor.currencyDisplay : descriptor.displayFormat : descriptor.locale }}\n }\n @case (columnDisplayTypeDate) {\n {{ value | date: descriptor.displayFormat }}\n }\n @case (columnDisplayTypeBoolean) {\n @if (descriptor.booleanAsIcon) {\n <i [class]=\"value | boolean: descriptor.booleanYes : descriptor.booleanNo : true\"></i>\n } @else {\n {{ value | boolean: descriptor.booleanYes : descriptor.booleanNo | translate }}\n }\n }\n @case (columnDisplayTypeEnum) {\n {{ value | enum: descriptor.enumType : descriptor.enumTitlePath : descriptor.enumNameAsValue | translate }}\n }\n @case (columnDisplayTypeComponent) {\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: value,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n }\n}\n@if (descriptor.hasCopyToClipboard) {\n <div class=\"help-buttons\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n </div>\n}\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host.multiline{white-space:pre-wrap;word-wrap:break-word}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"] }]
|
|
74
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MessageService }, { type: i2.TranslateService }, { type: i3.JsonPathPipe }, { type: i3.MngGetterPipe }, { type: i3.MngTemplatePipe }], propDecorators: { descriptor: [{
|
|
98
75
|
type: Input,
|
|
99
76
|
args: [{ required: true }]
|
|
100
77
|
}], item: [{
|
|
@@ -107,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
107
84
|
type: HostBinding,
|
|
108
85
|
args: ['class']
|
|
109
86
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGUvY29sdW1uLXZhbHVlL2NvbHVtbi12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi12YWx1ZS9jb2x1bW4tdmFsdWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEcsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBQyxNQUFN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UTt3QkFDUixJQUFJO3dCQUNKLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixRQUFRO3dCQUNSLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLFlBQVk7d0JBQ1osWUFBWTtxQkFDZixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTtrUEFZdEIsVUFBVTtzQkFBbEMsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBQ0UsSUFBSTtzQkFBNUIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBRW1CLGFBQWE7c0JBQXRELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNKLFNBQVM7c0JBQXJDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q3VycmVuY3lQaXBlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1Rvb2x0aXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGUnO1xuaW1wb3J0IHtDb2x1bW5EaXNwbGF5VHlwZUVudW19IGZyb20gJy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nQ29tcG9uZW50RGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7SnNvblBhdGhQaXBlLCBNbmdCb29sZWFuUGlwZSwgTW5nRW51bVBpcGUsIE1uZ0dldHRlclBpcGUsIE1uZ1RlbXBsYXRlUGlwZX0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxlLWNvbHVtbi12YWx1ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgTmdJZixcbiAgICAgICAgVG9vbHRpcE1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBOZ1N3aXRjaENhc2UsXG4gICAgICAgIERlY2ltYWxQaXBlLFxuICAgICAgICBDdXJyZW5jeVBpcGUsXG4gICAgICAgIERhdGVQaXBlLFxuICAgICAgICBNbmdCb29sZWFuUGlwZSxcbiAgICAgICAgTW5nRW51bVBpcGUsXG4gICAgICAgIE1uZ0NvbXBvbmVudERpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uTW9kdWxlLFxuICAgICAgICBSaXBwbGVNb2R1bGVcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ1RhYmxlQ29sdW1uVmFsdWVDb21wb25lbnQ8VCwgVFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVTdHJpbmc6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5TdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlTnVtYmVyOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uTnVtYmVyO1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5EaXNwbGF5VHlwZUN1cnJlbmN5OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlQm9vbGVhbjogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkJvb2xlYW47XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlRGF0ZTogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkRhdGU7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlRW51bTogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkVudW07XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlQ29tcG9uZW50OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ29tcG9uZW50O1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5EaXNwbGF5VHlwZUh0bWw6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5IdG1sO1xuXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIGRlc2NyaXB0b3IhOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPjtcbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgaXRlbSE6IGFueTtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoLnB4JykgcHVibGljIHN0eWxlTWF4V2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgY2xhc3NOYW1lID0gJ25vd3JhcCc7XG5cbiAgICBwdWJsaWMgY3VycmVuY3k/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMganNvblBhdGggPSAnJCc7XG5cbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBqc29uUGF0aFBpcGU6IEpzb25QYXRoUGlwZSxcbiAgICAgICAgcHJpdmF0ZSBnZXR0ZXJQaXBlOiBNbmdHZXR0ZXJQaXBlLFxuICAgICAgICBwcml2YXRlIHRlbXBsYXRlUGlwZTogTW5nVGVtcGxhdGVQaXBlXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmNvbHVtbkRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSB0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lGcm9tUHJvcGVydHkgPyB0aGlzLml0ZW1bdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5RnJvbVByb3BlcnR5XSA6IHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUNvZGUgPz8gJ0VVUic7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kZXNjcmlwdG9yLmNvbHVtbkRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uU3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmlzTXVsdGlsaW5lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgKz0gJyBtdWx0aWxpbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5tYXhXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZU1heFdpZHRoID0gdGhpcy5kZXNjcmlwdG9yLm1heFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5qc29uUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5qc29uUGF0aCA9IHRoaXMuZGVzY3JpcHRvci5qc29uUGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuanNvblBhdGggPSBgJC4ke3RoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eX1gO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5vYmplY3RNb2RlbFR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmpzb25QYXRoID0gYCQuJHt0aGlzLmRlc2NyaXB0b3IucHJvcGVydHl9LiR7dGhpcy5kZXNjcmlwdG9yLm9iamVjdFRpdGxlUHJvcGVydHl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuanNvblBhdGhQaXBlLnRyYW5zZm9ybSh0aGlzLml0ZW0sIHRoaXMuanNvblBhdGgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdG9yLmdldHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldHRlclBpcGUudHJhbnNmb3JtKHRoaXMuaXRlbSwgdGhpcy5kZXNjcmlwdG9yLmdldHRlciwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IudGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy50ZW1wbGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCB0aGlzLmRlc2NyaXB0b3IudGVtcGxhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbHVlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdtbmdUYWJsZS5jb3B5Tm90aWZpY2F0aW9uVGl0bGUnKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ21uZ1RhYmxlLmNvcHlOb3RpZmljYXRpb25NZXNzYWdlJywge3ZhbHVlfSk7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiB0aXRsZSwgZGV0YWlsOiBtZXNzYWdlfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZGVzY3JpcHRvci5jb2x1bW5EaXNwbGF5VHlwZVwiPlxuICAgIDxpXG4gICAgICAgICpuZ0lmPVwiZGVzY3JpcHRvci5sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSAmJiAhaXRlbVtkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5XVwiXG4gICAgICAgIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlXCJcbiAgICAgICAgW3BUb29sdGlwXT1cIidtbmdUYWJsZS50cmFuc2xhdGlvbk1pc3NpbmcnIHwgdHJhbnNsYXRlXCI+PC9pPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbkRpc3BsYXlUeXBlU3RyaW5nXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGVzY3JpcHRvci5oYXNWYWx1ZUFzVG9vbHRpcFwiIFtwVG9vbHRpcF09XCJ2YWx1ZVwiIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIj57eyB2YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZXNjcmlwdG9yLmhhc1ZhbHVlQXNUb29sdGlwXCI+e3sgdmFsdWUgfX08L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5EaXNwbGF5VHlwZUh0bWxcIj5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ2YWx1ZVwiPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5EaXNwbGF5VHlwZU51bWJlclwiPlxuICAgICAgICB7eyB2YWx1ZSB8IG51bWJlciA6IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA6IGRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uRGlzcGxheVR5cGVDdXJyZW5jeVwiPlxuICAgICAgICB7eyB2YWx1ZSB8IGN1cnJlbmN5IDogY3VycmVuY3kgOiBkZXNjcmlwdG9yLmN1cnJlbmN5RGlzcGxheSA6IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA6IGRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uRGlzcGxheVR5cGVEYXRlXCI+XG4gICAgICAgIHt7IHZhbHVlIHwgZGF0ZSA6IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbkRpc3BsYXlUeXBlQm9vbGVhblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGVzY3JpcHRvci5ib29sZWFuQXNJY29uOyBlbHNlIGJvb2xlYW5UZXh0XCI+XG4gICAgICAgICAgICA8aSBbY2xhc3NdPVwidmFsdWUgfCBib29sZWFuIDogZGVzY3JpcHRvci5ib29sZWFuWWVzIDogZGVzY3JpcHRvci5ib29sZWFuTm8gOiB0cnVlXCI+PC9pPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNib29sZWFuVGV4dD5cbiAgICAgICAgICAgIHt7IHZhbHVlIHwgYm9vbGVhbiA6IGRlc2NyaXB0b3IuYm9vbGVhblllcyA6IGRlc2NyaXB0b3IuYm9vbGVhbk5vIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uRGlzcGxheVR5cGVFbnVtXCI+XG4gICAgICAgIHt7IHZhbHVlIHwgZW51bSA6IGRlc2NyaXB0b3IuZW51bVR5cGUgOiBkZXNjcmlwdG9yLmVudW1UaXRsZVBhdGggOiBkZXNjcmlwdG9yLmVudW1OYW1lQXNWYWx1ZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbkRpc3BsYXlUeXBlQ29tcG9uZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwiZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnRUeXBlIVwiXG4gICAgICAgICAgICBbaW5wdXRzXT1cIntcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yXG4gICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxkaXYgY2xhc3M9XCJoZWxwLWJ1dHRvbnNcIiAqbmdJZj1cImRlc2NyaXB0b3IuaGFzQ29weVRvQ2xpcGJvYXJkXCI+XG4gICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1jb3B5XCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLWluZm8gcC1idXR0b24tc21cIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKCRldmVudClcIj48L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGUvY29sdW1uLXZhbHVlL2NvbHVtbi12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi12YWx1ZS9jb2x1bW4tdmFsdWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQVU1RyxNQUFN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Q3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7OEdBOURRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHVPQ3RCekMsODdEQWdEQSw0V0Q3QmMsYUFBYSxxWEFBRSxlQUFlLHVGQUFFLGNBQWMsMkNBQUUsV0FBVyw2Q0FBRSxxQkFBcUIsNElBQUUsWUFBWSxzS0FBRSxZQUFZLHlGQUFFLFdBQVcsMENBQUUsWUFBWSw0Q0FBRSxRQUFROzsyRkFHcEosNEJBQTRCO2tCQVJ4QyxTQUFTO2lDQUNNLElBQUksWUFDTix3QkFBd0IsV0FHekIsQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxtQkFDN0ksdUJBQXVCLENBQUMsTUFBTTtnT0FZdEIsVUFBVTtzQkFBbEMsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBQ0UsSUFBSTtzQkFBNUIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBRW1CLGFBQWE7c0JBQXRELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNKLFNBQVM7c0JBQXJDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q3VycmVuY3lQaXBlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1Rvb2x0aXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGUnO1xuaW1wb3J0IHtDb2x1bW5EaXNwbGF5VHlwZUVudW19IGZyb20gJy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nQ29tcG9uZW50RGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7SnNvblBhdGhQaXBlLCBNbmdCb29sZWFuUGlwZSwgTW5nRW51bVBpcGUsIE1uZ0dldHRlclBpcGUsIE1uZ1RlbXBsYXRlUGlwZX0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxlLWNvbHVtbi12YWx1ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1Rvb2x0aXBNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTW5nQm9vbGVhblBpcGUsIE1uZ0VudW1QaXBlLCBNbmdDb21wb25lbnREaXJlY3RpdmUsIEJ1dHRvbk1vZHVsZSwgUmlwcGxlTW9kdWxlLCBEZWNpbWFsUGlwZSwgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nVGFibGVDb2x1bW5WYWx1ZUNvbXBvbmVudDxULCBUVD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5EaXNwbGF5VHlwZVN0cmluZzogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLlN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVOdW1iZXI6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5OdW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlQ3VycmVuY3k6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5DdXJyZW5jeTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVCb29sZWFuOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVEYXRlOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRGF0ZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVFbnVtOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRW51bTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uRGlzcGxheVR5cGVDb21wb25lbnQ6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5Db21wb25lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtbkRpc3BsYXlUeXBlSHRtbDogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkh0bWw7XG5cbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgZGVzY3JpcHRvciE6IENvbHVtbkRlc2NyaXB0b3I8VCwgVFQ+O1xuICAgIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KSBpdGVtITogYW55O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgucHgnKSBwdWJsaWMgc3R5bGVNYXhXaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHB1YmxpYyBjbGFzc05hbWUgPSAnbm93cmFwJztcblxuICAgIHB1YmxpYyBjdXJyZW5jeT86IHN0cmluZztcblxuICAgIHB1YmxpYyBqc29uUGF0aCA9ICckJztcblxuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGpzb25QYXRoUGlwZTogSnNvblBhdGhQaXBlLFxuICAgICAgICBwcml2YXRlIGdldHRlclBpcGU6IE1uZ0dldHRlclBpcGUsXG4gICAgICAgIHByaXZhdGUgdGVtcGxhdGVQaXBlOiBNbmdUZW1wbGF0ZVBpcGVcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuY29sdW1uRGlzcGxheVR5cGUgPT09IENvbHVtbkRpc3BsYXlUeXBlRW51bS5DdXJyZW5jeSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeVByb3BlcnR5ID8gdGhpcy5pdGVtW3RoaXMuZGVzY3JpcHRvci5jdXJyZW5jeVByb3BlcnR5XSA6IHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUNvZGUgPz8gJ0VVUic7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kZXNjcmlwdG9yLmNvbHVtbkRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uU3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmlzTXVsdGlsaW5lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgKz0gJyBtdWx0aWxpbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5tYXhXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZU1heFdpZHRoID0gdGhpcy5kZXNjcmlwdG9yLm1heFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5pdGVtPy5bdGhpcy5kZXNjcmlwdG9yLnByb3BlcnR5IGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdG9yLmdldHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldHRlclBpcGUudHJhbnNmb3JtKHRoaXMuaXRlbSwgdGhpcy5kZXNjcmlwdG9yLmdldHRlciwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IudGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy50ZW1wbGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCB0aGlzLmRlc2NyaXB0b3IudGVtcGxhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbHVlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdtbmdUYWJsZS5jb3B5Tm90aWZpY2F0aW9uVGl0bGUnKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ21uZ1RhYmxlLmNvcHlOb3RpZmljYXRpb25NZXNzYWdlJywge3ZhbHVlfSk7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiB0aXRsZSwgZGV0YWlsOiBtZXNzYWdlfSk7XG4gICAgfVxufVxuIiwiQGlmIChkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5ICYmICFpdGVtW2Rlc2NyaXB0b3IubG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHldKSB7XG4gICAgPGkgY2xhc3M9XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGVcIiBbcFRvb2x0aXBdPVwiJ21uZ1RhYmxlLnRyYW5zbGF0aW9uTWlzc2luZycgfCB0cmFuc2xhdGVcIj48L2k+XG59XG5Ac3dpdGNoIChkZXNjcmlwdG9yLmNvbHVtbkRpc3BsYXlUeXBlKSB7XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlU3RyaW5nKSB7XG4gICAgICAgIEBpZiAoZGVzY3JpcHRvci5oYXNWYWx1ZUFzVG9vbHRpcCkge1xuICAgICAgICAgICAgPHNwYW4gW3BUb29sdGlwXT1cInZhbHVlXCIgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiPnt7IHZhbHVlIH19PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIHt7IHZhbHVlIH19XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlSHRtbCkge1xuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInZhbHVlXCI+PC9zcGFuPlxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVOdW1iZXIpIHtcbiAgICAgICAge3sgdmFsdWUgfCBudW1iZXI6IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA6IGRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgfVxuICAgIEBjYXNlIChjb2x1bW5EaXNwbGF5VHlwZUN1cnJlbmN5KSB7XG4gICAgICAgIHt7IHZhbHVlIHwgY3VycmVuY3k6IGN1cnJlbmN5IDogZGVzY3JpcHRvci5jdXJyZW5jeURpc3BsYXkgOiBkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQgOiBkZXNjcmlwdG9yLmxvY2FsZSB9fVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVEYXRlKSB7XG4gICAgICAgIHt7IHZhbHVlIHwgZGF0ZTogZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0IH19XG4gICAgfVxuICAgIEBjYXNlIChjb2x1bW5EaXNwbGF5VHlwZUJvb2xlYW4pIHtcbiAgICAgICAgQGlmIChkZXNjcmlwdG9yLmJvb2xlYW5Bc0ljb24pIHtcbiAgICAgICAgICAgIDxpIFtjbGFzc109XCJ2YWx1ZSB8IGJvb2xlYW46IGRlc2NyaXB0b3IuYm9vbGVhblllcyA6IGRlc2NyaXB0b3IuYm9vbGVhbk5vIDogdHJ1ZVwiPjwvaT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7eyB2YWx1ZSB8IGJvb2xlYW46IGRlc2NyaXB0b3IuYm9vbGVhblllcyA6IGRlc2NyaXB0b3IuYm9vbGVhbk5vIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGNhc2UgKGNvbHVtbkRpc3BsYXlUeXBlRW51bSkge1xuICAgICAgICB7eyB2YWx1ZSB8IGVudW06IGRlc2NyaXB0b3IuZW51bVR5cGUgOiBkZXNjcmlwdG9yLmVudW1UaXRsZVBhdGggOiBkZXNjcmlwdG9yLmVudW1OYW1lQXNWYWx1ZSB8IHRyYW5zbGF0ZSB9fVxuICAgIH1cbiAgICBAY2FzZSAoY29sdW1uRGlzcGxheVR5cGVDb21wb25lbnQpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW21uZ0NvbXBvbmVudF09XCJkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudFR5cGUhXCJcbiAgICAgICAgICAgIFtpbnB1dHNdPVwie1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG59XG5AaWYgKGRlc2NyaXB0b3IuaGFzQ29weVRvQ2xpcGJvYXJkKSB7XG4gICAgPGRpdiBjbGFzcz1cImhlbHAtYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWNvcHlcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24taW5mbyBwLWJ1dHRvbi1zbVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoJGV2ZW50KVwiPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxufVxuIl19
|