@mediusinc/mng-commons 2.6.0-rc.2 → 3.0.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 +15 -4
- package/dev-scripts/version-info.js +1 -0
- package/esm2022/lib/api/models/filter-param.model.mjs +33 -0
- package/esm2022/lib/api/models/query-param.model.mjs +68 -0
- package/esm2022/lib/api/models/query-result.model.mjs +24 -0
- package/esm2022/lib/api/utils/medius-rest.util.mjs +255 -0
- package/esm2022/lib/api/utils/object-serializer.util.mjs +258 -0
- package/esm2022/lib/components/action/action.component.mjs +304 -0
- package/esm2022/lib/components/action/editor/action-editor.component.mjs +386 -0
- package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +54 -0
- package/{esm2020 → esm2022}/lib/components/action/models/action-execution.model.mjs +1 -1
- package/esm2022/lib/components/action/models/tableview-action-default-categories.model.mjs +11 -0
- package/{esm2020 → esm2022}/lib/components/action/route/action-route.component.mjs +4 -4
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +300 -0
- package/{esm2020 → esm2022}/lib/components/form/date-range/date-range.component.mjs +5 -5
- package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +212 -0
- package/esm2022/lib/components/form/editor/form-editor.component.mjs +288 -0
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +4 -4
- package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +19 -0
- package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
- package/esm2022/lib/components/form/models/form-editor.event.mjs +49 -0
- package/esm2022/lib/components/layout/breadcrumb.component.mjs +34 -0
- package/{esm2020 → esm2022}/lib/components/layout/footer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/layout/main-layout.component.mjs +4 -4
- package/esm2022/lib/components/layout/menu-item.component.mjs +297 -0
- package/{esm2020 → esm2022}/lib/components/layout/menu.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/layout/services/main-layout.component.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/layout/topbar-user.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/layout/topbar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/layout/version.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/pages/error/error-page.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/pages/not-found/not-found-page.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/tableview/models/table.event.mjs +1 -1
- package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.abstract.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.component.mjs +4 -4
- package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +124 -0
- package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +110 -0
- package/esm2022/lib/components/tableview/table/table.component.mjs +747 -0
- package/esm2022/lib/components/tableview/tableview.component.mjs +147 -0
- package/esm2022/lib/descriptors/action/action.descriptor.mjs +634 -0
- package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +304 -0
- package/esm2022/lib/descriptors/table/table.descriptor.mjs +542 -0
- package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +352 -0
- package/{esm2020 → esm2022}/lib/descriptors/types/table.type.mjs +1 -5
- package/{esm2020 → esm2022}/lib/directives/component.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/template.directive.mjs +5 -5
- package/esm2022/lib/mng-commons.module.mjs +465 -0
- package/{esm2020 → esm2022}/lib/pipes/boolean.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/class-map.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/enum.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/enumerate-async.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/enumerate.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/getter.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/i18n-property.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/json-path.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/locale-default-row-class.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/parametrize.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/template.pipe.mjs +4 -4
- package/esm2022/lib/router/route-builder.mjs +308 -0
- package/esm2022/lib/router/routes-builder.mjs +61 -0
- package/esm2022/lib/security/authorization.guard.mjs +15 -0
- package/{esm2020 → esm2022}/lib/security/authorization.service.mjs +4 -4
- package/esm2022/lib/services/action-executor.service.mjs +703 -0
- package/{esm2020 → esm2022}/lib/services/commons.service.mjs +4 -4
- package/esm2022/lib/services/configuration.service.mjs +150 -0
- package/{esm2020 → esm2022}/lib/services/internal/commons-init.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/mng-localstorage-config.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/navigation.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/router.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/version.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/view-container.component.service.mjs +4 -4
- package/esm2022/lib/styles/styles.util.mjs +42 -0
- package/esm2022/lib/types/type.model.mjs +2 -0
- package/esm2022/lib/utils/date.util.mjs +120 -0
- package/esm2022/lib/utils/tableview.util.mjs +193 -0
- package/esm2022/lib/utils/type.util.mjs +94 -0
- package/{fesm2020 → fesm2022}/mediusinc-mng-commons.mjs +930 -908
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -0
- package/lib/api/utils/medius-rest.util.d.ts +4 -3
- package/lib/components/action/action.component.d.ts +1 -1
- package/lib/components/action/editor/action-editor.component.d.ts +6 -9
- package/lib/components/action/localization/data-language-dropdown.component.d.ts +1 -1
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +4 -4
- package/lib/components/form/date-range/date-range.component.d.ts +1 -1
- package/lib/components/form/dropdown/dropdown.component.d.ts +3 -3
- package/lib/components/form/editor/form-editor.component.d.ts +1 -1
- package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +1 -1
- package/lib/components/layout/breadcrumb.component.d.ts +5 -0
- package/lib/components/layout/menu-item.component.d.ts +1 -1
- package/lib/components/layout/version.component.d.ts +1 -1
- package/lib/components/tableview/models/table.event.d.ts +2 -2
- package/lib/components/tableview/route/tableview-route.component.d.ts +1 -1
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +2 -2
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +1 -1
- package/lib/components/tableview/table/table.component.d.ts +6 -7
- package/lib/components/tableview/tableview.component.d.ts +7 -11
- package/lib/descriptors/editor/editor.descriptor.d.ts +1 -1
- package/lib/descriptors/table/table.descriptor.d.ts +7 -1
- package/lib/descriptors/tableview/tableview.descriptor.d.ts +4 -4
- package/lib/descriptors/types/table.type.d.ts +1 -5
- package/lib/directives/component.directive.d.ts +1 -1
- package/lib/directives/template.directive.d.ts +1 -1
- package/lib/router/route-builder.d.ts +6 -10
- package/lib/router/routes-builder.d.ts +0 -5
- package/lib/security/authorization.guard.d.ts +2 -11
- package/lib/services/action-executor.service.d.ts +1 -15
- package/lib/utils/route.util.d.ts +8 -19
- package/lib/utils/tableview.util.d.ts +5 -0
- package/package.json +13 -20
- package/esm2020/lib/api/models/filter-param.model.mjs +0 -33
- package/esm2020/lib/api/models/query-param.model.mjs +0 -68
- package/esm2020/lib/api/models/query-result.model.mjs +0 -24
- package/esm2020/lib/api/utils/medius-rest.util.mjs +0 -246
- package/esm2020/lib/api/utils/object-serializer.util.mjs +0 -258
- package/esm2020/lib/components/action/action.component.mjs +0 -303
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +0 -390
- package/esm2020/lib/components/action/localization/data-language-dropdown.component.mjs +0 -47
- package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +0 -11
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +0 -303
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +0 -214
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +0 -288
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -19
- package/esm2020/lib/components/form/models/form-editor.event.mjs +0 -49
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +0 -19
- package/esm2020/lib/components/layout/menu-item.component.mjs +0 -294
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -126
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +0 -108
- package/esm2020/lib/components/tableview/table/table.component.mjs +0 -749
- package/esm2020/lib/components/tableview/tableview.component.mjs +0 -146
- package/esm2020/lib/descriptors/action/action.descriptor.mjs +0 -634
- package/esm2020/lib/descriptors/editor/editor.descriptor.mjs +0 -304
- package/esm2020/lib/descriptors/table/table.descriptor.mjs +0 -521
- package/esm2020/lib/descriptors/tableview/tableview.descriptor.mjs +0 -347
- package/esm2020/lib/mng-commons.module.mjs +0 -469
- package/esm2020/lib/router/route-builder.mjs +0 -312
- package/esm2020/lib/router/routes-builder.mjs +0 -68
- package/esm2020/lib/security/authorization.guard.mjs +0 -30
- package/esm2020/lib/services/action-executor.service.mjs +0 -722
- package/esm2020/lib/services/configuration.service.mjs +0 -150
- package/esm2020/lib/styles/styles.util.mjs +0 -42
- package/esm2020/lib/types/type.model.mjs +0 -2
- package/esm2020/lib/utils/date.util.mjs +0 -120
- package/esm2020/lib/utils/tableview.util.mjs +0 -171
- package/esm2020/lib/utils/type.util.mjs +0 -94
- package/fesm2015/mediusinc-mng-commons.mjs +0 -15900
- package/fesm2015/mediusinc-mng-commons.mjs.map +0 -1
- package/fesm2020/mediusinc-mng-commons.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/models/builders/query-param.builder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/models/filter-match-type.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/models/mappers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/models/query-mode.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/models/serialization.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/services/api.abstract.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/services/crud-api.abstract.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/services/get-all-api.abstract.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/api/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/action/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/action/models/action-component.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/action/models/action-confirmation-service.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/action/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/formly/fields/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/formly/formly.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/formly/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-field.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/formly/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/models/field-action-context.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/models/form-editor.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/form/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/layout/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/layout/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/pages/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/tableview/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/tableview/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/tableview/table/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/tableview/table/models/table.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-providers/base.data-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-providers/editor.data-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-providers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-providers/lookup.data-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-providers/table.data-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-providers/tableview-crud.data-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-providers/tableview.data-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/action/action-button.descriptor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/action/action-confirmation.descriptor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/action/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/editor/field-validation.descriptor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/editor/field.descriptor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/editor/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/filter/filter.descriptor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/filter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/interfaces/field-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/model.descriptor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/table/column.descriptor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/tableview/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/types/action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/types/column.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/types/editor.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/types/field.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/types/filter.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/descriptors/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/column-value.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/enum.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/error-internal.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/error.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/menu.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/tableview-attr.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/user.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/version.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/view-container.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/models/internal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/provide-commons.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/models/router.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/tableview-route-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/security/authorization.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/security/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/security/model/authorization.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/security/model/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/security/model/permission-service.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/security/model/permissions.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/error-mapper.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/internal/commons-init.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/internal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/providers/config-service.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/providers/formly-config.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/providers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/tokens/browser-storage.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/tokens/commons-init.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/tokens/default-setting.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/tokens/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/tokens/module-config.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/styles/button-style.builder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/styles/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/styles/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/styles/models/style-level.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/styles/models/style-size.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/i18n.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/mng-localstorage-config-value.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/type.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/action-data-provider.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/editor-formly.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/enum.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/export.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/file.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/i18n.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/model.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/notification.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/object.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/route.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/string.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/validators/field.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/validators/index.mjs +0 -0
- /package/{esm2020 → esm2022}/mediusinc-mng-commons.mjs +0 -0
|
@@ -38,10 +38,10 @@ export class MngMainLayoutComponent {
|
|
|
38
38
|
const target = event.target;
|
|
39
39
|
this.mainLayoutService.innerWidth = target?.innerWidth ?? window.innerWidth;
|
|
40
40
|
}
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngMainLayoutComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.MngCommonsService }, { token: i3.MngMainLayoutComponentService }, { token: MNG_MODULE_CONFIG_IT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MngMainLayoutComponent, isStandalone: true, selector: "mng-main-layout", host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: [MngMainLayoutComponentService], viewQueries: [{ propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs", "attachToHost"], outputs: ["instanceCreated"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41
43
|
}
|
|
42
|
-
|
|
43
|
-
MngMainLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngMainLayoutComponent, isStandalone: true, selector: "mng-main-layout", host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: [MngMainLayoutComponentService], viewQueries: [{ propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs", "attachToHost"], outputs: ["instanceCreated"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngMainLayoutComponent, decorators: [{
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngMainLayoutComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
46
|
args: [{ standalone: true, selector: 'mng-main-layout', providers: [MngMainLayoutComponentService], imports: [NgClass, AsyncPipe, MngComponentDirective, NgIf, RouterOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n" }]
|
|
47
47
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.MngCommonsService }, { type: i3.MngMainLayoutComponentService }, { type: undefined, decorators: [{
|
|
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
54
54
|
type: HostListener,
|
|
55
55
|
args: ['window:resize', ['$event']]
|
|
56
56
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9tYWluLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L21haW4tbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQVEsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlILE9BQU8sRUFBQyxjQUFjLEVBQUUsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0QsT0FBTyxFQUFDLHFCQUFxQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVV0RCxNQUFNLE9BQU8sc0JBQXNCO0lBTy9CLFlBQ1ksS0FBcUIsRUFDdEIsVUFBNkIsRUFDN0IsaUJBQWdELEVBQ2pCLE1BQXVCO1FBSHJELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBK0I7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFSMUQsb0JBQWUsR0FBYyxrQkFBa0IsQ0FBQztRQUNoRCxrQkFBYSxHQUFjLGdCQUFnQixDQUFDO1FBQzVDLG9CQUFlLEdBQWMsa0JBQWtCLENBQUM7SUFPcEQsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQy9EO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzRDtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDL0Q7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDMUQsQ0FBQztJQUdELGNBQWMsQ0FBQyxLQUFjO1FBQ3pCLE1BQU0sTUFBTSxHQUFRLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsR0FBRyxNQUFNLEVBQUUsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDaEYsQ0FBQzs4R0FoQ1Esc0JBQXNCLDhIQVduQixvQkFBb0I7a0dBWHZCLHNCQUFzQixrSUFKcEIsQ0FBQyw2QkFBNkIsQ0FBQyx3REFLNUIsb0JBQW9CLGdEQ3RCdEMsczZDQStCQSw0Q0RiYyxPQUFPLCtFQUFFLFNBQVMsOENBQUUscUJBQXFCLDZJQUFFLElBQUksNkZBQUUsWUFBWTs7MkZBRzlELHNCQUFzQjtrQkFSbEMsU0FBUztpQ0FDTSxJQUFJLFlBQ04saUJBQWlCLGFBRWhCLENBQUMsNkJBQTZCLENBQUMsV0FDakMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsbUJBQ3ZELHVCQUF1QixDQUFDLE1BQU07OzBCQWExQyxNQUFNOzJCQUFDLG9CQUFvQjs0Q0FWSSxTQUFTO3NCQUE1QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkE0QmxDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdDbGFzcywgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCwgUXVlcnlMaXN0LCBUeXBlLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyT3V0bGV0fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge01uZ0NvbXBvbmVudERpcmVjdGl2ZSwgTW5nVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtNbmdNb2R1bGVDb25maWd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge01OR19NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2tlbnMnO1xuaW1wb3J0IHtNbmdGb290ZXJDb21wb25lbnR9IGZyb20gJy4vZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge01uZ01lbnVDb21wb25lbnR9IGZyb20gJy4vbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQge01uZ1RvcGJhckNvbXBvbmVudH0gZnJvbSAnLi90b3BiYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1tYWluLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21haW4tbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtNbmdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZV0sXG4gICAgaW1wb3J0czogW05nQ2xhc3MsIEFzeW5jUGlwZSwgTW5nQ29tcG9uZW50RGlyZWN0aXZlLCBOZ0lmLCBSb3V0ZXJPdXRsZXRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ01haW5MYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGRyZW4oTW5nVGVtcGxhdGVEaXJlY3RpdmUpIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxNbmdUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBwdWJsaWMgdG9wYmFyQ29tcG9uZW50OiBUeXBlPGFueT4gPSBNbmdUb3BiYXJDb21wb25lbnQ7XG4gICAgcHVibGljIG1lbnVDb21wb25lbnQ6IFR5cGU8YW55PiA9IE1uZ01lbnVDb21wb25lbnQ7XG4gICAgcHVibGljIGZvb3RlckNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nRm9vdGVyQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwdWJsaWMgbW5nQ29tbW9uczogTW5nQ29tbW9uc1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBtYWluTGF5b3V0U2VydmljZTogTW5nTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTU5HX01PRFVMRV9DT05GSUdfSVQpIHByaXZhdGUgY29uZmlnOiBNbmdNb2R1bGVDb25maWdcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbXBvbmVudHM/LmxheW91dD8udG9wYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnRvcGJhckNvbXBvbmVudCA9IHRoaXMuY29uZmlnLmNvbXBvbmVudHMubGF5b3V0LnRvcGJhcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb25maWcuY29tcG9uZW50cz8ubGF5b3V0Py5tZW51KSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVDb21wb25lbnQgPSB0aGlzLmNvbmZpZy5jb21wb25lbnRzLmxheW91dC5tZW51O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jb21wb25lbnRzPy5sYXlvdXQ/LmZvb3Rlcikge1xuICAgICAgICAgICAgdGhpcy5mb290ZXJDb21wb25lbnQgPSB0aGlzLmNvbmZpZy5jb21wb25lbnRzLmxheW91dC5mb290ZXI7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1haW5MYXlvdXRTZXJ2aWNlLmlubmVyV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgICBvbldpbmRvd1Jlc2l6ZShldmVudDogVUlFdmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQ6IGFueSA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgdGhpcy5tYWluTGF5b3V0U2VydmljZS5pbm5lcldpZHRoID0gdGFyZ2V0Py5pbm5lcldpZHRoID8/IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImxheW91dC13cmFwcGVyXCJcbiAgICAoY2xpY2spPVwibWFpbkxheW91dFNlcnZpY2Uub25MYXlvdXRDbGljaygpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdsYXlvdXQtc3RhdGljJzogbW5nQ29tbW9ucy5tZW51TW9kZUlzU3RhdGljJCB8IGFzeW5jLFxuICAgICAgICAnbGF5b3V0LW92ZXJsYXknOiBtbmdDb21tb25zLm1lbnVNb2RlSXNPdmVybGF5JCB8IGFzeW5jLFxuICAgICAgICAnbGF5b3V0LXNsaW0nOiBtbmdDb21tb25zLm1lbnVNb2RlSXNTbGltJCB8IGFzeW5jLFxuICAgICAgICAnbGF5b3V0LXNpZGViYXInOiBtbmdDb21tb25zLm1lbnVNb2RlSXNTaWRlYmFyJCB8IGFzeW5jLFxuICAgICAgICAnbGF5b3V0LXNpZGViYXItc3RhdGljJzogKG1uZ0NvbW1vbnMubWVudU1vZGVJc1NpZGViYXIkIHwgYXN5bmMpICYmIChtYWluTGF5b3V0U2VydmljZS5zaWRlYmFyU3RhdGljJCB8IGFzeW5jKSxcbiAgICAgICAgJ2xheW91dC1vdmVybGF5LWFjdGl2ZSc6IG1haW5MYXlvdXRTZXJ2aWNlLm92ZXJsYXlNZW51QWN0aXZlJCB8IGFzeW5jLFxuICAgICAgICAnbGF5b3V0LW1vYmlsZS1hY3RpdmUnOiBtYWluTGF5b3V0U2VydmljZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlJCB8IGFzeW5jLFxuICAgICAgICAnbGF5b3V0LXN0YXRpYy1pbmFjdGl2ZSc6IChtYWluTGF5b3V0U2VydmljZS5zdGF0aWNNZW51RGVza3RvcEluYWN0aXZlJCB8IGFzeW5jKSAmJiAobW5nQ29tbW9ucy5tZW51TW9kZUlzU3RhdGljJCB8IGFzeW5jKVxuICAgIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LW1haW5cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbW5nQ29tcG9uZW50XT1cInRvcGJhckNvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgKG1haW5MYXlvdXRTZXJ2aWNlLmlzTW9iaWxlJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgICAoKG1uZ0NvbW1vbnMubWVudU1vZGVJc1N0YXRpYyQgfCBhc3luYykgfHwgKG1uZ0NvbW1vbnMubWVudU1vZGVJc1NsaW0kIHwgYXN5bmMpIHx8IChtbmdDb21tb25zLm1lbnVNb2RlSXNTaWRlYmFyJCB8IGFzeW5jKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbW5nQ29tcG9uZW50XT1cIm1lbnVDb21wb25lbnRcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1tYWluLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbW5nQ29tcG9uZW50XT1cImZvb3RlckNvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
import { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';
|
|
3
|
+
import { Component, EventEmitter, HostBinding, Injector, Input, Output, runInInjectionContext } from '@angular/core';
|
|
4
|
+
import { ActivatedRoute, GuardsCheckEnd, NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';
|
|
5
|
+
// TODO: implement as functional guards!
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
+
import { RippleModule } from 'primeng/ripple';
|
|
8
|
+
import { BehaviorSubject, Observable, combineLatest, distinctUntilChanged, from, of } from 'rxjs';
|
|
9
|
+
import { first, map } from 'rxjs/operators';
|
|
10
|
+
import { MngAuthorizationService } from '../../security';
|
|
11
|
+
import { MngCommonsService, MngRouterService } from '../../services';
|
|
12
|
+
import { RouteUtil } from '../../utils/route.util';
|
|
13
|
+
import { MngMainLayoutComponentService } from './services';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@angular/router";
|
|
16
|
+
import * as i2 from "../../services";
|
|
17
|
+
import * as i3 from "../../security";
|
|
18
|
+
import * as i4 from "./services";
|
|
19
|
+
import * as i5 from "@ngx-translate/core";
|
|
20
|
+
import * as i6 from "primeng/ripple";
|
|
21
|
+
export class MngMenuItemComponent {
|
|
22
|
+
constructor(injector, router, route, mngRouter, authorization, mngCommons, mainLayoutService) {
|
|
23
|
+
this.injector = injector;
|
|
24
|
+
this.router = router;
|
|
25
|
+
this.route = route;
|
|
26
|
+
this.mngRouter = mngRouter;
|
|
27
|
+
this.authorization = authorization;
|
|
28
|
+
this.mngCommons = mngCommons;
|
|
29
|
+
this.mainLayoutService = mainLayoutService;
|
|
30
|
+
this.index = 0;
|
|
31
|
+
this.root = false;
|
|
32
|
+
this.parentKey = null;
|
|
33
|
+
this.visibleChangeEventEmitter = new EventEmitter();
|
|
34
|
+
this.hostClassNoPadding = false;
|
|
35
|
+
this.hostClassChildrenHidden = false;
|
|
36
|
+
this.key = '';
|
|
37
|
+
this.active = false;
|
|
38
|
+
this.hover = false;
|
|
39
|
+
this.guardsIsAllowedSubject = new BehaviorSubject(true);
|
|
40
|
+
this.isPermittedSubject = new BehaviorSubject(true);
|
|
41
|
+
this.isVisibleSubject = new BehaviorSubject(true);
|
|
42
|
+
this.childrenVisibilitySubject = [];
|
|
43
|
+
this.guardsIsAllowed$ = this.guardsIsAllowedSubject.asObservable().pipe(distinctUntilChanged());
|
|
44
|
+
this.isPermitted$ = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());
|
|
45
|
+
this.isVisible$ = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
|
|
49
|
+
if (this.item.routerLink) {
|
|
50
|
+
if (typeof this.item.routerLink === 'string') {
|
|
51
|
+
this.itemUrl = this.item.routerLink;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.itemUrl = this.router.parseUrl(this.item.routerLink.join('/'));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!this.mngCommons.menuModeIsSlim && this.item.routerLink) {
|
|
58
|
+
this.updateActiveStateFromRoute();
|
|
59
|
+
}
|
|
60
|
+
this.menuSourceSubscription = this.mngCommons.menuActiveKey$.subscribe(key => {
|
|
61
|
+
// deactivate current active menu
|
|
62
|
+
if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {
|
|
63
|
+
this.active = false;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
this.menuResetSubscription = this.mngCommons.menuReset$.subscribe(() => {
|
|
67
|
+
this.active = false;
|
|
68
|
+
});
|
|
69
|
+
if (this.item.lazyChildren) {
|
|
70
|
+
this.routeLoadedChildrenSubscription = this.mngRouter.getRouteLoadedChildren$(this.item.routerLink ?? '/').subscribe({
|
|
71
|
+
next: routes => {
|
|
72
|
+
let menuItems = routes.filter(r => Array.isArray(r.data?.menuItems)).flatMap(r => r.data.menuItems);
|
|
73
|
+
menuItems = RouteUtil.adjustMenuLazyChildrenRouterLinks(this.item, menuItems);
|
|
74
|
+
this.item.items = menuItems;
|
|
75
|
+
this.item.lazyChildren = false;
|
|
76
|
+
this.processItemChildrenVisibility();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
this.routerEventsSubscription = this.router.events.subscribe(next => {
|
|
81
|
+
if (next instanceof GuardsCheckEnd && next.shouldActivate) {
|
|
82
|
+
this.checkIfMenuItemIsAllowedFromGuard(next.state);
|
|
83
|
+
}
|
|
84
|
+
else if (next instanceof NavigationEnd) {
|
|
85
|
+
if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {
|
|
86
|
+
this.active = false;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.updateActiveStateFromRoute();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
if (this.item.permissions) {
|
|
94
|
+
this.isPermittedSubscription = this.authorization.isPermitted(this.item.permissions).subscribe({
|
|
95
|
+
next: isPermitted => {
|
|
96
|
+
this.isPermittedSubject.next(isPermitted);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);
|
|
101
|
+
this.isVisibleCombinedSubscription = combineLatest([of(this.item.visible !== false), this.isPermitted$, this.guardsIsAllowed$]).subscribe({
|
|
102
|
+
next: res => {
|
|
103
|
+
const isVisible = res.every(r => r === true);
|
|
104
|
+
this.hostClassNoPadding = !isVisible;
|
|
105
|
+
this.isVisibleSubject.next(isVisible);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
this.isVisibleSubscription = this.isVisible$.subscribe(v => {
|
|
109
|
+
this.visibleChangeEventEmitter.emit(v);
|
|
110
|
+
});
|
|
111
|
+
this.processItemChildrenVisibility();
|
|
112
|
+
}
|
|
113
|
+
updateActiveStateFromRoute() {
|
|
114
|
+
if (this.itemUrl) {
|
|
115
|
+
this.active = this.router.isActive(this.itemUrl, {
|
|
116
|
+
matrixParams: 'ignored',
|
|
117
|
+
queryParams: 'ignored',
|
|
118
|
+
paths: this.item.items ? 'subset' : 'exact',
|
|
119
|
+
fragment: 'ignored'
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.active = false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
itemClick(event) {
|
|
127
|
+
// avoid processing disabled items
|
|
128
|
+
if (this.item.disabled) {
|
|
129
|
+
event.preventDefault();
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// navigate with hover in horizontal mode
|
|
133
|
+
if (this.root) {
|
|
134
|
+
this.mainLayoutService.menuHoverActive = !this.mainLayoutService.menuHoverActive;
|
|
135
|
+
}
|
|
136
|
+
// notify other items
|
|
137
|
+
this.mngCommons.menuChangeActiveKey(this.key);
|
|
138
|
+
// toggle active state
|
|
139
|
+
if (this.item.items) {
|
|
140
|
+
this.active = !this.active;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// activate item
|
|
144
|
+
this.active = true;
|
|
145
|
+
if (this.mainLayoutService.isMobile()) {
|
|
146
|
+
this.mainLayoutService.staticMenuMobileActive = false;
|
|
147
|
+
}
|
|
148
|
+
if (this.mngCommons.menuModeIsOverlay) {
|
|
149
|
+
this.mainLayoutService.overlayMenuActive = false;
|
|
150
|
+
}
|
|
151
|
+
// reset horizontal menu
|
|
152
|
+
if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {
|
|
153
|
+
this.mngCommons.menuReset();
|
|
154
|
+
this.mainLayoutService.menuHoverActive = false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
onMouseEnter() {
|
|
159
|
+
// activate item on hover
|
|
160
|
+
if (this.root && this.mainLayoutService.menuHoverActive && this.mngCommons.menuModeIsSlim && this.mainLayoutService.isDesktop()) {
|
|
161
|
+
this.mngCommons.menuChangeActiveKey(this.key);
|
|
162
|
+
this.active = true;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
ngOnDestroy() {
|
|
166
|
+
this.menuSourceSubscription?.unsubscribe();
|
|
167
|
+
this.menuResetSubscription?.unsubscribe();
|
|
168
|
+
this.routerEventsSubscription?.unsubscribe();
|
|
169
|
+
this.guardsIsAllowedSubscription?.unsubscribe();
|
|
170
|
+
this.isPermittedSubscription?.unsubscribe();
|
|
171
|
+
this.isVisibleSubscription?.unsubscribe();
|
|
172
|
+
this.isVisibleCombinedSubscription?.unsubscribe();
|
|
173
|
+
this.areChildrenVisibleSubscription?.unsubscribe();
|
|
174
|
+
this.routeLoadedChildrenSubscription?.unsubscribe();
|
|
175
|
+
}
|
|
176
|
+
onChildVisibleChange(visible, item, idx) {
|
|
177
|
+
this.childrenVisibilitySubject[idx].next(visible);
|
|
178
|
+
}
|
|
179
|
+
checkIfMenuItemIsAllowedFromGuard(routerState) {
|
|
180
|
+
this.guardsIsAllowedSubscription?.unsubscribe();
|
|
181
|
+
if (this.item.guards?.length) {
|
|
182
|
+
const obs = [];
|
|
183
|
+
for (const guard of this.item.guards) {
|
|
184
|
+
if (guard && typeof guard === 'function') {
|
|
185
|
+
const guardFnInstance = guard;
|
|
186
|
+
runInInjectionContext(this.injector, () => {
|
|
187
|
+
const canActivateRes = guardFnInstance(this.route.snapshot, routerState);
|
|
188
|
+
let canActivateObs;
|
|
189
|
+
if (canActivateRes instanceof Observable) {
|
|
190
|
+
canActivateObs = canActivateRes;
|
|
191
|
+
}
|
|
192
|
+
else if (canActivateRes instanceof Promise) {
|
|
193
|
+
canActivateObs = from(canActivateRes);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
canActivateObs = of(canActivateRes);
|
|
197
|
+
}
|
|
198
|
+
obs.push(canActivateObs.pipe(first(), map(res => res === true) // if url tree is present, that means redirect and implies not allowed
|
|
199
|
+
));
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
this.guardsIsAllowedSubscription = combineLatest(obs)
|
|
204
|
+
.pipe(first())
|
|
205
|
+
.subscribe(next => {
|
|
206
|
+
const result = next.every(n => n === true);
|
|
207
|
+
this.guardsIsAllowedSubject.next(result);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
this.guardsIsAllowedSubject.next(true);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
processItemChildrenVisibility() {
|
|
215
|
+
if (this.item.items) {
|
|
216
|
+
this.childrenVisibilitySubject = this.item.items.map(() => new BehaviorSubject(true));
|
|
217
|
+
this.areChildrenVisibleSubscription = combineLatest(this.childrenVisibilitySubject.map(s => s.asObservable().pipe(distinctUntilChanged()))).subscribe(visible => {
|
|
218
|
+
const anyChildVisible = visible.some(v => v === true);
|
|
219
|
+
this.hostClassChildrenHidden = !anyChildVisible;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngMenuItemComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MngRouterService }, { token: i3.MngAuthorizationService }, { token: i2.MngCommonsService }, { token: i4.MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
224
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MngMenuItemComponent, isStandalone: true, selector: "[mng-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, outputs: { visibleChangeEventEmitter: "visibleChange" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active", "class.py-0": "this.hostClassNoPadding", "class.hidden": "this.hostClassChildrenHidden" } }, ngImport: i0, template: "<ng-container *ngIf=\"isVisible$ | async\">\n <div *ngIf=\"root\" class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n <a\n *ngIf=\"!item.routerLink || item.items\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{paths: 'exact', matrixParams: 'ignored', queryParams: 'ignored', fragment: 'ignored'}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"item.items || (item.items && (mngCommons.menuModeIsStatic$ | async) && root)\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, item, i)\"></li>\n </ng-template>\n </ul>\n</ng-container>\n", dependencies: [{ kind: "component", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "index", "root", "parentKey"], outputs: ["visibleChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
|
|
225
|
+
trigger('children', [
|
|
226
|
+
state('void', style({
|
|
227
|
+
height: '0px'
|
|
228
|
+
})),
|
|
229
|
+
state('hiddenAnimated', style({
|
|
230
|
+
height: '0px'
|
|
231
|
+
})),
|
|
232
|
+
state('visibleAnimated', style({
|
|
233
|
+
height: '*'
|
|
234
|
+
})),
|
|
235
|
+
state('visible', style({
|
|
236
|
+
height: '*',
|
|
237
|
+
'z-index': 100
|
|
238
|
+
})),
|
|
239
|
+
state('hidden', style({
|
|
240
|
+
height: '0px',
|
|
241
|
+
'z-index': '*'
|
|
242
|
+
})),
|
|
243
|
+
transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
244
|
+
transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
245
|
+
transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
|
|
246
|
+
])
|
|
247
|
+
] }); }
|
|
248
|
+
}
|
|
249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngMenuItemComponent, decorators: [{
|
|
250
|
+
type: Component,
|
|
251
|
+
args: [{ standalone: true, selector: '[mng-menuitem]', host: {
|
|
252
|
+
'[class.layout-root-menuitem]': 'root',
|
|
253
|
+
'[class.active-menuitem]': 'active'
|
|
254
|
+
}, imports: [AsyncPipe, TranslateModule, NgClass, NgForOf, NgIf, RippleModule, RouterLink, RouterLinkActive], animations: [
|
|
255
|
+
trigger('children', [
|
|
256
|
+
state('void', style({
|
|
257
|
+
height: '0px'
|
|
258
|
+
})),
|
|
259
|
+
state('hiddenAnimated', style({
|
|
260
|
+
height: '0px'
|
|
261
|
+
})),
|
|
262
|
+
state('visibleAnimated', style({
|
|
263
|
+
height: '*'
|
|
264
|
+
})),
|
|
265
|
+
state('visible', style({
|
|
266
|
+
height: '*',
|
|
267
|
+
'z-index': 100
|
|
268
|
+
})),
|
|
269
|
+
state('hidden', style({
|
|
270
|
+
height: '0px',
|
|
271
|
+
'z-index': '*'
|
|
272
|
+
})),
|
|
273
|
+
transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
274
|
+
transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
275
|
+
transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
|
|
276
|
+
])
|
|
277
|
+
], template: "<ng-container *ngIf=\"isVisible$ | async\">\n <div *ngIf=\"root\" class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n <a\n *ngIf=\"!item.routerLink || item.items\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{paths: 'exact', matrixParams: 'ignored', queryParams: 'ignored', fragment: 'ignored'}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"item.items || (item.items && (mngCommons.menuModeIsStatic$ | async) && root)\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, item, i)\"></li>\n </ng-template>\n </ul>\n</ng-container>\n" }]
|
|
278
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.MngRouterService }, { type: i3.MngAuthorizationService }, { type: i2.MngCommonsService }, { type: i4.MngMainLayoutComponentService }]; }, propDecorators: { item: [{
|
|
279
|
+
type: Input,
|
|
280
|
+
args: [{ required: true }]
|
|
281
|
+
}], index: [{
|
|
282
|
+
type: Input
|
|
283
|
+
}], root: [{
|
|
284
|
+
type: Input
|
|
285
|
+
}], parentKey: [{
|
|
286
|
+
type: Input
|
|
287
|
+
}], visibleChangeEventEmitter: [{
|
|
288
|
+
type: Output,
|
|
289
|
+
args: ['visibleChange']
|
|
290
|
+
}], hostClassNoPadding: [{
|
|
291
|
+
type: HostBinding,
|
|
292
|
+
args: ['class.py-0']
|
|
293
|
+
}], hostClassChildrenHidden: [{
|
|
294
|
+
type: HostBinding,
|
|
295
|
+
args: ['class.hidden']
|
|
296
|
+
}] } });
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbWVudS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvbWVudS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEksT0FBTyxFQUNILGNBQWMsRUFFZCxjQUFjLEVBRWQsYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsZ0JBQWdCLEVBR25CLE1BQU0saUJBQWlCLENBQUM7QUFFekIsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGVBQWUsRUFBRSxVQUFVLEVBQWdCLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixF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QUNGLE1BQU0sRUFBRSxHQUFHOzZCQUNkLENBQUMsQ0FDTDs0QkFDRCxLQUFLLENBQ0QsU0FBUyxFQUNULEtBQUssQ0FBQztnQ0FDRixNQUFNLEVBQUUsR0FBRztnQ0FDWCxTQUFTLEVBQUUsR0FBRzs2QkFDakIsQ0FBQyxDQUNMOzRCQUNELEtBQUssQ0FDRCxRQUFRLEVBQ1IsS0FBSyxDQUFDO2dDQUNGLE1BQU0sRUFBRSxLQUFLO2dDQUNiLFNBQVMsRUFBRSxHQUFHOzZCQUNqQixDQUFDLENBQ0w7NEJBQ0QsVUFBVSxDQUFDLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDOzRCQUNoRyxVQUFVLENBQUMsbUNBQW1DLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7NEJBQ2hHLFVBQVUsQ0FBQyxrREFBa0QsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzt5QkFDbEgsQ0FBQztxQkFDTDtrU0FJd0IsSUFBSTtzQkFBNUIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBQ2QsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVtQix5QkFBeUI7c0JBQWpELE1BQU07dUJBQUMsZUFBZTtnQkFFWSxrQkFBa0I7c0JBQXBELFdBQVc7dUJBQUMsWUFBWTtnQkFDWSx1QkFBdUI7c0JBQTNELFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWN0aXZhdGVkUm91dGUsXG4gICAgQ2FuQWN0aXZhdGVGbixcbiAgICBHdWFyZHNDaGVja0VuZCxcbiAgICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcbiAgICBOYXZpZ2F0aW9uRW5kLFxuICAgIFJvdXRlcixcbiAgICBSb3V0ZXJMaW5rLFxuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbi8vIFRPRE86IGltcGxlbWVudCBhcyBmdW5jdGlvbmFsIGd1YXJkcyFcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZnJvbSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TW5nTWVudUl0ZW19IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ1JvdXRlckRhdGF9IGZyb20gJy4uLy4uL3JvdXRlci9tb2RlbHMnO1xuaW1wb3J0IHtNbmdBdXRob3JpemF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VjdXJpdHknO1xuaW1wb3J0IHtNbmdDb21tb25zU2VydmljZSwgTW5nUm91dGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtSb3V0ZVV0aWx9IGZyb20gJy4uLy4uL3V0aWxzL3JvdXRlLnV0aWwnO1xuaW1wb3J0IHtNbmdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1ttbmctbWVudWl0ZW1dJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubGF5b3V0LXJvb3QtbWVudWl0ZW1dJzogJ3Jvb3QnLFxuICAgICAgICAnW2NsYXNzLmFjdGl2ZS1tZW51aXRlbV0nOiAnYWN0aXZlJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW0FzeW5jUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmLCBSaXBwbGVNb2R1bGUsIFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmVdLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignY2hpbGRyZW4nLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndm9pZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwcHgnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnaGlkZGVuQW5pbWF0ZWQnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMHB4J1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGVBbmltYXRlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgICAgICAgICAgICd6LWluZGV4JzogMTAwXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCcsXG4gICAgICAgICAgICAgICAgICAgICd6LWluZGV4JzogJyonXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlQW5pbWF0ZWQgPT4gaGlkZGVuQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdoaWRkZW5BbmltYXRlZCA9PiB2aXNpYmxlQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IHZpc2libGVBbmltYXRlZCwgdmlzaWJsZUFuaW1hdGVkID0+IHZvaWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSlcbiAgICAgICAgXSlcbiAgICBdXG4gICAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nTWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIGl0ZW0hOiBNbmdNZW51SXRlbTtcbiAgICBASW5wdXQoKSBpbmRleCA9IDA7XG4gICAgQElucHV0KCkgcm9vdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KCd2aXNpYmxlQ2hhbmdlJykgdmlzaWJsZUNoYW5nZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucHktMCcpIHByaXZhdGUgaG9zdENsYXNzTm9QYWRkaW5nID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRkZW4nKSBwcml2YXRlIGhvc3RDbGFzc0NoaWxkcmVuSGlkZGVuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMga2V5ID0gJyc7XG4gICAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBob3ZlciA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBndWFyZHNJc0FsbG93ZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgICBwcml2YXRlIGd1YXJkc0lzQWxsb3dlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHJpdmF0ZSBpc1Blcm1pdHRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICAgIHByaXZhdGUgaXNQZXJtaXR0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHByaXZhdGUgaXNWaXNpYmxlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gICAgcHVibGljIGlzVmlzaWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwcml2YXRlIGNoaWxkcmVuVmlzaWJpbGl0eVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPltdID0gW107XG5cbiAgICBwcml2YXRlIGl0ZW1Vcmw/OiBzdHJpbmcgfCBVcmxUcmVlO1xuICAgIHByaXZhdGUgbWVudVNvdXJjZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIG1lbnVSZXNldFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGd1YXJkc0lzQWxsb3dlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGlzUGVybWl0dGVkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgaXNWaXNpYmxlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgaXNWaXNpYmxlQ29tYmluZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBhcmVDaGlsZHJlblZpc2libGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSByb3V0ZUxvYWRlZENoaWxkcmVuU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBtbmdSb3V0ZXI6IE1uZ1JvdXRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXV0aG9yaXphdGlvbjogTW5nQXV0aG9yaXphdGlvblNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBtbmdDb21tb25zOiBNbmdDb21tb25zU2VydmljZSxcbiAgICAgICAgcHVibGljIG1haW5MYXlvdXRTZXJ2aWNlOiBNbmdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmd1YXJkc0lzQWxsb3dlZCQgPSB0aGlzLmd1YXJkc0lzQWxsb3dlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5pc1Blcm1pdHRlZCQgPSB0aGlzLmlzUGVybWl0dGVkU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSQgPSB0aGlzLmlzVmlzaWJsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5rZXkgPSB0aGlzLnBhcmVudEtleSA/IHRoaXMucGFyZW50S2V5ICsgJy0nICsgdGhpcy5pbmRleCA6IFN0cmluZyh0aGlzLmluZGV4KTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXRlbS5yb3V0ZXJMaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVVybCA9IHRoaXMuaXRlbS5yb3V0ZXJMaW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1VcmwgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLml0ZW0ucm91dGVyTGluay5qb2luKCcvJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc1NsaW0gJiYgdGhpcy5pdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlU3RhdGVGcm9tUm91dGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbiA9IHRoaXMubW5nQ29tbW9ucy5tZW51QWN0aXZlS2V5JC5zdWJzY3JpYmUoa2V5ID0+IHtcbiAgICAgICAgICAgIC8vIGRlYWN0aXZhdGUgY3VycmVudCBhY3RpdmUgbWVudVxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlICYmIHRoaXMua2V5ICE9PSBrZXkgJiYga2V5LmluZGV4T2YodGhpcy5rZXkpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24gPSB0aGlzLm1uZ0NvbW1vbnMubWVudVJlc2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbS5sYXp5Q2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVMb2FkZWRDaGlsZHJlblN1YnNjcmlwdGlvbiA9IHRoaXMubW5nUm91dGVyLmdldFJvdXRlTG9hZGVkQ2hpbGRyZW4kKHRoaXMuaXRlbS5yb3V0ZXJMaW5rID8/ICcvJykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByb3V0ZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWVudUl0ZW1zID0gcm91dGVzLmZpbHRlcihyID0+IEFycmF5LmlzQXJyYXkoKHIuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhIHwgdW5kZWZpbmVkKT8ubWVudUl0ZW1zKSkuZmxhdE1hcChyID0+IChyLmRhdGEgYXMgTW5nUm91dGVyRGF0YSkubWVudUl0ZW1zISk7XG4gICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtcyA9IFJvdXRlVXRpbC5hZGp1c3RNZW51TGF6eUNoaWxkcmVuUm91dGVyTGlua3ModGhpcy5pdGVtLCBtZW51SXRlbXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbS5pdGVtcyA9IG1lbnVJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLmxhenlDaGlsZHJlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0l0ZW1DaGlsZHJlblZpc2liaWxpdHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShuZXh0ID0+IHtcbiAgICAgICAgICAgIGlmIChuZXh0IGluc3RhbmNlb2YgR3VhcmRzQ2hlY2tFbmQgJiYgbmV4dC5zaG91bGRBY3RpdmF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tJZk1lbnVJdGVtSXNBbGxvd2VkRnJvbUd1YXJkKG5leHQuc3RhdGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXh0IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc1NsaW0gJiYgIXRoaXMubWFpbkxheW91dFNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlU3RhdGVGcm9tUm91dGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLml0ZW0ucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQZXJtaXR0ZWRTdWJzY3JpcHRpb24gPSB0aGlzLmF1dGhvcml6YXRpb24uaXNQZXJtaXR0ZWQodGhpcy5pdGVtLnBlcm1pc3Npb25zKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGlzUGVybWl0dGVkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YmplY3QubmV4dChpc1Blcm1pdHRlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrSWZNZW51SXRlbUlzQWxsb3dlZEZyb21HdWFyZCh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCk7XG5cbiAgICAgICAgdGhpcy5pc1Zpc2libGVDb21iaW5lZFN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW29mKHRoaXMuaXRlbS52aXNpYmxlICE9PSBmYWxzZSksIHRoaXMuaXNQZXJtaXR0ZWQkLCB0aGlzLmd1YXJkc0lzQWxsb3dlZCRdKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSByZXMuZXZlcnkociA9PiByID09PSB0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3RDbGFzc05vUGFkZGluZyA9ICFpc1Zpc2libGU7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJqZWN0Lm5leHQoaXNWaXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uID0gdGhpcy5pc1Zpc2libGUkLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZUV2ZW50RW1pdHRlci5lbWl0KHYpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NJdGVtQ2hpbGRyZW5WaXNpYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQWN0aXZlU3RhdGVGcm9tUm91dGUoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1VcmwpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5yb3V0ZXIuaXNBY3RpdmUodGhpcy5pdGVtVXJsLCA8SXNBY3RpdmVNYXRjaE9wdGlvbnM+e1xuICAgICAgICAgICAgICAgIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnLFxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiAnaWdub3JlZCcsXG4gICAgICAgICAgICAgICAgcGF0aHM6IHRoaXMuaXRlbS5pdGVtcyA/ICdzdWJzZXQnIDogJ2V4YWN0JyxcbiAgICAgICAgICAgICAgICBmcmFnbWVudDogJ2lnbm9yZWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpdGVtQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIGF2b2lkIHByb2Nlc3NpbmcgZGlzYWJsZWQgaXRlbXNcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG5hdmlnYXRlIHdpdGggaG92ZXIgaW4gaG9yaXpvbnRhbCBtb2RlXG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dFNlcnZpY2UubWVudUhvdmVyQWN0aXZlID0gIXRoaXMubWFpbkxheW91dFNlcnZpY2UubWVudUhvdmVyQWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm90aWZ5IG90aGVyIGl0ZW1zXG4gICAgICAgIHRoaXMubW5nQ29tbW9ucy5tZW51Q2hhbmdlQWN0aXZlS2V5KHRoaXMua2V5KTtcblxuICAgICAgICAvLyB0b2dnbGUgYWN0aXZlIHN0YXRlXG4gICAgICAgIGlmICh0aGlzLml0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gYWN0aXZhdGUgaXRlbVxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tYWluTGF5b3V0U2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0U2VydmljZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc092ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5MYXlvdXRTZXJ2aWNlLm92ZXJsYXlNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlc2V0IGhvcml6b250YWwgbWVudVxuICAgICAgICAgICAgaWYgKHRoaXMubW5nQ29tbW9ucy5tZW51TW9kZUlzU2xpbSAmJiAhdGhpcy5tYWluTGF5b3V0U2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tbmdDb21tb25zLm1lbnVSZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbkxheW91dFNlcnZpY2UubWVudUhvdmVyQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICAgIC8vIGFjdGl2YXRlIGl0ZW0gb24gaG92ZXJcbiAgICAgICAgaWYgKHRoaXMucm9vdCAmJiB0aGlzLm1haW5MYXlvdXRTZXJ2aWNlLm1lbnVIb3ZlckFjdGl2ZSAmJiB0aGlzLm1uZ0NvbW1vbnMubWVudU1vZGVJc1NsaW0gJiYgdGhpcy5tYWluTGF5b3V0U2VydmljZS5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgdGhpcy5tbmdDb21tb25zLm1lbnVDaGFuZ2VBY3RpdmVLZXkodGhpcy5rZXkpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmd1YXJkc0lzQWxsb3dlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc1Blcm1pdHRlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5pc1Zpc2libGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlQ29tYmluZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuYXJlQ2hpbGRyZW5WaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgb25DaGlsZFZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbiwgaXRlbTogTW5nTWVudUl0ZW0sIGlkeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW5WaXNpYmlsaXR5U3ViamVjdFtpZHhdLm5leHQodmlzaWJsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0lmTWVudUl0ZW1Jc0FsbG93ZWRGcm9tR3VhcmQocm91dGVyU3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgdGhpcy5ndWFyZHNJc0FsbG93ZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLml0ZW0uZ3VhcmRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG9iczogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT5bXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBndWFyZCBvZiB0aGlzLml0ZW0uZ3VhcmRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGd1YXJkICYmIHR5cGVvZiBndWFyZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBndWFyZEZuSW5zdGFuY2UgPSBndWFyZCBhcyBDYW5BY3RpdmF0ZUZuO1xuXG4gICAgICAgICAgICAgICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5BY3RpdmF0ZVJlcyA9IGd1YXJkRm5JbnN0YW5jZSh0aGlzLnJvdXRlLnNuYXBzaG90LCByb3V0ZXJTdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYW5BY3RpdmF0ZU9iczogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuQWN0aXZhdGVSZXMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVPYnMgPSBjYW5BY3RpdmF0ZVJlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuQWN0aXZhdGVSZXMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVPYnMgPSBmcm9tKGNhbkFjdGl2YXRlUmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVPYnMgPSBvZihjYW5BY3RpdmF0ZVJlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5BY3RpdmF0ZU9icy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHJlcyA9PT0gdHJ1ZSkgLy8gaWYgdXJsIHRyZWUgaXMgcHJlc2VudCwgdGhhdCBtZWFucyByZWRpcmVjdCBhbmQgaW1wbGllcyBub3QgYWxsb3dlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ3VhcmRzSXNBbGxvd2VkU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChvYnMpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKG5leHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXh0LmV2ZXJ5KG4gPT4gbiA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3VhcmRzSXNBbGxvd2VkU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmd1YXJkc0lzQWxsb3dlZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0l0ZW1DaGlsZHJlblZpc2liaWxpdHkoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5WaXNpYmlsaXR5U3ViamVjdCA9IHRoaXMuaXRlbS5pdGVtcy5tYXAoKCkgPT4gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKSk7XG5cbiAgICAgICAgICAgIHRoaXMuYXJlQ2hpbGRyZW5WaXNpYmxlU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdCh0aGlzLmNoaWxkcmVuVmlzaWJpbGl0eVN1YmplY3QubWFwKHMgPT4gcy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpKSkuc3Vic2NyaWJlKHZpc2libGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFueUNoaWxkVmlzaWJsZSA9IHZpc2libGUuc29tZSh2ID0+IHYgPT09IHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdENsYXNzQ2hpbGRyZW5IaWRkZW4gPSAhYW55Q2hpbGRWaXNpYmxlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNWaXNpYmxlJCB8IGFzeW5jXCI+XG4gICAgPGRpdiAqbmdJZj1cInJvb3RcIiBjbGFzcz1cImxheW91dC1tZW51aXRlbS1yb290LXRleHRcIj5cbiAgICAgICAge3sgaXRlbS5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8YVxuICAgICAgICAqbmdJZj1cIiFpdGVtLnJvdXRlckxpbmsgfHwgaXRlbS5pdGVtc1wiXG4gICAgICAgIFthdHRyLmhyZWZdPVwiaXRlbS5ocmVmXCJcbiAgICAgICAgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICAgICAgIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzTmFtZSA/PyAnJ1wiXG4gICAgICAgIHBSaXBwbGU+XG4gICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvbiA/PyAnJ1wiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLWljb25cIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXRleHRcIj57eyBpdGVtLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1hbmdsZS1kb3duIGxheW91dC1zdWJtZW51LXRvZ2dsZXJcIiAqbmdJZj1cIml0ZW0uaXRlbXMgfHwgaXRlbS5sYXp5Q2hpbGRyZW5cIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIj57eyBpdGVtLmJhZGdlIH19PC9zcGFuPlxuICAgIDwvYT5cbiAgICA8YVxuICAgICAgICAqbmdJZj1cIml0ZW0ucm91dGVyTGluayAmJiAhaXRlbS5pdGVtc1wiXG4gICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyID0gdHJ1ZVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyID0gZmFsc2VcIlxuICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlLW1lbnVpdGVtLXJvdXRlcmxpbmtcIlxuICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie3BhdGhzOiAnZXhhY3QnLCBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJywgcXVlcnlQYXJhbXM6ICdpZ25vcmVkJywgZnJhZ21lbnQ6ICdpZ25vcmVkJ31cIlxuICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc05hbWUgPz8gJydcIlxuICAgICAgICBwUmlwcGxlPlxuICAgICAgICA8aSBbbmdDbGFzc109XCJpdGVtLmljb24gPz8gJydcIiBjbGFzcz1cImxheW91dC1tZW51aXRlbS1pY29uXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxheW91dC1tZW51aXRlbS10ZXh0XCI+e3sgaXRlbS5sYWJlbCEgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktYW5nbGUtZG93biBsYXlvdXQtc3VibWVudS10b2dnbGVyXCIgKm5nSWY9XCJpdGVtLml0ZW1zIHx8IGl0ZW0ubGF6eUNoaWxkcmVuXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCI+e3sgaXRlbS5iYWRnZSB9fTwvc3Bhbj5cbiAgICA8L2E+XG4gICAgPHVsXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pdGVtcyB8fCAoaXRlbS5pdGVtcyAmJiAobW5nQ29tbW9ucy5tZW51TW9kZUlzU3RhdGljJCB8IGFzeW5jKSAmJiByb290KVwiXG4gICAgICAgIFtAY2hpbGRyZW5dPVwiXG4gICAgICAgICAgICAobW5nQ29tbW9ucy5tZW51TW9kZUlzU2xpbSQgfCBhc3luYykgJiYgKG1haW5MYXlvdXRTZXJ2aWNlLmlzTW9iaWxlJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiYgcm9vdFxuICAgICAgICAgICAgICAgID8gYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gJ3Zpc2libGUnXG4gICAgICAgICAgICAgICAgICAgIDogJ2hpZGRlbidcbiAgICAgICAgICAgICAgICA6IChtbmdDb21tb25zLm1lbnVNb2RlSXNTdGF0aWMkIHwgYXN5bmMpICYmIHJvb3QgJiYgKG1haW5MYXlvdXRTZXJ2aWNlLmlzTW9iaWxlJCB8IGFzeW5jKSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgIDogYWN0aXZlXG4gICAgICAgICAgICAgICAgPyAndmlzaWJsZUFuaW1hdGVkJ1xuICAgICAgICAgICAgICAgIDogJ2hpZGRlbkFuaW1hdGVkJ1xuICAgICAgICBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jaGlsZCBsZXQtaT1cImluZGV4XCIgW25nRm9yT2ZdPVwiaXRlbS5pdGVtc1wiPlxuICAgICAgICAgICAgPGxpIG1uZy1tZW51aXRlbSBbaXRlbV09XCJjaGlsZFwiIFtpbmRleF09XCJpXCIgW3BhcmVudEtleV09XCJrZXlcIiBbY2xhc3NdPVwiY2hpbGQuYmFkZ2VDbGFzc05hbWVcIiAodmlzaWJsZUNoYW5nZSk9XCJvbkNoaWxkVmlzaWJsZUNoYW5nZSgkZXZlbnQsIGl0ZW0sIGkpXCI+PC9saT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3VsPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -24,11 +24,11 @@ export class MngMenuComponent {
|
|
|
24
24
|
this.menuItems = this.route.snapshot.data.menuItems;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngMenuComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.MngCommonsService }, { token: i3.MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MngMenuComponent, isStandalone: true, selector: "mng-menu", ngImport: i0, template: "<div\n class=\"layout-menu-wrapper\"\n [ngClass]=\"{'layout-sidebar-active': (mainLayoutService.sidebarActive$ | async)}\"\n (click)=\"mainLayoutService.onSidebarClick($event)\"\n (mouseover)=\"mainLayoutService.onSidebarMouseOver($event)\"\n (mouseleave)=\"mainLayoutService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\">\n <a routerLink=\"/\" class=\"logo\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" />\n </a>\n\n <a routerLink=\"/\" class=\"app-name\" *ngIf=\"(mngCommons.menuModeIsSlim$ | async) === false || (mainLayoutService.isMobile$ | async)\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" />\n </a>\n <a *ngIf=\"mngCommons.menuPinEnabled\" class=\"menu-pin\" (click)=\"mainLayoutService.onToggleMenu($event)\">\n <span *ngIf=\"mngCommons.menuModeIsOverlay$ | async\" class=\"pi pi-times\"></span>\n <span\n *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) === false && (mainLayoutService.pinActive$ | async)\"\n class=\"pi pi-unlock\"></span>\n <span *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) && (mainLayoutService.pinActive$ | async)\" class=\"pi pi-lock\"></span>\n </a>\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menuItems; let i = index\">\n <li mng-menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"menu-separator\"></li>\n </ng-container>\n </ul>\n </div>\n\n <div class=\"menu-version\">\n <mng-version [version]=\"mngCommons.appVersion\"></mng-version>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "index", "root", "parentKey"], outputs: ["visibleChange"] }, { kind: "component", type: MngVersionComponent, selector: "mng-version", inputs: ["version"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
29
|
}
|
|
28
|
-
|
|
29
|
-
MngMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngMenuComponent, isStandalone: true, selector: "mng-menu", ngImport: i0, template: "<div\n class=\"layout-menu-wrapper\"\n [ngClass]=\"{'layout-sidebar-active': (mainLayoutService.sidebarActive$ | async)}\"\n (click)=\"mainLayoutService.onSidebarClick($event)\"\n (mouseover)=\"mainLayoutService.onSidebarMouseOver($event)\"\n (mouseleave)=\"mainLayoutService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\">\n <a routerLink=\"/\" class=\"logo\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" />\n </a>\n\n <a routerLink=\"/\" class=\"app-name\" *ngIf=\"(mngCommons.menuModeIsSlim$ | async) === false || (mainLayoutService.isMobile$ | async)\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" />\n </a>\n <a *ngIf=\"mngCommons.menuPinEnabled\" class=\"menu-pin\" (click)=\"mainLayoutService.onToggleMenu($event)\">\n <span *ngIf=\"mngCommons.menuModeIsOverlay$ | async\" class=\"pi pi-times\"></span>\n <span\n *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) === false && (mainLayoutService.pinActive$ | async)\"\n class=\"pi pi-unlock\"></span>\n <span *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) && (mainLayoutService.pinActive$ | async)\" class=\"pi pi-lock\"></span>\n </a>\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menuItems; let i = index\">\n <li mng-menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"menu-separator\"></li>\n </ng-container>\n </ul>\n </div>\n\n <div class=\"menu-version\">\n <mng-version [version]=\"mngCommons.appVersion\"></mng-version>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "index", "root", "parentKey"], outputs: ["visibleChange"] }, { kind: "component", type: MngVersionComponent, selector: "mng-version", inputs: ["version"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngMenuComponent, decorators: [{
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngMenuComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ standalone: true, selector: 'mng-menu', imports: [NgClass, AsyncPipe, NgIf, NgForOf, MngMenuItemComponent, MngVersionComponent, RouterLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"layout-menu-wrapper\"\n [ngClass]=\"{'layout-sidebar-active': (mainLayoutService.sidebarActive$ | async)}\"\n (click)=\"mainLayoutService.onSidebarClick($event)\"\n (mouseover)=\"mainLayoutService.onSidebarMouseOver($event)\"\n (mouseleave)=\"mainLayoutService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\">\n <a routerLink=\"/\" class=\"logo\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" />\n </a>\n\n <a routerLink=\"/\" class=\"app-name\" *ngIf=\"(mngCommons.menuModeIsSlim$ | async) === false || (mainLayoutService.isMobile$ | async)\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" />\n </a>\n <a *ngIf=\"mngCommons.menuPinEnabled\" class=\"menu-pin\" (click)=\"mainLayoutService.onToggleMenu($event)\">\n <span *ngIf=\"mngCommons.menuModeIsOverlay$ | async\" class=\"pi pi-times\"></span>\n <span\n *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) === false && (mainLayoutService.pinActive$ | async)\"\n class=\"pi pi-unlock\"></span>\n <span *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) && (mainLayoutService.pinActive$ | async)\" class=\"pi pi-lock\"></span>\n </a>\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menuItems; let i = index\">\n <li mng-menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"menu-separator\"></li>\n </ng-container>\n </ul>\n </div>\n\n <div class=\"menu-version\">\n <mng-version [version]=\"mngCommons.appVersion\"></mng-version>\n </div>\n</div>\n" }]
|
|
33
33
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.MngCommonsService }, { type: i3.MngMainLayoutComponentService }]; } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L21lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxjQUFjLEVBQUUsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJM0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVN4RCxNQUFNLE9BQU8sZ0JBQWdCO0lBR3pCLFlBQW9CLEtBQXFCLEVBQVMsVUFBNkIsRUFBUyxpQkFBZ0Q7UUFBcEgsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUFTLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBK0I7UUFGakksY0FBUyxHQUF1QixFQUFFLENBQUM7SUFFaUcsQ0FBQztJQUU1SSxRQUFRO1FBQ0osSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztTQUM5QzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFrQyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQzFGLElBQUksQ0FBQyxTQUFTLEdBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBc0IsQ0FBQyxTQUFVLENBQUM7U0FDM0U7SUFDTCxDQUFDOzhHQVhRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLG9FQ2xCN0IsaTlEQW9DQSw0Q0RyQmMsT0FBTywrRUFBRSxTQUFTLDhDQUFFLElBQUksNkZBQUUsT0FBTyxtSEFBRSxvQkFBb0IsdUlBQUUsbUJBQW1CLDZFQUFFLFVBQVU7OzJGQUd6RixnQkFBZ0I7a0JBUDVCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLFVBQVUsV0FFWCxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLENBQUMsbUJBQ2xGLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3JPZiwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7TW5nTWVudUl0ZW19IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ1JvdXRlckRhdGF9IGZyb20gJy4uLy4uL3JvdXRlci9tb2RlbHMnO1xuaW1wb3J0IHtNbmdDb21tb25zU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtNbmdNZW51SXRlbUNvbXBvbmVudH0gZnJvbSAnLi9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7TW5nTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHtNbmdWZXJzaW9uQ29tcG9uZW50fSBmcm9tICcuL3ZlcnNpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW05nQ2xhc3MsIEFzeW5jUGlwZSwgTmdJZiwgTmdGb3JPZiwgTW5nTWVudUl0ZW1Db21wb25lbnQsIE1uZ1ZlcnNpb25Db21wb25lbnQsIFJvdXRlckxpbmtdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ01lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyBtZW51SXRlbXM6IEFycmF5PE1uZ01lbnVJdGVtPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHB1YmxpYyBtbmdDb21tb25zOiBNbmdDb21tb25zU2VydmljZSwgcHVibGljIG1haW5MYXlvdXRTZXJ2aWNlOiBNbmdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm1uZ0NvbW1vbnMubWVudUl0ZW1zKSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMgPSB0aGlzLm1uZ0NvbW1vbnMubWVudUl0ZW1zO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoKHRoaXMucm91dGUuc25hcHNob3QuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhIHwgdW5kZWZpbmVkKT8ubWVudUl0ZW1zKSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMgPSAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhIGFzIE1uZ1JvdXRlckRhdGEpLm1lbnVJdGVtcyE7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJsYXlvdXQtbWVudS13cmFwcGVyXCJcbiAgICBbbmdDbGFzc109XCJ7J2xheW91dC1zaWRlYmFyLWFjdGl2ZSc6IChtYWluTGF5b3V0U2VydmljZS5zaWRlYmFyQWN0aXZlJCB8IGFzeW5jKX1cIlxuICAgIChjbGljayk9XCJtYWluTGF5b3V0U2VydmljZS5vblNpZGViYXJDbGljaygkZXZlbnQpXCJcbiAgICAobW91c2VvdmVyKT1cIm1haW5MYXlvdXRTZXJ2aWNlLm9uU2lkZWJhck1vdXNlT3ZlcigkZXZlbnQpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJtYWluTGF5b3V0U2VydmljZS5vblNpZGViYXJNb3VzZUxlYXZlKCRldmVudClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWVudS1sb2dvXCI+XG4gICAgICAgIDxhIHJvdXRlckxpbms9XCIvXCIgY2xhc3M9XCJsb2dvXCI+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwibW5nQ29tbW9ucy5jb2xvclNjaGVtZUlzTGlnaHQgPyBtbmdDb21tb25zLmFwcExvZ29EYXJrIDogbW5nQ29tbW9ucy5hcHBMb2dvTGlnaHRcIiAvPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPGEgcm91dGVyTGluaz1cIi9cIiBjbGFzcz1cImFwcC1uYW1lXCIgKm5nSWY9XCIobW5nQ29tbW9ucy5tZW51TW9kZUlzU2xpbSQgfCBhc3luYykgPT09IGZhbHNlIHx8IChtYWluTGF5b3V0U2VydmljZS5pc01vYmlsZSQgfCBhc3luYylcIj5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtbmdDb21tb25zLmNvbG9yU2NoZW1lSXNMaWdodCA/IG1uZ0NvbW1vbnMuYXBwTG9nb05hbWVEYXJrIDogbW5nQ29tbW9ucy5hcHBMb2dvTmFtZUxpZ2h0XCIgLz5cbiAgICAgICAgPC9hPlxuICAgICAgICA8YSAqbmdJZj1cIm1uZ0NvbW1vbnMubWVudVBpbkVuYWJsZWRcIiBjbGFzcz1cIm1lbnUtcGluXCIgKGNsaWNrKT1cIm1haW5MYXlvdXRTZXJ2aWNlLm9uVG9nZ2xlTWVudSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1uZ0NvbW1vbnMubWVudU1vZGVJc092ZXJsYXkkIHwgYXN5bmNcIiBjbGFzcz1cInBpIHBpLXRpbWVzXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIihtbmdDb21tb25zLm1lbnVNb2RlSXNTaWRlYmFyJCB8IGFzeW5jKSAmJiAobWFpbkxheW91dFNlcnZpY2Uuc2lkZWJhclN0YXRpYyQgfCBhc3luYykgPT09IGZhbHNlICYmIChtYWluTGF5b3V0U2VydmljZS5waW5BY3RpdmUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBpIHBpLXVubG9ja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKG1uZ0NvbW1vbnMubWVudU1vZGVJc1NpZGViYXIkIHwgYXN5bmMpICYmIChtYWluTGF5b3V0U2VydmljZS5zaWRlYmFyU3RhdGljJCB8IGFzeW5jKSAmJiAobWFpbkxheW91dFNlcnZpY2UucGluQWN0aXZlJCB8IGFzeW5jKVwiIGNsYXNzPVwicGkgcGktbG9ja1wiPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImxheW91dC1tZW51LWNvbnRhaW5lclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJsYXlvdXQtbWVudVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8bGkgbW5nLW1lbnVpdGVtICpuZ0lmPVwiIWl0ZW0uc2VwYXJhdG9yXCIgW2l0ZW1dPVwiaXRlbVwiIFtpbmRleF09XCJpXCIgW3Jvb3RdPVwidHJ1ZVwiPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiaXRlbS5zZXBhcmF0b3JcIiBjbGFzcz1cIm1lbnUtc2VwYXJhdG9yXCI+PC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3VsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtdmVyc2lvblwiPlxuICAgICAgICA8bW5nLXZlcnNpb24gW3ZlcnNpb25dPVwibW5nQ29tbW9ucy5hcHBWZXJzaW9uXCI+PC9tbmctdmVyc2lvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|