@netgrif/components-core 6.0.1
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/LICENSE +132 -0
- package/README.md +105 -0
- package/bundles/netgrif-components-core.umd.js +32298 -0
- package/bundles/netgrif-components-core.umd.js.map +1 -0
- package/bundles/netgrif-components-core.umd.min.js +17 -0
- package/bundles/netgrif-components-core.umd.min.js.map +1 -0
- package/commons/angular-cli-devkit-core-strings.d.ts +93 -0
- package/commons/import-to-add.d.ts +5 -0
- package/commons/schema.d.ts +277 -0
- package/commons/view-class-info.d.ts +22 -0
- package/esm2015/assets/i18n/de.json +419 -0
- package/esm2015/assets/i18n/en.json +419 -0
- package/esm2015/assets/i18n/sk.json +419 -0
- package/esm2015/commons/angular-cli-devkit-core-strings.js +157 -0
- package/esm2015/commons/import-to-add.js +7 -0
- package/esm2015/commons/schema.js +7 -0
- package/esm2015/commons/view-class-info.js +52 -0
- package/esm2015/lib/admin/public-api.js +9 -0
- package/esm2015/lib/admin/role-assignment/abstract-role-assignment.js +77 -0
- package/esm2015/lib/admin/role-assignment/services/ProcessList.js +155 -0
- package/esm2015/lib/admin/role-assignment/services/role-assignment.service.js +40 -0
- package/esm2015/lib/admin/user-invite/abstract-user-invite.component.js +77 -0
- package/esm2015/lib/admin/user-invite/services/organization-list.service.js +63 -0
- package/esm2015/lib/admin/user-invite/services/user-invite.service.js +31 -0
- package/esm2015/lib/allowed-nets/public-api.js +4 -0
- package/esm2015/lib/allowed-nets/services/allowed-nets.service.js +74 -0
- package/esm2015/lib/allowed-nets/services/base-allowed-nets.service.js +54 -0
- package/esm2015/lib/allowed-nets/services/factory/allowed-nets-service-factory.js +129 -0
- package/esm2015/lib/authentication/anonymous/anonymous.service.js +63 -0
- package/esm2015/lib/authentication/authentication.factory.js +16 -0
- package/esm2015/lib/authentication/authentication.module.js +32 -0
- package/esm2015/lib/authentication/components/abstract-authentication-overlay.js +50 -0
- package/esm2015/lib/authentication/models/credentials.js +2 -0
- package/esm2015/lib/authentication/models/public-api.js +5 -0
- package/esm2015/lib/authentication/models/transformer.js +2 -0
- package/esm2015/lib/authentication/models/user.transformer.js +19 -0
- package/esm2015/lib/authentication/public-api.js +14 -0
- package/esm2015/lib/authentication/services/anonymous-authentication-interceptor.js +44 -0
- package/esm2015/lib/authentication/services/authentication/authentication.service.js +71 -0
- package/esm2015/lib/authentication/services/authentication-interceptor.js +52 -0
- package/esm2015/lib/authentication/services/authentication-method.service.js +5 -0
- package/esm2015/lib/authentication/services/guard/authentication-guard.service.js +39 -0
- package/esm2015/lib/authentication/services/methods/basic-authentication/basic-authentication.service.js +48 -0
- package/esm2015/lib/authentication/services/methods/null-authentication/null-authentication.service.js +19 -0
- package/esm2015/lib/authentication/services/public-api.js +7 -0
- package/esm2015/lib/authentication/session/null-storage.js +15 -0
- package/esm2015/lib/authentication/session/public-api.js +3 -0
- package/esm2015/lib/authentication/session/services/session.service.js +156 -0
- package/esm2015/lib/authentication/sign-up/models/user-invitation-request.js +2 -0
- package/esm2015/lib/authentication/sign-up/models/user-registration-request.js +2 -0
- package/esm2015/lib/authentication/sign-up/public-api.js +8 -0
- package/esm2015/lib/authentication/sign-up/services/sign-up.service.js +105 -0
- package/esm2015/lib/authentication/sign-up/sign-up.module.js +13 -0
- package/esm2015/lib/authorization/authority/authority-guard.service.js +50 -0
- package/esm2015/lib/authorization/group/group-guard.service.js +67 -0
- package/esm2015/lib/authorization/permission/permission.service.js +116 -0
- package/esm2015/lib/authorization/public-api.js +10 -0
- package/esm2015/lib/authorization/role/role-guard.service.js +105 -0
- package/esm2015/lib/changed-fields/public-api.js +2 -0
- package/esm2015/lib/changed-fields/services/changed-fields.service.js +32 -0
- package/esm2015/lib/configuration/configuration.service.js +190 -0
- package/esm2015/lib/configuration/public-api.js +3 -0
- package/esm2015/lib/covalent/covalent.module.js +22 -0
- package/esm2015/lib/currency/currency.module.js +23 -0
- package/esm2015/lib/dashboard/cards/count-card/abstract-count-card.js +39 -0
- package/esm2015/lib/dashboard/cards/custom-card/abstract-custom-card.js +47 -0
- package/esm2015/lib/dashboard/cards/iframe-card/abstract-iframe-card.js +14 -0
- package/esm2015/lib/dashboard/cards/model/card-grid-element.js +2 -0
- package/esm2015/lib/dashboard/cards/model/count-card.js +2 -0
- package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/aggregation-query.js +2 -0
- package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/aggregation-result.js +2 -0
- package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/custom-card.js +2 -0
- package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/dashboard-event-content.js +2 -0
- package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/dashboard-multi-data.js +7 -0
- package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/dashboard-single-data.js +7 -0
- package/esm2015/lib/dashboard/cards/model/dashboard-card-types.js +13 -0
- package/esm2015/lib/dashboard/cards/model/dashboard-card.js +2 -0
- package/esm2015/lib/dashboard/cards/model/graph-card.js +2 -0
- package/esm2015/lib/dashboard/cards/model/iframe-card.js +2 -0
- package/esm2015/lib/dashboard/dashboard-content/abstract-dashboard-content.js +19 -0
- package/esm2015/lib/dashboard/dashboard-content/dashboard-params.js +2 -0
- package/esm2015/lib/dashboard/public-api.js +20 -0
- package/esm2015/lib/data-fields/boolean-field/abstract-boolean-field.component.js +40 -0
- package/esm2015/lib/data-fields/boolean-field/models/boolean-field.js +24 -0
- package/esm2015/lib/data-fields/button-field/abstract-button-field.component.js +62 -0
- package/esm2015/lib/data-fields/button-field/models/button-field.js +27 -0
- package/esm2015/lib/data-fields/data-field-template/abstract-data-field-template.component.js +101 -0
- package/esm2015/lib/data-fields/data-field-template/models/wrapped-boolean.js +6 -0
- package/esm2015/lib/data-fields/data-fields.module.js +35 -0
- package/esm2015/lib/data-fields/date-field/abstract-date-field.component.js +21 -0
- package/esm2015/lib/data-fields/date-field/models/custom-date-adapter.js +11 -0
- package/esm2015/lib/data-fields/date-field/models/date-field.js +10 -0
- package/esm2015/lib/data-fields/date-time-field/abstract-date-time-field.component.js +21 -0
- package/esm2015/lib/data-fields/date-time-field/models/date-time-field.js +10 -0
- package/esm2015/lib/data-fields/enumeration-field/abstract-enumeration-field.component.js +17 -0
- package/esm2015/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.js +43 -0
- package/esm2015/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.js +53 -0
- package/esm2015/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.js +37 -0
- package/esm2015/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.js +11 -0
- package/esm2015/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.js +11 -0
- package/esm2015/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.js +40 -0
- package/esm2015/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.js +44 -0
- package/esm2015/lib/data-fields/enumeration-field/models/enumeration-field.js +59 -0
- package/esm2015/lib/data-fields/file-field/abstract-file-field.component.js +390 -0
- package/esm2015/lib/data-fields/file-field/abstract-preview-dialog/preview-dialog-data.js +2 -0
- package/esm2015/lib/data-fields/file-field/models/file-field-value.js +2 -0
- package/esm2015/lib/data-fields/file-field/models/file-field.js +106 -0
- package/esm2015/lib/data-fields/file-list-field/abstract-file-list-field.component.js +261 -0
- package/esm2015/lib/data-fields/file-list-field/models/file-list-field-value.js +2 -0
- package/esm2015/lib/data-fields/file-list-field/models/file-list-field.js +83 -0
- package/esm2015/lib/data-fields/filter-field/abstract-filter-field-content.component.js +29 -0
- package/esm2015/lib/data-fields/filter-field/abstract-filter-field.component.js +28 -0
- package/esm2015/lib/data-fields/filter-field/models/filter-field-injection-token.js +7 -0
- package/esm2015/lib/data-fields/filter-field/models/filter-field.js +15 -0
- package/esm2015/lib/data-fields/i18n-field/abstract-i18n-field.component.js +19 -0
- package/esm2015/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.js +26 -0
- package/esm2015/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.js +40 -0
- package/esm2015/lib/data-fields/i18n-field/models/i18n-field-value.js +2 -0
- package/esm2015/lib/data-fields/i18n-field/models/i18n-field.js +10 -0
- package/esm2015/lib/data-fields/models/abstract-data-field-component.js +39 -0
- package/esm2015/lib/data-fields/models/abstract-data-field.js +391 -0
- package/esm2015/lib/data-fields/models/behavior.js +2 -0
- package/esm2015/lib/data-fields/models/boolean-label-enabled-token.js +3 -0
- package/esm2015/lib/data-fields/models/changed-fields.js +2 -0
- package/esm2015/lib/data-fields/models/component.js +2 -0
- package/esm2015/lib/data-fields/models/format-filter.js +2 -0
- package/esm2015/lib/data-fields/models/icon.js +6 -0
- package/esm2015/lib/data-fields/models/invalid-data-policy-token.js +11 -0
- package/esm2015/lib/data-fields/models/layout.js +2 -0
- package/esm2015/lib/data-fields/models/material-appearance.js +14 -0
- package/esm2015/lib/data-fields/models/properties.js +2 -0
- package/esm2015/lib/data-fields/models/template-appearance.js +15 -0
- package/esm2015/lib/data-fields/models/validation.js +2 -0
- package/esm2015/lib/data-fields/multichoice-field/abstract-multichoice-field.component.js +17 -0
- package/esm2015/lib/data-fields/multichoice-field/models/multichoice-field.js +41 -0
- package/esm2015/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.js +9 -0
- package/esm2015/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.js +9 -0
- package/esm2015/lib/data-fields/number-field/abstract-number-errors.component.js +45 -0
- package/esm2015/lib/data-fields/number-field/abstract-number-field.component.js +18 -0
- package/esm2015/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.js +48 -0
- package/esm2015/lib/data-fields/number-field/models/number-field.js +131 -0
- package/esm2015/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.js +7 -0
- package/esm2015/lib/data-fields/public-api.js +73 -0
- package/esm2015/lib/data-fields/task-ref-field/model/task-ref-field.js +7 -0
- package/esm2015/lib/data-fields/text-field/abstract-text-errors.component.js +35 -0
- package/esm2015/lib/data-fields/text-field/abstract-text-field.component.js +15 -0
- package/esm2015/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.js +39 -0
- package/esm2015/lib/data-fields/text-field/models/text-area-field.js +13 -0
- package/esm2015/lib/data-fields/text-field/models/text-field.js +85 -0
- package/esm2015/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.js +17 -0
- package/esm2015/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.js +30 -0
- package/esm2015/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.js +17 -0
- package/esm2015/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.js +40 -0
- package/esm2015/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.js +45 -0
- package/esm2015/lib/data-fields/time-instance-abstract-field/models/abstract-time-instance-field.js +105 -0
- package/esm2015/lib/data-fields/user-field/abstract-user-field.component.js +59 -0
- package/esm2015/lib/data-fields/user-field/models/user-field.js +14 -0
- package/esm2015/lib/data-fields/user-field/models/user-value.js +36 -0
- package/esm2015/lib/dialog/components/alert-dialog/alert-dialog.component.js +38 -0
- package/esm2015/lib/dialog/components/alert-dialog/alert-dialog.module.js +28 -0
- package/esm2015/lib/dialog/components/confirm-dialog/confirm-dialog.component.js +52 -0
- package/esm2015/lib/dialog/components/confirm-dialog/confirm-dialog.module.js +28 -0
- package/esm2015/lib/dialog/components/prompt-dialog/prompt-dialog.component.js +42 -0
- package/esm2015/lib/dialog/components/prompt-dialog/prompt-dialog.module.js +30 -0
- package/esm2015/lib/dialog/dialog.module.js +29 -0
- package/esm2015/lib/dialog/models/DialogData.js +2 -0
- package/esm2015/lib/dialog/models/DialogResult.js +2 -0
- package/esm2015/lib/dialog/models/abstract-dialog.js +21 -0
- package/esm2015/lib/dialog/public-api.js +9 -0
- package/esm2015/lib/dialog/services/dialog.service.js +82 -0
- package/esm2015/lib/event/model/event-constants.js +8 -0
- package/esm2015/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/case-outcomes/create-case-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/case-outcomes/delete-case-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/data-outcomes/get-data-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/data-outcomes/get-data-localised-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/petrinet-outcomes/petri-net-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/task-outcomes/assign-task-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/task-outcomes/cancel-task-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/task-outcomes/delegate-task-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.js +2 -0
- package/esm2015/lib/event/model/event-outcomes/task-outcomes/task-event-outcome.js +2 -0
- package/esm2015/lib/event/public-api.js +19 -0
- package/esm2015/lib/event/services/event.service.js +57 -0
- package/esm2015/lib/event/services/interfaces/changed-fields-map.js +2 -0
- package/esm2015/lib/event-queue/model/queued-event.js +31 -0
- package/esm2015/lib/event-queue/public-api.js +5 -0
- package/esm2015/lib/event-queue/services/event-queue.service.js +63 -0
- package/esm2015/lib/filter/filter.repository.js +141 -0
- package/esm2015/lib/filter/models/case-search-request-body.js +2 -0
- package/esm2015/lib/filter/models/filter-type.js +11 -0
- package/esm2015/lib/filter/models/filter.js +56 -0
- package/esm2015/lib/filter/models/filters-filter-injection-token.js +9 -0
- package/esm2015/lib/filter/models/merge-operator.js +11 -0
- package/esm2015/lib/filter/models/merged-filter-params.js +2 -0
- package/esm2015/lib/filter/models/merged-filter.js +111 -0
- package/esm2015/lib/filter/models/simple-filter.js +91 -0
- package/esm2015/lib/filter/models/task-search-request-body.js +2 -0
- package/esm2015/lib/filter/models/user-filter-constants.js +39 -0
- package/esm2015/lib/filter/public-api.js +18 -0
- package/esm2015/lib/filter/user-filters.service.js +337 -0
- package/esm2015/lib/forms/email-submission/abstract-email-submission-form.component.js +31 -0
- package/esm2015/lib/forms/forgotten-password/abstract-forgotten-password.component.js +32 -0
- package/esm2015/lib/forms/has-form.js +2 -0
- package/esm2015/lib/forms/login/abstract-login-form.component.js +58 -0
- package/esm2015/lib/forms/models/abstract-registration.component.js +94 -0
- package/esm2015/lib/forms/models/password.validator.js +21 -0
- package/esm2015/lib/forms/public-api.js +7 -0
- package/esm2015/lib/forms/registration/abstract-registration-form.component.js +37 -0
- package/esm2015/lib/groups/public-api.js +3 -0
- package/esm2015/lib/groups/services/active-group.service.js +88 -0
- package/esm2015/lib/groups/services/next-group.service.js +104 -0
- package/esm2015/lib/header/abstract-header-service.js +394 -0
- package/esm2015/lib/header/abstract-header.component.js +159 -0
- package/esm2015/lib/header/case-header/case-header.service.js +81 -0
- package/esm2015/lib/header/case-header/case-menta-enum.js +9 -0
- package/esm2015/lib/header/header-modes/abstract-header-mode.component.js +12 -0
- package/esm2015/lib/header/header-modes/edit-mode/abstract-edit-mode.component.js +73 -0
- package/esm2015/lib/header/header-modes/loading-mode/abstract-loading-mode.component.js +13 -0
- package/esm2015/lib/header/header-modes/search-mode/abstract-search-mode.component.js +86 -0
- package/esm2015/lib/header/header-modes/sort-mode/abstract-sort-mode.component.js +15 -0
- package/esm2015/lib/header/header-state.js +43 -0
- package/esm2015/lib/header/models/default-headers-token.js +3 -0
- package/esm2015/lib/header/models/fields-group.js +2 -0
- package/esm2015/lib/header/models/header-column.js +22 -0
- package/esm2015/lib/header/models/header-mode.js +7 -0
- package/esm2015/lib/header/models/header-type.js +7 -0
- package/esm2015/lib/header/models/public-api.js +12 -0
- package/esm2015/lib/header/models/user-changes/column-header-change.js +2 -0
- package/esm2015/lib/header/models/user-changes/edit-change-description.js +2 -0
- package/esm2015/lib/header/models/user-changes/header-change-description.js +2 -0
- package/esm2015/lib/header/models/user-changes/header-change-type.js +20 -0
- package/esm2015/lib/header/models/user-changes/header-change.js +2 -0
- package/esm2015/lib/header/models/user-changes/mode-change-description.js +2 -0
- package/esm2015/lib/header/models/user-changes/search-change-description.js +2 -0
- package/esm2015/lib/header/models/user-changes/sort-change-description.js +2 -0
- package/esm2015/lib/header/public-api.js +21 -0
- package/esm2015/lib/header/services/overflow.service.js +94 -0
- package/esm2015/lib/header/task-header/task-header.service.js +66 -0
- package/esm2015/lib/header/task-header/task-meta-enum.js +11 -0
- package/esm2015/lib/header/workflow-header/workflow-header.service.js +48 -0
- package/esm2015/lib/header/workflow-header/workflow-meta-enum.js +10 -0
- package/esm2015/lib/legal/legal-notice/abstract-legal-notice.component.js +16 -0
- package/esm2015/lib/legal/public-api.js +2 -0
- package/esm2015/lib/logger/models/log-entry.js +61 -0
- package/esm2015/lib/logger/public-api.js +10 -0
- package/esm2015/lib/logger/publishers/console-log-publisher.js +32 -0
- package/esm2015/lib/logger/publishers/local-storage-log-publisher.js +40 -0
- package/esm2015/lib/logger/publishers/log-publisher.js +12 -0
- package/esm2015/lib/logger/services/log-level.js +10 -0
- package/esm2015/lib/logger/services/log-publisher.service.js +59 -0
- package/esm2015/lib/logger/services/logger.service.js +77 -0
- package/esm2015/lib/material/material.module.js +108 -0
- package/esm2015/lib/moment/public-api.js +2 -0
- package/esm2015/lib/moment/time-formats.js +26 -0
- package/esm2015/lib/navigation/group-navigation-component-resolver/abstract-group-navigation-component-resolver.component.js +36 -0
- package/esm2015/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.js +34 -0
- package/esm2015/lib/navigation/group-navigation-component-resolver/group-navigation-view-id-segment-factory.js +5 -0
- package/esm2015/lib/navigation/model/filter-case-injection-token.js +6 -0
- package/esm2015/lib/navigation/model/group-navigation-component-resolver-component-injection-token.js +6 -0
- package/esm2015/lib/navigation/model/group-navigation-constants.js +59 -0
- package/esm2015/lib/navigation/model/group-navigation-item-label.js +2 -0
- package/esm2015/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.js +131 -0
- package/esm2015/lib/navigation/navigation-drawer/abstract-navigation-resizable-drawer.component.js +14 -0
- package/esm2015/lib/navigation/navigation-rail/abstract-navigation-rail.component.js +32 -0
- package/esm2015/lib/navigation/navigation-tree/abstract-navigation-tree.component.js +371 -0
- package/esm2015/lib/navigation/public-api.js +19 -0
- package/esm2015/lib/navigation/quick-panel/components/abstract-quick-panel.component.js +25 -0
- package/esm2015/lib/navigation/quick-panel/components/internal-link/abstract-internal-link.component.js +12 -0
- package/esm2015/lib/navigation/quick-panel/components/language-selector/abstract-language-selector.component.js +52 -0
- package/esm2015/lib/navigation/quick-panel/components/logout-shortcut/abstract-logout-shortcut.component.js +21 -0
- package/esm2015/lib/navigation/quick-panel/components/paper-view.service.js +38 -0
- package/esm2015/lib/navigation/quick-panel/public-api.js +8 -0
- package/esm2015/lib/navigation/utility/filter-extraction.service.js +87 -0
- package/esm2015/lib/navigation/utility/navigation-item-task-utility-methods.js +78 -0
- package/esm2015/lib/panel/abstract/featured-value.js +2 -0
- package/esm2015/lib/panel/abstract/panel-with-header-binding.js +47 -0
- package/esm2015/lib/panel/abstract/panel-with-immediate-data.js +62 -0
- package/esm2015/lib/panel/abstract/tabbed-virtual-scroll.component.js +28 -0
- package/esm2015/lib/panel/abstract-panel.component.js +44 -0
- package/esm2015/lib/panel/case-panel/abstract-case-panel.component.js +88 -0
- package/esm2015/lib/panel/immediate/abstract-immediate-filter-text-content.component.js +38 -0
- package/esm2015/lib/panel/immediate/abstract-immediate-filter-text.component.js +21 -0
- package/esm2015/lib/panel/immediate/model/filter-text-injection-token.js +6 -0
- package/esm2015/lib/panel/public-api.js +15 -0
- package/esm2015/lib/panel/task-panel/abstract-task-panel.component.js +281 -0
- package/esm2015/lib/panel/task-panel/models/disable-functions.js +3 -0
- package/esm2015/lib/panel/task-panel-list/abstract-task-list.component.js +89 -0
- package/esm2015/lib/panel/task-panel-list/task-panel-data/task-panel-data.js +2 -0
- package/esm2015/lib/panel/workflow-panel/abstract-workflow-panel.component.js +103 -0
- package/esm2015/lib/process/net.js +101 -0
- package/esm2015/lib/process/netRole.js +2 -0
- package/esm2015/lib/process/permissions.js +12 -0
- package/esm2015/lib/process/petri-net-reference-with-permissions.js +2 -0
- package/esm2015/lib/process/process.service.js +301 -0
- package/esm2015/lib/process/public-api.js +8 -0
- package/esm2015/lib/process/public-process.service.js +29 -0
- package/esm2015/lib/process/rolesAndPermissions.js +2 -0
- package/esm2015/lib/process/transaction.js +2 -0
- package/esm2015/lib/process/transition.js +2 -0
- package/esm2015/lib/public/factories/get-net-and-create-case.js +22 -0
- package/esm2015/lib/public/factories/public-factory-resolver.js +13 -0
- package/esm2015/lib/public/factories/public-search-factory.js +17 -0
- package/esm2015/lib/public/public-api.js +5 -0
- package/esm2015/lib/public/services/public-url-resolver.service.js +20 -0
- package/esm2015/lib/resources/abstract-endpoint/abstract-resource.service.js +79 -0
- package/esm2015/lib/resources/abstract-endpoint/count-service.js +2 -0
- package/esm2015/lib/resources/engine-endpoint/case-resource.service.js +133 -0
- package/esm2015/lib/resources/engine-endpoint/dashboard-resource.service.js +33 -0
- package/esm2015/lib/resources/engine-endpoint/petri-net-resource.service.js +161 -0
- package/esm2015/lib/resources/engine-endpoint/public/public-case-resource.service.js +46 -0
- package/esm2015/lib/resources/engine-endpoint/public/public-petri-net-resource.service.js +108 -0
- package/esm2015/lib/resources/engine-endpoint/public/public-task-resource.service.js +224 -0
- package/esm2015/lib/resources/engine-endpoint/task-resource.service.js +306 -0
- package/esm2015/lib/resources/engine-endpoint/user-resource.service.js +191 -0
- package/esm2015/lib/resources/interface/assigned-user-policy.js +2 -0
- package/esm2015/lib/resources/interface/author.js +2 -0
- package/esm2015/lib/resources/interface/authority.js +2 -0
- package/esm2015/lib/resources/interface/case-get-request-body.js +2 -0
- package/esm2015/lib/resources/interface/case.js +2 -0
- package/esm2015/lib/resources/interface/changed-field-container.js +2 -0
- package/esm2015/lib/resources/interface/count.js +2 -0
- package/esm2015/lib/resources/interface/create-case-request-body.js +2 -0
- package/esm2015/lib/resources/interface/data-group-layout.js +59 -0
- package/esm2015/lib/resources/interface/data-groups.js +19 -0
- package/esm2015/lib/resources/interface/event-outcome.js +2 -0
- package/esm2015/lib/resources/interface/field-alignment.js +10 -0
- package/esm2015/lib/resources/interface/fields.js +2 -0
- package/esm2015/lib/resources/interface/file-resource.js +2 -0
- package/esm2015/lib/resources/interface/group.js +2 -0
- package/esm2015/lib/resources/interface/immediate-data.js +2 -0
- package/esm2015/lib/resources/interface/link.js +2 -0
- package/esm2015/lib/resources/interface/message-resource.js +2 -0
- package/esm2015/lib/resources/interface/page.js +2 -0
- package/esm2015/lib/resources/interface/pagination.js +2 -0
- package/esm2015/lib/resources/interface/petri-net-object-id.js +2 -0
- package/esm2015/lib/resources/interface/petri-net-reference.js +2 -0
- package/esm2015/lib/resources/interface/petri-net-request-body.js +2 -0
- package/esm2015/lib/resources/interface/petri-net.js +2 -0
- package/esm2015/lib/resources/interface/preferences.js +2 -0
- package/esm2015/lib/resources/interface/process-role.js +2 -0
- package/esm2015/lib/resources/interface/response-data.js +2 -0
- package/esm2015/lib/resources/interface/task-layout.js +2 -0
- package/esm2015/lib/resources/interface/task-reference.js +2 -0
- package/esm2015/lib/resources/interface/task-set-data-request-body.js +2 -0
- package/esm2015/lib/resources/interface/task.js +2 -0
- package/esm2015/lib/resources/interface/user-process-role.js +2 -0
- package/esm2015/lib/resources/interface/user-resource-small.js +2 -0
- package/esm2015/lib/resources/interface/user-resource.js +2 -0
- package/esm2015/lib/resources/public-api.js +46 -0
- package/esm2015/lib/resources/resource-provider.service.js +168 -0
- package/esm2015/lib/resources/types/nae-date-type.js +5 -0
- package/esm2015/lib/routing/dynamic-navigation-route-provider/dynamic-navigation-route-provider.service.js +36 -0
- package/esm2015/lib/routing/public-api.js +7 -0
- package/esm2015/lib/routing/redirect-service/redirect.service.js +103 -0
- package/esm2015/lib/routing/routing-builder/routing-builder.service.js +190 -0
- package/esm2015/lib/routing/view-service/model/view-entry.js +2 -0
- package/esm2015/lib/routing/view-service/view.service.js +35 -0
- package/esm2015/lib/search/advanced-search-component/abstract-advanced-search.component.js +49 -0
- package/esm2015/lib/search/advanced-search-component-initialization-service/advanced-search-component-initialization.service.js +34 -0
- package/esm2015/lib/search/category-factory/category-factory.js +94 -0
- package/esm2015/lib/search/category-factory/category-resolver.service.js +149 -0
- package/esm2015/lib/search/category-factory/category-serialisation-pair.js +2 -0
- package/esm2015/lib/search/category-factory/default-categories-factories.js +67 -0
- package/esm2015/lib/search/category-factory/default-search-categories.module.js +50 -0
- package/esm2015/lib/search/category-factory/optional-dependencies.js +2 -0
- package/esm2015/lib/search/category-factory/search-categories-injection-token.js +24 -0
- package/esm2015/lib/search/fulltext-search-component/abstract-fulltext-search.component.js +17 -0
- package/esm2015/lib/search/header-search-service/header-search.service.js +226 -0
- package/esm2015/lib/search/models/base-filter-injection-token.js +6 -0
- package/esm2015/lib/search/models/base-filter.js +2 -0
- package/esm2015/lib/search/models/boolean-operator.js +10 -0
- package/esm2015/lib/search/models/category/autocomplete-category.js +129 -0
- package/esm2015/lib/search/models/category/autocomplete-options.js +2 -0
- package/esm2015/lib/search/models/category/case/case-author.js +21 -0
- package/esm2015/lib/search/models/category/case/case-creation-date-time.js +43 -0
- package/esm2015/lib/search/models/category/case/case-creation-date.js +43 -0
- package/esm2015/lib/search/models/category/case/case-dataset.js +397 -0
- package/esm2015/lib/search/models/category/case/case-net-attribute-autocomplete-category.js +23 -0
- package/esm2015/lib/search/models/category/case/case-process.js +73 -0
- package/esm2015/lib/search/models/category/case/case-role.js +24 -0
- package/esm2015/lib/search/models/category/case/case-search.enum.js +15 -0
- package/esm2015/lib/search/models/category/case/case-simple-dataset.js +135 -0
- package/esm2015/lib/search/models/category/case/case-string-id.js +27 -0
- package/esm2015/lib/search/models/category/case/case-task.js +24 -0
- package/esm2015/lib/search/models/category/case/case-title.js +29 -0
- package/esm2015/lib/search/models/category/case/case-visual-id.js +23 -0
- package/esm2015/lib/search/models/category/categories.js +24 -0
- package/esm2015/lib/search/models/category/category.js +524 -0
- package/esm2015/lib/search/models/category/name-id-pair.js +2 -0
- package/esm2015/lib/search/models/category/net-attribute-autocomplete-category.js +59 -0
- package/esm2015/lib/search/models/category/net-attribute-pair.js +2 -0
- package/esm2015/lib/search/models/category/no-configuration-autocomplete-category.js +36 -0
- package/esm2015/lib/search/models/category/no-configuration-category.js +39 -0
- package/esm2015/lib/search/models/category/no-configuration-user-autocomplete-category.js +28 -0
- package/esm2015/lib/search/models/category/search-autocomplete-option.js +2 -0
- package/esm2015/lib/search/models/category/search-input-type.js +14 -0
- package/esm2015/lib/search/models/category/task/task-assignee.js +21 -0
- package/esm2015/lib/search/models/category/task/task-net-attribute-autocomplete-category.js +23 -0
- package/esm2015/lib/search/models/category/task/task-process.js +50 -0
- package/esm2015/lib/search/models/category/task/task-role.js +23 -0
- package/esm2015/lib/search/models/category/task/task-task.js +23 -0
- package/esm2015/lib/search/models/category/user-autocomplete.js +59 -0
- package/esm2015/lib/search/models/component-configuration/search-component-configuration-injection-token.js +8 -0
- package/esm2015/lib/search/models/component-configuration/search-component-configuration.js +2 -0
- package/esm2015/lib/search/models/component-configuration/search-mode.js +9 -0
- package/esm2015/lib/search/models/configuration-input.js +52 -0
- package/esm2015/lib/search/models/datafield-map-key.js +69 -0
- package/esm2015/lib/search/models/escape-result.js +2 -0
- package/esm2015/lib/search/models/operator/equals-date-time.js +26 -0
- package/esm2015/lib/search/models/operator/equals-date.js +26 -0
- package/esm2015/lib/search/models/operator/equals.js +21 -0
- package/esm2015/lib/search/models/operator/in-range-date-time.js +43 -0
- package/esm2015/lib/search/models/operator/in-range-date.js +42 -0
- package/esm2015/lib/search/models/operator/in-range.js +22 -0
- package/esm2015/lib/search/models/operator/is-null.js +69 -0
- package/esm2015/lib/search/models/operator/less-than-date-time.js +27 -0
- package/esm2015/lib/search/models/operator/less-than-date.js +27 -0
- package/esm2015/lib/search/models/operator/less-than-equal-date-time.js +27 -0
- package/esm2015/lib/search/models/operator/less-than-equal-date.js +26 -0
- package/esm2015/lib/search/models/operator/less-than-equal.js +17 -0
- package/esm2015/lib/search/models/operator/less-than.js +17 -0
- package/esm2015/lib/search/models/operator/like.js +29 -0
- package/esm2015/lib/search/models/operator/more-than-date-time.js +29 -0
- package/esm2015/lib/search/models/operator/more-than-date.js +29 -0
- package/esm2015/lib/search/models/operator/more-than-equal-date-time.js +27 -0
- package/esm2015/lib/search/models/operator/more-than-equal-date.js +27 -0
- package/esm2015/lib/search/models/operator/more-than-equal.js +17 -0
- package/esm2015/lib/search/models/operator/more-than.js +17 -0
- package/esm2015/lib/search/models/operator/not-equals-date-time.js +24 -0
- package/esm2015/lib/search/models/operator/not-equals-date.js +27 -0
- package/esm2015/lib/search/models/operator/not-equals.js +30 -0
- package/esm2015/lib/search/models/operator/operator.js +124 -0
- package/esm2015/lib/search/models/operator/operators.js +31 -0
- package/esm2015/lib/search/models/operator/substring.js +27 -0
- package/esm2015/lib/search/models/operator-template-part-type.js +15 -0
- package/esm2015/lib/search/models/operator-template-part.js +31 -0
- package/esm2015/lib/search/models/persistance/filter-metadata-allowed-nets.js +2 -0
- package/esm2015/lib/search/models/persistance/filter-metadata.js +2 -0
- package/esm2015/lib/search/models/persistance/filter-text-segment.js +2 -0
- package/esm2015/lib/search/models/persistance/generator-metadata.js +2 -0
- package/esm2015/lib/search/models/persistance/saved-filter-metadata.js +2 -0
- package/esm2015/lib/search/models/predicate/clause-predicate.js +78 -0
- package/esm2015/lib/search/models/predicate/editable-clause-predicate-with-generators.js +47 -0
- package/esm2015/lib/search/models/predicate/editable-clause-predicate.js +116 -0
- package/esm2015/lib/search/models/predicate/editable-elementary-predicate.js +20 -0
- package/esm2015/lib/search/models/predicate/editable-predicate-with-generator.js +37 -0
- package/esm2015/lib/search/models/predicate/editable-predicate.js +22 -0
- package/esm2015/lib/search/models/predicate/elementary-predicate.js +14 -0
- package/esm2015/lib/search/models/predicate/predicate-with-generator.js +95 -0
- package/esm2015/lib/search/models/predicate/predicate.js +90 -0
- package/esm2015/lib/search/models/predicate-removal-event.js +2 -0
- package/esm2015/lib/search/models/query/query.js +72 -0
- package/esm2015/lib/search/models/search-index.js +76 -0
- package/esm2015/lib/search/models/wrap-result.js +2 -0
- package/esm2015/lib/search/operator-service/operator-resolver.service.js +109 -0
- package/esm2015/lib/search/operator-service/operator.service.js +39 -0
- package/esm2015/lib/search/public-api.js +107 -0
- package/esm2015/lib/search/search-clause-component/abstract-search-clause.component.js +52 -0
- package/esm2015/lib/search/search-component/abstract-search.component.js +171 -0
- package/esm2015/lib/search/search-configuration-input-component/abstract-search-configuration-input.component.js +75 -0
- package/esm2015/lib/search/search-keyword-resolver-service/search-index-resolver.service.js +36 -0
- package/esm2015/lib/search/search-operand-input-component/abstract-search-operand-input.component.js +97 -0
- package/esm2015/lib/search/search-predicate-component/abstract-search-predicate.component.js +144 -0
- package/esm2015/lib/search/search-service/search.service.js +306 -0
- package/esm2015/lib/side-menu/content-components/filter-selector/abstract-filter-selector.component.js +163 -0
- package/esm2015/lib/side-menu/content-components/filter-selector/filter-selector-list-item/abstract-filter-selector-list-item.component.js +22 -0
- package/esm2015/lib/side-menu/content-components/filter-selector/model/filter-selector-injection-data.js +2 -0
- package/esm2015/lib/side-menu/content-components/filter-selector/model/filtered-array.js +32 -0
- package/esm2015/lib/side-menu/content-components/import-net/abstract-import-net.component.js +123 -0
- package/esm2015/lib/side-menu/content-components/injection-tokens.js +8 -0
- package/esm2015/lib/side-menu/content-components/load-filter/abstract-load-filter.component.js +42 -0
- package/esm2015/lib/side-menu/content-components/load-filter/model/load-filter-injection-data.js +2 -0
- package/esm2015/lib/side-menu/content-components/new-case/abstract-new-case.component.js +230 -0
- package/esm2015/lib/side-menu/content-components/new-case/model/new-case-injection-data.js +2 -0
- package/esm2015/lib/side-menu/content-components/option-selector/abstract-option-selector.component.js +28 -0
- package/esm2015/lib/side-menu/content-components/option-selector/model/option-selector-injection-data.js +2 -0
- package/esm2015/lib/side-menu/content-components/public-api.js +20 -0
- package/esm2015/lib/side-menu/content-components/save-filter/abstract-save-filter.component.js +38 -0
- package/esm2015/lib/side-menu/content-components/save-filter/model/save-filter-injection-data.js +2 -0
- package/esm2015/lib/side-menu/content-components/user-assign/abstract-user-assign.component.js +60 -0
- package/esm2015/lib/side-menu/content-components/user-assign/model/user-list-injected-data.js +2 -0
- package/esm2015/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.js +102 -0
- package/esm2015/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-item/abstract-user-assign-item.component.js +13 -0
- package/esm2015/lib/side-menu/models/portal-wrapper.js +13 -0
- package/esm2015/lib/side-menu/models/side-menu-control.js +36 -0
- package/esm2015/lib/side-menu/models/side-menu-event.js +2 -0
- package/esm2015/lib/side-menu/models/side-menu-injection-data.js +2 -0
- package/esm2015/lib/side-menu/models/side-menu-ref.js +16 -0
- package/esm2015/lib/side-menu/models/side-menu-size.js +7 -0
- package/esm2015/lib/side-menu/net-version-visible-injection-token.js +4 -0
- package/esm2015/lib/side-menu/public-api.js +15 -0
- package/esm2015/lib/side-menu/services/side-menu.service.js +86 -0
- package/esm2015/lib/side-menu/side-menu-container/abstract-side-menu-container.component.js +34 -0
- package/esm2015/lib/side-menu/side-menu-injection-token.js +3 -0
- package/esm2015/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.js +26 -0
- package/esm2015/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.js +26 -0
- package/esm2015/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.js +26 -0
- package/esm2015/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.js +26 -0
- package/esm2015/lib/snack-bar/models/abstract-snack-bar.js +18 -0
- package/esm2015/lib/snack-bar/models/injection-token-snackbar.js +4 -0
- package/esm2015/lib/snack-bar/models/snack-bar-enums.js +12 -0
- package/esm2015/lib/snack-bar/models/snack-bar-injection-data.js +2 -0
- package/esm2015/lib/snack-bar/public-api.js +15 -0
- package/esm2015/lib/snack-bar/services/snack-bar.service.js +92 -0
- package/esm2015/lib/snack-bar/snack-bar.module.js +33 -0
- package/esm2015/lib/tabs/classes/opened-tab.js +48 -0
- package/esm2015/lib/tabs/classes/tab-view.js +262 -0
- package/esm2015/lib/tabs/interfaces.js +2 -0
- package/esm2015/lib/tabs/public-api.js +6 -0
- package/esm2015/lib/tabs/tab-creation-detector/abstract-tab-creation-detector.component.js +17 -0
- package/esm2015/lib/tabs/tab-data-injection-token/tab-data-injection-token.js +8 -0
- package/esm2015/lib/tabs/tab-view/abstract-tab-view.component.js +67 -0
- package/esm2015/lib/task/interfaces/task-operations.js +2 -0
- package/esm2015/lib/task/models/null-task-operations.js +26 -0
- package/esm2015/lib/task/models/subject-task-operations.js +58 -0
- package/esm2015/lib/task/models/task-operations-injection-token.js +3 -0
- package/esm2015/lib/task/models/task-set-data-request-context.js +2 -0
- package/esm2015/lib/task/public-api.js +19 -0
- package/esm2015/lib/task/services/assign-policy.service.js +175 -0
- package/esm2015/lib/task/services/assign-task.service.js +191 -0
- package/esm2015/lib/task/services/cancel-task.service.js +189 -0
- package/esm2015/lib/task/services/data-focus-policy.service.js +36 -0
- package/esm2015/lib/task/services/delegate-task.service.js +185 -0
- package/esm2015/lib/task/services/finish-policy.service.js +79 -0
- package/esm2015/lib/task/services/finish-task.service.js +207 -0
- package/esm2015/lib/task/services/selected-case.service.js +38 -0
- package/esm2015/lib/task/services/task-data.service.js +538 -0
- package/esm2015/lib/task/services/task-handling-service.js +57 -0
- package/esm2015/lib/task/services/task-request-state.service.js +113 -0
- package/esm2015/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.js +39 -0
- package/esm2015/lib/task-content/model/async-rendering-configuration-injection-token.js +8 -0
- package/esm2015/lib/task-content/model/async-rendering-configuration.js +2 -0
- package/esm2015/lib/task-content/model/datafield-grid-layout-element.js +2 -0
- package/esm2015/lib/task-content/model/field-type-resource.js +23 -0
- package/esm2015/lib/task-content/model/policy.js +31 -0
- package/esm2015/lib/task-content/model/resource-interface.js +2 -0
- package/esm2015/lib/task-content/model/split-data-group.js +2 -0
- package/esm2015/lib/task-content/model/subgrid.js +235 -0
- package/esm2015/lib/task-content/model/task-content-element-type.js +19 -0
- package/esm2015/lib/task-content/model/task-event-notification.js +15 -0
- package/esm2015/lib/task-content/model/task-event.js +10 -0
- package/esm2015/lib/task-content/public-api.js +21 -0
- package/esm2015/lib/task-content/services/field-converter.service.js +348 -0
- package/esm2015/lib/task-content/services/single-task-content.service.js +72 -0
- package/esm2015/lib/task-content/services/task-content.service.js +266 -0
- package/esm2015/lib/task-content/services/task-event.service.js +45 -0
- package/esm2015/lib/task-content/services/unlimited-task-content.service.js +64 -0
- package/esm2015/lib/task-content/task-content/abstract-task-content.component.js +656 -0
- package/esm2015/lib/toolbar/abstract-toolbar.component.js +22 -0
- package/esm2015/lib/toolbar/public-api.js +2 -0
- package/esm2015/lib/translate/language.service.js +85 -0
- package/esm2015/lib/translate/public-api.js +3 -0
- package/esm2015/lib/translate/translate-interceptor.js +23 -0
- package/esm2015/lib/translate/translate-lib.module.js +38 -0
- package/esm2015/lib/user/components/user-card/abstract-user-card.component.js +44 -0
- package/esm2015/lib/user/models/iuser.js +2 -0
- package/esm2015/lib/user/models/public-api.js +6 -0
- package/esm2015/lib/user/models/user.js +37 -0
- package/esm2015/lib/user/models/view-id-injection-tokens.js +4 -0
- package/esm2015/lib/user/profile/abstract-profile.component.js +29 -0
- package/esm2015/lib/user/public-api.js +12 -0
- package/esm2015/lib/user/services/user-comparator.service.js +26 -0
- package/esm2015/lib/user/services/user-list.service.js +186 -0
- package/esm2015/lib/user/services/user-preference.service.js +152 -0
- package/esm2015/lib/user/services/user.service.js +203 -0
- package/esm2015/lib/user/services/view-id.service.js +30 -0
- package/esm2015/lib/utility/array-to-observable.js +10 -0
- package/esm2015/lib/utility/call-chain/after-action.js +12 -0
- package/esm2015/lib/utility/call-chain/call-chain.service.js +34 -0
- package/esm2015/lib/utility/clear-time-information.js +11 -0
- package/esm2015/lib/utility/destroy-subscription.js +10 -0
- package/esm2015/lib/utility/get-field.js +48 -0
- package/esm2015/lib/utility/get-immediate-data.js +9 -0
- package/esm2015/lib/utility/grid-layout/grid-layout-helper.js +76 -0
- package/esm2015/lib/utility/grid-layout/model/grid-element-with-item.js +2 -0
- package/esm2015/lib/utility/grid-layout/model/grid-element.js +2 -0
- package/esm2015/lib/utility/grid-layout/model/grid-filler.js +50 -0
- package/esm2015/lib/utility/incrementing-counter.js +21 -0
- package/esm2015/lib/utility/loading-emitter.js +19 -0
- package/esm2015/lib/utility/loading-with-filter-emitter.js +30 -0
- package/esm2015/lib/utility/navigation-item-task-filter-factory.js +11 -0
- package/esm2015/lib/utility/navigation-item-task-search-categories-factory.js +35 -0
- package/esm2015/lib/utility/of-void.js +12 -0
- package/esm2015/lib/utility/pagination/load-all-pages.js +46 -0
- package/esm2015/lib/utility/pagination/page-has-content.js +8 -0
- package/esm2015/lib/utility/process-message-response.js +17 -0
- package/esm2015/lib/utility/public-api.js +47 -0
- package/esm2015/lib/utility/refresh-tree.js +9 -0
- package/esm2015/lib/utility/result-with-after-actions.js +27 -0
- package/esm2015/lib/utility/service/case-list-font-color.service.js +45 -0
- package/esm2015/lib/utility/service/spinner-overlay.service.js +48 -0
- package/esm2015/lib/utility/stop-propagation.js +5 -0
- package/esm2015/lib/utility/tests/mocks/mock-authentication-method-service.js +12 -0
- package/esm2015/lib/utility/tests/mocks/mock-authentication.service.js +18 -0
- package/esm2015/lib/utility/tests/mocks/mock-endpoint.js +44 -0
- package/esm2015/lib/utility/tests/mocks/mock-sign-up.service.js +29 -0
- package/esm2015/lib/utility/tests/mocks/mock-user-autocomplete-value.js +14 -0
- package/esm2015/lib/utility/tests/mocks/mock-user-preference.service.js +42 -0
- package/esm2015/lib/utility/tests/mocks/mock-user-resource.service.js +48 -0
- package/esm2015/lib/utility/tests/search-category-mock-dependencies.js +19 -0
- package/esm2015/lib/utility/tests/test-config.js +424 -0
- package/esm2015/lib/utility/tests/test-factory-methods.js +21 -0
- package/esm2015/lib/utility/tests/test-mock-dependencies.module.js +31 -0
- package/esm2015/lib/utility/tests/test-view-service.js +24 -0
- package/esm2015/lib/utility/tests/utility/configure-category.js +14 -0
- package/esm2015/lib/utility/tests/utility/create-mock-case-outcome.js +16 -0
- package/esm2015/lib/utility/tests/utility/create-mock-case.js +36 -0
- package/esm2015/lib/utility/tests/utility/create-mock-datagroup.js +35 -0
- package/esm2015/lib/utility/tests/utility/create-mock-field.js +41 -0
- package/esm2015/lib/utility/tests/utility/create-mock-get-data-outcome.js +15 -0
- package/esm2015/lib/utility/tests/utility/create-mock-immediate-data.js +15 -0
- package/esm2015/lib/utility/tests/utility/create-mock-net.js +27 -0
- package/esm2015/lib/utility/tests/utility/create-mock-page.js +23 -0
- package/esm2015/lib/utility/tests/utility/create-mock-petri-net-outcome.js +14 -0
- package/esm2015/lib/utility/tests/utility/create-mock-set-data-outcome.js +19 -0
- package/esm2015/lib/utility/tests/utility/create-mock-task-outcome.js +18 -0
- package/esm2015/lib/utility/tests/utility/create-mock-task.js +34 -0
- package/esm2015/lib/view/abstract/page-load-request-context.js +25 -0
- package/esm2015/lib/view/abstract/sortable-view.js +62 -0
- package/esm2015/lib/view/abstract/view-with-headers.js +20 -0
- package/esm2015/lib/view/case-view/abstract-case-view.js +40 -0
- package/esm2015/lib/view/case-view/components/case-list/abstract-case-list.component.js +82 -0
- package/esm2015/lib/view/case-view/models/case-page-load-request-result.js +2 -0
- package/esm2015/lib/view/case-view/models/case-view-params.js +2 -0
- package/esm2015/lib/view/case-view/models/new-case-configuration-injection-token.js +7 -0
- package/esm2015/lib/view/case-view/models/new-case-configuration.js +2 -0
- package/esm2015/lib/view/case-view/service/case-view-service.js +273 -0
- package/esm2015/lib/view/case-view/tabbed-case-view.js +66 -0
- package/esm2015/lib/view/public-api.js +42 -0
- package/esm2015/lib/view/task-view/abstract-task-view.js +13 -0
- package/esm2015/lib/view/task-view/models/injected-tabbed-task-view-data.js +2 -0
- package/esm2015/lib/view/task-view/models/injection-token-task-endpoint.js +6 -0
- package/esm2015/lib/view/task-view/models/task-endpoint.js +9 -0
- package/esm2015/lib/view/task-view/models/task-page-load-request-result.js +2 -0
- package/esm2015/lib/view/task-view/models/task-view-configuration-injection-token.js +20 -0
- package/esm2015/lib/view/task-view/models/task-view-configuration.js +2 -0
- package/esm2015/lib/view/task-view/models/task-view-params.js +2 -0
- package/esm2015/lib/view/task-view/service/task-view.service.js +292 -0
- package/esm2015/lib/view/task-view/tabbed-task-view.js +22 -0
- package/esm2015/lib/view/tree-case-view/model/tree-petriflow-identifiers.js +43 -0
- package/esm2015/lib/view/tree-case-view/tree-case-view.service.js +17 -0
- package/esm2015/lib/view/tree-case-view/tree-component/abstract-tree.component.js +141 -0
- package/esm2015/lib/view/tree-case-view/tree-component/add-child-node/abstract-add-child-node.component.js +14 -0
- package/esm2015/lib/view/tree-case-view/tree-component/case-tree.service.js +843 -0
- package/esm2015/lib/view/tree-case-view/tree-component/model/case-tree-node.js +104 -0
- package/esm2015/lib/view/tree-case-view/tree-component/model/case-tree-path.js +2 -0
- package/esm2015/lib/view/tree-case-view/tree-component/model/expansion-tree.js +2 -0
- package/esm2015/lib/view/tree-case-view/tree-component/remove-node/abstract-remove-node.component.js +14 -0
- package/esm2015/lib/view/tree-case-view/tree-task-content/abstract-tree-task-content.component.js +55 -0
- package/esm2015/lib/view/tree-case-view/tree-task-content/tree-task-content.service.js +288 -0
- package/esm2015/lib/view/workflow-view/abstract-workflow-view.component.js +68 -0
- package/esm2015/lib/view/workflow-view/models/injection-token-workflow-service.js +10 -0
- package/esm2015/lib/view/workflow-view/workflow-view.service.js +211 -0
- package/esm2015/netgrif-components-core.js +20 -0
- package/esm2015/public-api.js +45 -0
- package/esm5/assets/i18n/de.json +419 -0
- package/esm5/assets/i18n/en.json +419 -0
- package/esm5/assets/i18n/sk.json +419 -0
- package/esm5/commons/angular-cli-devkit-core-strings.js +157 -0
- package/esm5/commons/import-to-add.js +9 -0
- package/esm5/commons/schema.js +7 -0
- package/esm5/commons/view-class-info.js +57 -0
- package/esm5/lib/admin/public-api.js +9 -0
- package/esm5/lib/admin/role-assignment/abstract-role-assignment.js +84 -0
- package/esm5/lib/admin/role-assignment/services/ProcessList.js +179 -0
- package/esm5/lib/admin/role-assignment/services/role-assignment.service.js +50 -0
- package/esm5/lib/admin/user-invite/abstract-user-invite.component.js +84 -0
- package/esm5/lib/admin/user-invite/services/organization-list.service.js +82 -0
- package/esm5/lib/admin/user-invite/services/user-invite.service.js +37 -0
- package/esm5/lib/allowed-nets/public-api.js +4 -0
- package/esm5/lib/allowed-nets/services/allowed-nets.service.js +94 -0
- package/esm5/lib/allowed-nets/services/base-allowed-nets.service.js +65 -0
- package/esm5/lib/allowed-nets/services/factory/allowed-nets-service-factory.js +132 -0
- package/esm5/lib/authentication/anonymous/anonymous.service.js +73 -0
- package/esm5/lib/authentication/authentication.factory.js +16 -0
- package/esm5/lib/authentication/authentication.module.js +36 -0
- package/esm5/lib/authentication/components/abstract-authentication-overlay.js +53 -0
- package/esm5/lib/authentication/models/credentials.js +2 -0
- package/esm5/lib/authentication/models/public-api.js +5 -0
- package/esm5/lib/authentication/models/transformer.js +2 -0
- package/esm5/lib/authentication/models/user.transformer.js +23 -0
- package/esm5/lib/authentication/public-api.js +14 -0
- package/esm5/lib/authentication/services/anonymous-authentication-interceptor.js +47 -0
- package/esm5/lib/authentication/services/authentication/authentication.service.js +84 -0
- package/esm5/lib/authentication/services/authentication-interceptor.js +55 -0
- package/esm5/lib/authentication/services/authentication-method.service.js +7 -0
- package/esm5/lib/authentication/services/guard/authentication-guard.service.js +41 -0
- package/esm5/lib/authentication/services/methods/basic-authentication/basic-authentication.service.js +54 -0
- package/esm5/lib/authentication/services/methods/null-authentication/null-authentication.service.js +23 -0
- package/esm5/lib/authentication/services/public-api.js +7 -0
- package/esm5/lib/authentication/session/null-storage.js +19 -0
- package/esm5/lib/authentication/session/public-api.js +3 -0
- package/esm5/lib/authentication/session/services/session.service.js +193 -0
- package/esm5/lib/authentication/sign-up/models/user-invitation-request.js +2 -0
- package/esm5/lib/authentication/sign-up/models/user-registration-request.js +2 -0
- package/esm5/lib/authentication/sign-up/public-api.js +8 -0
- package/esm5/lib/authentication/sign-up/services/sign-up.service.js +107 -0
- package/esm5/lib/authentication/sign-up/sign-up.module.js +17 -0
- package/esm5/lib/authorization/authority/authority-guard.service.js +52 -0
- package/esm5/lib/authorization/group/group-guard.service.js +69 -0
- package/esm5/lib/authorization/permission/permission.service.js +126 -0
- package/esm5/lib/authorization/public-api.js +10 -0
- package/esm5/lib/authorization/role/role-guard.service.js +108 -0
- package/esm5/lib/changed-fields/public-api.js +2 -0
- package/esm5/lib/changed-fields/services/changed-fields.service.js +38 -0
- package/esm5/lib/configuration/configuration.service.js +208 -0
- package/esm5/lib/configuration/public-api.js +3 -0
- package/esm5/lib/covalent/covalent.module.js +26 -0
- package/esm5/lib/currency/currency.module.js +25 -0
- package/esm5/lib/dashboard/cards/count-card/abstract-count-card.js +42 -0
- package/esm5/lib/dashboard/cards/custom-card/abstract-custom-card.js +50 -0
- package/esm5/lib/dashboard/cards/iframe-card/abstract-iframe-card.js +16 -0
- package/esm5/lib/dashboard/cards/model/card-grid-element.js +2 -0
- package/esm5/lib/dashboard/cards/model/count-card.js +2 -0
- package/esm5/lib/dashboard/cards/model/custom-dashboard-model/aggregation-query.js +2 -0
- package/esm5/lib/dashboard/cards/model/custom-dashboard-model/aggregation-result.js +2 -0
- package/esm5/lib/dashboard/cards/model/custom-dashboard-model/custom-card.js +2 -0
- package/esm5/lib/dashboard/cards/model/custom-dashboard-model/dashboard-event-content.js +2 -0
- package/esm5/lib/dashboard/cards/model/custom-dashboard-model/dashboard-multi-data.js +9 -0
- package/esm5/lib/dashboard/cards/model/custom-dashboard-model/dashboard-single-data.js +9 -0
- package/esm5/lib/dashboard/cards/model/dashboard-card-types.js +13 -0
- package/esm5/lib/dashboard/cards/model/dashboard-card.js +2 -0
- package/esm5/lib/dashboard/cards/model/graph-card.js +2 -0
- package/esm5/lib/dashboard/cards/model/iframe-card.js +2 -0
- package/esm5/lib/dashboard/dashboard-content/abstract-dashboard-content.js +21 -0
- package/esm5/lib/dashboard/dashboard-content/dashboard-params.js +2 -0
- package/esm5/lib/dashboard/public-api.js +20 -0
- package/esm5/lib/data-fields/boolean-field/abstract-boolean-field.component.js +45 -0
- package/esm5/lib/data-fields/boolean-field/models/boolean-field.js +29 -0
- package/esm5/lib/data-fields/button-field/abstract-button-field.component.js +68 -0
- package/esm5/lib/data-fields/button-field/models/button-field.js +37 -0
- package/esm5/lib/data-fields/data-field-template/abstract-data-field-template.component.js +111 -0
- package/esm5/lib/data-fields/data-field-template/models/wrapped-boolean.js +10 -0
- package/esm5/lib/data-fields/data-fields.module.js +39 -0
- package/esm5/lib/data-fields/date-field/abstract-date-field.component.js +26 -0
- package/esm5/lib/data-fields/date-field/models/custom-date-adapter.js +18 -0
- package/esm5/lib/data-fields/date-field/models/date-field.js +14 -0
- package/esm5/lib/data-fields/date-time-field/abstract-date-time-field.component.js +26 -0
- package/esm5/lib/data-fields/date-time-field/models/date-time-field.js +14 -0
- package/esm5/lib/data-fields/enumeration-field/abstract-enumeration-field.component.js +22 -0
- package/esm5/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.js +47 -0
- package/esm5/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.js +57 -0
- package/esm5/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.js +39 -0
- package/esm5/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.js +15 -0
- package/esm5/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.js +15 -0
- package/esm5/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.js +43 -0
- package/esm5/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.js +63 -0
- package/esm5/lib/data-fields/enumeration-field/models/enumeration-field.js +79 -0
- package/esm5/lib/data-fields/file-field/abstract-file-field.component.js +405 -0
- package/esm5/lib/data-fields/file-field/abstract-preview-dialog/preview-dialog-data.js +2 -0
- package/esm5/lib/data-fields/file-field/models/file-field-value.js +2 -0
- package/esm5/lib/data-fields/file-field/models/file-field.js +128 -0
- package/esm5/lib/data-fields/file-list-field/abstract-file-list-field.component.js +278 -0
- package/esm5/lib/data-fields/file-list-field/models/file-list-field-value.js +2 -0
- package/esm5/lib/data-fields/file-list-field/models/file-list-field.js +105 -0
- package/esm5/lib/data-fields/filter-field/abstract-filter-field-content.component.js +36 -0
- package/esm5/lib/data-fields/filter-field/abstract-filter-field.component.js +33 -0
- package/esm5/lib/data-fields/filter-field/models/filter-field-injection-token.js +7 -0
- package/esm5/lib/data-fields/filter-field/models/filter-field.js +28 -0
- package/esm5/lib/data-fields/i18n-field/abstract-i18n-field.component.js +23 -0
- package/esm5/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.js +30 -0
- package/esm5/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.js +42 -0
- package/esm5/lib/data-fields/i18n-field/models/i18n-field-value.js +2 -0
- package/esm5/lib/data-fields/i18n-field/models/i18n-field.js +16 -0
- package/esm5/lib/data-fields/models/abstract-data-field-component.js +45 -0
- package/esm5/lib/data-fields/models/abstract-data-field.js +501 -0
- package/esm5/lib/data-fields/models/behavior.js +2 -0
- package/esm5/lib/data-fields/models/boolean-label-enabled-token.js +3 -0
- package/esm5/lib/data-fields/models/changed-fields.js +2 -0
- package/esm5/lib/data-fields/models/component.js +2 -0
- package/esm5/lib/data-fields/models/format-filter.js +2 -0
- package/esm5/lib/data-fields/models/icon.js +6 -0
- package/esm5/lib/data-fields/models/invalid-data-policy-token.js +11 -0
- package/esm5/lib/data-fields/models/layout.js +2 -0
- package/esm5/lib/data-fields/models/material-appearance.js +14 -0
- package/esm5/lib/data-fields/models/properties.js +2 -0
- package/esm5/lib/data-fields/models/template-appearance.js +15 -0
- package/esm5/lib/data-fields/models/validation.js +2 -0
- package/esm5/lib/data-fields/multichoice-field/abstract-multichoice-field.component.js +22 -0
- package/esm5/lib/data-fields/multichoice-field/models/multichoice-field.js +60 -0
- package/esm5/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.js +13 -0
- package/esm5/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.js +13 -0
- package/esm5/lib/data-fields/number-field/abstract-number-errors.component.js +49 -0
- package/esm5/lib/data-fields/number-field/abstract-number-field.component.js +23 -0
- package/esm5/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.js +54 -0
- package/esm5/lib/data-fields/number-field/models/number-field.js +137 -0
- package/esm5/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.js +11 -0
- package/esm5/lib/data-fields/public-api.js +73 -0
- package/esm5/lib/data-fields/task-ref-field/model/task-ref-field.js +11 -0
- package/esm5/lib/data-fields/text-field/abstract-text-errors.component.js +37 -0
- package/esm5/lib/data-fields/text-field/abstract-text-field.component.js +19 -0
- package/esm5/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.js +45 -0
- package/esm5/lib/data-fields/text-field/models/text-area-field.js +19 -0
- package/esm5/lib/data-fields/text-field/models/text-field.js +96 -0
- package/esm5/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.js +22 -0
- package/esm5/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.js +35 -0
- package/esm5/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.js +22 -0
- package/esm5/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.js +46 -0
- package/esm5/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.js +52 -0
- package/esm5/lib/data-fields/time-instance-abstract-field/models/abstract-time-instance-field.js +110 -0
- package/esm5/lib/data-fields/user-field/abstract-user-field.component.js +65 -0
- package/esm5/lib/data-fields/user-field/models/user-field.js +23 -0
- package/esm5/lib/data-fields/user-field/models/user-value.js +58 -0
- package/esm5/lib/dialog/components/alert-dialog/alert-dialog.component.js +43 -0
- package/esm5/lib/dialog/components/alert-dialog/alert-dialog.module.js +32 -0
- package/esm5/lib/dialog/components/confirm-dialog/confirm-dialog.component.js +57 -0
- package/esm5/lib/dialog/components/confirm-dialog/confirm-dialog.module.js +32 -0
- package/esm5/lib/dialog/components/prompt-dialog/prompt-dialog.component.js +47 -0
- package/esm5/lib/dialog/components/prompt-dialog/prompt-dialog.module.js +34 -0
- package/esm5/lib/dialog/dialog.module.js +33 -0
- package/esm5/lib/dialog/models/DialogData.js +2 -0
- package/esm5/lib/dialog/models/DialogResult.js +2 -0
- package/esm5/lib/dialog/models/abstract-dialog.js +23 -0
- package/esm5/lib/dialog/public-api.js +9 -0
- package/esm5/lib/dialog/services/dialog.service.js +84 -0
- package/esm5/lib/event/model/event-constants.js +8 -0
- package/esm5/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/case-outcomes/create-case-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/case-outcomes/delete-case-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/data-outcomes/get-data-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/data-outcomes/get-data-localised-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/petrinet-outcomes/petri-net-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/task-outcomes/assign-task-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/task-outcomes/cancel-task-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/task-outcomes/delegate-task-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.js +2 -0
- package/esm5/lib/event/model/event-outcomes/task-outcomes/task-event-outcome.js +2 -0
- package/esm5/lib/event/public-api.js +19 -0
- package/esm5/lib/event/services/event.service.js +60 -0
- package/esm5/lib/event/services/interfaces/changed-fields-map.js +2 -0
- package/esm5/lib/event-queue/model/queued-event.js +34 -0
- package/esm5/lib/event-queue/public-api.js +5 -0
- package/esm5/lib/event-queue/services/event-queue.service.js +66 -0
- package/esm5/lib/filter/filter.repository.js +145 -0
- package/esm5/lib/filter/models/case-search-request-body.js +2 -0
- package/esm5/lib/filter/models/filter-type.js +11 -0
- package/esm5/lib/filter/models/filter.js +71 -0
- package/esm5/lib/filter/models/filters-filter-injection-token.js +9 -0
- package/esm5/lib/filter/models/merge-operator.js +11 -0
- package/esm5/lib/filter/models/merged-filter-params.js +2 -0
- package/esm5/lib/filter/models/merged-filter.js +120 -0
- package/esm5/lib/filter/models/simple-filter.js +96 -0
- package/esm5/lib/filter/models/task-search-request-body.js +2 -0
- package/esm5/lib/filter/models/user-filter-constants.js +39 -0
- package/esm5/lib/filter/public-api.js +18 -0
- package/esm5/lib/filter/user-filters.service.js +357 -0
- package/esm5/lib/forms/email-submission/abstract-email-submission-form.component.js +33 -0
- package/esm5/lib/forms/forgotten-password/abstract-forgotten-password.component.js +37 -0
- package/esm5/lib/forms/has-form.js +2 -0
- package/esm5/lib/forms/login/abstract-login-form.component.js +61 -0
- package/esm5/lib/forms/models/abstract-registration.component.js +106 -0
- package/esm5/lib/forms/models/password.validator.js +21 -0
- package/esm5/lib/forms/public-api.js +7 -0
- package/esm5/lib/forms/registration/abstract-registration-form.component.js +42 -0
- package/esm5/lib/groups/public-api.js +3 -0
- package/esm5/lib/groups/services/active-group.service.js +107 -0
- package/esm5/lib/groups/services/next-group.service.js +135 -0
- package/esm5/lib/header/abstract-header-service.js +485 -0
- package/esm5/lib/header/abstract-header.component.js +171 -0
- package/esm5/lib/header/case-header/case-header.service.js +86 -0
- package/esm5/lib/header/case-header/case-menta-enum.js +9 -0
- package/esm5/lib/header/header-modes/abstract-header-mode.component.js +14 -0
- package/esm5/lib/header/header-modes/edit-mode/abstract-edit-mode.component.js +81 -0
- package/esm5/lib/header/header-modes/loading-mode/abstract-loading-mode.component.js +17 -0
- package/esm5/lib/header/header-modes/search-mode/abstract-search-mode.component.js +94 -0
- package/esm5/lib/header/header-modes/sort-mode/abstract-sort-mode.component.js +19 -0
- package/esm5/lib/header/header-state.js +53 -0
- package/esm5/lib/header/models/default-headers-token.js +3 -0
- package/esm5/lib/header/models/fields-group.js +2 -0
- package/esm5/lib/header/models/header-column.js +29 -0
- package/esm5/lib/header/models/header-mode.js +7 -0
- package/esm5/lib/header/models/header-type.js +7 -0
- package/esm5/lib/header/models/public-api.js +12 -0
- package/esm5/lib/header/models/user-changes/column-header-change.js +2 -0
- package/esm5/lib/header/models/user-changes/edit-change-description.js +2 -0
- package/esm5/lib/header/models/user-changes/header-change-description.js +2 -0
- package/esm5/lib/header/models/user-changes/header-change-type.js +20 -0
- package/esm5/lib/header/models/user-changes/header-change.js +2 -0
- package/esm5/lib/header/models/user-changes/mode-change-description.js +2 -0
- package/esm5/lib/header/models/user-changes/search-change-description.js +2 -0
- package/esm5/lib/header/models/user-changes/sort-change-description.js +2 -0
- package/esm5/lib/header/public-api.js +21 -0
- package/esm5/lib/header/services/overflow.service.js +112 -0
- package/esm5/lib/header/task-header/task-header.service.js +71 -0
- package/esm5/lib/header/task-header/task-meta-enum.js +11 -0
- package/esm5/lib/header/workflow-header/workflow-header.service.js +53 -0
- package/esm5/lib/header/workflow-header/workflow-meta-enum.js +10 -0
- package/esm5/lib/legal/legal-notice/abstract-legal-notice.component.js +26 -0
- package/esm5/lib/legal/public-api.js +2 -0
- package/esm5/lib/logger/models/log-entry.js +68 -0
- package/esm5/lib/logger/public-api.js +10 -0
- package/esm5/lib/logger/publishers/console-log-publisher.js +36 -0
- package/esm5/lib/logger/publishers/local-storage-log-publisher.js +45 -0
- package/esm5/lib/logger/publishers/log-publisher.js +15 -0
- package/esm5/lib/logger/services/log-level.js +10 -0
- package/esm5/lib/logger/services/log-publisher.service.js +66 -0
- package/esm5/lib/logger/services/logger.service.js +107 -0
- package/esm5/lib/material/material.module.js +112 -0
- package/esm5/lib/moment/public-api.js +2 -0
- package/esm5/lib/moment/time-formats.js +26 -0
- package/esm5/lib/navigation/group-navigation-component-resolver/abstract-group-navigation-component-resolver.component.js +40 -0
- package/esm5/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.js +37 -0
- package/esm5/lib/navigation/group-navigation-component-resolver/group-navigation-view-id-segment-factory.js +5 -0
- package/esm5/lib/navigation/model/filter-case-injection-token.js +6 -0
- package/esm5/lib/navigation/model/group-navigation-component-resolver-component-injection-token.js +6 -0
- package/esm5/lib/navigation/model/group-navigation-constants.js +59 -0
- package/esm5/lib/navigation/model/group-navigation-item-label.js +2 -0
- package/esm5/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.js +142 -0
- package/esm5/lib/navigation/navigation-drawer/abstract-navigation-resizable-drawer.component.js +17 -0
- package/esm5/lib/navigation/navigation-rail/abstract-navigation-rail.component.js +38 -0
- package/esm5/lib/navigation/navigation-tree/abstract-navigation-tree.component.js +415 -0
- package/esm5/lib/navigation/public-api.js +19 -0
- package/esm5/lib/navigation/quick-panel/components/abstract-quick-panel.component.js +30 -0
- package/esm5/lib/navigation/quick-panel/components/internal-link/abstract-internal-link.component.js +14 -0
- package/esm5/lib/navigation/quick-panel/components/language-selector/abstract-language-selector.component.js +59 -0
- package/esm5/lib/navigation/quick-panel/components/logout-shortcut/abstract-logout-shortcut.component.js +24 -0
- package/esm5/lib/navigation/quick-panel/components/paper-view.service.js +44 -0
- package/esm5/lib/navigation/quick-panel/public-api.js +8 -0
- package/esm5/lib/navigation/utility/filter-extraction.service.js +89 -0
- package/esm5/lib/navigation/utility/navigation-item-task-utility-methods.js +78 -0
- package/esm5/lib/panel/abstract/featured-value.js +2 -0
- package/esm5/lib/panel/abstract/panel-with-header-binding.js +50 -0
- package/esm5/lib/panel/abstract/panel-with-immediate-data.js +67 -0
- package/esm5/lib/panel/abstract/tabbed-virtual-scroll.component.js +35 -0
- package/esm5/lib/panel/abstract-panel.component.js +46 -0
- package/esm5/lib/panel/case-panel/abstract-case-panel.component.js +94 -0
- package/esm5/lib/panel/immediate/abstract-immediate-filter-text-content.component.js +45 -0
- package/esm5/lib/panel/immediate/abstract-immediate-filter-text.component.js +23 -0
- package/esm5/lib/panel/immediate/model/filter-text-injection-token.js +6 -0
- package/esm5/lib/panel/public-api.js +15 -0
- package/esm5/lib/panel/task-panel/abstract-task-panel.component.js +302 -0
- package/esm5/lib/panel/task-panel/models/disable-functions.js +3 -0
- package/esm5/lib/panel/task-panel-list/abstract-task-list.component.js +99 -0
- package/esm5/lib/panel/task-panel-list/task-panel-data/task-panel-data.js +2 -0
- package/esm5/lib/panel/workflow-panel/abstract-workflow-panel.component.js +109 -0
- package/esm5/lib/process/net.js +155 -0
- package/esm5/lib/process/netRole.js +2 -0
- package/esm5/lib/process/permissions.js +12 -0
- package/esm5/lib/process/petri-net-reference-with-permissions.js +2 -0
- package/esm5/lib/process/process.service.js +325 -0
- package/esm5/lib/process/public-api.js +8 -0
- package/esm5/lib/process/public-process.service.js +34 -0
- package/esm5/lib/process/rolesAndPermissions.js +2 -0
- package/esm5/lib/process/transaction.js +2 -0
- package/esm5/lib/process/transition.js +2 -0
- package/esm5/lib/public/factories/get-net-and-create-case.js +22 -0
- package/esm5/lib/public/factories/public-factory-resolver.js +13 -0
- package/esm5/lib/public/factories/public-search-factory.js +17 -0
- package/esm5/lib/public/public-api.js +5 -0
- package/esm5/lib/public/services/public-url-resolver.service.js +26 -0
- package/esm5/lib/resources/abstract-endpoint/abstract-resource.service.js +85 -0
- package/esm5/lib/resources/abstract-endpoint/count-service.js +2 -0
- package/esm5/lib/resources/engine-endpoint/case-resource.service.js +149 -0
- package/esm5/lib/resources/engine-endpoint/dashboard-resource.service.js +37 -0
- package/esm5/lib/resources/engine-endpoint/petri-net-resource.service.js +174 -0
- package/esm5/lib/resources/engine-endpoint/public/public-case-resource.service.js +52 -0
- package/esm5/lib/resources/engine-endpoint/public/public-petri-net-resource.service.js +120 -0
- package/esm5/lib/resources/engine-endpoint/public/public-task-resource.service.js +238 -0
- package/esm5/lib/resources/engine-endpoint/task-resource.service.js +327 -0
- package/esm5/lib/resources/engine-endpoint/user-resource.service.js +210 -0
- package/esm5/lib/resources/interface/assigned-user-policy.js +2 -0
- package/esm5/lib/resources/interface/author.js +2 -0
- package/esm5/lib/resources/interface/authority.js +2 -0
- package/esm5/lib/resources/interface/case-get-request-body.js +2 -0
- package/esm5/lib/resources/interface/case.js +2 -0
- package/esm5/lib/resources/interface/changed-field-container.js +2 -0
- package/esm5/lib/resources/interface/count.js +2 -0
- package/esm5/lib/resources/interface/create-case-request-body.js +2 -0
- package/esm5/lib/resources/interface/data-group-layout.js +59 -0
- package/esm5/lib/resources/interface/data-groups.js +19 -0
- package/esm5/lib/resources/interface/event-outcome.js +2 -0
- package/esm5/lib/resources/interface/field-alignment.js +10 -0
- package/esm5/lib/resources/interface/fields.js +2 -0
- package/esm5/lib/resources/interface/file-resource.js +2 -0
- package/esm5/lib/resources/interface/group.js +2 -0
- package/esm5/lib/resources/interface/immediate-data.js +2 -0
- package/esm5/lib/resources/interface/link.js +2 -0
- package/esm5/lib/resources/interface/message-resource.js +2 -0
- package/esm5/lib/resources/interface/page.js +2 -0
- package/esm5/lib/resources/interface/pagination.js +2 -0
- package/esm5/lib/resources/interface/petri-net-object-id.js +2 -0
- package/esm5/lib/resources/interface/petri-net-reference.js +2 -0
- package/esm5/lib/resources/interface/petri-net-request-body.js +2 -0
- package/esm5/lib/resources/interface/petri-net.js +2 -0
- package/esm5/lib/resources/interface/preferences.js +2 -0
- package/esm5/lib/resources/interface/process-role.js +2 -0
- package/esm5/lib/resources/interface/response-data.js +2 -0
- package/esm5/lib/resources/interface/task-layout.js +2 -0
- package/esm5/lib/resources/interface/task-reference.js +2 -0
- package/esm5/lib/resources/interface/task-set-data-request-body.js +2 -0
- package/esm5/lib/resources/interface/task.js +2 -0
- package/esm5/lib/resources/interface/user-process-role.js +2 -0
- package/esm5/lib/resources/interface/user-resource-small.js +2 -0
- package/esm5/lib/resources/interface/user-resource.js +2 -0
- package/esm5/lib/resources/public-api.js +46 -0
- package/esm5/lib/resources/resource-provider.service.js +174 -0
- package/esm5/lib/resources/types/nae-date-type.js +5 -0
- package/esm5/lib/routing/dynamic-navigation-route-provider/dynamic-navigation-route-provider.service.js +42 -0
- package/esm5/lib/routing/public-api.js +7 -0
- package/esm5/lib/routing/redirect-service/redirect.service.js +130 -0
- package/esm5/lib/routing/routing-builder/routing-builder.service.js +207 -0
- package/esm5/lib/routing/view-service/model/view-entry.js +2 -0
- package/esm5/lib/routing/view-service/view.service.js +38 -0
- package/esm5/lib/search/advanced-search-component/abstract-advanced-search.component.js +64 -0
- package/esm5/lib/search/advanced-search-component-initialization-service/advanced-search-component-initialization.service.js +40 -0
- package/esm5/lib/search/category-factory/category-factory.js +96 -0
- package/esm5/lib/search/category-factory/category-resolver.service.js +152 -0
- package/esm5/lib/search/category-factory/category-serialisation-pair.js +2 -0
- package/esm5/lib/search/category-factory/default-categories-factories.js +67 -0
- package/esm5/lib/search/category-factory/default-search-categories.module.js +54 -0
- package/esm5/lib/search/category-factory/optional-dependencies.js +2 -0
- package/esm5/lib/search/category-factory/search-categories-injection-token.js +24 -0
- package/esm5/lib/search/fulltext-search-component/abstract-fulltext-search.component.js +20 -0
- package/esm5/lib/search/header-search-service/header-search.service.js +250 -0
- package/esm5/lib/search/models/base-filter-injection-token.js +6 -0
- package/esm5/lib/search/models/base-filter.js +2 -0
- package/esm5/lib/search/models/boolean-operator.js +10 -0
- package/esm5/lib/search/models/category/autocomplete-category.js +155 -0
- package/esm5/lib/search/models/category/autocomplete-options.js +2 -0
- package/esm5/lib/search/models/category/case/case-author.js +29 -0
- package/esm5/lib/search/models/category/case/case-creation-date-time.js +51 -0
- package/esm5/lib/search/models/category/case/case-creation-date.js +51 -0
- package/esm5/lib/search/models/category/case/case-dataset.js +444 -0
- package/esm5/lib/search/models/category/case/case-net-attribute-autocomplete-category.js +28 -0
- package/esm5/lib/search/models/category/case/case-process.js +84 -0
- package/esm5/lib/search/models/category/case/case-role.js +32 -0
- package/esm5/lib/search/models/category/case/case-search.enum.js +15 -0
- package/esm5/lib/search/models/category/case/case-simple-dataset.js +153 -0
- package/esm5/lib/search/models/category/case/case-string-id.js +35 -0
- package/esm5/lib/search/models/category/case/case-task.js +32 -0
- package/esm5/lib/search/models/category/case/case-title.js +37 -0
- package/esm5/lib/search/models/category/case/case-visual-id.js +31 -0
- package/esm5/lib/search/models/category/categories.js +24 -0
- package/esm5/lib/search/models/category/category.js +585 -0
- package/esm5/lib/search/models/category/name-id-pair.js +2 -0
- package/esm5/lib/search/models/category/net-attribute-autocomplete-category.js +66 -0
- package/esm5/lib/search/models/category/net-attribute-pair.js +2 -0
- package/esm5/lib/search/models/category/no-configuration-autocomplete-category.js +48 -0
- package/esm5/lib/search/models/category/no-configuration-category.js +51 -0
- package/esm5/lib/search/models/category/no-configuration-user-autocomplete-category.js +33 -0
- package/esm5/lib/search/models/category/search-autocomplete-option.js +2 -0
- package/esm5/lib/search/models/category/search-input-type.js +14 -0
- package/esm5/lib/search/models/category/task/task-assignee.js +29 -0
- package/esm5/lib/search/models/category/task/task-net-attribute-autocomplete-category.js +28 -0
- package/esm5/lib/search/models/category/task/task-process.js +61 -0
- package/esm5/lib/search/models/category/task/task-role.js +31 -0
- package/esm5/lib/search/models/category/task/task-task.js +31 -0
- package/esm5/lib/search/models/category/user-autocomplete.js +64 -0
- package/esm5/lib/search/models/component-configuration/search-component-configuration-injection-token.js +8 -0
- package/esm5/lib/search/models/component-configuration/search-component-configuration.js +2 -0
- package/esm5/lib/search/models/component-configuration/search-mode.js +9 -0
- package/esm5/lib/search/models/configuration-input.js +71 -0
- package/esm5/lib/search/models/datafield-map-key.js +91 -0
- package/esm5/lib/search/models/escape-result.js +2 -0
- package/esm5/lib/search/models/operator/equals-date-time.js +31 -0
- package/esm5/lib/search/models/operator/equals-date.js +31 -0
- package/esm5/lib/search/models/operator/equals.js +25 -0
- package/esm5/lib/search/models/operator/in-range-date-time.js +47 -0
- package/esm5/lib/search/models/operator/in-range-date.js +46 -0
- package/esm5/lib/search/models/operator/in-range.js +26 -0
- package/esm5/lib/search/models/operator/is-null.js +75 -0
- package/esm5/lib/search/models/operator/less-than-date-time.js +32 -0
- package/esm5/lib/search/models/operator/less-than-date.js +32 -0
- package/esm5/lib/search/models/operator/less-than-equal-date-time.js +32 -0
- package/esm5/lib/search/models/operator/less-than-equal-date.js +31 -0
- package/esm5/lib/search/models/operator/less-than-equal.js +21 -0
- package/esm5/lib/search/models/operator/less-than.js +21 -0
- package/esm5/lib/search/models/operator/like.js +33 -0
- package/esm5/lib/search/models/operator/more-than-date-time.js +34 -0
- package/esm5/lib/search/models/operator/more-than-date.js +34 -0
- package/esm5/lib/search/models/operator/more-than-equal-date-time.js +32 -0
- package/esm5/lib/search/models/operator/more-than-equal-date.js +32 -0
- package/esm5/lib/search/models/operator/more-than-equal.js +21 -0
- package/esm5/lib/search/models/operator/more-than.js +21 -0
- package/esm5/lib/search/models/operator/not-equals-date-time.js +29 -0
- package/esm5/lib/search/models/operator/not-equals-date.js +32 -0
- package/esm5/lib/search/models/operator/not-equals.js +35 -0
- package/esm5/lib/search/models/operator/operator.js +134 -0
- package/esm5/lib/search/models/operator/operators.js +31 -0
- package/esm5/lib/search/models/operator/substring.js +31 -0
- package/esm5/lib/search/models/operator-template-part-type.js +15 -0
- package/esm5/lib/search/models/operator-template-part.js +42 -0
- package/esm5/lib/search/models/persistance/filter-metadata-allowed-nets.js +2 -0
- package/esm5/lib/search/models/persistance/filter-metadata.js +2 -0
- package/esm5/lib/search/models/persistance/filter-text-segment.js +2 -0
- package/esm5/lib/search/models/persistance/generator-metadata.js +2 -0
- package/esm5/lib/search/models/persistance/saved-filter-metadata.js +2 -0
- package/esm5/lib/search/models/predicate/clause-predicate.js +95 -0
- package/esm5/lib/search/models/predicate/editable-clause-predicate-with-generators.js +79 -0
- package/esm5/lib/search/models/predicate/editable-clause-predicate.js +146 -0
- package/esm5/lib/search/models/predicate/editable-elementary-predicate.js +30 -0
- package/esm5/lib/search/models/predicate/editable-predicate-with-generator.js +47 -0
- package/esm5/lib/search/models/predicate/editable-predicate.js +32 -0
- package/esm5/lib/search/models/predicate/elementary-predicate.js +24 -0
- package/esm5/lib/search/models/predicate/predicate-with-generator.js +114 -0
- package/esm5/lib/search/models/predicate/predicate.js +110 -0
- package/esm5/lib/search/models/predicate-removal-event.js +2 -0
- package/esm5/lib/search/models/query/query.js +83 -0
- package/esm5/lib/search/models/search-index.js +76 -0
- package/esm5/lib/search/models/wrap-result.js +2 -0
- package/esm5/lib/search/operator-service/operator-resolver.service.js +113 -0
- package/esm5/lib/search/operator-service/operator.service.js +41 -0
- package/esm5/lib/search/public-api.js +107 -0
- package/esm5/lib/search/search-clause-component/abstract-search-clause.component.js +67 -0
- package/esm5/lib/search/search-component/abstract-search.component.js +201 -0
- package/esm5/lib/search/search-configuration-input-component/abstract-search-configuration-input.component.js +82 -0
- package/esm5/lib/search/search-keyword-resolver-service/search-index-resolver.service.js +40 -0
- package/esm5/lib/search/search-operand-input-component/abstract-search-operand-input.component.js +113 -0
- package/esm5/lib/search/search-predicate-component/abstract-search-predicate.component.js +162 -0
- package/esm5/lib/search/search-service/search.service.js +405 -0
- package/esm5/lib/side-menu/content-components/filter-selector/abstract-filter-selector.component.js +166 -0
- package/esm5/lib/side-menu/content-components/filter-selector/filter-selector-list-item/abstract-filter-selector-list-item.component.js +26 -0
- package/esm5/lib/side-menu/content-components/filter-selector/model/filter-selector-injection-data.js +2 -0
- package/esm5/lib/side-menu/content-components/filter-selector/model/filtered-array.js +37 -0
- package/esm5/lib/side-menu/content-components/import-net/abstract-import-net.component.js +152 -0
- package/esm5/lib/side-menu/content-components/injection-tokens.js +8 -0
- package/esm5/lib/side-menu/content-components/load-filter/abstract-load-filter.component.js +47 -0
- package/esm5/lib/side-menu/content-components/load-filter/model/load-filter-injection-data.js +2 -0
- package/esm5/lib/side-menu/content-components/new-case/abstract-new-case.component.js +264 -0
- package/esm5/lib/side-menu/content-components/new-case/model/new-case-injection-data.js +2 -0
- package/esm5/lib/side-menu/content-components/option-selector/abstract-option-selector.component.js +31 -0
- package/esm5/lib/side-menu/content-components/option-selector/model/option-selector-injection-data.js +2 -0
- package/esm5/lib/side-menu/content-components/public-api.js +20 -0
- package/esm5/lib/side-menu/content-components/save-filter/abstract-save-filter.component.js +43 -0
- package/esm5/lib/side-menu/content-components/save-filter/model/save-filter-injection-data.js +2 -0
- package/esm5/lib/side-menu/content-components/user-assign/abstract-user-assign.component.js +74 -0
- package/esm5/lib/side-menu/content-components/user-assign/model/user-list-injected-data.js +2 -0
- package/esm5/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.js +113 -0
- package/esm5/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-item/abstract-user-assign-item.component.js +15 -0
- package/esm5/lib/side-menu/models/portal-wrapper.js +23 -0
- package/esm5/lib/side-menu/models/side-menu-control.js +47 -0
- package/esm5/lib/side-menu/models/side-menu-event.js +2 -0
- package/esm5/lib/side-menu/models/side-menu-injection-data.js +2 -0
- package/esm5/lib/side-menu/models/side-menu-ref.js +26 -0
- package/esm5/lib/side-menu/models/side-menu-size.js +7 -0
- package/esm5/lib/side-menu/net-version-visible-injection-token.js +4 -0
- package/esm5/lib/side-menu/public-api.js +15 -0
- package/esm5/lib/side-menu/services/side-menu.service.js +90 -0
- package/esm5/lib/side-menu/side-menu-container/abstract-side-menu-container.component.js +36 -0
- package/esm5/lib/side-menu/side-menu-injection-token.js +3 -0
- package/esm5/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.js +31 -0
- package/esm5/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.js +31 -0
- package/esm5/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.js +31 -0
- package/esm5/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.js +31 -0
- package/esm5/lib/snack-bar/models/abstract-snack-bar.js +20 -0
- package/esm5/lib/snack-bar/models/injection-token-snackbar.js +4 -0
- package/esm5/lib/snack-bar/models/snack-bar-enums.js +12 -0
- package/esm5/lib/snack-bar/models/snack-bar-injection-data.js +2 -0
- package/esm5/lib/snack-bar/public-api.js +15 -0
- package/esm5/lib/snack-bar/services/snack-bar.service.js +105 -0
- package/esm5/lib/snack-bar/snack-bar.module.js +37 -0
- package/esm5/lib/tabs/classes/opened-tab.js +50 -0
- package/esm5/lib/tabs/classes/tab-view.js +283 -0
- package/esm5/lib/tabs/interfaces.js +2 -0
- package/esm5/lib/tabs/public-api.js +6 -0
- package/esm5/lib/tabs/tab-creation-detector/abstract-tab-creation-detector.component.js +21 -0
- package/esm5/lib/tabs/tab-data-injection-token/tab-data-injection-token.js +8 -0
- package/esm5/lib/tabs/tab-view/abstract-tab-view.component.js +71 -0
- package/esm5/lib/task/interfaces/task-operations.js +2 -0
- package/esm5/lib/task/models/null-task-operations.js +30 -0
- package/esm5/lib/task/models/subject-task-operations.js +76 -0
- package/esm5/lib/task/models/task-operations-injection-token.js +3 -0
- package/esm5/lib/task/models/task-set-data-request-context.js +2 -0
- package/esm5/lib/task/public-api.js +19 -0
- package/esm5/lib/task/services/assign-policy.service.js +189 -0
- package/esm5/lib/task/services/assign-task.service.js +200 -0
- package/esm5/lib/task/services/cancel-task.service.js +198 -0
- package/esm5/lib/task/services/data-focus-policy.service.js +40 -0
- package/esm5/lib/task/services/delegate-task.service.js +196 -0
- package/esm5/lib/task/services/finish-policy.service.js +85 -0
- package/esm5/lib/task/services/finish-task.service.js +215 -0
- package/esm5/lib/task/services/selected-case.service.js +48 -0
- package/esm5/lib/task/services/task-data.service.js +597 -0
- package/esm5/lib/task/services/task-handling-service.js +68 -0
- package/esm5/lib/task/services/task-request-state.service.js +118 -0
- package/esm5/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.js +41 -0
- package/esm5/lib/task-content/model/async-rendering-configuration-injection-token.js +8 -0
- package/esm5/lib/task-content/model/async-rendering-configuration.js +2 -0
- package/esm5/lib/task-content/model/datafield-grid-layout-element.js +2 -0
- package/esm5/lib/task-content/model/field-type-resource.js +23 -0
- package/esm5/lib/task-content/model/policy.js +31 -0
- package/esm5/lib/task-content/model/resource-interface.js +2 -0
- package/esm5/lib/task-content/model/split-data-group.js +2 -0
- package/esm5/lib/task-content/model/subgrid.js +247 -0
- package/esm5/lib/task-content/model/task-content-element-type.js +19 -0
- package/esm5/lib/task-content/model/task-event-notification.js +15 -0
- package/esm5/lib/task-content/model/task-event.js +10 -0
- package/esm5/lib/task-content/public-api.js +21 -0
- package/esm5/lib/task-content/services/field-converter.service.js +350 -0
- package/esm5/lib/task-content/services/single-task-content.service.js +85 -0
- package/esm5/lib/task-content/services/task-content.service.js +314 -0
- package/esm5/lib/task-content/services/task-event.service.js +54 -0
- package/esm5/lib/task-content/services/unlimited-task-content.service.js +77 -0
- package/esm5/lib/task-content/task-content/abstract-task-content.component.js +687 -0
- package/esm5/lib/toolbar/abstract-toolbar.component.js +24 -0
- package/esm5/lib/toolbar/public-api.js +2 -0
- package/esm5/lib/translate/language.service.js +89 -0
- package/esm5/lib/translate/public-api.js +3 -0
- package/esm5/lib/translate/translate-interceptor.js +25 -0
- package/esm5/lib/translate/translate-lib.module.js +42 -0
- package/esm5/lib/user/components/user-card/abstract-user-card.component.js +58 -0
- package/esm5/lib/user/models/iuser.js +2 -0
- package/esm5/lib/user/models/public-api.js +6 -0
- package/esm5/lib/user/models/user.js +51 -0
- package/esm5/lib/user/models/view-id-injection-tokens.js +4 -0
- package/esm5/lib/user/profile/abstract-profile.component.js +40 -0
- package/esm5/lib/user/public-api.js +12 -0
- package/esm5/lib/user/services/user-comparator.service.js +28 -0
- package/esm5/lib/user/services/user-list.service.js +220 -0
- package/esm5/lib/user/services/user-preference.service.js +164 -0
- package/esm5/lib/user/services/user.service.js +224 -0
- package/esm5/lib/user/services/view-id.service.js +36 -0
- package/esm5/lib/utility/array-to-observable.js +10 -0
- package/esm5/lib/utility/call-chain/after-action.js +19 -0
- package/esm5/lib/utility/call-chain/call-chain.service.js +36 -0
- package/esm5/lib/utility/clear-time-information.js +11 -0
- package/esm5/lib/utility/destroy-subscription.js +10 -0
- package/esm5/lib/utility/get-field.js +48 -0
- package/esm5/lib/utility/get-immediate-data.js +9 -0
- package/esm5/lib/utility/grid-layout/grid-layout-helper.js +105 -0
- package/esm5/lib/utility/grid-layout/model/grid-element-with-item.js +2 -0
- package/esm5/lib/utility/grid-layout/model/grid-element.js +2 -0
- package/esm5/lib/utility/grid-layout/model/grid-filler.js +52 -0
- package/esm5/lib/utility/incrementing-counter.js +23 -0
- package/esm5/lib/utility/loading-emitter.js +28 -0
- package/esm5/lib/utility/loading-with-filter-emitter.js +41 -0
- package/esm5/lib/utility/navigation-item-task-filter-factory.js +11 -0
- package/esm5/lib/utility/navigation-item-task-search-categories-factory.js +35 -0
- package/esm5/lib/utility/of-void.js +12 -0
- package/esm5/lib/utility/pagination/load-all-pages.js +47 -0
- package/esm5/lib/utility/pagination/page-has-content.js +8 -0
- package/esm5/lib/utility/process-message-response.js +17 -0
- package/esm5/lib/utility/public-api.js +47 -0
- package/esm5/lib/utility/refresh-tree.js +9 -0
- package/esm5/lib/utility/result-with-after-actions.js +34 -0
- package/esm5/lib/utility/service/case-list-font-color.service.js +47 -0
- package/esm5/lib/utility/service/spinner-overlay.service.js +51 -0
- package/esm5/lib/utility/stop-propagation.js +5 -0
- package/esm5/lib/utility/tests/mocks/mock-authentication-method-service.js +19 -0
- package/esm5/lib/utility/tests/mocks/mock-authentication.service.js +33 -0
- package/esm5/lib/utility/tests/mocks/mock-endpoint.js +46 -0
- package/esm5/lib/utility/tests/mocks/mock-sign-up.service.js +31 -0
- package/esm5/lib/utility/tests/mocks/mock-user-autocomplete-value.js +15 -0
- package/esm5/lib/utility/tests/mocks/mock-user-preference.service.js +53 -0
- package/esm5/lib/utility/tests/mocks/mock-user-resource.service.js +52 -0
- package/esm5/lib/utility/tests/search-category-mock-dependencies.js +21 -0
- package/esm5/lib/utility/tests/test-config.js +428 -0
- package/esm5/lib/utility/tests/test-factory-methods.js +21 -0
- package/esm5/lib/utility/tests/test-mock-dependencies.module.js +35 -0
- package/esm5/lib/utility/tests/test-view-service.js +28 -0
- package/esm5/lib/utility/tests/utility/configure-category.js +14 -0
- package/esm5/lib/utility/tests/utility/create-mock-case-outcome.js +19 -0
- package/esm5/lib/utility/tests/utility/create-mock-case.js +40 -0
- package/esm5/lib/utility/tests/utility/create-mock-datagroup.js +39 -0
- package/esm5/lib/utility/tests/utility/create-mock-field.js +47 -0
- package/esm5/lib/utility/tests/utility/create-mock-get-data-outcome.js +20 -0
- package/esm5/lib/utility/tests/utility/create-mock-immediate-data.js +17 -0
- package/esm5/lib/utility/tests/utility/create-mock-net.js +34 -0
- package/esm5/lib/utility/tests/utility/create-mock-page.js +24 -0
- package/esm5/lib/utility/tests/utility/create-mock-petri-net-outcome.js +16 -0
- package/esm5/lib/utility/tests/utility/create-mock-set-data-outcome.js +24 -0
- package/esm5/lib/utility/tests/utility/create-mock-task-outcome.js +22 -0
- package/esm5/lib/utility/tests/utility/create-mock-task.js +38 -0
- package/esm5/lib/view/abstract/page-load-request-context.js +34 -0
- package/esm5/lib/view/abstract/sortable-view.js +65 -0
- package/esm5/lib/view/abstract/view-with-headers.js +27 -0
- package/esm5/lib/view/case-view/abstract-case-view.js +47 -0
- package/esm5/lib/view/case-view/components/case-list/abstract-case-list.component.js +92 -0
- package/esm5/lib/view/case-view/models/case-page-load-request-result.js +2 -0
- package/esm5/lib/view/case-view/models/case-view-params.js +2 -0
- package/esm5/lib/view/case-view/models/new-case-configuration-injection-token.js +7 -0
- package/esm5/lib/view/case-view/models/new-case-configuration.js +2 -0
- package/esm5/lib/view/case-view/service/case-view-service.js +300 -0
- package/esm5/lib/view/case-view/tabbed-case-view.js +75 -0
- package/esm5/lib/view/public-api.js +42 -0
- package/esm5/lib/view/task-view/abstract-task-view.js +18 -0
- package/esm5/lib/view/task-view/models/injected-tabbed-task-view-data.js +2 -0
- package/esm5/lib/view/task-view/models/injection-token-task-endpoint.js +6 -0
- package/esm5/lib/view/task-view/models/task-endpoint.js +9 -0
- package/esm5/lib/view/task-view/models/task-page-load-request-result.js +2 -0
- package/esm5/lib/view/task-view/models/task-view-configuration-injection-token.js +20 -0
- package/esm5/lib/view/task-view/models/task-view-configuration.js +2 -0
- package/esm5/lib/view/task-view/models/task-view-params.js +2 -0
- package/esm5/lib/view/task-view/service/task-view.service.js +333 -0
- package/esm5/lib/view/task-view/tabbed-task-view.js +27 -0
- package/esm5/lib/view/tree-case-view/model/tree-petriflow-identifiers.js +43 -0
- package/esm5/lib/view/tree-case-view/tree-case-view.service.js +19 -0
- package/esm5/lib/view/tree-case-view/tree-component/abstract-tree.component.js +165 -0
- package/esm5/lib/view/tree-case-view/tree-component/add-child-node/abstract-add-child-node.component.js +16 -0
- package/esm5/lib/view/tree-case-view/tree-component/case-tree.service.js +899 -0
- package/esm5/lib/view/tree-case-view/tree-component/model/case-tree-node.js +106 -0
- package/esm5/lib/view/tree-case-view/tree-component/model/case-tree-path.js +2 -0
- package/esm5/lib/view/tree-case-view/tree-component/model/expansion-tree.js +2 -0
- package/esm5/lib/view/tree-case-view/tree-component/remove-node/abstract-remove-node.component.js +16 -0
- package/esm5/lib/view/tree-case-view/tree-task-content/abstract-tree-task-content.component.js +66 -0
- package/esm5/lib/view/tree-case-view/tree-task-content/tree-task-content.service.js +308 -0
- package/esm5/lib/view/workflow-view/abstract-workflow-view.component.js +74 -0
- package/esm5/lib/view/workflow-view/models/injection-token-workflow-service.js +10 -0
- package/esm5/lib/view/workflow-view/workflow-view.service.js +232 -0
- package/esm5/netgrif-components-core.js +20 -0
- package/esm5/public-api.js +45 -0
- package/fesm2015/netgrif-components-core.js +28627 -0
- package/fesm2015/netgrif-components-core.js.map +1 -0
- package/fesm5/netgrif-components-core.js +31716 -0
- package/fesm5/netgrif-components-core.js.map +1 -0
- package/lib/admin/public-api.d.ts +6 -0
- package/lib/admin/role-assignment/abstract-role-assignment.d.ts +31 -0
- package/lib/admin/role-assignment/services/ProcessList.d.ts +43 -0
- package/lib/admin/role-assignment/services/role-assignment.service.d.ts +16 -0
- package/lib/admin/user-invite/abstract-user-invite.component.d.ts +30 -0
- package/lib/admin/user-invite/services/organization-list.service.d.ts +16 -0
- package/lib/admin/user-invite/services/user-invite.service.d.ts +9 -0
- package/lib/allowed-nets/public-api.d.ts +3 -0
- package/lib/allowed-nets/services/allowed-nets.service.d.ts +45 -0
- package/lib/allowed-nets/services/base-allowed-nets.service.d.ts +27 -0
- package/lib/allowed-nets/services/factory/allowed-nets-service-factory.d.ts +59 -0
- package/lib/authentication/anonymous/anonymous.service.d.ts +18 -0
- package/lib/authentication/authentication.factory.d.ts +5 -0
- package/lib/authentication/authentication.module.d.ts +2 -0
- package/lib/authentication/components/abstract-authentication-overlay.d.ts +21 -0
- package/lib/authentication/models/credentials.d.ts +4 -0
- package/lib/authentication/models/public-api.d.ts +3 -0
- package/lib/authentication/models/transformer.d.ts +3 -0
- package/lib/authentication/models/user.transformer.d.ts +8 -0
- package/lib/authentication/public-api.d.ts +8 -0
- package/lib/authentication/services/anonymous-authentication-interceptor.d.ts +8 -0
- package/lib/authentication/services/authentication/authentication.service.d.ts +23 -0
- package/lib/authentication/services/authentication-interceptor.d.ts +12 -0
- package/lib/authentication/services/authentication-method.service.d.ts +8 -0
- package/lib/authentication/services/guard/authentication-guard.service.d.ts +11 -0
- package/lib/authentication/services/methods/basic-authentication/basic-authentication.service.d.ts +13 -0
- package/lib/authentication/services/methods/null-authentication/null-authentication.service.d.ts +9 -0
- package/lib/authentication/services/public-api.d.ts +5 -0
- package/lib/authentication/session/null-storage.d.ts +9 -0
- package/lib/authentication/session/public-api.d.ts +1 -0
- package/lib/authentication/session/services/session.service.d.ts +35 -0
- package/lib/authentication/sign-up/models/user-invitation-request.d.ts +5 -0
- package/lib/authentication/sign-up/models/user-registration-request.d.ts +6 -0
- package/lib/authentication/sign-up/public-api.d.ts +4 -0
- package/lib/authentication/sign-up/services/sign-up.service.d.ts +29 -0
- package/lib/authentication/sign-up/sign-up.module.d.ts +2 -0
- package/lib/authorization/authority/authority-guard.service.d.ts +16 -0
- package/lib/authorization/group/group-guard.service.d.ts +19 -0
- package/lib/authorization/permission/permission.service.d.ts +22 -0
- package/lib/authorization/public-api.d.ts +4 -0
- package/lib/authorization/role/role-guard.service.d.ts +29 -0
- package/lib/changed-fields/public-api.d.ts +1 -0
- package/lib/changed-fields/services/changed-fields.service.d.ts +12 -0
- package/lib/configuration/configuration.service.d.ts +69 -0
- package/lib/configuration/public-api.d.ts +1 -0
- package/lib/covalent/covalent.module.d.ts +2 -0
- package/lib/currency/currency.module.d.ts +3 -0
- package/lib/dashboard/cards/count-card/abstract-count-card.d.ts +19 -0
- package/lib/dashboard/cards/custom-card/abstract-custom-card.d.ts +39 -0
- package/lib/dashboard/cards/iframe-card/abstract-iframe-card.d.ts +10 -0
- package/lib/dashboard/cards/model/card-grid-element.d.ts +4 -0
- package/lib/dashboard/cards/model/count-card.d.ts +11 -0
- package/lib/dashboard/cards/model/custom-dashboard-model/aggregation-query.d.ts +9 -0
- package/lib/dashboard/cards/model/custom-dashboard-model/aggregation-result.d.ts +18 -0
- package/lib/dashboard/cards/model/custom-dashboard-model/custom-card.d.ts +14 -0
- package/lib/dashboard/cards/model/custom-dashboard-model/dashboard-event-content.d.ts +5 -0
- package/lib/dashboard/cards/model/custom-dashboard-model/dashboard-multi-data.d.ts +6 -0
- package/lib/dashboard/cards/model/custom-dashboard-model/dashboard-single-data.d.ts +5 -0
- package/lib/dashboard/cards/model/dashboard-card-types.d.ts +11 -0
- package/lib/dashboard/cards/model/dashboard-card.d.ts +7 -0
- package/lib/dashboard/cards/model/graph-card.d.ts +5 -0
- package/lib/dashboard/cards/model/iframe-card.d.ts +6 -0
- package/lib/dashboard/dashboard-content/abstract-dashboard-content.d.ts +15 -0
- package/lib/dashboard/dashboard-content/dashboard-params.d.ts +8 -0
- package/lib/dashboard/public-api.d.ts +16 -0
- package/lib/data-fields/boolean-field/abstract-boolean-field.component.d.ts +11 -0
- package/lib/data-fields/boolean-field/models/boolean-field.d.ts +15 -0
- package/lib/data-fields/button-field/abstract-button-field.component.d.ts +25 -0
- package/lib/data-fields/button-field/models/button-field.d.ts +22 -0
- package/lib/data-fields/data-field-template/abstract-data-field-template.component.d.ts +65 -0
- package/lib/data-fields/data-field-template/models/wrapped-boolean.d.ts +6 -0
- package/lib/data-fields/data-fields.module.d.ts +2 -0
- package/lib/data-fields/date-field/abstract-date-field.component.d.ts +9 -0
- package/lib/data-fields/date-field/models/custom-date-adapter.d.ts +4 -0
- package/lib/data-fields/date-field/models/date-field.d.ts +10 -0
- package/lib/data-fields/date-time-field/abstract-date-time-field.component.d.ts +9 -0
- package/lib/data-fields/date-time-field/models/date-time-field.d.ts +10 -0
- package/lib/data-fields/enumeration-field/abstract-enumeration-field.component.d.ts +6 -0
- package/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.d.ts +21 -0
- package/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.d.ts +26 -0
- package/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.d.ts +17 -0
- package/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.d.ts +10 -0
- package/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.d.ts +10 -0
- package/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.d.ts +18 -0
- package/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.d.ts +25 -0
- package/lib/data-fields/enumeration-field/models/enumeration-field.d.ts +35 -0
- package/lib/data-fields/file-field/abstract-file-field.component.d.ts +147 -0
- package/lib/data-fields/file-field/abstract-preview-dialog/preview-dialog-data.d.ts +9 -0
- package/lib/data-fields/file-field/models/file-field-value.d.ts +4 -0
- package/lib/data-fields/file-field/models/file-field.d.ts +73 -0
- package/lib/data-fields/file-list-field/abstract-file-list-field.component.d.ts +73 -0
- package/lib/data-fields/file-list-field/models/file-list-field-value.d.ts +4 -0
- package/lib/data-fields/file-list-field/models/file-list-field.d.ts +41 -0
- package/lib/data-fields/filter-field/abstract-filter-field-content.component.d.ts +12 -0
- package/lib/data-fields/filter-field/abstract-filter-field.component.d.ts +14 -0
- package/lib/data-fields/filter-field/models/filter-field-injection-token.d.ts +7 -0
- package/lib/data-fields/filter-field/models/filter-field.d.ts +13 -0
- package/lib/data-fields/i18n-field/abstract-i18n-field.component.d.ts +7 -0
- package/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.d.ts +13 -0
- package/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.d.ts +18 -0
- package/lib/data-fields/i18n-field/models/i18n-field-value.d.ts +5 -0
- package/lib/data-fields/i18n-field/models/i18n-field.d.ts +9 -0
- package/lib/data-fields/models/abstract-data-field-component.d.ts +32 -0
- package/lib/data-fields/models/abstract-data-field.d.ts +220 -0
- package/lib/data-fields/models/behavior.d.ts +40 -0
- package/lib/data-fields/models/boolean-label-enabled-token.d.ts +2 -0
- package/lib/data-fields/models/changed-fields.d.ts +44 -0
- package/lib/data-fields/models/component.d.ts +7 -0
- package/lib/data-fields/models/format-filter.d.ts +5 -0
- package/lib/data-fields/models/icon.d.ts +9 -0
- package/lib/data-fields/models/invalid-data-policy-token.d.ts +10 -0
- package/lib/data-fields/models/layout.d.ts +22 -0
- package/lib/data-fields/models/material-appearance.d.ts +12 -0
- package/lib/data-fields/models/properties.d.ts +3 -0
- package/lib/data-fields/models/template-appearance.d.ts +13 -0
- package/lib/data-fields/models/validation.d.ts +15 -0
- package/lib/data-fields/multichoice-field/abstract-multichoice-field.component.d.ts +6 -0
- package/lib/data-fields/multichoice-field/models/multichoice-field.d.ts +26 -0
- package/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.d.ts +10 -0
- package/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.d.ts +8 -0
- package/lib/data-fields/number-field/abstract-number-errors.component.d.ts +13 -0
- package/lib/data-fields/number-field/abstract-number-field.component.d.ts +8 -0
- package/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.d.ts +15 -0
- package/lib/data-fields/number-field/models/number-field.d.ts +36 -0
- package/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.d.ts +5 -0
- package/lib/data-fields/public-api.d.ts +67 -0
- package/lib/data-fields/task-ref-field/model/task-ref-field.d.ts +8 -0
- package/lib/data-fields/text-field/abstract-text-errors.component.d.ts +10 -0
- package/lib/data-fields/text-field/abstract-text-field.component.d.ts +6 -0
- package/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.d.ts +39 -0
- package/lib/data-fields/text-field/models/text-area-field.d.ts +12 -0
- package/lib/data-fields/text-field/models/text-field.d.ts +36 -0
- package/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.d.ts +13 -0
- package/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.d.ts +16 -0
- package/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.d.ts +13 -0
- package/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.d.ts +22 -0
- package/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.d.ts +9 -0
- package/lib/data-fields/time-instance-abstract-field/models/abstract-time-instance-field.d.ts +41 -0
- package/lib/data-fields/user-field/abstract-user-field.component.d.ts +36 -0
- package/lib/data-fields/user-field/models/user-field.d.ts +13 -0
- package/lib/data-fields/user-field/models/user-value.d.ts +24 -0
- package/lib/dialog/components/alert-dialog/alert-dialog.component.d.ts +19 -0
- package/lib/dialog/components/alert-dialog/alert-dialog.module.d.ts +2 -0
- package/lib/dialog/components/confirm-dialog/confirm-dialog.component.d.ts +24 -0
- package/lib/dialog/components/confirm-dialog/confirm-dialog.module.d.ts +2 -0
- package/lib/dialog/components/prompt-dialog/prompt-dialog.component.d.ts +23 -0
- package/lib/dialog/components/prompt-dialog/prompt-dialog.module.d.ts +2 -0
- package/lib/dialog/dialog.module.d.ts +2 -0
- package/lib/dialog/models/DialogData.d.ts +8 -0
- package/lib/dialog/models/DialogResult.d.ts +5 -0
- package/lib/dialog/models/abstract-dialog.d.ts +18 -0
- package/lib/dialog/public-api.d.ts +5 -0
- package/lib/dialog/services/dialog.service.d.ts +43 -0
- package/lib/event/model/event-constants.d.ts +6 -0
- package/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.d.ts +5 -0
- package/lib/event/model/event-outcomes/case-outcomes/create-case-event-outcome.d.ts +3 -0
- package/lib/event/model/event-outcomes/case-outcomes/delete-case-event-outcome.d.ts +3 -0
- package/lib/event/model/event-outcomes/data-outcomes/get-data-event-outcome.d.ts +5 -0
- package/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.d.ts +5 -0
- package/lib/event/model/event-outcomes/data-outcomes/get-data-localised-event-outcome.d.ts +5 -0
- package/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.d.ts +5 -0
- package/lib/event/model/event-outcomes/petrinet-outcomes/petri-net-event-outcome.d.ts +5 -0
- package/lib/event/model/event-outcomes/task-outcomes/assign-task-event-outcome.d.ts +3 -0
- package/lib/event/model/event-outcomes/task-outcomes/cancel-task-event-outcome.d.ts +3 -0
- package/lib/event/model/event-outcomes/task-outcomes/delegate-task-event-outcome.d.ts +3 -0
- package/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.d.ts +3 -0
- package/lib/event/model/event-outcomes/task-outcomes/task-event-outcome.d.ts +5 -0
- package/lib/event/public-api.d.ts +15 -0
- package/lib/event/services/event.service.d.ts +7 -0
- package/lib/event/services/interfaces/changed-fields-map.d.ts +6 -0
- package/lib/event-queue/model/queued-event.d.ts +21 -0
- package/lib/event-queue/public-api.d.ts +2 -0
- package/lib/event-queue/services/event-queue.service.d.ts +21 -0
- package/lib/filter/filter.repository.d.ts +59 -0
- package/lib/filter/models/case-search-request-body.d.ts +88 -0
- package/lib/filter/models/filter-type.d.ts +9 -0
- package/lib/filter/models/filter.d.ts +68 -0
- package/lib/filter/models/filters-filter-injection-token.d.ts +9 -0
- package/lib/filter/models/merge-operator.d.ts +9 -0
- package/lib/filter/models/merged-filter-params.d.ts +13 -0
- package/lib/filter/models/merged-filter.d.ts +75 -0
- package/lib/filter/models/simple-filter.d.ts +74 -0
- package/lib/filter/models/task-search-request-body.d.ts +83 -0
- package/lib/filter/models/user-filter-constants.d.ts +37 -0
- package/lib/filter/public-api.d.ts +12 -0
- package/lib/filter/user-filters.service.d.ts +116 -0
- package/lib/forms/email-submission/abstract-email-submission-form.component.d.ts +13 -0
- package/lib/forms/forgotten-password/abstract-forgotten-password.component.d.ts +16 -0
- package/lib/forms/has-form.d.ts +10 -0
- package/lib/forms/login/abstract-login-form.component.d.ts +24 -0
- package/lib/forms/models/abstract-registration.component.d.ts +42 -0
- package/lib/forms/models/password.validator.d.ts +7 -0
- package/lib/forms/public-api.d.ts +6 -0
- package/lib/forms/registration/abstract-registration-form.component.d.ts +19 -0
- package/lib/groups/public-api.d.ts +2 -0
- package/lib/groups/services/active-group.service.d.ts +49 -0
- package/lib/groups/services/next-group.service.d.ts +52 -0
- package/lib/header/abstract-header-service.d.ts +133 -0
- package/lib/header/abstract-header.component.d.ts +52 -0
- package/lib/header/case-header/case-header.service.d.ts +21 -0
- package/lib/header/case-header/case-menta-enum.d.ts +7 -0
- package/lib/header/header-modes/abstract-header-mode.component.d.ts +5 -0
- package/lib/header/header-modes/edit-mode/abstract-edit-mode.component.d.ts +28 -0
- package/lib/header/header-modes/loading-mode/abstract-loading-mode.component.d.ts +8 -0
- package/lib/header/header-modes/search-mode/abstract-search-mode.component.d.ts +48 -0
- package/lib/header/header-modes/sort-mode/abstract-sort-mode.component.d.ts +8 -0
- package/lib/header/header-state.d.ts +28 -0
- package/lib/header/models/default-headers-token.d.ts +2 -0
- package/lib/header/models/fields-group.d.ts +9 -0
- package/lib/header/models/header-column.d.ts +17 -0
- package/lib/header/models/header-mode.d.ts +5 -0
- package/lib/header/models/header-type.d.ts +5 -0
- package/lib/header/models/public-api.d.ts +11 -0
- package/lib/header/models/user-changes/column-header-change.d.ts +6 -0
- package/lib/header/models/user-changes/edit-change-description.d.ts +7 -0
- package/lib/header/models/user-changes/header-change-description.d.ts +5 -0
- package/lib/header/models/user-changes/header-change-type.d.ts +18 -0
- package/lib/header/models/user-changes/header-change.d.ts +17 -0
- package/lib/header/models/user-changes/mode-change-description.d.ts +5 -0
- package/lib/header/models/user-changes/search-change-description.d.ts +13 -0
- package/lib/header/models/user-changes/sort-change-description.d.ts +13 -0
- package/lib/header/public-api.d.ts +14 -0
- package/lib/header/services/overflow.service.d.ts +28 -0
- package/lib/header/task-header/task-header.service.d.ts +18 -0
- package/lib/header/task-header/task-meta-enum.d.ts +9 -0
- package/lib/header/workflow-header/workflow-header.service.d.ts +14 -0
- package/lib/header/workflow-header/workflow-meta-enum.d.ts +8 -0
- package/lib/legal/legal-notice/abstract-legal-notice.component.d.ts +13 -0
- package/lib/legal/public-api.d.ts +1 -0
- package/lib/logger/models/log-entry.d.ts +38 -0
- package/lib/logger/public-api.d.ts +7 -0
- package/lib/logger/publishers/console-log-publisher.d.ts +8 -0
- package/lib/logger/publishers/local-storage-log-publisher.d.ts +9 -0
- package/lib/logger/publishers/log-publisher.d.ts +8 -0
- package/lib/logger/services/log-level.d.ts +8 -0
- package/lib/logger/services/log-publisher.service.d.ts +22 -0
- package/lib/logger/services/logger.service.d.ts +25 -0
- package/lib/material/material.module.d.ts +2 -0
- package/lib/moment/public-api.d.ts +1 -0
- package/lib/moment/time-formats.d.ts +24 -0
- package/lib/navigation/group-navigation-component-resolver/abstract-group-navigation-component-resolver.component.d.ts +21 -0
- package/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.d.ts +14 -0
- package/lib/navigation/group-navigation-component-resolver/group-navigation-view-id-segment-factory.d.ts +2 -0
- package/lib/navigation/model/filter-case-injection-token.d.ts +6 -0
- package/lib/navigation/model/group-navigation-component-resolver-component-injection-token.d.ts +6 -0
- package/lib/navigation/model/group-navigation-constants.d.ts +57 -0
- package/lib/navigation/model/group-navigation-item-label.d.ts +4 -0
- package/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.d.ts +49 -0
- package/lib/navigation/navigation-drawer/abstract-navigation-resizable-drawer.component.d.ts +8 -0
- package/lib/navigation/navigation-rail/abstract-navigation-rail.component.d.ts +14 -0
- package/lib/navigation/navigation-tree/abstract-navigation-tree.component.d.ts +131 -0
- package/lib/navigation/public-api.d.ts +13 -0
- package/lib/navigation/quick-panel/components/abstract-quick-panel.component.d.ts +15 -0
- package/lib/navigation/quick-panel/components/internal-link/abstract-internal-link.component.d.ts +7 -0
- package/lib/navigation/quick-panel/components/language-selector/abstract-language-selector.component.d.ts +24 -0
- package/lib/navigation/quick-panel/components/logout-shortcut/abstract-logout-shortcut.component.d.ts +14 -0
- package/lib/navigation/quick-panel/components/paper-view.service.d.ts +6 -0
- package/lib/navigation/quick-panel/public-api.d.ts +5 -0
- package/lib/navigation/utility/filter-extraction.service.d.ts +18 -0
- package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +33 -0
- package/lib/panel/abstract/featured-value.d.ts +13 -0
- package/lib/panel/abstract/panel-with-header-binding.d.ts +23 -0
- package/lib/panel/abstract/panel-with-immediate-data.d.ts +18 -0
- package/lib/panel/abstract/tabbed-virtual-scroll.component.d.ts +10 -0
- package/lib/panel/abstract-panel.component.d.ts +23 -0
- package/lib/panel/case-panel/abstract-case-panel.component.d.ts +41 -0
- package/lib/panel/immediate/abstract-immediate-filter-text-content.component.d.ts +16 -0
- package/lib/panel/immediate/abstract-immediate-filter-text.component.d.ts +14 -0
- package/lib/panel/immediate/model/filter-text-injection-token.d.ts +10 -0
- package/lib/panel/public-api.d.ts +12 -0
- package/lib/panel/task-panel/abstract-task-panel.component.d.ts +109 -0
- package/lib/panel/task-panel/models/disable-functions.d.ts +10 -0
- package/lib/panel/task-panel-list/abstract-task-list.component.d.ts +46 -0
- package/lib/panel/task-panel-list/task-panel-data/task-panel-data.d.ts +8 -0
- package/lib/panel/workflow-panel/abstract-workflow-panel.component.d.ts +57 -0
- package/lib/process/net.d.ts +95 -0
- package/lib/process/netRole.d.ts +4 -0
- package/lib/process/permissions.d.ts +30 -0
- package/lib/process/petri-net-reference-with-permissions.d.ts +7 -0
- package/lib/process/process.service.d.ts +94 -0
- package/lib/process/public-api.d.ts +7 -0
- package/lib/process/public-process.service.d.ts +8 -0
- package/lib/process/rolesAndPermissions.d.ts +6 -0
- package/lib/process/transaction.d.ts +5 -0
- package/lib/process/transition.d.ts +7 -0
- package/lib/public/factories/get-net-and-create-case.d.ts +6 -0
- package/lib/public/factories/public-factory-resolver.d.ts +6 -0
- package/lib/public/factories/public-search-factory.d.ts +9 -0
- package/lib/public/public-api.d.ts +4 -0
- package/lib/public/services/public-url-resolver.service.d.ts +6 -0
- package/lib/resources/abstract-endpoint/abstract-resource.service.d.ts +38 -0
- package/lib/resources/abstract-endpoint/count-service.d.ts +6 -0
- package/lib/resources/engine-endpoint/case-resource.service.d.ts +86 -0
- package/lib/resources/engine-endpoint/dashboard-resource.service.d.ts +10 -0
- package/lib/resources/engine-endpoint/petri-net-resource.service.d.ts +105 -0
- package/lib/resources/engine-endpoint/public/public-case-resource.service.d.ts +20 -0
- package/lib/resources/engine-endpoint/public/public-petri-net-resource.service.d.ts +72 -0
- package/lib/resources/engine-endpoint/public/public-task-resource.service.d.ts +95 -0
- package/lib/resources/engine-endpoint/task-resource.service.d.ts +134 -0
- package/lib/resources/engine-endpoint/user-resource.service.d.ts +133 -0
- package/lib/resources/interface/assigned-user-policy.d.ts +4 -0
- package/lib/resources/interface/author.d.ts +15 -0
- package/lib/resources/interface/authority.d.ts +13 -0
- package/lib/resources/interface/case-get-request-body.d.ts +79 -0
- package/lib/resources/interface/case.d.ts +124 -0
- package/lib/resources/interface/changed-field-container.d.ts +4 -0
- package/lib/resources/interface/count.d.ts +15 -0
- package/lib/resources/interface/create-case-request-body.d.ts +11 -0
- package/lib/resources/interface/data-group-layout.d.ts +62 -0
- package/lib/resources/interface/data-groups.d.ts +60 -0
- package/lib/resources/interface/event-outcome.d.ts +10 -0
- package/lib/resources/interface/field-alignment.d.ts +8 -0
- package/lib/resources/interface/fields.d.ts +218 -0
- package/lib/resources/interface/file-resource.d.ts +22 -0
- package/lib/resources/interface/group.d.ts +18 -0
- package/lib/resources/interface/immediate-data.d.ts +44 -0
- package/lib/resources/interface/link.d.ts +18 -0
- package/lib/resources/interface/message-resource.d.ts +24 -0
- package/lib/resources/interface/page.d.ts +14 -0
- package/lib/resources/interface/pagination.d.ts +21 -0
- package/lib/resources/interface/petri-net-object-id.d.ts +12 -0
- package/lib/resources/interface/petri-net-reference.d.ts +46 -0
- package/lib/resources/interface/petri-net-request-body.d.ts +14 -0
- package/lib/resources/interface/petri-net.d.ts +10 -0
- package/lib/resources/interface/preferences.d.ts +16 -0
- package/lib/resources/interface/process-role.d.ts +9 -0
- package/lib/resources/interface/response-data.d.ts +19 -0
- package/lib/resources/interface/task-layout.d.ts +11 -0
- package/lib/resources/interface/task-reference.d.ts +17 -0
- package/lib/resources/interface/task-set-data-request-body.d.ts +35 -0
- package/lib/resources/interface/task.d.ts +72 -0
- package/lib/resources/interface/user-process-role.d.ts +13 -0
- package/lib/resources/interface/user-resource-small.d.ts +11 -0
- package/lib/resources/interface/user-resource.d.ts +16 -0
- package/lib/resources/public-api.d.ts +42 -0
- package/lib/resources/resource-provider.service.d.ts +53 -0
- package/lib/resources/types/nae-date-type.d.ts +7 -0
- package/lib/routing/dynamic-navigation-route-provider/dynamic-navigation-route-provider.service.d.ts +12 -0
- package/lib/routing/public-api.d.ts +5 -0
- package/lib/routing/redirect-service/redirect.service.d.ts +22 -0
- package/lib/routing/routing-builder/routing-builder.service.d.ts +23 -0
- package/lib/routing/view-service/model/view-entry.d.ts +14 -0
- package/lib/routing/view-service/view.service.d.ts +29 -0
- package/lib/search/advanced-search-component/abstract-advanced-search.component.d.ts +25 -0
- package/lib/search/advanced-search-component-initialization-service/advanced-search-component-initialization.service.d.ts +22 -0
- package/lib/search/category-factory/category-factory.d.ts +55 -0
- package/lib/search/category-factory/category-resolver.service.d.ts +48 -0
- package/lib/search/category-factory/category-serialisation-pair.d.ts +10 -0
- package/lib/search/category-factory/default-categories-factories.d.ts +32 -0
- package/lib/search/category-factory/default-search-categories.module.d.ts +2 -0
- package/lib/search/category-factory/optional-dependencies.d.ts +22 -0
- package/lib/search/category-factory/search-categories-injection-token.d.ts +24 -0
- package/lib/search/fulltext-search-component/abstract-fulltext-search.component.d.ts +7 -0
- package/lib/search/header-search-service/header-search.service.d.ts +112 -0
- package/lib/search/models/base-filter-injection-token.d.ts +6 -0
- package/lib/search/models/base-filter.d.ts +18 -0
- package/lib/search/models/boolean-operator.d.ts +7 -0
- package/lib/search/models/category/autocomplete-category.d.ts +94 -0
- package/lib/search/models/category/autocomplete-options.d.ts +17 -0
- package/lib/search/models/category/case/case-author.d.ts +12 -0
- package/lib/search/models/category/case/case-creation-date-time.d.ts +16 -0
- package/lib/search/models/category/case/case-creation-date.d.ts +16 -0
- package/lib/search/models/category/case/case-dataset.d.ts +94 -0
- package/lib/search/models/category/case/case-net-attribute-autocomplete-category.d.ts +18 -0
- package/lib/search/models/category/case/case-process.d.ts +27 -0
- package/lib/search/models/category/case/case-role.d.ts +15 -0
- package/lib/search/models/category/case/case-search.enum.d.ts +13 -0
- package/lib/search/models/category/case/case-simple-dataset.d.ts +58 -0
- package/lib/search/models/category/case/case-string-id.d.ts +11 -0
- package/lib/search/models/category/case/case-task.d.ts +15 -0
- package/lib/search/models/category/case/case-title.d.ts +11 -0
- package/lib/search/models/category/case/case-visual-id.d.ts +11 -0
- package/lib/search/models/category/categories.d.ts +20 -0
- package/lib/search/models/category/category.d.ts +363 -0
- package/lib/search/models/category/name-id-pair.d.ts +13 -0
- package/lib/search/models/category/net-attribute-autocomplete-category.d.ts +55 -0
- package/lib/search/models/category/net-attribute-pair.d.ts +17 -0
- package/lib/search/models/category/no-configuration-autocomplete-category.d.ts +28 -0
- package/lib/search/models/category/no-configuration-category.d.ts +30 -0
- package/lib/search/models/category/no-configuration-user-autocomplete-category.d.ts +20 -0
- package/lib/search/models/category/search-autocomplete-option.d.ts +21 -0
- package/lib/search/models/category/search-input-type.d.ts +12 -0
- package/lib/search/models/category/task/task-assignee.d.ts +12 -0
- package/lib/search/models/category/task/task-net-attribute-autocomplete-category.d.ts +18 -0
- package/lib/search/models/category/task/task-process.d.ts +19 -0
- package/lib/search/models/category/task/task-role.d.ts +15 -0
- package/lib/search/models/category/task/task-task.d.ts +15 -0
- package/lib/search/models/category/user-autocomplete.d.ts +28 -0
- package/lib/search/models/component-configuration/search-component-configuration-injection-token.d.ts +8 -0
- package/lib/search/models/component-configuration/search-component-configuration.d.ts +21 -0
- package/lib/search/models/component-configuration/search-mode.d.ts +7 -0
- package/lib/search/models/configuration-input.d.ts +38 -0
- package/lib/search/models/datafield-map-key.d.ts +28 -0
- package/lib/search/models/escape-result.d.ts +13 -0
- package/lib/search/models/operator/equals-date-time.d.ts +19 -0
- package/lib/search/models/operator/equals-date.d.ts +19 -0
- package/lib/search/models/operator/equals.d.ts +13 -0
- package/lib/search/models/operator/in-range-date-time.d.ts +24 -0
- package/lib/search/models/operator/in-range-date.d.ts +24 -0
- package/lib/search/models/operator/in-range.d.ts +12 -0
- package/lib/search/models/operator/is-null.d.ts +51 -0
- package/lib/search/models/operator/less-than-date-time.d.ts +16 -0
- package/lib/search/models/operator/less-than-date.d.ts +16 -0
- package/lib/search/models/operator/less-than-equal-date-time.d.ts +16 -0
- package/lib/search/models/operator/less-than-equal-date.d.ts +16 -0
- package/lib/search/models/operator/less-than-equal.d.ts +10 -0
- package/lib/search/models/operator/less-than.d.ts +10 -0
- package/lib/search/models/operator/like.d.ts +18 -0
- package/lib/search/models/operator/more-than-date-time.d.ts +16 -0
- package/lib/search/models/operator/more-than-date.d.ts +16 -0
- package/lib/search/models/operator/more-than-equal-date-time.d.ts +16 -0
- package/lib/search/models/operator/more-than-equal-date.d.ts +16 -0
- package/lib/search/models/operator/more-than-equal.d.ts +10 -0
- package/lib/search/models/operator/more-than.d.ts +10 -0
- package/lib/search/models/operator/not-equals-date-time.d.ts +13 -0
- package/lib/search/models/operator/not-equals-date.d.ts +16 -0
- package/lib/search/models/operator/not-equals.d.ts +18 -0
- package/lib/search/models/operator/operator.d.ts +98 -0
- package/lib/search/models/operator/operators.d.ts +29 -0
- package/lib/search/models/operator/substring.d.ts +13 -0
- package/lib/search/models/operator-template-part-type.d.ts +13 -0
- package/lib/search/models/operator-template-part.d.ts +26 -0
- package/lib/search/models/persistance/filter-metadata-allowed-nets.d.ts +14 -0
- package/lib/search/models/persistance/filter-metadata.d.ts +29 -0
- package/lib/search/models/persistance/filter-text-segment.d.ts +19 -0
- package/lib/search/models/persistance/generator-metadata.d.ts +44 -0
- package/lib/search/models/persistance/saved-filter-metadata.d.ts +26 -0
- package/lib/search/models/predicate/clause-predicate.d.ts +56 -0
- package/lib/search/models/predicate/editable-clause-predicate-with-generators.d.ts +24 -0
- package/lib/search/models/predicate/editable-clause-predicate.d.ts +67 -0
- package/lib/search/models/predicate/editable-elementary-predicate.d.ts +13 -0
- package/lib/search/models/predicate/editable-predicate-with-generator.d.ts +28 -0
- package/lib/search/models/predicate/editable-predicate.d.ts +14 -0
- package/lib/search/models/predicate/elementary-predicate.d.ts +10 -0
- package/lib/search/models/predicate/predicate-with-generator.d.ts +45 -0
- package/lib/search/models/predicate/predicate.d.ts +52 -0
- package/lib/search/models/predicate-removal-event.d.ts +13 -0
- package/lib/search/models/query/query.d.ts +44 -0
- package/lib/search/models/search-index.d.ts +74 -0
- package/lib/search/models/wrap-result.d.ts +13 -0
- package/lib/search/operator-service/operator-resolver.service.d.ts +23 -0
- package/lib/search/operator-service/operator.service.d.ts +16 -0
- package/lib/search/public-api.d.ts +98 -0
- package/lib/search/search-clause-component/abstract-search-clause.component.d.ts +28 -0
- package/lib/search/search-component/abstract-search.component.d.ts +86 -0
- package/lib/search/search-configuration-input-component/abstract-search-configuration-input.component.d.ts +42 -0
- package/lib/search/search-keyword-resolver-service/search-index-resolver.service.d.ts +25 -0
- package/lib/search/search-operand-input-component/abstract-search-operand-input.component.d.ts +38 -0
- package/lib/search/search-predicate-component/abstract-search-predicate.component.d.ts +64 -0
- package/lib/search/search-service/search.service.d.ts +182 -0
- package/lib/side-menu/content-components/filter-selector/abstract-filter-selector.component.d.ts +105 -0
- package/lib/side-menu/content-components/filter-selector/filter-selector-list-item/abstract-filter-selector-list-item.component.d.ts +20 -0
- package/lib/side-menu/content-components/filter-selector/model/filter-selector-injection-data.d.ts +20 -0
- package/lib/side-menu/content-components/filter-selector/model/filtered-array.d.ts +25 -0
- package/lib/side-menu/content-components/import-net/abstract-import-net.component.d.ts +50 -0
- package/lib/side-menu/content-components/injection-tokens.d.ts +8 -0
- package/lib/side-menu/content-components/load-filter/abstract-load-filter.component.d.ts +13 -0
- package/lib/side-menu/content-components/load-filter/model/load-filter-injection-data.d.ts +8 -0
- package/lib/side-menu/content-components/new-case/abstract-new-case.component.d.ts +62 -0
- package/lib/side-menu/content-components/new-case/model/new-case-injection-data.d.ts +13 -0
- package/lib/side-menu/content-components/option-selector/abstract-option-selector.component.d.ts +14 -0
- package/lib/side-menu/content-components/option-selector/model/option-selector-injection-data.d.ts +24 -0
- package/lib/side-menu/content-components/public-api.d.ts +17 -0
- package/lib/side-menu/content-components/save-filter/abstract-save-filter.component.d.ts +15 -0
- package/lib/side-menu/content-components/save-filter/model/save-filter-injection-data.d.ts +4 -0
- package/lib/side-menu/content-components/user-assign/abstract-user-assign.component.d.ts +46 -0
- package/lib/side-menu/content-components/user-assign/model/user-list-injected-data.d.ts +11 -0
- package/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.d.ts +83 -0
- package/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-item/abstract-user-assign-item.component.d.ts +16 -0
- package/lib/side-menu/models/portal-wrapper.d.ts +9 -0
- package/lib/side-menu/models/side-menu-control.d.ts +15 -0
- package/lib/side-menu/models/side-menu-event.d.ts +6 -0
- package/lib/side-menu/models/side-menu-injection-data.d.ts +3 -0
- package/lib/side-menu/models/side-menu-ref.d.ts +8 -0
- package/lib/side-menu/models/side-menu-size.d.ts +5 -0
- package/lib/side-menu/net-version-visible-injection-token.d.ts +3 -0
- package/lib/side-menu/public-api.d.ts +10 -0
- package/lib/side-menu/services/side-menu.service.d.ts +35 -0
- package/lib/side-menu/side-menu-container/abstract-side-menu-container.component.d.ts +16 -0
- package/lib/side-menu/side-menu-injection-token.d.ts +3 -0
- package/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.d.ts +8 -0
- package/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.d.ts +8 -0
- package/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.d.ts +8 -0
- package/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.d.ts +8 -0
- package/lib/snack-bar/models/abstract-snack-bar.d.ts +10 -0
- package/lib/snack-bar/models/injection-token-snackbar.d.ts +4 -0
- package/lib/snack-bar/models/snack-bar-enums.d.ts +9 -0
- package/lib/snack-bar/models/snack-bar-injection-data.d.ts +5 -0
- package/lib/snack-bar/public-api.d.ts +10 -0
- package/lib/snack-bar/services/snack-bar.service.d.ts +18 -0
- package/lib/snack-bar/snack-bar.module.d.ts +2 -0
- package/lib/tabs/classes/opened-tab.d.ts +67 -0
- package/lib/tabs/classes/tab-view.d.ts +123 -0
- package/lib/tabs/interfaces.d.ts +135 -0
- package/lib/tabs/public-api.d.ts +5 -0
- package/lib/tabs/tab-creation-detector/abstract-tab-creation-detector.component.d.ts +18 -0
- package/lib/tabs/tab-data-injection-token/tab-data-injection-token.d.ts +8 -0
- package/lib/tabs/tab-view/abstract-tab-view.component.d.ts +38 -0
- package/lib/task/interfaces/task-operations.d.ts +35 -0
- package/lib/task/models/null-task-operations.d.ts +22 -0
- package/lib/task/models/subject-task-operations.d.ts +37 -0
- package/lib/task/models/task-operations-injection-token.d.ts +3 -0
- package/lib/task/models/task-set-data-request-context.d.ts +11 -0
- package/lib/task/public-api.d.ts +15 -0
- package/lib/task/services/assign-policy.service.d.ts +81 -0
- package/lib/task/services/assign-task.service.d.ts +78 -0
- package/lib/task/services/cancel-task.service.d.ts +79 -0
- package/lib/task/services/data-focus-policy.service.d.ts +16 -0
- package/lib/task/services/delegate-task.service.d.ts +70 -0
- package/lib/task/services/finish-policy.service.d.ts +38 -0
- package/lib/task/services/finish-task.service.d.ts +76 -0
- package/lib/task/services/selected-case.service.d.ts +35 -0
- package/lib/task/services/task-data.service.d.ts +177 -0
- package/lib/task/services/task-handling-service.d.ts +41 -0
- package/lib/task/services/task-request-state.service.d.ts +64 -0
- package/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.d.ts +22 -0
- package/lib/task-content/model/async-rendering-configuration-injection-token.d.ts +8 -0
- package/lib/task-content/model/async-rendering-configuration.d.ts +22 -0
- package/lib/task-content/model/datafield-grid-layout-element.d.ts +9 -0
- package/lib/task-content/model/field-type-resource.d.ts +21 -0
- package/lib/task-content/model/policy.d.ts +27 -0
- package/lib/task-content/model/resource-interface.d.ts +37 -0
- package/lib/task-content/model/split-data-group.d.ts +7 -0
- package/lib/task-content/model/subgrid.d.ts +145 -0
- package/lib/task-content/model/task-content-element-type.d.ts +19 -0
- package/lib/task-content/model/task-event-notification.d.ts +32 -0
- package/lib/task-content/model/task-event.d.ts +8 -0
- package/lib/task-content/public-api.d.ts +17 -0
- package/lib/task-content/services/field-converter.service.d.ts +58 -0
- package/lib/task-content/services/single-task-content.service.d.ts +42 -0
- package/lib/task-content/services/task-content.service.d.ts +125 -0
- package/lib/task-content/services/task-event.service.d.ts +28 -0
- package/lib/task-content/services/unlimited-task-content.service.d.ts +42 -0
- package/lib/task-content/task-content/abstract-task-content.component.d.ts +263 -0
- package/lib/toolbar/abstract-toolbar.component.d.ts +15 -0
- package/lib/toolbar/public-api.d.ts +1 -0
- package/lib/translate/language.service.d.ts +20 -0
- package/lib/translate/public-api.d.ts +2 -0
- package/lib/translate/translate-interceptor.d.ts +8 -0
- package/lib/translate/translate-lib.module.d.ts +5 -0
- package/lib/user/components/user-card/abstract-user-card.component.d.ts +22 -0
- package/lib/user/models/iuser.d.ts +19 -0
- package/lib/user/models/public-api.d.ts +3 -0
- package/lib/user/models/user.d.ts +29 -0
- package/lib/user/models/view-id-injection-tokens.d.ts +3 -0
- package/lib/user/profile/abstract-profile.component.d.ts +14 -0
- package/lib/user/public-api.d.ts +8 -0
- package/lib/user/services/user-comparator.service.d.ts +7 -0
- package/lib/user/services/user-list.service.d.ts +111 -0
- package/lib/user/services/user-preference.service.d.ts +37 -0
- package/lib/user/services/user.service.d.ts +65 -0
- package/lib/user/services/view-id.service.d.ts +7 -0
- package/lib/utility/array-to-observable.d.ts +6 -0
- package/lib/utility/call-chain/after-action.d.ts +8 -0
- package/lib/utility/call-chain/call-chain.service.d.ts +16 -0
- package/lib/utility/clear-time-information.d.ts +6 -0
- package/lib/utility/destroy-subscription.d.ts +6 -0
- package/lib/utility/get-field.d.ts +34 -0
- package/lib/utility/get-immediate-data.d.ts +8 -0
- package/lib/utility/grid-layout/grid-layout-helper.d.ts +10 -0
- package/lib/utility/grid-layout/model/grid-element-with-item.d.ts +4 -0
- package/lib/utility/grid-layout/model/grid-element.d.ts +12 -0
- package/lib/utility/grid-layout/model/grid-filler.d.ts +10 -0
- package/lib/utility/incrementing-counter.d.ts +14 -0
- package/lib/utility/loading-emitter.d.ts +8 -0
- package/lib/utility/loading-with-filter-emitter.d.ts +12 -0
- package/lib/utility/navigation-item-task-filter-factory.d.ts +9 -0
- package/lib/utility/navigation-item-task-search-categories-factory.d.ts +15 -0
- package/lib/utility/of-void.d.ts +6 -0
- package/lib/utility/pagination/load-all-pages.d.ts +13 -0
- package/lib/utility/pagination/page-has-content.d.ts +6 -0
- package/lib/utility/process-message-response.d.ts +10 -0
- package/lib/utility/public-api.d.ts +45 -0
- package/lib/utility/refresh-tree.d.ts +5 -0
- package/lib/utility/result-with-after-actions.d.ts +21 -0
- package/lib/utility/service/case-list-font-color.service.d.ts +15 -0
- package/lib/utility/service/spinner-overlay.service.d.ts +13 -0
- package/lib/utility/stop-propagation.d.ts +1 -0
- package/lib/utility/tests/mocks/mock-authentication-method-service.d.ts +8 -0
- package/lib/utility/tests/mocks/mock-authentication.service.d.ts +10 -0
- package/lib/utility/tests/mocks/mock-endpoint.d.ts +25 -0
- package/lib/utility/tests/mocks/mock-sign-up.service.d.ts +20 -0
- package/lib/utility/tests/mocks/mock-user-autocomplete-value.d.ts +7 -0
- package/lib/utility/tests/mocks/mock-user-preference.service.d.ts +15 -0
- package/lib/utility/tests/mocks/mock-user-resource.service.d.ts +17 -0
- package/lib/utility/tests/search-category-mock-dependencies.d.ts +6 -0
- package/lib/utility/tests/test-config.d.ts +4 -0
- package/lib/utility/tests/test-factory-methods.d.ts +7 -0
- package/lib/utility/tests/test-mock-dependencies.module.d.ts +12 -0
- package/lib/utility/tests/test-view-service.d.ts +7 -0
- package/lib/utility/tests/utility/configure-category.d.ts +13 -0
- package/lib/utility/tests/utility/create-mock-case-outcome.d.ts +10 -0
- package/lib/utility/tests/utility/create-mock-case.d.ts +8 -0
- package/lib/utility/tests/utility/create-mock-datagroup.d.ts +18 -0
- package/lib/utility/tests/utility/create-mock-field.d.ts +19 -0
- package/lib/utility/tests/utility/create-mock-get-data-outcome.d.ts +7 -0
- package/lib/utility/tests/utility/create-mock-immediate-data.d.ts +8 -0
- package/lib/utility/tests/utility/create-mock-net.d.ts +17 -0
- package/lib/utility/tests/utility/create-mock-page.d.ts +7 -0
- package/lib/utility/tests/utility/create-mock-petri-net-outcome.d.ts +9 -0
- package/lib/utility/tests/utility/create-mock-set-data-outcome.d.ts +12 -0
- package/lib/utility/tests/utility/create-mock-task-outcome.d.ts +11 -0
- package/lib/utility/tests/utility/create-mock-task.d.ts +8 -0
- package/lib/view/abstract/page-load-request-context.d.ts +40 -0
- package/lib/view/abstract/sortable-view.d.ts +19 -0
- package/lib/view/abstract/view-with-headers.d.ts +13 -0
- package/lib/view/case-view/abstract-case-view.d.ts +25 -0
- package/lib/view/case-view/components/case-list/abstract-case-list.component.d.ts +35 -0
- package/lib/view/case-view/models/case-page-load-request-result.d.ts +14 -0
- package/lib/view/case-view/models/case-view-params.d.ts +3 -0
- package/lib/view/case-view/models/new-case-configuration-injection-token.d.ts +7 -0
- package/lib/view/case-view/models/new-case-configuration.d.ts +9 -0
- package/lib/view/case-view/service/case-view-service.d.ts +73 -0
- package/lib/view/case-view/tabbed-case-view.d.ts +26 -0
- package/lib/view/public-api.d.ts +35 -0
- package/lib/view/task-view/abstract-task-view.d.ts +12 -0
- package/lib/view/task-view/models/injected-tabbed-task-view-data.d.ts +12 -0
- package/lib/view/task-view/models/injection-token-task-endpoint.d.ts +6 -0
- package/lib/view/task-view/models/task-endpoint.d.ts +7 -0
- package/lib/view/task-view/models/task-page-load-request-result.d.ts +14 -0
- package/lib/view/task-view/models/task-view-configuration-injection-token.d.ts +13 -0
- package/lib/view/task-view/models/task-view-configuration.d.ts +19 -0
- package/lib/view/task-view/models/task-view-params.d.ts +3 -0
- package/lib/view/task-view/service/task-view.service.d.ts +68 -0
- package/lib/view/task-view/tabbed-task-view.d.ts +11 -0
- package/lib/view/tree-case-view/model/tree-petriflow-identifiers.d.ts +41 -0
- package/lib/view/tree-case-view/tree-case-view.service.d.ts +9 -0
- package/lib/view/tree-case-view/tree-component/abstract-tree.component.d.ts +99 -0
- package/lib/view/tree-case-view/tree-component/add-child-node/abstract-add-child-node.component.d.ts +8 -0
- package/lib/view/tree-case-view/tree-component/case-tree.service.d.ts +300 -0
- package/lib/view/tree-case-view/tree-component/model/case-tree-node.d.ts +57 -0
- package/lib/view/tree-case-view/tree-component/model/case-tree-path.d.ts +8 -0
- package/lib/view/tree-case-view/tree-component/model/expansion-tree.d.ts +6 -0
- package/lib/view/tree-case-view/tree-component/remove-node/abstract-remove-node.component.d.ts +8 -0
- package/lib/view/tree-case-view/tree-task-content/abstract-tree-task-content.component.d.ts +32 -0
- package/lib/view/tree-case-view/tree-task-content/tree-task-content.service.d.ts +112 -0
- package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +30 -0
- package/lib/view/workflow-view/models/injection-token-workflow-service.d.ts +10 -0
- package/lib/view/workflow-view/workflow-view.service.d.ts +52 -0
- package/netgrif-components-core.d.ts +25 -0
- package/netgrif-components-core.metadata.json +1 -0
- package/package.json +79 -0
- package/public-api.d.ts +39 -0
- package/schematics/_commons/angular-cli-devkit-core-strings.d.ts +93 -0
- package/schematics/_commons/angular-cli-devkit-core-strings.js +167 -0
- package/schematics/_commons/angular-cli-devkit-core-strings.js.map +1 -0
- package/schematics/_commons/import-to-add.d.ts +5 -0
- package/schematics/_commons/import-to-add.js +11 -0
- package/schematics/_commons/import-to-add.js.map +1 -0
- package/schematics/_commons/view-class-info.d.ts +22 -0
- package/schematics/_commons/view-class-info.js +58 -0
- package/schematics/_commons/view-class-info.js.map +1 -0
- package/schematics/_utility/models/file-data.d.ts +6 -0
- package/schematics/_utility/models/file-data.js +3 -0
- package/schematics/_utility/models/file-data.js.map +1 -0
- package/schematics/_utility/models/file-system-node.d.ts +6 -0
- package/schematics/_utility/models/file-system-node.js +12 -0
- package/schematics/_utility/models/file-system-node.js.map +1 -0
- package/schematics/_utility/models/project-info.d.ts +13 -0
- package/schematics/_utility/models/project-info.js +20 -0
- package/schematics/_utility/models/project-info.js.map +1 -0
- package/schematics/_utility/modified-library-functions.d.ts +24 -0
- package/schematics/_utility/modified-library-functions.js +150 -0
- package/schematics/_utility/modified-library-functions.js.map +1 -0
- package/schematics/_utility/utility-functions.d.ts +60 -0
- package/schematics/_utility/utility-functions.js +221 -0
- package/schematics/_utility/utility-functions.js.map +1 -0
- package/schematics/add/add/index.d.ts +2 -0
- package/schematics/add/add/index.js +27 -0
- package/schematics/add/add/index.js.map +1 -0
- package/schematics/add/create-nae-files/files/app-routing.module.ts.template +13 -0
- package/schematics/add/create-nae-files/index.d.ts +2 -0
- package/schematics/add/create-nae-files/index.js +154 -0
- package/schematics/add/create-nae-files/index.js.map +1 -0
- package/schematics/add/create-nae-files/schema.json +7 -0
- package/schematics/collection.json +30 -0
- package/schematics/configuration-service/files/__project@dasherize__-configuration.service.ts.template +13 -0
- package/schematics/configuration-service/schema.json +7 -0
- package/schematics/configuration-service/schematic-create-configuration-service.d.ts +2 -0
- package/schematics/configuration-service/schematic-create-configuration-service.js +41 -0
- package/schematics/configuration-service/schematic-create-configuration-service.js.map +1 -0
- package/schematics/migrations/4.1/migration-4.1.d.ts +5 -0
- package/schematics/migrations/4.1/migration-4.1.js +37 -0
- package/schematics/migrations/4.1/migration-4.1.js.map +1 -0
- package/schematics/migrations.json +10 -0
- package/schematics/view/_utility/view-service-functions.d.ts +9 -0
- package/schematics/view/_utility/view-service-functions.js +59 -0
- package/schematics/view/_utility/view-service-functions.js.map +1 -0
- package/schematics/view/_utility/view-utility-functions.d.ts +7 -0
- package/schematics/view/_utility/view-utility-functions.js +53 -0
- package/schematics/view/_utility/view-utility-functions.js.map +1 -0
- package/schematics/view-service/files/__project@dasherize__-view.service.ts.template +14 -0
- package/schematics/view-service/schema.json +7 -0
- package/schematics/view-service/schematic-create-view-service.d.ts +2 -0
- package/schematics/view-service/schematic-create-view-service.js +25 -0
- package/schematics/view-service/schematic-create-view-service.js.map +1 -0
- package/src/assets/i18n/de.json +419 -0
- package/src/assets/i18n/en.json +419 -0
- package/src/assets/i18n/sk.json +419 -0
- package/src/schema/nae-schema.json +770 -0
|
@@ -0,0 +1,687 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
import { EventEmitter, Inject, Input, Optional, Output } from '@angular/core';
|
|
3
|
+
import { FieldConverterService } from '../services/field-converter.service';
|
|
4
|
+
import { TaskContentService } from '../services/task-content.service';
|
|
5
|
+
import { PaperViewService } from '../../navigation/quick-panel/components/paper-view.service';
|
|
6
|
+
import { LoggerService } from '../../logger/services/logger.service';
|
|
7
|
+
import { TaskEventService } from '../services/task-event.service';
|
|
8
|
+
import { DataGroupAlignment } from '../../resources/interface/data-groups';
|
|
9
|
+
import { TaskElementType } from '../model/task-content-element-type';
|
|
10
|
+
import { DataGroupCompact, DataGroupHideEmptyRows, DataGroupLayoutType } from '../../resources/interface/data-group-layout';
|
|
11
|
+
import { FieldAlignment } from '../../resources/interface/field-alignment';
|
|
12
|
+
import { FieldTypeResource } from '../model/field-type-resource';
|
|
13
|
+
import { LoadingEmitter } from '../../utility/loading-emitter';
|
|
14
|
+
import { BehaviorSubject } from 'rxjs';
|
|
15
|
+
import { map } from 'rxjs/operators';
|
|
16
|
+
import { NAE_ASYNC_RENDERING_CONFIGURATION } from '../model/async-rendering-configuration-injection-token';
|
|
17
|
+
import { TaskRefField } from '../../data-fields/task-ref-field/model/task-ref-field';
|
|
18
|
+
import { Subgrid } from '../model/subgrid';
|
|
19
|
+
import { IncrementingCounter } from '../../utility/incrementing-counter';
|
|
20
|
+
var AbstractTaskContentComponent = /** @class */ (function () {
|
|
21
|
+
function AbstractTaskContentComponent(_fieldConverter, taskContentService, _paperView, _logger, _taskEventService, asyncRenderingConfiguration) {
|
|
22
|
+
var _this = this;
|
|
23
|
+
if (_taskEventService === void 0) { _taskEventService = null; }
|
|
24
|
+
if (asyncRenderingConfiguration === void 0) { asyncRenderingConfiguration = null; }
|
|
25
|
+
this._fieldConverter = _fieldConverter;
|
|
26
|
+
this.taskContentService = taskContentService;
|
|
27
|
+
this._paperView = _paperView;
|
|
28
|
+
this._logger = _logger;
|
|
29
|
+
this._taskEventService = _taskEventService;
|
|
30
|
+
this.DEFAULT_LAYOUT_TYPE = DataGroupLayoutType.LEGACY;
|
|
31
|
+
this.DEFAULT_FIELD_ALIGNMENT = FieldAlignment.CENTER;
|
|
32
|
+
this.DEFAULT_ASYNC_RENDERING_CONFIGURATION = {
|
|
33
|
+
batchSize: 4,
|
|
34
|
+
batchDelay: 200,
|
|
35
|
+
numberOfPlaceholders: 4,
|
|
36
|
+
enableAsyncRenderingForNewFields: true,
|
|
37
|
+
enableAsyncRenderingOnTaskExpand: true
|
|
38
|
+
};
|
|
39
|
+
this.DEFAULT_COMPACT_DIRECTION = DataGroupCompact.NONE;
|
|
40
|
+
this.DEFAULT_HIDE_EMPTY_ROWS = DataGroupHideEmptyRows.ALL;
|
|
41
|
+
/**
|
|
42
|
+
* Exists to allow references to the enum in the HTML
|
|
43
|
+
*/
|
|
44
|
+
this.fieldTypeResource = FieldTypeResource;
|
|
45
|
+
/**
|
|
46
|
+
* Whether an icon should be displayed when the no data message is shown.
|
|
47
|
+
*
|
|
48
|
+
* An icon is displayed by default
|
|
49
|
+
*/
|
|
50
|
+
this.displayNoDataIcon = true;
|
|
51
|
+
/**
|
|
52
|
+
* Defines the row height of one row in task content
|
|
53
|
+
*/
|
|
54
|
+
this.rowHeight = 105;
|
|
55
|
+
this.trackBySubgridFn = function (index, subgrid) { return subgrid.subgridId; };
|
|
56
|
+
this.trackByFn = function (index, element) { return _this.trackByDatafields(index, element); };
|
|
57
|
+
this._asyncRenderingConfig = __assign({}, this.DEFAULT_ASYNC_RENDERING_CONFIGURATION);
|
|
58
|
+
if (asyncRenderingConfiguration !== null) {
|
|
59
|
+
Object.assign(this._asyncRenderingConfig, asyncRenderingConfiguration);
|
|
60
|
+
}
|
|
61
|
+
this.loading$ = new LoadingEmitter(true);
|
|
62
|
+
this._dataSource$ = new BehaviorSubject([]);
|
|
63
|
+
this.hasDataToDisplay$ = this._dataSource$.pipe(map(function (data) {
|
|
64
|
+
return data.length !== 0;
|
|
65
|
+
}));
|
|
66
|
+
this._subTaskContent = this.taskContentService.$shouldCreate.subscribe(function (data) {
|
|
67
|
+
if (data.length !== 0) {
|
|
68
|
+
_this.computeDefaultLayoutConfiguration();
|
|
69
|
+
_this.computeLayoutData(data);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
_this.renderContent();
|
|
73
|
+
}
|
|
74
|
+
_this.loading$.off();
|
|
75
|
+
});
|
|
76
|
+
if (this._taskEventService !== null) {
|
|
77
|
+
this.taskEvent = new EventEmitter();
|
|
78
|
+
this._subTaskEvent = _taskEventService.taskEventNotifications$.subscribe(function (event) {
|
|
79
|
+
_this.taskEvent.emit(event);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
AbstractTaskContentComponent.prototype.ngOnDestroy = function () {
|
|
84
|
+
this.loading$.complete();
|
|
85
|
+
this._dataSource$.complete();
|
|
86
|
+
this._subTaskContent.unsubscribe();
|
|
87
|
+
if (this.taskEvent) {
|
|
88
|
+
this.taskEvent.complete();
|
|
89
|
+
}
|
|
90
|
+
if (this._subTaskEvent) {
|
|
91
|
+
this._subTaskEvent.unsubscribe();
|
|
92
|
+
}
|
|
93
|
+
if (this._asyncRenderTimeout !== undefined) {
|
|
94
|
+
window.clearTimeout(this._asyncRenderTimeout);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
Object.defineProperty(AbstractTaskContentComponent.prototype, "taskId", {
|
|
98
|
+
get: function () {
|
|
99
|
+
return this.taskContentService.task.stringId;
|
|
100
|
+
},
|
|
101
|
+
enumerable: false,
|
|
102
|
+
configurable: true
|
|
103
|
+
});
|
|
104
|
+
Object.defineProperty(AbstractTaskContentComponent.prototype, "dataSource", {
|
|
105
|
+
get: function () {
|
|
106
|
+
return this._dataSource$.getValue();
|
|
107
|
+
},
|
|
108
|
+
enumerable: false,
|
|
109
|
+
configurable: true
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* @returns the number of columns as specified by the tasks layout property, or 4 if no value is specified.
|
|
113
|
+
*/
|
|
114
|
+
AbstractTaskContentComponent.prototype.getNumberOfFormColumns = function () {
|
|
115
|
+
if (!this.taskContentService.task
|
|
116
|
+
|| !this.taskContentService.task.layout
|
|
117
|
+
|| this.taskContentService.task.layout.cols === undefined) {
|
|
118
|
+
return 4;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return this.taskContentService.task.layout.cols;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
AbstractTaskContentComponent.prototype.isPaperView = function () {
|
|
125
|
+
return this._paperView.paperView;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* @param item an object containing grid element information
|
|
129
|
+
* @returns the Angular flex layouts alignment property for individual data fields based on
|
|
130
|
+
* the layout configuration specified by the process
|
|
131
|
+
*/
|
|
132
|
+
AbstractTaskContentComponent.prototype.getItemAlignment = function (item) {
|
|
133
|
+
var _a, _b, _c;
|
|
134
|
+
if (item.alignment) {
|
|
135
|
+
return item.alignment;
|
|
136
|
+
}
|
|
137
|
+
var fieldAlignment = (_c = (_b = (_a = item.item) === null || _a === void 0 ? void 0 : _a.localLayout) === null || _b === void 0 ? void 0 : _b.alignment) !== null && _c !== void 0 ? _c : this._defaultAlignment;
|
|
138
|
+
var alignment;
|
|
139
|
+
switch (fieldAlignment) {
|
|
140
|
+
case FieldAlignment.TOP:
|
|
141
|
+
alignment = 'start';
|
|
142
|
+
break;
|
|
143
|
+
case FieldAlignment.CENTER:
|
|
144
|
+
alignment = 'center';
|
|
145
|
+
break;
|
|
146
|
+
case FieldAlignment.BOTTOM:
|
|
147
|
+
alignment = 'end';
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
item.alignment = 'space-between ' + alignment;
|
|
151
|
+
return item.alignment;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Computes component height if the rows attribute of task layout is set.
|
|
155
|
+
*/
|
|
156
|
+
AbstractTaskContentComponent.prototype.resolveContentHeightCss = function () {
|
|
157
|
+
if (this.scrollingNeeded()) {
|
|
158
|
+
return this.taskContentService.task.layout.rows * this.rowHeight + 'px';
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
return '100%';
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Decides whether there is a fixed number of rows and it need-s scrolling
|
|
166
|
+
*/
|
|
167
|
+
AbstractTaskContentComponent.prototype.scrollingNeeded = function () {
|
|
168
|
+
return this.taskContentService.task
|
|
169
|
+
&& !!this.taskContentService.task.layout
|
|
170
|
+
&& !!this.taskContentService.task.layout.rows
|
|
171
|
+
&& this.taskContentService.task.layout.rows > 0;
|
|
172
|
+
};
|
|
173
|
+
/**
|
|
174
|
+
* @returns the default alignment for the displayed task that can be overridden by fields individual property.
|
|
175
|
+
* If te task specifies no default value the [global default]{@link AbstractTaskContentComponent#DEFAULT_FIELD_ALIGNMENT}
|
|
176
|
+
* value is returned.
|
|
177
|
+
*/
|
|
178
|
+
AbstractTaskContentComponent.prototype.computeDefaultLayoutConfiguration = function () {
|
|
179
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
180
|
+
this._defaultAlignment = (_c = (_b = (_a = this.taskContentService.task) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.fieldAlignment) !== null && _c !== void 0 ? _c : this.DEFAULT_FIELD_ALIGNMENT;
|
|
181
|
+
this._defaultCompactDirection = (_f = (_e = (_d = this.taskContentService.task) === null || _d === void 0 ? void 0 : _d.layout) === null || _e === void 0 ? void 0 : _e.compactDirection) !== null && _f !== void 0 ? _f : this.DEFAULT_COMPACT_DIRECTION;
|
|
182
|
+
this._defaultHideEmptyRows = (_j = (_h = (_g = this.taskContentService.task) === null || _g === void 0 ? void 0 : _g.layout) === null || _h === void 0 ? void 0 : _h.hideEmptyRows) !== null && _j !== void 0 ? _j : this.DEFAULT_HIDE_EMPTY_ROWS;
|
|
183
|
+
this._defaultNumberOfCols = this.getNumberOfFormColumns();
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Computes the layout data for the tasks grid layout and sets the result to the public properties
|
|
187
|
+
* of this class that are then bound to HTML.
|
|
188
|
+
* @param dataGroups the data groups that should be laid out
|
|
189
|
+
*/
|
|
190
|
+
AbstractTaskContentComponent.prototype.computeLayoutData = function (dataGroups) {
|
|
191
|
+
var _this = this;
|
|
192
|
+
if (!this.taskContentService.task) {
|
|
193
|
+
this.renderContent();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
this._subgridIdCounter = new IncrementingCounter();
|
|
197
|
+
this._existingSubgridIds = new Set();
|
|
198
|
+
var result = new Map();
|
|
199
|
+
dataGroups = this.preprocessDataGroups(dataGroups);
|
|
200
|
+
var defaultLayout = this.taskContentService.task.layout && this.taskContentService.task.layout.type
|
|
201
|
+
? this.taskContentService.task.layout.type
|
|
202
|
+
: this.DEFAULT_LAYOUT_TYPE;
|
|
203
|
+
dataGroups.forEach(function (group) {
|
|
204
|
+
var _a;
|
|
205
|
+
if (!group.layout) {
|
|
206
|
+
group.layout = { rows: undefined, cols: undefined, type: defaultLayout };
|
|
207
|
+
}
|
|
208
|
+
if (!group.layout.type) {
|
|
209
|
+
group.layout.type = defaultLayout;
|
|
210
|
+
}
|
|
211
|
+
var subgrid = new Subgrid(_this.createSubgridId(group), (_a = group.layout.cols) !== null && _a !== void 0 ? _a : _this._defaultNumberOfCols, _this._asyncRenderingConfig);
|
|
212
|
+
if (group.title !== undefined) {
|
|
213
|
+
var title = subgrid.addTitle(group);
|
|
214
|
+
subgrid.addRow(_this.newGridRow(subgrid.cols, title.gridAreaId));
|
|
215
|
+
}
|
|
216
|
+
switch (group.layout.type) {
|
|
217
|
+
case DataGroupLayoutType.GRID:
|
|
218
|
+
_this.computeGridLayout(group, subgrid);
|
|
219
|
+
break;
|
|
220
|
+
case DataGroupLayoutType.FLOW:
|
|
221
|
+
_this.computeFlowLayout(group, subgrid);
|
|
222
|
+
break;
|
|
223
|
+
case DataGroupLayoutType.LEGACY:
|
|
224
|
+
_this.computeLegacyLayout(group, subgrid);
|
|
225
|
+
break;
|
|
226
|
+
default:
|
|
227
|
+
throw new Error("Unknown task layout type '" + _this.taskContentService.task.layout.type + "'");
|
|
228
|
+
}
|
|
229
|
+
subgrid.finalize();
|
|
230
|
+
result.set(subgrid.subgridId, subgrid);
|
|
231
|
+
});
|
|
232
|
+
this.renderFields(result);
|
|
233
|
+
};
|
|
234
|
+
AbstractTaskContentComponent.prototype.renderFields = function (subgrids) {
|
|
235
|
+
var subgridsArray = Array.from(subgrids.values());
|
|
236
|
+
if (!this._asyncRenderingConfig.enableAsyncRenderingForNewFields
|
|
237
|
+
&& !(this._asyncRenderingConfig.enableAsyncRenderingOnTaskExpand && this.taskContentService.isExpanding)) {
|
|
238
|
+
subgridsArray.forEach(function (subgrid) {
|
|
239
|
+
subgrid.displayAllFields();
|
|
240
|
+
});
|
|
241
|
+
this.renderContent(subgridsArray);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
if (!(this.taskContentService.isExpanding && this._asyncRenderingConfig.enableAsyncRenderingOnTaskExpand)) {
|
|
245
|
+
this._dataSource$.value.forEach(function (oldSubgrid) {
|
|
246
|
+
if (subgrids.has(oldSubgrid.subgridId)) {
|
|
247
|
+
subgrids.get(oldSubgrid.subgridId).determineKeptFields(oldSubgrid);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
this.renderContent(subgridsArray);
|
|
252
|
+
this.spreadFieldRenderingOverTime(subgridsArray);
|
|
253
|
+
};
|
|
254
|
+
AbstractTaskContentComponent.prototype.spreadFieldRenderingOverTime = function (subgrids, iteration) {
|
|
255
|
+
var _this = this;
|
|
256
|
+
if (iteration === void 0) { iteration = 0; }
|
|
257
|
+
this._asyncRenderTimeout = undefined;
|
|
258
|
+
if (iteration < subgrids.length) {
|
|
259
|
+
this._asyncRenderTimeout = window.setTimeout(function () {
|
|
260
|
+
subgrids[iteration].renderContentOverTime(function () {
|
|
261
|
+
_this.spreadFieldRenderingOverTime(subgrids, iteration + 1);
|
|
262
|
+
}, iteration === 0);
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* Clones the content of the data groups to prevent unintentional memory accesses to source data.
|
|
268
|
+
* Rearranges the data groups to accommodate taskrefs. Filters out hidden and forbidden fields.
|
|
269
|
+
* @param dataGroups
|
|
270
|
+
* @returns the preprocesses data groups
|
|
271
|
+
*/
|
|
272
|
+
AbstractTaskContentComponent.prototype.preprocessDataGroups = function (dataGroups) {
|
|
273
|
+
var _this = this;
|
|
274
|
+
dataGroups = this.cloneAndFilterHidden(dataGroups);
|
|
275
|
+
var result = [];
|
|
276
|
+
for (var i = 0; i < dataGroups.length; i++) {
|
|
277
|
+
var group = dataGroups[i];
|
|
278
|
+
if (!group.fields.some(function (f) { return _this.isTaskRef(f); })) {
|
|
279
|
+
result.push(group);
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
var split = this.splitDataGroupOnTaskRef(group);
|
|
283
|
+
if (split.startGroup !== undefined) {
|
|
284
|
+
result.push(split.startGroup);
|
|
285
|
+
}
|
|
286
|
+
if (split.taskRef.value.length === 0 || split.endGroup === undefined) {
|
|
287
|
+
if (split.endGroup !== undefined) {
|
|
288
|
+
dataGroups.splice(i + 1, 0, split.endGroup);
|
|
289
|
+
}
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
var directChild = dataGroups[i + 1]; // the data group that immediately follows IS ALWAYS a direct child
|
|
293
|
+
var firstNonDescendantIndex = i + 2;
|
|
294
|
+
var _loop_1 = function () {
|
|
295
|
+
var nextGroup = dataGroups[firstNonDescendantIndex];
|
|
296
|
+
if (nextGroup.nestingLevel === undefined || nextGroup.nestingLevel < directChild.nestingLevel) {
|
|
297
|
+
return "break";
|
|
298
|
+
}
|
|
299
|
+
if (nextGroup.nestingLevel === directChild.nestingLevel
|
|
300
|
+
&& (nextGroup.parentTaskRefId !== split.taskRef.stringId
|
|
301
|
+
|| !split.taskRef.value.some(function (reffedTaskId) { return reffedTaskId === nextGroup.parentTaskId; }))) {
|
|
302
|
+
return "break";
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
for (; firstNonDescendantIndex < dataGroups.length; firstNonDescendantIndex++) {
|
|
306
|
+
var state_1 = _loop_1();
|
|
307
|
+
if (state_1 === "break")
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
dataGroups.splice(firstNonDescendantIndex, 0, split.endGroup);
|
|
311
|
+
}
|
|
312
|
+
return result;
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Creates a duplicate of the provided data group array and filters away any fields and data groups that are marked as hidden.
|
|
316
|
+
* Because of the duplication the filtering doesn't affect the original instances and they remain unchanged.
|
|
317
|
+
* @param dataGroups the data groups that should be filtered
|
|
318
|
+
* @returns the filtered duplicated data groups
|
|
319
|
+
*/
|
|
320
|
+
AbstractTaskContentComponent.prototype.cloneAndFilterHidden = function (dataGroups) {
|
|
321
|
+
var result = dataGroups.map(function (group) {
|
|
322
|
+
var g = __assign({}, group);
|
|
323
|
+
g.fields = g.fields.filter(function (field) { return !field.behavior.hidden && !field.behavior.forbidden; }).map(function (field) {
|
|
324
|
+
field.resetLocalLayout();
|
|
325
|
+
return field;
|
|
326
|
+
});
|
|
327
|
+
return g;
|
|
328
|
+
});
|
|
329
|
+
return result.filter(function (group) { return group.fields.length > 0; });
|
|
330
|
+
};
|
|
331
|
+
AbstractTaskContentComponent.prototype.isTaskRef = function (field) {
|
|
332
|
+
return field instanceof TaskRefField;
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* Sorts the input data group based on the Y coordinate of the fields and splits it into parts on the first task ref.
|
|
336
|
+
* If some fields appear before the first task ref they are extracted into a new [startGroup]{@link SplitDataGroup#startGroup}.
|
|
337
|
+
* If some fields appear after the first task ref they are extracted into a new [endGroup]{@link SplitDataGroup#endGroup}.
|
|
338
|
+
* @param dataGroup
|
|
339
|
+
* @protected
|
|
340
|
+
*/
|
|
341
|
+
AbstractTaskContentComponent.prototype.splitDataGroupOnTaskRef = function (dataGroup) {
|
|
342
|
+
var _this = this;
|
|
343
|
+
dataGroup.fields.sort(function (a, b) { return a.localLayout.y - b.localLayout.y; });
|
|
344
|
+
var taskRefPosition = dataGroup.fields.findIndex(function (f) { return _this.isTaskRef(f); });
|
|
345
|
+
var result = {
|
|
346
|
+
taskRef: dataGroup.fields[taskRefPosition]
|
|
347
|
+
};
|
|
348
|
+
if (taskRefPosition !== 0) {
|
|
349
|
+
result.startGroup = {
|
|
350
|
+
title: dataGroup.title,
|
|
351
|
+
alignment: dataGroup.alignment,
|
|
352
|
+
layout: dataGroup.layout,
|
|
353
|
+
stretch: dataGroup.stretch,
|
|
354
|
+
fields: dataGroup.fields.slice(0, taskRefPosition),
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
if (taskRefPosition !== dataGroup.fields.length - 1) {
|
|
358
|
+
result.endGroup = {
|
|
359
|
+
title: undefined,
|
|
360
|
+
alignment: dataGroup.alignment,
|
|
361
|
+
layout: dataGroup.layout,
|
|
362
|
+
stretch: dataGroup.stretch,
|
|
363
|
+
fields: dataGroup.fields.slice(taskRefPosition + 1),
|
|
364
|
+
};
|
|
365
|
+
result.endGroup.fields.forEach(function (f) {
|
|
366
|
+
f.localLayout.y = f.localLayout.y - result.taskRef.localLayout.y - 1;
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
return result;
|
|
370
|
+
};
|
|
371
|
+
/**
|
|
372
|
+
* Computes the layout data for a single data group with grid layout. The resulting layout is saved into the input objects.
|
|
373
|
+
* @param dataGroup the data group that should be laid out into a grid
|
|
374
|
+
* @param subgrid the object that holds the context of the computed layouting unit
|
|
375
|
+
*/
|
|
376
|
+
AbstractTaskContentComponent.prototype.computeGridLayout = function (dataGroup, subgrid) {
|
|
377
|
+
var _this = this;
|
|
378
|
+
var localGrid = [];
|
|
379
|
+
dataGroup.fields.forEach(function (dataField) {
|
|
380
|
+
if (!dataField.localLayout
|
|
381
|
+
|| dataField.localLayout.x === undefined
|
|
382
|
+
|| dataField.localLayout.y === undefined
|
|
383
|
+
|| !dataField.localLayout.rows
|
|
384
|
+
|| !dataField.localLayout.cols) {
|
|
385
|
+
throw new Error("You cannot use 'grid' layout without specifying the layout of the data fields (field ID: " + dataField.stringId + ")");
|
|
386
|
+
}
|
|
387
|
+
while (localGrid.length < dataField.localLayout.y + dataField.localLayout.rows) {
|
|
388
|
+
localGrid.push(_this.newGridRow(subgrid.cols));
|
|
389
|
+
}
|
|
390
|
+
var fieldElement = subgrid.addField(dataField, _this._fieldConverter.resolveType(dataField));
|
|
391
|
+
_this.occupySpace(localGrid, dataField.localLayout.y, dataField.localLayout.x, dataField.localLayout.cols, fieldElement.gridAreaId, dataField.localLayout.rows);
|
|
392
|
+
});
|
|
393
|
+
this.collapseGridEmptySpace(localGrid, dataGroup.layout, subgrid);
|
|
394
|
+
localGrid.forEach(function (localGridRow) { return subgrid.addRow(localGridRow); });
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* Applies the empty row removal and field compacting rules based on the provided layout configuration.
|
|
398
|
+
*
|
|
399
|
+
* The input grid is modified in place.
|
|
400
|
+
* @param grid the state of the grid that should be modified
|
|
401
|
+
* @param layout configuration of the applied compacting rules
|
|
402
|
+
* @param subgrid the object that holds the context of the computed layouting unit
|
|
403
|
+
*/
|
|
404
|
+
AbstractTaskContentComponent.prototype.collapseGridEmptySpace = function (grid, layout, subgrid) {
|
|
405
|
+
var _a, _b;
|
|
406
|
+
var hideRows = (_a = layout.hideEmptyRows) !== null && _a !== void 0 ? _a : this._defaultHideEmptyRows;
|
|
407
|
+
if (hideRows === DataGroupHideEmptyRows.ALL) {
|
|
408
|
+
this.removeEmptyRows(grid);
|
|
409
|
+
}
|
|
410
|
+
switch ((_b = layout.compactDirection) !== null && _b !== void 0 ? _b : this._defaultCompactDirection) {
|
|
411
|
+
case DataGroupCompact.UP:
|
|
412
|
+
this.compactFieldsUp(grid, hideRows, subgrid);
|
|
413
|
+
break;
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
/**
|
|
417
|
+
* Moves any element as far UP as it can go. Elements that were originally declared in the same row might end up in different rows.
|
|
418
|
+
* Resulting trailing empty rows are removed.
|
|
419
|
+
*
|
|
420
|
+
* The input grid is modified in place.
|
|
421
|
+
* @param grid the state of the grid that should be modified
|
|
422
|
+
* @param hideRows configuration for empty row removal during the compacting process
|
|
423
|
+
* @param subgrid the object that holds the context of the computed layouting unit
|
|
424
|
+
*/
|
|
425
|
+
AbstractTaskContentComponent.prototype.compactFieldsUp = function (grid, hideRows, subgrid) {
|
|
426
|
+
for (var rowIndex = 0; rowIndex < grid.length; rowIndex++) {
|
|
427
|
+
var row = grid[rowIndex];
|
|
428
|
+
for (var columnIndex = 0; columnIndex < row.length; columnIndex++) {
|
|
429
|
+
if (row[columnIndex] !== '') {
|
|
430
|
+
continue;
|
|
431
|
+
}
|
|
432
|
+
var foundElement = false;
|
|
433
|
+
var foundElementRowIndex = rowIndex + 1;
|
|
434
|
+
for (; foundElementRowIndex < grid.length; foundElementRowIndex++) {
|
|
435
|
+
if (grid[foundElementRowIndex][columnIndex] !== '') {
|
|
436
|
+
foundElement = true;
|
|
437
|
+
break;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
if (!foundElement) {
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
if (columnIndex > 0 && grid[foundElementRowIndex][columnIndex - 1] === grid[foundElementRowIndex][columnIndex]) {
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
var elementDimensions = this.getElementDimensions(grid, columnIndex, foundElementRowIndex, subgrid);
|
|
447
|
+
if (this.isAreaEmpty(grid, columnIndex, rowIndex, elementDimensions.width, foundElementRowIndex - rowIndex)) {
|
|
448
|
+
var element = grid[foundElementRowIndex][columnIndex];
|
|
449
|
+
this.occupySpace(grid, foundElementRowIndex, columnIndex, elementDimensions.width, '', elementDimensions.height, false);
|
|
450
|
+
this.occupySpace(grid, rowIndex, columnIndex, elementDimensions.width, element, elementDimensions.height, false);
|
|
451
|
+
if (hideRows !== DataGroupHideEmptyRows.NONE) {
|
|
452
|
+
// we only check the rows potentially cleared by moving the grid element up
|
|
453
|
+
this.removeEmptyRows(grid, foundElementRowIndex, foundElementRowIndex + elementDimensions.height);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
/**
|
|
460
|
+
* Removes rows from the grid that only contain empty elements (are empty). The grid is modified in place.
|
|
461
|
+
* @param grid the grid that should have it's empty rows removed
|
|
462
|
+
* @param firstRow the 0 based index of the first row that should be checked. Use 0 to start from the beginning of the grid.
|
|
463
|
+
*
|
|
464
|
+
* If no value is provided, the grid will be checked from the first row.
|
|
465
|
+
*
|
|
466
|
+
* @param lastRow the 0 based index of the row where the checking should end. The row with this index is not checked.
|
|
467
|
+
*
|
|
468
|
+
* If no value is provided the entire grid from the `firstRow` will be checked.
|
|
469
|
+
*
|
|
470
|
+
* If a value that is smaller or equal to the `firstRow` is provided no checks will be preformed.
|
|
471
|
+
*/
|
|
472
|
+
AbstractTaskContentComponent.prototype.removeEmptyRows = function (grid, firstRow, lastRow) {
|
|
473
|
+
if (firstRow === void 0) { firstRow = 0; }
|
|
474
|
+
if (lastRow === void 0) { lastRow = Number.POSITIVE_INFINITY; }
|
|
475
|
+
var i = firstRow;
|
|
476
|
+
while (i < grid.length && i < lastRow) {
|
|
477
|
+
if (grid[i].every(function (element) { return element === ''; })) {
|
|
478
|
+
grid.splice(i, 1);
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
i++;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
/**
|
|
486
|
+
* Determines the dimensions of the element in the grid with its top-left corner at the specified position
|
|
487
|
+
* @param grid the grid of elements
|
|
488
|
+
* @param x the X coordinate of the desired elements top-left corner
|
|
489
|
+
* @param y the Y coordinate of the desired elements top-left corner
|
|
490
|
+
* @param subgrid the object that holds the context of the computed layouting unit
|
|
491
|
+
* @returns the width and height of the specified element
|
|
492
|
+
*/
|
|
493
|
+
AbstractTaskContentComponent.prototype.getElementDimensions = function (grid, x, y, subgrid) {
|
|
494
|
+
var element = grid[y][x];
|
|
495
|
+
var width = 1;
|
|
496
|
+
while (x + width < subgrid.cols && grid[y][x + width] === element) {
|
|
497
|
+
width++;
|
|
498
|
+
}
|
|
499
|
+
var height = 1;
|
|
500
|
+
while (y + height < grid.length && grid[y + height][x] === element) {
|
|
501
|
+
height++;
|
|
502
|
+
}
|
|
503
|
+
return { width: width, height: height };
|
|
504
|
+
};
|
|
505
|
+
/**
|
|
506
|
+
* Determines whether the specified area in the grid contains no elements, or not
|
|
507
|
+
* @param grid the grid of elements
|
|
508
|
+
* @param x the X coordinate of the tested areas top-left corner
|
|
509
|
+
* @param y the Y coordinate of the tested areas top-left corner
|
|
510
|
+
* @param width the width of the tested area
|
|
511
|
+
* @param height the height of the tested area
|
|
512
|
+
*/
|
|
513
|
+
AbstractTaskContentComponent.prototype.isAreaEmpty = function (grid, x, y, width, height) {
|
|
514
|
+
for (var i = y; i < y + height; i++) {
|
|
515
|
+
for (var j = x; j < x + width; j++) {
|
|
516
|
+
if (grid[i][j] !== '') {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
return true;
|
|
522
|
+
};
|
|
523
|
+
/**
|
|
524
|
+
* Computes the layout data for a single data group with flow layout. The resulting layout is saved into the input objects.
|
|
525
|
+
* @param dataGroup the data group that should be laid out into a grid using the flow algorithm
|
|
526
|
+
* @param subgrid the object that holds the context of the computed layouting unit
|
|
527
|
+
*/
|
|
528
|
+
AbstractTaskContentComponent.prototype.computeFlowLayout = function (dataGroup, subgrid) {
|
|
529
|
+
this.flowFields(dataGroup, subgrid, 1);
|
|
530
|
+
};
|
|
531
|
+
/**
|
|
532
|
+
* Computes the layout data for a single data group with legacy layout. The resulting layout is saved into the input objects.
|
|
533
|
+
*
|
|
534
|
+
* The legacy layout forces the number of columns to be 4 and logs a warning if this was not the case.
|
|
535
|
+
* @param dataGroup the data group that should be laid out into a grid using the legacy algorithm used in NAE versions < 4.0.0
|
|
536
|
+
* @param subgrid the object that holds the context of the computed layouting unit
|
|
537
|
+
*/
|
|
538
|
+
AbstractTaskContentComponent.prototype.computeLegacyLayout = function (dataGroup, subgrid) {
|
|
539
|
+
if (subgrid.cols !== 4) {
|
|
540
|
+
subgrid.cols = 4;
|
|
541
|
+
this._logger.warn("Task with id '" + this.taskContentService.task.stringId + "' has a data group with legacy layout with a "
|
|
542
|
+
+ "non-default number of columns. If you want to use a layout with different number of columns than 2 use a different "
|
|
543
|
+
+ "layout type instead.");
|
|
544
|
+
}
|
|
545
|
+
this.flowFields(dataGroup, subgrid, 2);
|
|
546
|
+
};
|
|
547
|
+
/**
|
|
548
|
+
* Lays out the fields from left to right, from top to bottom. If the width is greater than 1 and the block of flowed fields doesn't fit
|
|
549
|
+
* neatly into the columns (if the width of a single field is not a divisor of column count), then the entire block of fields is
|
|
550
|
+
* left aligned. The last row of fields is aligned to the left, center or right based on the data groups property.
|
|
551
|
+
* If the last row cannot be aligned to the exact center it is offset one grid tile to the left.
|
|
552
|
+
* @param dataGroup the data group that should be laid out into a grid
|
|
553
|
+
* @param subgrid the object that holds the context of the computed layouting unit
|
|
554
|
+
* @param fieldWidth the number of grid tiles, that should be occupied by each field
|
|
555
|
+
*/
|
|
556
|
+
AbstractTaskContentComponent.prototype.flowFields = function (dataGroup, subgrid, fieldWidth) {
|
|
557
|
+
var _this = this;
|
|
558
|
+
var fieldsPerRow = Math.floor(subgrid.cols / fieldWidth);
|
|
559
|
+
var maxXPosition = fieldWidth * (fieldsPerRow - 1);
|
|
560
|
+
var xPosition = 0;
|
|
561
|
+
var localGrid = [];
|
|
562
|
+
dataGroup.fields.forEach(function (dataField, dataFieldCount) {
|
|
563
|
+
var fieldElement = subgrid.addField(dataField, _this._fieldConverter.resolveType(dataField));
|
|
564
|
+
if (dataGroup.stretch) {
|
|
565
|
+
subgrid.addRow(_this.newGridRow(subgrid.cols, fieldElement.gridAreaId));
|
|
566
|
+
return; // continue
|
|
567
|
+
}
|
|
568
|
+
// else
|
|
569
|
+
if (xPosition === 0) {
|
|
570
|
+
localGrid.push(_this.newGridRow(subgrid.cols));
|
|
571
|
+
}
|
|
572
|
+
if (xPosition === 0 && _this.isLastRow(dataFieldCount, dataGroup, fieldsPerRow)) {
|
|
573
|
+
var fieldsInLastRow = dataGroup.fields.length % fieldsPerRow;
|
|
574
|
+
var rowWidth = maxXPosition + fieldWidth;
|
|
575
|
+
if (dataGroup.alignment === DataGroupAlignment.END) {
|
|
576
|
+
xPosition = rowWidth - fieldWidth * fieldsInLastRow;
|
|
577
|
+
}
|
|
578
|
+
else if (dataGroup.alignment === DataGroupAlignment.CENTER) {
|
|
579
|
+
xPosition = Math.floor((rowWidth - fieldsInLastRow * fieldWidth) / 2);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
_this.occupySpace(localGrid, localGrid.length - 1, xPosition, fieldWidth, fieldElement.gridAreaId);
|
|
583
|
+
xPosition += fieldWidth;
|
|
584
|
+
if (xPosition > maxXPosition) {
|
|
585
|
+
xPosition = 0;
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
localGrid.forEach(function (row) { return subgrid.addRow(row); });
|
|
589
|
+
};
|
|
590
|
+
/**
|
|
591
|
+
* @param width width of the row
|
|
592
|
+
* @param content the value that should be used to fill all elements in the row
|
|
593
|
+
*/
|
|
594
|
+
AbstractTaskContentComponent.prototype.newGridRow = function (width, content) {
|
|
595
|
+
if (content === void 0) { content = ''; }
|
|
596
|
+
return Array(width).fill(content);
|
|
597
|
+
};
|
|
598
|
+
/**
|
|
599
|
+
* Fills the specified rectangular area with the specified value in the provided grid.
|
|
600
|
+
*
|
|
601
|
+
* If the specified area contains values other than the empty string an error will be thrown.
|
|
602
|
+
* @param grid the grid that should be modified
|
|
603
|
+
* @param y the 0 based row index of the top-left corner of the filled area
|
|
604
|
+
* @param x the 0 based column index of the top-left corner of the filled area
|
|
605
|
+
* @param width the width of the filled area
|
|
606
|
+
* @param value the value that is set into every cell of the grid inside the specified area
|
|
607
|
+
* @param height the height of the filled area
|
|
608
|
+
* @param checkOccupants whether the filled area should be checked for other elements.
|
|
609
|
+
* If a check is performed an error will be thrown if elements are found.
|
|
610
|
+
*/
|
|
611
|
+
AbstractTaskContentComponent.prototype.occupySpace = function (grid, y, x, width, value, height, checkOccupants) {
|
|
612
|
+
if (height === void 0) { height = 1; }
|
|
613
|
+
if (checkOccupants === void 0) { checkOccupants = true; }
|
|
614
|
+
for (var j = y; j < y + height; j++) {
|
|
615
|
+
for (var i = x; i < x + width; i++) {
|
|
616
|
+
if (checkOccupants && grid[j][i] !== '') {
|
|
617
|
+
throw new Error("Cannot place element " + value + " into the grid layout, because it's space (x: " + i + ", y: " + j + ")" +
|
|
618
|
+
(" is already occupied by another element (" + grid[j][i] + ")"));
|
|
619
|
+
}
|
|
620
|
+
grid[j][i] = value;
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
};
|
|
624
|
+
/**
|
|
625
|
+
* @param index the index of the checked element within its data group
|
|
626
|
+
* @param dataGroup the checked data group
|
|
627
|
+
* @param fieldsPerRow the number of fields that is required to fill an entire row
|
|
628
|
+
* @returns whether the field at the given index is within the last row of elements of the provided data group.
|
|
629
|
+
* Note that if the last row contains enough elements to be completely filled this method returns `false`.
|
|
630
|
+
*/
|
|
631
|
+
AbstractTaskContentComponent.prototype.isLastRow = function (index, dataGroup, fieldsPerRow) {
|
|
632
|
+
return index + fieldsPerRow >= dataGroup.fields.length;
|
|
633
|
+
};
|
|
634
|
+
/**
|
|
635
|
+
* Destroys the previous content and pushes the new content into the stream
|
|
636
|
+
* @param content the new content
|
|
637
|
+
*/
|
|
638
|
+
AbstractTaskContentComponent.prototype.renderContent = function (content) {
|
|
639
|
+
if (content === void 0) { content = []; }
|
|
640
|
+
this._dataSource$.value.forEach(function (subgrid) { return subgrid.destroy(); });
|
|
641
|
+
this._dataSource$.next(content);
|
|
642
|
+
};
|
|
643
|
+
AbstractTaskContentComponent.prototype.createSubgridId = function (dataGroup) {
|
|
644
|
+
var idBase;
|
|
645
|
+
if (dataGroup.parentTaskId !== undefined) {
|
|
646
|
+
idBase = [dataGroup.parentTaskId, dataGroup.parentTaskRefId, dataGroup.nestingLevel].join('#');
|
|
647
|
+
}
|
|
648
|
+
else {
|
|
649
|
+
idBase = 'root';
|
|
650
|
+
}
|
|
651
|
+
var id = idBase;
|
|
652
|
+
while (this._existingSubgridIds.has(id)) {
|
|
653
|
+
id = idBase + this._subgridIdCounter.next();
|
|
654
|
+
}
|
|
655
|
+
this._existingSubgridIds.add(id);
|
|
656
|
+
return id;
|
|
657
|
+
};
|
|
658
|
+
AbstractTaskContentComponent.prototype.trackByDatafields = function (index, element) {
|
|
659
|
+
switch (element.type) {
|
|
660
|
+
case TaskElementType.BLANK:
|
|
661
|
+
return element.gridAreaId + '-' + this.taskContentService.$shouldCreateCounter.getValue();
|
|
662
|
+
case TaskElementType.LOADER:
|
|
663
|
+
return element.gridAreaId + '-L-' + this.taskContentService.$shouldCreateCounter.getValue();
|
|
664
|
+
case TaskElementType.DATA_GROUP_TITLE:
|
|
665
|
+
return element.title + '-' + this.taskContentService.$shouldCreateCounter.getValue();
|
|
666
|
+
default:
|
|
667
|
+
return element.item.stringId + '-' + this.taskContentService.$shouldCreateCounter.getValue();
|
|
668
|
+
}
|
|
669
|
+
};
|
|
670
|
+
AbstractTaskContentComponent.ctorParameters = function () { return [
|
|
671
|
+
{ type: FieldConverterService },
|
|
672
|
+
{ type: TaskContentService },
|
|
673
|
+
{ type: PaperViewService },
|
|
674
|
+
{ type: LoggerService },
|
|
675
|
+
{ type: TaskEventService, decorators: [{ type: Optional }] },
|
|
676
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NAE_ASYNC_RENDERING_CONFIGURATION,] }] }
|
|
677
|
+
]; };
|
|
678
|
+
AbstractTaskContentComponent.propDecorators = {
|
|
679
|
+
noDataText: [{ type: Input }],
|
|
680
|
+
noDataIcon: [{ type: Input }],
|
|
681
|
+
displayNoDataIcon: [{ type: Input }],
|
|
682
|
+
taskEvent: [{ type: Output }]
|
|
683
|
+
};
|
|
684
|
+
return AbstractTaskContentComponent;
|
|
685
|
+
}());
|
|
686
|
+
export { AbstractTaskContentComponent };
|
|
687
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFzay1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi90YXNrLWNvbnRlbnQvdGFzay1jb250ZW50L2Fic3RyYWN0LXRhc2stY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQzVGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQVksa0JBQWtCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHNCQUFzQixFQUFtQixtQkFBbUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzNJLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxp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O1lBQ3pGO2dCQUNJLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNwRztJQUNMLENBQUM7O2dCQTF2QkcscUJBQXFCO2dCQUNyQixrQkFBa0I7Z0JBQ2xCLGdCQUFnQjtnQkFDaEIsYUFBYTtnQkFFYixnQkFBZ0IsdUJBNEZHLFFBQVE7Z0RBQ1IsUUFBUSxZQUFJLE1BQU0sU0FBQyxpQ0FBaUM7Ozs2QkE1QzFFLEtBQUs7NkJBTUwsS0FBSztvQ0FNTCxLQUFLOzRCQUlMLE1BQU07O0lBcXJCWCxtQ0FBQztDQUFBLEFBcnVCRCxJQXF1QkM7U0FydUJxQiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnR9IGZyb20gJy4uL21vZGVsL2RhdGFmaWVsZC1ncmlkLWxheW91dC1lbGVtZW50JztcbmltcG9ydCB7RmllbGRDb252ZXJ0ZXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvdGFzay1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtQYXBlclZpZXdTZXJ2aWNlfSBmcm9tICcuLi8uLi9uYXZpZ2F0aW9uL3F1aWNrLXBhbmVsL2NvbXBvbmVudHMvcGFwZXItdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7VGFza0V2ZW50Tm90aWZpY2F0aW9ufSBmcm9tICcuLi9tb2RlbC90YXNrLWV2ZW50LW5vdGlmaWNhdGlvbic7XG5pbXBvcnQge1Rhc2tFdmVudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL3Rhc2stZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0RhdGFHcm91cCwgRGF0YUdyb3VwQWxpZ25tZW50fSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7VGFza0VsZW1lbnRUeXBlfSBmcm9tICcuLi9tb2RlbC90YXNrLWNvbnRlbnQtZWxlbWVudC10eXBlJztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQge0RhdGFHcm91cENvbXBhY3QsIERhdGFHcm91cEhpZGVFbXB0eVJvd3MsIERhdGFHcm91cExheW91dCwgRGF0YUdyb3VwTGF5b3V0VHlwZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9kYXRhLWdyb3VwLWxheW91dCc7XG5pbXBvcnQge0ZpZWxkQWxpZ25tZW50fSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2ZpZWxkLWFsaWdubWVudCc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi9tb2RlbC9maWVsZC10eXBlLXJlc291cmNlJztcbmltcG9ydCB7TG9hZGluZ0VtaXR0ZXJ9IGZyb20gJy4uLy4uL3V0aWxpdHkvbG9hZGluZy1lbWl0dGVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TkFFX0FTWU5DX1JFTkRFUklOR19DT05GSUdVUkFUSU9OfSBmcm9tICcuLi9tb2RlbC9hc3luYy1yZW5kZXJpbmctY29uZmlndXJhdGlvbi1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL21vZGVsL2FzeW5jLXJlbmRlcmluZy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7VGFza1JlZkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy90YXNrLXJlZi1maWVsZC9tb2RlbC90YXNrLXJlZi1maWVsZCc7XG5pbXBvcnQge1NwbGl0RGF0YUdyb3VwfSBmcm9tICcuLi9tb2RlbC9zcGxpdC1kYXRhLWdyb3VwJztcbmltcG9ydCB7U3ViZ3JpZH0gZnJvbSAnLi4vbW9kZWwvc3ViZ3JpZCc7XG5pbXBvcnQge0luY3JlbWVudGluZ0NvdW50ZXJ9IGZyb20gJy4uLy4uL3V0aWxpdHkvaW5jcmVtZW50aW5nLWNvdW50ZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUYXNrQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcmVhZG9ubHkgREVGQVVMVF9MQVlPVVRfVFlQRSA9IERhdGFHcm91cExheW91dFR5cGUuTEVHQUNZO1xuICAgIHJlYWRvbmx5IERFRkFVTFRfRklFTERfQUxJR05NRU5UID0gRmllbGRBbGlnbm1lbnQuQ0VOVEVSO1xuICAgIHJlYWRvbmx5IERFRkFVTFRfQVNZTkNfUkVOREVSSU5HX0NPTkZJR1VSQVRJT046IEFzeW5jUmVuZGVyaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgYmF0Y2hTaXplOiA0LFxuICAgICAgICBiYXRjaERlbGF5OiAyMDAsXG4gICAgICAgIG51bWJlck9mUGxhY2Vob2xkZXJzOiA0LFxuICAgICAgICBlbmFibGVBc3luY1JlbmRlcmluZ0Zvck5ld0ZpZWxkczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQXN5bmNSZW5kZXJpbmdPblRhc2tFeHBhbmQ6IHRydWVcbiAgICB9O1xuICAgIHJlYWRvbmx5IERFRkFVTFRfQ09NUEFDVF9ESVJFQ1RJT04gPSBEYXRhR3JvdXBDb21wYWN0Lk5PTkU7XG4gICAgcmVhZG9ubHkgREVGQVVMVF9ISURFX0VNUFRZX1JPV1MgPSBEYXRhR3JvdXBIaWRlRW1wdHlSb3dzLkFMTDtcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGRhdGEgaXMgYmVpbmcgbG9hZGVkIGZyb20gYmFja2VuZCwgb3IgaWYgaXQgaXMgYmVpbmcgcHJvY2Vzc2VkLlxuICAgICAqL1xuICAgIGxvYWRpbmckOiBMb2FkaW5nRW1pdHRlcjtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBgdHJ1ZWAgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGRhdGEgZmllbGQsIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZC4gRW1pdHMgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaGFzRGF0YVRvRGlzcGxheSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiBFeGlzdHMgdG8gYWxsb3cgcmVmZXJlbmNlcyB0byB0aGUgZW51bSBpbiB0aGUgSFRNTFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWVsZFR5cGVSZXNvdXJjZSA9IEZpZWxkVHlwZVJlc291cmNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRyYW5zbGF0ZSB0ZXh0IHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCB3aGVuIHRoZSB0YXNrIGNvbnRhaW5zIG5vIGRhdGEuXG4gICAgICpcbiAgICAgKiBJZiBhIGZhbHN5IHZhbHVlIGlzIHByb3ZpZGVkIHRoZSBkZWZhdWx0IHRleHQgaXMgZGlzcGxheWVkXG4gICAgICovXG4gICAgQElucHV0KCkgbm9EYXRhVGV4dDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBpY29uIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCB3aGVuIHRoZSB0YXNrIGNvbnRhaW5zIG5vIGRhdGEuXG4gICAgICpcbiAgICAgKiBJZiBhIGZhbHN5IHZhbHVlIGlzIHByb3ZpZGVkIHRoZSBkZWZhdWx0IGljb24gaXMgZGlzcGxheWVkXG4gICAgICovXG4gICAgQElucHV0KCkgbm9EYXRhSWNvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYW4gaWNvbiBzaG91bGQgYmUgZGlzcGxheWVkIHdoZW4gdGhlIG5vIGRhdGEgbWVzc2FnZSBpcyBzaG93bi5cbiAgICAgKlxuICAgICAqIEFuIGljb24gaXMgZGlzcGxheWVkIGJ5IGRlZmF1bHRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkaXNwbGF5Tm9EYXRhSWNvbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogRW1pdHMgbm90aWZpY2F0aW9ucyBhYm91dCB0YXNrIGV2ZW50c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0YXNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxUYXNrRXZlbnROb3RpZmljYXRpb24+O1xuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIGZpZWxkcyB0aGF0IGFyZSBjdXJyZW50bHkgZGlzcGxheWVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9kYXRhU291cmNlJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PFN1YmdyaWQ+PjtcbiAgICBwcm90ZWN0ZWQgX3N1YlRhc2tDb250ZW50OiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9zdWJUYXNrRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX2FzeW5jUmVuZGVyaW5nQ29uZmlnOiBBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb247XG4gICAgcHJvdGVjdGVkIF9hc3luY1JlbmRlclRpbWVvdXQ6IG51bWJlcjtcblxuICAgIHByb3RlY3RlZCBfZGVmYXVsdEFsaWdubWVudDogRmllbGRBbGlnbm1lbnQ7XG4gICAgcHJvdGVjdGVkIF9kZWZhdWx0Q29tcGFjdERpcmVjdGlvbjogRGF0YUdyb3VwQ29tcGFjdDtcbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRIaWRlRW1wdHlSb3dzOiBEYXRhR3JvdXBIaWRlRW1wdHlSb3dzO1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdE51bWJlck9mQ29sczogbnVtYmVyO1xuXG4gICAgcHJvdGVjdGVkIF9zdWJncmlkSWRDb3VudGVyOiBJbmNyZW1lbnRpbmdDb3VudGVyO1xuICAgIHByb3RlY3RlZCBfZXhpc3RpbmdTdWJncmlkSWRzOiBTZXQ8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHJvdyBoZWlnaHQgb2Ygb25lIHJvdyBpbiB0YXNrIGNvbnRlbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcm93SGVpZ2h0ID0gMTA1O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZmllbGRDb252ZXJ0ZXI6IEZpZWxkQ29udmVydGVyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRhc2tDb250ZW50U2VydmljZTogVGFza0NvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3BhcGVyVmlldzogUGFwZXJWaWV3U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdGFza0V2ZW50U2VydmljZTogVGFza0V2ZW50U2VydmljZSA9IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX0FTWU5DX1JFTkRFUklOR19DT05GSUdVUkFUSU9OKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNSZW5kZXJpbmdDb25maWd1cmF0aW9uOiBBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb24gPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnID0gey4uLnRoaXMuREVGQVVMVF9BU1lOQ19SRU5ERVJJTkdfQ09ORklHVVJBVElPTn07XG4gICAgICAgIGlmIChhc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcsIGFzeW5jUmVuZGVyaW5nQ29uZmlndXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmckID0gbmV3IExvYWRpbmdFbWl0dGVyKHRydWUpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8U3ViZ3JpZD4+KFtdKTtcbiAgICAgICAgdGhpcy5oYXNEYXRhVG9EaXNwbGF5JCA9IHRoaXMuX2RhdGFTb3VyY2UkLnBpcGUobWFwKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoICE9PSAwO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fc3ViVGFza0NvbnRlbnQgPSB0aGlzLnRhc2tDb250ZW50U2VydmljZS4kc2hvdWxkQ3JlYXRlLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZURlZmF1bHRMYXlvdXRDb25maWd1cmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlTGF5b3V0RGF0YShkYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb250ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmckLm9mZigpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuX3Rhc2tFdmVudFNlcnZpY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMudGFza0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRXZlbnROb3RpZmljYXRpb24+KCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJUYXNrRXZlbnQgPSBfdGFza0V2ZW50U2VydmljZS50YXNrRXZlbnROb3RpZmljYXRpb25zJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFza0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9zdWJUYXNrQ29udGVudC51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAodGhpcy50YXNrRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGFza0V2ZW50LmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3N1YlRhc2tFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5fc3ViVGFza0V2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2FzeW5jUmVuZGVyVGltZW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2FzeW5jUmVuZGVyVGltZW91dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhc2tJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5zdHJpbmdJZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogQXJyYXk8U3ViZ3JpZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZSB0YXNrcyBsYXlvdXQgcHJvcGVydHksIG9yIDQgaWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROdW1iZXJPZkZvcm1Db2x1bW5zKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFza1xuICAgICAgICAgICAgfHwgIXRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0XG4gICAgICAgICAgICB8fCB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrLmxheW91dC5jb2xzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiA0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LmNvbHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNQYXBlclZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXBlclZpZXcucGFwZXJWaWV3O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpdGVtIGFuIG9iamVjdCBjb250YWluaW5nIGdyaWQgZWxlbWVudCBpbmZvcm1hdGlvblxuICAgICAqIEByZXR1cm5zIHRoZSBBbmd1bGFyIGZsZXggbGF5b3V0cyBhbGlnbm1lbnQgcHJvcGVydHkgZm9yIGluZGl2aWR1YWwgZGF0YSBmaWVsZHMgYmFzZWQgb25cbiAgICAgKiB0aGUgbGF5b3V0IGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBwcm9jZXNzXG4gICAgICovXG4gICAgcHVibGljIGdldEl0ZW1BbGlnbm1lbnQoaXRlbTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaXRlbS5hbGlnbm1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmFsaWdubWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkQWxpZ25tZW50ID0gaXRlbS5pdGVtPy5sb2NhbExheW91dD8uYWxpZ25tZW50ID8/IHRoaXMuX2RlZmF1bHRBbGlnbm1lbnQ7XG5cbiAgICAgICAgbGV0IGFsaWdubWVudDtcbiAgICAgICAgc3dpdGNoIChmaWVsZEFsaWdubWVudCkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZEFsaWdubWVudC5UT1A6XG4gICAgICAgICAgICAgICAgYWxpZ25tZW50ID0gJ3N0YXJ0JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRBbGlnbm1lbnQuQ0VOVEVSOlxuICAgICAgICAgICAgICAgIGFsaWdubWVudCA9ICdjZW50ZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZEFsaWdubWVudC5CT1RUT006XG4gICAgICAgICAgICAgICAgYWxpZ25tZW50ID0gJ2VuZCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLmFsaWdubWVudCA9ICdzcGFjZS1iZXR3ZWVuICcgKyBhbGlnbm1lbnQ7XG4gICAgICAgIHJldHVybiBpdGVtLmFsaWdubWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBjb21wb25lbnQgaGVpZ2h0IGlmIHRoZSByb3dzIGF0dHJpYnV0ZSBvZiB0YXNrIGxheW91dCBpcyBzZXQuXG4gICAgICovXG4gICAgcHVibGljIHJlc29sdmVDb250ZW50SGVpZ2h0Q3NzKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbGluZ05lZWRlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQucm93cyAqIHRoaXMucm93SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnMTAwJSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNpZGVzIHdoZXRoZXIgdGhlcmUgaXMgYSBmaXhlZCBudW1iZXIgb2Ygcm93cyBhbmQgaXQgbmVlZC1zIHNjcm9sbGluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBzY3JvbGxpbmdOZWVkZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrXG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0XG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LnJvd3NcbiAgICAgICAgICAgICYmIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LnJvd3MgPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBkZWZhdWx0IGFsaWdubWVudCBmb3IgdGhlIGRpc3BsYXllZCB0YXNrIHRoYXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZmllbGRzIGluZGl2aWR1YWwgcHJvcGVydHkuXG4gICAgICogSWYgdGUgdGFzayBzcGVjaWZpZXMgbm8gZGVmYXVsdCB2YWx1ZSB0aGUgW2dsb2JhbCBkZWZhdWx0XXtAbGluayBBYnN0cmFjdFRhc2tDb250ZW50Q29tcG9uZW50I0RFRkFVTFRfRklFTERfQUxJR05NRU5UfVxuICAgICAqIHZhbHVlIGlzIHJldHVybmVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wdXRlRGVmYXVsdExheW91dENvbmZpZ3VyYXRpb24oKSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRBbGlnbm1lbnQgPSB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrPy5sYXlvdXQ/LmZpZWxkQWxpZ25tZW50ID8/IHRoaXMuREVGQVVMVF9GSUVMRF9BTElHTk1FTlQ7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRDb21wYWN0RGlyZWN0aW9uID0gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzaz8ubGF5b3V0Py5jb21wYWN0RGlyZWN0aW9uID8/IHRoaXMuREVGQVVMVF9DT01QQUNUX0RJUkVDVElPTjtcbiAgICAgICAgdGhpcy5fZGVmYXVsdEhpZGVFbXB0eVJvd3MgPSB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrPy5sYXlvdXQ/LmhpZGVFbXB0eVJvd3MgPz8gdGhpcy5ERUZBVUxUX0hJREVfRU1QVFlfUk9XUztcbiAgICAgICAgdGhpcy5fZGVmYXVsdE51bWJlck9mQ29scyA9IHRoaXMuZ2V0TnVtYmVyT2ZGb3JtQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBsYXlvdXQgZGF0YSBmb3IgdGhlIHRhc2tzIGdyaWQgbGF5b3V0IGFuZCBzZXRzIHRoZSByZXN1bHQgdG8gdGhlIHB1YmxpYyBwcm9wZXJ0aWVzXG4gICAgICogb2YgdGhpcyBjbGFzcyB0aGF0IGFyZSB0aGVuIGJvdW5kIHRvIEhUTUwuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cHMgdGhlIGRhdGEgZ3JvdXBzIHRoYXQgc2hvdWxkIGJlIGxhaWQgb3V0XG4gICAgICovXG4gICAgcHVibGljIGNvbXB1dGVMYXlvdXREYXRhKGRhdGFHcm91cHM6IEFycmF5PERhdGFHcm91cD4pIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbnRlbnQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N1YmdyaWRJZENvdW50ZXIgPSBuZXcgSW5jcmVtZW50aW5nQ291bnRlcigpO1xuICAgICAgICB0aGlzLl9leGlzdGluZ1N1YmdyaWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgU3ViZ3JpZD4oKTtcblxuICAgICAgICBkYXRhR3JvdXBzID0gdGhpcy5wcmVwcm9jZXNzRGF0YUdyb3VwcyhkYXRhR3JvdXBzKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQgJiYgdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQudHlwZVxuICAgICAgICAgICAgPyB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrLmxheW91dC50eXBlXG4gICAgICAgICAgICA6IHRoaXMuREVGQVVMVF9MQVlPVVRfVFlQRTtcblxuICAgICAgICBkYXRhR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgaWYgKCFncm91cC5sYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBncm91cC5sYXlvdXQgPSB7cm93czogdW5kZWZpbmVkLCBjb2xzOiB1bmRlZmluZWQsIHR5cGU6IGRlZmF1bHRMYXlvdXR9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFncm91cC5sYXlvdXQudHlwZSkge1xuICAgICAgICAgICAgICAgIGdyb3VwLmxheW91dC50eXBlID0gZGVmYXVsdExheW91dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3ViZ3JpZCA9IG5ldyBTdWJncmlkKFxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlU3ViZ3JpZElkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICBncm91cC5sYXlvdXQuY29scyA/PyB0aGlzLl9kZWZhdWx0TnVtYmVyT2ZDb2xzLFxuICAgICAgICAgICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gc3ViZ3JpZC5hZGRUaXRsZShncm91cCk7XG4gICAgICAgICAgICAgICAgc3ViZ3JpZC5hZGRSb3codGhpcy5uZXdHcmlkUm93KHN1YmdyaWQuY29scywgdGl0bGUuZ3JpZEFyZWFJZCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGdyb3VwLmxheW91dC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRhR3JvdXBMYXlvdXRUeXBlLkdSSUQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUdyaWRMYXlvdXQoZ3JvdXAsIHN1YmdyaWQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERhdGFHcm91cExheW91dFR5cGUuRkxPVzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRmxvd0xheW91dChncm91cCwgc3ViZ3JpZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0YUdyb3VwTGF5b3V0VHlwZS5MRUdBQ1k6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUxlZ2FjeUxheW91dChncm91cCwgc3ViZ3JpZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0YXNrIGxheW91dCB0eXBlICcke3RoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LnR5cGV9J2ApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJncmlkLmZpbmFsaXplKCk7XG4gICAgICAgICAgICByZXN1bHQuc2V0KHN1YmdyaWQuc3ViZ3JpZElkLCBzdWJncmlkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJGaWVsZHMocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVuZGVyRmllbGRzKHN1YmdyaWRzOiBNYXA8c3RyaW5nLCBTdWJncmlkPikge1xuICAgICAgICBjb25zdCBzdWJncmlkc0FycmF5ID0gQXJyYXkuZnJvbShzdWJncmlkcy52YWx1ZXMoKSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9hc3luY1JlbmRlcmluZ0NvbmZpZy5lbmFibGVBc3luY1JlbmRlcmluZ0Zvck5ld0ZpZWxkc1xuICAgICAgICAgICAgJiYgISh0aGlzLl9hc3luY1JlbmRlcmluZ0NvbmZpZy5lbmFibGVBc3luY1JlbmRlcmluZ09uVGFza0V4cGFuZCAmJiB0aGlzLnRhc2tDb250ZW50U2VydmljZS5pc0V4cGFuZGluZykpIHtcbiAgICAgICAgICAgIHN1YmdyaWRzQXJyYXkuZm9yRWFjaChzdWJncmlkID0+IHtcbiAgICAgICAgICAgICAgICBzdWJncmlkLmRpc3BsYXlBbGxGaWVsZHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb250ZW50KHN1YmdyaWRzQXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy50YXNrQ29udGVudFNlcnZpY2UuaXNFeHBhbmRpbmcgJiYgdGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcuZW5hYmxlQXN5bmNSZW5kZXJpbmdPblRhc2tFeHBhbmQpKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlJC52YWx1ZS5mb3JFYWNoKG9sZFN1YmdyaWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJncmlkcy5oYXMob2xkU3ViZ3JpZC5zdWJncmlkSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YmdyaWRzLmdldChvbGRTdWJncmlkLnN1YmdyaWRJZCkuZGV0ZXJtaW5lS2VwdEZpZWxkcyhvbGRTdWJncmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVuZGVyQ29udGVudChzdWJncmlkc0FycmF5KTtcbiAgICAgICAgdGhpcy5zcHJlYWRGaWVsZFJlbmRlcmluZ092ZXJUaW1lKHN1YmdyaWRzQXJyYXkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzcHJlYWRGaWVsZFJlbmRlcmluZ092ZXJUaW1lKHN1YmdyaWRzOiBBcnJheTxTdWJncmlkPiwgaXRlcmF0aW9uID0gMCkge1xuICAgICAgICB0aGlzLl9hc3luY1JlbmRlclRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChpdGVyYXRpb24gPCBzdWJncmlkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJncmlkc1tpdGVyYXRpb25dLnJlbmRlckNvbnRlbnRPdmVyVGltZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3ByZWFkRmllbGRSZW5kZXJpbmdPdmVyVGltZShzdWJncmlkcywgaXRlcmF0aW9uICsgMSk7XG4gICAgICAgICAgICAgICAgfSwgaXRlcmF0aW9uID09PSAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvbmVzIHRoZSBjb250ZW50IG9mIHRoZSBkYXRhIGdyb3VwcyB0byBwcmV2ZW50IHVuaW50ZW50aW9uYWwgbWVtb3J5IGFjY2Vzc2VzIHRvIHNvdXJjZSBkYXRhLlxuICAgICAqIFJlYXJyYW5nZXMgdGhlIGRhdGEgZ3JvdXBzIHRvIGFjY29tbW9kYXRlIHRhc2tyZWZzLiBGaWx0ZXJzIG91dCBoaWRkZW4gYW5kIGZvcmJpZGRlbiBmaWVsZHMuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cHNcbiAgICAgKiBAcmV0dXJucyB0aGUgcHJlcHJvY2Vzc2VzIGRhdGEgZ3JvdXBzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByZXByb2Nlc3NEYXRhR3JvdXBzKGRhdGFHcm91cHM6IEFycmF5PERhdGFHcm91cD4pOiBBcnJheTxEYXRhR3JvdXA+IHtcbiAgICAgICAgZGF0YUdyb3VwcyA9IHRoaXMuY2xvbmVBbmRGaWx0ZXJIaWRkZW4oZGF0YUdyb3Vwcyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBkYXRhR3JvdXBzW2ldO1xuICAgICAgICAgICAgaWYgKCFncm91cC5maWVsZHMuc29tZShmID0+IHRoaXMuaXNUYXNrUmVmKGYpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNwbGl0ID0gdGhpcy5zcGxpdERhdGFHcm91cE9uVGFza1JlZihncm91cCk7XG4gICAgICAgICAgICBpZiAoc3BsaXQuc3RhcnRHcm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BsaXQuc3RhcnRHcm91cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzcGxpdC50YXNrUmVmLnZhbHVlLmxlbmd0aCA9PT0gMCB8fCBzcGxpdC5lbmRHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0LmVuZEdyb3VwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUdyb3Vwcy5zcGxpY2UoaSArIDEsIDAsIHNwbGl0LmVuZEdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdENoaWxkID0gZGF0YUdyb3Vwc1tpICsgMV07IC8vIHRoZSBkYXRhIGdyb3VwIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93cyBJUyBBTFdBWVMgYSBkaXJlY3QgY2hpbGRcbiAgICAgICAgICAgIGxldCBmaXJzdE5vbkRlc2NlbmRhbnRJbmRleCA9IGkgKyAyO1xuICAgICAgICAgICAgZm9yICg7IGZpcnN0Tm9uRGVzY2VuZGFudEluZGV4IDwgZGF0YUdyb3Vwcy5sZW5ndGg7IGZpcnN0Tm9uRGVzY2VuZGFudEluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0R3JvdXAgPSBkYXRhR3JvdXBzW2ZpcnN0Tm9uRGVzY2VuZGFudEluZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEdyb3VwLm5lc3RpbmdMZXZlbCA9PT0gdW5kZWZpbmVkIHx8IG5leHRHcm91cC5uZXN0aW5nTGV2ZWwgPCBkaXJlY3RDaGlsZC5uZXN0aW5nTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5kIG9mIHRoZSBibG9jayBvZiBuZXN0ZWQgZGF0YSBncm91cHNcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0R3JvdXAubmVzdGluZ0xldmVsID09PSBkaXJlY3RDaGlsZC5uZXN0aW5nTGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgJiYgKG5leHRHcm91cC5wYXJlbnRUYXNrUmVmSWQgIT09IHNwbGl0LnRhc2tSZWYuc3RyaW5nSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFzcGxpdC50YXNrUmVmLnZhbHVlLnNvbWUocmVmZmVkVGFza0lkID0+IHJlZmZlZFRhc2tJZCA9PT0gbmV4dEdyb3VwLnBhcmVudFRhc2tJZCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YUdyb3Vwcy5zcGxpY2UoZmlyc3ROb25EZXNjZW5kYW50SW5kZXgsIDAsIHNwbGl0LmVuZEdyb3VwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZSBvZiB0aGUgcHJvdmlkZWQgZGF0YSBncm91cCBhcnJheSBhbmQgZmlsdGVycyBhd2F5IGFueSBmaWVsZHMgYW5kIGRhdGEgZ3JvdXBzIHRoYXQgYXJlIG1hcmtlZCBhcyBoaWRkZW4uXG4gICAgICogQmVjYXVzZSBvZiB0aGUgZHVwbGljYXRpb24gdGhlIGZpbHRlcmluZyBkb2Vzbid0IGFmZmVjdCB0aGUgb3JpZ2luYWwgaW5zdGFuY2VzIGFuZCB0aGV5IHJlbWFpbiB1bmNoYW5nZWQuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cHMgdGhlIGRhdGEgZ3JvdXBzIHRoYXQgc2hvdWxkIGJlIGZpbHRlcmVkXG4gICAgICogQHJldHVybnMgdGhlIGZpbHRlcmVkIGR1cGxpY2F0ZWQgZGF0YSBncm91cHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xvbmVBbmRGaWx0ZXJIaWRkZW4oZGF0YUdyb3VwczogQXJyYXk8RGF0YUdyb3VwPik6IEFycmF5PERhdGFHcm91cD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkYXRhR3JvdXBzLm1hcChncm91cCA9PiB7XG4gICAgICAgICAgICBjb25zdCBnID0gey4uLmdyb3VwfTtcbiAgICAgICAgICAgIGcuZmllbGRzID0gZy5maWVsZHMuZmlsdGVyKGZpZWxkID0+ICFmaWVsZC5iZWhhdmlvci5oaWRkZW4gJiYgIWZpZWxkLmJlaGF2aW9yLmZvcmJpZGRlbikubWFwKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC5yZXNldExvY2FsTGF5b3V0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5maWx0ZXIoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc1Rhc2tSZWYoZmllbGQ6IERhdGFGaWVsZDx1bmtub3duPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmllbGQgaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU29ydHMgdGhlIGlucHV0IGRhdGEgZ3JvdXAgYmFzZWQgb24gdGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgZmllbGRzIGFuZCBzcGxpdHMgaXQgaW50byBwYXJ0cyBvbiB0aGUgZmlyc3QgdGFzayByZWYuXG4gICAgICogSWYgc29tZSBmaWVsZHMgYXBwZWFyIGJlZm9yZSB0aGUgZmlyc3QgdGFzayByZWYgdGhleSBhcmUgZXh0cmFjdGVkIGludG8gYSBuZXcgW3N0YXJ0R3JvdXBde0BsaW5rIFNwbGl0RGF0YUdyb3VwI3N0YXJ0R3JvdXB9LlxuICAgICAqIElmIHNvbWUgZmllbGRzIGFwcGVhciBhZnRlciB0aGUgZmlyc3QgdGFzayByZWYgdGhleSBhcmUgZXh0cmFjdGVkIGludG8gYSBuZXcgW2VuZEdyb3VwXXtAbGluayBTcGxpdERhdGFHcm91cCNlbmRHcm91cH0uXG4gICAgICogQHBhcmFtIGRhdGFHcm91cFxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3BsaXREYXRhR3JvdXBPblRhc2tSZWYoZGF0YUdyb3VwOiBEYXRhR3JvdXApOiBTcGxpdERhdGFHcm91cCB7XG4gICAgICAgIGRhdGFHcm91cC5maWVsZHMuc29ydCgoYSwgYikgPT4gYS5sb2NhbExheW91dC55IC0gYi5sb2NhbExheW91dC55KTtcbiAgICAgICAgY29uc3QgdGFza1JlZlBvc2l0aW9uID0gZGF0YUdyb3VwLmZpZWxkcy5maW5kSW5kZXgoZiA9PiB0aGlzLmlzVGFza1JlZihmKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogU3BsaXREYXRhR3JvdXAgPSB7XG4gICAgICAgICAgICB0YXNrUmVmOiBkYXRhR3JvdXAuZmllbGRzW3Rhc2tSZWZQb3NpdGlvbl1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGFza1JlZlBvc2l0aW9uICE9PSAwKSB7XG4gICAgICAgICAgICByZXN1bHQuc3RhcnRHcm91cCA9IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogZGF0YUdyb3VwLnRpdGxlLFxuICAgICAgICAgICAgICAgIGFsaWdubWVudDogZGF0YUdyb3VwLmFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6IGRhdGFHcm91cC5sYXlvdXQsXG4gICAgICAgICAgICAgICAgc3RyZXRjaDogZGF0YUdyb3VwLnN0cmV0Y2gsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBkYXRhR3JvdXAuZmllbGRzLnNsaWNlKDAsIHRhc2tSZWZQb3NpdGlvbiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhc2tSZWZQb3NpdGlvbiAhPT0gZGF0YUdyb3VwLmZpZWxkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXN1bHQuZW5kR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGRhdGFHcm91cC5hbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgbGF5b3V0OiBkYXRhR3JvdXAubGF5b3V0LFxuICAgICAgICAgICAgICAgIHN0cmV0Y2g6IGRhdGFHcm91cC5zdHJldGNoLFxuICAgICAgICAgICAgICAgIGZpZWxkczogZGF0YUdyb3VwLmZpZWxkcy5zbGljZSh0YXNrUmVmUG9zaXRpb24gKyAxKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXN1bHQuZW5kR3JvdXAuZmllbGRzLmZvckVhY2goZiA9PiB7XG4gICAgICAgICAgICAgICAgZi5sb2NhbExheW91dC55ID0gZi5sb2NhbExheW91dC55IC0gcmVzdWx0LnRhc2tSZWYubG9jYWxMYXlvdXQueSAtIDE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIGxheW91dCBkYXRhIGZvciBhIHNpbmdsZSBkYXRhIGdyb3VwIHdpdGggZ3JpZCBsYXlvdXQuIFRoZSByZXN1bHRpbmcgbGF5b3V0IGlzIHNhdmVkIGludG8gdGhlIGlucHV0IG9iamVjdHMuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cCB0aGUgZGF0YSBncm91cCB0aGF0IHNob3VsZCBiZSBsYWlkIG91dCBpbnRvIGEgZ3JpZFxuICAgICAqIEBwYXJhbSBzdWJncmlkIHRoZSBvYmplY3QgdGhhdCBob2xkcyB0aGUgY29udGV4dCBvZiB0aGUgY29tcHV0ZWQgbGF5b3V0aW5nIHVuaXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29tcHV0ZUdyaWRMYXlvdXQoZGF0YUdyb3VwOiBEYXRhR3JvdXAsIHN1YmdyaWQ6IFN1YmdyaWQpIHtcbiAgICAgICAgY29uc3QgbG9jYWxHcmlkOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuXG4gICAgICAgIGRhdGFHcm91cC5maWVsZHMuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKCFkYXRhRmllbGQubG9jYWxMYXlvdXRcbiAgICAgICAgICAgICAgICB8fCBkYXRhRmllbGQubG9jYWxMYXlvdXQueCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfHwgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LnkgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHx8ICFkYXRhRmllbGQubG9jYWxMYXlvdXQucm93c1xuICAgICAgICAgICAgICAgIHx8ICFkYXRhRmllbGQubG9jYWxMYXlvdXQuY29scykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYFlvdSBjYW5ub3QgdXNlICdncmlkJyBsYXlvdXQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBsYXlvdXQgb2YgdGhlIGRhdGEgZmllbGRzIChmaWVsZCBJRDogJHtkYXRhRmllbGQuc3RyaW5nSWR9KWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aGlsZSAobG9jYWxHcmlkLmxlbmd0aCA8IGRhdGFGaWVsZC5sb2NhbExheW91dC55ICsgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LnJvd3MpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEdyaWQucHVzaCh0aGlzLm5ld0dyaWRSb3coc3ViZ3JpZC5jb2xzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpZWxkRWxlbWVudCA9IHN1YmdyaWQuYWRkRmllbGQoZGF0YUZpZWxkLCB0aGlzLl9maWVsZENvbnZlcnRlci5yZXNvbHZlVHlwZShkYXRhRmllbGQpKTtcbiAgICAgICAgICAgIHRoaXMub2NjdXB5U3BhY2UobG9jYWxHcmlkLCBkYXRhRmllbGQubG9jYWxMYXlvdXQueSwgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LngsXG4gICAgICAgICAgICAgICAgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LmNvbHMsIGZpZWxkRWxlbWVudC5ncmlkQXJlYUlkLCBkYXRhRmllbGQubG9jYWxMYXlvdXQucm93cyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29sbGFwc2VHcmlkRW1wdHlTcGFjZShsb2NhbEdyaWQsIGRhdGFHcm91cC5sYXlvdXQsIHN1YmdyaWQpO1xuXG4gICAgICAgIGxvY2FsR3JpZC5mb3JFYWNoKGxvY2FsR3JpZFJvdyA9PiBzdWJncmlkLmFkZFJvdyhsb2NhbEdyaWRSb3cpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBlbXB0eSByb3cgcmVtb3ZhbCBhbmQgZmllbGQgY29tcGFjdGluZyBydWxlcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbGF5b3V0IGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGUgaW5wdXQgZ3JpZCBpcyBtb2RpZmllZCBpbiBwbGFjZS5cbiAgICAgKiBAcGFyYW0gZ3JpZCB0aGUgc3RhdGUgb2YgdGhlIGdyaWQgdGhhdCBzaG91bGQgYmUgbW9kaWZpZWRcbiAgICAgKiBAcGFyYW0gbGF5b3V0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFwcGxpZWQgY29tcGFjdGluZyBydWxlc1xuICAgICAqIEBwYXJhbSBzdWJncmlkIHRoZSBvYmplY3QgdGhhdCBob2xkcyB0aGUgY29udGV4dCBvZiB0aGUgY29tcHV0ZWQgbGF5b3V0aW5nIHVuaXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29sbGFwc2VHcmlkRW1wdHlTcGFjZShncmlkOiBBcnJheTxBcnJheTxzdHJpbmc+PiwgbGF5b3V0OiBEYXRhR3JvdXBMYXlvdXQsIHN1YmdyaWQ6IFN1YmdyaWQpIHtcbiAgICAgICAgY29uc3QgaGlkZVJvd3MgPSBsYXlvdXQuaGlkZUVtcHR5Um93cyA/PyB0aGlzLl9kZWZhdWx0SGlkZUVtcHR5Um93cztcblxuICAgICAgICBpZiAoaGlkZVJvd3MgPT09IERhdGFHcm91cEhpZGVFbXB0eVJvd3MuQUxMKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5Um93cyhncmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAobGF5b3V0LmNvbXBhY3REaXJlY3Rpb24gPz8gdGhpcy5fZGVmYXVsdENvbXBhY3REaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgRGF0YUdyb3VwQ29tcGFjdC5VUDpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBhY3RGaWVsZHNVcChncmlkLCBoaWRlUm93cywgc3ViZ3JpZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb3ZlcyBhbnkgZWxlbWVudCBhcyBmYXIgVVAgYXMgaXQgY2FuIGdvLiBFbGVtZW50cyB0aGF0IHdlcmUgb3JpZ2luYWxseSBkZWNsYXJlZCBpbiB0aGUgc2FtZSByb3cgbWlnaHQgZW5kIHVwIGluIGRpZmZlcmVudCByb3dzLlxuICAgICAqIFJlc3VsdGluZyB0cmFpbGluZyBlbXB0eSByb3dzIGFyZSByZW1vdmVkLlxuICAgICAqXG4gICAgICogVGhlIGlucHV0IGdyaWQgaXMgbW9kaWZpZWQgaW4gcGxhY2UuXG4gICAgICogQHBhcmFtIGdyaWQgdGhlIHN0YXRlIG9mIHRoZSBncmlkIHRoYXQgc2hvdWxkIGJlIG1vZGlmaWVkXG4gICAgICogQHBhcmFtIGhpZGVSb3dzIGNvbmZpZ3VyYXRpb24gZm9yIGVtcHR5IHJvdyByZW1vdmFsIGR1cmluZyB0aGUgY29tcGFjdGluZyBwcm9jZXNzXG4gICAgICogQHBhcmFtIHN1YmdyaWQgdGhlIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIHRoZSBjb21wdXRlZCBsYXlvdXRpbmcgdW5pdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wYWN0RmllbGRzVXAoZ3JpZDogQXJyYXk8QXJyYXk8c3RyaW5nPj4sIGhpZGVSb3dzOiBEYXRhR3JvdXBIaWRlRW1wdHlSb3dzLCBzdWJncmlkOiBTdWJncmlkKSB7XG4gICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBncmlkLmxlbmd0aDsgcm93SW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gZ3JpZFtyb3dJbmRleF07XG5cbiAgICAgICAgICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCByb3cubGVuZ3RoOyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvd1tjb2x1bW5JbmRleF0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBmb3VuZEVsZW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsZXQgZm91bmRFbGVtZW50Um93SW5kZXggPSByb3dJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgZm9yICg7IGZvdW5kRWxlbWVudFJvd0luZGV4IDwgZ3JpZC5sZW5ndGg7IGZvdW5kRWxlbWVudFJvd0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyaWRbZm91bmRFbGVtZW50Um93SW5kZXhdW2NvbHVtbkluZGV4XSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRWxlbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uSW5kZXggPiAwICYmIGdyaWRbZm91bmRFbGVtZW50Um93SW5kZXhdW2NvbHVtbkluZGV4IC0gMV0gPT09IGdyaWRbZm91bmRFbGVtZW50Um93SW5kZXhdW2NvbHVtbkluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50RGltZW5zaW9ucyA9IHRoaXMuZ2V0RWxlbWVudERpbWVuc2lvbnMoZ3JpZCwgY29sdW1uSW5kZXgsIGZvdW5kRWxlbWVudFJvd0luZGV4LCBzdWJncmlkKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQXJlYUVtcHR5KGdyaWQsIGNvbHVtbkluZGV4LCByb3dJbmRleCwgZWxlbWVudERpbWVuc2lvbnMud2lkdGgsIGZvdW5kRWxlbWVudFJvd0luZGV4IC0gcm93SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBncmlkW2ZvdW5kRWxlbWVudFJvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2NjdXB5U3BhY2UoZ3JpZCwgZm91bmRFbGVtZW50Um93SW5kZXgsIGNvbHVtbkluZGV4LCBlbGVtZW50RGltZW5zaW9ucy53aWR0aCwgJycsIGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9jY3VweVNwYWNlKGdyaWQsIHJvd0luZGV4LCBjb2x1bW5JbmRleCwgZWxlbWVudERpbWVuc2lvbnMud2lkdGgsIGVsZW1lbnQsIGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChoaWRlUm93cyAhPT0gRGF0YUdyb3VwSGlkZUVtcHR5Um93cy5OT05FKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBvbmx5IGNoZWNrIHRoZSByb3dzIHBvdGVudGlhbGx5IGNsZWFyZWQgYnkgbW92aW5nIHRoZSBncmlkIGVsZW1lbnQgdXBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlSb3dzKGdyaWQsIGZvdW5kRWxlbWVudFJvd0luZGV4LCBmb3VuZEVsZW1lbnRSb3dJbmRleCArIGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHJvd3MgZnJvbSB0aGUgZ3JpZCB0aGF0IG9ubHkgY29udGFpbiBlbXB0eSBlbGVtZW50cyAoYXJlIGVtcHR5KS4gVGhlIGdyaWQgaXMgbW9kaWZpZWQgaW4gcGxhY2UuXG4gICAgICogQHBhcmFtIGdyaWQgdGhlIGdyaWQgdGhhdCBzaG91bGQgaGF2ZSBpdCdzIGVtcHR5IHJvd3MgcmVtb3ZlZFxuICAgICAqIEBwYXJhbSBmaXJzdFJvdyB0aGUgMCBiYXNlZCBpbmRleCBvZiB0aGUgZmlyc3Qgcm93IHRoYXQgc2hvdWxkIGJlIGNoZWNrZWQuIFVzZSAwIHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZ3JpZC5cbiAgICAgKlxuICAgICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZ3JpZCB3aWxsIGJlIGNoZWNrZWQgZnJvbSB0aGUgZmlyc3Qgcm93LlxuICAgICAqXG4gICAgICogQHBhcmFtIGxhc3RSb3cgdGhlIDAgYmFzZWQgaW5kZXggb2YgdGhlIHJvdyB3aGVyZSB0aGUgY2hlY2tpbmcgc2hvdWxkIGVuZC4gVGhlIHJvdyB3aXRoIHRoaXMgaW5kZXggaXMgbm90IGNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCB0aGUgZW50aXJlIGdyaWQgZnJvbSB0aGUgYGZpcnN0Um93YCB3aWxsIGJlIGNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBJZiBhIHZhbHVlIHRoYXQgaXMgc21hbGxlciBvciBlcXVhbCB0byB0aGUgYGZpcnN0Um93YCBpcyBwcm92aWRlZCBubyBjaGVja3Mgd2lsbCBiZSBwcmVmb3JtZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlbW92ZUVtcHR5Um93cyhncmlkOiBBcnJheTxBcnJheTxzdHJpbmc+PiwgZmlyc3RSb3cgPSAwLCBsYXN0Um93ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB7XG4gICAgICAgIGxldCBpID0gZmlyc3RSb3c7XG4gICAgICAgIHdoaWxlIChpIDwgZ3JpZC5sZW5ndGggJiYgaSA8IGxhc3RSb3cpIHtcbiAgICAgICAgICAgIGlmIChncmlkW2ldLmV2ZXJ5KGVsZW1lbnQgPT4gZWxlbWVudCA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGVsZW1lbnQgaW4gdGhlIGdyaWQgd2l0aCBpdHMgdG9wLWxlZnQgY29ybmVyIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gZ3JpZCB0aGUgZ3JpZCBvZiBlbGVtZW50c1xuICAgICAqIEBwYXJhbSB4IHRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIGRlc2lyZWQgZWxlbWVudHMgdG9wLWxlZnQgY29ybmVyXG4gICAgICogQHBhcmFtIHkgdGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgZGVzaXJlZCBlbGVtZW50cyB0b3AtbGVmdCBjb3JuZXJcbiAgICAgKiBAcGFyYW0gc3ViZ3JpZCB0aGUgb2JqZWN0IHRoYXQgaG9sZHMgdGhlIGNvbnRleHQgb2YgdGhlIGNvbXB1dGVkIGxheW91dGluZyB1bml0XG4gICAgICogQHJldHVybnMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNwZWNpZmllZCBlbGVtZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEVsZW1lbnREaW1lbnNpb25zKGdyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+LCB4OiBudW1iZXIsIHk6IG51bWJlciwgc3ViZ3JpZDogU3ViZ3JpZCk6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBncmlkW3ldW3hdO1xuICAgICAgICBsZXQgd2lkdGggPSAxO1xuICAgICAgICB3aGlsZSAoeCArIHdpZHRoIDwgc3ViZ3JpZC5jb2xzICYmIGdyaWRbeV1beCArIHdpZHRoXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgd2lkdGgrKztcbiAgICAgICAgfVxuICAgICAgICBsZXQgaGVpZ2h0ID0gMTtcbiAgICAgICAgd2hpbGUgKHkgKyBoZWlnaHQgPCBncmlkLmxlbmd0aCAmJiBncmlkW3kgKyBoZWlnaHRdW3hdID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICBoZWlnaHQrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge3dpZHRoLCBoZWlnaHR9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGFyZWEgaW4gdGhlIGdyaWQgY29udGFpbnMgbm8gZWxlbWVudHMsIG9yIG5vdFxuICAgICAqIEBwYXJhbSBncmlkIHRoZSBncmlkIG9mIGVsZW1lbnRzXG4gICAgICogQHBhcmFtIHggdGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgdGVzdGVkIGFyZWFzIHRvcC1sZWZ0IGNvcm5lclxuICAgICAqIEBwYXJhbSB5IHRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHRlc3RlZCBhcmVhcyB0b3AtbGVmdCBjb3JuZXJcbiAgICAgKiBAcGFyYW0gd2lkdGggdGhlIHdpZHRoIG9mIHRoZSB0ZXN0ZWQgYXJlYVxuICAgICAqIEBwYXJhbSBoZWlnaHQgdGhlIGhlaWdodCBvZiB0aGUgdGVzdGVkIGFyZWFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNBcmVhRW1wdHkoZ3JpZDogQXJyYXk8QXJyYXk8c3RyaW5nPj4sIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGxldCBpID0geTsgaSA8IHkgKyBoZWlnaHQ7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IHg7IGogPCB4ICsgd2lkdGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChncmlkW2ldW2pdICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBsYXlvdXQgZGF0YSBmb3IgYSBzaW5nbGUgZGF0YSBncm91cCB3aXRoIGZsb3cgbGF5b3V0LiBUaGUgcmVzdWx0aW5nIGxheW91dCBpcyBzYXZlZCBpbnRvIHRoZSBpbnB1dCBvYmplY3RzLlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgdGhhdCBzaG91bGQgYmUgbGFpZCBvdXQgaW50byBhIGdyaWQgdXNpbmcgdGhlIGZsb3cgYWxnb3JpdGhtXG4gICAgICogQHBhcmFtIHN1YmdyaWQgdGhlIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIHRoZSBjb21wdXRlZCBsYXlvdXRpbmcgdW5pdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wdXRlRmxvd0xheW91dChkYXRhR3JvdXA6IERhdGFHcm91cCwgc3ViZ3JpZDogU3ViZ3JpZCkge1xuICAgICAgICB0aGlzLmZsb3dGaWVsZHMoZGF0YUdyb3VwLCBzdWJncmlkLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbGF5b3V0IGRhdGEgZm9yIGEgc2luZ2xlIGRhdGEgZ3JvdXAgd2l0aCBsZWdhY3kgbGF5b3V0LiBUaGUgcmVzdWx0aW5nIGxheW91dCBpcyBzYXZlZCBpbnRvIHRoZSBpbnB1dCBvYmplY3RzLlxuICAgICAqXG4gICAgICogVGhlIGxlZ2FjeSBsYXlvdXQgZm9yY2VzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBiZSA0IGFuZCBsb2dzIGEgd2FybmluZyBpZiB0aGlzIHdhcyBub3QgdGhlIGNhc2UuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cCB0aGUgZGF0YSBncm91cCB0aGF0IHNob3VsZCBiZSBsYWlkIG91dCBpbnRvIGEgZ3JpZCB1c2luZyB0aGUgbGVnYWN5IGFsZ29yaXRobSB1c2VkIGluIE5BRSB2ZXJzaW9ucyA8IDQuMC4wXG4gICAgICogQHBhcmFtIHN1YmdyaWQgdGhlIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIHRoZSBjb21wdXRlZCBsYXlvdXRpbmcgdW5pdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wdXRlTGVnYWN5TGF5b3V0KGRhdGFHcm91cDogRGF0YUdyb3VwLCBzdWJncmlkOiBTdWJncmlkKSB7XG4gICAgICAgIGlmIChzdWJncmlkLmNvbHMgIT09IDQpIHtcbiAgICAgICAgICAgIHN1YmdyaWQuY29scyA9IDQ7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybihgVGFzayB3aXRoIGlkICcke3RoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2suc3RyaW5nSWR9JyBoYXMgYSBkYXRhIGdyb3VwIHdpdGggbGVnYWN5IGxheW91dCB3aXRoIGEgYFxuICAgICAgICAgICAgICAgICsgYG5vbi1kZWZhdWx0IG51bWJlciBvZiBjb2x1bW5zLiBJZiB5b3Ugd2FudCB0byB1c2UgYSBsYXlvdXQgd2l0aCBkaWZmZXJlbnQgbnVtYmVyIG9mIGNvbHVtbnMgdGhhbiAyIHVzZSBhIGRpZmZlcmVudCBgXG4gICAgICAgICAgICAgICAgKyBgbGF5b3V0IHR5cGUgaW5zdGVhZC5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmxvd0ZpZWxkcyhkYXRhR3JvdXAsIHN1YmdyaWQsIDIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExheXMgb3V0IHRoZSBmaWVsZHMgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBmcm9tIHRvcCB0byBib3R0b20uIElmIHRoZSB3aWR0aCBpcyBncmVhdGVyIHRoYW4gMSBhbmQgdGhlIGJsb2NrIG9mIGZsb3dlZCBmaWVsZHMgZG9lc24ndCBmaXRcbiAgICAgKiBuZWF0bHkgaW50byB0aGUgY29sdW1ucyAoaWYgdGhlIHdpZHRoIG9mIGEgc2luZ2xlIGZpZWxkIGlzIG5vdCBhIGRpdmlzb3Igb2YgY29sdW1uIGNvdW50KSwgdGhlbiB0aGUgZW50aXJlIGJsb2NrIG9mIGZpZWxkcyBpc1xuICAgICAqIGxlZnQgYWxpZ25lZC4gVGhlIGxhc3Qgcm93IG9mIGZpZWxkcyBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0LCBjZW50ZXIgb3IgcmlnaHQgYmFzZWQgb24gdGhlIGRhdGEgZ3JvdXBzIHByb3BlcnR5LlxuICAgICAqIElmIHRoZSBsYXN0IHJvdyBjYW5ub3QgYmUgYWxpZ25lZCB0byB0aGUgZXhhY3QgY2VudGVyIGl0IGlzIG9mZnNldCBvbmUgZ3JpZCB0aWxlIHRvIHRoZSBsZWZ0LlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgdGhhdCBzaG91bGQgYmUgbGFpZCBvdXQgaW50byBhIGdyaWRcbiAgICAgKiBAcGFyYW0gc3ViZ3JpZCB0aGUgb2JqZWN0IHRoYXQgaG9sZHMgdGhlIGNvbnRleHQgb2YgdGhlIGNvbXB1dGVkIGxheW91dGluZyB1bml0XG4gICAgICogQHBhcmFtIGZpZWxkV2lkdGggdGhlIG51bWJlciBvZiBncmlkIHRpbGVzLCB0aGF0IHNob3VsZCBiZSBvY2N1cGllZCBieSBlYWNoIGZpZWxkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZsb3dGaWVsZHMoZGF0YUdyb3VwOiBEYXRhR3JvdXAsIHN1YmdyaWQ6IFN1YmdyaWQsIGZpZWxkV2lkdGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBmaWVsZHNQZXJSb3cgPSBNYXRoLmZsb29yKHN1YmdyaWQuY29scyAvIGZpZWxkV2lkdGgpO1xuICAgICAgICBjb25zdCBtYXhYUG9zaXRpb24gPSBmaWVsZFdpZHRoICogKGZpZWxkc1BlclJvdyAtIDEpO1xuXG4gICAgICAgIGxldCB4UG9zaXRpb24gPSAwO1xuICAgICAgICBjb25zdCBsb2NhbEdyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gICAgICAgIGRhdGFHcm91cC5maWVsZHMuZm9yRWFjaCgoZGF0YUZpZWxkLCBkYXRhRmllbGRDb3VudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGRFbGVtZW50ID0gc3ViZ3JpZC5hZGRGaWVsZChkYXRhRmllbGQsIHRoaXMuX2ZpZWxkQ29udmVydGVyLnJlc29sdmVUeXBlKGRhdGFGaWVsZCkpO1xuICAgICAgICAgICAgaWYgKGRhdGFHcm91cC5zdHJldGNoKSB7XG4gICAgICAgICAgICAgICAgc3ViZ3JpZC5hZGRSb3codGhpcy5uZXdHcmlkUm93KHN1YmdyaWQuY29scywgZmllbGRFbGVtZW50LmdyaWRBcmVhSWQpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICBpZiAoeFBvc2l0aW9uID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxHcmlkLnB1c2godGhpcy5uZXdHcmlkUm93KHN1YmdyaWQuY29scykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHhQb3NpdGlvbiA9PT0gMCAmJiB0aGlzLmlzTGFzdFJvdyhkYXRhRmllbGRDb3VudCwgZGF0YUdyb3VwLCBmaWVsZHNQZXJSb3cpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzSW5MYXN0Um93ID0gZGF0YUdyb3VwLmZpZWxkcy5sZW5ndGggJSBmaWVsZHNQZXJSb3c7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93V2lkdGggPSBtYXhYUG9zaXRpb24gKyBmaWVsZFdpZHRoO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhR3JvdXAuYWxpZ25tZW50ID09PSBEYXRhR3JvdXBBbGlnbm1lbnQuRU5EKSB7XG4gICAgICAgICAgICAgICAgICAgIHhQb3NpdGlvbiA9IHJvd1dpZHRoIC0gZmllbGRXaWR0aCAqIGZpZWxkc0luTGFzdFJvdztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFHcm91cC5hbGlnbm1lbnQgPT09IERhdGFHcm91cEFsaWdubWVudC5DRU5URVIpIHtcbiAgICAgICAgICAgICAgICAgICAgeFBvc2l0aW9uID0gTWF0aC5mbG9vcigocm93V2lkdGggLSBmaWVsZHNJbkxhc3RSb3cgKiBmaWVsZFdpZHRoKSAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub2NjdXB5U3BhY2UobG9jYWxHcmlkLCBsb2NhbEdyaWQubGVuZ3RoIC0gMSwgeFBvc2l0aW9uLCBmaWVsZFdpZHRoLCBmaWVsZEVsZW1lbnQuZ3JpZEFyZWFJZCk7XG5cbiAgICAgICAgICAgIHhQb3NpdGlvbiArPSBmaWVsZFdpZHRoO1xuICAgICAgICAgICAgaWYgKHhQb3NpdGlvbiA+IG1heFhQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHhQb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsb2NhbEdyaWQuZm9yRWFjaChyb3cgPT4gc3ViZ3JpZC5hZGRSb3cocm93KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHdpZHRoIHdpZHRoIG9mIHRoZSByb3dcbiAgICAgKiBAcGFyYW0gY29udGVudCB0aGUgdmFsdWUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBmaWxsIGFsbCBlbGVtZW50cyBpbiB0aGUgcm93XG4gICAgICovXG4gICAgcHJvdGVjdGVkIG5ld0dyaWRSb3cod2lkdGg6IG51bWJlciwgY29udGVudCA9ICcnKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBBcnJheSh3aWR0aCkuZmlsbChjb250ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyB0aGUgc3BlY2lmaWVkIHJlY3Rhbmd1bGFyIGFyZWEgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlIGluIHRoZSBwcm92aWRlZCBncmlkLlxuICAgICAqXG4gICAgICogSWYgdGhlIHNwZWNpZmllZCBhcmVhIGNvbnRhaW5zIHZhbHVlcyBvdGhlciB0aGFuIHRoZSBlbXB0eSBzdHJpbmcgYW4gZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gICAgICogQHBhcmFtIGdyaWQgdGhlIGdyaWQgdGhhdCBzaG91bGQgYmUgbW9kaWZpZWRcbiAgICAgKiBAcGFyYW0geSB0aGUgMCBiYXNlZCByb3cgaW5kZXggb2YgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZmlsbGVkIGFyZWFcbiAgICAgKiBAcGFyYW0geCB0aGUgMCBiYXNlZCBjb2x1bW4gaW5kZXggb2YgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZmlsbGVkIGFyZWFcbiAgICAgKiBAcGFyYW0gd2lkdGggdGhlIHdpZHRoIG9mIHRoZSBmaWxsZWQgYXJlYVxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdGhhdCBpcyBzZXQgaW50byBldmVyeSBjZWxsIG9mIHRoZSBncmlkIGluc2lkZSB0aGUgc3BlY2lmaWVkIGFyZWFcbiAgICAgKiBAcGFyYW0gaGVpZ2h0IHRoZSBoZWlnaHQgb2YgdGhlIGZpbGxlZCBhcmVhXG4gICAgICogQHBhcmFtIGNoZWNrT2NjdXBhbnRzIHdoZXRoZXIgdGhlIGZpbGxlZCBhcmVhIHNob3VsZCBiZSBjaGVja2VkIGZvciBvdGhlciBlbGVtZW50cy5cbiAgICAgKiBJZiBhIGNoZWNrIGlzIHBlcmZvcm1lZCBhbiBlcnJvciB3aWxsIGJlIHRocm93biBpZiBlbGVtZW50cyBhcmUgZm91bmQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9jY3VweVNwYWNlKGdyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+LCB5OiBudW1iZXIsIHg6IG51bWJlciwgd2lkdGg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZywgaGVpZ2h0ID0gMSwgY2hlY2tPY2N1cGFudHMgPSB0cnVlKSB7XG4gICAgICAgIGZvciAobGV0IGogPSB5OyBqIDwgeSArIGhlaWdodDsgaisrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0geDsgaSA8IHggKyB3aWR0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrT2NjdXBhbnRzICYmIGdyaWRbal1baV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBsYWNlIGVsZW1lbnQgJHt2YWx1ZX0gaW50byB0aGUgZ3JpZCBsYXlvdXQsIGJlY2F1c2UgaXQncyBzcGFjZSAoeDogJHtpfSwgeTogJHtqfSlgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAgaXMgYWxyZWFkeSBvY2N1cGllZCBieSBhbm90aGVyIGVsZW1lbnQgKCR7Z3JpZFtqXVtpXX0pYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGdyaWRbal1baV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIGNoZWNrZWQgZWxlbWVudCB3aXRoaW4gaXRzIGRhdGEgZ3JvdXBcbiAgICAgKiBAcGFyYW0gZGF0YUdyb3VwIHRoZSBjaGVja2VkIGRhdGEgZ3JvdXBcbiAgICAgKiBAcGFyYW0gZmllbGRzUGVyUm93IHRoZSBudW1iZXIgb2YgZmllbGRzIHRoYXQgaXMgcmVxdWlyZWQgdG8gZmlsbCBhbiBlbnRpcmUgcm93XG4gICAgICogQHJldHVybnMgd2hldGhlciB0aGUgZmllbGQgYXQgdGhlIGdpdmVuIGluZGV4IGlzIHdpdGhpbiB0aGUgbGFzdCByb3cgb2YgZWxlbWVudHMgb2YgdGhlIHByb3ZpZGVkIGRhdGEgZ3JvdXAuXG4gICAgICogTm90ZSB0aGF0IGlmIHRoZSBsYXN0IHJvdyBjb250YWlucyBlbm91Z2ggZWxlbWVudHMgdG8gYmUgY29tcGxldGVseSBmaWxsZWQgdGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc0xhc3RSb3coaW5kZXg6IG51bWJlciwgZGF0YUdyb3VwOiBEYXRhR3JvdXAsIGZpZWxkc1BlclJvdzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCArIGZpZWxkc1BlclJvdyA+PSBkYXRhR3JvdXAuZmllbGRzLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95cyB0aGUgcHJldmlvdXMgY29udGVudCBhbmQgcHVzaGVzIHRoZSBuZXcgY29udGVudCBpbnRvIHRoZSBzdHJlYW1cbiAgICAgKiBAcGFyYW0gY29udGVudCB0aGUgbmV3IGNvbnRlbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVuZGVyQ29udGVudChjb250ZW50OiBBcnJheTxTdWJncmlkPiA9IFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UkLnZhbHVlLmZvckVhY2goc3ViZ3JpZCA9PiBzdWJncmlkLmRlc3Ryb3koKSk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UkLm5leHQoY29udGVudCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVN1YmdyaWRJZChkYXRhR3JvdXA6IERhdGFHcm91cCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBpZEJhc2U6IHN0cmluZztcbiAgICAgICAgaWYgKGRhdGFHcm91cC5wYXJlbnRUYXNrSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWRCYXNlID0gW2RhdGFHcm91cC5wYXJlbnRUYXNrSWQsIGRhdGFHcm91cC5wYXJlbnRUYXNrUmVmSWQsIGRhdGFHcm91cC5uZXN0aW5nTGV2ZWxdLmpvaW4oJyMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlkQmFzZSA9ICdyb290JztcbiAgICAgICAgfVxuICAgICAgICBsZXQgaWQgPSBpZEJhc2U7XG4gICAgICAgIHdoaWxlICh0aGlzLl9leGlzdGluZ1N1YmdyaWRJZHMuaGFzKGlkKSkge1xuICAgICAgICAgICAgaWQgPSBpZEJhc2UgKyB0aGlzLl9zdWJncmlkSWRDb3VudGVyLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9leGlzdGluZ1N1YmdyaWRJZHMuYWRkKGlkKTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5U3ViZ3JpZEZuID0gKGluZGV4OiBudW1iZXIsIHN1YmdyaWQ6IFN1YmdyaWQpID0+IHN1YmdyaWQuc3ViZ3JpZElkO1xuXG4gICAgcHVibGljIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudCkgPT4gdGhpcy50cmFja0J5RGF0YWZpZWxkcyhpbmRleCwgZWxlbWVudCk7XG5cbiAgICBwcm90ZWN0ZWQgdHJhY2tCeURhdGFmaWVsZHMoaW5kZXg6IG51bWJlciwgZWxlbWVudDogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQpIHtcbiAgICAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGFza0VsZW1lbnRUeXBlLkJMQU5LOlxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdyaWRBcmVhSWQgKyAnLScgKyB0aGlzLnRhc2tDb250ZW50U2VydmljZS4kc2hvdWxkQ3JlYXRlQ291bnRlci5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgY2FzZSBUYXNrRWxlbWVudFR5cGUuTE9BREVSOlxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdyaWRBcmVhSWQgKyAnLUwtJyArIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLiRzaG91bGRDcmVhdGVDb3VudGVyLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjYXNlIFRhc2tFbGVtZW50VHlwZS5EQVRBX0dST1VQX1RJVExFOlxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpdGxlICsgJy0nICsgdGhpcy50YXNrQ29udGVudFNlcnZpY2UuJHNob3VsZENyZWF0ZUNvdW50ZXIuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaXRlbS5zdHJpbmdJZCArICctJyArIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLiRzaG91bGRDcmVhdGVDb3VudGVyLmdldFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|