@messaia/cdk 17.1.0-rc15 → 17.1.0-rc16
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/esm2022/lib/form-validators/abstract/typed-form.mjs +10 -1
- package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +25 -7
- package/esm2022/lib/form-validators/const/app-validators.const.mjs +2 -2
- package/esm2022/lib/form-validators/const/app.const.mjs +49 -1
- package/esm2022/lib/form-validators/const/config-names.const.mjs +25 -1
- package/esm2022/lib/form-validators/const/config-required-fields.const.mjs +26 -2
- package/esm2022/lib/form-validators/const/events.const.mjs +40 -1
- package/esm2022/lib/form-validators/const/html-elements.const.mjs +19 -1
- package/esm2022/lib/form-validators/const/validator.const.mjs +22 -1
- package/esm2022/lib/form-validators/core/{validator.static.mjs → annotation-types.mjs} +1 -1
- package/esm2022/lib/form-validators/core/default-container.mjs +493 -0
- package/esm2022/lib/form-validators/decorators/allOf.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/alpha.decorator.mjs +3 -3
- package/esm2022/lib/form-validators/decorators/alphaNumeric.decorator.mjs +3 -3
- package/esm2022/lib/form-validators/decorators/and.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/ascii.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/async.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/base-decorator.function.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/choice.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/compare.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/compose.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/contains.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/credit-card.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/cusip.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/custom.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/dataUri.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/date.decorator.mjs +3 -3
- package/esm2022/lib/form-validators/decorators/different.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/digit.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/email.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/endsWith.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/even.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/extension.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/factor.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/file.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/fileSize.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/greater-than.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/grid.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/hexColor.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/image.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/json.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/latLong.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/latitude.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/leapYear.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/less-than.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/longitude.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/lowercase.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/mac.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/mask.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/maxDate.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/maxLength.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/maxNumber.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/maxTime.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/minDate.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/minLength.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/minNumber.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/minTime.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/model.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/noneOf.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/not.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/notEmpty.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/numeric.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/odd.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/oneOf.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/or.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/password.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/pattern.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/port.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/primeNumber.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/prop-array.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/prop-object.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/range.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/required.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/requiredTrue.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/rule.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/escape.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/toString.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/trim.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/startsWith.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/time.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/unique.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/uppercase.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/decorators/url.decorator.mjs +2 -2
- package/esm2022/lib/form-validators/directives/base-directive.mjs +34 -3
- package/esm2022/lib/form-validators/directives/control-host.directive.mjs +18 -1
- package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +15 -1
- package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +108 -14
- package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +2 -4
- package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +17 -7
- package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +22 -8
- package/esm2022/lib/form-validators/domain/disable-provider.mjs +107 -4
- package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +67 -7
- package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +4 -3
- package/esm2022/lib/form-validators/domain/form-data.mjs +53 -7
- package/esm2022/lib/form-validators/models/control-info.mjs +2 -0
- package/esm2022/lib/form-validators/models/data-sanitizer.mjs +2 -0
- package/esm2022/lib/form-validators/models/decorator-configuration.mjs +2 -0
- package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +35 -13
- package/esm2022/lib/form-validators/models/instance-container.mjs +2 -0
- package/esm2022/lib/form-validators/models/password-validation.model.mjs +1 -1
- package/esm2022/lib/form-validators/models/prop-validation-config.mjs +1 -1
- package/esm2022/lib/form-validators/models/property-info.mjs +2 -0
- package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/alpha.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/ascii.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/date.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/digit.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/email.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/latitude.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/less-than.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/longitude.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/mac.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/minDate.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/minTime.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +2 -2
- package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +2 -2
- package/esm2022/lib/form-validators/services/base-form-builder.mjs +105 -6
- package/esm2022/lib/form-validators/services/form-control.mjs +2 -2
- package/esm2022/lib/form-validators/services/reactive-form.module.mjs +2 -2
- package/esm2022/lib/form-validators/services/rx-form-builder.mjs +479 -39
- package/esm2022/lib/form-validators/services/rx-form-group.mjs +197 -52
- package/esm2022/lib/form-validators/util/date-checker.function.mjs +2 -2
- package/esm2022/lib/form-validators/util/instance-provider.function.mjs +2 -2
- package/esm2022/lib/form-validators/util/relational-checker.function.mjs +2 -2
- package/esm2022/lib/form-validators/util/time-checker.function.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/allOf-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/alpha-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/and-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/ascii-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/choice-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/compare-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/compose-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/contains-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/cusip-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/custom-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/date-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/different-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/digit-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/email-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/even-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/extension-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/factor-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/file-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/grid-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/iban-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/image-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/ip-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/json-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/latLong-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/latitude-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/less-than-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/longitude-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/mac-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/mask-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/minDate-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/minLength-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/minTime-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/not-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/numeric-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/odd-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/or-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/password-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/pattern-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/port-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/range-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/required-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/time-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-extension/unique-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +2 -2
- package/esm2022/lib/form-validators/validators-extension/url-validator.extension.mjs +4 -4
- package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +28 -1
- package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +17 -1
- package/fesm2022/messaia-cdk.mjs +1777 -203
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/form-validators/abstract/typed-form.d.ts +9 -0
- package/lib/form-validators/algorithm/luhn-algorithm.d.ts +7 -0
- package/lib/form-validators/const/app.const.d.ts +48 -0
- package/lib/form-validators/const/config-names.const.d.ts +24 -0
- package/lib/form-validators/const/config-required-fields.const.d.ts +3 -0
- package/lib/form-validators/const/events.const.d.ts +39 -0
- package/lib/form-validators/const/html-elements.const.d.ts +18 -0
- package/lib/form-validators/const/validator.const.d.ts +21 -0
- package/lib/form-validators/core/default-container.d.ts +153 -0
- package/lib/form-validators/directives/base-directive.d.ts +17 -0
- package/lib/form-validators/directives/control-host.directive.d.ts +17 -0
- package/lib/form-validators/directives/html-control-template.directive.d.ts +13 -0
- package/lib/form-validators/directives/rx-form.directive.d.ts +34 -3
- package/lib/form-validators/directives/template-validations/async-validation.directive.d.ts +1 -3
- package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +15 -5
- package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +19 -8
- package/lib/form-validators/domain/disable-provider.d.ts +54 -0
- package/lib/form-validators/domain/element-processor/decimal.provider.d.ts +36 -1
- package/lib/form-validators/domain/form-data.d.ts +21 -0
- package/lib/form-validators/models/control-info.d.ts +25 -0
- package/lib/form-validators/models/data-sanitizer.d.ts +13 -0
- package/lib/form-validators/models/decorator-configuration.d.ts +37 -0
- package/lib/form-validators/models/form-builder-configuration.d.ts +33 -0
- package/lib/form-validators/models/instance-container.d.ts +47 -0
- package/lib/form-validators/models/password-validation.model.d.ts +54 -0
- package/lib/form-validators/models/prop-validation-config.d.ts +156 -0
- package/lib/form-validators/models/property-info.d.ts +49 -0
- package/lib/form-validators/services/base-form-builder.d.ts +59 -2
- package/lib/form-validators/services/form-control.d.ts +1 -1
- package/lib/form-validators/services/rx-form-builder.d.ts +197 -1
- package/lib/form-validators/services/rx-form-group.d.ts +121 -0
- package/lib/form-validators/util/instance-provider.function.d.ts +1 -1
- package/lib/form-validators/validators-extension/allOf-validator.extension.d.ts +1 -1
- package/lib/form-validators/validators-extension/alpha-validator.extension.d.ts +1 -1
- package/lib/form-validators/validators-extension/iban-validator.extension.d.ts +1 -1
- package/lib/form-validators/validators-extension/maxLength-validator.extension.d.ts +1 -1
- package/lib/form-validators/validators-function/alpha-validation.function.d.ts +7 -0
- package/lib/form-validators/validators-function/regex-validation.function.d.ts +16 -0
- package/package.json +1 -1
- package/esm2022/lib/form-validators/core/defaultContainer.mjs +0 -257
- package/esm2022/lib/form-validators/core/validator.interface.mjs +0 -2
- package/lib/form-validators/core/defaultContainer.d.ts +0 -18
- package/lib/form-validators/core/validator.interface.d.ts +0 -62
- /package/lib/form-validators/core/{validator.static.d.ts → annotation-types.d.ts} +0 -0
|
@@ -1,95 +1,198 @@
|
|
|
1
1
|
import { MODEL_INSTANCE, RXCODE } from "../const/app.const";
|
|
2
2
|
import { OBJECT_PROPERTY } from "../const/validator.const";
|
|
3
|
-
import { defaultContainer } from "../core/
|
|
3
|
+
import { defaultContainer } from "../core/default-container";
|
|
4
4
|
import { ApplicationUtil } from "../util/app-util";
|
|
5
5
|
import { instanceProvider } from "../util/instance-provider.function";
|
|
6
|
+
/**
|
|
7
|
+
* Provides functionality for disabling form controls based on decorator configuration.
|
|
8
|
+
*/
|
|
6
9
|
export class DisableProvider {
|
|
7
10
|
decoratorType;
|
|
8
11
|
entityObject;
|
|
12
|
+
/**
|
|
13
|
+
* Initializes a new instance of the DisableProvider class.
|
|
14
|
+
* @param decoratorType The type of decorator.
|
|
15
|
+
* @param entityObject The entity object associated with the decorator.
|
|
16
|
+
*/
|
|
9
17
|
constructor(decoratorType, entityObject) {
|
|
10
18
|
this.decoratorType = decoratorType;
|
|
11
19
|
this.entityObject = entityObject;
|
|
12
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Gets the name of the form group associated with the provided form control.
|
|
23
|
+
* @param currentFormGroup The current form group.
|
|
24
|
+
* @returns The name of the form group.
|
|
25
|
+
*/
|
|
13
26
|
getFormGroupName(currentFormGroup) {
|
|
27
|
+
/* Initialize keyName as an empty string */
|
|
14
28
|
let keyName = '';
|
|
15
|
-
if
|
|
16
|
-
|
|
29
|
+
/* Check if the currentFormGroup has a parent */
|
|
30
|
+
if (currentFormGroup.parent) {
|
|
31
|
+
/* Iterate over the control names of the parent FormGroup */
|
|
32
|
+
for (var controlName of Object.keys(currentFormGroup.parent.controls)) {
|
|
33
|
+
/* Check if the current control is the same as the currentFormGroup */
|
|
17
34
|
if (currentFormGroup.parent.controls[controlName] == currentFormGroup) {
|
|
35
|
+
/* If it matches, assign the controlName to keyName and exit the loop */
|
|
18
36
|
keyName = controlName;
|
|
19
37
|
break;
|
|
20
38
|
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/* Return the keyName */
|
|
21
42
|
return keyName;
|
|
22
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Processes disabling based on zero arguments.
|
|
46
|
+
* @param control The form control.
|
|
47
|
+
* @param columnName The name of the column.
|
|
48
|
+
* @returns An array of disabled columns.
|
|
49
|
+
*/
|
|
23
50
|
zeroArgumentProcess(control, columnName) {
|
|
51
|
+
/* Initialize disabledColumns array */
|
|
24
52
|
let disabledColumns = [];
|
|
53
|
+
/* Add disabled columns from the parent FormGroup */
|
|
25
54
|
this.getDisabledColumns(control.parent, `${columnName}${RXCODE}0`, false).forEach(t => disabledColumns.push(t));
|
|
55
|
+
/* Get the top control path */
|
|
26
56
|
let path = this.topControlPath(control, columnName);
|
|
57
|
+
/* Split the path into segments */
|
|
27
58
|
let splitPath = path.split(".");
|
|
59
|
+
/* Check if the path has multiple segments */
|
|
28
60
|
if (splitPath.length > 1) {
|
|
61
|
+
/* Get the root form group */
|
|
29
62
|
let rootFormGroup = ApplicationUtil.getRootFormGroup(control);
|
|
63
|
+
/* Add disabled columns from the root form group */
|
|
30
64
|
this.getDisabledColumns(rootFormGroup, `${path}${RXCODE}0`, true).forEach(t => disabledColumns.push(t));
|
|
65
|
+
/* Initialize controlPath */
|
|
31
66
|
let controlPath = '';
|
|
67
|
+
/* Iterate through the segments of the path */
|
|
32
68
|
for (var i = 0; i < splitPath.length - 2; i++) {
|
|
33
69
|
let controlName = splitPath[i];
|
|
70
|
+
/* Update controlPath */
|
|
34
71
|
controlPath = `${path.replace(`${controlName}.`, '')}${RXCODE}-0`;
|
|
72
|
+
/* Check if the control exists in the root form group */
|
|
35
73
|
if (rootFormGroup.controls[controlName]) {
|
|
74
|
+
/* Add disabled columns from the control */
|
|
36
75
|
this.getDisabledColumns(rootFormGroup.controls[controlName], controlPath, true, controlName).forEach(t => disabledColumns.push(t));
|
|
76
|
+
/* Update rootFormGroup */
|
|
37
77
|
rootFormGroup = rootFormGroup.controls[controlName];
|
|
38
78
|
}
|
|
39
79
|
}
|
|
40
80
|
}
|
|
81
|
+
/* Return the disabledColumns array */
|
|
41
82
|
return disabledColumns;
|
|
42
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Gets the disabled columns for the provided form group.
|
|
86
|
+
* @param formGroup The form group.
|
|
87
|
+
* @param columnName The name of the column.
|
|
88
|
+
* @param isRoot Indicates whether the form group is the root form group.
|
|
89
|
+
* @param pathName The path name.
|
|
90
|
+
* @returns An array of disabled columns.
|
|
91
|
+
*/
|
|
43
92
|
getDisabledColumns(formGroup, columnName, isRoot, pathName = "") {
|
|
93
|
+
/* Check if the formGroup has a MODEL_INSTANCE */
|
|
44
94
|
if (formGroup[MODEL_INSTANCE]) {
|
|
95
|
+
/* Get the instance container using instanceProvider */
|
|
45
96
|
let instanceContainer = instanceProvider(formGroup[MODEL_INSTANCE].constructor, this.entityObject);
|
|
97
|
+
/* Return the result of getChangeDetectionColumns */
|
|
46
98
|
return this.getChangeDetectionColumns(instanceContainer, columnName, isRoot, pathName);
|
|
47
99
|
}
|
|
100
|
+
/* If no MODEL_INSTANCE, return an empty array */
|
|
48
101
|
return [];
|
|
49
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Gets the change detection columns for the provided instance container.
|
|
105
|
+
* @param instanceContainer The instance container.
|
|
106
|
+
* @param columnName The name of the column.
|
|
107
|
+
* @param isRoot Indicates whether the form group is the root form group.
|
|
108
|
+
* @param pathName The path name.
|
|
109
|
+
* @returns An array of change detection columns.
|
|
110
|
+
*/
|
|
50
111
|
getChangeDetectionColumns(instanceContainer, columnName, isRoot, pathName = "") {
|
|
112
|
+
/* Initialize an array to store conditional disable controls */
|
|
51
113
|
let conditionalDisableControls = [];
|
|
114
|
+
/* Retrieve columns from instanceContainer based on decoratorType and columnName */
|
|
52
115
|
let columns = instanceContainer.nonValidationDecorators[this.decoratorType].changeDetection[columnName];
|
|
116
|
+
/* Check if columns exist */
|
|
53
117
|
if (columns) {
|
|
118
|
+
/* Iterate through columns */
|
|
54
119
|
columns.forEach((t) => {
|
|
120
|
+
/* Push control path, conditional expression, and isRoot status to conditionalDisableControls */
|
|
55
121
|
conditionalDisableControls.push({ controlPath: pathName ? `${pathName}.${t}` : t, conditionalExpression: instanceContainer.nonValidationDecorators[this.decoratorType].conditionalExpressions[t], isRoot: isRoot });
|
|
56
122
|
});
|
|
57
123
|
}
|
|
124
|
+
/* Return the array of conditional disable controls */
|
|
58
125
|
return conditionalDisableControls;
|
|
59
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Gets the top control path based on the form control and column name.
|
|
129
|
+
* @param control The form control.
|
|
130
|
+
* @param columnName The name of the column.
|
|
131
|
+
* @returns The top control path.
|
|
132
|
+
*/
|
|
60
133
|
topControlPath(control, columnName) {
|
|
134
|
+
/* Check if the control has a parent */
|
|
61
135
|
if (control.parent) {
|
|
136
|
+
/* Retrieve the name of the parent form group */
|
|
62
137
|
let name = this.getFormGroupName(control.parent);
|
|
63
138
|
if (name) {
|
|
139
|
+
/* Append the column name to the parent form group name */
|
|
64
140
|
columnName = `${name}.${columnName}`;
|
|
141
|
+
/* Recursively call the topControlPath function with the parent control and the updated column name */
|
|
65
142
|
return this.topControlPath(control.parent, columnName);
|
|
66
143
|
}
|
|
67
144
|
}
|
|
68
145
|
return columnName;
|
|
69
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Retrieves the disabled expressions for child controls within the provided form group.
|
|
149
|
+
* @param formGroup The form group.
|
|
150
|
+
* @param columnName The name of the column.
|
|
151
|
+
* @param path The path for the controls.
|
|
152
|
+
* @returns An array of disabled expressions for child controls.
|
|
153
|
+
*/
|
|
70
154
|
childControlDisabledExpression(formGroup, columnName, path = "") {
|
|
155
|
+
/* Initialize an array to store disabled columns */
|
|
71
156
|
let disabledColumns = [];
|
|
157
|
+
/* Check if the form group has a model instance */
|
|
72
158
|
if (formGroup[MODEL_INSTANCE]) {
|
|
159
|
+
/* Get the instance container for the model */
|
|
73
160
|
let instanceContainer = defaultContainer.get(formGroup[MODEL_INSTANCE].constructor);
|
|
74
161
|
if (instanceContainer) {
|
|
162
|
+
/* Iterate through the change detection columns and push them to the disabledColumns array */
|
|
75
163
|
this.getChangeDetectionColumns(instanceContainer, columnName, true, path).forEach(t => disabledColumns.push(t));
|
|
164
|
+
/* Filter properties of type OBJECT_PROPERTY */
|
|
76
165
|
var props = instanceContainer.properties?.filter(t => t.propertyType == OBJECT_PROPERTY);
|
|
77
166
|
props?.forEach(t => {
|
|
167
|
+
/* Check if the form group has controls for the property */
|
|
78
168
|
if (formGroup.controls[t.name]) {
|
|
169
|
+
/* Get the disabled columns for the nested form group */
|
|
79
170
|
let columns = this.getDisabledColumns(formGroup.controls[t.name], columnName, true, path ? `${path}.${t.name}` : `${t.name}`);
|
|
80
171
|
columns.forEach(x => disabledColumns.push(x));
|
|
172
|
+
/* Recursively call childControlDisabledExpression for nested form groups */
|
|
81
173
|
this.childControlDisabledExpression(formGroup.controls[t.name], columnName, path ? `${path}.${t.name}` : `${t.name}`).forEach(y => disabledColumns.push(y));
|
|
82
174
|
}
|
|
83
175
|
});
|
|
84
176
|
}
|
|
85
177
|
}
|
|
178
|
+
/* Return the array of disabled columns */
|
|
86
179
|
return disabledColumns;
|
|
87
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Processes disabling based on one argument.
|
|
183
|
+
* @param control The form control or form group.
|
|
184
|
+
* @param columnName The name of the column.
|
|
185
|
+
* @returns An array of disabled columns.
|
|
186
|
+
*/
|
|
88
187
|
oneArgumentProcess(control, columnName) {
|
|
188
|
+
/* Get the top control path */
|
|
89
189
|
let path = this.topControlPath(control, columnName);
|
|
190
|
+
/* Get the root form group */
|
|
90
191
|
let rootFormGroup = ApplicationUtil.getRootFormGroup(control);
|
|
192
|
+
/* Get the child columns */
|
|
91
193
|
let childColumns = this.childControlDisabledExpression(rootFormGroup, path);
|
|
194
|
+
/* Return the child columns */
|
|
92
195
|
return childColumns;
|
|
93
196
|
}
|
|
94
197
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9kb21haW4vZGlzYWJsZS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdEUsTUFBTSxPQUFPLGVBQWU7SUFFSjtJQUErQjtJQUFuRCxZQUFvQixhQUFxQixFQUFVLFlBQW9DO1FBQW5FLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXdCO0lBRXZGLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxnQkFBMkI7UUFDeEMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixLQUFLLElBQUksV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDakUsSUFBSyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxnQkFBZ0IsRUFBRTtvQkFDNUUsT0FBTyxHQUFHLFdBQVcsQ0FBQztvQkFDdEIsTUFBTTtpQkFDVDtRQUNULE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUF3QixFQUFFLFVBQWtCO1FBQzVELElBQUksZUFBZSxHQUFVLEVBQUUs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LGFBQWEsR0FBRyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RSxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNT0RFTF9JTlNUQU5DRSwgUlhDT0RFIH0gZnJvbSBcIi4uL2NvbnN0L2FwcC5jb25zdFwiO1xyXG5pbXBvcnQgeyBPQkpFQ1RfUFJPUEVSVFkgfSBmcm9tIFwiLi4vY29uc3QvdmFsaWRhdG9yLmNvbnN0XCI7XHJcbmltcG9ydCB7IGRlZmF1bHRDb250YWluZXIgfSBmcm9tIFwiLi4vY29yZS9kZWZhdWx0Q29udGFpbmVyXCI7XHJcbmltcG9ydCB7IEluc3RhbmNlQ29udGFpbmVyIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdG9yLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblV0aWwgfSBmcm9tIFwiLi4vdXRpbC9hcHAtdXRpbFwiO1xyXG5pbXBvcnQgeyBpbnN0YW5jZVByb3ZpZGVyIH0gZnJvbSBcIi4uL3V0aWwvaW5zdGFuY2UtcHJvdmlkZXIuZnVuY3Rpb25cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBEaXNhYmxlUHJvdmlkZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjb3JhdG9yVHlwZTogc3RyaW5nLCBwcml2YXRlIGVudGl0eU9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xyXG5cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGdldEZvcm1Hcm91cE5hbWUoY3VycmVudEZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgbGV0IGtleU5hbWUgPSAnJztcclxuICAgICAgICBpZiAoY3VycmVudEZvcm1Hcm91cC5wYXJlbnQpXHJcbiAgICAgICAgICAgIGZvciAodmFyIGNvbnRyb2xOYW1lIG9mIE9iamVjdC5rZXlzKGN1cnJlbnRGb3JtR3JvdXAucGFyZW50LmNvbnRyb2xzKSlcclxuICAgICAgICAgICAgICAgIGlmICgoY3VycmVudEZvcm1Hcm91cC5wYXJlbnQuY29udHJvbHMgYXMgYW55KVtjb250cm9sTmFtZV0gPT0gY3VycmVudEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICByZXR1cm4ga2V5TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICB6ZXJvQXJndW1lbnRQcm9jZXNzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgY29sdW1uTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGRpc2FibGVkQ29sdW1uczogYW55W10gPSBbXTtcclxuICAgICAgICB0aGlzLmdldERpc2FibGVkQ29sdW1ucyg8Rm9ybUdyb3VwPmNvbnRyb2wucGFyZW50LCBgJHtjb2x1bW5OYW1lfSR7UlhDT0RFfTBgLCBmYWxzZSkuZm9yRWFjaCh0ID0+IGRpc2FibGVkQ29sdW1ucy5wdXNoKHQpKTtcclxuICAgICAgICBsZXQgcGF0aCA9IHRoaXMudG9wQ29udHJvbFBhdGgoY29udHJvbCwgY29sdW1uTmFtZSk7XHJcbiAgICAgICAgbGV0IHNwbGl0UGF0aCA9IHBhdGguc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIGlmIChzcGxpdFBhdGgubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBsZXQgcm9vdEZvcm1Hcm91cCA9IEFwcGxpY2F0aW9uVXRpbC5nZXRSb290Rm9ybUdyb3VwKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICB0aGlzLmdldERpc2FibGVkQ29sdW1ucyhyb290Rm9ybUdyb3VwLCBgJHtwYXRofSR7UlhDT0RFfTBgLCB0cnVlKS5mb3JFYWNoKHQgPT4gZGlzYWJsZWRDb2x1bW5zLnB1c2godCkpO1xyXG4gICAgICAgICAgICBsZXQgY29udHJvbFBhdGg6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwbGl0UGF0aC5sZW5ndGggLSAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb250cm9sTmFtZSA9IHNwbGl0UGF0aFtpXTtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xQYXRoID0gYCR7cGF0aC5yZXBsYWNlKGAke2NvbnRyb2xOYW1lfS5gLCAnJyl9JHtSWENPREV9LTBgXHJcbiAgICAgICAgICAgICAgICBpZiAocm9vdEZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERpc2FibGVkQ29sdW1ucyg8Rm9ybUdyb3VwPnJvb3RGb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdLCBjb250cm9sUGF0aCwgdHJ1ZSwgY29udHJvbE5hbWUpLmZvckVhY2godCA9PiBkaXNhYmxlZENvbHVtbnMucHVzaCh0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdEZvcm1Hcm91cCA9IDxGb3JtR3JvdXA+cm9vdEZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRpc2FibGVkQ29sdW1ucztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERpc2FibGVkQ29sdW1ucyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29sdW1uTmFtZTogc3RyaW5nLCBpc1Jvb3Q6IEJvb2xlYW4sIHBhdGhOYW1lOiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICAgICAgaWYgKChmb3JtR3JvdXAgYXMgYW55KVtNT0RFTF9JTlNUQU5DRV0pIHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyID0gaW5zdGFuY2VQcm92aWRlcigoZm9ybUdyb3VwIGFzIGFueSlbTU9ERUxfSU5TVEFOQ0VdLmNvbnN0cnVjdG9yLCB0aGlzLmVudGl0eU9iamVjdCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldENoYW5nZURldGVjdGlvbkNvbHVtbnMoaW5zdGFuY2VDb250YWluZXIsIGNvbHVtbk5hbWUsIGlzUm9vdCwgcGF0aE5hbWUpXHJcbiAgICAgICAgfSByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRDaGFuZ2VEZXRlY3Rpb25Db2x1bW5zKGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciwgY29sdW1uTmFtZTogc3RyaW5nLCBpc1Jvb3Q6IEJvb2xlYW4sIHBhdGhOYW1lOiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICAgICAgbGV0IGNvbmRpdGlvbmFsRGlzYWJsZUNvbnRyb2xzOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGxldCBjb2x1bW5zID0gKGluc3RhbmNlQ29udGFpbmVyLm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbdGhpcy5kZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV1cclxuICAgICAgICBpZiAoY29sdW1ucykge1xyXG4gICAgICAgICAgICBjb2x1bW5zLmZvckVhY2goKHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uYWxEaXNhYmxlQ29udHJvbHMucHVzaCh7IGNvbnRyb2xQYXRoOiBwYXRoTmFtZSA/IGAke3BhdGhOYW1lfS4ke3R9YCA6IHQsIGNvbmRpdGlvbmFsRXhwcmVzc2lvbjogKGluc3RhbmNlQ29udGFpbmVyLm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbdGhpcy5kZWNvcmF0b3JUeXBlXS5jb25kaXRpb25hbEV4cHJlc3Npb25zW3RdLCBpc1Jvb3Q6IGlzUm9vdCB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29uZGl0aW9uYWxEaXNhYmxlQ29udHJvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0b3BDb250cm9sUGF0aChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBGb3JtR3JvdXAsIGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wucGFyZW50KSB7XHJcbiAgICAgICAgICAgIGxldCBuYW1lID0gdGhpcy5nZXRGb3JtR3JvdXBOYW1lKCg8Rm9ybUdyb3VwPmNvbnRyb2wucGFyZW50KSlcclxuICAgICAgICAgICAgaWYgKG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWUgPSBgJHtuYW1lfS4ke2NvbHVtbk5hbWV9YFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9wQ29udHJvbFBhdGgoY29udHJvbC5wYXJlbnQsIGNvbHVtbk5hbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb2x1bW5OYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNoaWxkQ29udHJvbERpc2FibGVkRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29sdW1uTmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcgPSBcIlwiKTogYW55W10ge1xyXG4gICAgICAgIGxldCBkaXNhYmxlZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgICAgICAgaWYgKChmb3JtR3JvdXAgYXMgYW55KVtNT0RFTF9JTlNUQU5DRV0pIHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyID0gZGVmYXVsdENvbnRhaW5lci5nZXQoKGZvcm1Hcm91cCBhcyBhbnkpW01PREVMX0lOU1RBTkNFXS5jb25zdHJ1Y3Rvcik7XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZUNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDaGFuZ2VEZXRlY3Rpb25Db2x1bW5zKGluc3RhbmNlQ29udGFpbmVyLCBjb2x1bW5OYW1lLCB0cnVlLCBwYXRoKS5mb3JFYWNoKHQgPT4gZGlzYWJsZWRDb2x1bW5zLnB1c2godCkpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcz8uZmlsdGVyKHQgPT4gdC5wcm9wZXJ0eVR5cGUgPT0gT0JKRUNUX1BST1BFUlRZKVxyXG4gICAgICAgICAgICAgICAgcHJvcHM/LmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Hcm91cC5jb250cm9sc1t0Lm5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gdGhpcy5nZXREaXNhYmxlZENvbHVtbnMoPEZvcm1Hcm91cD5mb3JtR3JvdXAuY29udHJvbHNbdC5uYW1lXSwgY29sdW1uTmFtZSwgdHJ1ZSwgcGF0aCA/IGAke3BhdGh9LiR7dC5uYW1lfWAgOiBgJHt0Lm5hbWV9YClcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKHggPT4gZGlzYWJsZWRDb2x1bW5zLnB1c2goeCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkQ29udHJvbERpc2FibGVkRXhwcmVzc2lvbigoPEZvcm1Hcm91cD5mb3JtR3JvdXAuY29udHJvbHNbdC5uYW1lXSksIGNvbHVtbk5hbWUsIHBhdGggPyBgJHtwYXRofS4ke3QubmFtZX1gIDogYCR7dC5uYW1lfWApLmZvckVhY2goeSA9PiBkaXNhYmxlZENvbHVtbnMucHVzaCh5KSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkaXNhYmxlZENvbHVtbnM7XHJcbiAgICB9XHJcblxyXG4gICAgb25lQXJndW1lbnRQcm9jZXNzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IEZvcm1Hcm91cCwgY29sdW1uTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgICAgIGxldCBwYXRoID0gdGhpcy50b3BDb250cm9sUGF0aChjb250cm9sLCBjb2x1bW5OYW1lKTtcclxuICAgICAgICBsZXQgcm9vdEZvcm1Hcm91cCA9IEFwcGxpY2F0aW9uVXRpbC5nZXRSb290Rm9ybUdyb3VwKGNvbnRyb2wpO1xyXG4gICAgICAgIGxldCBjaGlsZENvbHVtbnMgPSB0aGlzLmNoaWxkQ29udHJvbERpc2FibGVkRXhwcmVzc2lvbihyb290Rm9ybUdyb3VwLCBwYXRoKTtcclxuICAgICAgICByZXR1cm4gY2hpbGRDb2x1bW5zO1xyXG4gICAgfVxyXG59Il19
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9kb21haW4vZGlzYWJsZS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQU9KO0lBQStCO0lBTG5EOzs7O09BSUc7SUFDSCxZQUFvQixhQUFxQixFQUFVLFlBQW9DO1FBQW5FLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXdCO0lBQUksQ0FBQztJQUU1Rjs7OztPQUlHO0lBQ0ksZ0JBQWdCLENBQUMsZ0JBQTJCO1FBQy9DLDJDQUEyQztRQUMzQyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFakIsZ0RBQWdEO1FBQ2hELElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQ3pCLDREQUE0RDtZQUM1RCxLQUFLLElBQUksV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNuRSxzRUFBc0U7Z0JBQ3RFLElBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksZ0JBQWdCLEVBQUU7b0JBQzVFLHdFQUF3RTtvQkFDeEUsT0FBTyxHQUFHLFdBQVcs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WSxDQUFDO0lBQ3hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1PREVMX0lOU1RBTkNFLCBSWENPREUgfSBmcm9tIFwiLi4vY29uc3QvYXBwLmNvbnN0XCI7XHJcbmltcG9ydCB7IE9CSkVDVF9QUk9QRVJUWSB9IGZyb20gXCIuLi9jb25zdC92YWxpZGF0b3IuY29uc3RcIjtcclxuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gXCIuLi9jb3JlL2RlZmF1bHQtY29udGFpbmVyXCI7XHJcbmltcG9ydCB7IEluc3RhbmNlQ29udGFpbmVyIH0gZnJvbSBcIi4uL21vZGVscy9pbnN0YW5jZS1jb250YWluZXJcIjtcclxuaW1wb3J0IHsgQXBwbGljYXRpb25VdGlsIH0gZnJvbSBcIi4uL3V0aWwvYXBwLXV0aWxcIjtcclxuaW1wb3J0IHsgaW5zdGFuY2VQcm92aWRlciB9IGZyb20gXCIuLi91dGlsL2luc3RhbmNlLXByb3ZpZGVyLmZ1bmN0aW9uXCI7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgZGlzYWJsaW5nIGZvcm0gY29udHJvbHMgYmFzZWQgb24gZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGlzYWJsZVByb3ZpZGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBEaXNhYmxlUHJvdmlkZXIgY2xhc3MuXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgdHlwZSBvZiBkZWNvcmF0b3IuXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5T2JqZWN0IFRoZSBlbnRpdHkgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVjb3JhdG9yLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY29yYXRvclR5cGU6IHN0cmluZywgcHJpdmF0ZSBlbnRpdHlPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbmFtZSBvZiB0aGUgZm9ybSBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGZvcm0gY29udHJvbC5cclxuICAgICAqIEBwYXJhbSBjdXJyZW50Rm9ybUdyb3VwIFRoZSBjdXJyZW50IGZvcm0gZ3JvdXAuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZm9ybSBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEZvcm1Hcm91cE5hbWUoY3VycmVudEZvcm1Hcm91cDogRm9ybUdyb3VwKTogc3RyaW5nIHtcclxuICAgICAgICAvKiBJbml0aWFsaXplIGtleU5hbWUgYXMgYW4gZW1wdHkgc3RyaW5nICovXHJcbiAgICAgICAgbGV0IGtleU5hbWUgPSAnJztcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGN1cnJlbnRGb3JtR3JvdXAgaGFzIGEgcGFyZW50ICovXHJcbiAgICAgICAgaWYgKGN1cnJlbnRGb3JtR3JvdXAucGFyZW50KSB7XHJcbiAgICAgICAgICAgIC8qIEl0ZXJhdGUgb3ZlciB0aGUgY29udHJvbCBuYW1lcyBvZiB0aGUgcGFyZW50IEZvcm1Hcm91cCAqL1xyXG4gICAgICAgICAgICBmb3IgKHZhciBjb250cm9sTmFtZSBvZiBPYmplY3Qua2V5cyhjdXJyZW50Rm9ybUdyb3VwLnBhcmVudC5jb250cm9scykpIHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjdXJyZW50IGNvbnRyb2wgaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnRGb3JtR3JvdXAgKi9cclxuICAgICAgICAgICAgICAgIGlmICgoY3VycmVudEZvcm1Hcm91cC5wYXJlbnQuY29udHJvbHMgYXMgYW55KVtjb250cm9sTmFtZV0gPT0gY3VycmVudEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIElmIGl0IG1hdGNoZXMsIGFzc2lnbiB0aGUgY29udHJvbE5hbWUgdG8ga2V5TmFtZSBhbmQgZXhpdCB0aGUgbG9vcCAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBrZXlOYW1lICovXHJcbiAgICAgICAgcmV0dXJuIGtleU5hbWU7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIGRpc2FibGluZyBiYXNlZCBvbiB6ZXJvIGFyZ3VtZW50cy5cclxuICAgICAqIEBwYXJhbSBjb250cm9sIFRoZSBmb3JtIGNvbnRyb2wuXHJcbiAgICAgKiBAcGFyYW0gY29sdW1uTmFtZSBUaGUgbmFtZSBvZiB0aGUgY29sdW1uLlxyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgZGlzYWJsZWQgY29sdW1ucy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHplcm9Bcmd1bWVudFByb2Nlc3MoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBjb2x1bW5OYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBJbml0aWFsaXplIGRpc2FibGVkQ29sdW1ucyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBkaXNhYmxlZENvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIC8qIEFkZCBkaXNhYmxlZCBjb2x1bW5zIGZyb20gdGhlIHBhcmVudCBGb3JtR3JvdXAgKi9cclxuICAgICAgICB0aGlzLmdldERpc2FibGVkQ29sdW1ucyg8Rm9ybUdyb3VwPmNvbnRyb2wucGFyZW50LCBgJHtjb2x1bW5OYW1lfSR7UlhDT0RFfTBgLCBmYWxzZSkuZm9yRWFjaCh0ID0+IGRpc2FibGVkQ29sdW1ucy5wdXNoKHQpKTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSB0b3AgY29udHJvbCBwYXRoICovXHJcbiAgICAgICAgbGV0IHBhdGggPSB0aGlzLnRvcENvbnRyb2xQYXRoKGNvbnRyb2wsIGNvbHVtbk5hbWUpO1xyXG5cclxuICAgICAgICAvKiBTcGxpdCB0aGUgcGF0aCBpbnRvIHNlZ21lbnRzICovXHJcbiAgICAgICAgbGV0IHNwbGl0UGF0aCA9IHBhdGguc3BsaXQoXCIuXCIpO1xyXG5cclxuICAgICAgICAvKiBDaGVjayBpZiB0aGUgcGF0aCBoYXMgbXVsdGlwbGUgc2VnbWVudHMgKi9cclxuICAgICAgICBpZiAoc3BsaXRQYXRoLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgLyogR2V0IHRoZSByb290IGZvcm0gZ3JvdXAgKi9cclxuICAgICAgICAgICAgbGV0IHJvb3RGb3JtR3JvdXAgPSBBcHBsaWNhdGlvblV0aWwuZ2V0Um9vdEZvcm1Hcm91cChjb250cm9sKTtcclxuXHJcbiAgICAgICAgICAgIC8qIEFkZCBkaXNhYmxlZCBjb2x1bW5zIGZyb20gdGhlIHJvb3QgZm9ybSBncm91cCAqL1xyXG4gICAgICAgICAgICB0aGlzLmdldERpc2FibGVkQ29sdW1ucyhyb290Rm9ybUdyb3VwLCBgJHtwYXRofSR7UlhDT0RFfTBgLCB0cnVlKS5mb3JFYWNoKHQgPT4gZGlzYWJsZWRDb2x1bW5zLnB1c2godCkpO1xyXG5cclxuICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSBjb250cm9sUGF0aCAqL1xyXG4gICAgICAgICAgICBsZXQgY29udHJvbFBhdGg6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBzZWdtZW50cyBvZiB0aGUgcGF0aCAqL1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwbGl0UGF0aC5sZW5ndGggLSAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb250cm9sTmFtZSA9IHNwbGl0UGF0aFtpXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBVcGRhdGUgY29udHJvbFBhdGggKi9cclxuICAgICAgICAgICAgICAgIGNvbnRyb2xQYXRoID0gYCR7cGF0aC5yZXBsYWNlKGAke2NvbnRyb2xOYW1lfS5gLCAnJyl9JHtSWENPREV9LTBgO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb250cm9sIGV4aXN0cyBpbiB0aGUgcm9vdCBmb3JtIGdyb3VwICovXHJcbiAgICAgICAgICAgICAgICBpZiAocm9vdEZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBBZGQgZGlzYWJsZWQgY29sdW1ucyBmcm9tIHRoZSBjb250cm9sICovXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREaXNhYmxlZENvbHVtbnMoPEZvcm1Hcm91cD5yb290Rm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSwgY29udHJvbFBhdGgsIHRydWUsIGNvbnRyb2xOYW1lKS5mb3JFYWNoKHQgPT4gZGlzYWJsZWRDb2x1bW5zLnB1c2godCkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBVcGRhdGUgcm9vdEZvcm1Hcm91cCAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3RGb3JtR3JvdXAgPSA8Rm9ybUdyb3VwPnJvb3RGb3JtR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZXR1cm4gdGhlIGRpc2FibGVkQ29sdW1ucyBhcnJheSAqL1xyXG4gICAgICAgIHJldHVybiBkaXNhYmxlZENvbHVtbnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIGZvciB0aGUgcHJvdmlkZWQgZm9ybSBncm91cC5cclxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXAgVGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKiBAcGFyYW0gY29sdW1uTmFtZSBUaGUgbmFtZSBvZiB0aGUgY29sdW1uLlxyXG4gICAgICogQHBhcmFtIGlzUm9vdCBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZm9ybSBncm91cCBpcyB0aGUgcm9vdCBmb3JtIGdyb3VwLlxyXG4gICAgICogQHBhcmFtIHBhdGhOYW1lIFRoZSBwYXRoIG5hbWUuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBkaXNhYmxlZCBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldERpc2FibGVkQ29sdW1ucyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29sdW1uTmFtZTogc3RyaW5nLCBpc1Jvb3Q6IEJvb2xlYW4sIHBhdGhOYW1lOiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGZvcm1Hcm91cCBoYXMgYSBNT0RFTF9JTlNUQU5DRSAqL1xyXG4gICAgICAgIGlmICgoZm9ybUdyb3VwIGFzIGFueSlbTU9ERUxfSU5TVEFOQ0VdKSB7XHJcbiAgICAgICAgICAgIC8qIEdldCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIHVzaW5nIGluc3RhbmNlUHJvdmlkZXIgKi9cclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyID0gaW5zdGFuY2VQcm92aWRlcigoZm9ybUdyb3VwIGFzIGFueSlbTU9ERUxfSU5TVEFOQ0VdLmNvbnN0cnVjdG9yLCB0aGlzLmVudGl0eU9iamVjdCk7XHJcblxyXG4gICAgICAgICAgICAvKiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBnZXRDaGFuZ2VEZXRlY3Rpb25Db2x1bW5zICovXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldENoYW5nZURldGVjdGlvbkNvbHVtbnMoaW5zdGFuY2VDb250YWluZXIsIGNvbHVtbk5hbWUsIGlzUm9vdCwgcGF0aE5hbWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogSWYgbm8gTU9ERUxfSU5TVEFOQ0UsIHJldHVybiBhbiBlbXB0eSBhcnJheSAqL1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGNoYW5nZSBkZXRlY3Rpb24gY29sdW1ucyBmb3IgdGhlIHByb3ZpZGVkIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZUNvbnRhaW5lciBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGNvbHVtbk5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbHVtbi5cclxuICAgICAqIEBwYXJhbSBpc1Jvb3QgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZvcm0gZ3JvdXAgaXMgdGhlIHJvb3QgZm9ybSBncm91cC5cclxuICAgICAqIEBwYXJhbSBwYXRoTmFtZSBUaGUgcGF0aCBuYW1lLlxyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgY2hhbmdlIGRldGVjdGlvbiBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENoYW5nZURldGVjdGlvbkNvbHVtbnMoaW5zdGFuY2VDb250YWluZXI6IEluc3RhbmNlQ29udGFpbmVyLCBjb2x1bW5OYW1lOiBzdHJpbmcsIGlzUm9vdDogQm9vbGVhbiwgcGF0aE5hbWU6IHN0cmluZyA9IFwiXCIpIHtcclxuICAgICAgICAvKiBJbml0aWFsaXplIGFuIGFycmF5IHRvIHN0b3JlIGNvbmRpdGlvbmFsIGRpc2FibGUgY29udHJvbHMgKi9cclxuICAgICAgICBsZXQgY29uZGl0aW9uYWxEaXNhYmxlQ29udHJvbHM6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIC8qIFJldHJpZXZlIGNvbHVtbnMgZnJvbSBpbnN0YW5jZUNvbnRhaW5lciBiYXNlZCBvbiBkZWNvcmF0b3JUeXBlIGFuZCBjb2x1bW5OYW1lICovXHJcbiAgICAgICAgbGV0IGNvbHVtbnMgPSAoaW5zdGFuY2VDb250YWluZXIubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVt0aGlzLmRlY29yYXRvclR5cGVdLmNoYW5nZURldGVjdGlvbltjb2x1bW5OYW1lXTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgY29sdW1ucyBleGlzdCAqL1xyXG4gICAgICAgIGlmIChjb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCBjb2x1bW5zICovXHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgodDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvKiBQdXNoIGNvbnRyb2wgcGF0aCwgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiwgYW5kIGlzUm9vdCBzdGF0dXMgdG8gY29uZGl0aW9uYWxEaXNhYmxlQ29udHJvbHMgKi9cclxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsRGlzYWJsZUNvbnRyb2xzLnB1c2goeyBjb250cm9sUGF0aDogcGF0aE5hbWUgPyBgJHtwYXRoTmFtZX0uJHt0fWAgOiB0LCBjb25kaXRpb25hbEV4cHJlc3Npb246IChpbnN0YW5jZUNvbnRhaW5lci5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW3RoaXMuZGVjb3JhdG9yVHlwZV0uY29uZGl0aW9uYWxFeHByZXNzaW9uc1t0XSwgaXNSb290OiBpc1Jvb3QgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBhcnJheSBvZiBjb25kaXRpb25hbCBkaXNhYmxlIGNvbnRyb2xzICovXHJcbiAgICAgICAgcmV0dXJuIGNvbmRpdGlvbmFsRGlzYWJsZUNvbnRyb2xzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgdG9wIGNvbnRyb2wgcGF0aCBiYXNlZCBvbiB0aGUgZm9ybSBjb250cm9sIGFuZCBjb2x1bW4gbmFtZS5cclxuICAgICAqIEBwYXJhbSBjb250cm9sIFRoZSBmb3JtIGNvbnRyb2wuXHJcbiAgICAgKiBAcGFyYW0gY29sdW1uTmFtZSBUaGUgbmFtZSBvZiB0aGUgY29sdW1uLlxyXG4gICAgICogQHJldHVybnMgVGhlIHRvcCBjb250cm9sIHBhdGguXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9wQ29udHJvbFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgRm9ybUdyb3VwLCBjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb250cm9sIGhhcyBhIHBhcmVudCAqL1xyXG4gICAgICAgIGlmIChjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgICAgICAvKiBSZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgcGFyZW50IGZvcm0gZ3JvdXAgKi9cclxuICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmdldEZvcm1Hcm91cE5hbWUoKDxGb3JtR3JvdXA+Y29udHJvbC5wYXJlbnQpKVxyXG4gICAgICAgICAgICBpZiAobmFtZSkge1xyXG4gICAgICAgICAgICAgICAgLyogQXBwZW5kIHRoZSBjb2x1bW4gbmFtZSB0byB0aGUgcGFyZW50IGZvcm0gZ3JvdXAgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZSA9IGAke25hbWV9LiR7Y29sdW1uTmFtZX1gO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIFJlY3Vyc2l2ZWx5IGNhbGwgdGhlIHRvcENvbnRyb2xQYXRoIGZ1bmN0aW9uIHdpdGggdGhlIHBhcmVudCBjb250cm9sIGFuZCB0aGUgdXBkYXRlZCBjb2x1bW4gbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9wQ29udHJvbFBhdGgoY29udHJvbC5wYXJlbnQsIGNvbHVtbk5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY29sdW1uTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyB0aGUgZGlzYWJsZWQgZXhwcmVzc2lvbnMgZm9yIGNoaWxkIGNvbnRyb2xzIHdpdGhpbiB0aGUgcHJvdmlkZWQgZm9ybSBncm91cC5cclxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXAgVGhlIGZvcm0gZ3JvdXAuXHJcbiAgICAgKiBAcGFyYW0gY29sdW1uTmFtZSBUaGUgbmFtZSBvZiB0aGUgY29sdW1uLlxyXG4gICAgICogQHBhcmFtIHBhdGggVGhlIHBhdGggZm9yIHRoZSBjb250cm9scy5cclxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGRpc2FibGVkIGV4cHJlc3Npb25zIGZvciBjaGlsZCBjb250cm9scy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoaWxkQ29udHJvbERpc2FibGVkRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29sdW1uTmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcgPSBcIlwiKTogYW55W10ge1xyXG4gICAgICAgIC8qIEluaXRpYWxpemUgYW4gYXJyYXkgdG8gc3RvcmUgZGlzYWJsZWQgY29sdW1ucyAqL1xyXG4gICAgICAgIGxldCBkaXNhYmxlZENvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBmb3JtIGdyb3VwIGhhcyBhIG1vZGVsIGluc3RhbmNlICovXHJcbiAgICAgICAgaWYgKChmb3JtR3JvdXAgYXMgYW55KVtNT0RFTF9JTlNUQU5DRV0pIHtcclxuICAgICAgICAgICAgLyogR2V0IHRoZSBpbnN0YW5jZSBjb250YWluZXIgZm9yIHRoZSBtb2RlbCAqL1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2VDb250YWluZXIgPSBkZWZhdWx0Q29udGFpbmVyLmdldCgoZm9ybUdyb3VwIGFzIGFueSlbTU9ERUxfSU5TVEFOQ0VdLmNvbnN0cnVjdG9yKTtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIGNoYW5nZSBkZXRlY3Rpb24gY29sdW1ucyBhbmQgcHVzaCB0aGVtIHRvIHRoZSBkaXNhYmxlZENvbHVtbnMgYXJyYXkgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2hhbmdlRGV0ZWN0aW9uQ29sdW1ucyhpbnN0YW5jZUNvbnRhaW5lciwgY29sdW1uTmFtZSwgdHJ1ZSwgcGF0aCkuZm9yRWFjaCh0ID0+IGRpc2FibGVkQ29sdW1ucy5wdXNoKHQpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBGaWx0ZXIgcHJvcGVydGllcyBvZiB0eXBlIE9CSkVDVF9QUk9QRVJUWSAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcz8uZmlsdGVyKHQgPT4gdC5wcm9wZXJ0eVR5cGUgPT0gT0JKRUNUX1BST1BFUlRZKTtcclxuICAgICAgICAgICAgICAgIHByb3BzPy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBmb3JtIGdyb3VwIGhhcyBjb250cm9scyBmb3IgdGhlIHByb3BlcnR5ICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Hcm91cC5jb250cm9sc1t0Lm5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdldCB0aGUgZGlzYWJsZWQgY29sdW1ucyBmb3IgdGhlIG5lc3RlZCBmb3JtIGdyb3VwICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gdGhpcy5nZXREaXNhYmxlZENvbHVtbnMoPEZvcm1Hcm91cD5mb3JtR3JvdXAuY29udHJvbHNbdC5uYW1lXSwgY29sdW1uTmFtZSwgdHJ1ZSwgcGF0aCA/IGAke3BhdGh9LiR7dC5uYW1lfWAgOiBgJHt0Lm5hbWV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh4ID0+IGRpc2FibGVkQ29sdW1ucy5wdXNoKHgpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlY3Vyc2l2ZWx5IGNhbGwgY2hpbGRDb250cm9sRGlzYWJsZWRFeHByZXNzaW9uIGZvciBuZXN0ZWQgZm9ybSBncm91cHMgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZENvbnRyb2xEaXNhYmxlZEV4cHJlc3Npb24oKDxGb3JtR3JvdXA+Zm9ybUdyb3VwLmNvbnRyb2xzW3QubmFtZV0pLCBjb2x1bW5OYW1lLCBwYXRoID8gYCR7cGF0aH0uJHt0Lm5hbWV9YCA6IGAke3QubmFtZX1gKS5mb3JFYWNoKHkgPT4gZGlzYWJsZWRDb2x1bW5zLnB1c2goeSkpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgYXJyYXkgb2YgZGlzYWJsZWQgY29sdW1ucyAqL1xyXG4gICAgICAgIHJldHVybiBkaXNhYmxlZENvbHVtbnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9jZXNzZXMgZGlzYWJsaW5nIGJhc2VkIG9uIG9uZSBhcmd1bWVudC5cclxuICAgICAqIEBwYXJhbSBjb250cm9sIFRoZSBmb3JtIGNvbnRyb2wgb3IgZm9ybSBncm91cC5cclxuICAgICAqIEBwYXJhbSBjb2x1bW5OYW1lIFRoZSBuYW1lIG9mIHRoZSBjb2x1bW4uXHJcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBkaXNhYmxlZCBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25lQXJndW1lbnRQcm9jZXNzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IEZvcm1Hcm91cCwgY29sdW1uTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgICAgIC8qIEdldCB0aGUgdG9wIGNvbnRyb2wgcGF0aCAqL1xyXG4gICAgICAgIGxldCBwYXRoID0gdGhpcy50b3BDb250cm9sUGF0aChjb250cm9sLCBjb2x1bW5OYW1lKTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSByb290IGZvcm0gZ3JvdXAgKi9cclxuICAgICAgICBsZXQgcm9vdEZvcm1Hcm91cCA9IEFwcGxpY2F0aW9uVXRpbC5nZXRSb290Rm9ybUdyb3VwKGNvbnRyb2wpO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGNoaWxkIGNvbHVtbnMgKi9cclxuICAgICAgICBsZXQgY2hpbGRDb2x1bW5zID0gdGhpcy5jaGlsZENvbnRyb2xEaXNhYmxlZEV4cHJlc3Npb24ocm9vdEZvcm1Hcm91cCwgcGF0aCk7XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgY2hpbGQgY29sdW1ucyAqL1xyXG4gICAgICAgIHJldHVybiBjaGlsZENvbHVtbnM7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -8,40 +8,87 @@ import * as i1 from "@angular/common";
|
|
|
8
8
|
export class DecimalProvider {
|
|
9
9
|
decimalPipe;
|
|
10
10
|
localeId;
|
|
11
|
+
/**
|
|
12
|
+
* Decimal separator
|
|
13
|
+
*/
|
|
11
14
|
decimalSeperator = ".";
|
|
15
|
+
/**
|
|
16
|
+
* Group separator
|
|
17
|
+
*/
|
|
12
18
|
groupSeperator = ",";
|
|
19
|
+
/**
|
|
20
|
+
* Optional variable for custom decimal symbol
|
|
21
|
+
*/
|
|
13
22
|
allowDecimalSymbol;
|
|
23
|
+
/**
|
|
24
|
+
* Flag indicating whether configuration is set
|
|
25
|
+
*/
|
|
26
|
+
isSetConfig = false;
|
|
27
|
+
/**
|
|
28
|
+
* Constructor for DecimalProvider
|
|
29
|
+
* @param decimalPipe DecimalPipe
|
|
30
|
+
* @param localeId LOCALE_ID
|
|
31
|
+
*/
|
|
14
32
|
constructor(decimalPipe, localeId) {
|
|
15
33
|
this.decimalPipe = decimalPipe;
|
|
16
34
|
this.localeId = localeId;
|
|
35
|
+
/* Initialize decimal and group separators based on locale */
|
|
17
36
|
this.decimalSeperator = getLocaleNumberSymbol(localeId, NumberSymbol.Decimal);
|
|
18
|
-
;
|
|
19
37
|
this.groupSeperator = getLocaleNumberSymbol(localeId, NumberSymbol.Group);
|
|
38
|
+
/* Set symbols in ReactiveFormConfig */
|
|
20
39
|
this.setSymbolInConfig();
|
|
21
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Replaces the decimal and group separators in the value.
|
|
43
|
+
* @param value The value to replace separators in.
|
|
44
|
+
* @returns The value with replaced separators.
|
|
45
|
+
*/
|
|
22
46
|
replacer(value) {
|
|
23
47
|
value = String(value);
|
|
24
|
-
if
|
|
48
|
+
/* Bind configuration settings if not already set */
|
|
49
|
+
if (!this.isSetConfig) {
|
|
25
50
|
this.bindConfig();
|
|
51
|
+
}
|
|
52
|
+
/* Remove group separators */
|
|
26
53
|
value = value.split(this.groupSeperator).join(BLANK);
|
|
27
|
-
if
|
|
54
|
+
/* Replace decimal separator if allowed */
|
|
55
|
+
if (this.allowDecimalSymbol) {
|
|
28
56
|
value = value.replace(this.decimalSeperator, this.allowDecimalSymbol);
|
|
57
|
+
}
|
|
58
|
+
/* Check for zero after decimal point and remove if present */
|
|
29
59
|
var splitValue = value.split(this.decimalSeperator);
|
|
30
60
|
value = (splitValue.length > 1 && splitValue[1] && RegexValidator.isZero(splitValue[1])) ? splitValue[0] : value;
|
|
31
61
|
return value;
|
|
32
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Transforms a value into a formatted decimal string.
|
|
65
|
+
* @param value The value to transform.
|
|
66
|
+
* @param digitsInfo The number of digits after the decimal point.
|
|
67
|
+
* @param persistZero Whether to persist zero after decimal digits.
|
|
68
|
+
* @returns The formatted decimal string.
|
|
69
|
+
*/
|
|
33
70
|
transFormDecimal(value, digitsInfo, persistZero) {
|
|
71
|
+
/* Convert value to string */
|
|
34
72
|
value = String(value);
|
|
73
|
+
/* If value is falsy, return it */
|
|
35
74
|
if (!value) {
|
|
36
75
|
return value;
|
|
37
76
|
}
|
|
77
|
+
/* Transform the value using DecimalPipe */
|
|
38
78
|
let transformedValue = this.decimalPipe.transform(value.replace(ReactiveFormConfig.number.groupSymbol, "").replace(this.decimalSeperator, "."), digitsInfo, this.localeId);
|
|
79
|
+
/* Add trailing zeros if persistZero is true */
|
|
39
80
|
if (persistZero && value.indexOf(this.decimalSeperator)) {
|
|
81
|
+
/* Split the transformed value by decimal point */
|
|
40
82
|
let splitTransformed = transformedValue?.split(".");
|
|
83
|
+
/* Split the digitsInfo by hyphen or use an empty array if digitsInfo is falsy */
|
|
41
84
|
let splitDigitsInfo = digitsInfo ? digitsInfo.split("-") : [];
|
|
85
|
+
/* Extract the number of digits from the splitDigitsInfo */
|
|
42
86
|
let digits = splitDigitsInfo.length > 1 ? parseInt(splitDigitsInfo[splitDigitsInfo.length - 1]) : 0;
|
|
87
|
+
/* Check if there are two parts after splitting the transformed value, digitsInfo is not empty, digits is not 0, and the length of the decimal part is not equal to digits */
|
|
43
88
|
if ((splitTransformed?.length ?? 0) > 1 && splitDigitsInfo.length > 0 && digits !== 0 && splitTransformed[1].length !== digits) {
|
|
89
|
+
/* Calculate the difference in length */
|
|
44
90
|
let diff = digits - splitTransformed[1].length;
|
|
91
|
+
/* Append trailing zeros to the transformed value */
|
|
45
92
|
for (let i = 0; i < diff; i++) {
|
|
46
93
|
transformedValue += "0";
|
|
47
94
|
}
|
|
@@ -49,19 +96,32 @@ export class DecimalProvider {
|
|
|
49
96
|
}
|
|
50
97
|
return transformedValue;
|
|
51
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Sets the decimal and group symbols in the ReactiveFormConfig.
|
|
101
|
+
*/
|
|
52
102
|
setSymbolInConfig() {
|
|
53
103
|
ReactiveFormConfig.number = { decimalSymbol: this.decimalSeperator, groupSymbol: this.groupSeperator };
|
|
54
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Binds configuration settings from ReactiveFormConfig.json.
|
|
107
|
+
*/
|
|
55
108
|
bindConfig() {
|
|
109
|
+
/* Check if ReactiveFormConfig.json exists */
|
|
56
110
|
if (ReactiveFormConfig.json) {
|
|
57
|
-
if
|
|
111
|
+
/* Check if localeId is defined in ReactiveFormConfig.json */
|
|
112
|
+
if (ReactiveFormConfig.json.localeId) {
|
|
113
|
+
/* Assign the localeId from ReactiveFormConfig.json */
|
|
58
114
|
this.localeId = ReactiveFormConfig.json.localeId;
|
|
59
|
-
|
|
115
|
+
}
|
|
116
|
+
/* Check if allowDecimalSymbol is defined in ReactiveFormConfig.json */
|
|
117
|
+
if (ReactiveFormConfig.json.allowDecimalSymbol) {
|
|
118
|
+
/* Assign the allowDecimalSymbol from ReactiveFormConfig.json */
|
|
60
119
|
this.allowDecimalSymbol = ReactiveFormConfig.json.allowDecimalSymbol;
|
|
120
|
+
}
|
|
61
121
|
}
|
|
122
|
+
/* Set isSetConfig to true after configuring */
|
|
62
123
|
this.isSetConfig = true;
|
|
63
124
|
}
|
|
64
|
-
isSetConfig = false;
|
|
65
125
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: DecimalProvider, deps: [{ token: i1.DecimalPipe }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
66
126
|
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: DecimalProvider });
|
|
67
127
|
}
|
|
@@ -71,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
71
131
|
type: Inject,
|
|
72
132
|
args: [LOCALE_ID]
|
|
73
133
|
}] }] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9kb21haW4vZWxlbWVudC1wcm9jZXNzb3IvZGVjaW1hbC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBSTVELE1BQU0sT0FBTyxlQUFlO0lBS1o7SUFBcUQ7SUFKekQsZ0JBQWdCLEdBQVcsR0FBRyxDQUFDO0lBQy9CLGNBQWMsR0FBVyxHQUFHLENBQUM7SUFDN0Isa0JBQWtCLENBQVU7SUFDcEMsWUFDWSxXQUF3QixFQUE2QixRQUFnQjtRQUFyRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUE2QixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBRTdFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUMvRSxJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FB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ekIsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3JELElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtnQkFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUM1RTtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFTyxXQUFXLEdBQVksS0FBSyxDQUFDOzBIQTdENUIsZUFBZSw2Q0FLc0IsU0FBUzs4SEFMOUMsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBTWdDLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY2ltYWxQaXBlLCBOdW1iZXJTeW1ib2wsIGdldExvY2FsZU51bWJlclN5bWJvbCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBMT0NBTEVfSUQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCTEFOSyB9IGZyb20gXCIuLi8uLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vdXRpbC9yZWFjdGl2ZS1mb3JtLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3V0aWwvcmVnZXgtdmFsaWRhdG9yJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEZWNpbWFsUHJvdmlkZXIge1xyXG4gICAgcHJpdmF0ZSBkZWNpbWFsU2VwZXJhdG9yOiBzdHJpbmcgPSBcIi5cIjtcclxuICAgIHByaXZhdGUgZ3JvdXBTZXBlcmF0b3I6IHN0cmluZyA9IFwiLFwiO1xyXG4gICAgcHJpdmF0ZSBhbGxvd0RlY2ltYWxTeW1ib2w/OiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSwgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlSWQ6IHN0cmluZ1xyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5kZWNpbWFsU2VwZXJhdG9yID0gZ2V0TG9jYWxlTnVtYmVyU3ltYm9sKGxvY2FsZUlkLCBOdW1iZXJTeW1ib2wuRGVjaW1hbCk7O1xyXG4gICAgICAgIHRoaXMuZ3JvdXBTZXBlcmF0b3IgPSBnZXRMb2NhbGVOdW1iZXJTeW1ib2wobG9jYWxlSWQsIE51bWJlclN5bWJvbC5Hcm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXRTeW1ib2xJbkNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcGxhY2VyKHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNTZXRDb25maWcpXHJcbiAgICAgICAgICAgIHRoaXMuYmluZENvbmZpZygpO1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQodGhpcy5ncm91cFNlcGVyYXRvcikuam9pbihCTEFOSyk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsU3ltYm9sKVxyXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5kZWNpbWFsU2VwZXJhdG9yLCB0aGlzLmFsbG93RGVjaW1hbFN5bWJvbClcclxuICAgICAgICB2YXIgc3BsaXRWYWx1ZSA9IHZhbHVlLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGVyYXRvcik7XHJcbiAgICAgICAgdmFsdWUgPSAoc3BsaXRWYWx1ZS5sZW5ndGggPiAxICYmIHNwbGl0VmFsdWVbMV0gJiYgUmVnZXhWYWxpZGF0b3IuaXNaZXJvKHNwbGl0VmFsdWVbMV0pKSA/IHNwbGl0VmFsdWVbMF0gOiB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNGb3JtRGVjaW1hbCh2YWx1ZTogYW55LCBkaWdpdHNJbmZvOiBzdHJpbmcsIHBlcnNpc3RaZXJvOiBib29sZWFuKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUucmVwbGFjZShSZWFjdGl2ZUZvcm1Db25maWcubnVtYmVyLmdyb3VwU3ltYm9sLCBcIlwiKS5yZXBsYWNlKHRoaXMuZGVjaW1hbFNlcGVyYXRvciwgXCIuXCIpLCBkaWdpdHNJbmZvLCB0aGlzLmxvY2FsZUlkKTtcclxuICAgICAgICBpZiAocGVyc2lzdFplcm8gJiYgdmFsdWUuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBlcmF0b3IpKSB7XHJcbiAgICAgICAgICAgIGxldCBzcGxpdFRyYW5zZm9ybWVkID0gdHJhbnNmb3JtZWRWYWx1ZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgICBsZXQgc3BsaXREaWdpdHNJbmZvID0gZGlnaXRzSW5mbyA/IGRpZ2l0c0luZm8uc3BsaXQoXCItXCIpIDogW107XHJcbiAgICAgICAgICAgIGxldCBkaWdpdHMgPSBzcGxpdERpZ2l0c0luZm8ubGVuZ3RoID4gMSA/IHBhcnNlSW50KHNwbGl0RGlnaXRzSW5mb1tzcGxpdERpZ2l0c0luZm8ubGVuZ3RoIC0gMV0pIDogMDtcclxuICAgICAgICAgICAgaWYgKChzcGxpdFRyYW5zZm9ybWVkPy5sZW5ndGggPz8gMCkgPiAxICYmIHNwbGl0RGlnaXRzSW5mby5sZW5ndGggPiAwICYmIGRpZ2l0cyAhPT0gMCAmJiBzcGxpdFRyYW5zZm9ybWVkIVsxXS5sZW5ndGggIT09IGRpZ2l0cykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpZmYgPSBkaWdpdHMgLSBzcGxpdFRyYW5zZm9ybWVkIVsxXS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmY7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgKz0gXCIwXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0U3ltYm9sSW5Db25maWcoKSB7XHJcbiAgICAgICAgUmVhY3RpdmVGb3JtQ29uZmlnLm51bWJlciA9IHsgZGVjaW1hbFN5bWJvbDogdGhpcy5kZWNpbWFsU2VwZXJhdG9yLCBncm91cFN5bWJvbDogdGhpcy5ncm91cFNlcGVyYXRvciB9O1xyXG4gICAgfVxyXG5cclxuICAgIGJpbmRDb25maWcoKSB7XHJcbiAgICAgICAgaWYgKFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uKSB7XHJcbiAgICAgICAgICAgIGlmIChSZWFjdGl2ZUZvcm1Db25maWcuanNvbi5sb2NhbGVJZClcclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlSWQgPSBSZWFjdGl2ZUZvcm1Db25maWcuanNvbi5sb2NhbGVJZDtcclxuICAgICAgICAgICAgaWYgKFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uLmFsbG93RGVjaW1hbFN5bWJvbClcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dEZWNpbWFsU3ltYm9sID0gUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24uYWxsb3dEZWNpbWFsU3ltYm9sO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzU2V0Q29uZmlnID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzU2V0Q29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbn1cclxuIl19
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9kb21haW4vZWxlbWVudC1wcm9jZXNzb3IvZGVjaW1hbC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBRzVELE1BQU0sT0FBTyxlQUFlO0lBMEJKO0lBQXFEO0lBekJ6RTs7T0FFRztJQUNLLGdCQUFnQixHQUFXLEdBQUcsQ0FBQztJQUV2Qzs7T0FFRztJQUNLLGNBQWMsR0FBVyxHQUFHLENBQUM7SUFFckM7O09BRUc7SUFDSyxrQkFBa0IsQ0FBVTtJQUVwQzs7T0FFRztJQUNLLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFckM7Ozs7T0FJRztJQUNILFlBQW9CLFdBQXdCLEVBQTZCLFFBQWdCO1FBQXJFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQTZCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDckYsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRSx1Q0FBdUM7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QztnQkFFaEQsb0RBQW9EO2dCQUNwRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMzQixnQkFBZ0IsSUFBSSxHQUFHLENBQUM7aUJBQzNCO2FBQ0o7U0FDSjtRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssaUJBQWlCO1FBQ3JCLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzRyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVO1FBQ2IsNkNBQTZDO1FBQzdDLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFO1lBQ3pCLDZEQUE2RDtZQUM3RCxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xDLHNEQUFzRDtnQkFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ3BEO1lBRUQsdUVBQXVFO1lBQ3ZFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUM1QyxnRUFBZ0U7Z0JBQ2hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7YUFDeEU7U0FDSjtRQUVELCtDQUErQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDOzBIQXhJUSxlQUFlLDZDQTBCOEIsU0FBUzs4SEExQnRELGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQTJCd0MsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjaW1hbFBpcGUsIE51bWJlclN5bWJvbCwgZ2V0TG9jYWxlTnVtYmVyU3ltYm9sIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJMQU5LIH0gZnJvbSBcIi4uLy4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybUNvbmZpZyB9IGZyb20gXCIuLi8uLi91dGlsL3JlYWN0aXZlLWZvcm0tY29uZmlnXCI7XHJcbmltcG9ydCB7IFJlZ2V4VmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdXRpbC9yZWdleC12YWxpZGF0b3InO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGVjaW1hbFByb3ZpZGVyIHtcclxuICAgIC8qKlxyXG4gICAgICogRGVjaW1hbCBzZXBhcmF0b3JcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBkZWNpbWFsU2VwZXJhdG9yOiBzdHJpbmcgPSBcIi5cIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdyb3VwIHNlcGFyYXRvclxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdyb3VwU2VwZXJhdG9yOiBzdHJpbmcgPSBcIixcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wdGlvbmFsIHZhcmlhYmxlIGZvciBjdXN0b20gZGVjaW1hbCBzeW1ib2xcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhbGxvd0RlY2ltYWxTeW1ib2w/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBjb25maWd1cmF0aW9uIGlzIHNldFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzU2V0Q29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciBmb3IgRGVjaW1hbFByb3ZpZGVyXHJcbiAgICAgKiBAcGFyYW0gZGVjaW1hbFBpcGUgRGVjaW1hbFBpcGVcclxuICAgICAqIEBwYXJhbSBsb2NhbGVJZCBMT0NBTEVfSURcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZUlkOiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBJbml0aWFsaXplIGRlY2ltYWwgYW5kIGdyb3VwIHNlcGFyYXRvcnMgYmFzZWQgb24gbG9jYWxlICovXHJcbiAgICAgICAgdGhpcy5kZWNpbWFsU2VwZXJhdG9yID0gZ2V0TG9jYWxlTnVtYmVyU3ltYm9sKGxvY2FsZUlkLCBOdW1iZXJTeW1ib2wuRGVjaW1hbCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFNlcGVyYXRvciA9IGdldExvY2FsZU51bWJlclN5bWJvbChsb2NhbGVJZCwgTnVtYmVyU3ltYm9sLkdyb3VwKTtcclxuXHJcbiAgICAgICAgLyogU2V0IHN5bWJvbHMgaW4gUmVhY3RpdmVGb3JtQ29uZmlnICovXHJcbiAgICAgICAgdGhpcy5zZXRTeW1ib2xJbkNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVwbGFjZXMgdGhlIGRlY2ltYWwgYW5kIGdyb3VwIHNlcGFyYXRvcnMgaW4gdGhlIHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXBsYWNlIHNlcGFyYXRvcnMgaW4uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgd2l0aCByZXBsYWNlZCBzZXBhcmF0b3JzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVwbGFjZXIodmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG5cclxuICAgICAgICAvKiBCaW5kIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgaWYgbm90IGFscmVhZHkgc2V0ICovXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzU2V0Q29uZmlnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmluZENvbmZpZygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogUmVtb3ZlIGdyb3VwIHNlcGFyYXRvcnMgKi9cclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KHRoaXMuZ3JvdXBTZXBlcmF0b3IpLmpvaW4oQkxBTkspO1xyXG5cclxuICAgICAgICAvKiBSZXBsYWNlIGRlY2ltYWwgc2VwYXJhdG9yIGlmIGFsbG93ZWQgKi9cclxuICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWxTeW1ib2wpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHRoaXMuZGVjaW1hbFNlcGVyYXRvciwgdGhpcy5hbGxvd0RlY2ltYWxTeW1ib2wpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQ2hlY2sgZm9yIHplcm8gYWZ0ZXIgZGVjaW1hbCBwb2ludCBhbmQgcmVtb3ZlIGlmIHByZXNlbnQgKi9cclxuICAgICAgICB2YXIgc3BsaXRWYWx1ZSA9IHZhbHVlLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGVyYXRvcik7XHJcbiAgICAgICAgdmFsdWUgPSAoc3BsaXRWYWx1ZS5sZW5ndGggPiAxICYmIHNwbGl0VmFsdWVbMV0gJiYgUmVnZXhWYWxpZGF0b3IuaXNaZXJvKHNwbGl0VmFsdWVbMV0pKSA/IHNwbGl0VmFsdWVbMF0gOiB2YWx1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhbnNmb3JtcyBhIHZhbHVlIGludG8gYSBmb3JtYXR0ZWQgZGVjaW1hbCBzdHJpbmcuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cclxuICAgICAqIEBwYXJhbSBkaWdpdHNJbmZvIFRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxyXG4gICAgICogQHBhcmFtIHBlcnNpc3RaZXJvIFdoZXRoZXIgdG8gcGVyc2lzdCB6ZXJvIGFmdGVyIGRlY2ltYWwgZGlnaXRzLlxyXG4gICAgICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkZWNpbWFsIHN0cmluZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRyYW5zRm9ybURlY2ltYWwodmFsdWU6IGFueSwgZGlnaXRzSW5mbzogc3RyaW5nLCBwZXJzaXN0WmVybzogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIC8qIENvbnZlcnQgdmFsdWUgdG8gc3RyaW5nICovXHJcbiAgICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG5cclxuICAgICAgICAvKiBJZiB2YWx1ZSBpcyBmYWxzeSwgcmV0dXJuIGl0ICovXHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBUcmFuc2Zvcm0gdGhlIHZhbHVlIHVzaW5nIERlY2ltYWxQaXBlICovXHJcbiAgICAgICAgbGV0IHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZS5yZXBsYWNlKFJlYWN0aXZlRm9ybUNvbmZpZy5udW1iZXIuZ3JvdXBTeW1ib2wsIFwiXCIpLnJlcGxhY2UodGhpcy5kZWNpbWFsU2VwZXJhdG9yLCBcIi5cIiksIGRpZ2l0c0luZm8sIHRoaXMubG9jYWxlSWQpO1xyXG5cclxuICAgICAgICAvKiBBZGQgdHJhaWxpbmcgemVyb3MgaWYgcGVyc2lzdFplcm8gaXMgdHJ1ZSAqL1xyXG4gICAgICAgIGlmIChwZXJzaXN0WmVybyAmJiB2YWx1ZS5pbmRleE9mKHRoaXMuZGVjaW1hbFNlcGVyYXRvcikpIHtcclxuICAgICAgICAgICAgLyogU3BsaXQgdGhlIHRyYW5zZm9ybWVkIHZhbHVlIGJ5IGRlY2ltYWwgcG9pbnQgKi9cclxuICAgICAgICAgICAgbGV0IHNwbGl0VHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1lZFZhbHVlPy5zcGxpdChcIi5cIik7XHJcblxyXG4gICAgICAgICAgICAvKiBTcGxpdCB0aGUgZGlnaXRzSW5mbyBieSBoeXBoZW4gb3IgdXNlIGFuIGVtcHR5IGFycmF5IGlmIGRpZ2l0c0luZm8gaXMgZmFsc3kgKi9cclxuICAgICAgICAgICAgbGV0IHNwbGl0RGlnaXRzSW5mbyA9IGRpZ2l0c0luZm8gPyBkaWdpdHNJbmZvLnNwbGl0KFwiLVwiKSA6IFtdO1xyXG5cclxuICAgICAgICAgICAgLyogRXh0cmFjdCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBmcm9tIHRoZSBzcGxpdERpZ2l0c0luZm8gKi9cclxuICAgICAgICAgICAgbGV0IGRpZ2l0cyA9IHNwbGl0RGlnaXRzSW5mby5sZW5ndGggPiAxID8gcGFyc2VJbnQoc3BsaXREaWdpdHNJbmZvW3NwbGl0RGlnaXRzSW5mby5sZW5ndGggLSAxXSkgOiAwO1xyXG5cclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlcmUgYXJlIHR3byBwYXJ0cyBhZnRlciBzcGxpdHRpbmcgdGhlIHRyYW5zZm9ybWVkIHZhbHVlLCBkaWdpdHNJbmZvIGlzIG5vdCBlbXB0eSwgZGlnaXRzIGlzIG5vdCAwLCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0IGlzIG5vdCBlcXVhbCB0byBkaWdpdHMgKi9cclxuICAgICAgICAgICAgaWYgKChzcGxpdFRyYW5zZm9ybWVkPy5sZW5ndGggPz8gMCkgPiAxICYmIHNwbGl0RGlnaXRzSW5mby5sZW5ndGggPiAwICYmIGRpZ2l0cyAhPT0gMCAmJiBzcGxpdFRyYW5zZm9ybWVkIVsxXS5sZW5ndGggIT09IGRpZ2l0cykge1xyXG4gICAgICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGxlbmd0aCAqL1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpZmYgPSBkaWdpdHMgLSBzcGxpdFRyYW5zZm9ybWVkIVsxXS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwZW5kIHRyYWlsaW5nIHplcm9zIHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSAqL1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFZhbHVlICs9IFwiMFwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGRlY2ltYWwgYW5kIGdyb3VwIHN5bWJvbHMgaW4gdGhlIFJlYWN0aXZlRm9ybUNvbmZpZy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRTeW1ib2xJbkNvbmZpZygpIHtcclxuICAgICAgICBSZWFjdGl2ZUZvcm1Db25maWcubnVtYmVyID0geyBkZWNpbWFsU3ltYm9sOiB0aGlzLmRlY2ltYWxTZXBlcmF0b3IsIGdyb3VwU3ltYm9sOiB0aGlzLmdyb3VwU2VwZXJhdG9yIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCaW5kcyBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZyb20gUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBiaW5kQ29uZmlnKCkge1xyXG4gICAgICAgIC8qIENoZWNrIGlmIFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChSZWFjdGl2ZUZvcm1Db25maWcuanNvbikge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiBsb2NhbGVJZCBpcyBkZWZpbmVkIGluIFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uICovXHJcbiAgICAgICAgICAgIGlmIChSZWFjdGl2ZUZvcm1Db25maWcuanNvbi5sb2NhbGVJZCkge1xyXG4gICAgICAgICAgICAgICAgLyogQXNzaWduIHRoZSBsb2NhbGVJZCBmcm9tIFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uICovXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZUlkID0gUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24ubG9jYWxlSWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrIGlmIGFsbG93RGVjaW1hbFN5bWJvbCBpcyBkZWZpbmVkIGluIFJlYWN0aXZlRm9ybUNvbmZpZy5qc29uICovXHJcbiAgICAgICAgICAgIGlmIChSZWFjdGl2ZUZvcm1Db25maWcuanNvbi5hbGxvd0RlY2ltYWxTeW1ib2wpIHtcclxuICAgICAgICAgICAgICAgIC8qIEFzc2lnbiB0aGUgYWxsb3dEZWNpbWFsU3ltYm9sIGZyb20gUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24gKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dEZWNpbWFsU3ltYm9sID0gUmVhY3RpdmVGb3JtQ29uZmlnLmpzb24uYWxsb3dEZWNpbWFsU3ltYm9sO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBTZXQgaXNTZXRDb25maWcgdG8gdHJ1ZSBhZnRlciBjb25maWd1cmluZyAqL1xyXG4gICAgICAgIHRoaXMuaXNTZXRDb25maWcgPSB0cnVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|