@mediusinc/mng-commons 0.10.3-rc → 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 +102 -102
- 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 +150 -155
- 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 -10637
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +10489 -10486
- 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 +6 -6
- package/mediusinc-mng-commons-0.10.3-rc.tgz +0 -0
|
@@ -1,200 +1,200 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Optional, Output } from '@angular/core';
|
|
2
|
-
import { ConfirmationService } from 'primeng/api';
|
|
3
|
-
import { ReplaySubject, distinctUntilChanged, of } from 'rxjs';
|
|
4
|
-
import { ActionLinkDescriptor } from '../../descriptors';
|
|
5
|
-
import { ActionLevelEnum } from '../../descriptors/types';
|
|
6
|
-
import { Permissions } from '../../security/model';
|
|
7
|
-
import { I18nUtils } from '../../utils';
|
|
8
|
-
import { ActionParameters } from './models';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/router";
|
|
11
|
-
import * as i2 from "@ngx-translate/core";
|
|
12
|
-
import * as i3 from "../../security";
|
|
13
|
-
import * as i4 from "../../services";
|
|
14
|
-
import * as i5 from "primeng/api";
|
|
15
|
-
import * as i6 from "primeng/confirmdialog";
|
|
16
|
-
import * as i7 from "@angular/common";
|
|
17
|
-
import * as i8 from "primeng/button";
|
|
18
|
-
import * as i9 from "primeng/ripple";
|
|
19
|
-
import * as i10 from "primeng/tooltip";
|
|
20
|
-
import * as i11 from "../../pipes/link-formatter.pipe";
|
|
21
|
-
export class MngActionComponent {
|
|
22
|
-
constructor(route, translate, authorization, actionExecutor, confirmationService, viewContainerService) {
|
|
23
|
-
this.route = route;
|
|
24
|
-
this.translate = translate;
|
|
25
|
-
this.authorization = authorization;
|
|
26
|
-
this.actionExecutor = actionExecutor;
|
|
27
|
-
this.confirmationService = confirmationService;
|
|
28
|
-
this.viewContainerService = viewContainerService;
|
|
29
|
-
this.levelDefault = ActionLevelEnum.Default;
|
|
30
|
-
this.levelPrimary = ActionLevelEnum.Primary;
|
|
31
|
-
this.levelSecondary = ActionLevelEnum.Secondary;
|
|
32
|
-
this.levelInfo = ActionLevelEnum.Info;
|
|
33
|
-
this.levelHelp = ActionLevelEnum.Help;
|
|
34
|
-
this.levelSuccess = ActionLevelEnum.Success;
|
|
35
|
-
this.levelWarning = ActionLevelEnum.Warning;
|
|
36
|
-
this.levelDanger = ActionLevelEnum.Danger;
|
|
37
|
-
this.hostClass = 'mng-action-button';
|
|
38
|
-
this.inputDisabled = of(false);
|
|
39
|
-
this.inputLoading = of(false);
|
|
40
|
-
this.finishEventEmitter = new EventEmitter();
|
|
41
|
-
this.loadingSubject = new ReplaySubject(1);
|
|
42
|
-
this.$loading = this.loadingSubject.asObservable();
|
|
43
|
-
this.cmpId = Math.random().toString(36).substring(2);
|
|
44
|
-
this.isVisibleSubject = new ReplaySubject(1);
|
|
45
|
-
this.$isVisible = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());
|
|
46
|
-
this.isPermittedSubject = new ReplaySubject(1);
|
|
47
|
-
this.$isPermitted = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());
|
|
48
|
-
this.isEnabledSubject = new ReplaySubject(1);
|
|
49
|
-
this.$isEnabled = this.isEnabledSubject.asObservable().pipe(distinctUntilChanged());
|
|
50
|
-
this.labelSubject = new ReplaySubject(1);
|
|
51
|
-
this.$label = this.labelSubject.asObservable().pipe(distinctUntilChanged());
|
|
52
|
-
this.tooltipSubject = new ReplaySubject(1);
|
|
53
|
-
this.$tooltip = this.tooltipSubject.asObservable().pipe(distinctUntilChanged());
|
|
54
|
-
this.hasNoTitle = false;
|
|
55
|
-
this.subscriptions = [];
|
|
56
|
-
this.loadingSubject.next(false);
|
|
57
|
-
}
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
|
|
60
|
-
this.hasNoTitle = this.action.title === null;
|
|
61
|
-
this.isEnabledSubject.next(true);
|
|
62
|
-
this.isVisibleSubject.next(true);
|
|
63
|
-
this.isPermittedSubject.next(true);
|
|
64
|
-
this.labelSubject.next(null);
|
|
65
|
-
this.tooltipSubject.next(null);
|
|
66
|
-
const routeData = this.route.snapshot.data;
|
|
67
|
-
if (this.action instanceof ActionLinkDescriptor) {
|
|
68
|
-
this.actionLink = this.action;
|
|
69
|
-
}
|
|
70
|
-
if (this.action.permissionsRouteType && routeData.tableviewPermissions) {
|
|
71
|
-
if (routeData.tableviewPermissions[this.action.permissionsRouteType]) {
|
|
72
|
-
this.routePermissions = routeData.tableviewPermissions[this.action.permissionsRouteType];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
this.processSubscriptions();
|
|
76
|
-
if (this.action.className) {
|
|
77
|
-
this.hostClass = this.action.className;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
ngOnChanges(changes) {
|
|
81
|
-
if (!(changes['item']?.firstChange ?? true) || !(changes['itemId']?.firstChange ?? true) || !(changes['actionData']?.firstChange ?? true)) {
|
|
82
|
-
this.processSubscriptions();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
ngOnDestroy() {
|
|
86
|
-
this.isVisibleSubscription?.unsubscribe();
|
|
87
|
-
this.isPermittedSubscription?.unsubscribe();
|
|
88
|
-
this.isEnabledSubscription?.unsubscribe();
|
|
89
|
-
this.labelSubscription?.unsubscribe();
|
|
90
|
-
this.tooltipSubscription?.unsubscribe();
|
|
91
|
-
this.subscriptions.forEach(s => s.unsubscribe());
|
|
92
|
-
}
|
|
93
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
94
|
-
triggerAction(event) {
|
|
95
|
-
const actionData = this.actionData ? this.actionData : {};
|
|
96
|
-
actionData['cmpId'] = this.cmpId;
|
|
97
|
-
const parameters = new ActionParameters(this.itemId, this.item)
|
|
98
|
-
.withActionData(actionData)
|
|
99
|
-
.withQueryParam(this.queryParam)
|
|
100
|
-
.withRoute(this.route)
|
|
101
|
-
.withViewContainer(this.viewContainer)
|
|
102
|
-
.withSourceComponent(this);
|
|
103
|
-
const instance = this.actionExecutor.triggerAction(this.action, parameters);
|
|
104
|
-
this.subscriptions.push(instance.result$.subscribe({
|
|
105
|
-
next: () => {
|
|
106
|
-
this.finishEventEmitter.next(instance);
|
|
107
|
-
}
|
|
108
|
-
}));
|
|
109
|
-
this.subscriptions.push(instance.error$.subscribe({
|
|
110
|
-
next: () => {
|
|
111
|
-
this.finishEventEmitter.next(instance);
|
|
112
|
-
}
|
|
113
|
-
}));
|
|
114
|
-
this.subscriptions.push(instance.isRunLoading$.subscribe({
|
|
115
|
-
next: res => {
|
|
116
|
-
this.loadingSubject.next(res);
|
|
117
|
-
}
|
|
118
|
-
}));
|
|
119
|
-
}
|
|
120
|
-
getConfirmationService() {
|
|
121
|
-
return this.confirmationService;
|
|
122
|
-
}
|
|
123
|
-
getConfirmationServiceInstanceKey(action) {
|
|
124
|
-
return `${action.actionName}_${this.cmpId}`;
|
|
125
|
-
}
|
|
126
|
-
processSubscriptions() {
|
|
127
|
-
const parameters = new ActionParameters(this.itemId, this.item)
|
|
128
|
-
.withActionData(this.actionData)
|
|
129
|
-
.withViewContainer(this.viewContainer ?? undefined)
|
|
130
|
-
.withSourceComponent(this);
|
|
131
|
-
const context = this.actionExecutor.prepareActionContextValidation(this.action, parameters, this.dataProvider);
|
|
132
|
-
if (typeof this.action.isVisibleFunction === 'function') {
|
|
133
|
-
this.isVisibleSubscription?.unsubscribe();
|
|
134
|
-
this.isVisibleSubscription = this.action.isVisibleFunction(context).subscribe({
|
|
135
|
-
next: res => this.isVisibleSubject.next(res)
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
if (typeof this.action.permissions !== 'undefined' || typeof this.routePermissions !== 'undefined') {
|
|
139
|
-
this.isPermittedSubscription?.unsubscribe();
|
|
140
|
-
const permissions = this.action.permissions && this.routePermissions
|
|
141
|
-
? Permissions.All.of(this.routePermissions, this.action.permissions)
|
|
142
|
-
: this.routePermissions ?? this.action.permissions;
|
|
143
|
-
this.isVisibleSubscription = this.authorization.isPermitted(permissions, this.route.snapshot, context).subscribe({
|
|
144
|
-
next: res => this.isPermittedSubject.next(res)
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
if (typeof this.action.isEnabledFunction === 'function') {
|
|
148
|
-
this.isEnabledSubscription?.unsubscribe();
|
|
149
|
-
this.isEnabledSubscription = this.action.isEnabledFunction(context).subscribe({
|
|
150
|
-
next: res => this.isEnabledSubject.next(res)
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
if (!this.hasNoTitle) {
|
|
154
|
-
this.labelSubscription?.unsubscribe();
|
|
155
|
-
this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item).subscribe({
|
|
156
|
-
next: i18n => this.labelSubject.next(i18n)
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
this.tooltipSubscription?.unsubscribe();
|
|
160
|
-
this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action?.tooltip ?? undefined, this.item).subscribe({
|
|
161
|
-
next: i18n => this.tooltipSubject.next(i18n)
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.MngAuthorizationService }, { token: i4.MngActionExecutorService }, { token: i5.ConfirmationService }, { token: i4.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
-
MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", queryParam: "queryParam", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i6.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i9.Ripple, selector: "[pRipple]" }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i7.AsyncPipe, "linkFormatter": i11.MngLinkFormatterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionComponent, decorators: [{
|
|
168
|
-
type: Component,
|
|
169
|
-
args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
|
|
170
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.MngAuthorizationService }, { type: i4.MngActionExecutorService }, { type: i5.ConfirmationService }, { type: i4.MngViewContainerComponentService, decorators: [{
|
|
171
|
-
type: Optional
|
|
172
|
-
}] }]; }, propDecorators: { hostClass: [{
|
|
173
|
-
type: HostBinding,
|
|
174
|
-
args: ['class']
|
|
175
|
-
}], action: [{
|
|
176
|
-
type: Input
|
|
177
|
-
}], item: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], itemId: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], actionData: [{
|
|
182
|
-
type: Input
|
|
183
|
-
}], queryParam: [{
|
|
184
|
-
type: Input
|
|
185
|
-
}], dataProvider: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], inputDisabled: [{
|
|
188
|
-
type: Input,
|
|
189
|
-
args: ['disabled']
|
|
190
|
-
}], inputLoading: [{
|
|
191
|
-
type: Input,
|
|
192
|
-
args: ['loading']
|
|
193
|
-
}], viewContainerInit: [{
|
|
194
|
-
type: Input,
|
|
195
|
-
args: ['viewContainer']
|
|
196
|
-
}], finishEventEmitter: [{
|
|
197
|
-
type: Output,
|
|
198
|
-
args: ['finish']
|
|
199
|
-
}] } });
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Optional, Output } from '@angular/core';
|
|
2
|
+
import { ConfirmationService } from 'primeng/api';
|
|
3
|
+
import { ReplaySubject, distinctUntilChanged, of } from 'rxjs';
|
|
4
|
+
import { ActionLinkDescriptor } from '../../descriptors';
|
|
5
|
+
import { ActionLevelEnum } from '../../descriptors/types';
|
|
6
|
+
import { Permissions } from '../../security/model';
|
|
7
|
+
import { I18nUtils } from '../../utils';
|
|
8
|
+
import { ActionParameters } from './models';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/router";
|
|
11
|
+
import * as i2 from "@ngx-translate/core";
|
|
12
|
+
import * as i3 from "../../security";
|
|
13
|
+
import * as i4 from "../../services";
|
|
14
|
+
import * as i5 from "primeng/api";
|
|
15
|
+
import * as i6 from "primeng/confirmdialog";
|
|
16
|
+
import * as i7 from "@angular/common";
|
|
17
|
+
import * as i8 from "primeng/button";
|
|
18
|
+
import * as i9 from "primeng/ripple";
|
|
19
|
+
import * as i10 from "primeng/tooltip";
|
|
20
|
+
import * as i11 from "../../pipes/link-formatter.pipe";
|
|
21
|
+
export class MngActionComponent {
|
|
22
|
+
constructor(route, translate, authorization, actionExecutor, confirmationService, viewContainerService) {
|
|
23
|
+
this.route = route;
|
|
24
|
+
this.translate = translate;
|
|
25
|
+
this.authorization = authorization;
|
|
26
|
+
this.actionExecutor = actionExecutor;
|
|
27
|
+
this.confirmationService = confirmationService;
|
|
28
|
+
this.viewContainerService = viewContainerService;
|
|
29
|
+
this.levelDefault = ActionLevelEnum.Default;
|
|
30
|
+
this.levelPrimary = ActionLevelEnum.Primary;
|
|
31
|
+
this.levelSecondary = ActionLevelEnum.Secondary;
|
|
32
|
+
this.levelInfo = ActionLevelEnum.Info;
|
|
33
|
+
this.levelHelp = ActionLevelEnum.Help;
|
|
34
|
+
this.levelSuccess = ActionLevelEnum.Success;
|
|
35
|
+
this.levelWarning = ActionLevelEnum.Warning;
|
|
36
|
+
this.levelDanger = ActionLevelEnum.Danger;
|
|
37
|
+
this.hostClass = 'mng-action-button';
|
|
38
|
+
this.inputDisabled = of(false);
|
|
39
|
+
this.inputLoading = of(false);
|
|
40
|
+
this.finishEventEmitter = new EventEmitter();
|
|
41
|
+
this.loadingSubject = new ReplaySubject(1);
|
|
42
|
+
this.$loading = this.loadingSubject.asObservable();
|
|
43
|
+
this.cmpId = Math.random().toString(36).substring(2);
|
|
44
|
+
this.isVisibleSubject = new ReplaySubject(1);
|
|
45
|
+
this.$isVisible = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());
|
|
46
|
+
this.isPermittedSubject = new ReplaySubject(1);
|
|
47
|
+
this.$isPermitted = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());
|
|
48
|
+
this.isEnabledSubject = new ReplaySubject(1);
|
|
49
|
+
this.$isEnabled = this.isEnabledSubject.asObservable().pipe(distinctUntilChanged());
|
|
50
|
+
this.labelSubject = new ReplaySubject(1);
|
|
51
|
+
this.$label = this.labelSubject.asObservable().pipe(distinctUntilChanged());
|
|
52
|
+
this.tooltipSubject = new ReplaySubject(1);
|
|
53
|
+
this.$tooltip = this.tooltipSubject.asObservable().pipe(distinctUntilChanged());
|
|
54
|
+
this.hasNoTitle = false;
|
|
55
|
+
this.subscriptions = [];
|
|
56
|
+
this.loadingSubject.next(false);
|
|
57
|
+
}
|
|
58
|
+
ngOnInit() {
|
|
59
|
+
this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
|
|
60
|
+
this.hasNoTitle = this.action.title === null;
|
|
61
|
+
this.isEnabledSubject.next(true);
|
|
62
|
+
this.isVisibleSubject.next(true);
|
|
63
|
+
this.isPermittedSubject.next(true);
|
|
64
|
+
this.labelSubject.next(null);
|
|
65
|
+
this.tooltipSubject.next(null);
|
|
66
|
+
const routeData = this.route.snapshot.data;
|
|
67
|
+
if (this.action instanceof ActionLinkDescriptor) {
|
|
68
|
+
this.actionLink = this.action;
|
|
69
|
+
}
|
|
70
|
+
if (this.action.permissionsRouteType && routeData.tableviewPermissions) {
|
|
71
|
+
if (routeData.tableviewPermissions[this.action.permissionsRouteType]) {
|
|
72
|
+
this.routePermissions = routeData.tableviewPermissions[this.action.permissionsRouteType];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this.processSubscriptions();
|
|
76
|
+
if (this.action.className) {
|
|
77
|
+
this.hostClass = this.action.className;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
ngOnChanges(changes) {
|
|
81
|
+
if (!(changes['item']?.firstChange ?? true) || !(changes['itemId']?.firstChange ?? true) || !(changes['actionData']?.firstChange ?? true)) {
|
|
82
|
+
this.processSubscriptions();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
ngOnDestroy() {
|
|
86
|
+
this.isVisibleSubscription?.unsubscribe();
|
|
87
|
+
this.isPermittedSubscription?.unsubscribe();
|
|
88
|
+
this.isEnabledSubscription?.unsubscribe();
|
|
89
|
+
this.labelSubscription?.unsubscribe();
|
|
90
|
+
this.tooltipSubscription?.unsubscribe();
|
|
91
|
+
this.subscriptions.forEach(s => s.unsubscribe());
|
|
92
|
+
}
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
94
|
+
triggerAction(event) {
|
|
95
|
+
const actionData = this.actionData ? this.actionData : {};
|
|
96
|
+
actionData['cmpId'] = this.cmpId;
|
|
97
|
+
const parameters = new ActionParameters(this.itemId, this.item)
|
|
98
|
+
.withActionData(actionData)
|
|
99
|
+
.withQueryParam(this.queryParam)
|
|
100
|
+
.withRoute(this.route)
|
|
101
|
+
.withViewContainer(this.viewContainer)
|
|
102
|
+
.withSourceComponent(this);
|
|
103
|
+
const instance = this.actionExecutor.triggerAction(this.action, parameters);
|
|
104
|
+
this.subscriptions.push(instance.result$.subscribe({
|
|
105
|
+
next: () => {
|
|
106
|
+
this.finishEventEmitter.next(instance);
|
|
107
|
+
}
|
|
108
|
+
}));
|
|
109
|
+
this.subscriptions.push(instance.error$.subscribe({
|
|
110
|
+
next: () => {
|
|
111
|
+
this.finishEventEmitter.next(instance);
|
|
112
|
+
}
|
|
113
|
+
}));
|
|
114
|
+
this.subscriptions.push(instance.isRunLoading$.subscribe({
|
|
115
|
+
next: res => {
|
|
116
|
+
this.loadingSubject.next(res);
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
getConfirmationService() {
|
|
121
|
+
return this.confirmationService;
|
|
122
|
+
}
|
|
123
|
+
getConfirmationServiceInstanceKey(action) {
|
|
124
|
+
return `${action.actionName}_${this.cmpId}`;
|
|
125
|
+
}
|
|
126
|
+
processSubscriptions() {
|
|
127
|
+
const parameters = new ActionParameters(this.itemId, this.item)
|
|
128
|
+
.withActionData(this.actionData)
|
|
129
|
+
.withViewContainer(this.viewContainer ?? undefined)
|
|
130
|
+
.withSourceComponent(this);
|
|
131
|
+
const context = this.actionExecutor.prepareActionContextValidation(this.action, parameters, this.dataProvider);
|
|
132
|
+
if (typeof this.action.isVisibleFunction === 'function') {
|
|
133
|
+
this.isVisibleSubscription?.unsubscribe();
|
|
134
|
+
this.isVisibleSubscription = this.action.isVisibleFunction(context).subscribe({
|
|
135
|
+
next: res => this.isVisibleSubject.next(res)
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
if (typeof this.action.permissions !== 'undefined' || typeof this.routePermissions !== 'undefined') {
|
|
139
|
+
this.isPermittedSubscription?.unsubscribe();
|
|
140
|
+
const permissions = this.action.permissions && this.routePermissions
|
|
141
|
+
? Permissions.All.of(this.routePermissions, this.action.permissions)
|
|
142
|
+
: this.routePermissions ?? this.action.permissions;
|
|
143
|
+
this.isVisibleSubscription = this.authorization.isPermitted(permissions, this.route.snapshot, context).subscribe({
|
|
144
|
+
next: res => this.isPermittedSubject.next(res)
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (typeof this.action.isEnabledFunction === 'function') {
|
|
148
|
+
this.isEnabledSubscription?.unsubscribe();
|
|
149
|
+
this.isEnabledSubscription = this.action.isEnabledFunction(context).subscribe({
|
|
150
|
+
next: res => this.isEnabledSubject.next(res)
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (!this.hasNoTitle) {
|
|
154
|
+
this.labelSubscription?.unsubscribe();
|
|
155
|
+
this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item).subscribe({
|
|
156
|
+
next: i18n => this.labelSubject.next(i18n)
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
this.tooltipSubscription?.unsubscribe();
|
|
160
|
+
this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action?.tooltip ?? undefined, this.item).subscribe({
|
|
161
|
+
next: i18n => this.tooltipSubject.next(i18n)
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.MngAuthorizationService }, { token: i4.MngActionExecutorService }, { token: i5.ConfirmationService }, { token: i4.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
+
MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", queryParam: "queryParam", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i6.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i9.Ripple, selector: "[pRipple]" }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i7.AsyncPipe, "linkFormatter": i11.MngLinkFormatterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionComponent, decorators: [{
|
|
168
|
+
type: Component,
|
|
169
|
+
args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
|
|
170
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.MngAuthorizationService }, { type: i4.MngActionExecutorService }, { type: i5.ConfirmationService }, { type: i4.MngViewContainerComponentService, decorators: [{
|
|
171
|
+
type: Optional
|
|
172
|
+
}] }]; }, propDecorators: { hostClass: [{
|
|
173
|
+
type: HostBinding,
|
|
174
|
+
args: ['class']
|
|
175
|
+
}], action: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], item: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], itemId: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], actionData: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], queryParam: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], dataProvider: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], inputDisabled: [{
|
|
188
|
+
type: Input,
|
|
189
|
+
args: ['disabled']
|
|
190
|
+
}], inputLoading: [{
|
|
191
|
+
type: Input,
|
|
192
|
+
args: ['loading']
|
|
193
|
+
}], viewContainerInit: [{
|
|
194
|
+
type: Input,
|
|
195
|
+
args: ['viewContainer']
|
|
196
|
+
}], finishEventEmitter: [{
|
|
197
|
+
type: Output,
|
|
198
|
+
args: ['finish']
|
|
199
|
+
}] } });
|
|
200
200
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWdDLFFBQVEsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBSWxLLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWEsYUFBYSxFQUFnQixvQkFBb0IsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJdkYsT0FBTyxFQUFtQixvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUl4RCxPQUFPLEVBQWUsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHL0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQTZCLGdCQUFnQixFQUE2QixNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVNsRyxNQUFNLE9BQU8sa0JBQWtCO0lBc0QzQixZQUNZLEtBQXFCLEVBQ3JCLFNBQTJCLEVBQzNCLGFBQXNDLEVBQ3RDLGNBQXdDLEVBQ3hDLG1CQUF3QyxFQUM1QixvQkFBbUU7UUFML0UsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBQ3RDLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1C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QUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMvQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsrR0FqTVEsa0JBQWtCO21HQUFsQixrQkFBa0IseWFBRmhCLENBQUMsbUJBQW1CLENBQUMsK0NDekJwQyw2d0tBK0ZBOzJGRHBFYSxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsbUJBQW1CLENBQUM7OzBCQThEM0IsUUFBUTs0Q0FsRFMsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUdKLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNvQixhQUFhO3NCQUF0QyxLQUFLO3VCQUFDLFVBQVU7Z0JBQ1EsWUFBWTtzQkFBcEMsS0FBSzt1QkFBQyxTQUFTO2dCQUNlLGlCQUFpQjtzQkFBL0MsS0FBSzt1QkFBQyxlQUFlO2dCQUVHLGtCQUFrQjtzQkFBMUMsTUFBTTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb25maXJtYXRpb25TZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG9mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7SURhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yLCBBY3Rpb25MaW5rRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtBY3Rpb25MZXZlbEVudW19IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXJ9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ1JvdXRlckRhdGF9IGZyb20gJy4uLy4uL3JvdXRlci9tb2RlbHMnO1xuaW1wb3J0IHtNbmdBdXRob3JpemF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VjdXJpdHknO1xuaW1wb3J0IHtBUGVybWlzc2lvbnMsIFBlcm1pc3Npb25zfSBmcm9tICcuLi8uLi9zZWN1cml0eS9tb2RlbCc7XG5pbXBvcnQge01uZ0FjdGlvbkV4ZWN1dG9yU2VydmljZSwgTW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7SWRUeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0kxOG5VdGlsc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtBY3Rpb25EYXRhLCBBY3Rpb25JbnN0YW5jZSwgQWN0aW9uUGFyYW1ldGVycywgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJy4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctYWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtDb25maXJtYXRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNbmdBY3Rpb25Db21wb25lbnQ8VCwgUz4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBJQWN0aW9uQ29uZmlybWF0aW9uU2VydmljZSB7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsRGVmYXVsdCA9IEFjdGlvbkxldmVsRW51bS5EZWZhdWx0O1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbFByaW1hcnkgPSBBY3Rpb25MZXZlbEVudW0uUHJpbWFyeTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGV2ZWxTZWNvbmRhcnkgPSBBY3Rpb25MZXZlbEVudW0uU2Vjb25kYXJ5O1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbEluZm8gPSBBY3Rpb25MZXZlbEVudW0uSW5mbztcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGV2ZWxIZWxwID0gQWN0aW9uTGV2ZWxFbnVtLkhlbHA7XG4gICAgcHVibGljIHJlYWRvbmx5IGxldmVsU3VjY2VzcyA9IEFjdGlvbkxldmVsRW51bS5TdWNjZXNzO1xuICAgIHB1YmxpYyByZWFkb25seSBsZXZlbFdhcm5pbmcgPSBBY3Rpb25MZXZlbEVudW0uV2FybmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGV2ZWxEYW5nZXIgPSBBY3Rpb25MZXZlbEVudW0uRGFuZ2VyO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGhvc3RDbGFzcyA9ICdtbmctYWN0aW9uLWJ1dHRvbic7XG5cbiAgICAvLyBtZXRhZGF0YSBhbmQgZWRpdG9yIG1vZGUgaW5wdXRcbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uITogQWN0aW9uRGVzY3JpcHRvcjxUPjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbT86IFQ7XG4gICAgQElucHV0KCkgcHVibGljIGl0ZW1JZD86IElkVHlwZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uRGF0YT86IEFjdGlvbkRhdGE7XG4gICAgQElucHV0KCkgcHVibGljIHF1ZXJ5UGFyYW0/OiBNZWRpdXNRdWVyeVBhcmFtO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhUHJvdmlkZXI/OiBJRGF0YVByb3ZpZGVyPFQsIFM+O1xuICAgIEBJbnB1dCgnZGlzYWJsZWQnKSBwdWJsaWMgaW5wdXREaXNhYmxlZDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG9mKGZhbHNlKTtcbiAgICBASW5wdXQoJ2xvYWRpbmcnKSBwdWJsaWMgaW5wdXRMb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoZmFsc2UpO1xuICAgIEBJbnB1dCgndmlld0NvbnRhaW5lcicpIHB1YmxpYyB2aWV3Q29udGFpbmVySW5pdD86IElWaWV3Q29udGFpbmVyPFQsIFM+O1xuXG4gICAgQE91dHB1dCgnZmluaXNoJykgcHVibGljIGZpbmlzaEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uSW5zdGFuY2U8VCwgUz4+KCk7XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljICRsb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyBjbXBJZDogc3RyaW5nID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuICAgIHByaXZhdGUgaXNWaXNpYmxlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICAgIHByaXZhdGUgaXNWaXNpYmxlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyAkaXNWaXNpYmxlID0gdGhpcy5pc1Zpc2libGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcHJpdmF0ZSBpc1Blcm1pdHRlZFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwcml2YXRlIGlzUGVybWl0dGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyAkaXNQZXJtaXR0ZWQgPSB0aGlzLmlzUGVybWl0dGVkU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIHByaXZhdGUgaXNFbmFibGVkU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICAgIHByaXZhdGUgaXNFbmFibGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyAkaXNFbmFibGVkID0gdGhpcy5pc0VuYWJsZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcHJpdmF0ZSBsYWJlbFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmcgfCBudWxsPigxKTtcbiAgICBwcml2YXRlIGxhYmVsU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyAkbGFiZWwgPSB0aGlzLmxhYmVsU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIHByaXZhdGUgdG9vbHRpcFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmcgfCBudWxsPigxKTtcbiAgICBwcml2YXRlIHRvb2x0aXBTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljICR0b29sdGlwID0gdGhpcy50b29sdGlwU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8VCwgUz47XG5cbiAgICBwdWJsaWMgYWN0aW9uTGluaz86IEFjdGlvbkxpbmtEZXNjcmlwdG9yPFQ+O1xuICAgIHB1YmxpYyBoYXNOb1RpdGxlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBwcml2YXRlIHJvdXRlUGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnM7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGF1dGhvcml6YXRpb246IE1uZ0F1dGhvcml6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvbkV4ZWN1dG9yOiBNbmdBY3Rpb25FeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2aWV3Q29udGFpbmVyU2VydmljZTogTW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2U8VCwgUz4gfCBudWxsXG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIgPSB0aGlzLnZpZXdDb250YWluZXJJbml0ID8/IHRoaXMudmlld0NvbnRhaW5lclNlcnZpY2UgPz8gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuaGFzTm9UaXRsZSA9IHRoaXMuYWN0aW9uLnRpdGxlID09PSBudWxsO1xuICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNQZXJtaXR0ZWRTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMubGFiZWxTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMudG9vbHRpcFN1YmplY3QubmV4dChudWxsKTtcblxuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEgYXMgTW5nUm91dGVyRGF0YTtcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uIGluc3RhbmNlb2YgQWN0aW9uTGlua0Rlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uTGluayA9IHRoaXMuYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uLnBlcm1pc3Npb25zUm91dGVUeXBlICYmIHJvdXRlRGF0YS50YWJsZXZpZXdQZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgaWYgKHJvdXRlRGF0YS50YWJsZXZpZXdQZXJtaXNzaW9uc1t0aGlzLmFjdGlvbi5wZXJtaXNzaW9uc1JvdXRlVHlwZV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlUGVybWlzc2lvbnMgPSByb3V0ZURhdGEudGFibGV2aWV3UGVybWlzc2lvbnNbdGhpcy5hY3Rpb24ucGVybWlzc2lvbnNSb3V0ZVR5cGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbi5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdENsYXNzID0gdGhpcy5hY3Rpb24uY2xhc3NOYW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIShjaGFuZ2VzWydpdGVtJ10/LmZpcnN0Q2hhbmdlID8/IHRydWUpIHx8ICEoY2hhbmdlc1snaXRlbUlkJ10/LmZpcnN0Q2hhbmdlID8/IHRydWUpIHx8ICEoY2hhbmdlc1snYWN0aW9uRGF0YSddPy5maXJzdENoYW5nZSA/PyB0cnVlKSkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmlzUGVybWl0dGVkU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5sYWJlbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50b29sdGlwU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyB0cmlnZ2VyQWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBhY3Rpb25EYXRhID0gdGhpcy5hY3Rpb25EYXRhID8gdGhpcy5hY3Rpb25EYXRhIDoge307XG4gICAgICAgIGFjdGlvbkRhdGFbJ2NtcElkJ10gPSB0aGlzLmNtcElkO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBuZXcgQWN0aW9uUGFyYW1ldGVycyh0aGlzLml0ZW1JZCwgdGhpcy5pdGVtKVxuICAgICAgICAgICAgLndpdGhBY3Rpb25EYXRhKGFjdGlvbkRhdGEpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW0odGhpcy5xdWVyeVBhcmFtKVxuICAgICAgICAgICAgLndpdGhSb3V0ZSh0aGlzLnJvdXRlKVxuICAgICAgICAgICAgLndpdGhWaWV3Q29udGFpbmVyKHRoaXMudmlld0NvbnRhaW5lcilcbiAgICAgICAgICAgIC53aXRoU291cmNlQ29tcG9uZW50KHRoaXMpO1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuYWN0aW9uRXhlY3V0b3IudHJpZ2dlckFjdGlvbih0aGlzLmFjdGlvbiwgcGFyYW1ldGVycyk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICBpbnN0YW5jZS5yZXN1bHQkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaEV2ZW50RW1pdHRlci5uZXh0KGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIGluc3RhbmNlLmVycm9yJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5pc2hFdmVudEVtaXR0ZXIubmV4dChpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICBpbnN0YW5jZS5pc1J1bkxvYWRpbmckLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZUluc3RhbmNlS2V5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+KSB7XG4gICAgICAgIHJldHVybiBgJHthY3Rpb24uYWN0aW9uTmFtZX1fJHt0aGlzLmNtcElkfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3Vic2NyaXB0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IG5ldyBBY3Rpb25QYXJhbWV0ZXJzKHRoaXMuaXRlbUlkLCB0aGlzLml0ZW0pXG4gICAgICAgICAgICAud2l0aEFjdGlvbkRhdGEodGhpcy5hY3Rpb25EYXRhKVxuICAgICAgICAgICAgLndpdGhWaWV3Q29udGFpbmVyKHRoaXMudmlld0NvbnRhaW5lciA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICAud2l0aFNvdXJjZUNvbXBvbmVudCh0aGlzKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucHJlcGFyZUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uKHRoaXMuYWN0aW9uLCBwYXJhbWV0ZXJzLCB0aGlzLmRhdGFQcm92aWRlcik7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbi5pc1Zpc2libGVGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmlzVmlzaWJsZVN1YnNjcmlwdGlvbiA9IHRoaXMuYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uKGNvbnRleHQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHRoaXMuaXNWaXNpYmxlU3ViamVjdC5uZXh0KHJlcylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24ucGVybWlzc2lvbnMgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB0aGlzLnJvdXRlUGVybWlzc2lvbnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmlzUGVybWl0dGVkU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPVxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uLnBlcm1pc3Npb25zICYmIHRoaXMucm91dGVQZXJtaXNzaW9uc1xuICAgICAgICAgICAgICAgICAgICA/IFBlcm1pc3Npb25zLkFsbC5vZih0aGlzLnJvdXRlUGVybWlzc2lvbnMsIHRoaXMuYWN0aW9uLnBlcm1pc3Npb25zKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucm91dGVQZXJtaXNzaW9ucyA/PyB0aGlzLmFjdGlvbi5wZXJtaXNzaW9ucyE7XG4gICAgICAgICAgICB0aGlzLmlzVmlzaWJsZVN1YnNjcmlwdGlvbiA9IHRoaXMuYXV0aG9yaXphdGlvbi5pc1Blcm1pdHRlZChwZXJtaXNzaW9ucywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgY29udGV4dCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gdGhpcy5pc1Blcm1pdHRlZFN1YmplY3QubmV4dChyZXMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW5hYmxlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuaXNFbmFibGVkU3Vic2NyaXB0aW9uID0gdGhpcy5hY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4gdGhpcy5pc0VuYWJsZWRTdWJqZWN0Lm5leHQocmVzKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaGFzTm9UaXRsZSkge1xuICAgICAgICAgICAgdGhpcy5sYWJlbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMubGFiZWxTdWJzY3JpcHRpb24gPSBJMThuVXRpbHMuQWN0aW9uLmdldEFzeW5jKHRoaXMudHJhbnNsYXRlLCB0aGlzLmFjdGlvbiwgJ3RpdGxlJywgdGhpcy5hY3Rpb24/LnRpdGxlID8/IHVuZGVmaW5lZCwgdGhpcy5pdGVtKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGkxOG4gPT4gdGhpcy5sYWJlbFN1YmplY3QubmV4dChpMThuKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXBTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudG9vbHRpcFN1YnNjcmlwdGlvbiA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0QXN5bmModGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uLCAndG9vbHRpcCcsIHRoaXMuYWN0aW9uPy50b29sdGlwID8/IHVuZGVmaW5lZCwgdGhpcy5pdGVtKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaTE4biA9PiB0aGlzLnRvb2x0aXBTdWJqZWN0Lm5leHQoaTE4bilcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIigkaXNWaXNpYmxlIHwgYXN5bmMpICYmICgkaXNQZXJtaXR0ZWQgfCBhc3luYylcIj5cbiAgICA8YVxuICAgICAgICAqbmdJZj1cImFjdGlvbkxpbmsgJiYgYWN0aW9uTGluay51cmwgIT09ICcnOyBlbHNlIHJvdXRlckxpbmtcIlxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIHBSaXBwbGVcbiAgICAgICAgW2ljb25dPVwiJGFueShhY3Rpb24uaWNvbilcIlxuICAgICAgICBbaHJlZl09XCIoJGlzRW5hYmxlZCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgKChpbnB1dERpc2FibGVkIHwgYXN5bmMpID8/IGZhbHNlKSA/IG51bGwgOiBhY3Rpb25MaW5rLnVybFwiXG4gICAgICAgIFt0YXJnZXRdPVwiYWN0aW9uTGluay50YXJnZXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCRpc0VuYWJsZWQgfCBhc3luYykgPT09IGZhbHNlIHx8ICgoaW5wdXREaXNhYmxlZCB8IGFzeW5jKSA/PyBmYWxzZSlcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tcm91bmRlZF09XCJoYXNOb1RpdGxlXCJcbiAgICAgICAgW2NsYXNzLm1uZy1hY3Rpb24tYnV0dG9uLWljb25dPVwiaGFzTm9UaXRsZVwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi10ZXh0XT1cImFjdGlvbi5pc1N0eWxlVGV4dFwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1saW5rXT1cImFjdGlvbkxpbmsuaXNTdHlsZUxpbmtcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tcmFpc2VkXT1cImFjdGlvbi5pc1N0eWxlUmFpc2VkXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLW91dGxpbmVkXT1cImFjdGlvbi5pc1N0eWxlT3V0bGluZWRcIlxuICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi14c109XCJhY3Rpb24uaXNTaXplRXh0cmFTbWFsbFwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXNtXT1cImFjdGlvbi5pc1NpemVTbWFsbFwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLWxnXT1cImFjdGlvbi5pc1NpemVMYXJnZVwiXG4gICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhsXT1cImFjdGlvbi5pc1NpemVFeHRyYUxhcmdlXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRlZmF1bHRdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbERlZmF1bHRcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tcHJpbWFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsUHJpbWFyeVwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zZWNvbmRhcnldPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFNlY29uZGFyeVwiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1pbmZvXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxJbmZvXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWhlbHBdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbEhlbHBcIlxuICAgICAgICBbY2xhc3MucC1idXR0b24tc3VjY2Vzc109XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsU3VjY2Vzc1wiXG4gICAgICAgIFtjbGFzcy5wLWJ1dHRvbi13YXJuaW5nXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxXYXJuaW5nXCJcbiAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRhbmdlcl09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsRGFuZ2VyXCJcbiAgICAgICAgPnt7ICgkbGFiZWwgfCBhc3luYykgPz8gJycgfX08L2FcbiAgICA+XG4gICAgPG5nLXRlbXBsYXRlICNyb3V0ZXJMaW5rPlxuICAgICAgICA8YVxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25MaW5rOyBlbHNlIGJ1dHRvblwiXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbi5pY29uKVwiXG4gICAgICAgICAgICBbdGFyZ2V0XT1cImFjdGlvbkxpbmsudGFyZ2V0XCJcbiAgICAgICAgICAgIFtyZXBsYWNlVXJsXT1cImFjdGlvbkxpbmsucmVwbGFjZVVybFwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJcbiAgICAgICAgICAgICAgICAoJGlzRW5hYmxlZCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgKChpbnB1dERpc2FibGVkIHwgYXN5bmMpID8/IGZhbHNlKSA/IG51bGwgOiAoYWN0aW9uTGluay5wYXRoU2VnbWVudHMgfCBsaW5rRm9ybWF0dGVyOiBpdGVtSWQ6aXRlbTphY3Rpb24ubW9kZWw6YWN0aW9uRGF0YSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiYWN0aW9uTGluay5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJhY3Rpb25MaW5rLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIigkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZSB8fCAoKGlucHV0RGlzYWJsZWQgfCBhc3luYykgPz8gZmFsc2UpXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1yb3VuZGVkXT1cImhhc05vVGl0bGVcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1hY3Rpb24tYnV0dG9uLWljb25dPVwiaGFzTm9UaXRsZVwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tdGV4dF09XCJhY3Rpb24uaXNTdHlsZVRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWxpbmtdPVwiYWN0aW9uTGluay5pc1N0eWxlTGlua1wiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tcmFpc2VkXT1cImFjdGlvbi5pc1N0eWxlUmFpc2VkXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1vdXRsaW5lZF09XCJhY3Rpb24uaXNTdHlsZU91dGxpbmVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhzXT1cImFjdGlvbi5pc1NpemVFeHRyYVNtYWxsXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXNtXT1cImFjdGlvbi5pc1NpemVTbWFsbFwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi1sZ109XCJhY3Rpb24uaXNTaXplTGFyZ2VcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24teGxdPVwiYWN0aW9uLmlzU2l6ZUV4dHJhTGFyZ2VcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRlZmF1bHRdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbERlZmF1bHRcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXByaW1hcnldPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFByaW1hcnlcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXNlY29uZGFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsU2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1pbmZvXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxJbmZvXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1oZWxwXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxIZWxwXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zdWNjZXNzXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxTdWNjZXNzXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi13YXJuaW5nXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxXYXJuaW5nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kYW5nZXJdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbERhbmdlclwiXG4gICAgICAgICAgICA+e3sgKCRsYWJlbCB8IGFzeW5jKSA/PyAnJyB9fTwvYVxuICAgICAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICBbaWNvbl09XCIkYW55KGFjdGlvbi5pY29uKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiKCRsYWJlbCB8IGFzeW5jKSA/PyAnJ1wiXG4gICAgICAgICAgICBbcFRvb2x0aXBdPVwiJGFueSgkdG9vbHRpcCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCIoKCRsb2FkaW5nIHwgYXN5bmMpID8/IGZhbHNlKSB8fCAoKGlucHV0TG9hZGluZyB8IGFzeW5jKSA/PyBmYWxzZSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIigkaXNFbmFibGVkIHwgYXN5bmMpID09PSBmYWxzZSB8fCAoKGlucHV0RGlzYWJsZWQgfCBhc3luYykgPz8gZmFsc2UpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXJvdW5kZWRdPVwiaGFzTm9UaXRsZVwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWFjdGlvbi1idXR0b24taWNvbl09XCJoYXNOb1RpdGxlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi10ZXh0XT1cImFjdGlvbi5pc1N0eWxlVGV4dFwiXG4gICAgICAgICAgICBbY2xhc3MucC1idXR0b24tcmFpc2VkXT1cImFjdGlvbi5pc1N0eWxlUmFpc2VkXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1vdXRsaW5lZF09XCJhY3Rpb24uaXNTdHlsZU91dGxpbmVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXhzXT1cImFjdGlvbi5pc1NpemVFeHRyYVNtYWxsXCJcbiAgICAgICAgICAgIFtjbGFzcy5tbmctYnV0dG9uLXNtXT1cImFjdGlvbi5pc1NpemVTbWFsbFwiXG4gICAgICAgICAgICBbY2xhc3MubW5nLWJ1dHRvbi1sZ109XCJhY3Rpb24uaXNTaXplTGFyZ2VcIlxuICAgICAgICAgICAgW2NsYXNzLm1uZy1idXR0b24teGxdPVwiYWN0aW9uLmlzU2l6ZUV4dHJhTGFyZ2VcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLWRlZmF1bHRdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbERlZmF1bHRcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXByaW1hcnldPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbFByaW1hcnlcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXNlY29uZGFyeV09XCJhY3Rpb24ubGV2ZWwgPT09IGxldmVsU2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1pbmZvXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxJbmZvXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1oZWxwXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxIZWxwXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1zdWNjZXNzXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxTdWNjZXNzXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi13YXJuaW5nXT1cImFjdGlvbi5sZXZlbCA9PT0gbGV2ZWxXYXJuaW5nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kYW5nZXJdPVwiYWN0aW9uLmxldmVsID09PSBsZXZlbERhbmdlclwiPjwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPHAtY29uZmlybURpYWxvZyAqbmdJZj1cImFjdGlvbi5oYXNSdW5Db25maXJtYXRpb25cIiBba2V5XT1cImFjdGlvbi5hY3Rpb25OYW1lICsgJ18nICsgY21wSWRcIiBbYmFzZVpJbmRleF09XCI1MFwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1jb25maXJtRGlhbG9nPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|