@messaia/cdk 0.0.0-CDK
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/base/base.module.mjs +66 -0
- package/esm2020/lib/base/components/base.component.mjs +441 -0
- package/esm2020/lib/base/components/generic-form-base.component.mjs +602 -0
- package/esm2020/lib/base/components/generic-form.component.mjs +31 -0
- package/esm2020/lib/base/components/generic-list.component.mjs +539 -0
- package/esm2020/lib/base/components/generic-reactive-form.component.mjs +54 -0
- package/esm2020/lib/base/constants/common.mjs +24 -0
- package/esm2020/lib/base/enums/message-type.mjs +7 -0
- package/esm2020/lib/base/helpers/auth-helper.mjs +46 -0
- package/esm2020/lib/base/interceptors/base.interceptor.mjs +138 -0
- package/esm2020/lib/base/interceptors/caching-interceptor.mjs +68 -0
- package/esm2020/lib/base/interceptors/loading.interceptor.mjs +63 -0
- package/esm2020/lib/base/models/auth-user.mjs +3 -0
- package/esm2020/lib/base/public_api.mjs +2 -0
- package/esm2020/lib/base/services/file.service.mjs +18 -0
- package/esm2020/lib/base/services/loading-screen.service.mjs +47 -0
- package/esm2020/lib/base/services/print.service.mjs +40 -0
- package/esm2020/lib/chips/chips.module.mjs +63 -0
- package/esm2020/lib/chips/components/chips.component.mjs +419 -0
- package/esm2020/lib/chips/public_api.mjs +3 -0
- package/esm2020/lib/common/animations/collapse/collapse.animation.mjs +44 -0
- package/esm2020/lib/common/animations/common/interfaces.mjs +2 -0
- package/esm2020/lib/common/behaviors/constructor.mjs +2 -0
- package/esm2020/lib/common/behaviors/control-value-accesor.mixin.mjs +39 -0
- package/esm2020/lib/common/behaviors/disabled.mixin.mjs +24 -0
- package/esm2020/lib/common/common.module.mjs +121 -0
- package/esm2020/lib/common/constants/constants.mjs +2 -0
- package/esm2020/lib/common/directives/disable-control.directive.mjs +34 -0
- package/esm2020/lib/common/enums/salutation.mjs +7 -0
- package/esm2020/lib/common/functions/decorators.mjs +22 -0
- package/esm2020/lib/common/functions/functions.mjs +9 -0
- package/esm2020/lib/common/functions/utils.mjs +161 -0
- package/esm2020/lib/common/helpers/app-storage.mjs +53 -0
- package/esm2020/lib/common/helpers/dynamic-builder.mjs +49 -0
- package/esm2020/lib/common/models/action-menu-item.mjs +12 -0
- package/esm2020/lib/common/models/app-setting.mjs +10 -0
- package/esm2020/lib/common/models/audit-entity.mjs +18 -0
- package/esm2020/lib/common/models/audit-user.mjs +3 -0
- package/esm2020/lib/common/models/base-entity.mjs +18 -0
- package/esm2020/lib/common/models/entity.mjs +2 -0
- package/esm2020/lib/common/models/enum-item.mjs +2 -0
- package/esm2020/lib/common/models/key-value.mjs +3 -0
- package/esm2020/lib/common/models/save-action.mjs +7 -0
- package/esm2020/lib/common/pipes/data-source.pipe.mjs +15 -0
- package/esm2020/lib/common/pipes/enum.pipe.mjs +23 -0
- package/esm2020/lib/common/pipes/file-size.pipe.mjs +37 -0
- package/esm2020/lib/common/pipes/filter.pipe.mjs +23 -0
- package/esm2020/lib/common/pipes/first-letter.mjs +24 -0
- package/esm2020/lib/common/pipes/keys.mjs +18 -0
- package/esm2020/lib/common/pipes/month-name.pipe.mjs +27 -0
- package/esm2020/lib/common/pipes/only-number.mjs +53 -0
- package/esm2020/lib/common/pipes/order.pipe.mjs +183 -0
- package/esm2020/lib/common/pipes/placeholder.pipe.mjs +26 -0
- package/esm2020/lib/common/pipes/safe-html.pipe.mjs +31 -0
- package/esm2020/lib/common/pipes/time.pipe.mjs +20 -0
- package/esm2020/lib/common/pipes/titlecase.pipe.mjs +14 -0
- package/esm2020/lib/common/pipes/truncate.pipe.mjs +15 -0
- package/esm2020/lib/common/pipes/values.mjs +14 -0
- package/esm2020/lib/common/public_api.mjs +18 -0
- package/esm2020/lib/common/services/base.service.mjs +19 -0
- package/esm2020/lib/common/services/context-helper.mjs +4 -0
- package/esm2020/lib/common/services/enum.service.mjs +44 -0
- package/esm2020/lib/common/services/service-locator.mjs +24 -0
- package/esm2020/lib/dialogs/alert-dialog/alert-dialog.component.mjs +31 -0
- package/esm2020/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +37 -0
- package/esm2020/lib/dialogs/dialog.component.mjs +56 -0
- package/esm2020/lib/dialogs/dialogs.module.mjs +82 -0
- package/esm2020/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +40 -0
- package/esm2020/lib/dialogs/public_api.mjs +2 -0
- package/esm2020/lib/dialogs/services/dialog.service.mjs +136 -0
- package/esm2020/lib/file/file-input.component.mjs +327 -0
- package/esm2020/lib/file/file.module.mjs +39 -0
- package/esm2020/lib/file/public_api.mjs +2 -0
- package/esm2020/lib/form-validators/abstract/typed-form.mjs +3 -0
- package/esm2020/lib/form-validators/algorithm/luhn-algorithm.mjs +15 -0
- package/esm2020/lib/form-validators/const/app-validators.const.mjs +68 -0
- package/esm2020/lib/form-validators/const/app.const.mjs +17 -0
- package/esm2020/lib/form-validators/const/config-names.const.mjs +9 -0
- package/esm2020/lib/form-validators/const/config-required-fields.const.mjs +11 -0
- package/esm2020/lib/form-validators/const/decorators.const.mjs +23 -0
- package/esm2020/lib/form-validators/const/events.const.mjs +14 -0
- package/esm2020/lib/form-validators/const/html-elements.const.mjs +7 -0
- package/esm2020/lib/form-validators/const/iban-country-wise-regex.const.mjs +80 -0
- package/esm2020/lib/form-validators/const/index.mjs +6 -0
- package/esm2020/lib/form-validators/const/operators.const.mjs +7 -0
- package/esm2020/lib/form-validators/const/validation-alphabet-locale.const.mjs +9 -0
- package/esm2020/lib/form-validators/const/validator.const.mjs +8 -0
- package/esm2020/lib/form-validators/core/defaultContainer.mjs +243 -0
- package/esm2020/lib/form-validators/core/validator.interface.mjs +2 -0
- package/esm2020/lib/form-validators/core/validator.static.mjs +74 -0
- package/esm2020/lib/form-validators/decorators/allOf.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/alpha.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/alphaNumeric.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/and.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/ascii.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/async.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/base-decorator.function.mjs +7 -0
- package/esm2020/lib/form-validators/decorators/choice.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/compare.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/compose.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/contains.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/credit-card.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/cusip.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/custom.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/dataUri.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/date.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/different.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/digit.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/email.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/endsWith.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/even.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/extension.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/factor.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/file.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/fileSize.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/greater-than.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/grid.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/hexColor.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/image.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/index.mjs +91 -0
- package/esm2020/lib/form-validators/decorators/json.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/latLong.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/latitude.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/leapYear.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/less-than.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/longitude.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/lowercase.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/mac.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/mask.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/maxDate.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/maxLength.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/maxNumber.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/maxTime.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minDate.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minLength.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minNumber.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minTime.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/model.decorator.mjs +7 -0
- package/esm2020/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/noneOf.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/not.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/notEmpty.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/numeric.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/odd.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/oneOf.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/or.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/password.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/pattern.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/port.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/primeNumber.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/prop-array.decorator.mjs +18 -0
- package/esm2020/lib/form-validators/decorators/prop-object.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/prop.decorator.mjs +16 -0
- package/esm2020/lib/form-validators/decorators/range.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/required.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/requiredTrue.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/rule.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/escape.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toString.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/trim.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/startsWith.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/time.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/unique.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/uppercase.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/url.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/directives/base-directive.mjs +43 -0
- package/esm2020/lib/form-validators/directives/control-host.directive.mjs +34 -0
- package/esm2020/lib/form-validators/directives/html-control-template.directive.mjs +20 -0
- package/esm2020/lib/form-validators/directives/rx-form.directive.mjs +134 -0
- package/esm2020/lib/form-validators/directives/template-validations/async-validation.directive.mjs +31 -0
- package/esm2020/lib/form-validators/directives/template-validations/base-validator.directive.mjs +42 -0
- package/esm2020/lib/form-validators/directives/template-validations/control-expression-process.mjs +26 -0
- package/esm2020/lib/form-validators/directives/template-validations/file-control.directive.mjs +91 -0
- package/esm2020/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +50 -0
- package/esm2020/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +277 -0
- package/esm2020/lib/form-validators/domain/disable-provider.mjs +93 -0
- package/esm2020/lib/form-validators/domain/element-processor/decimal.provider.mjs +59 -0
- package/esm2020/lib/form-validators/domain/element-processor/mask.provider.mjs +430 -0
- package/esm2020/lib/form-validators/domain/form-data.mjs +47 -0
- package/esm2020/lib/form-validators/enums/error-message-binding-strategy.mjs +11 -0
- package/esm2020/lib/form-validators/enums/index.mjs +5 -0
- package/esm2020/lib/form-validators/enums/ip-version.mjs +7 -0
- package/esm2020/lib/form-validators/enums/numeric-value-type.mjs +7 -0
- package/esm2020/lib/form-validators/enums/reset-type.mjs +10 -0
- package/esm2020/lib/form-validators/enums/url-validation-type.mjs +7 -0
- package/esm2020/lib/form-validators/models/config/alpha-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/array-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/base-config-fn.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/base-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/base-date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/choice-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/compare-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/component-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/compose-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/contains-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/credit-card-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/custom-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/default-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/digit-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/disable-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/element-class-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/email-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/error-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/extension-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/factor-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/field-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/file-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/hex-color-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/iban-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/image-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/index.mjs +35 -0
- package/esm2020/lib/form-validators/models/config/ip-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/logical-operator-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/mask-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/max-date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/message-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/min-date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/model-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/number-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/numeric-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/password-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/pattern-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/prop-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/props-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/range-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/relational-operator-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/required-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/rule-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/sanitize-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/size-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/string-comparison-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/time-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/todate-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/unique-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/url-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/form-builder-configuration.mjs +8 -0
- package/esm2020/lib/form-validators/models/index.mjs +3 -0
- package/esm2020/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/auto-instance-config.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/form-data-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/i-abstract-control.mjs +4 -0
- package/esm2020/lib/form-validators/models/interface/i-form-group.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/instance-argument.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/options.mjs +2 -0
- package/esm2020/lib/form-validators/models/password-validation.model.mjs +2 -0
- package/esm2020/lib/form-validators/models/prop-validation-config.mjs +2 -0
- package/esm2020/lib/form-validators/public_api.mjs +25 -0
- package/esm2020/lib/form-validators/reactive-form-validators/allOf.validator.mjs +22 -0
- package/esm2020/lib/form-validators/reactive-form-validators/alpha.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/and.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/ascii.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +24 -0
- package/esm2020/lib/form-validators/reactive-form-validators/choice.validator.mjs +19 -0
- package/esm2020/lib/form-validators/reactive-form-validators/compare.validator.mjs +20 -0
- package/esm2020/lib/form-validators/reactive-form-validators/compose.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +63 -0
- package/esm2020/lib/form-validators/reactive-form-validators/contains.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +48 -0
- package/esm2020/lib/form-validators/reactive-form-validators/cusip.validator.mjs +38 -0
- package/esm2020/lib/form-validators/reactive-form-validators/custom.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/date.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/different.validator.mjs +19 -0
- package/esm2020/lib/form-validators/reactive-form-validators/digit.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/email.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/even.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/extension.validator.mjs +40 -0
- package/esm2020/lib/form-validators/reactive-form-validators/factor.validator.mjs +37 -0
- package/esm2020/lib/form-validators/reactive-form-validators/file.validator.mjs +26 -0
- package/esm2020/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +32 -0
- package/esm2020/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/grid.validator.mjs +31 -0
- package/esm2020/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/iban.validator.mjs +30 -0
- package/esm2020/lib/form-validators/reactive-form-validators/image.validator.mjs +48 -0
- package/esm2020/lib/form-validators/reactive-form-validators/index.mjs +66 -0
- package/esm2020/lib/form-validators/reactive-form-validators/ip.validator.mjs +35 -0
- package/esm2020/lib/form-validators/reactive-form-validators/json.validator.mjs +26 -0
- package/esm2020/lib/form-validators/reactive-form-validators/latLong.validator.mjs +18 -0
- package/esm2020/lib/form-validators/reactive-form-validators/latitude.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/less-than.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/longitude.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/mac.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/mask.validator.mjs +13 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minDate.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minLength.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minTime.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +24 -0
- package/esm2020/lib/form-validators/reactive-form-validators/not.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +17 -0
- package/esm2020/lib/form-validators/reactive-form-validators/numeric.validator.mjs +20 -0
- package/esm2020/lib/form-validators/reactive-form-validators/odd.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +22 -0
- package/esm2020/lib/form-validators/reactive-form-validators/or.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/password.validator.mjs +33 -0
- package/esm2020/lib/form-validators/reactive-form-validators/pattern.validator.mjs +17 -0
- package/esm2020/lib/form-validators/reactive-form-validators/port.validator.mjs +18 -0
- package/esm2020/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +26 -0
- package/esm2020/lib/form-validators/reactive-form-validators/range.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/required.validator.mjs +17 -0
- package/esm2020/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/rule.validator.mjs +20 -0
- package/esm2020/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/time.validator.mjs +18 -0
- package/esm2020/lib/form-validators/reactive-form-validators/unique.validator.mjs +70 -0
- package/esm2020/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/url.validator.mjs +28 -0
- package/esm2020/lib/form-validators/services/base-form-builder.mjs +115 -0
- package/esm2020/lib/form-validators/services/entity.service.mjs +64 -0
- package/esm2020/lib/form-validators/services/form-control.mjs +349 -0
- package/esm2020/lib/form-validators/services/form-group.mjs +2 -0
- package/esm2020/lib/form-validators/services/reactive-form.module.mjs +52 -0
- package/esm2020/lib/form-validators/services/rx-form-array.mjs +100 -0
- package/esm2020/lib/form-validators/services/rx-form-builder.mjs +559 -0
- package/esm2020/lib/form-validators/services/rx-form-group.mjs +299 -0
- package/esm2020/lib/form-validators/services/typed-form-builder.mjs +23 -0
- package/esm2020/lib/form-validators/util/alphabet-regex.locale.mjs +29 -0
- package/esm2020/lib/form-validators/util/app-util.mjs +141 -0
- package/esm2020/lib/form-validators/util/check-length.mjs +10 -0
- package/esm2020/lib/form-validators/util/config-provider.mjs +35 -0
- package/esm2020/lib/form-validators/util/date-checker.function.mjs +52 -0
- package/esm2020/lib/form-validators/util/date-provider.mjs +97 -0
- package/esm2020/lib/form-validators/util/form-const.mjs +3 -0
- package/esm2020/lib/form-validators/util/form-provider.mjs +37 -0
- package/esm2020/lib/form-validators/util/index.mjs +7 -0
- package/esm2020/lib/form-validators/util/instance-provider.function.mjs +30 -0
- package/esm2020/lib/form-validators/util/ip-checker.mjs +18 -0
- package/esm2020/lib/form-validators/util/linq.mjs +147 -0
- package/esm2020/lib/form-validators/util/object-maker.mjs +38 -0
- package/esm2020/lib/form-validators/util/reactive-form-config.mjs +23 -0
- package/esm2020/lib/form-validators/util/regex-rules.mjs +37 -0
- package/esm2020/lib/form-validators/util/regex-validator.mjs +74 -0
- package/esm2020/lib/form-validators/util/relational-checker.function.mjs +85 -0
- package/esm2020/lib/form-validators/util/reset-form.mjs +56 -0
- package/esm2020/lib/form-validators/util/sanitizers.mjs +131 -0
- package/esm2020/lib/form-validators/util/time-checker.function.mjs +48 -0
- package/esm2020/lib/form-validators/util/type.mjs +2 -0
- package/esm2020/lib/form-validators/util/validator-value-checker.mjs +17 -0
- package/esm2020/lib/form-validators/validators-extension/allOf-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/alpha-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/and-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/ascii-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/base-validator.function.mjs +33 -0
- package/esm2020/lib/form-validators/validators-extension/choice-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/compare-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/compose-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/contains-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/cusip-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/custom-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/date-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/different-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/digit-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/email-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/even-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/extension-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/factor-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/file-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/grid-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/iban-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/image-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/index.mjs +68 -0
- package/esm2020/lib/form-validators/validators-extension/ip-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/json-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/latLong-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/latitude-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/less-than-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/longitude-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/mac-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/mask-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minDate-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minLength-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minTime-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/not-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/numeric-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/odd-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/or-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/password-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/pattern-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/port-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/range-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/required-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/rxweb-validators.mjs +108 -0
- package/esm2020/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/time-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/unique-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/url-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-function/alpha-validation.function.mjs +37 -0
- package/esm2020/lib/form-validators/validators-function/regex-validation.function.mjs +16 -0
- package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +131 -0
- package/esm2020/lib/forms/constants/constants.mjs +2 -0
- package/esm2020/lib/forms/directives/mat-form-field-editor.directive.mjs +162 -0
- package/esm2020/lib/forms/directives/mat-form-field-readonly.directive.mjs +33 -0
- package/esm2020/lib/forms/enums/form-field-type.mjs +19 -0
- package/esm2020/lib/forms/forms.module.mjs +125 -0
- package/esm2020/lib/forms/functions/decorators.mjs +127 -0
- package/esm2020/lib/forms/functions/functions.mjs +10 -0
- package/esm2020/lib/forms/helpers/abstract-mat-form-field.mjs +251 -0
- package/esm2020/lib/forms/helpers/value-accessor-base.mjs +141 -0
- package/esm2020/lib/forms/models/form-field-definition.mjs +18 -0
- package/esm2020/lib/forms/models/form-field-group.mjs +11 -0
- package/esm2020/lib/forms/public_api.mjs +4 -0
- package/esm2020/lib/forms/validators/equal-validator.directive.mjs +79 -0
- package/esm2020/lib/forms/validators/native-element-injector.directive.mjs +32 -0
- package/esm2020/lib/forms/validators/unique-validator-directive.mjs +75 -0
- package/esm2020/lib/http/http.module.mjs +20 -0
- package/esm2020/lib/http/public_api.mjs +2 -0
- package/esm2020/lib/http/services/generic.service.mjs +319 -0
- package/esm2020/lib/layout/form-toolbar/form-toolbar.component.mjs +30 -0
- package/esm2020/lib/layout/form-toolbar-menu/form-toolbar-menu.component.mjs +17 -0
- package/esm2020/lib/layout/layout-card-over/layout-card-over.component.mjs +43 -0
- package/esm2020/lib/layout/layout-footer/layout-footer.component.mjs +34 -0
- package/esm2020/lib/layout/layout-manage-list/layout-manage-list.component.mjs +130 -0
- package/esm2020/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +108 -0
- package/esm2020/lib/layout/layout-nav/layout-nav.component.mjs +95 -0
- package/esm2020/lib/layout/layout-nav-list/layout-nav-list.component.mjs +123 -0
- package/esm2020/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +81 -0
- package/esm2020/lib/layout/layout-toggle.class.mjs +71 -0
- package/esm2020/lib/layout/layout.component.mjs +82 -0
- package/esm2020/lib/layout/layout.directives.mjs +81 -0
- package/esm2020/lib/layout/layout.module.mjs +146 -0
- package/esm2020/lib/layout/list-toolbar/list-toolbar.component.mjs +23 -0
- package/esm2020/lib/layout/list-toolbar-menu/list-toolbar-menu.component.mjs +17 -0
- package/esm2020/lib/layout/navigation-drawer/navigation-drawer.component.mjs +167 -0
- package/esm2020/lib/layout/public_api.mjs +2 -0
- package/esm2020/lib/media/directives/media-toggle.directive.mjs +115 -0
- package/esm2020/lib/media/media.module.mjs +37 -0
- package/esm2020/lib/media/public_api.mjs +2 -0
- package/esm2020/lib/media/services/media.service.mjs +108 -0
- package/esm2020/lib/menu/components/menu.component.mjs +52 -0
- package/esm2020/lib/menu/enums/menu-scope.mjs +6 -0
- package/esm2020/lib/menu/menu.module.mjs +50 -0
- package/esm2020/lib/menu/models/menu-item.mjs +3 -0
- package/esm2020/lib/menu/models/menu.mjs +3 -0
- package/esm2020/lib/menu/public_api.mjs +2 -0
- package/esm2020/lib/menu/services/menu-items.service.mjs +19 -0
- package/esm2020/lib/menu/services/menu.resolve.mjs +62 -0
- package/esm2020/lib/menu/services/menu.service.mjs +19 -0
- package/esm2020/lib/search/public_api.mjs +2 -0
- package/esm2020/lib/search/search.module.mjs +47 -0
- package/esm2020/lib/search/vd-search-box/vd-search-box.component.mjs +143 -0
- package/esm2020/lib/search/vd-search-input/vd-search-input.component.mjs +148 -0
- package/esm2020/lib/select/public_api.mjs +3 -0
- package/esm2020/lib/select/select.component.mjs +407 -0
- package/esm2020/lib/select/select.module.mjs +45 -0
- package/esm2020/lib/table/components/dynamic-table/dynamic-table.component.mjs +349 -0
- package/esm2020/lib/table/components/filter-clear.component.mjs +44 -0
- package/esm2020/lib/table/components/filter-date.component.mjs +151 -0
- package/esm2020/lib/table/components/filter-input.component.mjs +198 -0
- package/esm2020/lib/table/components/filter-select.component.mjs +334 -0
- package/esm2020/lib/table/directives/data-source-filter.directive.mjs +45 -0
- package/esm2020/lib/table/enums/table-column-type.mjs +14 -0
- package/esm2020/lib/table/functions/decorators.mjs +135 -0
- package/esm2020/lib/table/functions/functions.mjs +15 -0
- package/esm2020/lib/table/models/pagination.mjs +3 -0
- package/esm2020/lib/table/models/table-column.mjs +10 -0
- package/esm2020/lib/table/models/table-definition.mjs +17 -0
- package/esm2020/lib/table/models/table-menu-item.mjs +12 -0
- package/esm2020/lib/table/paginator-intl.mjs +44 -0
- package/esm2020/lib/table/public_api.mjs +3 -0
- package/esm2020/lib/table/table.data-source.mjs +212 -0
- package/esm2020/lib/table/table.module.mjs +139 -0
- package/esm2020/lib/table/table.static-data-source.mjs +131 -0
- package/esm2020/messaia-cdk.mjs +5 -0
- package/esm2020/public_api.mjs +18 -0
- package/fesm2015/messaia-cdk.mjs +16621 -0
- package/fesm2015/messaia-cdk.mjs.map +1 -0
- package/fesm2020/messaia-cdk.mjs +16538 -0
- package/fesm2020/messaia-cdk.mjs.map +1 -0
- package/lib/base/base.module.d.ts +25 -0
- package/lib/base/components/base.component.d.ts +258 -0
- package/lib/base/components/generic-form-base.component.d.ts +310 -0
- package/lib/base/components/generic-form.component.d.ts +32 -0
- package/lib/base/components/generic-list.component.d.ts +273 -0
- package/lib/base/components/generic-reactive-form.component.d.ts +47 -0
- package/lib/base/constants/common.d.ts +9 -0
- package/lib/base/enums/message-type.d.ts +5 -0
- package/lib/base/helpers/auth-helper.d.ts +26 -0
- package/lib/base/interceptors/base.interceptor.d.ts +40 -0
- package/lib/base/interceptors/caching-interceptor.d.ts +35 -0
- package/lib/base/interceptors/loading.interceptor.d.ts +30 -0
- package/lib/base/models/auth-user.d.ts +15 -0
- package/lib/base/public_api.d.ts +1 -0
- package/lib/base/services/file.service.d.ts +10 -0
- package/lib/base/services/loading-screen.service.d.ts +30 -0
- package/lib/base/services/print.service.d.ts +23 -0
- package/lib/chips/chips.module.d.ts +15 -0
- package/lib/chips/components/chips.component.d.ts +223 -0
- package/lib/chips/public_api.d.ts +2 -0
- package/lib/common/animations/collapse/collapse.animation.d.ts +21 -0
- package/lib/common/animations/common/interfaces.d.ts +5 -0
- package/lib/common/behaviors/constructor.d.ts +1 -0
- package/lib/common/behaviors/control-value-accesor.mixin.d.ts +16 -0
- package/lib/common/behaviors/disabled.mixin.d.ts +8 -0
- package/lib/common/common.module.d.ts +53 -0
- package/lib/common/constants/constants.d.ts +1 -0
- package/lib/common/directives/disable-control.directive.d.ts +16 -0
- package/lib/common/enums/salutation.d.ts +5 -0
- package/lib/common/functions/decorators.d.ts +12 -0
- package/lib/common/functions/functions.d.ts +6 -0
- package/lib/common/functions/utils.d.ts +73 -0
- package/lib/common/helpers/app-storage.d.ts +32 -0
- package/lib/common/helpers/dynamic-builder.d.ts +19 -0
- package/lib/common/models/action-menu-item.d.ts +15 -0
- package/lib/common/models/app-setting.d.ts +17 -0
- package/lib/common/models/audit-entity.d.ts +12 -0
- package/lib/common/models/audit-user.d.ts +5 -0
- package/lib/common/models/base-entity.d.ts +10 -0
- package/lib/common/models/entity.d.ts +3 -0
- package/lib/common/models/enum-item.d.ts +4 -0
- package/lib/common/models/key-value.d.ts +4 -0
- package/lib/common/models/save-action.d.ts +5 -0
- package/lib/common/pipes/data-source.pipe.d.ts +7 -0
- package/lib/common/pipes/enum.pipe.d.ts +12 -0
- package/lib/common/pipes/file-size.pipe.d.ts +13 -0
- package/lib/common/pipes/filter.pipe.d.ts +13 -0
- package/lib/common/pipes/first-letter.d.ts +12 -0
- package/lib/common/pipes/keys.d.ts +7 -0
- package/lib/common/pipes/month-name.pipe.d.ts +15 -0
- package/lib/common/pipes/only-number.d.ts +21 -0
- package/lib/common/pipes/order.pipe.d.ts +77 -0
- package/lib/common/pipes/placeholder.pipe.d.ts +13 -0
- package/lib/common/pipes/safe-html.pipe.d.ts +22 -0
- package/lib/common/pipes/time.pipe.d.ts +7 -0
- package/lib/common/pipes/titlecase.pipe.d.ts +7 -0
- package/lib/common/pipes/truncate.pipe.d.ts +7 -0
- package/lib/common/pipes/values.d.ts +7 -0
- package/lib/common/public_api.d.ts +17 -0
- package/lib/common/services/base.service.d.ts +10 -0
- package/lib/common/services/context-helper.d.ts +17 -0
- package/lib/common/services/enum.service.d.ts +23 -0
- package/lib/common/services/service-locator.d.ts +19 -0
- package/lib/common/styles/_common-theme.scss +27 -0
- package/lib/common/styles/_elevation.scss +147 -0
- package/lib/common/styles/_layout.scss +588 -0
- package/lib/common/styles/_rtl.scss +28 -0
- package/lib/common/styles/_styles.scss +12 -0
- package/lib/common/styles/_theme-functions.scss +27 -0
- package/lib/common/styles/_typography-functions.scss +35 -0
- package/lib/common/styles/_typography.scss +76 -0
- package/lib/common/styles/_variables.scss +98 -0
- package/lib/common/styles/colors/_colors-dark.scss +388 -0
- package/lib/common/styles/colors/_colors-light.scss +904 -0
- package/lib/common/styles/colors/_colors.scss +7 -0
- package/lib/common/styles/core/_button.scss +59 -0
- package/lib/common/styles/core/_card.scss +160 -0
- package/lib/common/styles/core/_content.scss +42 -0
- package/lib/common/styles/core/_core.scss +23 -0
- package/lib/common/styles/core/_divider.scss +14 -0
- package/lib/common/styles/core/_icons.scss +26 -0
- package/lib/common/styles/core/_list.scss +8 -0
- package/lib/common/styles/core/_sidenav.scss +20 -0
- package/lib/common/styles/core/_structure.scss +126 -0
- package/lib/common/styles/core/_toolbar.scss +31 -0
- package/lib/common/styles/core/_whiteframe.scss +111 -0
- package/lib/common/styles/font/_font.scss +92 -0
- package/lib/common/styles/material-icons.scss +3 -0
- package/lib/common/styles/platform.scss +11 -0
- package/lib/common/styles/utilities/_general.scss +81 -0
- package/lib/common/styles/utilities/_pad.scss +36 -0
- package/lib/common/styles/utilities/_pull.scss +36 -0
- package/lib/common/styles/utilities/_push.scss +36 -0
- package/lib/common/styles/utilities/_size.scss +24 -0
- package/lib/common/styles/utilities/_text.scss +87 -0
- package/lib/common/styles/utilities/_utilities.scss +15 -0
- package/lib/common/theming/_all-theme.scss +14 -0
- package/lib/common/typography/_all-typography.scss +33 -0
- package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +20 -0
- package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +24 -0
- package/lib/dialogs/dialog.component.d.ts +23 -0
- package/lib/dialogs/dialogs.module.d.ts +21 -0
- package/lib/dialogs/prompt-dialog/prompt-dialog.component.d.ts +25 -0
- package/lib/dialogs/public_api.d.ts +1 -0
- package/lib/dialogs/services/dialog.service.d.ts +96 -0
- package/lib/file/file-input.component.d.ts +191 -0
- package/lib/file/file.module.d.ts +13 -0
- package/lib/file/public_api.d.ts +1 -0
- package/lib/form-validators/abstract/typed-form.d.ts +4 -0
- package/lib/form-validators/algorithm/luhn-algorithm.d.ts +1 -0
- package/lib/form-validators/const/app-validators.const.d.ts +3 -0
- package/lib/form-validators/const/app.const.d.ts +16 -0
- package/lib/form-validators/const/config-names.const.d.ts +8 -0
- package/lib/form-validators/const/config-required-fields.const.d.ts +3 -0
- package/lib/form-validators/const/decorators.const.d.ts +3 -0
- package/lib/form-validators/const/events.const.d.ts +13 -0
- package/lib/form-validators/const/html-elements.const.d.ts +6 -0
- package/lib/form-validators/const/iban-country-wise-regex.const.d.ts +79 -0
- package/lib/form-validators/const/index.d.ts +5 -0
- package/lib/form-validators/const/operators.const.d.ts +3 -0
- package/lib/form-validators/const/validation-alphabet-locale.const.d.ts +3 -0
- package/lib/form-validators/const/validator.const.d.ts +7 -0
- package/lib/form-validators/core/defaultContainer.d.ts +19 -0
- package/lib/form-validators/core/validator.interface.d.ts +61 -0
- package/lib/form-validators/core/validator.static.d.ts +3 -0
- package/lib/form-validators/decorators/allOf.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/alpha.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/alphaNumeric.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/and.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/ascii.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/async.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/base-decorator.function.d.ts +1 -0
- package/lib/form-validators/decorators/choice.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/compare.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/compose.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/contains.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/credit-card.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/cusip.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/custom.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/dataUri.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/date.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/different.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/digit.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/email.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/endsWith.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/even.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/extension.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/factor.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/file.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/fileSize.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/greater-than-equal-to.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/greater-than.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/grid.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/hexColor.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/image.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/index.d.ts +90 -0
- package/lib/form-validators/decorators/json.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/latLong.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/latitude.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/leapYear.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/less-than-equal-to.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/less-than.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/longitude.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/lowercase.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/mac.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/mask.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/maxDate.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/maxLength.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/maxNumber.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/maxTime.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minDate.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minLength.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minNumber.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minTime.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/model.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/non-validation-decorators/disable.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/non-validation-decorators/error.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/noneOf.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/not.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/notEmpty.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/numeric.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/odd.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/oneOf.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/or.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/password.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/pattern.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/port.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/primeNumber.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/prop-array.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/prop-object.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/prop.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/range.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/required.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/requiredTrue.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/rule.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/sanitize/blacklist.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/escape.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/ltrim.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/prefix.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/rtrim.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/sanitize.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/sanitize/stripLow.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/suffix.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toBoolean.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toDate.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/sanitize/toDouble.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toFloat.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toInt.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toString.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/trim.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/whitelist.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/startsWith.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/time.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/unique.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/uppercase.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/url.decorator.d.ts +3 -0
- package/lib/form-validators/directives/base-directive.d.ts +8 -0
- package/lib/form-validators/directives/control-host.directive.d.ts +11 -0
- package/lib/form-validators/directives/html-control-template.directive.d.ts +9 -0
- package/lib/form-validators/directives/rx-form.directive.d.ts +18 -0
- package/lib/form-validators/directives/template-validations/async-validation.directive.d.ts +9 -0
- package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +17 -0
- package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +18 -0
- package/lib/form-validators/directives/template-validations/file-control.directive.d.ts +29 -0
- package/lib/form-validators/directives/template-validations/image-file-control.directive.d.ts +17 -0
- package/lib/form-validators/directives/template-validations/rxformcontrol.directive.d.ts +89 -0
- package/lib/form-validators/domain/disable-provider.d.ts +15 -0
- package/lib/form-validators/domain/element-processor/decimal.provider.d.ts +17 -0
- package/lib/form-validators/domain/element-processor/mask.provider.d.ts +63 -0
- package/lib/form-validators/domain/form-data.d.ts +10 -0
- package/lib/form-validators/enums/error-message-binding-strategy.d.ts +9 -0
- package/lib/form-validators/enums/index.d.ts +4 -0
- package/lib/form-validators/enums/ip-version.d.ts +5 -0
- package/lib/form-validators/enums/numeric-value-type.d.ts +5 -0
- package/lib/form-validators/enums/reset-type.d.ts +8 -0
- package/lib/form-validators/enums/url-validation-type.d.ts +5 -0
- package/lib/form-validators/models/config/alpha-config.d.ts +5 -0
- package/lib/form-validators/models/config/array-config.d.ts +4 -0
- package/lib/form-validators/models/config/base-config-fn.d.ts +10 -0
- package/lib/form-validators/models/config/base-config.d.ts +7 -0
- package/lib/form-validators/models/config/base-date-config.d.ts +4 -0
- package/lib/form-validators/models/config/choice-config.d.ts +5 -0
- package/lib/form-validators/models/config/compare-config.d.ts +5 -0
- package/lib/form-validators/models/config/component-config.d.ts +3 -0
- package/lib/form-validators/models/config/compose-config.d.ts +5 -0
- package/lib/form-validators/models/config/contains-config.d.ts +4 -0
- package/lib/form-validators/models/config/credit-card-config.d.ts +5 -0
- package/lib/form-validators/models/config/custom-config.d.ts +5 -0
- package/lib/form-validators/models/config/date-config.d.ts +6 -0
- package/lib/form-validators/models/config/default-config.d.ts +4 -0
- package/lib/form-validators/models/config/digit-config.d.ts +3 -0
- package/lib/form-validators/models/config/disable-config.d.ts +3 -0
- package/lib/form-validators/models/config/element-class-config.d.ts +3 -0
- package/lib/form-validators/models/config/email-config.d.ts +3 -0
- package/lib/form-validators/models/config/error-config.d.ts +3 -0
- package/lib/form-validators/models/config/extension-config.d.ts +5 -0
- package/lib/form-validators/models/config/factor-config.d.ts +5 -0
- package/lib/form-validators/models/config/field-config.d.ts +4 -0
- package/lib/form-validators/models/config/file-config.d.ts +5 -0
- package/lib/form-validators/models/config/hex-color-config.d.ts +4 -0
- package/lib/form-validators/models/config/iban-config.d.ts +4 -0
- package/lib/form-validators/models/config/image-config.d.ts +7 -0
- package/lib/form-validators/models/config/index.d.ts +34 -0
- package/lib/form-validators/models/config/ip-config.d.ts +6 -0
- package/lib/form-validators/models/config/logical-operator-config.d.ts +5 -0
- package/lib/form-validators/models/config/mask-config.d.ts +6 -0
- package/lib/form-validators/models/config/max-date-config.d.ts +4 -0
- package/lib/form-validators/models/config/message-config.d.ts +3 -0
- package/lib/form-validators/models/config/min-date-config.d.ts +4 -0
- package/lib/form-validators/models/config/model-config.d.ts +4 -0
- package/lib/form-validators/models/config/number-config.d.ts +4 -0
- package/lib/form-validators/models/config/numeric-config.d.ts +8 -0
- package/lib/form-validators/models/config/password-config.d.ts +13 -0
- package/lib/form-validators/models/config/pattern-config.d.ts +6 -0
- package/lib/form-validators/models/config/prop-config.d.ts +14 -0
- package/lib/form-validators/models/config/props-config.d.ts +12 -0
- package/lib/form-validators/models/config/range-config.d.ts +5 -0
- package/lib/form-validators/models/config/relational-operator-config.d.ts +6 -0
- package/lib/form-validators/models/config/required-config.d.ts +3 -0
- package/lib/form-validators/models/config/rule-config.d.ts +4 -0
- package/lib/form-validators/models/config/sanitize-config.d.ts +3 -0
- package/lib/form-validators/models/config/size-config.d.ts +5 -0
- package/lib/form-validators/models/config/string-comparison-config.d.ts +4 -0
- package/lib/form-validators/models/config/time-config.d.ts +15 -0
- package/lib/form-validators/models/config/todate-config.d.ts +3 -0
- package/lib/form-validators/models/config/unique-config.d.ts +4 -0
- package/lib/form-validators/models/config/url-config.d.ts +5 -0
- package/lib/form-validators/models/form-builder-configuration.d.ts +28 -0
- package/lib/form-validators/models/index.d.ts +2 -0
- package/lib/form-validators/models/interface/array-prop-instance-config.interface.d.ts +5 -0
- package/lib/form-validators/models/interface/auto-instance-config.interface.d.ts +7 -0
- package/lib/form-validators/models/interface/form-data-config.d.ts +3 -0
- package/lib/form-validators/models/interface/i-abstract-control.d.ts +15 -0
- package/lib/form-validators/models/interface/i-form-group.d.ts +37 -0
- package/lib/form-validators/models/interface/instance-argument.interface.d.ts +3 -0
- package/lib/form-validators/models/interface/object-prop-instance-config.interface.d.ts +4 -0
- package/lib/form-validators/models/interface/options.d.ts +9 -0
- package/lib/form-validators/models/password-validation.model.d.ts +20 -0
- package/lib/form-validators/models/prop-validation-config.d.ts +78 -0
- package/lib/form-validators/public_api.d.ts +24 -0
- package/lib/form-validators/reactive-form-validators/allOf.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/alpha.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/alphaNumeric.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/and.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/ascii.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/async/base.async.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/choice.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/compare.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/compose.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/conditional-change.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/contains.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/credit-card.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/cusip.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/custom.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/dataUri.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/date.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/different.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/digit.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/email.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/endsWith.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/even.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/extension.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/factor.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/file.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/fileSize.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/greater-than.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/grid.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/hexcolor.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/iban.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/image.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/index.d.ts +65 -0
- package/lib/form-validators/reactive-form-validators/ip.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/json.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/latLong.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/latitude.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/leapYear.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/less-than.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/longitude.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/lowercase.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/mac.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/mask.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxDate.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxLength.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxNumber.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxTime.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minDate.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minLength.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minNumber.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minTime.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/noneOf.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/not.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/notEmpty.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/numeric.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/odd.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/oneOf.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/or.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/password.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/pattern.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/port.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/primeNumber.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/range.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/required.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/requiredTrue.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/rule.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/startsWith.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/time.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/unique.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/uppercase.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/url.validator.d.ts +3 -0
- package/lib/form-validators/services/base-form-builder.d.ts +13 -0
- package/lib/form-validators/services/entity.service.d.ts +15 -0
- package/lib/form-validators/services/form-control.d.ts +99 -0
- package/lib/form-validators/services/form-group.d.ts +9 -0
- package/lib/form-validators/services/reactive-form.module.d.ts +24 -0
- package/lib/form-validators/services/rx-form-array.d.ts +38 -0
- package/lib/form-validators/services/rx-form-builder.d.ts +54 -0
- package/lib/form-validators/services/rx-form-group.d.ts +66 -0
- package/lib/form-validators/services/typed-form-builder.d.ts +14 -0
- package/lib/form-validators/util/alphabet-regex.locale.d.ts +28 -0
- package/lib/form-validators/util/app-util.d.ts +28 -0
- package/lib/form-validators/util/check-length.d.ts +1 -0
- package/lib/form-validators/util/config-provider.d.ts +1 -0
- package/lib/form-validators/util/date-checker.function.d.ts +7 -0
- package/lib/form-validators/util/date-provider.d.ts +9 -0
- package/lib/form-validators/util/form-const.d.ts +2 -0
- package/lib/form-validators/util/form-provider.d.ts +8 -0
- package/lib/form-validators/util/index.d.ts +6 -0
- package/lib/form-validators/util/instance-provider.function.d.ts +3 -0
- package/lib/form-validators/util/ip-checker.d.ts +2 -0
- package/lib/form-validators/util/linq.d.ts +15 -0
- package/lib/form-validators/util/object-maker.d.ts +7 -0
- package/lib/form-validators/util/reactive-form-config.d.ts +17 -0
- package/lib/form-validators/util/regex-rules.d.ts +3 -0
- package/lib/form-validators/util/regex-validator.d.ts +11 -0
- package/lib/form-validators/util/relational-checker.function.d.ts +2 -0
- package/lib/form-validators/util/reset-form.d.ts +21 -0
- package/lib/form-validators/util/sanitizers.d.ts +3 -0
- package/lib/form-validators/util/time-checker.function.d.ts +4 -0
- package/lib/form-validators/util/type.d.ts +3 -0
- package/lib/form-validators/util/validator-value-checker.d.ts +5 -0
- package/lib/form-validators/validators-extension/allOf-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/alpha-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/alphaNumeric-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/and-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/ascii-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/base-validator.function.d.ts +3 -0
- package/lib/form-validators/validators-extension/choice-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/compare-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/compose-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/contains-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/credit-card-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/cusip-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/custom-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/dataUri-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/date-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/different-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/digit-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/email-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/endsWith-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/even-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/extension-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/factor-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/file-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/fileSize-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/greater-than-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/grid-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/hexcolor-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/iban-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/image-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/index.d.ts +67 -0
- package/lib/form-validators/validators-extension/ip-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/json-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/latLong-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/latitude-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/leapYear-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/less-than-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/longitude-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/lowercase-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/mac-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/mask-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/maxDate-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/maxLength-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/maxNumber-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/maxTime-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minDate-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minLength-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minNumber-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minTime-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/noneOf-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/not-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/notEmpty-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/numeric-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/odd-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/oneOf-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/or-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/password-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/pattern-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/port-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/primeNumber-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/range-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/required-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/requiredTrue-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/rxweb-validators.d.ts +107 -0
- package/lib/form-validators/validators-extension/startsWith-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/time-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/unique-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/uppercase-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/url-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-function/alpha-validation.function.d.ts +3 -0
- package/lib/form-validators/validators-function/regex-validation.function.d.ts +4 -0
- package/lib/forms/components/generic-form/generic-form.component.d.ts +91 -0
- package/lib/forms/constants/constants.d.ts +1 -0
- package/lib/forms/directives/mat-form-field-editor.directive.d.ts +82 -0
- package/lib/forms/directives/mat-form-field-readonly.directive.d.ts +16 -0
- package/lib/forms/enums/form-field-type.d.ts +17 -0
- package/lib/forms/forms.module.d.ts +39 -0
- package/lib/forms/functions/decorators.d.ts +14 -0
- package/lib/forms/functions/functions.d.ts +7 -0
- package/lib/forms/helpers/abstract-mat-form-field.d.ts +182 -0
- package/lib/forms/helpers/value-accessor-base.d.ts +92 -0
- package/lib/forms/models/form-field-definition.d.ts +39 -0
- package/lib/forms/models/form-field-group.d.ts +12 -0
- package/lib/forms/public_api.d.ts +3 -0
- package/lib/forms/validators/equal-validator.directive.d.ts +20 -0
- package/lib/forms/validators/native-element-injector.directive.d.ts +17 -0
- package/lib/forms/validators/unique-validator-directive.d.ts +36 -0
- package/lib/http/http.module.d.ts +8 -0
- package/lib/http/public_api.d.ts +1 -0
- package/lib/http/services/generic.service.d.ts +166 -0
- package/lib/layout/_layout-theme.scss +89 -0
- package/lib/layout/form-toolbar/form-toolbar.component.d.ts +23 -0
- package/lib/layout/form-toolbar-menu/form-toolbar-menu.component.d.ts +10 -0
- package/lib/layout/layout-card-over/layout-card-over.component.d.ts +31 -0
- package/lib/layout/layout-footer/layout-footer.component.d.ts +17 -0
- package/lib/layout/layout-manage-list/layout-manage-list.component.d.ts +100 -0
- package/lib/layout/layout-manage-list/layout-manage-list.directives.d.ts +61 -0
- package/lib/layout/layout-nav/layout-nav.component.d.ts +85 -0
- package/lib/layout/layout-nav-list/layout-nav-list.component.d.ts +94 -0
- package/lib/layout/layout-nav-list/layout-nav-list.directives.d.ts +25 -0
- package/lib/layout/layout-toggle.class.d.ts +37 -0
- package/lib/layout/layout.component.d.ts +56 -0
- package/lib/layout/layout.directives.d.ts +25 -0
- package/lib/layout/layout.module.d.ts +46 -0
- package/lib/layout/list-toolbar/list-toolbar.component.d.ts +19 -0
- package/lib/layout/list-toolbar-menu/list-toolbar-menu.component.d.ts +10 -0
- package/lib/layout/navigation-drawer/navigation-drawer.component.d.ts +114 -0
- package/lib/layout/public_api.d.ts +1 -0
- package/lib/media/directives/media-toggle.directive.d.ts +44 -0
- package/lib/media/media.module.d.ts +11 -0
- package/lib/media/public_api.d.ts +1 -0
- package/lib/media/services/media.service.d.ts +37 -0
- package/lib/menu/components/menu.component.d.ts +28 -0
- package/lib/menu/enums/menu-scope.d.ts +4 -0
- package/lib/menu/menu.module.d.ts +19 -0
- package/lib/menu/models/menu-item.d.ts +17 -0
- package/lib/menu/models/menu.d.ts +14 -0
- package/lib/menu/public_api.d.ts +1 -0
- package/lib/menu/services/menu-items.service.d.ts +12 -0
- package/lib/menu/services/menu.resolve.d.ts +39 -0
- package/lib/menu/services/menu.service.d.ts +12 -0
- package/lib/search/public_api.d.ts +1 -0
- package/lib/search/search.module.d.ts +15 -0
- package/lib/search/vd-search-box/vd-search-box.component.d.ts +60 -0
- package/lib/search/vd-search-input/vd-search-input.component.d.ts +57 -0
- package/lib/select/public_api.d.ts +2 -0
- package/lib/select/select.component.d.ts +233 -0
- package/lib/select/select.module.d.ts +13 -0
- package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +202 -0
- package/lib/table/components/filter-clear.component.d.ts +16 -0
- package/lib/table/components/filter-date.component.d.ts +70 -0
- package/lib/table/components/filter-input.component.d.ts +94 -0
- package/lib/table/components/filter-select.component.d.ts +178 -0
- package/lib/table/directives/data-source-filter.directive.d.ts +28 -0
- package/lib/table/enums/table-column-type.d.ts +12 -0
- package/lib/table/functions/decorators.d.ts +17 -0
- package/lib/table/functions/functions.d.ts +8 -0
- package/lib/table/models/pagination.d.ts +7 -0
- package/lib/table/models/table-column.d.ts +59 -0
- package/lib/table/models/table-definition.d.ts +24 -0
- package/lib/table/models/table-menu-item.d.ts +8 -0
- package/lib/table/paginator-intl.d.ts +27 -0
- package/lib/table/public_api.d.ts +2 -0
- package/lib/table/table.data-source.d.ts +140 -0
- package/lib/table/table.module.d.ts +46 -0
- package/lib/table/table.static-data-source.d.ts +88 -0
- package/messaia-cdk.d.ts +5 -0
- package/package.json +31 -0
- package/public_api.d.ts +14 -0
- package/src/lib/layout/README.md +119 -0
- package/src/lib/layout/layout-card-over/README.md +36 -0
- package/src/lib/layout/layout-manage-list/README.md +76 -0
- package/src/lib/layout/layout-nav/README.md +40 -0
- package/src/lib/layout/layout-nav-list/README.md +85 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
6
|
+
import { BaseComponent } from './components/base.component';
|
|
7
|
+
import { GenericFormBaseComponent } from './components/generic-form-base.component';
|
|
8
|
+
import { GenericFormComponent } from './components/generic-form.component';
|
|
9
|
+
import { GenericListComponent } from './components/generic-list.component';
|
|
10
|
+
import { GenericReactiveFormComponent } from './components/generic-reactive-form.component';
|
|
11
|
+
import { Common } from './constants/common';
|
|
12
|
+
import { MessageType } from './enums/message-type';
|
|
13
|
+
import { AuthHelper } from './helpers/auth-helper';
|
|
14
|
+
import { BaseInterceptor } from './interceptors/base.interceptor';
|
|
15
|
+
import { CachingInterceptor } from './interceptors/caching-interceptor';
|
|
16
|
+
import { LoadingScreenInterceptor } from './interceptors/loading.interceptor';
|
|
17
|
+
import { AuthUser } from './models/auth-user';
|
|
18
|
+
import { FileService } from './services/file.service';
|
|
19
|
+
import { LoadingScreenService } from './services/loading-screen.service';
|
|
20
|
+
import { PrintService } from './services/print.service';
|
|
21
|
+
import * as i0 from "@angular/core";
|
|
22
|
+
export { AuthUser, MessageType, AuthHelper, BaseComponent, GenericListComponent, GenericFormComponent, GenericFormBaseComponent, GenericReactiveFormComponent, Common, BaseInterceptor, CachingInterceptor, LoadingScreenInterceptor, FileService, LoadingScreenService, PrintService };
|
|
23
|
+
const DECLARATIONS = [];
|
|
24
|
+
const MATRIAL_DECLARATIONS = [];
|
|
25
|
+
export class VdBaseModule {
|
|
26
|
+
}
|
|
27
|
+
/** @nocollapse */ /** @nocollapse */ VdBaseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdBaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
28
|
+
/** @nocollapse */ /** @nocollapse */ VdBaseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdBaseModule, imports: [CommonModule,
|
|
29
|
+
FormsModule,
|
|
30
|
+
ReactiveFormsModule,
|
|
31
|
+
MatDialogModule] });
|
|
32
|
+
/** @nocollapse */ /** @nocollapse */ VdBaseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdBaseModule, providers: [
|
|
33
|
+
{ provide: HTTP_INTERCEPTORS, useClass: BaseInterceptor, multi: true },
|
|
34
|
+
{ provide: HTTP_INTERCEPTORS, useClass: CachingInterceptor, multi: true },
|
|
35
|
+
{ provide: HTTP_INTERCEPTORS, useClass: LoadingScreenInterceptor, multi: true },
|
|
36
|
+
], imports: [[
|
|
37
|
+
CommonModule,
|
|
38
|
+
FormsModule,
|
|
39
|
+
ReactiveFormsModule,
|
|
40
|
+
MatDialogModule,
|
|
41
|
+
MATRIAL_DECLARATIONS
|
|
42
|
+
]] });
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdBaseModule, decorators: [{
|
|
44
|
+
type: NgModule,
|
|
45
|
+
args: [{
|
|
46
|
+
imports: [
|
|
47
|
+
CommonModule,
|
|
48
|
+
FormsModule,
|
|
49
|
+
ReactiveFormsModule,
|
|
50
|
+
MatDialogModule,
|
|
51
|
+
MATRIAL_DECLARATIONS
|
|
52
|
+
],
|
|
53
|
+
providers: [
|
|
54
|
+
{ provide: HTTP_INTERCEPTORS, useClass: BaseInterceptor, multi: true },
|
|
55
|
+
{ provide: HTTP_INTERCEPTORS, useClass: CachingInterceptor, multi: true },
|
|
56
|
+
{ provide: HTTP_INTERCEPTORS, useClass: LoadingScreenInterceptor, multi: true },
|
|
57
|
+
],
|
|
58
|
+
declarations: [
|
|
59
|
+
DECLARATIONS
|
|
60
|
+
],
|
|
61
|
+
exports: [
|
|
62
|
+
DECLARATIONS
|
|
63
|
+
]
|
|
64
|
+
}]
|
|
65
|
+
}] });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2Jhc2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFeEQsT0FBTyxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsTUFBTSxFQUNOLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFFeEIsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUE7QUFzQi9CLE1BQU0sT0FBTyxZQUFZOzsrSUFBWixZQUFZO2dKQUFaLFlBQVksWUFsQnZCLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGVBQWU7Z0pBZUosWUFBWSxhQVpiO1FBQ1YsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1FBQ3RFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1FBQ3pFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0tBQy9FLFlBWFE7WUFDUixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2Ysb0JBQW9CO1NBQ3BCOzJGQWFXLFlBQVk7a0JBcEJ4QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLG9CQUFvQjtxQkFDcEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNWLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDdEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ3pFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUMvRTtvQkFDRCxZQUFZLEVBQUU7d0JBQ2IsWUFBWTtxQkFDWjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1IsWUFBWTtxQkFDWjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9nZW5lcmljLWZvcm0tYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHZW5lcmljRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9nZW5lcmljLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgR2VuZXJpY0xpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi9lbnVtcy9tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2F1dGgtaGVscGVyJztcclxuaW1wb3J0IHsgQmFzZUludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvYmFzZS5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IENhY2hpbmdJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL2NhY2hpbmctaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBMb2FkaW5nU2NyZWVuSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9sb2FkaW5nLmludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQXV0aFVzZXIgfSBmcm9tICcuL21vZGVscy9hdXRoLXVzZXInO1xyXG5pbXBvcnQgeyBGaWxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9hZGluZ1NjcmVlblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2xvYWRpbmctc2NyZWVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmludFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByaW50LnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IHtcclxuXHRBdXRoVXNlcixcclxuXHRNZXNzYWdlVHlwZSxcclxuXHRBdXRoSGVscGVyLFxyXG5cdEJhc2VDb21wb25lbnQsXHJcblx0R2VuZXJpY0xpc3RDb21wb25lbnQsXHJcblx0R2VuZXJpY0Zvcm1Db21wb25lbnQsXHJcblx0R2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50LFxyXG5cdEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQsXHJcblx0Q29tbW9uLFxyXG5cdEJhc2VJbnRlcmNlcHRvcixcclxuXHRDYWNoaW5nSW50ZXJjZXB0b3IsXHJcblx0TG9hZGluZ1NjcmVlbkludGVyY2VwdG9yLFxyXG5cdEZpbGVTZXJ2aWNlLFxyXG5cdExvYWRpbmdTY3JlZW5TZXJ2aWNlLFxyXG5cdFByaW50U2VydmljZVxyXG59O1xyXG5cclxuY29uc3QgREVDTEFSQVRJT05TID0gW107XHJcblxyXG5jb25zdCBNQVRSSUFMX0RFQ0xBUkFUSU9OUyA9IFtdXHJcblxyXG5ATmdNb2R1bGUoe1xyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuXHRcdE1hdERpYWxvZ01vZHVsZSxcclxuXHRcdE1BVFJJQUxfREVDTEFSQVRJT05TXHJcblx0XSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBCYXNlSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcblx0XHR7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQ2FjaGluZ0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG5cdFx0eyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IExvYWRpbmdTY3JlZW5JbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuXHRdLFxyXG5cdGRlY2xhcmF0aW9uczogW1xyXG5cdFx0REVDTEFSQVRJT05TXHJcblx0XSxcclxuXHRleHBvcnRzOiBbXHJcblx0XHRERUNMQVJBVElPTlNcclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZEJhc2VNb2R1bGUgeyB9Il19
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
+
import { ChangeDetectorRef, Directive, ElementRef, QueryList, ViewChildren } from '@angular/core';
|
|
4
|
+
import { MatExpansionPanel } from '@angular/material/expansion';
|
|
5
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
6
|
+
import { Title } from '@angular/platform-browser';
|
|
7
|
+
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
8
|
+
import { of } from 'rxjs';
|
|
9
|
+
import { ContextHelper } from '../../common/common.module';
|
|
10
|
+
import { AppSetting } from '../../common/models/app-setting';
|
|
11
|
+
import { ServiceLocator } from '../../common/services/service-locator';
|
|
12
|
+
import { VdDialogService } from '../../dialogs/services/dialog.service';
|
|
13
|
+
import { VdMediaService } from '../../media/services/media.service';
|
|
14
|
+
import { Common } from '../constants/common';
|
|
15
|
+
import { MessageType } from '../enums/message-type';
|
|
16
|
+
import { AuthHelper } from '../helpers/auth-helper';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "@angular/router";
|
|
19
|
+
/**
|
|
20
|
+
* A base list component for components with pagination support
|
|
21
|
+
*/
|
|
22
|
+
// @dynamic
|
|
23
|
+
export class BaseComponent {
|
|
24
|
+
/**
|
|
25
|
+
* Constructor
|
|
26
|
+
*/
|
|
27
|
+
constructor(route, changeDetectorRef) {
|
|
28
|
+
this.route = route;
|
|
29
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
30
|
+
/**
|
|
31
|
+
* The subtitle of the current outlet
|
|
32
|
+
*/
|
|
33
|
+
this.subtitle = '';
|
|
34
|
+
/**
|
|
35
|
+
* Represents the request errors
|
|
36
|
+
*/
|
|
37
|
+
this.errors = new Array();
|
|
38
|
+
/**
|
|
39
|
+
* Allowed file extensions
|
|
40
|
+
*/
|
|
41
|
+
this.allowedExtensions = Common.allowedExtensions;
|
|
42
|
+
/**
|
|
43
|
+
* tinyMCE plugins
|
|
44
|
+
*/
|
|
45
|
+
this.editorPlugins = Common.editorPlugins;
|
|
46
|
+
/**
|
|
47
|
+
* tinyMCE editor
|
|
48
|
+
*/
|
|
49
|
+
this.editorToolbar = Common.editorToolbar;
|
|
50
|
+
/**
|
|
51
|
+
* Editor configuration
|
|
52
|
+
*/
|
|
53
|
+
this.editorConfig = {};
|
|
54
|
+
/**
|
|
55
|
+
* urlHash: string
|
|
56
|
+
*/
|
|
57
|
+
this.urlHash = null;
|
|
58
|
+
/**
|
|
59
|
+
* Current user object
|
|
60
|
+
*/
|
|
61
|
+
this.currentUser = AuthHelper.user;
|
|
62
|
+
/**
|
|
63
|
+
* If true, set url hash
|
|
64
|
+
*/
|
|
65
|
+
this.setUrlHash = true;
|
|
66
|
+
/**
|
|
67
|
+
* Checks if the user seleceted any text in the document
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
this.isTextSelected = () => window?.getSelection()?.toString()?.length > 0;
|
|
71
|
+
this.titleService = this.getService(Title);
|
|
72
|
+
this.dialogService = this.getService(VdDialogService);
|
|
73
|
+
this.media = this.getService(VdMediaService);
|
|
74
|
+
this.snackBarService = this.getService(MatSnackBar);
|
|
75
|
+
this.router = this.getService(Router);
|
|
76
|
+
this.appSetting = this.getService(AppSetting);
|
|
77
|
+
this.location = this.getService(Location);
|
|
78
|
+
ContextHelper.activatedRoute = route;
|
|
79
|
+
ContextHelper.router = this.router;
|
|
80
|
+
ContextHelper.appSetting = this.appSetting;
|
|
81
|
+
this.initEditor();
|
|
82
|
+
}
|
|
83
|
+
get isSaving() { return this._isSaving || this.isLoading; }
|
|
84
|
+
set isSaving(isSaving) { this.isLoading = this._isSaving = isSaving; }
|
|
85
|
+
/**
|
|
86
|
+
* Lifecycle hook that is called after data-bound properties
|
|
87
|
+
* of a directive are initialized.
|
|
88
|
+
*/
|
|
89
|
+
ngOnInit() {
|
|
90
|
+
/* Get menu items from route snapshot */
|
|
91
|
+
var mainRoute = this.getMainRoute(this.route.snapshot);
|
|
92
|
+
if (mainRoute) {
|
|
93
|
+
this.menu = mainRoute.data.menu;
|
|
94
|
+
}
|
|
95
|
+
/* Set project name & debug mode */
|
|
96
|
+
this.projectName = this.appSetting.projectName;
|
|
97
|
+
this.debug = this.appSetting.debug;
|
|
98
|
+
/* Get the hash from the url */
|
|
99
|
+
this.route.fragment.subscribe((fragment) => this.urlHash = fragment);
|
|
100
|
+
/**
|
|
101
|
+
* Check permissions
|
|
102
|
+
*/
|
|
103
|
+
if (this.route.parent) {
|
|
104
|
+
this.route.parent.url.subscribe((url) => {
|
|
105
|
+
this.className = url.length ? url[0].path.replace(/(.*)s$/, '$1').replace(/^./, (url[0].path[0] || '').toUpperCase()) : '';
|
|
106
|
+
this.canCreate = AuthHelper.isPermitted('Create', `Create${this.className}`);
|
|
107
|
+
this.canUpdate = AuthHelper.isPermitted('Update', `Update${this.className}`);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/* Set current route */
|
|
111
|
+
this.currentRoute = btoa(this.router.url);
|
|
112
|
+
/**
|
|
113
|
+
* Set page title
|
|
114
|
+
*/
|
|
115
|
+
this.router.events.subscribe(x => {
|
|
116
|
+
if (x instanceof NavigationEnd) {
|
|
117
|
+
this.setTitles();
|
|
118
|
+
this.currentRoute = btoa(x.url);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Lifecycle hook that is called after a component's view has been fully initialized.
|
|
124
|
+
*/
|
|
125
|
+
ngAfterViewInit() {
|
|
126
|
+
/* Broadcast to all listener observables when loading the page */
|
|
127
|
+
this.media.broadcast();
|
|
128
|
+
/* Set titles */
|
|
129
|
+
this.setTitles();
|
|
130
|
+
/*
|
|
131
|
+
* Force a new change detection cycle since change detections
|
|
132
|
+
* have finished when `ngAfterViewInit` is executed
|
|
133
|
+
*/
|
|
134
|
+
this.changeDetectorRef.detectChanges();
|
|
135
|
+
/* Listen for expansion panel changes */
|
|
136
|
+
this.onExpansionPanelChanges();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Refreshs this page/component
|
|
140
|
+
*/
|
|
141
|
+
reloadPage() {
|
|
142
|
+
let currentUrl = this.router.url;
|
|
143
|
+
this.router.navigateByUrl('/', { replaceUrl: true }).then(() => this.router.navigateByUrl(currentUrl, { replaceUrl: true }));
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Listen for expansion panel changes
|
|
147
|
+
*/
|
|
148
|
+
onExpansionPanelChanges() {
|
|
149
|
+
/* Listen for expansion panel changes */
|
|
150
|
+
this.matExpansionPanelQueryList?.changes.subscribe(_ => {
|
|
151
|
+
this.changeDetectorRef.detectChanges();
|
|
152
|
+
/* Find the index of the panel with the specified element ID */
|
|
153
|
+
this.urlHash?.split('.')
|
|
154
|
+
?.reduce((accumulator, currentValue, index) => accumulator.concat((index > 0 ? (accumulator.slice(-1).join('.') + '.') : '') + currentValue), [])
|
|
155
|
+
?.forEach((hash) => {
|
|
156
|
+
var expansionPanelIndex = this.matExpansionPanelElementQueryList?.toArray()?.findIndex(x => x.nativeElement.id == hash);
|
|
157
|
+
if (expansionPanelIndex >= 0) {
|
|
158
|
+
this.matExpansionPanelQueryList?.toArray()[expansionPanelIndex]?.open();
|
|
159
|
+
this.changeDetectorRef.detectChanges();
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
/* Detect changes for opened panels */
|
|
163
|
+
this.matExpansionPanelQueryList?.forEach(y => {
|
|
164
|
+
y.opened.subscribe(_ => {
|
|
165
|
+
if (this.setUrlHash) {
|
|
166
|
+
/* Get the id of the current opened panel */
|
|
167
|
+
var currentPanelId = y['_viewContainerRef']?.element?.nativeElement?.id;
|
|
168
|
+
/* If the panel ID is set, set it as url segment (hash) */
|
|
169
|
+
if (currentPanelId) {
|
|
170
|
+
this.router.navigate([], { fragment: currentPanelId, replaceUrl: true });
|
|
171
|
+
}
|
|
172
|
+
/* Otherwise remove the segment from the url */
|
|
173
|
+
else {
|
|
174
|
+
this.router.navigate([], { replaceUrl: true });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/* Detect changes */
|
|
178
|
+
this.changeDetectorRef.detectChanges();
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
/* Notify expansion panel list changes */
|
|
183
|
+
this.matExpansionPanelQueryList.notifyOnChanges();
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Retrieves an instance from the injector based on the provided token.
|
|
187
|
+
* If not found:
|
|
188
|
+
* - Throws {@link NoProviderError} if no `notFoundValue` that is not equal to
|
|
189
|
+
* Injector.THROW_IF_NOT_FOUND is given
|
|
190
|
+
* - Returns the `notFoundValue` otherwise
|
|
191
|
+
*/
|
|
192
|
+
getService(token) {
|
|
193
|
+
return ServiceLocator.getService(token);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Gets base route
|
|
197
|
+
* @param snapshot
|
|
198
|
+
*/
|
|
199
|
+
getMainRoute(snapshot) {
|
|
200
|
+
if (snapshot && !snapshot.data.menu) {
|
|
201
|
+
return this.getMainRoute(snapshot.parent);
|
|
202
|
+
}
|
|
203
|
+
return snapshot;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Shows a confirm dialog to delete an item
|
|
207
|
+
*/
|
|
208
|
+
showDeleteItemDialog() {
|
|
209
|
+
return this.dialogService.openConfirm({
|
|
210
|
+
message: $localize `:@@dialog.message.delete.one:Are you sure you want to delete this item?`,
|
|
211
|
+
title: $localize `:@@dialog.title.delete:Confirm Delete`,
|
|
212
|
+
cancelButton: $localize `:@@cancel:Cancel`,
|
|
213
|
+
acceptButton: $localize `:@@delete:Delete`,
|
|
214
|
+
}).afterClosed();
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Shows a confirm dialog to delete multiple items
|
|
218
|
+
*/
|
|
219
|
+
showDeleteItemsDialog() {
|
|
220
|
+
return this.dialogService.openConfirm({
|
|
221
|
+
message: $localize `:@@dialog.message.delete.list:Are you sure you want to delete the selected items?`,
|
|
222
|
+
title: $localize `:@@dialog.title.delete:Confirm Delete`,
|
|
223
|
+
cancelButton: $localize `:@@cancel:Cancel`,
|
|
224
|
+
acceptButton: $localize `:@@delete:Delete`,
|
|
225
|
+
}).afterClosed();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Shows a confirm dialog to send some data
|
|
229
|
+
* @param message The message to display
|
|
230
|
+
* @param observabe The observable instance
|
|
231
|
+
* @param successCallback A success callback
|
|
232
|
+
* @param errorCallback An error callback
|
|
233
|
+
*/
|
|
234
|
+
showConfirmationDialog(message, observabe, successCallback = null, errorCallback = null) {
|
|
235
|
+
this.dialogService
|
|
236
|
+
.openConfirm({
|
|
237
|
+
message: message,
|
|
238
|
+
title: $localize `:@@dialog.title.confirm:Confirm`,
|
|
239
|
+
cancelButton: $localize `:@@cancel:Cancel`,
|
|
240
|
+
acceptButton: $localize `:@@ok:Ok`,
|
|
241
|
+
})
|
|
242
|
+
.afterClosed().subscribe((accept) => {
|
|
243
|
+
if (accept) {
|
|
244
|
+
observabe.subscribe(x => {
|
|
245
|
+
this.showMessage($localize `:@@snackbar.send.success:Data sent successfully.`);
|
|
246
|
+
if (successCallback) {
|
|
247
|
+
successCallback(x);
|
|
248
|
+
}
|
|
249
|
+
}, errors => {
|
|
250
|
+
this.isSaving = false;
|
|
251
|
+
if (errorCallback) {
|
|
252
|
+
errorCallback(errors);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Shows a message
|
|
260
|
+
* @param message The message to display
|
|
261
|
+
* @param type The type of the message
|
|
262
|
+
*/
|
|
263
|
+
showMessage(message, type = MessageType.Success) {
|
|
264
|
+
var snackBarClass = 'primary';
|
|
265
|
+
switch (type) {
|
|
266
|
+
case MessageType.Success:
|
|
267
|
+
snackBarClass = 'primary';
|
|
268
|
+
break;
|
|
269
|
+
case MessageType.Warning:
|
|
270
|
+
snackBarClass = 'warn';
|
|
271
|
+
break;
|
|
272
|
+
case MessageType.Error:
|
|
273
|
+
snackBarClass = 'error';
|
|
274
|
+
break;
|
|
275
|
+
default:
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
this.snackBarService.open(message || $localize `:@@snackbar.send.success:Data sent successfully.`, null, {
|
|
279
|
+
duration: 3000,
|
|
280
|
+
panelClass: [snackBarClass]
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Initoalizes the tinymce editor
|
|
285
|
+
*/
|
|
286
|
+
initEditor(editorConfig = {}) {
|
|
287
|
+
Object.assign(this.editorConfig, {
|
|
288
|
+
suffix: '.min',
|
|
289
|
+
skin: false,
|
|
290
|
+
height: '170px',
|
|
291
|
+
content_css: false,
|
|
292
|
+
plugins: this.editorPlugins,
|
|
293
|
+
toolbar: this.editorToolbar,
|
|
294
|
+
paste_as_text: true,
|
|
295
|
+
language: 'de',
|
|
296
|
+
language_url: '/assets/tinymce/langs/de.js',
|
|
297
|
+
document_base_url: `${this.appSetting.apiUrl}file/`,
|
|
298
|
+
automatic_uploads: true,
|
|
299
|
+
relative_urls: true,
|
|
300
|
+
convert_urls: false,
|
|
301
|
+
extended_valid_elements: 'span[id|class|style],+@[data-options]',
|
|
302
|
+
allow_html_in_named_anchor: true
|
|
303
|
+
}, editorConfig);
|
|
304
|
+
this.isEditorInitialzed = true;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Sets subtitle from curren menu
|
|
308
|
+
*/
|
|
309
|
+
setTitles() {
|
|
310
|
+
if (this.menu) {
|
|
311
|
+
this.titleService.setTitle(this.menu.title);
|
|
312
|
+
this.title = this.titleService.getTitle();
|
|
313
|
+
if (this.menu.items) {
|
|
314
|
+
var submenu = this.menu.items.filter(x => x.path == this.router.url)[0];
|
|
315
|
+
if (submenu) {
|
|
316
|
+
this.subtitle = submenu.title;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Navigate based on the provided array of commands and a starting point.
|
|
323
|
+
* @param commands
|
|
324
|
+
*/
|
|
325
|
+
navigate(commands, queryParams) {
|
|
326
|
+
this.router.navigate(commands, { queryParams: Object.assign({ returnUrl: this.currentRoute }, queryParams || {}), relativeTo: this.route });
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Convert Object to HttpHeaders
|
|
330
|
+
*
|
|
331
|
+
* @param body
|
|
332
|
+
*/
|
|
333
|
+
toHttpHeaders(body) {
|
|
334
|
+
if (!body) {
|
|
335
|
+
return new HttpHeaders();
|
|
336
|
+
}
|
|
337
|
+
return Object.getOwnPropertyNames(body)
|
|
338
|
+
.filter(key => body[key] != null && body[key] != '')
|
|
339
|
+
.reduce((p, key) => p.set(key, body[key]), new HttpHeaders());
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Parses http response errors
|
|
343
|
+
* @param errors
|
|
344
|
+
*/
|
|
345
|
+
parseErrors(errors) {
|
|
346
|
+
this.errors = [];
|
|
347
|
+
this.isLoading = false;
|
|
348
|
+
this.isSaving = false;
|
|
349
|
+
if (errors) {
|
|
350
|
+
Object.keys(errors).forEach(el => {
|
|
351
|
+
let error = errors[el];
|
|
352
|
+
if (Array.isArray(error)) {
|
|
353
|
+
error.forEach(err => {
|
|
354
|
+
this.errors.push(err);
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
else if (typeof error === "string") {
|
|
358
|
+
this.errors.push(error);
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Handle Http operation that failed.
|
|
365
|
+
* Let the app continue.
|
|
366
|
+
* @param operation - name of the operation that failed
|
|
367
|
+
* @param result - optional value to return as the observable result
|
|
368
|
+
*/
|
|
369
|
+
handleError(operation = 'operation', result) {
|
|
370
|
+
return (error) => {
|
|
371
|
+
/* Parse the error messages */
|
|
372
|
+
this.parseErrors(error);
|
|
373
|
+
/* Log to console */
|
|
374
|
+
this.warn(`${operation} failed: ${error.message}`);
|
|
375
|
+
/* Let the app keep running by returning an empty result */
|
|
376
|
+
return of(result);
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Log to console
|
|
381
|
+
* @param message
|
|
382
|
+
* @param optionalParams
|
|
383
|
+
*/
|
|
384
|
+
log(message, ...optionalParams) {
|
|
385
|
+
if (this.debug) {
|
|
386
|
+
console.log(message, optionalParams);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Log to console
|
|
391
|
+
* @param message
|
|
392
|
+
* @param optionalParams
|
|
393
|
+
*/
|
|
394
|
+
warn(message, ...optionalParams) {
|
|
395
|
+
if (this.debug) {
|
|
396
|
+
console.warn(message, optionalParams);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Cleans the objects
|
|
401
|
+
* Removes empty properties
|
|
402
|
+
* @param obj
|
|
403
|
+
*/
|
|
404
|
+
clean(obj) {
|
|
405
|
+
try {
|
|
406
|
+
for (var propName in obj) {
|
|
407
|
+
if (obj[propName] === null || obj[propName] === undefined || obj[propName] === "") {
|
|
408
|
+
delete obj[propName];
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
catch (error) { }
|
|
413
|
+
return obj;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Sanitizes the specified object
|
|
417
|
+
* @param obj
|
|
418
|
+
* @returns
|
|
419
|
+
*/
|
|
420
|
+
sanitizeObject(obj, ...ignore) {
|
|
421
|
+
return Object.keys(obj)
|
|
422
|
+
.filter(x => obj[x])
|
|
423
|
+
.filter(x => !(ignore || []).map(x => x.toLowerCase()).includes(x.toLowerCase()))
|
|
424
|
+
.reduce((result, key) => {
|
|
425
|
+
result[key] = isNaN(+obj[key]) ? obj[key] : +obj[key];
|
|
426
|
+
return result;
|
|
427
|
+
}, {});
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/** @nocollapse */ /** @nocollapse */ BaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BaseComponent, deps: [{ token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
431
|
+
/** @nocollapse */ /** @nocollapse */ BaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: BaseComponent, viewQueries: [{ propertyName: "matExpansionPanelElementQueryList", predicate: MatExpansionPanel, descendants: true, read: ElementRef }, { propertyName: "matExpansionPanelQueryList", predicate: MatExpansionPanel, descendants: true }], ngImport: i0 });
|
|
432
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BaseComponent, decorators: [{
|
|
433
|
+
type: Directive
|
|
434
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { matExpansionPanelElementQueryList: [{
|
|
435
|
+
type: ViewChildren,
|
|
436
|
+
args: [MatExpansionPanel, { read: ElementRef }]
|
|
437
|
+
}], matExpansionPanelQueryList: [{
|
|
438
|
+
type: ViewChildren,
|
|
439
|
+
args: [MatExpansionPanel]
|
|
440
|
+
}] } });
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsU0FBUyxFQUFRLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQTBCLGFBQWEsRUFBRSxNQUFNLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1B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QUMsQ0FBQyxDQUFDLENBQUM7YUFDbkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7YUFDaEYsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7O2dKQTdpQm9CLGFBQWE7b0lBQWIsYUFBYSxnRkE2SXBCLGlCQUFpQiwyQkFBVSxVQUFVLDZEQU1yQyxpQkFBaUI7MkZBbkpWLGFBQWE7a0JBRGxDLFNBQVM7cUlBK0lDLGlDQUFpQztzQkFEMUMsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBTzNDLDBCQUEwQjtzQkFEbkMsWUFBWTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIFF1ZXJ5TGlzdCwgVHlwZSwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvblBhbmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29udGV4dEhlbHBlciB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcclxuaW1wb3J0IHsgQXBwU2V0dGluZyB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYXBwLXNldHRpbmcnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9zZXJ2aWNlLWxvY2F0b3InO1xyXG5pbXBvcnQgeyBWZERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kaWFsb2dzL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmRNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZWRpYS9zZXJ2aWNlcy9tZWRpYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21lbnUvbW9kZWxzL21lbnUnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9lbnVtcy9tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9hdXRoLWhlbHBlcic7XHJcbmltcG9ydCB7IEF1dGhVc2VyIH0gZnJvbSAnLi4vbW9kZWxzL2F1dGgtdXNlcic7XHJcblxyXG4vKipcclxuICogQSBiYXNlIGxpc3QgY29tcG9uZW50IGZvciBjb21wb25lbnRzIHdpdGggcGFnaW5hdGlvbiBzdXBwb3J0XHJcbiAqL1xyXG4vLyBAZHluYW1pY1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cdC8qKlxyXG5cdCAqIEFwcCBzZXR0aW5nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBhcHBTZXR0aW5nOiBBcHBTZXR0aW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBNZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIG1lbnU6IE1lbnU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0XHJcblx0ICovXHJcblx0cHVibGljIHByb2plY3ROYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0aXRsZSBvZiB0aGUgY3VycmVudCBwYWdlXHJcblx0ICovXHJcblx0cHVibGljIHRpdGxlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdWJ0aXRsZSBvZiB0aGUgY3VycmVudCBvdXRsZXRcclxuXHQgKi9cclxuXHRwdWJsaWMgc3VidGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCB1c2Ugc29tZSBkdW1teSBkYXRhIGFuZCBzaG93IGRlYnVnIGxvZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVidWc6IGJvb2xlYW47XHJcblxyXG5cdC8qKlx0IFxyXG5cdCAqIExvYWRpbmcgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogU2F2aW5nIHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBfaXNTYXZpbmc6IGJvb2xlYW47XHJcblx0Z2V0IGlzU2F2aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faXNTYXZpbmcgfHwgdGhpcy5pc0xvYWRpbmc7IH1cclxuXHRzZXQgaXNTYXZpbmcoaXNTYXZpbmc6IGJvb2xlYW4pIHsgdGhpcy5pc0xvYWRpbmcgPSB0aGlzLl9pc1NhdmluZyA9IGlzU2F2aW5nOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZmxhZyBlaW5kaWNhdGVzIHRoYXQgdGhlIGVkaXRvciBpcyBpbml0ZWRcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNFZGl0b3JJbml0aWFsemVkOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIHRoZSByZXF1ZXN0IGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlcnJvcnM6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGV2YWx1YXRlIHdoZXRoZXIgYSBnaXZlbiBtZWRpYSBxdWVyeSBpcyB0cnVlIG9yIGZhbHNlIGdpdmVuIHRoZSBjdXJyZW50IGRldmljZSdzIHNjcmVlbiAvIHdpbmRvdyBzaXplLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtZWRpYTogVmRNZWRpYVNlcnZpY2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFsbG93ZWQgZmlsZSBleHRlbnNpb25zXHJcblx0ICovXHJcblx0cHVibGljIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IENvbW1vbi5hbGxvd2VkRXh0ZW5zaW9ucztcclxuXHJcblx0LyoqXHJcblx0ICogdGlueU1DRSBwbHVnaW5zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvclBsdWdpbnM6IHN0cmluZyA9IENvbW1vbi5lZGl0b3JQbHVnaW5zO1xyXG5cclxuXHQvKipcclxuXHQgKiB0aW55TUNFIGVkaXRvclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JUb29sYmFyOiBzdHJpbmcgPSBDb21tb24uZWRpdG9yVG9vbGJhcjtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIGNvbmZpZ3VyYXRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yQ29uZmlnOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogUHJvdmlkZXMgdGhlIG5hdmlnYXRpb24gYW5kIHVybCBtYW5pcHVsYXRpb24gY2FwYWJpbGl0aWVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3V0ZXI6IFJvdXRlcjtcclxuXHJcblx0LyoqXHJcblx0ICogdXJsSGFzaDogc3RyaW5nXHJcblx0ICovXHJcblx0cHVibGljIHVybEhhc2g6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsYXNzIG5hbWVcclxuXHQgKi9cclxuXHRwdWJsaWMgY2xhc3NOYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZSBwZXJtaXNzaW9uXHJcblx0ICovXHJcblx0cHVibGljIGNhbkNyZWF0ZTogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlIHBlcm1pc3Npb25cclxuXHQgKi9cclxuXHRwdWJsaWMgY2FuVXBkYXRlOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHJvdXRlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRSb3V0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHVzZXIgb2JqZWN0XHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRVc2VyOiBBdXRoVXNlciA9IEF1dGhIZWxwZXIudXNlcjtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGFuZCBzZXQgdGhlIHRpdGxlIG9mIGEgY3VycmVudCBIVE1MIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0aXRsZVNlcnZpY2U6IFRpdGxlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdG8gZGlzcGF0Y2ggTWF0ZXJpYWwgRGVzaWduIHNuYWNrIGJhciBtZXNzYWdlcy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBNYXRTbmFja0JhcjtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRvIHNob3cgY29uaXJtIGFuZCBwcm9tcHQgZGlhbG9ncy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogVmREaWFsb2dTZXJ2aWNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBsb2NhdGlvbjogTG9jYXRpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzZXQgdXJsIGhhc2hcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0VXJsSGFzaDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1hdEV4cGFuc2lvblBhbmVsIHJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGRyZW4oTWF0RXhwYW5zaW9uUGFuZWwsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG5cdHByb3RlY3RlZCBtYXRFeHBhbnNpb25QYW5lbEVsZW1lbnRRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcblx0LyoqXHJcblx0ICogTWF0RXhwYW5zaW9uUGFuZWwgcmVmXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZHJlbihNYXRFeHBhbnNpb25QYW5lbClcclxuXHRwcm90ZWN0ZWQgbWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxNYXRFeHBhbnNpb25QYW5lbD47XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0dGhpcy50aXRsZVNlcnZpY2UgPSB0aGlzLmdldFNlcnZpY2UoVGl0bGUpO1xyXG5cdFx0dGhpcy5kaWFsb2dTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKFZkRGlhbG9nU2VydmljZSk7XHJcblx0XHR0aGlzLm1lZGlhID0gdGhpcy5nZXRTZXJ2aWNlKFZkTWVkaWFTZXJ2aWNlKTtcclxuXHRcdHRoaXMuc25hY2tCYXJTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKE1hdFNuYWNrQmFyKTtcclxuXHRcdHRoaXMucm91dGVyID0gdGhpcy5nZXRTZXJ2aWNlKFJvdXRlcik7XHJcblx0XHR0aGlzLmFwcFNldHRpbmcgPSB0aGlzLmdldFNlcnZpY2UoQXBwU2V0dGluZyk7XHJcblx0XHR0aGlzLmxvY2F0aW9uID0gdGhpcy5nZXRTZXJ2aWNlKExvY2F0aW9uKTtcclxuXHJcblx0XHRDb250ZXh0SGVscGVyLmFjdGl2YXRlZFJvdXRlID0gcm91dGU7XHJcblx0XHRDb250ZXh0SGVscGVyLnJvdXRlciA9IHRoaXMucm91dGVyO1xyXG5cdFx0Q29udGV4dEhlbHBlci5hcHBTZXR0aW5nID0gdGhpcy5hcHBTZXR0aW5nO1xyXG5cclxuXHRcdHRoaXMuaW5pdEVkaXRvcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIFxyXG5cdCAqIG9mIGEgZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEdldCBtZW51IGl0ZW1zIGZyb20gcm91dGUgc25hcHNob3QgKi9cclxuXHRcdHZhciBtYWluUm91dGUgPSB0aGlzLmdldE1haW5Sb3V0ZSh0aGlzLnJvdXRlLnNuYXBzaG90KTtcclxuXHRcdGlmIChtYWluUm91dGUpIHtcclxuXHRcdFx0dGhpcy5tZW51ID0gbWFpblJvdXRlLmRhdGEubWVudTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgcHJvamVjdCBuYW1lICYgZGVidWcgbW9kZSAqL1xyXG5cdFx0dGhpcy5wcm9qZWN0TmFtZSA9IHRoaXMuYXBwU2V0dGluZy5wcm9qZWN0TmFtZTtcclxuXHRcdHRoaXMuZGVidWcgPSB0aGlzLmFwcFNldHRpbmcuZGVidWc7XHJcblxyXG5cdFx0LyogR2V0IHRoZSBoYXNoIGZyb20gdGhlIHVybCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5mcmFnbWVudC5zdWJzY3JpYmUoKGZyYWdtZW50OiBzdHJpbmcpID0+IHRoaXMudXJsSGFzaCA9IGZyYWdtZW50KTtcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIENoZWNrIHBlcm1pc3Npb25zXHJcblx0XHQgKi9cclxuXHRcdGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xyXG5cdFx0XHR0aGlzLnJvdXRlLnBhcmVudC51cmwuc3Vic2NyaWJlKCh1cmw6IFVybFNlZ21lbnRbXSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID0gdXJsLmxlbmd0aCA/IHVybFswXS5wYXRoLnJlcGxhY2UoLyguKilzJC8sICckMScpLnJlcGxhY2UoL14uLywgKHVybFswXS5wYXRoWzBdIHx8ICcnKS50b1VwcGVyQ2FzZSgpKSA6ICcnO1xyXG5cdFx0XHRcdHRoaXMuY2FuQ3JlYXRlID0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZCgnQ3JlYXRlJywgYENyZWF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgPSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKCdVcGRhdGUnLCBgVXBkYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IGN1cnJlbnQgcm91dGUgKi9cclxuXHRcdHRoaXMuY3VycmVudFJvdXRlID0gYnRvYSh0aGlzLnJvdXRlci51cmwpO1xyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICogU2V0IHBhZ2UgdGl0bGVcclxuXHRcdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0aWYgKHggaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcblx0XHRcdFx0dGhpcy5zZXRUaXRsZXMoKTtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRSb3V0ZSA9IGJ0b2EoeC51cmwpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHQvKiBCcm9hZGNhc3QgdG8gYWxsIGxpc3RlbmVyIG9ic2VydmFibGVzIHdoZW4gbG9hZGluZyB0aGUgcGFnZSAqL1xyXG5cdFx0dGhpcy5tZWRpYS5icm9hZGNhc3QoKTtcclxuXHJcblx0XHQvKiBTZXQgdGl0bGVzICovXHJcblx0XHR0aGlzLnNldFRpdGxlcygpO1xyXG5cclxuXHRcdC8qIFxyXG5cdFx0ICogRm9yY2UgYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSBzaW5jZSBjaGFuZ2UgZGV0ZWN0aW9ucyBcclxuXHRcdCAqIGhhdmUgZmluaXNoZWQgd2hlbiBgbmdBZnRlclZpZXdJbml0YCBpcyBleGVjdXRlZFxyXG5cdFx0ICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHQvKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzICovXHJcblx0XHR0aGlzLm9uRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWZyZXNocyB0aGlzIHBhZ2UvY29tcG9uZW50XHJcblx0ICovXHJcblx0cHVibGljIHJlbG9hZFBhZ2UoKTogdm9pZCB7XHJcblx0XHRsZXQgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7IHJlcGxhY2VVcmw6IHRydWUgfSkudGhlbigoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGN1cnJlbnRVcmwsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKCk6IHZvaWQge1xyXG5cdFx0LyogTGlzdGVuIGZvciBleHBhbnNpb24gcGFuZWwgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8uY2hhbmdlcy5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuXHRcdFx0LyogRmluZCB0aGUgaW5kZXggb2YgdGhlIHBhbmVsIHdpdGggdGhlIHNwZWNpZmllZCBlbGVtZW50IElEICovXHJcblx0XHRcdHRoaXMudXJsSGFzaD8uc3BsaXQoJy4nKVxyXG5cdFx0XHRcdD8ucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlLCBpbmRleCkgPT4gYWNjdW11bGF0b3IuY29uY2F0KChpbmRleCA+IDAgPyAoYWNjdW11bGF0b3Iuc2xpY2UoLTEpLmpvaW4oJy4nKSArICcuJykgOiAnJykgKyBjdXJyZW50VmFsdWUpLCBbXSlcclxuXHRcdFx0XHQ/LmZvckVhY2goKGhhc2g6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0dmFyIGV4cGFuc2lvblBhbmVsSW5kZXggPSB0aGlzLm1hdEV4cGFuc2lvblBhbmVsRWxlbWVudFF1ZXJ5TGlzdD8udG9BcnJheSgpPy5maW5kSW5kZXgoeCA9PiB4Lm5hdGl2ZUVsZW1lbnQuaWQgPT0gaGFzaCk7XHJcblx0XHRcdFx0XHRpZiAoZXhwYW5zaW9uUGFuZWxJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LnRvQXJyYXkoKVtleHBhbnNpb25QYW5lbEluZGV4XT8ub3BlbigpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdC8qIERldGVjdCBjaGFuZ2VzIGZvciBvcGVuZWQgcGFuZWxzICovXHJcblx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LmZvckVhY2goeSA9PiB7XHJcblx0XHRcdFx0eS5vcGVuZWQuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0VXJsSGFzaCkge1xyXG5cdFx0XHRcdFx0XHQvKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IG9wZW5lZCBwYW5lbCAqL1xyXG5cdFx0XHRcdFx0XHR2YXIgY3VycmVudFBhbmVsSWQgPSB5Wydfdmlld0NvbnRhaW5lclJlZiddPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5pZDtcclxuXHJcblx0XHRcdFx0XHRcdC8qIElmIHRoZSBwYW5lbCBJRCBpcyBzZXQsIHNldCBpdCBhcyB1cmwgc2VnbWVudCAoaGFzaCkgKi9cclxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRQYW5lbElkKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgZnJhZ21lbnQ6IGN1cnJlbnRQYW5lbElkLCByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBPdGhlcndpc2UgcmVtb3ZlIHRoZSBzZWdtZW50IGZyb20gdGhlIHVybCAqL1xyXG5cdFx0XHRcdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIE5vdGlmeSBleHBhbnNpb24gcGFuZWwgbGlzdCBjaGFuZ2VzICovXHJcblx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Lm5vdGlmeU9uQ2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0cmlldmVzIGFuIGluc3RhbmNlIGZyb20gdGhlIGluamVjdG9yIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB0b2tlbi5cclxuXHQgKiBJZiBub3QgZm91bmQ6XHJcblx0ICogLSBUaHJvd3Mge0BsaW5rIE5vUHJvdmlkZXJFcnJvcn0gaWYgbm8gYG5vdEZvdW5kVmFsdWVgIHRoYXQgaXMgbm90IGVxdWFsIHRvXHJcblx0ICogSW5qZWN0b3IuVEhST1dfSUZfTk9UX0ZPVU5EIGlzIGdpdmVuXHJcblx0ICogLSBSZXR1cm5zIHRoZSBgbm90Rm91bmRWYWx1ZWAgb3RoZXJ3aXNlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldFNlcnZpY2U8VD4odG9rZW46IFR5cGU8VD4pOiBUIHtcclxuXHRcdHJldHVybiBTZXJ2aWNlTG9jYXRvci5nZXRTZXJ2aWNlKHRva2VuKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgYmFzZSByb3V0ZVxyXG5cdCAqIEBwYXJhbSBzbmFwc2hvdCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0TWFpblJvdXRlKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XHJcblx0XHRpZiAoc25hcHNob3QgJiYgIXNuYXBzaG90LmRhdGEubWVudSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRNYWluUm91dGUoc25hcHNob3QucGFyZW50KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc25hcHNob3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHRcdCAqIFNob3dzIGEgY29uZmlybSBkaWFsb2cgdG8gZGVsZXRlIGFuIGl0ZW0gXHJcblx0XHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd0RlbGV0ZUl0ZW1EaWFsb2coKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRtZXNzYWdlOiAkbG9jYWxpemVgOkBAZGlhbG9nLm1lc3NhZ2UuZGVsZXRlLm9uZTpBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT9gLFxyXG5cdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5kZWxldGU6Q29uZmlybSBEZWxldGVgLFxyXG5cdFx0XHRjYW5jZWxCdXR0b246ICRsb2NhbGl6ZWA6QEBjYW5jZWw6Q2FuY2VsYCxcclxuXHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAZGVsZXRlOkRlbGV0ZWAsXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBjb25maXJtIGRpYWxvZyB0byBkZWxldGUgbXVsdGlwbGUgaXRlbXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd0RlbGV0ZUl0ZW1zRGlhbG9nKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5Db25maXJtKHtcclxuXHRcdFx0bWVzc2FnZTogJGxvY2FsaXplYDpAQGRpYWxvZy5tZXNzYWdlLmRlbGV0ZS5saXN0OkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGl0ZW1zP2AsXHJcblx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGlhbG9nLnRpdGxlLmRlbGV0ZTpDb25maXJtIERlbGV0ZWAsXHJcblx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIGNvbmZpcm0gZGlhbG9nIHRvIHNlbmQgc29tZSBkYXRhXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gZGlzcGxheVxyXG5cdCAqIEBwYXJhbSBvYnNlcnZhYmUgVGhlIG9ic2VydmFibGUgaW5zdGFuY2VcclxuXHQgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrIEEgc3VjY2VzcyBjYWxsYmFja1xyXG5cdCAqIEBwYXJhbSBlcnJvckNhbGxiYWNrIEFuIGVycm9yIGNhbGxiYWNrXHJcblx0ICovXHJcblx0cHVibGljIHNob3dDb25maXJtYXRpb25EaWFsb2cobWVzc2FnZTogc3RyaW5nLCBvYnNlcnZhYmU6IE9ic2VydmFibGU8YW55Piwgc3VjY2Vzc0NhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGwsIGVycm9yQ2FsbGJhY2s6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG5cdFx0dGhpcy5kaWFsb2dTZXJ2aWNlXHJcblx0XHRcdC5vcGVuQ29uZmlybSh7XHJcblx0XHRcdFx0bWVzc2FnZTogbWVzc2FnZSxcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5jb25maXJtOkNvbmZpcm1gLFxyXG5cdFx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRcdGFjY2VwdEJ1dHRvbjogJGxvY2FsaXplYDpAQG9rOk9rYCxcclxuXHRcdFx0fSlcclxuXHRcdFx0LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRvYnNlcnZhYmUuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNob3dNZXNzYWdlKCRsb2NhbGl6ZWA6QEBzbmFja2Jhci5zZW5kLnN1Y2Nlc3M6RGF0YSBzZW50IHN1Y2Nlc3NmdWxseS5gKTtcclxuXHJcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzQ2FsbGJhY2soeCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sIGVycm9ycyA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKGVycm9yQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRlcnJvckNhbGxiYWNrKGVycm9ycyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIG1lc3NhZ2VcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5XHJcblx0ICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd01lc3NhZ2UobWVzc2FnZT86IHN0cmluZywgdHlwZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlVHlwZS5TdWNjZXNzKTogdm9pZCB7XHJcblx0XHR2YXIgc25hY2tCYXJDbGFzcyA9ICdwcmltYXJ5JztcclxuXHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRjYXNlIE1lc3NhZ2VUeXBlLlN1Y2Nlc3M6XHJcblx0XHRcdFx0c25hY2tCYXJDbGFzcyA9ICdwcmltYXJ5JztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgTWVzc2FnZVR5cGUuV2FybmluZzpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ3dhcm4nO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSBNZXNzYWdlVHlwZS5FcnJvcjpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ2Vycm9yJztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihtZXNzYWdlIHx8ICRsb2NhbGl6ZWA6QEBzbmFja2Jhci5zZW5kLnN1Y2Nlc3M6RGF0YSBzZW50IHN1Y2Nlc3NmdWxseS5gLCBudWxsLCB7XHJcblx0XHRcdGR1cmF0aW9uOiAzMDAwLFxyXG5cdFx0XHRwYW5lbENsYXNzOiBbc25hY2tCYXJDbGFzc11cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5pdG9hbGl6ZXMgdGhlIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGluaXRFZGl0b3IoZWRpdG9yQ29uZmlnOiBhbnkgPSB7fSkge1xyXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLmVkaXRvckNvbmZpZywge1xyXG5cdFx0XHRzdWZmaXg6ICcubWluJyxcclxuXHRcdFx0c2tpbjogZmFsc2UsXHJcblx0XHRcdGhlaWdodDogJzE3MHB4JyxcclxuXHRcdFx0Y29udGVudF9jc3M6IGZhbHNlLFxyXG5cdFx0XHRwbHVnaW5zOiB0aGlzLmVkaXRvclBsdWdpbnMsXHJcblx0XHRcdHRvb2xiYXI6IHRoaXMuZWRpdG9yVG9vbGJhcixcclxuXHRcdFx0cGFzdGVfYXNfdGV4dDogdHJ1ZSxcclxuXHRcdFx0bGFuZ3VhZ2U6ICdkZScsXHJcblx0XHRcdGxhbmd1YWdlX3VybDogJy9hc3NldHMvdGlueW1jZS9sYW5ncy9kZS5qcycsXHJcblx0XHRcdGRvY3VtZW50X2Jhc2VfdXJsOiBgJHt0aGlzLmFwcFNldHRpbmcuYXBpVXJsfWZpbGUvYCxcclxuXHRcdFx0YXV0b21hdGljX3VwbG9hZHM6IHRydWUsXHJcblx0XHRcdHJlbGF0aXZlX3VybHM6IHRydWUsXHJcblx0XHRcdGNvbnZlcnRfdXJsczogZmFsc2UsXHJcblx0XHRcdGV4dGVuZGVkX3ZhbGlkX2VsZW1lbnRzOiAnc3BhbltpZHxjbGFzc3xzdHlsZV0sK0BbZGF0YS1vcHRpb25zXScsXHJcblx0XHRcdGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOiB0cnVlXHJcblx0XHR9LCBlZGl0b3JDb25maWcpO1xyXG5cclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgc3VidGl0bGUgZnJvbSBjdXJyZW4gbWVudVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXRUaXRsZXMoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tZW51KSB7XHJcblx0XHRcdHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMubWVudS50aXRsZSk7XHJcblx0XHRcdHRoaXMudGl0bGUgPSB0aGlzLnRpdGxlU2VydmljZS5nZXRUaXRsZSgpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMubWVudS5pdGVtcykge1xyXG5cdFx0XHRcdHZhciBzdWJtZW51ID0gdGhpcy5tZW51Lml0ZW1zLmZpbHRlcih4ID0+IHgucGF0aCA9PSB0aGlzLnJvdXRlci51cmwpWzBdO1xyXG5cdFx0XHRcdGlmIChzdWJtZW51KSB7XHJcblx0XHRcdFx0XHR0aGlzLnN1YnRpdGxlID0gc3VibWVudS50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcnJheSBvZiBjb21tYW5kcyBhbmQgYSBzdGFydGluZyBwb2ludC5cclxuXHQgKiBAcGFyYW0gY29tbWFuZHMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG5hdmlnYXRlKGNvbW1hbmRzOiBhbnlbXSwgcXVlcnlQYXJhbXM/OiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKGNvbW1hbmRzLCB7IHF1ZXJ5UGFyYW1zOiBPYmplY3QuYXNzaWduKHsgcmV0dXJuVXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9LCBxdWVyeVBhcmFtcyB8fCB7fSksIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwSGVhZGVyc1xyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBib2R5XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHRvSHR0cEhlYWRlcnMoYm9keTogT2JqZWN0KTogSHR0cEhlYWRlcnMge1xyXG5cdFx0aWYgKCFib2R5KSB7XHJcblx0XHRcdHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYm9keSlcclxuXHRcdFx0LmZpbHRlcihrZXkgPT4gYm9keVtrZXldICE9IG51bGwgJiYgYm9keVtrZXldICE9ICcnKVxyXG5cdFx0XHQucmVkdWNlKChwLCBrZXkpID0+IHAuc2V0KGtleSwgYm9keVtrZXldKSwgbmV3IEh0dHBIZWFkZXJzKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGFyc2VzIGh0dHAgcmVzcG9uc2UgZXJyb3JzXHJcblx0ICogQHBhcmFtIGVycm9ycyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgcGFyc2VFcnJvcnMoZXJyb3JzOiBPYmplY3QpOiB2b2lkIHtcclxuXHRcdHRoaXMuZXJyb3JzID0gW107XHJcblx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cclxuXHRcdGlmIChlcnJvcnMpIHtcclxuXHRcdFx0T2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKGVsID0+IHtcclxuXHRcdFx0XHRsZXQgZXJyb3IgPSBlcnJvcnNbZWxdO1xyXG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGVycm9yKSkge1xyXG5cdFx0XHRcdFx0ZXJyb3IuZm9yRWFjaChlcnIgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmVycm9ycy5wdXNoKGVycik7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBlcnJvciA9PT0gXCJzdHJpbmdcIikge1xyXG5cdFx0XHRcdFx0dGhpcy5lcnJvcnMucHVzaChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZSBIdHRwIG9wZXJhdGlvbiB0aGF0IGZhaWxlZC5cclxuXHQgKiBMZXQgdGhlIGFwcCBjb250aW51ZS5cclxuXHQgKiBAcGFyYW0gb3BlcmF0aW9uIC0gbmFtZSBvZiB0aGUgb3BlcmF0aW9uIHRoYXQgZmFpbGVkXHJcblx0ICogQHBhcmFtIHJlc3VsdCAtIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBhcyB0aGUgb2JzZXJ2YWJsZSByZXN1bHRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaGFuZGxlRXJyb3I8VD4ob3BlcmF0aW9uID0gJ29wZXJhdGlvbicsIHJlc3VsdD86IFQpIHtcclxuXHRcdHJldHVybiAoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8VD4gPT4ge1xyXG5cclxuXHRcdFx0LyogUGFyc2UgdGhlIGVycm9yIG1lc3NhZ2VzICovXHJcblx0XHRcdHRoaXMucGFyc2VFcnJvcnMoZXJyb3IpO1xyXG5cclxuXHRcdFx0LyogTG9nIHRvIGNvbnNvbGUgKi9cclxuXHRcdFx0dGhpcy53YXJuKGAke29wZXJhdGlvbn0gZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XHJcblxyXG5cdFx0XHQvKiBMZXQgdGhlIGFwcCBrZWVwIHJ1bm5pbmcgYnkgcmV0dXJuaW5nIGFuIGVtcHR5IHJlc3VsdCAqL1xyXG5cdFx0XHRyZXR1cm4gb2YocmVzdWx0IGFzIFQpO1xyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvZyB0byBjb25zb2xlXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgXHJcblx0ICogQHBhcmFtIG9wdGlvbmFsUGFyYW1zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBsb2cobWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuXHRcdGlmICh0aGlzLmRlYnVnKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvZyB0byBjb25zb2xlXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgXHJcblx0ICogQHBhcmFtIG9wdGlvbmFsUGFyYW1zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcblx0XHRpZiAodGhpcy5kZWJ1Zykge1xyXG5cdFx0XHRjb25zb2xlLndhcm4obWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2xlYW5zIHRoZSBvYmplY3RzXHJcblx0ICogUmVtb3ZlcyBlbXB0eSBwcm9wZXJ0aWVzXHJcblx0ICogQHBhcmFtIG9iaiBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2xlYW4ob2JqOiBhbnkpOiBhbnkge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Zm9yICh2YXIgcHJvcE5hbWUgaW4gb2JqKSB7XHJcblx0XHRcdFx0aWYgKG9ialtwcm9wTmFtZV0gPT09IG51bGwgfHwgb2JqW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkIHx8IG9ialtwcm9wTmFtZV0gPT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBvYmpbcHJvcE5hbWVdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cclxuXHRcdHJldHVybiBvYmo7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYW5pdGl6ZXMgdGhlIHNwZWNpZmllZCBvYmplY3RcclxuXHQgKiBAcGFyYW0gb2JqIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzYW5pdGl6ZU9iamVjdChvYmo6IGFueSwgLi4uaWdub3JlOiBzdHJpbmdbXSk6IGFueSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMob2JqKVxyXG5cdFx0XHQuZmlsdGVyKHggPT4gb2JqW3hdKVxyXG5cdFx0XHQuZmlsdGVyKHggPT4gIShpZ25vcmUgfHwgW10pLm1hcCh4ID0+IHgudG9Mb3dlckNhc2UoKSkuaW5jbHVkZXMoeC50b0xvd2VyQ2FzZSgpKSlcclxuXHRcdFx0LnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcclxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IGlzTmFOKCtvYmpba2V5XSkgPyBvYmpba2V5XSA6ICtvYmpba2V5XTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdFx0XHR9LCB7fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgc2VsZWNldGVkIGFueSB0ZXh0IGluIHRoZSBkb2N1bWVudFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpc1RleHRTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IHdpbmRvdz8uZ2V0U2VsZWN0aW9uKCk/LnRvU3RyaW5nKCk/Lmxlbmd0aCA+IDBcclxufSJdfQ==
|